44
45
46
48 USE elbufdef_mod
50 USE matparam_def_mod, ONLY : matparam_struct_
51
52
53
54#include "implicit_f.inc"
55
56
57
58#include "com01_c.inc"
59#include "com04_c.inc"
60#include "vect01_c.inc"
61#include "param_c.inc"
62#include "task_c.inc"
63
64
65
66 INTEGER IPARG(NPARG,NGROUP), IXS(NIXS,NUMELS), IXQ(7,NUMELQ),
67 . NERCVOIS(*),NESDVOIS(*),LERCVOIS(*),LESDVOIS(*),
68 . LENCOM
69 my_real flux(*), val2(*), xk(*), pm(npropm,nummat)
70 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP), TARGET :: ELBUF_TAB
71 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECT
72 TYPE(MATPARAM_STRUCT_),DIMENSION(NUMMAT),INTENT(IN) :: MATPARAM
73
74
75
76 INTEGER NG, I, J, MT, ITASK, NEL, MID
78 TYPE(G_BUFEL_) ,POINTER :: GBUF
79
80
81
82 DO ng=itask+1,ngroup,nthread
83
84 IF (iparg(76, ng) == 1) cycle
85 gbuf => elbuf_tab(ng)%GBUF
86
88 2 mtn ,llt ,nft ,iad ,ity ,
89 3 npt ,jale ,ismstr ,jeul ,jtur ,
90 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
91 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
92 6 irep ,iint ,igtyp ,israt ,isrot ,
93 7 icsen ,isorth ,isorthg ,ifailure,jsms )
94 IF(jale+jeul == 0) cycle
95 IF(iparg(8,ng) == 1) cycle
96 lft=1
97 IF(jtur == 1)THEN
98 IF(n2d == 0)THEN
99 DO i=lft,llt
100 j=i+nft
101 mt=ixs(1,j)
102 rk=gbuf%RK(i)
103 re=gbuf%RE(i)
104 r =gbuf%RHO(i)
105 xk(j)=rk/r
106 xmt=pm(81,mt)*rk*rk /
max(em15,re)
107 val2(j)=xmt/pm(85,mt)
108 enddo
109 ELSE
110 DO i=lft,llt
111 j=i+nft
112 mt=ixq(1,j)
113 rk=gbuf%RK(i)
114 re=gbuf%RE(i)
115 r =gbuf%RHO(i)
116 xk(j)=rk/r
117 xmt=pm(81,mt)*rk*rk /
max(em15,re)
118 val2(j)=xmt/pm(85,mt)
119 enddo
120 ENDIF
121 ELSE
122 DO i=lft,llt
123 j=i+nft
124 xk(j)=zero
125 enddo
126 ENDIF
127 IF(jpor == 2)THEN
128
129 DO i=lft,llt
130 j=i+nft
131 val2(j)=zero
132 enddo
133 ENDIF
134 ENDDO
135
137
138
139
140
141 IF (nspmd > 1) THEN
142
143 CALL spmd_evois(xk,val2,nercvois,nesdvois,lercvois,lesdvois,lencom)
144
145
146 END IF
147
148 DO ng=itask+1,ngroup,nthread
149
150 IF (iparg(76, ng) == 1) cycle
151 gbuf => elbuf_tab(ng)%GBUF
152
154 2 mtn ,llt ,nft ,iad ,ity ,
155 3 npt ,jale ,ismstr ,jeul ,jtur ,
156 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
157 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
158 6 irep ,iint ,igtyp ,israt ,isrot ,
159 7 icsen ,isorth ,isorthg ,ifailure,jsms )
160 IF (jale+jeul == 0) cycle
161 IF (jtur /= 1) cycle
162 IF (mtn == 11) cycle
163 IF (mtn == 17) cycle
164 IF (iparg(8,ng) == 1) cycle
165 lft=1
166 nel=iparg(2,ng)
167 mid=iparg(18,ng)
168 rhocp = pm(69,mid)
169 if(rhocp == zero)then
170 rhocp = pm(89,mid)*matparam(mid)%eos%cp
171 end if
172 IF(n2d == 0)THEN
173 CALL adiff3(gbuf%RK,xk,flux(6*nft+1),val2,ale_connect,gbuf%VOL,gbuf%TEMP,rhocp,nel)
174 ELSE
175 CALL adiff2(gbuf%RK,xk,flux(4*nft+1),val2,ale_connect,gbuf%VOL,gbuf%TEMP,rhocp,nel)
176 ENDIF
177 ENDDO
178
180
181 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 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)