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