33 1 SFEM_NODVAR, NC1, NC2, NC3,
34 2 NC4, MAT, OFFG, RHO,
35 3 RHO0, FXX, FXY, FXZ,
37 5 FZY, FZZ, VOL0, VOLN,
38 6 VOL0DP, VOLDP, AMU0, DXX,
39 7 DYY, DZZ, MATPARAM, NEL,
40 8 ISMSTR, S_SFEM_NODVAR)
48#include "implicit_f.inc"
58 INTEGER,
INTENT(IN) :: ISMSTR
59 INTEGER NC1(*),NC2(*),NC3(*),NC4(*),MAT(*),NEL
60 INTEGER,
INTENT(IN) :: S_SFEM_NODVAR
61 my_real :: OFFG(*),VOL0(*),AMU0(*),
62 . (*),DYY(*),DZZ(*),VOLN(*),
63 . FXX(*), FXY(*), FXZ(*),
64 . (*), FYY(*), FYZ(*),
65 . FZX(*), FZY(*), FZZ(*),
67 my_real,
INTENT(INOUT) :: sfem_nodvar(s_sfem_nodvar)
68 TYPE(matparam_struct_),
DIMENSION(NUMMAT) :: MATPARAM
78 my_real AMU(MVSIZ), SUM,DTR,DTREP_R,DIVDE(MVSIZ),JAC_M(MVSIZ),JAC(MVSIZ),FAC,BASE,JFAC,DVDP
79 DOUBLE PRECISION VOL0DP(*),VOLDP(*),SUMDP
84 IF(ismstr == 1 .OR. ismstr == 11)
THEN
87 IF(offg(i) == zero) cycle
88 amu0(i) = rho(i)/rho0-one
92 IF(offg(i) == zero) cycle
93 sum=sfem_nodvar(nc1(i))+sfem_nodvar(nc2(i))+sfem_nodvar(nc3(i))+sfem_nodvar(nc4(i))
94 amu(i) = four/sum -one
95 divde(i) = amu0(i)-amu(i)
97 dtrep_r = third*(dtr-dxx(i)-dyy(i)-dzz(i))
98 dxx(i) = dxx(i) + dtrep_r
99 dyy(i) = dyy(i) + dtrep_r
100 dzz(i) = dzz(i) + dtrep_r
101 amu0(i)= rho(i)/rho0-one-divde(i)
108 IF(offg(i) == zero .OR. abs(offg(i)) > one) cycle
109 sumdp=sfem_nodvar(nc1(i))+sfem_nodvar(nc2(i))+sfem_nodvar(nc3(i))+sfem_nodvar(nc4(i))
110 voldp(i) = fourth*sumdp*vol0dp(i)
115 IF(offg(i) == zero .OR. abs(offg(i)) > one) cycle
116 sum=sfem_nodvar(nc1(i))+sfem_nodvar(nc2(i))+sfem_nodvar(nc3(i))+sfem_nodvar(nc4(i))
117 voln(i)=fourth*sum*vol0(i)
120 IF (matparam(mx)%STRAIN_FORMULATION == 1)
THEN
123 amu(1:nel) = vol0dp(1:nel)/voldp(1:nel) - one
125 amu(1:nel) = vol0(1:nel)/voln(1:nel) - one
128 amu0(1:nel) = amu(1:nel)
131 IF(offg(i)==zero.OR.abs(offg(i))>one) cycle
132 dtr = (dxx(i) + dyy(i) + dzz(i))*dt1
133 dtrep_r = third*((amu(i)-amu0(i))+dtr)/dt1
134 dxx(i) = dxx(i) - dtrep_r
135 dyy(i) = dyy(i) - dtrep_r
136 dzz(i) = dzz(i) - dtrep_r
143 IF(offg(i)==zero) cycle
144 jac_m(i)=voln(i)/vol0(i)
147 IF((ismstr == 2.OR.ismstr == 12).AND.idtmin(1) == 3)
THEN
150 IF(offg(i)==zero) cycle
151 amu0(i) = rho(i)/rho0-one
155 IF(offg(i) == zero .OR. abs(offg(i)) <= one) cycle
156 sum=sfem_nodvar(nc1(i))+sfem_nodvar(nc2(i))+sfem_nodvar(nc3(i))+sfem_nodvar(nc4(i))
157 amu(i) = four/sum -one
158 divde(i) = amu0(i)-amu(i)
161 dxx(i) = dxx(i) + dtrep_r
162 dyy(i) = dyy(i) + dtrep_r
163 dzz(i) = dzz(i) + dtrep_r
164 dvdp = divde(i)*(vol0(i)/voln(i))
165 amu0(i)= rho(i)/rho0-one-dvdp
168 IF(iresp == 1 .AND. ismstr == 12)
THEN
170 IF(offg(i) == zero .OR. abs(offg(i)) <= one) cycle
171 dvdp = divde(i)*(vol0(i)/voln(i))
172 amu0(i) = vol0dp(i)/voldp(i)-one-dvdp
179 IF (ismstr == 11)
THEN
182 dtrep_r = -third*(amu0(i)+fxx(i)+fyy(i)+fzz(i))
183 fxx(i) = fxx(i) + dtrep_r
184 fyy(i) = fyy(i) + dtrep_r
185 fzz(i) = fzz(i) + dtrep_r
187 ELSEIF(ismstr >= 10)
THEN
189 IF(abs(offg(i))<=one) cycle
190 dtrep_r = -third*(amu0(i)+fxx(i)+fyy(i)+fzz(i))
191 fxx(i) = fxx(i) + dtrep_r
192 fyy(i) = fyy(i) + dtrep_r
193 fzz(i) = fzz(i) + dtrep_r
196 1 jac, fxx, fxy, fxz,
197 2 fyx, fyy, fyz, fzx,
202 IF(abs(offg(i)) > one) cycle
203 base = jac_m(i)/
max(em20,jac(i))
204 jfac =exp(fac*log(
max(em20,base)))
205 fxx(i) = jfac*fxx(i)+jfac-one
206 fyy(i) = jfac*fyy(i)+jfac-one
207 fzz(i) = jfac*fzz(i)+jfac-one
subroutine s4voln_m(sfem_nodvar, nc1, nc2, nc3, nc4, mat, offg, rho, rho0, fxx, fxy, fxz, fyx, fyy, fyz, fzx, fzy, fzz, vol0, voln, vol0dp, voldp, amu0, dxx, dyy, dzz, matparam, nel, ismstr, s_sfem_nodvar)