OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
s4deri3.F File Reference
#include "implicit_f.inc"
#include "mvsiz_p.inc"
#include "scr03_c.inc"
#include "vect01_c.inc"
#include "param_c.inc"
#include "com01_c.inc"
#include "scr17_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine s4deri3 (vol, veul, geo, igeo, rx, ry, rz, sx, sy, sz, tx, ty, tz, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, px1, px2, px3, px4, py1, py2, py3, py4, pz1, pz2, pz3, pz4, jac_i, deltax, det, ngl, ngeo, mxt, pm, voldp)

Function/Subroutine Documentation

◆ s4deri3()

subroutine s4deri3 ( vol,
veul,
geo,
integer, dimension(npropgi,*) igeo,
rx,
ry,
rz,
sx,
sy,
sz,
tx,
ty,
tz,
double precision, dimension(mvsiz) x1,
double precision, dimension(mvsiz) x2,
double precision, dimension(mvsiz) x3,
double precision, dimension(mvsiz) x4,
double precision, dimension(mvsiz) y1,
double precision, dimension(mvsiz) y2,
double precision, dimension(mvsiz) y3,
double precision, dimension(mvsiz) y4,
double precision, dimension(mvsiz) z1,
double precision, dimension(mvsiz) z2,
double precision, dimension(mvsiz) z3,
double precision, dimension(mvsiz) z4,
px1,
px2,
px3,
px4,
py1,
py2,
py3,
py4,
pz1,
pz2,
pz3,
pz4,
jac_i,
deltax,
det,
integer, dimension(*) ngl,
integer, dimension(*) ngeo,
integer, dimension(mvsiz) mxt,
pm,
double precision, dimension(*) voldp )

Definition at line 37 of file s4deri3.F.

