39
40
41
43
44
45
46
47
48
49
50
51#include "implicit_f.inc"
52
53
54
55#include "com01_c.inc"
56#include "com04_c.inc"
57#include "com06_c.inc"
58#include "com08_c.inc"
59#include "scr06_c.inc"
60#include "units_c.inc"
61#include "task_c.inc"
62#include "parit_c.inc"
63#include "param_c.inc"
64
65
66
67 INTEGER NALE(*),ICODT(*),ISKEW(*), WEIGHT(*), NELTST ,ITYPTST,
68 . ITASK,NODFT,NODLT,NELTSA ,ITYPTSA, NELTS
69 my_real v(3,numnod),dsave(3,*),skew(lskew,*),asave(3,*),a(3,numnod),d(3,numnod),
70 . dt2save,dt2t,fsky(8,lsky),fskyv(lsky,8)
71
72
73
74 INTEGER N,LCOD, INDX2(1024), I,IPRI,NINDX2, K, NISKFT, NISKLT
75
76
77
78
79
80
81
82 IF(itask == 0) THEN
83 dt2=dt2*
ale%SUB%DTFSUB
84 IF(dt2s /= zero)dt2=
min(dt2,onep1*dt2s)
85 IF(tt > zero)THEN
86 dt12s=half*(dt1+int(dt2/
ale%SUB%DT1SAVE)*
ale%SUB%DT1SAVE)
87 ELSE
88 dt12s=half*dt2
89 ENDIF
90 dt2s=dt2
92 ipri=mod(ncycle,iabs(ncpri))
93 IF(ipri == 0.AND.ispmd == 0)THEN
94 WRITE(iout,1000) ' FLUID TIME STEP ',dt2s,' SOLID',nelts
95 IF(ncpri < 0)
96 & WRITE(istdo,1000)' FLUID TIME STEP ',dt2s
97 1000 FORMAT(a,1pe11.4,a,i10)
98 ENDIF
99 ENDIF
100
102
103 dt2t=
min(dt2,dt2save)
104 neltst =neltsa
105 ityptst=ityptsa
106
107 DO n=nodft,nodlt
108 IF(nale(n) == 0)THEN
109 v(1,n)=dsave(1,n)
110 v(2,n)=dsave(2,n)
111 v(3,n)=dsave(3,n)
112 ENDIF
113 ENDDO
114 DO i=nodft,nodlt,1024
115 nindx2 = 0
116 DO n = i,
min(nodlt,i+1023)
117 lcod=icodt(n+numnod+numnod)
118 IF(nale(n)*lcod /= 0)THEN
119 nindx2 = nindx2 + 1
120 indx2(nindx2) = n
121 ENDIF
122 ENDDO
123 IF (nindx2 /= 0)THEN
124 CALL bcs3v(nindx2,indx2,iskew,icodt(2*numnod
125 ENDIF
126 ENDDO
127
128
129
130 DO n=nodft,nodlt
131 dsave(1,n)=d(1,n)
132 dsave(2,n)=d(2,n)
133 dsave(3,n)=d(3,n)
134 ENDDO
135
136 IF(iparit > 0)THEN
137
138
139
140 DO n=nodft,nodlt
141 asave(1,n)=a(1,n)
142 asave(2,n)=a(2,n)
143 asave(3,n)=a(3,n)
144 ENDDO
145 niskft = 1+itask*lsky/nthread
146 nisklt = (itask+1)*lsky/nthread
147 IF(ivector == 1) THEN
148 DO k=1,8
149 DO i=niskft,nisklt
150 fskyv(i,k)=zero
151 ENDDO
152 ENDDO
153 ELSE
154 DO k=1,8
155 DO i=niskft,nisklt
156 fsky(k,i)=zero
157 ENDDO
158 ENDDO
159 ENDIF
160
161 ELSE
162 DO n=nodft,nodlt
163 a(1,n)=a(1,n)*weight(n)
164 a(2,n)=a(2,n)*weight(n)
165 a(3,n)=a(3,n)*weight(n)
166 asave(1,n)=a(1,n)
167 asave(2,n)=a(2,n)
168 asave(3,n)=a(3,n)
169 ENDDO
170 ENDIF
171
172 RETURN
subroutine bcs3v(nindx, indx, iskew, icodt, w, v, b)