Bonjour,
Serait il possible de remplacer la ligne (document ci-joint) : TAUCRIT = XMU*PRESS
par
TAUCRIT = XMU*constante*Z
où constante : constante quelconque, et, Z est la géométrie selon l'axe (oz). Z varie sur la longueur de la géométrie.
Cordialement,
Jamal FAJOUI
SUBROUTINE FRIC(LM,TAU,DDTDDG,DDTDDP,DSLIP,SED,SFD,
1 DDTDDT,PNEWDT,STATEV,DGAM,TAULM,PRESS,DPRESS,DDPDDH,
2 SLIP,KSTEP,KINC,TIME,DTIME,NOEL,CINAME,SLNAME,
3 MSNAME,NPT,NODE,NPATCH,COORDS,RCOORD,DROT,TEMP,
4 PREDEF,NFDIR,MCRD,NPRED,NSTATV,CHRLNGTH,PROPS,NPROPS)
C
INCLUDE 'ABA_PARAM.INC'
C
CHARACTER*80 CINAME,SLNAME,MSNAME
DIMENSION TAU(NFDIR),DDTDDG(NFDIR,NFDIR),DDTDDP(NFDIR),
1 DSLIP(NFDIR),DDTDDT(NFDIR,2),STATEV(*),
2 DGAM(NFDIR),TAULM(NFDIR),SLIP(NFDIR),
3 COORDS(MCRD),RCOORD(MCRD),DROT(2,2),TEMP(2),
4 PREDEF(2,*),TIME(2),PROPS(NPROPS)
C
DIMENSION GAMMA(2)
C
PARAMETER(ZERO=0.0D0,ASMALL=1.0D-27,PRECIS=1.D-14,XKS=1.D6)
C
C IMPLEMENTATION OF 3-D COULOMB FRICTION USING PENALTY METHOD
C
C VARIABLES USED:
C XMU = COEFFICIENT OF FRICTION
C GCRIT = CRITICAL ELASTIC SLIP
C STIFF = ARTIFICIAL STIFFNESS
C GAMMA(1:2) = TOTAL SLIP
C STATEV(1:2) = ELASTIC SLIP
C TAUCRIT = CRITICAL FRICTIONAL STRESS
C
C
XMU = PROPS(1)
IF (LM .EQ. 2) THEN
C
C GAP IS OPENED AT START
C OF THE CURRENT INCREMENT
C
IF (XMU .LE. PRECIS) RETURN
END IF
LM = 0
GCRIT = 0.005*CHRLNGTH
C
C CHECK IF PRESSURE IS NON-POSITIVE
C
IF (PRESS .LE. ZERO) THEN
STATEV(1) = ZERO
STATEV(2) = ZERO
GAMMA(1) = DGAM(1)
GAMMA(2) = DGAM(2)
IF (XMU .LE. PRECIS) THEN
DDTDDG(1,1) = ZERO
DDTDDG(1,2) = ZERO
DDTDDG(2,1) = ZERO
DDTDDG(2,2) = ZERO
DDTDDP(1) = XMU*GAMMA(1)/GCRIT
DDTDDP(2) = XMU*GAMMA(2)/GCRIT
ELSE
DDTDDG(1,1) = XKS
DDTDDG(1,2) = ZERO
DDTDDG(2,1) = ZERO
DDTDDG(2,2) = XKS
DDTDDP(1) = ZERO
DDTDDP(2) = ZERO
END IF
TAU(1) = ZERO
TAU(2) = ZERO
DSLIP(1) = ZERO
DSLIP(2) = ZERO
RETURN
ELSE
C
C COMPUTE FOR CRITICAL STRESS
C AND ARTIFICIAL STIFFNESS
C
TAUCRIT = XMU*PRESS
STIFF = TAUCRIT/GCRIT
ENDIF
C
C COMPUTE FOR THE TOTAL SLIP,
C FRICTIONAL SHEAR STRESS,
C AND THE EQUIVALENT SHEAR STRESS
C
GAMMA(1) = STATEV(1) + DGAM(1)
GAMMA(2) = STATEV(2) + DGAM(2)
TAU(1) = STIFF*GAMMA(1)
TAU(2) = STIFF*GAMMA(2)
TAUEQV = SQRT(TAU(1)**2 + TAU(2)**2)
C
C CHECK IF THE FRICTIONAL STRESS
C EXCEEDS THE CRITICAL STRESS
C
IF (TAUEQV .LT. TAUCRIT) THEN
C
C BEHAVIOR REMAINS ELASTIC
C
STATEV(1) = GAMMA(1)
STATEV(2) = GAMMA(2)
DDTDDG(1,1) = STIFF
DDTDDG(1,2) = ZERO
DDTDDG(2,1) = ZERO
DDTDDG(2,2) = STIFF
DDTDDP(1) = XMU*GAMMA(1)/GCRIT
DDTDDP(2) = XMU*GAMMA(2)/GCRIT
DSLIP(1) = ZERO
DSLIP(2) = ZERO
ELSE
C
C BEHAVIOR IS PLASTIC
C
GAMEQV = SQRT(GAMMA(1)**2 + GAMMA(2)**2)
TAU(1) = GAMMA(1)*TAUCRIT/GAMEQV
TAU(2) = GAMMA(2)*TAUCRIT/GAMEQV
DDTDDG(1,1) = TAUCRIT/GAMEQV*(1-(GAMMA(1)/GAMEQV)**2)
DDTDDG(1,2) = -TAUCRIT/GAMEQV*(GAMMA(1)/GAMEQV)*
& (GAMMA(2)/GAMEQV)
DDTDDG(2,1) = DDTDDG(1,2)
DDTDDG(2,2) = TAUCRIT/GAMEQV*(1-(GAMMA(2)/GAMEQV)**2)
DDTDDP(1) = XMU*GAMMA(1)/GAMEQV
DDTDDP(2) = XMU*GAMMA(2)/GAMEQV
C
C COMPUTATION OF THE ELASTIC
C AND PLASTIC SLIP
C
STATEV(1) = GAMMA(1)*GCRIT/GAMEQV
STATEV(2) = GAMMA(2)*GCRIT/GAMEQV
DGSLEQ = GAMEQV - GCRIT
DSLIP(1) = GAMMA(1)*DGSLEQ/GAMEQV
DSLIP(2) = GAMMA(2)*DGSLEQ/GAMEQV
ENDIF
RETURN
END