OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
s16deri3.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| s16deri3 ../starter/source/elements/thickshell/solide16/s16deri3.F
25!||--- called by ------------------------------------------------------
26!|| s16init3 ../starter/source/elements/thickshell/solide16/s16init3.f
27!||--- calls -----------------------------------------------------
28!|| ancmsg ../starter/source/output/message/message.F
29!||--- uses -----------------------------------------------------
30!|| message_mod ../starter/share/message_module/message_mod.F
31!||====================================================================
32 SUBROUTINE s16deri3(NGL,OFF,R,S,T ,W ,
33 2 DNIDR ,DNIDS ,DNIDT ,DXDR ,DYDR ,DZDR ,
34 3 DXDS ,DYDS ,DZDS ,DXDT ,DYDT ,DZDT ,
35 4 XX ,YY ,ZZ ,PX ,PY ,PZ ,
36 5 VOL ,DELTAX,KXX ,NI ,VOLG ,UL ,VOLDP)
37 USE message_mod
38C-----------------------------------------------
39C I m p l i c i t T y p e s
40C-----------------------------------------------
41#include "implicit_f.inc"
42C-----------------------------------------------
43C G l o b a l P a r a m e t e r s
44C-----------------------------------------------
45#include "mvsiz_p.inc"
46C-----------------------------------------------
47C D u m m y A r g u m e n t s
48C-----------------------------------------------
49 INTEGER NGL(*)
50C REAL
51 my_real
52 . R,S,T,W,
53 . dnidr(16),dnids(16),dnidt(16),dxdr(*),dydr(*),dzdr(*),
54 . dxds(*),dyds(*),dzds(*),dxdt(*),dydt(*),dzdt(*),
55 . drdx(mvsiz), dsdx(mvsiz), dtdx(mvsiz),
56 . drdy(mvsiz), dsdy(mvsiz), dtdy(mvsiz),
57 . drdz(mvsiz), dsdz(mvsiz), dtdz(mvsiz),
58 . xx(mvsiz,16),yy(mvsiz,16),zz(mvsiz,16),
59 . px(mvsiz,16),py(mvsiz,16),pz(mvsiz,16),
60 . vol(*),off(*),deltax(*),volg(mvsiz) ,
61 . kxx(mvsiz,16),ni(16),ul(mvsiz,16)
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
72 my_real
73 . D, AA, BB, DET(MVSIZ),R9 ,R13 ,S9 ,S10 ,S11 ,S12 ,T10 ,T14
74C-----------------------------------------------
75C
76C
77C
78C ^ S _ T
79C | /|
80C | /
81C 7 | 14 /
82C O-----------|-----O-----------------O 6
83C /. | / /|
84C / . | / / |
85C / . | / |
86C / . | / / |
87C / . | / / |
88C 15 O . * + * * O |
89C / . | / / 13 |
90C / . / / |
91C / | + / |
92C / .# # / # / |
93C / . * 16 | * / * |
94C 8 O-----------------O-----------------O 5 |
95C | . | / | |
96C | @ . @ @ | |
97C R <------|- - -+ - - -#- - - - - # - - - - -#|- - -+ |
98C | . * / * | * |
99C | . 3 | 10 | |
100C | O......../.. .....O.....|...........O 2
101C | @ ' @ | @ | /
102C | ' # / # #| /
103C | ' + | | /
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)==========|===(14)===============( 6)
126C //| | / //|
127C // | | / //||
128C // | | // ||
129C // | | / // ||
130C // | | / // ||
131C (15) | *- - - + - * - - - - -* (13) ||
132C // | /| | /| / /| // ||
133C // | / // ||
134C // | / | |/ | + / // ||
135C // |#- - - - - # - -/- - -# // ||
136C // | * - - /|- -*- - -/ -//* ||
137C ( 8)===============(16)==============( 5) ||
138C || / || / | / | / | / ||| | ||
139C || @- | - - - @ - - - - -@ || ||
140C R <-----||- - -+ -|- -# - - -| - # - - -|- -#|| - -+ ||
141C || | * - - /| - *- - -/-|| * ||
142C || | || / | / | |||/ ||
143C || ( 3)-------/--|---(10)----||---------( 2)
144C || @ /- / - - @ - -/ - - @ || //
145C || |/ #- - -/| - # - - -|- -#|| //
146C || / / + /| / || //
147C || /| | | || //
148C || / / / | / || //
149C || (11) @- - - - - @ - + - - -@ || ( 9)
150C || / || //
151C || / || //
152C || / || //
153C || / ||//
154C ||/ ||/
155C ( 4)===============(12)==============( 1)
156C
157C
158C
159C
160C
161C*/
162C-----------------------------------------------
163C
164C _
165C \
166C f = /_ (fi * Ni)
167C _
168C \
169C df/dx = /_ (fi * dNi/dx)
170C
171C dNi/dx = dNi/dr dr/dx + dNi/ds ds/dx + dNi/dt dt/dx
172C
173C-----------------------------------------------
174C _
175C \
176C x(r,s,t) = /_ (xi * Ni(r,s,t))
177C _
178C \
179C y(r,s,t) = /_ (yi * Ni(r,s,t))
180C _
181C \
182C z(r,s,t) = /_ zi * Ni(r,s,t))
183C
184C _
185C \
186C dx/dr = /_ (xi * dNi/dr)
187C ...
188C
189C [dx/dr dy/dr dz/dr]
190C [J] = |dx/ds dy/ds dz/ds|
191C [dx/dt dy/dt dz/dt]
192C
193C |dNi/dx| -1 |dNi/dr|
194C {dNi/dy} = [J] {dNi/ds}
195C |dNi/dz| |dNi/dt|
196C
197C
198C [dNi/dx 0 0 ]
199C | 0 dNi/dy 0 |
200C [Bi] = | 0 0 dNi/dz|
201C |dNi/dy dNi/dx 0 |
202C | 0 dNi/dz dNi/dy|
203C [dNi/dz 0 dNi/dx]
204C
205C
206C [dNi/dx 0 0 dNi/dy 0 dNi/dz]
207C [Bi]t = | 0 dNi/dy 0 dNi/dx dNi/dz 0 |
208C [ 0 0 dNi/dz 0 dNi/dy dNi/dx]
209C
210C [D11 D12 D12 0 0 0 ]
211C |D12 D11 D12 0 0 0 |
212C [D] = |D12 D12 D11 0 0 0 |
213C | 0 0 0 G 0 0 |
214C | 0 0 0 0 G 0 |
215C [ 0 0 0 0 0 G ]
216C
217C [D11*dNi/dx D12*dNi/dx D12*dNi/dx G*dNi/dy 0 G*dNi/dz]
218C [Bi]t [D] = |D12*dNi/dy D11*dNi/dy D12*dNi/dy G*dNi/dx G*dNi/dz 0 |
219C [D12*dNi/dz D12*dNi/dz D11*dNi/dz 0 G*dNi/dy G*dNi/dx]
220C _
221C / t
222C eps = [B] u sig = [D] eps F = _/ [B] sig dvol
223C
224C _
225C / t
226C [Kij] = _/ [Bi] [D] [Bj] dvol
227C
228C
229C
230C [ D11*dNi/dx*dNj/dx D12*dNi/dx*dNj/dy D12*dNi/dx*dNj/dz ]
231C | + G*dNi/dy*dNj/dy + G*dNi/dy*dNj/dx + G*dNi/dz*dNj/dx |
232C | + G*dNi/dz*dNj/dz |
233C [Kij] | D11*dNi/dy*dNj/dy D12*dNi/dy*dNj/dz |
234C ---- = | D12*dNi/dy*dNj/dx + G*dNi/dx*dNj/dx + G*dNi/dz*dNj/dy |
235C Volp | + G*dNi/dx*dNj/dy + G*dNi/dz*dNj/dz |
236C | D11*dNi/dz*dNj/dz |
237C | D12*dNi/dz*dNj/dx D12*dNi/dz*dNj/dy + G*dNi/dy*dNj/dy |
238C [ + G*dNi/dx*dNj/dz + G*dNi/dy*dNj/dz + G*dNi/dx*dNj/dx ]
239C
240C-----------------------------------------------
241C-----------------------------------------------------------------------
242C dx/dr; dx/ds; dx/dt
243C-----------------------------------------------------------------------
244 DO i=lft,llt
245C
246 dxdr(i) = dnidr(1)*xx(i,1) + dnidr(2)*xx(i,2) + dnidr(3)*xx(i,3)
247 + + dnidr(4)*xx(i,4) + dnidr(5)*xx(i,5) + dnidr(6)*xx(i,6)
248 + + dnidr(7)*xx(i,7) + dnidr(8)*xx(i,8)
249 + + dnidr(9)*(xx(i,9) - xx(i,11)) + dnidr(10)*xx(i,10)
250 + + dnidr(12)*xx(i,12) + dnidr(13)*(xx(i,13) - xx(i,15))
251 + + dnidr(14)*xx(i,14) + dnidr(16)*xx(i,16)
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) - xx(i,13))
257 + + dnids(10)*(xx(i,10) - xx(i,14))
258 + + dnids(11)*(xx(i,11) - xx(i,15))
259 + + dnids(12)*(xx(i,12) - xx(i,16))
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) - xx(i,12))
265 + + dnidt(11)*xx(i,11) + dnidt(13)*xx(i,13)
266 + + dnidt(14)*(xx(i,14) - xx(i,16)) + dnidt(15)*xx(i,15)
267C-----------------------------------------------------------------------
268C dy/dr; dy/ds; dy/dt
269C-----------------------------------------------------------------------
270 dydr(i) = dnidr(1)*yy(i,1) + dnidr(2)*yy(i,2) + dnidr(3)*yy(i,3)
271 + + dnidr(4)*yy(i,4) + dnidr(5)*yy(i,5) + dnidr(6)*yy(i,6)
272 + + dnidr(7)*yy(i,7) + dnidr(8)*yy(i,8)
273 + + dnidr(9)*(yy(i,9) - yy(i,11)) + dnidr(10)*yy(i,10)
274 + + dnidr(12)*yy(i,12) + dnidr(13)*(yy(i,13) - yy(i,15))
275 + + dnidr(14)*yy(i,14) + dnidr(16)*yy(i,16)
276C
277 dyds(i) = dnids(1)*yy(i,1) + dnids(2)*yy(i,2) + dnids(3)*yy(i,3)
278 + + dnids(4)*yy(i,4) + dnids(5)*yy(i,5) + dnids(6)*yy(i,6)
279 + + dnids(7)*yy(i,7) + dnids(8)*yy(i,8)
280 + + dnids(9)* (yy(i,9) - yy(i,13))
281 + + dnids(10)*(yy(i,10) - yy(i,14))
282 + + dnids(11)*(yy(i,11) - yy(i,15))
283 + + dnids(12)*(yy(i,12) - yy(i,16))
284C
285 dydt(i) = dnidt(1)*yy(i,1) + dnidt(2)*yy(i,2) + dnidt(3)*yy(i,3)
286 + + dnidt(4)*yy(i,4) + dnidt(5)*yy(i,5) + dnidt(6)*yy(i,6)
287 + + dnidt(7)*yy(i,7) + dnidt(8)*yy(i,8)
288 + + dnidt(9)*yy(i,9) + dnidt(10)*(yy(i,10) - yy(i,12))
289 + + dnidt(11)*yy(i,11) + dnidt(13)*yy(i,13)
290 + + dnidt(14)*(yy(i,14) - yy(i,16)) + dnidt(15)*yy(i,15)
291C-----------------------------------------------------------------------
292C dz/dr; dz/ds; dz/dt
293C-----------------------------------------------------------------------
294 dzdr(i) = dnidr(1)*zz(i,1) + dnidr(2)*zz(i,2) + dnidr(3)*zz(i,3)
295 + + dnidr(4)*zz(i,4) + dnidr(5)*zz(i,5) + dnidr(6)*zz(i,6)
296 + + dnidr(7)*zz(i,7) + dnidr(8)*zz(i,8)
297 + + dnidr(9)*(zz(i,9) - zz(i,11)) + dnidr(10)*zz(i,10)
298 + + dnidr(12)*zz(i,12) + dnidr(13)*(zz(i,13) - zz(i,15))
299 + + dnidr(14)*zz(i,14) + dnidr(16)*zz(i,16)
300C
301 dzds(i) = dnids(1)*zz(i,1) + dnids(2)*zz(i,2) + dnids(3)*zz(i,3)
302 + + dnids(4)*zz(i,4) + dnids(5)*zz(i,5) + dnids(6)*zz(i,6)
303 + + dnids(7)*zz(i,7) + dnids(8)*zz(i,8)
304 + + dnids(9)* (zz(i,9) - zz(i,13))
305 + + dnids(10)*(zz(i,10) - zz(i,14))
306 + + dnids(11)*(zz(i,11) - zz(i,15))
307 + + dnids(12)*(zz(i,12) - zz(i,16))
308C
309 dzdt(i) = dnidt(1)*zz(i,1) + dnidt(2)*zz(i,2) + dnidt(3)*zz(i,3)
310 + + dnidt(4)*zz(i,4) + dnidt(5)*zz(i,5) + dnidt(6)*zz(i,6)
311 + + dnidt(7)*zz(i,7) + dnidt(8)*zz(i,8)
312 + + dnidt(9)*zz(i,9) + dnidt(10)*(zz(i,10) - zz(i,12))
313 + + dnidt(11)*zz(i,11) + dnidt(13)*zz(i,13)
314 + + dnidt(14)*(zz(i,14) - zz(i,16)) + dnidt(15)*zz(i,15)
315c print *,'dx y z/dr'
316c print *,DXDR(1),DYDR(1),DZDR(1)
317c print *,'dx y z/ds'
318c print *,DXDS(1),DYDS(1),DZDS(1)
319c print *,'dx y z/dt='
320c print *,DXDT(1),DYDT(1),DZDT(1)
321C-----------------------------------------------------------------------
322C -1
323C [J] Inversion du jacobien
324C-----------------------------------------------------------------------
325 drdx(i)=dyds(i)*dzdt(i)-dzds(i)*dydt(i)
326 drdy(i)=dzds(i)*dxdt(i)-dxds(i)*dzdt(i)
327 drdz(i)=dxds(i)*dydt(i)-dyds(i)*dxdt(i)
328C
329 dsdz(i)=dxdt(i)*dydr(i)-dydt(i)*dxdr(i)
330 dsdy(i)=dzdt(i)*dxdr(i)-dxdt(i)*dzdr(i)
331 dsdx(i)=dydt(i)*dzdr(i)-dzdt(i)*dydr(i)
332C
333 dtdx(i)=dydr(i)*dzds(i)-dzdr(i)*dyds(i)
334 dtdy(i)=dzdr(i)*dxds(i)-dxdr(i)*dzds(i)
335 dtdz(i)=dxdr(i)*dyds(i)-dydr(i)*dxds(i)
336C
337 detdp = dxdr(i) * drdx(i)
338 . + dydr(i) * drdy(i)
339 . + dzdr(i) * drdz(i)
340 det(i) = detdp
341 voldp(i) = w * detdp
342 vol(i) = voldp(i)
343C
344 IF(vol(i)<=zero)THEN
345 CALL ancmsg(msgid=483,
346 . msgtype=msgerror,
347 . anmode=aninfo,
348 . i1=ngl(i))
349 ENDIF
350 ENDDO
351C
352C IF(IDTMIN(1)==1)THEN
353C ...
354C ENDIF
355C
356 DO i=lft,llt
357C-----------------------------------------------------------------------
358C -1 Inversion du jacobien suite
359C [J] et repere local r,s,t
360C-----------------------------------------------------------------------
361 d = 1./det(i)
362 drdx(i)=d*drdx(i)
363 dsdx(i)=d*dsdx(i)
364 dtdx(i)=d*dtdx(i)
365C
366 drdy(i)=d*drdy(i)
367 dsdy(i)=d*dsdy(i)
368 dtdy(i)=d*dtdy(i)
369C
370 drdz(i)=d*drdz(i)
371 dsdz(i)=d*dsdz(i)
372 dtdz(i)=d*dtdz(i)
373C-----------------------------------------------------------------------
374C |dNi/dx| -1 |dNi/dr|
375C {dNi/dy} = [J] {dNi/ds}
376C |dNi/dz| |dNi/dt|
377C-----------------------------------------------------------------------
378 px(i,1) = dnidr(1)*drdx(i) + dnids(1)*dsdx(i) + dnidt(1)*dtdx(i)
379 px(i,2) = dnidr(2)*drdx(i) + dnids(2)*dsdx(i) + dnidt(2)*dtdx(i)
380 px(i,3) = dnidr(3)*drdx(i) + dnids(3)*dsdx(i) + dnidt(3)*dtdx(i)
381 px(i,4) = dnidr(4)*drdx(i) + dnids(4)*dsdx(i) + dnidt(4)*dtdx(i)
382 px(i,5) = dnidr(5)*drdx(i) + dnids(5)*dsdx(i) + dnidt(5)*dtdx(i)
383 px(i,6) = dnidr(6)*drdx(i) + dnids(6)*dsdx(i) + dnidt(6)*dtdx(i)
384 px(i,7) = dnidr(7)*drdx(i) + dnids(7)*dsdx(i) + dnidt(7)*dtdx(i)
385 px(i,8) = dnidr(8)*drdx(i) + dnids(8)*dsdx(i) + dnidt(8)*dtdx(i)
386 r9 = dnidr(9) *drdx(i)
387 r13 = dnidr(13)*drdx(i)
388 s9 = dnids(9) *dsdx(i)
389 s10 = dnids(10)*dsdx(i)
390 s11 = dnids(11)*dsdx(i)
391 s12 = dnids(12)*dsdx(i)
392 t10 = dnidt(10)*dtdx(i)
393 t14 = dnidt(14)*dtdx(i)
394 px(i,9) = r9 + s9 + dnidt(9)*dtdx(i)
395 px(i,10)= dnidr(10)*drdx(i)+ s10 + t10
396 px(i,11)=-r9 + s11 + dnidt(11)*dtdx(i)
397 px(i,12)= dnidr(12)*drdx(i)+ s12 - t10
398 px(i,13)= r13 - s9 + dnidt(13)*dtdx(i)
399 px(i,14)= dnidr(14)*drdx(i)- s10 + t14
400 px(i,15)=-r13 - s11 + dnidt(15)*dtdx(i)
401 px(i,16)= dnidr(16)*drdx(i)- s12 - t14
402C
403 py(i,1) = dnidr(1)*drdy(i) + dnids(1)*dsdy(i) + dnidt(1)*dtdy(i)
404 pz(i,1) = dnidr(1)*drdz(i) + dnids(1)*dsdz(i) + dnidt(1)*dtdz(i)
405 py(i,2) = dnidr(2)*drdy(i) + dnids(2)*dsdy(i) + dnidt(2)*dtdy(i)
406 py(i,3) = dnidr(3)*drdy(i) + dnids(3)*dsdy(i) + dnidt(3)*dtdy(i)
407 py(i,4) = dnidr(4)*drdy(i) + dnids(4)*dsdy(i) + dnidt(4)*dtdy(i)
408 py(i,5) = dnidr(5)*drdy(i) + dnids(5)*dsdy(i) + dnidt(5)*dtdy(i)
409 py(i,6) = dnidr(6)*drdy(i) + dnids(6)*dsdy(i) + dnidt(6)*dtdy(i)
410 py(i,7) = dnidr(7)*drdy(i) + dnids(7)*dsdy(i) + dnidt(7)*dtdy(i)
411 py(i,8) = dnidr(8)*drdy(i) + dnids(8)*dsdy(i) + dnidt(8)*dtdy(i)
412 r9 = dnidr(9) *drdy(i)
413 r13 = dnidr(13)*drdy(i)
414 s9 = dnids(9) *dsdy(i)
415 s10 = dnids(10)*dsdy(i)
416 s11 = dnids(11)*dsdy(i)
417 s12 = dnids(12)*dsdy(i)
418 t10 = dnidt(10)*dtdy(i)
419 t14 = dnidt(14)*dtdy(i)
420 py(i,9) = r9 + s9 + dnidt(9)*dtdy(i)
421 py(i,10)= dnidr(10)*drdy(i)+ s10 + t10
422 py(i,11)=-r9 + s11 + dnidt(11)*dtdy(i)
423 py(i,12)= dnidr(12)*drdy(i)+ s12 - t10
424 py(i,13)= r13 - s9 + dnidt(13)*dtdy(i)
425 py(i,14)= dnidr(14)*drdy(i)- s10 + t14
426 py(i,15)=-r13 - s11 + dnidt(15)*dtdy(i)
427 py(i,16)= dnidr(16)*drdy(i)- s12 - t14
428C
429 pz(i,1) = dnidr(1)*drdz(i) + dnids(1)*dsdz(i) + dnidt(1)*dtdz(i)
430 pz(i,2) = dnidr(2)*drdz(i) + dnids(2)*dsdz(i) + dnidt(2)*dtdz(i)
431 pz(i,3) = dnidr(3)*drdz(i) + dnids(3)*dsdz(i) + dnidt(3)*dtdz(i)
432 pz(i,4) = dnidr(4)*drdz(i) + dnids(4)*dsdz(i) + dnidt(4)*dtdz(i)
433 pz(i,5) = dnidr(5)*drdz(i) + dnids(5)*dsdz(i) + dnidt(5)*dtdz(i)
434 pz(i,6) = dnidr(6)*drdz(i) + dnids(6)*dsdz(i) + dnidt(6)*dtdz(i)
435 pz(i,7) = dnidr(7)*drdz(i) + dnids(7)*dsdz(i) + dnidt(7)*dtdz(i)
436 pz(i,8) = dnidr(8)*drdz(i) + dnids(8)*dsdz(i) + dnidt(8)*dtdz(i)
437 r9 = dnidr(9) *drdz(i)
438 r13 = dnidr(13)*drdz(i)
439 s9 = dnids(9) *dsdz(i)
440 s10 = dnids(10)*dsdz(i)
441 s11 = dnids(11)*dsdz(i)
442 s12 = dnids(12)*dsdz(i)
443 t10 = dnidt(10)*dtdz(i)
444 t14 = dnidt(14)*dtdz(i)
445 pz(i,9) = r9 + s9 + dnidt(9)*dtdz(i)
446 pz(i,10)= dnidr(10)*drdz(i)+ s10 + t10
447 pz(i,11)=-r9 + s11 + dnidt(11)*dtdz(i)
448 pz(i,12)= dnidr(12)*drdz(i)+ s12 - t10
449 pz(i,13)= r13 - s9 + dnidt(13)*dtdz(i)
450 pz(i,14)= dnidr(14)*drdz(i)- s10 + t14
451 pz(i,15)=-r13 - s11 + dnidt(15)*dtdz(i)
452 pz(i,16)= dnidr(16)*drdz(i)- s12 - t14
453C
454 ENDDO
455C
456C
457C
458 DO n=1,16
459 DO i=lft,llt
460 kxx(i,n) = vol(i)*
461 . (px(i,n)*px(i,n) + py(i,n)*py(i,n) + pz(i,n)*pz(i,n))
462 ul(i,n) = ul(i,n) + kxx(i,n)
463 ENDDO
464 ENDDO
465 DO i=lft,llt
466 volg(i) =volg(i) + vol(i)
467 ENDDO
468C
469c AA = 0
470c DO N=1,16
471c AA = AA + NI(N)*NI(N)
472c ENDDO
473c DO I=LFT,LLT
474c BB = 1.E20
475c DO N=1,16
476c BB = MIN(BB,NI(N)*NI(N)/UL(I,N))
477c ENDDO
478c DELTAX(I) = SQRT(2.*BB/AA)
479c ENDDO
480C
481C
482 1000 FORMAT(/' ZERO OR NEGATIVE VOLUME : 3D-ELEMENT NB',i10/)
483 2000 FORMAT(/' ZERO OR NEGATIVE VOLUME : DELETE 3D-ELEMENT NB',i10/)
484C
485 RETURN
486 END
487
488!||====================================================================
489!|| s16rst ../starter/source/elements/thickshell/solide16/s16deri3.f
490!||--- called by ------------------------------------------------------
491!|| s16init3 ../starter/source/elements/thickshell/solide16/s16init3.F
492!||====================================================================
493 SUBROUTINE s16rst(R,S,T,
494 2 NI ,DNIDR ,DNIDS ,DNIDT )
495C-----------------------------------------------
496C I m p l i c i t T y p e s
497C-----------------------------------------------
498#include "implicit_f.inc"
499C-----------------------------------------------
500C D u m m y A r g u m e n t s
501C-----------------------------------------------
502 my_real
503 1 r,s,t,
504 2 ni(16) ,dnidr(16),dnids(16),dnidt(16)
505C-----------------------------------------------
506C L o c a l V a r i a b l e s
507C-----------------------------------------------
508 INTEGER I
509 my_real
510 . U_M_R,U_P_R,U_M_S,U_P_S,U_M_T,U_P_T,
511 . UMS_UMT,UMS_UPT,UPS_UMT,UPS_UPT,
512 . UMR_UMS,UMR_UPS,UPR_UMS,UPR_UPS,
513 . umt_umr,umt_upr,upt_umr,upt_upr,
514 . a
515C-----------------------------------------------
516C
517C
518C
519C ^ S _ T
520C | /|
521C | /
522C 7 | 14 /
523C O-------|--O----------O 6
524C /. | / /|
525C / . | / |
526C 15 O . / 13 O |
527C / . | / |
528C / . 16 / 5 / |
529C 8 O----------O----------O |
530C R <------|- - -.- - - -+ 10 | |
531C | O..........O....|.....O 2
532C | . 3 | /
533C | . | /
534C | O 11 | O
535C | . | / 9
536C |. |/
537C O----------O----------O
538C 4 12 1
539C
540C
541C
542C
543C-----------------------------------------------
544C ro = r ri so = s si to = t ti
545C
546C i=1,8
547C ri=+-1 si=+-1 ti=+-1
548C Ni = 1/8 (1+ro)(1+so)(1+to)(ro+to-1)
549C dNi/dr = ri/8 (1+so)(1+to)(2ro+to)
550C dNi/ds = si/8 (1+to)(1+ro)(to+ro-1)
551C dNi/dt = ti/8 (1+ro)(1+so)(2to+ro)
552C
553C i=10;12;14;16
554C ri=0 si=+-1 ti=+-1
555C Ni = 1/4 (1-r^2)(1+so)(1+to)
556C dNi/dr = -r/2 (1+so)(1+to)
557C dNi/ds = si/4 (1-r^2)(1+to)
558C dNi/dt = ti/4 (1-r^2)(1+so)
559C
560C
561C i=9;11;13;15
562C ri=+-1 si=+-1 ti=0
563C Ni = 1/4 (1-t^2)(1+ro)(1+so)
564C dNi/dr = ri/4 (1-t^2)(1+so)
565C dNi/ds = si/4 (1-t^2)(1+ro)
566C dNi/dt = -t/2 (1+ro)(1+so)
567C-----------------------------------------------
568C i ri si ti Ni
569C--------------------------------------------------------------------
570C 1 -1 -1 -1 1/8(1-r)(1-s)(1-t)(-r-t-1)
571C 2 -1 -1 +1 1/8(1-r)(1-s)(1+t)(-r+t-1)
572C 3 +1 -1 +1 1/8(1+r)(1-s)(1+t)(+r+t-1)
573C 4 +1 -1 -1 1/8(1+r)(1-s)(1-t)(+r-t-1)
574C 5 -1 +1 -1 1/8(1-r)(1+s)(1-t)(-r-t-1)
575C 6 -1 +1 +1 1/8(1-r)(1+s)(1+t)(-r+t-1)
576C 7 +1 +1 +1 1/8(1+r)(1+s)(1+t)(+r+t-1)
577C 8 +1 +1 -1 1/8(1+r)(1+s)(1-t)(+r-t-1)
578C 9 -1 -1 0 1/4(1-t^2)(1-r)(1-s)
579C 10 0 -1 +1 1/4(1-r^2)(1-s)(1+t)
580C 11 +1 -1 0 1/4(1-t^2)(1+r)(1-s)
581C 12 0 -1 -1 1/4(1-r^2)(1-s)(1-t)
582C 13 -1 +1 0 1/4(1-t^2)(1-r)(1+s)
583C 14 0 +1 +1 1/4(1-r^2)(1+s)(1+t)
584C 15 +1 +1 0 1/4(1-t^2)(1+r)(1+s)
585C 16 0 +1 -1 1/4(1-r^2)(1+s)(1-t)
586C-----------------------------------------------
587C i ri si ti dNi/dr dNi/ds
588C--------------------------------------------------------------------
589C 1 -1 -1 -1 -1/8(1-s)(1-t)(-2r-t) -1/8 (1-t)(1-r)(-t-r-1)
590C 2 -1 -1 +1 -1/8(1-s)(1+t)(-2r+t) -1/8 (1+t)(1-r)( t-r-1)
591C 3 +1 -1 +1 1/8(1-s)(1+t)(+2r+t) -1/8 (1+t)(1+r)( t+r-1)
592C 4 +1 -1 -1 1/8(1-s)(1-t)(+2r-t) -1/8 (1-t)(1+r)(-t+r-1)
593C 5 -1 +1 -1 -1/8(1+s)(1-t)(-2r-t) 1/8 (1-t)(1-r)(-t-r-1)
594C 6 -1 +1 +1 -1/8(1+s)(1+t)(-2r+t) 1/8 (1+t)(1-r)( t-r-1)
595C 7 +1 +1 +1 1/8(1+s)(1+t)(+2r+t) 1/8 (1+t)(1+r)( t+r-1)
596C 8 +1 +1 -1 1/8(1+s)(1-t)(+2r-t) 1/8 (1-t)(1+r)(-t+r-1)
597C 9 -1 -1 0 -1/4 (1-t^2)(1-s) -1/4 (1-t^2)(1-r)
598C 10 0 -1 +1 -1/2 r(1-s)(1+t) -1/4 (1-r^2)(1+t)
599C 11 +1 -1 0 1/4 (1-t^2)(1-s) -1/4 (1-t^2)(1+r)
600C 12 0 -1 -1 -1/2 r(1-s)(1-t) -1/4 (1-r^2)(1-t)
601C 13 -1 +1 0 -1/4 (1-t^2)(1+s) 1/4 (1-t^2)(1-r)
602C 14 0 +1 +1 -1/2 r(1+s)(1+t) 1/4 (1-r^2)(1+t)
603C 15 +1 +1 0 1/4 (1-t^2)(1+s) 1/4 (1-t^2)(1+r)
604C 16 0 +1 -1 -1/2 r(1+s)(1-t) 1/4 (1-r^2)(1-t)
605C-----------------------------------------------
606C
607 u_m_r = half*(1.-r)
608 u_p_r = half*(1.+r)
609
610C
611 u_m_s = half*(1.-s)
612 u_p_s = half*(1.+s)
613C
614 u_m_t = half*(1.-t)
615 u_p_t = half*(1.+t)
616 ums_umt = u_m_s * u_m_t
617 ums_upt = u_m_s * u_p_t
618 ups_umt = u_p_s * u_m_t
619 ups_upt = u_p_s * u_p_t
620C
621 umr_ums = u_m_r * u_m_s
622 umr_ups = u_m_r * u_p_s
623 upr_ums = u_p_r * u_m_s
624 upr_ups = u_p_r * u_p_s
625C
626 umt_umr = u_m_t * u_m_r
627 umt_upr = u_m_t * u_p_r
628 upt_umr = u_p_t * u_m_r
629 upt_upr = u_p_t * u_p_r
630C
631 ni(1) = u_m_r * ums_umt * (-r-t-1.)
632 ni(2) = u_m_r * ums_upt * (-r+t-1.)
633 ni(3) = u_p_r * ums_upt * ( r+t-1.)
634 ni(4) = u_p_r * ums_umt * ( r-t-1.)
635 ni(5) = u_m_r * ups_umt * (-r-t-1.)
636 ni(6) = u_m_r * ups_upt * (-r+t-1.)
637 ni(7) = u_p_r * ups_upt * ( r+t-1.)
638 ni(8) = u_p_r * ups_umt * ( r-t-1.)
639C
640C
641C
642 dnidr(1) = -ums_umt * (-half*t - r)
643 dnidr(2) = -ums_upt * ( half*t - r)
644 dnidr(3) = ums_upt * ( half*t + r)
645 dnidr(4) = ums_umt * (-half*t + r)
646 dnidr(5) = -ups_umt * (-half*t - r)
647 dnidr(6) = -ups_upt * ( half*t - r)
648 dnidr(7) = ups_upt * ( half*t + r)
649 dnidr(8) = ups_umt * (-half*t + r)
650C
651 dnids(1) = -umt_umr * (-r-t-one)*half
652 dnids(2) = -upt_umr * (-r+t-one)*half
653 dnids(3) = -upt_upr * ( r+t-one)*half
654 dnids(4) = -umt_upr * ( r-t-one)*half
655 dnids(5) = umt_umr * (-r-t-one)*half
656 dnids(6) = upt_umr * (-r+t-one)*half
657 dnids(7) = upt_upr * ( r+t-one)*half
658 dnids(8) = umt_upr * ( r-t-one)*half
659C
660 dnidt(1) = -umr_ums * (-half*r - t)
661 dnidt(2) = umr_ums * (-half*r + t)
662 dnidt(3) = upr_ums * (+half*r + t)
663 dnidt(4) = -upr_ums * (+half*r - t)
664 dnidt(5) = -umr_ups * (-half*r - t)
665 dnidt(6) = umr_ups * (-half*r + t)
666 dnidt(7) = upr_ups * (+half*r + t)
667 dnidt(8) = -upr_ups * (+half*r - t)
668C------------------------------------
669 a = (one - r*r)
670 ni(10) = a * ums_upt
671 ni(12) = a * ums_umt
672 ni(14) = a * ups_upt
673 ni(16) = a * ups_umt
674C
675 a = half*a
676 dnidt(10) = a * u_m_s
677 dnidt(14) = a * u_p_s
678C DNIDT(12) = -DNIDT(10)
679C DNIDT(16) = -DNIDT(14)
680C
681C DNIDS(14) = A * U_P_T
682C DNIDS(16) = A * U_M_T
683C DNIDS(10) = -DNIDS(14)
684C DNIDS(12) = -DNIDS(16)
685 dnids(10) = -a * u_p_t
686 dnids(12) = -a * u_m_t
687C
688 a = -two*r
689 dnidr(10) = a * ums_upt
690 dnidr(12) = a * ums_umt
691 dnidr(14) = a * ups_upt
692 dnidr(16) = a * ups_umt
693C------------------------------------
694 a = (one - t*t)
695 ni(9) = a * umr_ums
696 ni(11) = a * upr_ums
697 ni(13) = a * umr_ups
698 ni(15) = a * upr_ups
699C
700 a = half*a
701C DNIDR(11) = A * U_M_S
702C DNIDR(15) = A * U_P_S
703C DNIDR(9) = -DNIDR(11)
704C DNIDR(13) = -DNIDR(15)
705 dnidr(9) = -a * u_m_s
706 dnidr(13) = -a * u_p_s
707C
708C DNIDS(13) = A * U_M_R
709C DNIDS(15) = A * U_P_R
710C DNIDS(9) = -DNIDS(13)
711C DNIDS(11) = -DNIDS(15)
712 dnids(9) = -a * u_m_r
713 dnids(11) = -a * u_p_r
714C
715 a = -two*t
716 dnidt(9) = a * umr_ums
717 dnidt(11) = a * upr_ums
718 dnidt(13) = a * umr_ups
719 dnidt(15) = a * upr_ups
720C
721C-----------------------------------------------
722 RETURN
723 END
#define my_real
Definition cppsort.cpp:32
subroutine s16init3(elbuf_str, mas, ixs, pm, x, detonators, geo, veul, ale_connectivity, iparg, dtelem, sigi, nel, skew, igeo, stifn, partsav, v, iparts, mss, ixs16, ipart, mssx, sigsp, nsigi, ipm, iuser, nsigs, volnod, bvolnod, vns, bns, vnsx, bnsx, ptsol, bufmat, mcp, mcps, mcpsx, temp, npf, tf, strsglob, straglob, fail_ini, iloadp, facload, rnoise, perturb, mat_param, glob_therm)
Definition s16init3.F:59
subroutine s16rst(r, s, t, ni, dnidr, dnids, dnidt)
Definition s16deri3.F:495
subroutine s16deri3(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, kxx, ni, volg, ul, voldp)
Definition s16deri3.F:37
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
program starter
Definition starter.F:39