40 use element_mod , only : nixs
41
42
43
44#include "implicit_f.inc"
45
46
47
48#include "mvsiz_p.inc"
49
50
51
52#include "scr18_c.inc"
53#include "scr05_c.inc"
54
55
56
57 INTEGER, INTENT(IN) :: MTN
58 INTEGER, INTENT(IN) :: ISMSTR
59 INTEGER NPE,NEL
60 INTEGER IXS(NIXS,*)
61
63 . x(3,*),time,d(3,*),off(*),off0(*),
64 . vx0(mvsiz,npe),vy0(mvsiz,npe),vz0(mvsiz,npe)
65 DOUBLE PRECISION
66 . X0(MVSIZ,), Y0(MVSIZ,NPE), Z0(MVSIZ,NPE),
67 . SAV(NEL,3*(NPE-1)),XDP(3,*),XD,YD,ZD
68
69
70
71 INTEGER I,NPE1,N,N2,N3
72 INTEGER NC(MVSIZ,NPE)
73
74
75
76 npe1=npe-1
77 IF (npe==4) THEN
78 DO i=1,nel
79 nc(i,1)=ixs(2,i)
80 nc(i,2)=ixs(4,i)
81 nc(i,3)=ixs(7,i)
82 nc(i,4)=ixs(6,i)
83 ENDDO
84 ELSE
85 DO n=1,npe
86 DO i=1,nel
87 nc(i,n)=ixs(n+1,i)
88 ENDDO
89 ENDDO
90 ENDIF
91
92
93
94 DO n=1,npe1
95 n2 = n + npe1
96 n3 = n2 + npe1
97 DO i=1,nel
98 x0(i,n)=sav(i,n)
99 y0(i,n)=sav(i,n2)
100 z0(i,n)=sav(i,n3)
101 ENDDO
102 ENDDO
103
104 IF (ismstr == 12.AND.idtmin(1)==3 .AND.mtn==1) THEN
105 DO n=1,npe1
106 n2 = 3*(n-1)+1
107 DO i=1,nel
108 IF (off(i) <= one ) cycle
109 x0(i,n)=sav(i,n2)
110 y0(i,n)=sav(i,n2+1)
111 z0(i,n)=sav(i,n2+2)
112 ENDDO
113 ENDDO
114 END IF
115
116
117
118 IF(iresp==1)THEN
119 DO n=1,npe1
120 DO i=1,nel
121 n2 = nc(i,n)
122 n3 = nc(i,npe)
123 xd =xdp(1,n2)-xdp(1,n3)-x0(i,n)
124 yd =xdp(2,n2)-xdp(2,n3)-y0(i,n)
125 zd =xdp(3,n2)-xdp(3,n3)-z0(i,n)
126 vx0(i,n) = xd
127 vy0(i,n) = yd
128 vz0(i,n) = zd
129 ENDDO
130 ENDDO
131 ELSE
132 DO n=1,npe1
133 DO i=1,nel
134 n2 = nc(i,n)
135 n3 = nc(i,npe)
136 vx0(i,n)=x(1,n2)-x(1,n3)-x0(i,n)
137 vy0(i,n)=x(2,n2)-x(2,n3)-y0(i,n)
138 vz0(i,n)=x(3,n2)-x(3,n3)-z0(i,n)
139 ENDDO
140 ENDDO
141 END IF
142
143 DO i=1,nel
144 x0(i,npe)=zero
145 y0(i,npe)=zero
146 z0(i,npe)=zero
147 vx0(i,npe)=zero
148 vy0(i,npe)=zero
149 vz0(i,npe)=zero
150 ENDDO
151
152 IF (ismstr == 12.AND.idtmin(1)==3) THEN
153 DO i=1,nel
154 off0(i)=off(i)
155 ENDDO
156
157 IF (mtn/=1) THEN
158 DO n=1,npe1
159 DO i=1,nel
160 IF (off(i) <= one ) cycle
161 vx0(i,n)=d(1,nc(i,n))-d(1,nc(i,npe))
162 vy0(i,n)=d(2,nc(i,n))-d(2,nc(i,npe))
163 vz0(i,n)=d(3,nc(i,n))-d(3,nc(i,npe))
164 ENDDO
165 ENDDO
166 DO n=1,npe1
167 n2 = 3*(n-1)+1
168 DO i=1,nel
169 IF (off(i) <= one ) cycle
170 x0(i,n)=sav(i,n2)
171 y0(i,n)=sav(i,n2+1)
172 z0(i,n)=sav(i,n2+2)
173 ENDDO
174 ENDDO
175 END IF
176 END IF
177
178 RETURN