43
44
45
46 USE elbufdef_mod
50 USE matparam_def_mod, ONLY : matparam_struct_
51 use element_mod , only : nixq
52
53
54
55#include "implicit_f.inc"
56
57
58
59
60#include "mvsiz_p.inc"
61
62
63
64
65#include "param_c.inc"
66
67#include "vect01_c.inc"
68
69#include "scr17_c.inc"
70
71#include "scry_c.inc"
72
73#include "com04_c.inc"
74
75
76
77 INTEGER, INTENT(IN) :: NEL, NSIGS,IXQ(NIXQ, *), IPM(NPROPMI, NUMMAT),
78 . IGEO(*), IPART(LIPART1, *), IPARTQ(*), PTQUAD(*),
79 . NPF(*), ILOADP(SIZLOADP, *)
80 INTEGER, INTENT(INOUT) :: IPARG(*)
81 TYPE(ELBUF_STRUCT_), INTENT(IN), TARGET :: ELBUF_STR
82 my_real,
INTENT(IN) :: x(*), facload(lfacload, *)
83 my_real,
INTENT(INOUT) :: pm(npropm, nummat)
84 my_real,
INTENT(INOUT) :: geo(*), sigi(nsigs, *),
85 . skew(lskew, *), tf(*), bufmat(*)
86 LOGICAL :: ERROR_THROWN
87 TYPE(DETONATORS_STRUCT_) :: DETONATORS
88 TYPE(t_ale_connectivity), INTENT(INOUT) :: ALE_CONNECTIVITY
89 TYPE(MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(IN) :: MAT_PARAM
90
91
92
93 INTEGER :: , NLAY, II, IP, IBID,
94 INTEGER :: NGL(MVSIZ), MAT(), PID(MVSIZ)
95 INTEGER :: IX1(MVSIZ), IX2(), IX3(MVSIZ), IX4(MVSIZ)
96 my_real :: y1(mvsiz), y2(mvsiz), y3(mvsiz),y4(mvsiz),
97 . z1(mvsiz), z2(mvsiz), z3(mvsiz),z4(mvsiz),
98 . sy(mvsiz), sz(mvsiz), ty(mvsiz),tz(mvsiz),pres,vfrac
100 TYPE(L_BUFEL_) ,POINTER :: LBUF
101 TYPE(G_BUFEL_) ,POINTER :: GBUF
102 TYPE(BUF_MAT_) ,POINTER :: MBUF
103
104
105
106
107 gbuf => elbuf_str%GBUF
108
109 nlay = elbuf_str%NLAY
110
111 CALL qcoor2(x, ixq(1, nft + 1), ngl, mat, pid,
112 . ix1, ix2, ix3, ix4,
113 . y1, y2, y3, y4,
114 . z1, z2, z3, z4,
115 . sy, sz, ty, tz)
116
117 CALL qvoli2(gbuf%VOL, ixq(1, nft + 1), ngl, gbuf%AREA,
118 . y1, y2, y3, y4,
119 . z1, z2, z3, z4)
120
121 IF (jeul /= 0) THEN
123 . gbuf%AREA, gbuf%DELTAX,
124 . y1, y2, y3, y4,
125 . z1, z2, z3, z4)
126 ENDIF
127 tempel(:) = zero
128 pm(104,ixq(1, 1 + nft)) = zero
129
130
131 DO ilay = 1, nlay
132
133 lbuf => elbuf_str%BUFLY(ilay)%LBUF(1,1,1)
134 mbuf => elbuf_str%BUFLY(ilay)%MAT(1,1,1)
135 DO ii = 1, nel
136
137 mat(ii) = mat_param( ixq(1,ii+nft) )%MULTIMAT%MID(ilay)
138
139 lbuf%VOL(ii) =mat_param( ixq(1,ii+nft) )%MULTIMAT%VFRAC(ilay) * gbuf%VOL(ii)
140 ENDDO
141
142 ip = 1
143 ibid = 0
144 CALL matini(pm, ixq, nixq, x,
145 . geo, ale_connectivity, detonators, iparg,
146 . sigi, nel, skew, igeo,
147 . ipart,ipartq,
148 . mat, ipm, nsigs, numquad, ptquad,
149 . ip, ngl,npf, tf, bufmat,
150 . gbuf, lbuf, mbuf, elbuf_str, iloadp,
151 . facload, gbuf%DELTAX,tempel,mat_param )
152
153 vfrac = mat_param( ixq(1,1+nft) )%MULTIMAT%VFRAC(ilay)
154 pres = pm(104, mat_param( ixq(1,1+nft) )%MULTIMAT%MID(ilay) )
155 pm(104,ixq(1, 1 + nft)) = pm(104,ixq(1, 1 + nft)) + vfrac * pres
156
157 matlaw = ipm(2, mat(1))
158 IF (matlaw == 5) THEN
159
160 IF (.NOT. error_thrown) THEN
161 IF (pm(44, mat(1)) == zero) THEN
162 CALL ancmsg(msgid = 1623, msgtype = msgerror, anmode = aninfo,
163 . i1 = ipm(1, ixq(1, 1 + nft)), i2 = ipm(1, mat(1)))
164 ENDIF
165 error_thrown = .true.
166 ENDIF
167 CALL m5in2(pm, mat, ipm(1, ixq(1,1+nft)), detonators, lbuf%TB, x, ixq, nixq)
168 ENDIF
169 ENDDO
170
171 IF (nlay > 1) THEN
172
173
174 gbuf%RHO(1:nel)=zero
175 DO ilay = 1, nlay
176 lbuf => elbuf_str%BUFLY(ilay)%LBUF(1,1,1)
177 DO ii = lft, llt
178 gbuf%RHO(ii) = gbuf%RHO(ii) + lbuf%RHO(ii) * mat_param( ixq(1,ii+nft) )%MULTIMAT%VFRAC(ilay)
179 ENDDO
180 ENDDO
181
182
183 gbuf%TEMP(1:nel)=zero
184 DO ilay = 1, nlay
185 lbuf => elbuf_str%BUFLY(ilay)%LBUF(1,1,1)
186 DO ii = 1, nel
187 gbuf%TEMP(ii) = gbuf%TEMP(ii) + lbuf%TEMP(ii) * mat_param( ixq(1,ii+nft) )%MULTIMAT%VFRAC(ilay) *
188 . lbuf%RHO(ii)/gbuf%RHO(ii)
189 ENDDO
190 ENDDO
191
192 ENDIF
193
subroutine m5in2(pm, mat, m151_id, detonators, tb, x, ix, nix)
subroutine matini(pm, ix, nix, x, geo, ale_connectivity, detonators, iparg, sigi, nel, skew, igeo, ipart, ipartel, mat, ipm, nsig, nums, pt, ipt, ngl, npf, tf, bufmat, gbuf, lbuf, mbuf, elbuf_str, iloadp, facload, ddeltax, tempel, mat_param)
subroutine qvoli2(volu, ixq, ngl, aire, y1, y2, y3, y4, z1, z2, z3, z4)
subroutine qcoor2(x, ixq, ngl, mxt, pid, ix1, ix2, ix3, ix4, y1, y2, y3, y4, z1, z2, z3, z4, sy, sz, ty, tz)
subroutine qdlen2(iparg, aire, deltax, y1, y2, y3, y4, z1, z2, z3, z4)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)