40
41
42
43 USE elbufdef_mod
46 USE multimat_param_mod , ONLY : m51_n0phas, m51_nvphas
47
48
49
50#include "implicit_f.inc"
51
52
53
54#include "com01_c.inc"
55#include "com04_c.inc"
56#include "param_c.inc"
57
58
59
60 INTEGER IPM(NPROPMI,NUMMAT),MAT(NEL), IPARG(NPARG),IFORM,NIX,IX(NIX,*)
61 my_real pm(npropm,nummat),uvar(nel,nuvar),uparam(*), x(3,numnod), bufmat(*), rho0
62 INTEGER,INTENT(IN) :: NEL
63 my_real,
INTENT(INOUT) :: sig(nel,6)
64 TYPE(G_BUFEL_), INTENT(INOUT),TARGET :: GBUF
65 TYPE(DETONATORS_STRUCT_) :: DETONATORS
66 TYPE(t_ale_connectivity), INTENT(INOUT) :: ALE_CONNECTIVITY
67
68
69
70 INTEGER I,NUVAR, ISFLUID
71 INTEGER NPH,IFLG,NV46
72 INTEGER IMAT
73 INTEGER KK,NUMEL
75 my_real vold,t0_(4),c0_(4),c1_(4),c2_(4),c3_(4),c4_(4),c5_(4),e0_(4),rho0_(4),vf(4),p0(4),pext,pres_0
76 my_real,
intent(inout) :: tb(nel)
77 LOGICAL IS_IFORM12
78
79
80 iflg = nint(uparam(
81 iform = nint(uparam(31))
82
83
84 is_iform12 = .false.
85 IF(iform == 12)THEN
86 uparam(31) = 1
87 uparam(55) = 1
88 iform = 1
89 iflg = 1
90 is_iform12 = .true.
91 ENDIF
92
93
94
95
96 gg1 = uparam(101)
97 gg2 = uparam(151)
98 gg3 = uparam(201)
99 isfluid = 0
100 IF (gg1 == zero .AND. gg2 == zero .AND. gg3 == zero) isfluid=1
101 IF (isfluid==1) THEN
102 iparg(15) = 1
103 iparg(16) = 1
104 iparg(63) = 1
105 iparg(64) = 0
106 ENDIF
107
108
109
110
111 IF(iform == 2 .OR. iform == 3 .OR. iform == 4 .OR. iform==5 .OR. iform == 6) THEN
112 iparg(15) = 0
113 iparg(16) = 0
114 iparg(63) = 1
115 iparg(64) = 1
116 ENDIF
117
118
119
120 !---------------------------------
121 IF(iflg == 1 .AND. iparg(64) == 0)THEN
122 nph = 1
123 IF(n2d==0)THEN
124 CALL m5in3 (pm,mat,0,detonators,tb,iparg,x,ix,nix)
125 ELSE
126 CALL m5in2 (pm,mat,0,detonators,tb,x,ix,nix)
127 ENDIF
128 ENDIF
129
130
131
132
133 c0_(1:4) = (/uparam(35:37),uparam(49)/)
134 c1_(1:4) = (/uparam(12:14),uparam(50)/)
135 c2_(1:4) = (/uparam(15:17),zero/)
136 c3_(1:4) = (/uparam(18),uparam(20:21),zero/)
137 c4_(1:4) = (/uparam(22:24),zero/)
138 c5_(1:4) = (/uparam(25:27),zero/)
139 e0_(1:4) = (/uparam(32:34),uparam(48)/)
140 t0_(1:4) = (/uparam(113),uparam(163),uparam(213),uparam(263)/)
141 rho0_(1:4)= (/uparam(09:11),uparam(47)/)
142 vf(1:4) = (/uparam(04:06),uparam(46)/)
143 pext = uparam(8)
144 p0(1) = c0_(1)+c4_(1)*e0_(1)
145 p0(2) = c0_(2)+c4_(2)*e0_(2)
146 p0(3) = c0_(3)+c4_(3)*e0_(3)
147 p0(4) = c0_(4)
148
149
150
151
152
153
154 DO imat=1,4
155 DO i=1,nel
156 vold = gbuf%VOL(i)*vf(imat)
157 kk = m51_n0phas + (imat-1)*m51_nvphas
158 uvar(i,1+kk) = vf(imat)
159 uvar(i,2+kk) = zero
160 uvar(i,3+kk) = zero
161 uvar(i,4+kk) = zero
162 uvar(i,5+kk) = zero
163 uvar(i,6+kk) = zero
164 uvar(i,7+kk) = zero
165 uvar(i,8+kk) = e0_(imat)
166 uvar(i,9+kk) = rho0_(imat)
167 uvar(i,10+kk) = zero
168 uvar(i,11+kk) = vold
169 uvar(i,12+kk) = rho0_(imat)
170 uvar(i,15+kk) = zero
171 uvar(i,16+kk) = t0_(imat)
172 uvar(i,17+kk) = zero
173 uvar(i,18+kk) = c0_(imat)+c4_(imat)*e0_(imat)
174 uvar(i,19+kk) = zero
175 uvar(i,20+kk) = rho0_(imat)
176 uvar(i,21+kk) = e0_(imat)
177 uvar(i,22+kk
178 uvar(i,23+kk) = vf(imat)
179 ENDDO
180 ENDDO
181
182 imat = 4
183 kk = m51_n0phas+(imat-1)*m51_nvphas
184 uvar(1:nel,15+kk) = uvar(1:nel,1)
185
186 DO i=1,nel
187 p0(1) = c0_(1)+c4_(1)*e0_(1)
188 p0(2) = c0_(2)+c4_(2)*e0_(2)
189 p0(3) = c0_(3)+c4_(3)*e0_(3)
190 p0(4) = c0_(4)
191 pres_0 = vf(1)*p0(1)+vf(2)*p0(2)+vf(3)*p0(3)+vf(4)*p0
192 uvar(i,4) = pres_0
193 pm(31,mat(i)) = pres_0
194 pm(104,mat(i)) = pres_0
195 sig(i,1) = -pres_0
196 sig(i,2) = -pres_0
197 sig(i,3) = -pres_0
198 ENDDO
199
200 IF(is_iform12)THEN
201 DO i=1,nel
202 gbuf%RHO(i) = vf(1)*rho0_(1)+vf(2)*rho0_(2)+vf(3)*rho0_(3)+vf(4)*rho0_(4)
203 ENDDO
204 ENDIF
205
206
207
208
209
210 IF(iform == 6) THEN
211 nv46 = 4
212 numel=numelq+numeltg
213 IF(n2d==0)THEN
214 nv46 = 6
215 numel=numels
216 ENDIF
218 . ipm , pm , x , nix , ix,
219 . ale_connectivity , bufmat, uparam, rho0 ,
220 . uvar , nuvar , nel , gbuf%RHO, numel
221 . )
222 ENDIF
223
224 RETURN
subroutine m5in2(pm, mat, m151_id, detonators, tb, x, ix, nix)
subroutine m5in3(pm, mat, m151_id, detonators, tb, iparg, x, ix, nix)
subroutine nrf51ini(ipm, pm, x, nix, ix, ale_connectivity, bufmat, uparam, rho0, uvar, nuvar, nel, rho, numel)