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