OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
s20deri3.F File Reference
#include "implicit_f.inc"
#include "mvsiz_p.inc"
#include "vect01_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine s20deri3 (ngl, off, r, s, t, w, dnidr, dnids, dnidt, dxdr, dydr, dzdr, dxds, dyds, dzds, dxdt, dydt, dzdt, xx, yy, zz, px, py, pz, vol, deltax, deltax2, ip, nip, ul, volg, voldp)
subroutine s20rst (r, s, t, ni, dnidr, dnids, dnidt)

Function/Subroutine Documentation

◆ s20deri3()

subroutine s20deri3 ( integer, dimension(*) ngl,
off,
r,
s,
t,
w,
dnidr,
dnids,
dnidt,
dxdr,
dydr,
dzdr,
dxds,
dyds,
dzds,
dxdt,
dydt,
dzdt,
xx,
yy,
zz,
px,
py,
pz,
vol,
deltax,
deltax2,
integer ip,
integer nip,
ul,
volg,
double precision, dimension(*) voldp )

Definition at line 32 of file s20deri3.F.

38 USE message_mod
39C-----------------------------------------------
40C I m p l i c i t T y p e s
41C-----------------------------------------------
42#include "implicit_f.inc"
43C-----------------------------------------------
44C G l o b a l P a r a m e t e r s
45C-----------------------------------------------
46#include "mvsiz_p.inc"
47C-----------------------------------------------
48C D u m m y A r g u m e n t s
49C-----------------------------------------------
50 INTEGER NGL(*),IP,NIP
51C REAL
53 . r,s,t,w,
54 . dnidr(20),dnids(20),dnidt(20),dxdr(*),dydr(*),dzdr(*),
55 . dxds(*),dyds(*),dzds(*),dxdt(*),dydt(*),dzdt(*),
56 . drdx(mvsiz), dsdx(mvsiz), dtdx(mvsiz),
57 . drdy(mvsiz), dsdy(mvsiz), dtdy(mvsiz),
58 . drdz(mvsiz), dsdz(mvsiz), dtdz(mvsiz),
59 . xx(mvsiz,20),yy(mvsiz,20),zz(mvsiz,20),
60 . px(mvsiz,20),py(mvsiz,20),pz(mvsiz,20),volg(mvsiz),
61 . vol(*),off(*),deltax(*),deltax2(*) ,ul(mvsiz,20)
62 double precision
63 . voldp(*), detdp
64C-----------------------------------------------
65C C o m m o n B l o c k s
66C-----------------------------------------------
67#include "vect01_c.inc"
68C-----------------------------------------------
69C L o c a l V a r i a b l e s
70C-----------------------------------------------
71 INTEGER I,N
73 . d, aa, bb, det(mvsiz)
74C-----------------------------------------------
75C
76C
77C
78C ^ S _ T
79C | /|
80C | /
81C 7 | 18 /
82C O-----------|-----O-----------------O 6
83C /. | / /|
84C / . | / / |
85C / . | / |
86C / . | / / |
87C / . | / / |
88C 19 O . * + * * O |
89C / . | / / 17 |
90C / . / / |
91C / 15 O | + / O 14
92C / .# # / # / |
93C / . * 20 | * / * |
94C 8 O-----------------O-----------------O 5 |
95C | . | / | |
96C | @ . @ @ | |
97C R <------|- - -+ - - -#- - - - - # - - - - -#|- - -+ |
98C | . * / * | * |
99C | . 3 | 10 | |
100C | O......../.. .....O.....|...........O 2
101C | @ ' @ | @ | /
102C | ' # / # #| /
103C 16 O ' + | O 13 /
104C | ' | /
105C | 11 ' | | /
106C | O @ @ + @ | O
107C | ' | / 9
108C | ' | /
109C | ' | /
110C | ' | /
111C |' |/
112C O-----------------O-----------------O
113C 4 12 1
114C
115C
116C
117C
118C-----------------------------------------------
119C
120C
121C ^ S _ T
122C | /|
123C | /
124C | /
125C ( 7)==========|===(18)===============( 6)
126C //| | / //|
127C // | | / //||
128C // | | // ||
129C // | | / // ||
130C // | | / // ||
131C (19) | *- - - + - * - - - - -* (17) ||
132C // | /| | /| / /| // ||
133C // | / // ||
134C // (15)/ | |/ | + / // (14)
135C // |#- - - - - # - -/- - -# // ||
136C // | * - - /|- -*- - -/ -//* ||
137C ( 8)===============(20)==============( 5) ||
138C || / || / | / | / | / ||| | ||
139C || @- | - - - @ - - - - -@ || ||
140C R <-----||- - -+ -|- -# - - -| - # - - -|- -#|| - -+ ||
141C || | * - - /| - *- - -/-|| * ||
142C || | || / | / | |||/ ||
143C || ( 3)-------/--|---(10)----||---------( 2)
144C || @ /- / - - @ - -/ - - @ || //
145C || |/ #- - -/| - # - - -|- -#|| //
146C (16) / / + /| /(13) //
147C || /| | | || //
148C || / / / | / || //
149C || (11) @- - - - - @ - + - - -@ || ( 9)
150C || / || //
151C || / || //
152C || / || //
153C || / ||//
154C ||/ ||/
155C ( 4)===============(12)==============( 1)
156C
157C
158C
159C
160C*/
161C-----------------------------------------------
162C
163C _
164C \
165C f = /_ (fi * Ni)
166C _
167C \
168C df/dx = /_ (fi * dNi/dx)
169C
170C dNi/dx = dNi/dr dr/dx + dNi/ds ds/dx + dNi/dt dt/dx
171C
172C-----------------------------------------------
173C _
174C \
175C x(r,s,t) = /_ (xi * Ni(r,s,t))
176C _
177C \
178C y(r,s,t) = /_ (yi * Ni(r,s,t))
179C _
180C \
181C z(r,s,t) = /_ zi * Ni(r,s,t))
182C
183C _
184C \
185C dx/dr = /_ (xi * dNi/dr)
186C ...
187C
188C [dx/dr dy/dr dz/dr]
189C [J] = |dx/ds dy/ds dz/ds|
190C [dx/dt dy/dt dz/dt]
191C
192C |dNi/dx| -1 |dNi/dr|
193C {dNi/dy} = [J] {dNi/ds}
194C |dNi/dz| |dNi/dt|
195C
196C
197C [dNi/dx 0 0 ]
198C | 0 dNi/dy 0 |
199C [Bi] = | 0 0 dNi/dz|
200C |dNi/dy dNi/dx 0 |
201C | 0 dNi/dz dNi/dy|
202C [dNi/dz 0 dNi/dx]
203C
204C
205C [dNi/dx 0 0 dNi/dy 0 dNi/dz]
206C [Bi]t = | 0 dNi/dy 0 dNi/dx dNi/dz 0 |
207C [ 0 0 dNi/dz 0 dNi/dy dNi/dx]
208C
209C [D11 D12 D12 0 0 0 ]
210C |D12 D11 D12 0 0 0 |
211C [D] = |D12 D12 D11 0 0 0 |
212C | 0 0 0 G 0 0 |
213C | 0 0 0 0 G 0 |
214C [ 0 0 0 0 0 G ]
215C
216C [D11*dNi/dx D12*dNi/dx D12*dNi/dx G*dNi/dy 0 G*dNi/dz]
217C [Bi]t [D] = |D12*dNi/dy D11*dNi/dy D12*dNi/dy G*dNi/dx G*dNi/dz 0 |
218C [D12*dNi/dz D12*dNi/dz D11*dNi/dz 0 G*dNi/dy G*dNi/dx]
219C _
220C / t
221C eps = [B] u sig = [D] eps F = _/ [B] sig dvol
222C
223C _
224C / t
225C [Kij] = _/ [Bi] [D] [Bj] dvol
226C
227C
228C
229C [ D11*dNi/dx*dNj/dx D12*dNi/dx*dNj/dy D12*dNi/dx*dNj/dz ]
230C | + G*dNi/dy*dNj/dy + G*dNi/dy*dNj/dx + G*dNi/dz*dNj/dx |
231C | + G*dNi/dz*dNj/dz |
232C [Kij] | D11*dNi/dy*dNj/dy D12*dNi/dy*dNj/dz |
233C ---- = | D12*dNi/dy*dNj/dx + G*dNi/dx*dNj/dx + G*dNi/dz*dNj/dy |
234C Volp | + G*dNi/dx*dNj/dy + G*dNi/dz*dNj/dz |
235C | D11*dNi/dz*dNj/dz |
236C | D12*dNi/dz*dNj/dx D12*dNi/dz*dNj/dy + G*dNi/dy*dNj/dy |
237C [ + G*dNi/dx*dNj/dz + G*dNi/dy*dNj/dz + G*dNi/dx*dNj/dx ]
238C
239C-----------------------------------------------
240C-----------------------------------------------------------------------
241C dx/dr; dx/ds; dx/dt
242C-----------------------------------------------------------------------
243 DO i=lft,llt
244C
245 dxdr(i) = dnidr(1)*xx(i,1) + dnidr(2)*xx(i,2) + dnidr(3)*xx(i,3)
246 + + dnidr(4)*xx(i,4) + dnidr(5)*xx(i,5) + dnidr(6)*xx(i,6)
247 + + dnidr(7)*xx(i,7) + dnidr(8)*xx(i,8)
248 + + dnidr(9)*xx(i,9) + dnidr(10)*xx(i,10) + dnidr(11)*xx(i,11)
249 + + dnidr(12)*xx(i,12) + dnidr(13)*xx(i,13) + dnidr(14)*xx(i,14)
250 + + dnidr(15)*xx(i,15) + dnidr(16)*xx(i,16) + dnidr(17)*xx(i,17)
251 + + dnidr(18)*xx(i,18) + dnidr(19)*xx(i,19) + dnidr(20)*xx(i,20)
252C
253 dxds(i) = dnids(1)*xx(i,1) + dnids(2)*xx(i,2) + dnids(3)*xx(i,3)
254 + + dnids(4)*xx(i,4) + dnids(5)*xx(i,5) + dnids(6)*xx(i,6)
255 + + dnids(7)*xx(i,7) + dnids(8)*xx(i,8)
256 + + dnids(9)*xx(i,9) + dnids(10)*xx(i,10) + dnids(11)*xx(i,11)
257 + + dnids(12)*xx(i,12) + dnids(13)*xx(i,13) + dnids(14)*xx(i,14)
258 + + dnids(15)*xx(i,15) + dnids(16)*xx(i,16) + dnids(17)*xx(i,17)
259 + + dnids(18)*xx(i,18) + dnids(19)*xx(i,19) + dnids(20)*xx(i,20)
260C
261 dxdt(i) = dnidt(1)*xx(i,1) + dnidt(2)*xx(i,2) + dnidt(3)*xx(i,3)
262 + + dnidt(4)*xx(i,4) + dnidt(5)*xx(i,5) + dnidt(6)*xx(i,6)
263 + + dnidt(7)*xx(i,7) + dnidt(8)*xx(i,8)
264 + + dnidt(9)*xx(i,9) + dnidt(10)*xx(i,10) + dnidt(11)*xx(i,11)
265 + + dnidt(12)*xx(i,12) + dnidt(13)*xx(i,13) + dnidt(14)*xx(i,14)
266 + + dnidt(15)*xx(i,15) + dnidt(16)*xx(i,16) + dnidt(17)*xx(i,17)
267 + + dnidt(18)*xx(i,18) + dnidt(19)*xx(i,19) + dnidt(20)*xx(i,20)
268C-----------------------------------------------------------------------
269C dy/dr; dy/ds; dy/dt
270C-----------------------------------------------------------------------
271 dydr(i) = dnidr(1)*yy(i,1) + dnidr(2)*yy(i,2) + dnidr(3)*yy(i,3)
272 + + dnidr(4)*yy(i,4) + dnidr(5)*yy(i,5) + dnidr(6)*yy(i,6)
273 + + dnidr(7)*yy(i,7) + dnidr(8)*yy(i,8)
274 + + dnidr(9)*yy(i,9) + dnidr(10)*yy(i,10) + dnidr(11)*yy(i,11)
275 + + dnidr(12)*yy(i,12) + dnidr(13)*yy(i,13) + dnidr(14)*yy(i,14)
276 + + dnidr(15)*yy(i,15) + dnidr(16)*yy(i,16) + dnidr(17)*yy(i,17)
277 + + dnidr(18)*yy(i,18) + dnidr(19)*yy(i,19) + dnidr(20)*yy(i,20)
278C
279 dyds(i) = dnids(1)*yy(i,1) + dnids(2)*yy(i,2) + dnids(3)*yy(i,3)
280 + + dnids(4)*yy(i,4) + dnids(5)*yy(i,5) + dnids(6)*yy(i,6)
281 + + dnids(7)*yy(i,7) + dnids(8)*yy(i,8)
282 + + dnids(9)*yy(i,9) + dnids(10)*yy(i,10) + dnids(11)*yy(i,11)
283 + + dnids(12)*yy(i,12) + dnids(13)*yy(i,13) + dnids(14)*yy(i,14)
284 + + dnids(15)*yy(i,15) + dnids(16)*yy(i,16) + dnids(17)*yy(i,17)
285 + + dnids(18)*yy(i,18) + dnids(19)*yy(i,19) + dnids(20)*yy(i,20)
286C
287 dydt(i) = dnidt(1)*yy(i,1) + dnidt(2)*yy(i,2) + dnidt(3)*yy(i,3)
288 + + dnidt(4)*yy(i,4) + dnidt(5)*yy(i,5) + dnidt(6)*yy(i,6)
289 + + dnidt(7)*yy(i,7) + dnidt(8)*yy(i,8)
290 + + dnidt(9)*yy(i,9) + dnidt(10)*yy(i,10) + dnidt(11)*yy(i,11)
291 + + dnidt(12)*yy(i,12) + dnidt(13)*yy(i,13) + dnidt(14)*yy(i,14)
292 + + dnidt(15)*yy(i,15) + dnidt(16)*yy(i,16) + dnidt(17)*yy(i,17)
293 + + dnidt(18)*yy(i,18) + dnidt(19)*yy(i,19) + dnidt(20)*yy(i,20)
294C-----------------------------------------------------------------------
295C dz/dr; dz/ds; dz/dt
296C-----------------------------------------------------------------------
297 dzdr(i) = dnidr(1)*zz(i,1) + dnidr(2)*zz(i,2) + dnidr(3)*zz(i,3)
298 + + dnidr(4)*zz(i,4) + dnidr(5)*zz(i,5) + dnidr(6)*zz(i,6)
299 + + dnidr(7)*zz(i,7) + dnidr(8)*zz(i,8)
300 + + dnidr(9)*zz(i,9) + dnidr(10)*zz(i,10) + dnidr(11)*zz(i,11)
301 + + dnidr(12)*zz(i,12) + dnidr(13)*zz(i,13) + dnidr(14)*zz(i,14)
302 + + dnidr(15)*zz(i,15) + dnidr(16)*zz(i,16) + dnidr(17)*zz(i,17)
303 + + dnidr(18)*zz(i,18) + dnidr(19)*zz(i,19) + dnidr(20)*zz(i,20)
304C
305 dzds(i) = dnids(1)*zz(i,1) + dnids(2)*zz(i,2) + dnids(3)*zz(i,3)
306 + + dnids(4)*zz(i,4) + dnids(5)*zz(i,5) + dnids(6)*zz(i,6)
307 + + dnids(7)*zz(i,7) + dnids(8)*zz(i,8)
308 + + dnids(9)*zz(i,9) + dnids(10)*zz(i,10) + dnids(11)*zz(i,11)
309 + + dnids(12)*zz(i,12) + dnids(13)*zz(i,13) + dnids(14)*zz(i,14)
310 + + dnids(15)*zz(i,15) + dnids(16)*zz(i,16) + dnids(17)*zz(i,17)
311 + + dnids(18)*zz(i,18) + dnids(19)*zz(i,19) + dnids(20)*zz(i,20)
312C
313 dzdt(i) = dnidt(1)*zz(i,1) + dnidt(2)*zz(i,2) + dnidt(3)*zz(i,3)
314 + + dnidt(4)*zz(i,4) + dnidt(5)*zz(i,5) + dnidt(6)*zz(i,6)
315 + + dnidt(7)*zz(i,7) + dnidt(8)*zz(i,8)
316 + + dnidt(9)*zz(i,9) + dnidt(10)*zz(i,10) + dnidt(11)*zz(i,11)
317 + + dnidt(12)*zz(i,12) + dnidt(13)*zz(i,13) + dnidt(14)*zz(i,14)
318 + + dnidt(15)*zz(i,15) + dnidt(16)*zz(i,16) + dnidt(17)*zz(i,17)
319 + + dnidt(18)*zz(i,18) + dnidt(19)*zz(i,19) + dnidt(20)*zz(i,20)
320c print *,'dx y z/dr'
321c print *,DXDR(1),DYDR(1),DZDR(1)
322c print *,'dx y z/ds'
323c print *,DXDS(1),DYDS(1),DZDS(1)
324c print *,'dx y z/dt='
325c print *,DXDT(1),DYDT(1),DZDT(1)
326C-----------------------------------------------------------------------
327C -1
328C [J] Inversion du jacobien
329C-----------------------------------------------------------------------
330 drdx(i)=dyds(i)*dzdt(i)-dzds(i)*dydt(i)
331 drdy(i)=dzds(i)*dxdt(i)-dxds(i)*dzdt(i)
332 drdz(i)=dxds(i)*dydt(i)-dyds(i)*dxdt(i)
333C
334 dsdz(i)=dxdt(i)*dydr(i)-dydt(i)*dxdr(i)
335 dsdy(i)=dzdt(i)*dxdr(i)-dxdt(i)*dzdr(i)
336 dsdx(i)=dydt(i)*dzdr(i)-dzdt(i)*dydr(i)
337C
338 dtdx(i)=dydr(i)*dzds(i)-dzdr(i)*dyds(i)
339 dtdy(i)=dzdr(i)*dxds(i)-dxdr(i)*dzds(i)
340 dtdz(i)=dxdr(i)*dyds(i)-dydr(i)*dxds(i)
341C
342 detdp = dxdr(i) * drdx(i)
343 . + dydr(i) * drdy(i)
344 . + dzdr(i) * drdz(i)
345 det(i) = detdp
346 voldp(i) = w * det(i)
347 vol(i) = voldp(i)
348 IF(vol(i)<=zero)THEN
349 CALL ancmsg(msgid=484,
350 . msgtype=msgerror,
351 . anmode=aninfo,
352 . i1=ngl(i))
353 ENDIF
354C
355 ENDDO
356C
357C IF(IDTMIN(1)==1)THEN
358C ...
359C ENDIF
360C
361 DO i=lft,llt
362C-----------------------------------------------------------------------
363C -1 Inversion du jacobien suite
364C [J] et repere local r,s,t
365C-----------------------------------------------------------------------
366 d = 1./det(i)
367 drdx(i)=d*drdx(i)
368 dsdx(i)=d*dsdx(i)
369 dtdx(i)=d*dtdx(i)
370C
371 drdy(i)=d*drdy(i)
372 dsdy(i)=d*dsdy(i)
373 dtdy(i)=d*dtdy(i)
374C
375 drdz(i)=d*drdz(i)
376 dsdz(i)=d*dsdz(i)
377 dtdz(i)=d*dtdz(i)
378C-----------------------------------------------------------------------
379C |dNi/dx| -1 |dNi/dr|
380C {dNi/dy} = [J] {dNi/ds}
381C |dNi/dz| |dNi/dt|
382C-----------------------------------------------------------------------
383 px(i,1) = dnidr(1)*drdx(i) + dnids(1)*dsdx(i) + dnidt(1)*dtdx(i)
384 px(i,2) = dnidr(2)*drdx(i) + dnids(2)*dsdx(i) + dnidt(2)*dtdx(i)
385 px(i,3) = dnidr(3)*drdx(i) + dnids(3)*dsdx(i) + dnidt(3)*dtdx(i)
386 px(i,4) = dnidr(4)*drdx(i) + dnids(4)*dsdx(i) + dnidt(4)*dtdx(i)
387 px(i,5) = dnidr(5)*drdx(i) + dnids(5)*dsdx(i) + dnidt(5)*dtdx(i)
388 px(i,6) = dnidr(6)*drdx(i) + dnids(6)*dsdx(i) + dnidt(6)*dtdx(i)
389 px(i,7) = dnidr(7)*drdx(i) + dnids(7)*dsdx(i) + dnidt(7)*dtdx(i)
390 px(i,8) = dnidr(8)*drdx(i) + dnids(8)*dsdx(i) + dnidt(8)*dtdx(i)
391 px(i,9) = dnidr(9)*drdx(i) + dnids(9)*dsdx(i) + dnidt(9)*dtdx(i)
392 px(i,10)= dnidr(10)*drdx(i)+ dnids(10)*dsdx(i)+dnidt(10)*dtdx(i)
393 px(i,11)= dnidr(11)*drdx(i)+ dnids(11)*dsdx(i)+dnidt(11)*dtdx(i)
394 px(i,12)= dnidr(12)*drdx(i)+ dnids(12)*dsdx(i)+dnidt(12)*dtdx(i)
395 px(i,13)= dnidr(13)*drdx(i)+ dnids(13)*dsdx(i)+dnidt(13)*dtdx(i)
396 px(i,14)= dnidr(14)*drdx(i)+ dnids(14)*dsdx(i)+dnidt(14)*dtdx(i)
397 px(i,15)= dnidr(15)*drdx(i)+ dnids(15)*dsdx(i)+dnidt(15)*dtdx(i)
398 px(i,16)= dnidr(16)*drdx(i)+ dnids(16)*dsdx(i)+dnidt(16)*dtdx(i)
399 px(i,17)= dnidr(17)*drdx(i)+ dnids(17)*dsdx(i)+dnidt(17)*dtdx(i)
400 px(i,18)= dnidr(18)*drdx(i)+ dnids(18)*dsdx(i)+dnidt(18)*dtdx(i)
401 px(i,19)= dnidr(19)*drdx(i)+ dnids(19)*dsdx(i)+dnidt(19)*dtdx(i)
402 px(i,20)= dnidr(20)*drdx(i)+ dnids(20)*dsdx(i)+dnidt(20)*dtdx(i)
403C
404 py(i,1) = dnidr(1)*drdy(i) + dnids(1)*dsdy(i) + dnidt(1)*dtdy(i)
405 pz(i,1) = dnidr(1)*drdz(i) + dnids(1)*dsdz(i) + dnidt(1)*dtdz(i)
406 py(i,2) = dnidr(2)*drdy(i) + dnids(2)*dsdy(i) + dnidt(2)*dtdy(i)
407 py(i,3) = dnidr(3)*drdy(i) + dnids(3)*dsdy(i) + dnidt(3)*dtdy(i)
408 py(i,4) = dnidr(4)*drdy(i) + dnids(4)*dsdy(i) + dnidt(4)*dtdy(i)
409 py(i,5) = dnidr(5)*drdy(i) + dnids(5)*dsdy(i) + dnidt(5)*dtdy(i)
410 py(i,6) = dnidr(6)*drdy(i) + dnids(6)*dsdy(i) + dnidt(6)*dtdy(i)
411 py(i,7) = dnidr(7)*drdy(i) + dnids(7)*dsdy(i) + dnidt(7)*dtdy(i)
412 py(i,8) = dnidr(8)*drdy(i) + dnids(8)*dsdy(i) + dnidt(8)*dtdy(i)
413 py(i,9) = dnidr(9)*drdy(i) + dnids(9)*dsdy(i) + dnidt(9)*dtdy(i)
414 py(i,10)= dnidr(10)*drdy(i)+ dnids(10)*dsdy(i)+dnidt(10)*dtdy(i)
415 py(i,11)= dnidr(11)*drdy(i)+ dnids(11)*dsdy(i)+dnidt(11)*dtdy(i)
416 py(i,12)= dnidr(12)*drdy(i)+ dnids(12)*dsdy(i)+dnidt(12)*dtdy(i)
417 py(i,13)= dnidr(13)*drdy(i)+ dnids(13)*dsdy(i)+dnidt(13)*dtdy(i)
418 py(i,14)= dnidr(14)*drdy(i)+ dnids(14)*dsdy(i)+dnidt(14)*dtdy(i)
419 py(i,15)= dnidr(15)*drdy(i)+ dnids(15)*dsdy(i)+dnidt(15)*dtdy(i)
420 py(i,16)= dnidr(16)*drdy(i)+ dnids(16)*dsdy(i)+dnidt(16)*dtdy(i)
421 py(i,17)= dnidr(17)*drdy(i)+ dnids(17)*dsdy(i)+dnidt(17)*dtdy(i)
422 py(i,18)= dnidr(18)*drdy(i)+ dnids(18)*dsdy(i)+dnidt(18)*dtdy(i)
423 py(i,19)= dnidr(19)*drdy(i)+ dnids(19)*dsdy(i)+dnidt(19)*dtdy(i)
424 py(i,20)= dnidr(20)*drdy(i)+ dnids(20)*dsdy(i)+dnidt(20)*dtdy(i)
425C
426 pz(i,1) = dnidr(1)*drdz(i) + dnids(1)*dsdz(i) + dnidt(1)*dtdz(i)
427 pz(i,2) = dnidr(2)*drdz(i) + dnids(2)*dsdz(i) + dnidt(2)*dtdz(i)
428 pz(i,3) = dnidr(3)*drdz(i) + dnids(3)*dsdz(i) + dnidt(3)*dtdz(i)
429 pz(i,4) = dnidr(4)*drdz(i) + dnids(4)*dsdz(i) + dnidt(4)*dtdz(i)
430 pz(i,5) = dnidr(5)*drdz(i) + dnids(5)*dsdz(i) + dnidt(5)*dtdz(i)
431 pz(i,6) = dnidr(6)*drdz(i) + dnids(6)*dsdz(i) + dnidt(6)*dtdz(i)
432 pz(i,7) = dnidr(7)*drdz(i) + dnids(7)*dsdz(i) + dnidt(7)*dtdz(i)
433 pz(i,8) = dnidr(8)*drdz(i) + dnids(8)*dsdz(i) + dnidt(8)*dtdz(i)
434 py(i,9) = dnidr(9)*drdy(i) + dnids(9)*dsdy(i) + dnidt(9)*dtdy(i)
435 pz(i,9) = dnidr(9)*drdz(i) + dnids(9)*dsdz(i) + dnidt(9)*dtdz(i)
436 pz(i,10)= dnidr(10)*drdz(i)+ dnids(10)*dsdz(i)+dnidt(10)*dtdz(i)
437 pz(i,11)= dnidr(11)*drdz(i)+ dnids(11)*dsdz(i)+dnidt(11)*dtdz(i)
438 pz(i,12)= dnidr(12)*drdz(i)+ dnids(12)*dsdz(i)+dnidt(12)*dtdz(i)
439 pz(i,13)= dnidr(13)*drdz(i)+ dnids(13)*dsdz(i)+dnidt(13)*dtdz(i)
440 pz(i,14)= dnidr(14)*drdz(i)+ dnids(14)*dsdz(i)+dnidt(14)*dtdz(i)
441 pz(i,15)= dnidr(15)*drdz(i)+ dnids(15)*dsdz(i)+dnidt(15)*dtdz(i)
442 pz(i,16)= dnidr(16)*drdz(i)+ dnids(16)*dsdz(i)+dnidt(16)*dtdz(i)
443 pz(i,17)= dnidr(17)*drdz(i)+ dnids(17)*dsdz(i)+dnidt(17)*dtdz(i)
444 pz(i,18)= dnidr(18)*drdz(i)+ dnids(18)*dsdz(i)+dnidt(18)*dtdz(i)
445 pz(i,19)= dnidr(19)*drdz(i)+ dnids(19)*dsdz(i)+dnidt(19)*dtdz(i)
446 pz(i,20)= dnidr(20)*drdz(i)+ dnids(20)*dsdz(i)+dnidt(20)*dtdz(i)
447C
448 ENDDO
449C
450C
451C
452 IF(ip==1)THEN
453 DO n=1,20
454 DO i=lft,llt
455 ul(i,n) = zero
456 ENDDO
457 ENDDO
458 DO i=lft,llt
459 volg(i) = zero
460 ENDDO
461 ENDIF
462C
463 DO n=1,20
464 DO i=lft,llt
465 ul(i,n) = ul(i,n) + vol(i) *
466 . ( px(i,n)*px(i,n) + py(i,n)*py(i,n) + pz(i,n)*pz(i,n) )
467 ENDDO
468 ENDDO
469 DO i=lft,llt
470 volg(i) = volg(i) + vol(i)
471 ENDDO
472C
473 IF(ip==nip)THEN
474 DO i=lft,llt
475 aa = max(ul(i,1),ul(i,2),ul(i,3),ul(i,4),
476 . ul(i,5),ul(i,6),ul(i,7),ul(i,8))
477 bb = max(ul(i,9),ul(i,10),ul(i,11),ul(i,12),ul(i,13),ul(i,14),
478 . ul(i,15),ul(i,16),ul(i,17),ul(i,18),ul(i,19),ul(i,20))
479 deltax2(i) = aa/max(aa,bb)
480C 64,64/5 cf s20mass3 (rapport des masses noeuds sommet/milieu)
481 aa = aa*sixty4
482 bb = bb*eighty16/seven
483 deltax(i) = sqrt(two*volg(i)/max(aa,bb))
484 ENDDO
485 ELSE
486 DO i=lft,llt
487 deltax2(i) = one
488 deltax(i) =ep20
489 ENDDO
490 ENDIF
491C
492 1000 FORMAT(/' ZERO OR NEGATIVE VOLUME : 3D-ELEMENT NB',i10/)
493 2000 FORMAT(/' ZERO OR NEGATIVE VOLUME : DELETE 3D-ELEMENT NB',i10/)
494C
495 RETURN
#define my_real
Definition cppsort.cpp:32
#define max(a, b)
Definition macros.h:21
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
Definition message.F:889