47 USE message_mod
48C-----------------------------------------------
49C I m p l i c i t T y p e s
50C-----------------------------------------------
51#include "implicit_f.inc"
52C-----------------------------------------------
53C G l o b a l P a r a m e t e r s
54C-----------------------------------------------
55#include "mvsiz_p.inc"
56C-----------------------------------------------
57C C o m m o n B l o c k s
58C-----------------------------------------------
59#include "scr03_c.inc"
60#include "vect01_c.inc"
61#include "param_c.inc"
62#include "com01_c.inc"
63#include "scr17_c.inc"
64C-----------------------------------------------
65C D u m m y A r g u m e n t s
66C-----------------------------------------------
67 INTEGER IGEO(NPROPGI,*), MXT(MVSIZ)
68 double precision
69 . x1(mvsiz), x2(mvsiz), x3(mvsiz), x4(mvsiz),
70 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz),
71 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz),voldp(*)
72C REAL
74 . vol(*), veul(lveul,*),geo(npropg,*), pm(npropm,*),
75 . rx(*), ry(*), rz(*), sx(*), sy(*), sz(*), tx(*), ty(*), tz(*), det(*),
76 . px1(mvsiz), px2(mvsiz), px3(mvsiz), px4(mvsiz),
77 . py1(mvsiz), py2(mvsiz), py3(mvsiz), py4(mvsiz),
78 . pz1(mvsiz), pz2(mvsiz), pz3(mvsiz), pz4(mvsiz),
79 . deltax(mvsiz),jac_i(10,mvsiz)
80 INTEGER NGL(*), NGEO(*)
81C-----------------------------------------------
82C L o c a l V a r i a b l e s
83C-----------------------------------------------
84 INTEGER I
86 . b1(mvsiz), b2(mvsiz), b3(mvsiz), b4(mvsiz),
87 . c1(mvsiz), c2(mvsiz), c3(mvsiz), c4(mvsiz),
88 . d1(mvsiz), d2(mvsiz), d3(mvsiz), d4(mvsiz)
89 double precision
90 . x41, y41, z41, x42, y42, z42, x43, y43, z43,b1dp,c1dp,d1dp
92 . d ,pxx, pyy, pzz, pxy, pyz, pxz, gfac, aa, bb, p, ld
93C=======================================================================
94 DO i=lft,llt
95 x43 = x4(i) - x3(i)
96 y43 = y4(i) - y3(i)
97 z43 = z4(i) - z3(i)
98 x41 = x4(i) - x1(i)
99 y41 = y4(i) - y1(i)
100 z41 = z4(i) - z1(i)
101 x42 = x4(i) - x2(i)
102 y42 = y4(i) - y2(i)
103 z42 = z4(i) - z2(i)
104 rx(i) = -x41
105 ry(i) = -y41
106 rz(i) = -z41
107 sx(i) = -x42
108 sy(i) = -y42
109 sz(i) = -z42
110 tx(i) = -x43
111 ty(i) = -y43
112 tz(i) = -z43
113C
114 b1dp = y43*z42 - y42*z43
115 b1(i) = b1dp
116 b2(i) = y41*z43 - y43*z41
117 b3(i) = y42*z41 - y41*z42
118 b4(i) = -(b1(i) + b2(i) + b3(i))
119C
120 c1dp = z43*x42 - z42*x43
121 c1(i) = c1dp
122 c2(i) = z41*x43 - z43*x41
123 c3(i) = z42*x41 - z41*x42
124 c4(i) = -(c1(i) + c2(i) + c3(i))
125C
126 d1dp = x43*y42 - x42*y43
127 d1(i) = d1dp
128 d2(i) = x41*y43 - x43*y41
129 d3(i) = x42*y41 - x41*y42
130 d4(i) = -(d1(i) + d2(i) + d3(i))
131C
132 voldp(i) = (x41*b1dp + y41*c1dp + z41*d1dp)*one_over_6
133 det(i) = voldp(i)
134 vol(i) = det(i)
135 ENDDO
136C
137 DO i=lft,llt
138 IF (det(i) <= zero) THEN
139 IF (igeo(11,ngeo(i)) /= 0) THEN
140 CALL ancmsg(msgid=245,
141 . msgtype=msgerror,
142 . anmode=aninfo,
143 . i1=ngl(i))
144 vol(i) = em20 ! to prevent crash
145 det(i) = em20
146 ELSE
147 CALL ancmsg(msgid=635,
148 . msgtype=msgwarning,
149 . anmode=aninfo,
150 . i1=ngl(i))
151 ENDIF
152 ENDIF
153 ENDDO
154C
155 DO i=lft,llt
156 d = one/det(i)/six
157 px1(i)=-b1(i)*d
158 py1(i)=-c1(i)*d
159 pz1(i)=-d1(i)*d
160 px2(i)=-b2(i)*d
161 py2(i)=-c2(i)*d
162 pz2(i)=-d2(i)*d
163 px3(i)=-b3(i)*d
164 py3(i)=-c3(i)*d
165 pz3(i)=-d3(i)*d
166 px4(i)=-b4(i)*d
167 py4(i)=-c4(i)*d
168 pz4(i)=-d4(i)*d
169 ENDDO
170
171
172 IF(idt1sol==0)THEN
173
174 DO i=lft,llt
175 d = max(px1(i)*px1(i)+py1(i)*py1(i)+pz1(i)*pz1(i),
176 . px2(i)*px2(i)+py2(i)*py2(i)+pz2(i)*pz2(i),
177 . px3(i)*px3(i)+py3(i)*py3(i)+pz3(i)*pz3(i),
178 . px4(i)*px4(i)+py4(i)*py4(i)+pz4(i)*pz4(i))
179 deltax(i) = one / sqrt(d)
180 END DO
181
182 ELSEIF(iformdt==0)THEN
183 DO i=lft,llt
184 d = px1(i)*px1(i)+py1(i)*py1(i)+pz1(i)*pz1(i)
185 . + px2(i)*px2(i)+py2(i)*py2(i)+pz2(i)*pz2(i)
186 . + px3(i)*px3(i)+py3(i)*py3(i)+pz3(i)*pz3(i)
187 . + px4(i)*px4(i)+py4(i)*py4(i)+pz4(i)*pz4(i)
188 deltax(i) = one / sqrt(d)
189 END DO
190
191 ELSEIF(iformdt==1)THEN
192
193 gfac=pm(105,mxt(1))
194 ld =two*sqrt(max(one-gfac,zero))+one
195 DO i=lft,llt
196 pxx=px1(i)*px1(i)+px2(i)*px2(i)+px3(i)*px3(i)+px4(i)*px4(i)
197 pyy=py1(i)*py1(i)+py2(i)*py2(i)+py3(i)*py3(i)+py4(i)*py4(i)
198 pzz=pz1(i)*pz1(i)+pz2(i)*pz2(i)+pz3(i)*pz3(i)+pz4(i)*pz4(i)
199 pxy=px1(i)*py1(i)+px2(i)*py2(i)+px3(i)*py3(i)+px4(i)*py4(i)
200 pxz=px1(i)*pz1(i)+px2(i)*pz2(i)+px3(i)*pz3(i)+px4(i)*pz4(i)
201 pyz=py1(i)*pz1(i)+py2(i)*pz2(i)+py3(i)*pz3(i)+py4(i)*pz4(i)
202C
203 aa = -(pxx+pyy+pzz)
204 bb = (pxx*pyy+pxx*pzz+pyy*pzz-pxy**2-pxz**2-pyz**2)
205 p = bb-third*aa*aa
206 d = two*sqrt(third*max(-p,zero))-third*aa
207C
208 d = ld*d
209C
210 deltax(i) = one / sqrt(d)
211 END DO
212
213 ELSEIF(iformdt==2)THEN
214
215 gfac=pm(105,mxt(1))
216 DO i=lft,llt
217 pxx=px1(i)*px1(i)+px2(i)*px2(i)+px3(i)*px3(i)+px4(i)*px4(i)
218 pyy=py1(i)*py1(i)+py2(i)*py2(i)+py3(i)*py3(i)+py4(i)*py4(i)
219 pzz=pz1(i)*pz1(i)+pz2(i)*pz2(i)+pz3(i)*pz3(i)+pz4(i)*pz4(i)
220 pxy=px1(i)*py1(i)+px2(i)*py2(i)+px3(i)*py3(i)+px4(i)*py4(i)
221 pxz=px1(i)*pz1(i)+px2(i)*pz2(i)+px3(i)*pz3(i)+px4(i)*pz4(i)
222 pyz=py1(i)*pz1(i)+py2(i)*pz2(i)+py3(i)*pz3(i)+py4(i)*pz4(i)
223C
224 aa = -(pxx+pyy+pzz)
225 bb = gfac*(pxx*pyy+pxx*pzz+pyy*pzz-pxy**2-pxz**2-pyz**2)
226 p = bb-third*aa*aa
227 d = two*sqrt(third*max(-p,zero))-third*aa
228C
229 deltax(i) = one / sqrt(d)
230 END DO
231
232 END IF
233
234 IF (ismstr==10.OR.ismstr==12) THEN
235 DO i=lft,llt
236 jac_i(1,i) = px1(i)
237 jac_i(2,i) = px2(i)
238 jac_i(3,i) = px3(i)
239 jac_i(4,i) = py1(i)
240 jac_i(5,i) = py2(i)
241 jac_i(6,i) = py3(i)
242 jac_i(7,i) = pz1(i)
243 jac_i(8,i) = pz2(i)
244 jac_i(9,i) = pz3(i)
245 jac_i(10,i) = vol(i)
246 ENDDO
247 END IF
248C
249 IF (jeul * (1 - imulti_fvm) /= 0 .AND. nxref==0) THEN
250 DO i=lft,llt
251 veul(1,i) =-px1(i)
252 veul(2,i) = px2(i)
253 veul(3,i) =-px3(i)
254 veul(4,i) = px4(i)
255 veul(5,i) =-py1(i)
256 veul(6,i) = py2(i)
257 veul(7,i) =-py3(i)
258 veul(8,i) = py4(i)
259 veul(9,i) =-pz1(i)
260 veul(10,i)= pz2(i)
261 veul(11,i)=-pz3(i)
262 veul(12,i)= pz4(i)
263 veul(13,i)= deltax(i)
264C------------------------------------------
265C CALCUL DE LA NORMALE A CHAQUE FACE
266C------------------------------------------
267 veul(14,i) = zero
268 veul(15,i) = half*b1(i)
269 veul(16,i) = zero
270 veul(17,i) = half*b2(i)
271 veul(18,i) = half*b3(i)
272 veul(19,i) = half*b4(i)
273C
274 veul(20,i) = zero
275 veul(21,i) = half*c1(i)
276 veul(22,i) = zero
277 veul(23,i) = half*c2(i)
278 veul(24,i) = half*c3(i)
279 veul(25,i) = half*c4(i)
280C
281 veul(26,i) = zero
282 veul(27,i) = half*d1(i)
283 veul(28,i) = zero
284 veul(29,i) = half*d2(i)
285 veul(30,i) = half*d3(i)
286 veul(31,i) = half*d4(i)
287 ENDDO
288C
289 IF (igeo(11,ngeo(lft)) == 15) THEN
290 DO i=lft,llt
291 vol(i)=vol(i)*geo(1,ngeo(i))
292 voldp(i)=voldp(i)*geo(1,ngeo(i))
293 ENDDO
294 ENDIF
295 ENDIF
296C-----------
297 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