OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
ply_accele.F File Reference
#include "implicit_f.inc"
#include "com01_c.inc"
#include "com08_c.inc"
#include "com06_c.inc"
#include "comlock.inc"
#include "vectorize.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine ply_accele (inod, ms_layer, zi_layer, ms, nodft, nodlt, nplymax, nplyxfe, nddim, msz2)
subroutine plya (j, nodft, nodlt, nplyxfe, inod, alpha, ms, a)

Function/Subroutine Documentation

◆ ply_accele()

subroutine ply_accele ( integer, dimension(*) inod,
ms_layer,
zi_layer,
ms,
integer nodft,
integer nodlt,
integer nplymax,
integer nplyxfe,
integer nddim,
msz2 )

Definition at line 32 of file ply_accele.F.

34C-----------------------------------------------
35C M o d u l e s
36C-----------------------------------------------
37 USE plyxfem_mod
38C----6---------------------------------------------------------------7---------8
39C I m p l i c i t T y p e s
40C-----------------------------------------------
41#include "implicit_f.inc"
42C-----------------------------------------------
43C C o m m o n B l o c k s
44C-----------------------------------------------
45#include "com01_c.inc"
46#include "com08_c.inc"
47#include "com06_c.inc"
48#include "comlock.inc"
49C-----------------------------------------------------------------
50C D u m m y A r g u m e n t s
51C-----------------------------------------------
52 INTEGER NODFT,NODLT,NDDIM,NPLYMAX,NPLYXFE,INOD(*)
53C REAL
55 . ms_layer(nplyxfe,*), zi_layer(nplyxfe,*),
56 . ms(*),msz2(*)
57C-----------------------------------------------
58C L o c a l V a r i a b l e s
59C-----------------------------------------------
60 INTEGER
61 . J,K,N,NN,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
66C----------------------------------------------------
67C
68 alpha = one
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
81C
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)
92C
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)
104clm . +KZI*MS_LAYER(N,J)*ABS(ZI_LAYER(N,J)))
105 alpha(nn) = max(alpha(nn), mass/ms_layer(n,j)/beta)
106C
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)
110C
111 f1 = f1 + ply(j)%A(1,n)
112 f2 = f2 + ply(j)%A(2,n)
113 f3 = f3 + ply(j)%A(3,n)
114C for fail of ply ! is desactivated for checking
115!to be checked IF(PLY(J)%A(4,N) == ZERO)THEN
116!to be checked PLY(J)%A(4,N) = EP30
117!to be checked PLY(J)%ITAG(N) = 1
118!to be checked ENDIF
119C
120 ENDIF
121 ENDDO
122C corre ction des forces par plies
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)
128C
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 !old formulation
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
148C
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)
159C
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)
164clm . +KZI*MS_LAYER(N,J)*ABS(ZI_LAYER(N,J)))
165 alpha(nn) = max(alpha(nn), mass/ms_layer(n,j) )
166C
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)
170C
171 f1 = f1 + ply(j)%A(1,n)
172 f2 = f2 + ply(j)%A(2,n)
173 f3 = f3 + ply(j)%A(3,n)
174C is desactivated for checking
175!to be checked IF(PLY(J)%A(4,N) == ZERO)THEN
176!to be checked PLY(J)%A(4,N) = EP30
177!to be checked PLY(J)%ITAG(N) = 1
178!to be checked ENDIF
179C
180 ENDIF
181 ENDDO
182C corre ction des forces par plies
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 ! formulation
195C
196 DO j=1,nplymax
197 CALL plya(j,nodft,nodlt,nplyxfe, inod,alpha,
198 . ms_layer, ply(j)%A(1,1))
199 ENDDO
200C--------------------------------------------
201 RETURN
#define my_real
Definition cppsort.cpp:32
#define alpha
Definition eval.h:35
#define max(a, b)
Definition macros.h:21
type(ply_data), dimension(:), allocatable ply
Definition plyxfem_mod.F:91
subroutine plya(j, nodft, nodlt, nplyxfe, inod, alpha, ms, a)
Definition ply_accele.F:209

◆ plya()

subroutine plya ( integer j,
integer nodft,
integer nodlt,
integer nplyxfe,
integer, dimension(*) inod,
alpha,
ms,
a )

Definition at line 208 of file ply_accele.F.

209C-----------------------------------------------
210C M o d u l e s
211C-----------------------------------------------
212C----6---------------------------------------------------------------7---------8
213C I m p l i c i t T y p e s
214C-----------------------------------------------
215#include "implicit_f.inc"
216C-----------------------------------------------
217C C o m m o n B l o c k s
218C-----------------------------------------------
219C-----------------------------------------------------------------
220C D u m m y A r g u m e n t s
221C-----------------------------------------------
222 INTEGER NODFT,NODLT,NPLYXFE,INOD(*),J
223C REAL
224 my_real
225 . ms(nplyxfe,*),a(4,*),alpha(*)
226C-----------------------------------------------
227C L o c a l V a r i a b l e s
228C-----------------------------------------------
229 INTEGER K,N,NN
230 my_real
231 . rtmp, fn1,fn2,fn3,fac,msi,fm1,fm2,fm3,iner,
232 . mass,f1,f2,f3
233C----------------------------------------------------
234C
235#include "vectorize.inc"
236 DO nn=nodft,nodlt
237 n = inod(nn)
238 IF(n > 0) THEN
239 IF(ms(n,j) > zero) THEN
240 mass = alpha(nn)*ms(n,j)
241 rtmp = one / mass
242 a(1,n) = a(1,n) * rtmp
243 a(2,n) = a(2,n) * rtmp
244 a(3,n) = a(3,n) * rtmp
245 ELSE
246 a(1,n) = zero
247 a(2,n) = zero
248 a(3,n) = zero
249 a(4,n) = zero
250 ENDIF
251 ENDIF
252 ENDDO
253C
254C--------------------------------------------
255 RETURN