◆ s20rst()

subroutine s20rst ( r,
s,
t,
ni,
dnidr,
dnids,
dnidt )

Definition at line 503 of file s20deri3.F.

505C-----------------------------------------------
506C I m p l i c i t T y p e s
507C-----------------------------------------------
508#include "implicit_f.inc"
509C-----------------------------------------------
510C D u m m y A r g u m e n t s
511C-----------------------------------------------
512 my_real
513 1 r,s,t,
514 2 ni(20) ,dnidr(20),dnids(20),dnidt(20)
515C-----------------------------------------------
516C L o c a l V a r i a b l e s
517C-----------------------------------------------
518 INTEGER I
519 my_real
520 . u_m_r,u_p_r,u_m_s,u_p_s,u_m_t,u_p_t,
521 . ums_umt,ums_upt,ups_umt,ups_upt,
522 . umr_ums,umr_ups,upr_ums,upr_ups,
523 . umt_umr,umt_upr,upt_umr,upt_upr,
524 . a
525C-----------------------------------------------
526C
527C
528C
529C ^ S _ T
530C | /|
531C | /
532C 7 | 18 /
533C O-------|--O----------O 6
534C /. | / /|
535C / . | / |
536C 19 O . / 17 O |
537C / O 15 | / O 14
538C / . 20 / 5 / |
539C 8 O----------O----------O |
540C R <------|- - -.- - - -+ 10 | |
541C | O..........O....|.....O 2
542C | . 3 | /
543C 16 O . 13 O /
544C | O 11 | O
545C | . | / 9
546C |. |/
547C O----------O----------O
548C 4 12 1
549C
550C
551C
552C
553C-----------------------------------------------
554C ro = r ri so = s si to = t ti
555C
556C i=1,8
557C ri=+-1 si=+-1 ti=+-1
558C Ni = 1/8 (1+ro)(1+so)(1+to)(ro+so+to-2)
559C dNi/dr = ri/8 (1+so)(1+to)(2ro+so+to-1)
560C dNi/ds = si/8 (1+to)(1+ro)(2so+to+ro-1)
561C dNi/dt = ti/8 (1+ro)(1+so)(2to+ro+so-1)
562C
563C i=10;12;18;20
564C ri=0 si=+-1 ti=+-1
565C Ni = 1/4 (1-r^2)(1+so)(1+to)
566C dNi/dr = -r/2 (1+so)(1+to)
567C dNi/ds = si/4 (1-r^2)(1+to)
568C dNi/dt = ti/4 (1-r^2)(1+so)
569C
570C i=13,16
571C ri=+-1 si=0 ti=+-1
572C Ni = 1/4 (1-s^2)(1+to)(1+ro)
573C dNi/dr = ri/4 (1-s^2)(1+to)
574C dNi/ds = -s/2 (1+to)(1+ro)
575C dNi/dt = ti/4 (1-s^2)(1+ro)
576C
577C i=9;11;17;19
578C ri=+-1 si=+-1 ti=0
579C Ni = 1/4 (1-t^2)(1+ro)(1+so)
580C dNi/dr = ri/4 (1-t^2)(1+so)
581C dNi/ds = si/4 (1-t^2)(1+ro)
582C dNi/dt = -t/2 (1+ro)(1+so)
583C-----------------------------------------------
584C i ri si ti Ni
585C--------------------------------------------------------------------
586C 1 -1 -1 -1 1/8(1-r)(1-s)(1-t)(-r-s-t-2)
587C 2 -1 -1 +1 1/8(1-r)(1-s)(1+t)(-r-s+t-2)
588C 3 +1 -1 +1 1/8(1+r)(1-s)(1+t)(+r-s+t-2)
589C 4 +1 -1 -1 1/8(1+r)(1-s)(1-t)(+r-s-t-2)
590C 5 -1 +1 -1 1/8(1-r)(1+s)(1-t)(-r+s-t-2)
591C 6 -1 +1 +1 1/8(1-r)(1+s)(1+t)(-r+s+t-2)
592C 7 +1 +1 +1 1/8(1+r)(1+s)(1+t)(+r+s+t-2)
593C 8 +1 +1 -1 1/8(1+r)(1+s)(1-t)(+r+s-t-2)
594C 9 -1 -1 0 1/4(1-t^2)(1-r)(1-s)
595C 10 0 -1 +1 1/4(1-r^2)(1-s)(1+t)
596C 11 +1 -1 0 1/4(1-t^2)(1+r)(1-s)
597C 12 0 -1 -1 1/4(1-r^2)(1-s)(1-t)
598C 13 -1 0 -1 1/4(1-s^2)(1-t)(1-r)
599C 14 -1 0 +1 1/4(1-s^2)(1+t)(1-r)
600C 15 +1 0 +1 1/4(1-s^2)(1+t)(1+r)
601C 16 +1 0 -1 1/4(1-s^2)(1-t)(1+r)
602C 17 -1 +1 0 1/4(1-t^2)(1-r)(1+s)
603C 18 0 +1 +1 1/4(1-r^2)(1+s)(1+t)
604C 19 +1 +1 0 1/4(1-t^2)(1+r)(1+s)
605C 20 0 +1 -1 1/4(1-r^2)(1+s)(1-t)
606C-----------------------------------------------
607C i ri si ti dNi/dr
608C--------------------------------------------------------------------
609C 1 -1 -1 -1 -1/8(1-s)(1-t)(-2r-s-t-1)
610C 2 -1 -1 +1 -1/8(1-s)(1+t)(-2r-s+t-1)
611C 3 +1 -1 +1 1/8(1-s)(1+t)(+2r-s+t-1)
612C 4 +1 -1 -1 1/8(1-s)(1-t)(+2r-s-t-1)
613C 5 -1 +1 -1 -1/8(1+s)(1-t)(-2r+s-t-1)
614C 6 -1 +1 +1 -1/8(1+s)(1+t)(-2r+s+t-1)
615C 7 +1 +1 +1 1/8(1+s)(1+t)(+2r+s+t-1)
616C 8 +1 +1 -1 1/8(1+s)(1-t)(+2r+s-t-1)
617C 9 -1 -1 0 -1/4 (1-t^2)(1-s)
618C 10 0 -1 +1 -1/2 r(1-s)(1+t)
619C 11 +1 -1 0 1/4 (1-t^2)(1-s)
620C 12 0 -1 -1 -1/2 r(1-s)(1-t)
621C 13 -1 0 -1 -1/4 (1-s^2)(1-t)
622C 14 -1 0 +1 -1/4 (1-s^2)(1+t)
623C 15 +1 0 +1 1/4 (1-s^2)(1+t)
624C 16 +1 0 -1 1/4 (1-s^2)(1-t)
625C 17 -1 +1 0 -1/4 (1-t^2)(1+s)
626C 18 0 +1 +1 -1/2 r(1+s)(1+t)
627C 19 +1 +1 0 1/4 (1-t^2)(1+s)
628C 20 0 +1 -1 -1/2 r(1+s)(1-t)
629C-----------------------------------------------
630C
631 u_m_r = half*(one -r)
632 u_p_r = half*(one +r)
633
634C
635 u_m_s = half*(one -s)
636 u_p_s = half*(one +s)
637C
638 u_m_t = half*(one -t)
639 u_p_t = half*(one +t)
640C
641 ums_umt = u_m_s * u_m_t
642 ums_upt = u_m_s * u_p_t
643 ups_umt = u_p_s * u_m_t
644 ups_upt = u_p_s * u_p_t
645C
646 umr_ums = u_m_r * u_m_s
647 umr_ups = u_m_r * u_p_s
648 upr_ums = u_p_r * u_m_s
649 upr_ups = u_p_r * u_p_s
650C
651 umt_umr = u_m_t * u_m_r
652 umt_upr = u_m_t * u_p_r
653 upt_umr = u_p_t * u_m_r
654 upt_upr = u_p_t * u_p_r
655C
656 ni(1) = u_m_r * ums_umt * (-r-s-t-2.)
657 ni(1) = u_m_r * ums_umt * (-r-s-t-2.)
658 ni(2) = u_m_r * ums_upt * (-r-s+t-2.)
659 ni(3) = u_p_r * ums_upt * ( r-s+t-2.)
660 ni(4) = u_p_r * ums_umt * ( r-s-t-2.)
661 ni(5) = u_m_r * ups_umt * (-r+s-t-2.)
662 ni(6) = u_m_r * ups_upt * (-r+s+t-2.)
663 ni(7) = u_p_r * ups_upt * ( r+s+t-2.)
664 ni(8) = u_p_r * ups_umt * ( r+s-t-2.)
665C
666C
667C
668 dnidr(1) = -ums_umt * (u_m_s + u_m_t - r -three_half)
669 dnidr(2) = -ums_upt * (u_m_s + u_p_t - r -three_half)
670 dnidr(3) = ums_upt * (u_m_s + u_p_t + r -three_half)
671 dnidr(4) = ums_umt * (u_m_s + u_m_t + r -three_half)
672 dnidr(5) = -ups_umt * (u_p_s + u_m_t - r -three_half)
673 dnidr(6) = -ups_upt * (u_p_s + u_p_t - r -three_half)
674 dnidr(7) = ups_upt * (u_p_s + u_p_t + r -three_half)
675 dnidr(8) = ups_umt * (u_p_s + u_m_t + r -three_half)
676C
677 dnids(1) = -umt_umr * (u_m_r + u_m_t - s -three_half)
678 dnids(2) = -upt_umr * (u_m_r + u_p_t - s -three_half)
679 dnids(3) = -upt_upr * (u_p_r + u_p_t - s -three_half)
680 dnids(4) = -umt_upr * (u_p_r + u_m_t - s -three_half)
681 dnids(5) = umt_umr * (u_m_r + u_m_t + s -three_half)
682 dnids(6) = upt_umr * (u_m_r + u_p_t + s -three_half)
683 dnids(7) = upt_upr * (u_p_r + u_p_t + s -three_half)
684 dnids(8) = umt_upr * (u_p_r + u_m_t + s -three_half)
685C
686 dnidt(1) = -umr_ums * (u_m_r + u_m_s - t -three_half)
687 dnidt(2) = umr_ums * (u_m_r + u_m_s + t -three_half)
688 dnidt(3) = upr_ums * (u_p_r + u_m_s + t -three_half)
689 dnidt(4) = -upr_ums * (u_p_r + u_m_s - t -three_half)
690 dnidt(5) = -umr_ups * (u_m_r + u_p_s - t -three_half)
691 dnidt(6) = umr_ups * (u_m_r + u_p_s + t -three_half)
692 dnidt(7) = upr_ups * (u_p_r + u_p_s + t -three_half)
693 dnidt(8) = -upr_ups * (u_p_r + u_p_s - t -three_half)
694C------------------------------------
695 a = (one-r*r)
696 ni(10) = a * ums_upt
697 ni(12) = a * ums_umt
698 ni(18) = a * ups_upt
699 ni(20) = a * ups_umt
700C
701 a = half*a
702 dnidt(10) = a * u_m_s
703 dnidt(18) = a * u_p_s
704 dnidt(12) = -dnidt(10)
705 dnidt(20) = -dnidt(18)
706C
707 dnids(18) = a * u_p_t
708 dnids(20) = a * u_m_t
709 dnids(10) = -dnids(18)
710 dnids(12) = -dnids(20)
711C
712 a = -two*r
713 dnidr(10) = a * ums_upt
714 dnidr(12) = a * ums_umt
715 dnidr(18) = a * ups_upt
716 dnidr(20) = a * ups_umt
717C------------------------------------
718 a = (one - s*s)
719 ni(13) = a * umt_umr
720 ni(14) = a * upt_umr
721 ni(15) = a * upt_upr
722 ni(16) = a * umt_upr
723C
724 a = half*a
725 dnidr(15) = a * u_p_t
726 dnidr(16) = a * u_m_t
727 dnidr(13) = -dnidr(16)
728 dnidr(14) = -dnidr(15)
729C
730 dnidt(14) = a * u_m_r
731 dnidt(15) = a * u_p_r
732 dnidt(13) = -dnidt(14)
733 dnidt(16) = -dnidt(15)
734C
735 a = -two*s
736 dnids(13) = a * umt_umr
737 dnids(14) = a * upt_umr
738 dnids(15) = a * upt_upr
739 dnids(16) = a * umt_upr
740C------------------------------------
741 a = (one-t*t)
742 ni(9) = a * umr_ums
743 ni(11) = a * upr_ums
744 ni(17) = a * umr_ups
745 ni(19) = a * upr_ups
746C
747 a = half*a
748 dnidr(11) = a * u_m_s
749 dnidr(19) = a * u_p_s
750 dnidr(9) = -dnidr(11)
751 dnidr(17) = -dnidr(19)
752C
753 dnids(17) = a * u_m_r
754 dnids(19) = a * u_p_r
755 dnids(9) = -dnids(17)
756 dnids(11) = -dnids(19)
757C
758 a = -two*t
759 dnidt(9) = a * umr_ums
760 dnidt(11) = a * upr_ums
761 dnidt(17) = a * umr_ups
762 dnidt(19) = a * upr_ups
763 RETURN