(Fortran)
SUBROUTINE USRRUB( eps0, deps, ns, c, iinvar, jinvar,
stretc, didc, djdc, age0, dtime, temp0,
dtemp, elemen, intpt, coord, iter,
rubval, nrv, comval, ncv, usrsta, nus,
usrind, nui, sig, wp, stiff, dwpdj,
press, compre, usrkey, d2di1,
d2di2, d2di3, d2dj1, d2dj2, d2dj3 )
At the start of the first step the values of usrsta and usrind come in as the ones specified in input table 'MATERI', respectively via USRSTA usrsta and USRIND usrind. In subsequent steps these values come in from the final iteration of the previous step. They must always go out for the current iteration.
| W = Wd + Wh | (11.1) |
| Wd = K1(J1 - 1) | (11.2) |
= 2K1 |
(11.3) |
Dd = 4 = 4K1![]() |
(11.4) |
| Wh = |
(11.5) |
= 2 |
(11.6) |
Dh = 4 = 4p![]() |
(11.7) |
pt = = |
(11.8) |
| wp = (J - 1) | (11.9) |
= 1 |
(11.10) |
(file.f)
SUBROUTINE USRRUB( EPS0, DEPS, NS, C, IINVAR, JINVAR, STRETC,
$ DIDC, DJDC, AGE0, DTIME, TEMP0, DTEMP, ELEMEN,
$ INTPT, COORD, ITER, RUBVAL, NRV, COMVAL, NCV,
$ USRSTA, NUS, USRIND, NUI, SIG, STIFF, WP,
$ DWPDJ, PRESS, COMPRE, MODNAM, DER2I1,
$ DER2I2, DER2I3, DER2J1, DER2J2, DER2J3 )
C
INTEGER NS, ELEMEN, INTPT, ITER, NRV, NCV, NUS, NUI,
$ USRIND(*)
DOUBLE PRECISION EPS0(*), DEPS(*), C(*), IINVAR(*),
$ JINVAR(*), STRETC(*), DIDC(NS,*), DJDC(NS,*),
$ AGE0, DTIME, TEMP0, DTEMP, COORD(*), USRSTA(*),
$ STIFF(NS,*), SIG(*), WP, DWPDJ, RUBVAL(*),
$ COMVAL(*), PRESS, DER2I1(NS,*),
$ DER2I2(NS,*), DER2I3(NS,*), DER2J1(NS,*),
$ DER2J2(NS,*), DER2J3(NS,*)
CHARACTER MODNAM*6
LOGICAL COMPRE
C
C... USER VARIABLES
DOUBLE PRECISION K1, R1, R3, CONS
INTEGER NS2
C
C... NEO-HOOKEAN MODEL 2D & 3D
C... USER SUPPLIED SUBROUTINE FOR RUBBER
C... RETURN UPDATED STRESS AND TANGENTIAL STIFFNESS
C
COMPRE = .TRUE.
C
NS2 = NS*NS
C
K1 = RUBVAL(1)
R1 = 4.D0 * K1
R3 = 4.D0 * PRESS
C
C... CALCULATE DEVIATORIC PART OF UPDATED STRESSES
CONS = 2.D0 * K1
CALL UVS( DJDC(1,1), NS, CONS, SIG )
C
C... CALCULATE HYDROSTATIC PART OF UPDATED STRESSES
CONS = 2.D0
CONS = CONS * PRESS
CALL UVPWS( SIG, DJDC(1,3), NS, CONS, SIG )
C
C... CALCULATE DEVIATORIC PART OF TANGENT STIFFNESS FOR
C... STRESS INCREMENT
CALL UVS( DER2J1, NS2, R1, STIFF )
C
C... CALCULATE HYDROSTATIC PART OF TANGENT STIFFNESS FOR
C... STRESS INCREMENT
CALL UVPWS( STIFF, DER2J3, NS2, R3, STIFF )
C
C... CALCULATE PRESSURE FUNCTION FOR PRESSURE
WP = JINVAR(3) - 1
C
C... CALCULATE DERIVATIVE OF PRESSURE FUNCTION FOR
C... PRESSURE INCREMENT
DWPDJ = 1.D0
C
CALL FILMA( 1, STIFF, NS )
C
END
(file.dat)
CHX64 / TENSION TEST / WD: NEO-HOOKEAN WH: LINEAR WC: -
USED UNITS: N, MM
'COORDINATES'
1 0.0 0.0 0.0
2 50.0 0.0 0.0
3 100.0 0.0 0.0
4 100.0 50.0 0.0
5 100.0 100.0 0.0
6 50.0 100.0 0.0
7 0.0 100.0 0.0
8 0.0 50.0 0.0
9 0.0 0.0 50.0
10 100.0 0.0 50.0
11 100.0 100.0 50.0
12 0.0 100.0 50.0
13 0.0 0.0 100.0
14 50.0 0.0 100.0
15 100.0 0.0 100.0
16 100.0 50.0 100.0
17 100.0 100.0 100.0
18 50.0 100.0 100.0
19 0.0 100.0 100.0
20 0.0 50.0 100.0
'ELEMENTS'
CONNEC
1 CHX64 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
MATERIALS
/ 1 / 1
DATA
/ 1 / 1
'DATA'
1 NINTEG 3 3 3
NUMINT GAUSS GAUSS GAUSS
'MATERIALS'
1 RUBBER USER
: K1
RUBVAL 0.10
COMPRE USER
BULK 1000.
'DIRECTIONS'
1 1. 0. 0.
2 0. 1. 0.
3 0. 0. 1.
'SUPPORTS'
/ 1 7 13 19 / TR 1
/ 1 3 13 15 / TR 2
/ 1-8 / TR 3
/ 13-20 / TR 3
'LOADS'
CASE 1
DEFORM
/ 13-20 / TR 3 / 0.1(8) /
'END'