34
35
36
38
39
40
41#include "implicit_f.inc"
42
43
44
45#include "com01_c.inc"
46#include "com08_c.inc"
47#include "com06_c.inc"
48#include "comlock.inc"
49
50
51
52 INTEGER NODFT,NODLT,NDDIM,NPLYMAX,NPLYXFE,INOD(*)
53
55 . ms_layer(nplyxfe,*), zi_layer(nplyxfe,*),
56 . ms(*),msz2(*)
57
58
59
60 INTEGER
61 . J,K,N,,NPT
63 . rtmp, fn1,fn2,fn3,fac,msi,fm1,fm2,fm3,iner,
64 . mass,
alpha(nddim),f1,f3,f2,mdt1,mdt2,mdt3,
65 . fply, mply,df1,df2,df3,kzi,mass_node,beta
66
67
69 IF(iplyxfem == 2 ) THEN
70#include "vectorize.inc"
71 DO nn=nodft,nodlt
72 n = inod(nn)
73 f1 = zero
74 f2 = zero
75 f3 = zero
76 mdt1 = zero
77 mdt2 = zero
78 mdt3 = zero
79 IF(n > 0) THEN
80 npt = 0
81
82 msz2(n)=zero
83 kzi =zero
84 DO j=1,nplymax
85 IF(ms_layer(n,j) > zero) THEN
86 msz2(n) = msz2(n) +
87 . ms_layer(n,j)*zi_layer(n,j)*zi_layer(n,j)
88 kzi=kzi+
ply(j)%A(4,n)*zi_layer(n,j)
89 END IF
90 END DO
91 kzi=kzi/msz2(n)
92
93 mass_node = zero
94 DO j=1,nplymax
95 IF(ms_layer(n,j) > zero) THEN
96 mass_node = mass_node + ms_layer(n,j)
97 ENDIF
98 ENDDO
99 DO j=1,nplymax
100 IF(ms_layer(n,j) > zero) THEN
101 beta = ms(nn)/mass_node
102 fac = one/(dtfacx*dtfacx)
103 mass =fac*dt2*dt2*
ply(j)%A(4,n)
104
106
107 mdt1 = mdt1 +
ply(j)%A(1,n)*zi_layer(n,j)
108 mdt2 = mdt2 +
ply(j)%A(2,n)*zi_layer(n,j)
109 mdt3 = mdt3 +
ply(j)%A(3,n)*zi_layer(n,j)
110
111 f1 = f1 +
ply(j)%A(1,n)
112 f2 = f2 +
ply(j)%A(2,n)
113 f3 = f3 +
ply(j)%A(3,n)
114
115
116
117
118
119
120 ENDIF
121 ENDDO
122
123 DO j=1,nplymax
124 IF(ms_layer(n,j) > zero) THEN
125 beta = ms(nn)/mass_node
126 fply = beta*ms_layer(n,j)/ms(nn)
127 mply = zi_layer(n,j)*ms_layer(n,j)/msz2(n)
128
129 ply(j)%A(1,n)=
ply(j)%A(1,n) - f1*fply
130 ply(j)%A(2,n)=
ply(j)%A(2,n) - f2*fply
131 ply(j)%A(3,n)=
ply(j)%A(3,n) - f3*fply
132 ENDIF
133 ENDDO
134 ENDIF
135 ENDDO
136 ELSE
137#include "vectorize.inc"
138 DO nn=nodft,nodlt
139 n = inod(nn)
140 f1 = zero
141 f2 = zero
142 f3 = zero
143 mdt1 = zero
144 mdt2 = zero
145 mdt3 = zero
146 IF(n > 0) THEN
147 npt = 0
148
149 msz2(n)=zero
150 kzi =zero
151 DO j=1,nplymax
152 IF(ms_layer(n,j) > zero) THEN
153 msz2(n) = msz2(n) +
154 . ms_layer(n,j)*zi_layer(n,j)*zi_layer(n,j)
155 kzi=kzi+
ply(j)%A(4,n)*zi_layer(n,j)
156 END IF
157 END DO
158 kzi=kzi/msz2(n)
159
160 DO j=1,nplymax
161 IF(ms_layer(n,j) > zero) THEN
162 fac = one/(dtfacx*dtfacx)
163 mass =fac*dt2*dt2*
ply(j)%A(4,n)
164
166
167 mdt1 = mdt1 +
ply(j)%A(1,n)*zi_layer(n,j)
168 mdt2 = mdt2 +
ply(j)%A(2,n)*zi_layer(n,j)
169 mdt3 = mdt3 +
ply(j)%A(3,n)*zi_layer(n,j)
170
171 f1 = f1 +
ply(j)%A(1,n)
172 f2 = f2 +
ply(j)%A(2,n)
173 f3 = f3 +
ply(j)%A(3,n)
174
175
176
177
178
179
180 ENDIF
181 ENDDO
182
183 DO j=1,nplymax
184 IF(ms_layer(n,j) > zero) THEN
185 fply = ms_layer(n,j)/ms(nn)
186 mply = zi_layer(n,j)*ms_layer(n,j)/msz2(n)
187 ply(j)%A(1,n)=
ply(j)%A(1,n) - f1*fply - mply*mdt1
188 ply(j)%A(2,n)=
ply(j)%A(2,n) - f2*fply - mply*mdt2
189 ply(j)%A(3,n)=
ply(j)%A(3,n) - f3*fply - mply*mdt3
190 ENDIF
191 ENDDO
192 ENDIF
193 ENDDO
194 ENDIF
195
196 DO j=1,nplymax
197 CALL plya(j,nodft,nodlt,nplyxfe, inod,
alpha,
198 . ms_layer,
ply(j)%A(1,1))
199 ENDDO
200
201 RETURN
type(ply_data), dimension(:), allocatable ply
subroutine plya(j, nodft, nodlt, nplyxfe, inod, alpha, ms, a)