36
37
38
40 use element_mod , only : nixc,nixtg
41
42
43
44#include "implicit_f.inc"
45#include "comlock.inc"
46
47
48
49#include "com01_c.inc"
50#include "com08_c.inc"
51#include "param_c.inc"
52#include "remesh_c.inc"
53#include "scr17_c.inc"
54#include "task_c.inc"
55
56
57
58 INTEGER IXC(NIXC,*), IPARTC(*), IXTG(NIXTG,*), IPARTTG(*),
59 . IPART(LIPART1,*), ITASK, SH4TREE(KSH4TREE,*),
60 . SH3TREE(KSH3TREE,*)
62 . a(3,*),v(3,*),ar(3,*),vr(3,*), temp(*)
63
64
65
66 INTEGER SH4FT, SH4LT, , SH3LT
67 INTEGER , NN, LEVEL, IP, NLEV, LL, IERR
68 INTEGER SON,M(4),MC,N1,,N3,N4,J,NA,NB
69 integer ,INTENT(IN) :: ITHERM_FE
71
72 usdt=one/dt12
73
74
75 IF(itask==0)THEN
77 END IF
78
80
81
82 DO level=0,levelmax-1
83
85 sh4ft =
psh4kin(level)+ 1+itask*ll/ nthread
86 sh4lt =
psh4kin(level)+ (itask+1)*ll/nthread
87
88 DO nn=sh4ft,sh4lt
90
91 n1=ixc(2,n)
92 n2=ixc(3,n)
93 n3=ixc(4,n)
94 n4=ixc(5,n)
95
96 son=sh4tree(2,n)
97
98 mc=ixc(3,son+3)
99
102 DO j=1,3
103 vv= fourth*(v(j,n1)+v(j,n2)+v(j,n3)+v(j,n4)
104 . +dt12*(a(j,n1)+a(j,n2)+a(j,n3)+a(j,n4)))
105 a(j,mc)=usdt*(vv-v(j,mc))
106 END DO
107 DO j=1,3
108 vv= fourth*(vr(j,n1)+vr(j,n2)+vr(j,n3)+vr(j,n4)
109 . +dt12*(ar(j,n1)+ar(j,n2)+ar(j,n3)+ar(j,n4)))
110 ar(j,mc)=usdt*(vv-vr(j,mc))
111 END DO
112 IF(itherm_fe > 0)
113 . temp(mc)=fourth*(temp(n1)+temp(n2)+temp(n3)+temp(n4))
114 END IF
115
116 m(1)=ixc(3,son )
117 m(2)=ixc(4,son+1)
118 m(3)=ixc(5,son+2)
119 m(4)=ixc(2,son+3)
120
125 DO j=1,3
126 vv= half*(v(j,na)+v(j,nb)+dt12*(a(j,na)+a(j,nb)))
127 a(j,m(1))=usdt*(vv-v(j,m(1)))
128 END DO
129 DO j=1,3
130 vv= half*(vr(j,na)+vr(j,nb)+dt12*(ar(j,na)+ar(j,nb)))
131 ar(j,m(1))=usdt*(vv-vr(j,m(1)))
132 END DO
133 IF(itherm_fe > 0)
134 . temp(m(1))=half*(temp(na)+temp(nb))
135 END IF
136
141 DO j=1,3
142 vv= half*(v(j,na)+v(j,nb)+dt12*(a(j,na)+a(j,nb)))
143 a(j,m(2))=usdt*(vv-v(j,m(2)))
144 END DO
145 DO j=1,3
146 vv= half*(vr(j,na)+vr(j,nb)+dt12*(ar(j,na)+ar(j,nb)))
147 ar(j,m(2))=usdt*(vv-vr(j,m(2)))
148 END DO
149 IF(itherm_fe > 0)
150 . temp(m(2))=half*(temp(na)+temp(nb))
151 END IF
152
157 DO j=1,3
158 vv= half*(v(j,na)+v(j,nb)+dt12*(a(j,na)+a(j,nb)))
159 a(j,m(3))=usdt*(vv-v(j,m(3)))
160 END DO
161 DO j=1,3
162 vv= half*(vr(j,na)+vr(j,nb)+dt12*(ar(j,na)+ar(j,nb)))
163 ar(j,m(3))=usdt*(vv-vr(j,m(3)))
164 END DO
165 IF(itherm_fe > 0)
166 . temp(m(3))=half*(temp(na)+temp(nb))
167 END IF
168
173 DO j=1,3
174 vv= half*(v(j,na)+v(j,nb)+dt12*(a(j,na)+a(j,nb)))
175 a(j,m(4))=usdt*(vv-v(j,m(4)))
176 END DO
177 DO j=1,3
178 vv= half*(vr(j,na)+vr(j,nb)+dt12*(ar(j,na)+ar(j,nb)))
179 ar(j,m(4))=usdt*(vv-vr(j,m(4)))
180 END DO
181 IF(itherm_fe > 0)
182 . temp(m(4))=half*(temp(na)+temp(nb))
183 END IF
184 END DO
185
187 sh3ft =
psh3kin(level)+ 1+itask*ll/ nthread
188 sh3lt =
psh3kin(level)+ (itask+1)*ll/nthread
189
190 DO nn=sh3ft,sh3lt
192
193 n1=ixtg(2,n)
194 n2=ixtg(3,n)
195 n3=ixtg(4,n)
196
197 son=sh3tree(2,n)
198
199 m(1)=ixtg(4,son+3)
200 m(2)=ixtg(2,son+3)
201 m(3)=ixtg(3,son+3)
202
207 DO j=1,3
208 vv= half*(v(j,na)+v(j,nb)+dt12*(a(j,na)+a(j,nb)))
209 a(j,m(1))=usdt*(vv-v(j,m(1)))
210 END DO
211 DO j=1,3
212 vv= half*(vr(j,na)+vr(j,nb)+dt12*(ar(j,na)+ar(j,nb)))
213 ar(j,m(1))=usdt*(vv-vr(j,m(1)))
214 END DO
215 IF(itherm_fe > 0)
216 . temp(m(1))=half*(temp(na)+temp(nb))
217 END IF
218
223 DO j=1,3
224 vv= half*(v(j,na)+v(j,nb)+dt12*(a(j,na)+a(j,nb)))
225 a(j,m(2))=usdt*(vv-v(j,m(2)))
226 END DO
227 DO j=1,3
228 vv= half*(vr(j,na)+vr(j,nb)+dt12*(ar(j,na)+ar(j,nb)))
229 ar(j,m(2))=usdt*(vv-vr(j,m(2)))
230 END DO
231 IF(itherm_fe > 0)
232 . temp(m(2))=half*(temp(na)+temp(nb))
233 END IF
234
239 DO j=1,3
240 vv= half*(v(j,na)+v(j,nb)+dt12*(a(j,na)+a(j,nb)))
241 a(j,m(3))=usdt*(vv-v(j,m(3)))
242 END DO
243 DO j=1,3
244 vv= half*(vr(j,na)+vr(j,nb)+dt12*(ar(j,na)+ar(j,nb)))
245 ar(j,m(3))=usdt*(vv-vr(j,m(3)))
246 END DO
247 IF(itherm_fe > 0)
248 . temp(m(3))=half*(temp(na)+temp(nb))
249 END IF
250 END DO
251
253
254 END DO
255
256 RETURN
integer, dimension(:), allocatable lsh4kin
integer, dimension(:), allocatable lsh3kin
integer, dimension(:), allocatable psh4kin
integer, dimension(:), allocatable psh3kin
integer, dimension(:), allocatable tagnod