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