52
53
54
56 USE elbufdef_mod
58 USE multimat_param_mod , ONLY : m51_n0phas, m51_nvphas
59 USE matparam_def_mod, ONLY : matparam_struct_
60 use element_mod , only : nixs
61
62
63
64#include "implicit_f.inc"
65
66
67
68#include "mvsiz_p.inc"
69
70
71
72#include "com01_c.inc"
73#include "com04_c.inc"
74#include "vect01_c.inc"
75#include "param_c.inc"
76
77
78
79 INTEGER IPARG(NPARG,NGROUP), IXS(NIXS,NUMELS), IXQ(7,NUMELQ), NPF(*),
80 . NERCVOIS(*),NESDVOIS(*),LERCVOIS(*),LESDVOIS(*),
81 . IPM(NPROPMI,NUMMAT), LENCOM
82 my_real pm(npropm,nummat), flux(*), val2(*), t(*), fv(*), x(3,numnod
83 TYPE (), DIMENSION (NGROUP), TARGET :: ELBUF_TAB
84 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECT
85 TYPE(MATPARAM_STRUCT_),DIMENSION(NUMMAT),INTENT(IN) :: MATPARAM
86
87
88
89 INTEGER NG, I, J, NPH1, NPH2, NPH3, IADBUF
90 INTEGER MAT(MVSIZ)
91 my_real rk, re, r, yp0, xmu, ax, e, a, cmu, rpr, yplus, p, xmt
92 my_real,
DIMENSION(:) ,
POINTER :: ph1,ph2,ph3
93 TYPE(G_BUFEL_) ,POINTER :: GBUF
94 INTEGER :: NEL
95 INTEGER :: MID
97
98
99
100 DO ng=1,ngroup
101 IF(iparg(8,ng) == 1)cycle
102 IF (iparg(76, ng) == 1) cycle
103 gbuf => elbuf_tab(ng)%GBUF
105 2 mtn ,llt ,nft ,iad ,ity ,
106 3 npt ,jale ,ismstr ,jeul ,jtur ,
107 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
108 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
109 6 irep ,iint ,igtyp ,israt ,isrot ,
110 7 icsen ,isorth ,isorthg ,ifailure,jsms )
111 IF((ity /= 1).AND.(ity /= 2))cycle
112 IF (mtn == 1)cycle
113
114 lft=1
115 nel = iparg(2, ng)
116
117 IF(n2d == 0)THEN
118 DO i=1,nel
119 mat(i)=ixs(1,i+nft)
120 ENDDO
121 ELSE
122 DO i=1,nel
123 mat(i)=ixq(1,i+nft)
124 ENDDO
125 ENDIF
126
127
128
129 DO i=1,nel
130 j=i+nft
131 t(j) = gbuf%TEMP(i)
132 IF(t(j) <= pm(80,mat(i)))THEN
133 val2(j)=pm(75,mat(i))+pm(76,mat(i))*t
134 ELSE
135 val2(j)=pm(77,mat(i))+pm(78,mat(i)
136 ENDIF
137 ENDDO
138
139 IF (mtn == 17)THEN
140 DO i=1,nel
141 j=i+nft
142 rk = gbuf%RK(i)
143 re = gbuf%RE(i)
144 r = gbuf%RHO(i)
145 yp0=pm(51,mat(i))
146 xmu=r*pm(24,mat(i))
147 ax =pm(47,mat(i))
148 e =pm(48,mat(i))
149 a =pm(49,mat(i))
150 cmu=pm(81,mat(i))
151 rpr=pm(95,mat(i))
152 yplus =cmu*rk**2/
max(ax*re*xmu,em15)
153 IF(yplus < yp0)cycle
154 p = ninep24
155 val2(j)=val2(j) * rpr*ax*yplus / (a*log
156 enddo
157 ELSEIF (mtn == 18)THEN
158 CALL m18th( gbuf%TEMP,val2, mat, pm,
159 2 ipm, tf, npf, nel)
160 ELSEIF (mtn == 26)THEN
161 CALL m26th( mat, gbuf%RHO, gbuf%TEMP,val2,
162 2 pm, bufmat, gbuf%RE, nel,
163 3 nft)
164 ELSEIF (mtn == 51) THEN
165 nph1 = (m51_n0phas)*nel
166 nph2 = (m51_n0phas + m51_nvphas)*nel
167 nph3 = (m51_n0phas + m51_nvphas*2)*nel
168 iadbuf = ipm(7,mat(1))
169 ph1 =>elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)%VAR(nph1+1:nph1+1+nel)
170 ph2 =>elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)%VAR(nph2+1:nph2+1+nel)
171 ph3 =>elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)%VAR(nph3+1:nph3+1+nel)
172 CALL m51th( t(1+nft), ph1, ph2, ph3,
173 2 bufmat(iadbuf),val2(1+nft), nel)
174 ELSEIF (jtur /= 0.AND.mtn /= 11) THEN
175 DO i=1,nel
176 j=i+nft
177 rk = gbuf%RK(i)
178 re = gbuf%RE(i)
179 r = gbuf%RHO(i)
180 xmt= pm(81,mat(i))*rk*rk /
max(em15,re)
181 xmu= r*pm(24,mat(i))
182 rpr= pm(95,mat(i))
183 val2(j)=val2(j)*(one+rpr*xmt/xmu)
184 ENDDO
185 ENDIF
186 enddo
187
188
189
190 IF (nspmd > 1)THEN
191 CALL spmd_evois(t, val2, nercvois, nesdvois, lercvois, lesdvois
192 ENDIF
193
194
195
196 DO ng=1,ngroup
197 IF (iparg(76, ng) == 1) cycle
198 mtn=iparg(1,ng)
199 IF (mtn /= 11) cycle
200 jthe=iparg(13,ng)
201 IF (jthe /= 1) cycle
202 lft=1
203 llt=iparg(2,ng)
204 nel=iparg(2,ng)
205 nft=iparg(3,ng)
206 iad=iparg(4,ng)
207 lft=1
208 IF(n2d == 0)THEN
209 CALL afimp3(pm,x,ixs,t,flux(6*nft+1),val2,ale_connect,fv)
210 ELSE
211 CALL afimp2(pm,x,ixq,t,flux(4*nft+1),val2,ale_connect,fv)
212 ENDIF
213 ENDDO
214
215
216
217
218 DO ng=1,ngroup
219 IF (iparg(76, ng) == 1) cycle
220 gbuf => elbuf_tab(ng)%GBUF
222 2 mtn ,llt ,nft ,iad ,ity ,
223 3 npt ,jale ,ismstr
224 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
225 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
226 6 irep ,iint ,igtyp ,israt ,isrot ,
227 7 icsen ,isorth ,isorthg ,ifailure,jsms )
228 IF (iparg(8,ng) == 1)cycle
229 IF (jthe /= 1 .OR. ity == 51)cycle
230 lft=1
231 nel=iparg(2,ng)
232 mid=iparg(18,ng)
233 rhocp = pm(69,mid)
234 if(rhocp == zero)then
235 rhocp = pm(89,mid)*matparam(mid)%eos%cp
236 end if
237 IF (mtn == 51)THEN
238 DO i=1,nel
239 gbuf%TEMP(i) = zero
240 ENDDO
241 IF (n2d == 0) THEN
242 CALL adiff3(gbuf%TEMP,t,flux(6*nft+1),val2,ale_connect,gbuf%VOL,gbuf%TEMP,rhocp,nel)
243 ELSE
244 CALL adiff2(gbuf%TEMP,t,flux(4*nft+1),val2,ale_connect,gbuf%VOL,gbuf%TEMP,rhocp,nel)
245 ENDIF
246 ELSE
247 IF (n2d == 0) THEN
248 CALL adiff3(gbuf%EINT,t,flux(6*nft+1),val2,ale_connect,gbuf%VOL,gbuf%TEMP,rhocp,nel)
249 ELSE
250 CALL adiff2(gbuf%EINT,t,flux(4*nft+1),val2,ale_connect,gbuf%VOL,gbuf%TEMP,rhocp,nel)
251 ENDIF
252 ENDIF
253 enddo
254
255 RETURN
subroutine adiff2(phin, phi, grad, alpha, ale_connect, vol, temp, rhocp, nel)
subroutine adiff3(phin, phi, grad, alpha, ale_connect, vol, temp, rhocp, nel)
subroutine afimp2(pm, x, ixq, t, grad, coef, ale_connect, fv)
subroutine afimp3(pm, x, ixs, t, grad, coef, ale_connect, fv)
subroutine m51th(t, av1, av2, av3, uparam, xk, nel)
subroutine m18th(t, xk, mat, pm, ipm, tf, npf, nel)
subroutine m26th(mat, rho, t, xk, pm, sesame, z, nel, nft)
subroutine initbuf(iparg, ng, mtn, llt, nft, iad, ity, npt, jale, ismstr, jeul, jtur, jthe, jlag, jmult, jhbe, jivf, mid, jpor, jcvt, jclose, jpla, irep, iint, igtyp, israt, isrot, icsen, isorth, isorthg, ifailure, jsms)
subroutine spmd_evois(t, val2, nercvois, nesdvois, lercvois, lesdvois, lencom)