51
52
53
55 USE elbufdef_mod
59 use element_mod , only : nixs
60
61
62
63#include "implicit_f.inc"
64
65
66
67#include "com01_c.inc"
68#include "com04_c.inc"
69#include "com08_c.inc"
70#include "vect01_c.inc"
71#include "param_c.inc"
72#include "task_c.inc"
73#include "inter22.inc"
74
75
76
78 INTEGER IPARG(NPARG,NGROUP), IXS(NIXS,NUMELS), IXQ(7,NUMELQ), IPM(NPROPMI,NUMMAT)
79 INTEGER ITASK,NV46
80 my_real flux(*), flu2(*), veul(*), fill(numnod,*),dfill(numnod,*), vol(*), alph(2,*)
81 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP), TARGET :: ELBUF_STR
82 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECT
83
84
85
86 INTEGER NG, I, NF1,ISOLNOD,NSG,NEL
88 TYPE(G_BUFEL_) ,POINTER :: GBUF
89 TYPE(L_BUFEL_) ,POINTER :: LBUF1,LBUF2
90
91
92
93 IF(itask == 0) THEN
94 IF (nmult /= 0) THEN
95 DO ng=1,ngroup
96
97 IF (iparg(76, ng) == 1) cycle
99 2 mtn ,llt ,nft ,iad ,ity ,
100 3 npt ,jale ,ismstr ,jeul ,jtur ,
101 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
102 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
103 6 irep ,iint ,igtyp ,israt ,isrot ,
104 7 icsen ,isorth ,isorthg ,ifailure,jsms )
105 IF (jmult == 0) cycle
106 gbuf => elbuf_str(ng)%GBUF
107 lbuf1 => elbuf_str(ng)%BUFLY(1)%LBUF(1,1,1)
108 lbuf2 => elbuf_str(ng)%BUFLY(2)%LBUF(1,1,1)
109 lft=1
110 IF (dt1 > zero)THEN
111 udt=one/dt1
112 ELSE
113 udt=zero
114 ENDIF
115 DO i=lft,llt
116 alph(1,i+nft)=lbuf1%FRAC(i)
117 alph(2,i+nft)=lbuf2%FRAC(i)
118 vol(i+nft)=gbuf%VOL(i)*udt
119 ENDDO
120 ENDDO
121
122 ENDIF
123 ENDIF
124
126
127 DO ng=itask+1,ngroup,nthread
128
129 IF (iparg(76, ng) == 1) cycle
131 2 mtn ,llt ,nft ,iad ,ity ,
132 3 npt ,jale ,ismstr ,jeul ,jtur ,
133 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
134 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
135 6 irep ,iint ,igtyp ,israt ,isrot ,
136 7 icsen ,isorth ,isorthg ,ifailure,jsms )
137 IF (jale+jeul == 0) cycle
138 IF (iparg(8,ng) == 1) cycle
139 gbuf => elbuf_str(ng)%GBUF
140 nsg = iparg(10,ng)
141 isolnod = iparg(28,ng)
142 lft=1
143 nf1=nft+1
144 nel = llt
145
146 IF(n2d == 0.AND.jeul == 0.AND. isolnod == 4)THEN
147 CALL a4flux3(pm,ixs,v,w,x,flux(6*nft+1),flu2(nf1),ale_connect)
148 ELSEIF(n2d == 0.AND.jeul == 0)THEN
150 CALL aflux3(pm,ixs,v,w,x,flux(6*nft+1),flu2(nf1),ale_connect,nsg,gbuf%TAG22)
151 ELSE
153 2 flu2(nf1),ale_connect,
154 3 ipm ,nv46 ,x ,
155 4 nel )
156 ENDIF
157 ELSEIF(n2d /= 0.AND.jeul == 0)THEN
159 . flux(4*nft+1),flu2(nf1),
160 . fill,dfill,vol,ale_connect,alph)
161 ELSEIF(n2d == 0.AND.jeul /= 0)THEN
163 CALL eflux3(pm,ixs,v,flux(6*nft+1),flu2(nf1),veul,ale_connect,gbuf%TAG22)
164 ELSE
166 2 veul ,ale_connect ,ipm ,
167 3 nv46 ,x ,nel )
168 ENDIF
169 ELSEIF(n2d /= 0.AND.jeul /= 0)THEN
170 CALL eflux2(pm,ixq,v,x,flux(4*nft+1),flu2(nf1),fill,dfill,vol,ale_connect,alph)
171 ENDIF
172 ENDDO
173
174
176
177
178 IF(int22 > 0)THEN
179 IF(i22_aleul == 2)THEN
181 . pm , ixs , flux(1) , flu2(1) ,
182 . iparg , elbuf_str , itask ,
183 . nv46 , ipm , x)
184 ELSE
186 . pm , ixs , flux(1) , flu2(1) ,
187 . iparg , elbuf_str , itask ,
188 . nv46 , ipm , x , w)
189 ENDIF
190 ENDIF
191
192
194
195
196 RETURN
subroutine a4flux3(pm, ixs, v, w, x, flux, flu1, ale_connect)
subroutine aflux2(pm, ixq, v, w, x, flux, flu1, fill, dfill, vol, ale_connect, alph)
subroutine aflux3(pm, ixs, v, w, x, flux, flu1, ale_connect, nsg, tag22)
subroutine aflux3_int22_fvm(pm, ixs, flux, flu1, iparg, elbuf_tab, itask, nv46, ipm, x, w)
subroutine alefvm_aflux3(pm, ixs, w, flux, flu1, ale_connect, ipm, nv46, x, nel)
subroutine alefvm_eflux3(pm, ixs, flux, flu1, veul, ale_connect, ipm, nv46, x, nel)
subroutine eflux2(pm, ixq, v, x, flux, flu1, fill, dfill, vol, ale_connect, alph)
subroutine eflux3(pm, ixs, v, flux, flu1, veul, ale_connect, tag22)
subroutine eflux3_int22_fvm(pm, ixs, flux, flu1, iparg, elbuf_tab, itask, nv46, ipm, x)
type(alefvm_param_), target alefvm_param
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)