OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
s4derit3.F File Reference
#include "implicit_f.inc"
#include "comlock.inc"
#include "mvsiz_p.inc"
#include "param_c.inc"
#include "scr17_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine s4derit3 (off, det, ngl, deltax, mxt, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, px1, px2, px3, px4, py1, py2, py3, py4, pz1, pz2, pz3, pz4, rx, ry, rz, sx, sy, sz, tx, ty, tz, pm, voldp, nel, iformdt)

Function/Subroutine Documentation

◆ s4derit3()

subroutine s4derit3 ( off,
det,
integer, dimension(*) ngl,
deltax,
integer, dimension(*) mxt,
double precision, dimension(*) x1,
double precision, dimension(*) x2,
double precision, dimension(*) x3,
double precision, dimension(*) x4,
double precision, dimension(*) y1,
double precision, dimension(*) y2,
double precision, dimension(*) y3,
double precision, dimension(*) y4,
double precision, dimension(*) z1,
double precision, dimension(*) z2,
double precision, dimension(*) z3,
double precision, dimension(*) z4,
px1,
px2,
px3,
px4,
py1,
py2,
py3,
py4,
pz1,
pz2,
pz3,
pz4,
rx,
ry,
rz,
sx,
sy,
sz,
tx,
ty,
tz,
pm,
double precision, dimension(*) voldp,
integer, intent(in) nel,
integer, intent(in) iformdt )

Definition at line 31 of file s4derit3.F.

43C-----------------------------------------------
44C I m p l i c i t T y p e s
45C-----------------------------------------------
46#include "implicit_f.inc"
47#include "comlock.inc"
48C-----------------------------------------------
49C G l o b a l P a r a m e t e r s
50C-----------------------------------------------
51#include "mvsiz_p.inc"
52#include "param_c.inc"
53C-----------------------------------------------
54C D u m m y A r g u m e n t s
55C-----------------------------------------------
56 INTEGER, INTENT(IN) :: NEL
57 INTEGER, INTENT(IN) :: IFORMDT
58 INTEGER MXT(*)
59 DOUBLE PRECISION
60 . X1(*), X2(*), X3(*), X4(*),
61 . Y1(*), Y2(*), Y3(*), Y4(*),
62 . Z1(*), Z2(*), Z3(*), Z4(*),VOLDP(*)
63 my_real
64 . OFF(*),DET(*),DELTAX(*),
65 . PX1(*), PX2(*), PX3(*), PX4(*),
66 . PY1(*), PY2(*), PY3(*), PY4(*),
67 . PZ1(*), PZ2(*), PZ3(*), PZ4(*),
68 . RX(*), RY(*), RZ(*), SX(*), SY(*), SZ(*),TX(*), TY(*), TZ(*),
69 . PM(NPROPM,*)
70C-----------------------------------------------
71C C o m m o n B l o c k s
72C-----------------------------------------------
73#include "scr17_c.inc"
74C-----------------------------------------------
75C L o c a l V a r i a b l e s
76C-----------------------------------------------
77 INTEGER NGL(*), I
78 DOUBLE PRECISION
79 . X41, Y41, Z41, X42, Y42, Z42, X43, Y43, Z43,B1DP,C1DP,D1DP
80 my_real
81 . B1(MVSIZ), B2(MVSIZ), B3(MVSIZ), B4(MVSIZ),
82 . C1(MVSIZ), C2(MVSIZ), C3(MVSIZ), C4(MVSIZ),
83 . D1(MVSIZ), D2(MVSIZ), D3(MVSIZ), D4(MVSIZ),
84 . A1, A2, A3, A4, D, AREAMX2,
85 . PXX, PYY, PZZ, PXY, PYZ, PXZ, GFAC, AA, BB, P, LD
86C-----------------------------------------------
87C
88 DO I=1,NEL
89 X43 = X4(I) - X3(I)
90 Y43 = Y4(I) - Y3(I)
91 Z43 = Z4(I) - Z3(I)
92 X41 = X4(I) - X1(I)
93 Y41 = Y4(I) - Y1(I)
94 Z41 = Z4(I) - Z1(I)
95 X42 = X4(I) - X2(I)
96 Y42 = Y4(I) - Y2(I)
97 Z42 = Z4(I) - Z2(I)
98C
99 RX(I) = -X41
100 RY(I) = -Y41
101 RZ(I) = -Z41
102 SX(I) = -X42
103 SY(I) = -Y42
104 SZ(I) = -Z42
105C
106 TX(I) = -X43
107 TY(I) = -Y43
108 TZ(I) = -Z43
109C
110 B1DP = Y43*Z42 - Y42*Z43
111 B1(I) = B1DP
112 B2(I) = Y41*Z43 - Y43*Z41
113 B3(I) = Y42*Z41 - Y41*Z42
114 B4(I) = -(B1(I) + B2(I) + B3(I))
115C
116 C1DP = Z43*X42 - Z42*X43
117 C1(I) = C1DP
118 C2(I) = Z41*X43 - Z43*X41
119 C3(I) = Z42*X41 - Z41*X42
120 C4(I) = -(C1(I) + C2(I) + C3(I))
121C
122 D1DP = X43*Y42 - X42*Y43
123 D1(I) = D1DP
124 D2(I) = X41*Y43 - X43*Y41
125 D3(I) = X42*Y41 - X41*Y42
126 D4(I) = -(D1(I) + D2(I) + D3(I))
127C
128 VOLDP(I) = (X41*B1DP + Y41*C1DP + Z41*D1DP)*ONE_OVER_6
129 DET(I) = VOLDP(I)
130C
131 ENDDO
132C
133 CALL SCHKJAB3(
134 1 OFF, DET, NGL, NEL)
135C
136 DO I=1,NEL
137 D = ONE/DET(I)/SIX
138 PX1(I)=-B1(I)*D
139 PY1(I)=-C1(I)*D
140 PZ1(I)=-D1(I)*D
141 PX2(I)=-B2(I)*D
142 PY2(I)=-C2(I)*D
143 PZ2(I)=-D2(I)*D
144 PX3(I)=-B3(I)*D
145 PY3(I)=-C3(I)*D
146 PZ3(I)=-D3(I)*D
147 PX4(I)=-B4(I)*D
148 PY4(I)=-C4(I)*D
149 PZ4(I)=-D4(I)*D
150 END DO
151
152 IF(IDT1SOL==0)THEN
153
154 DO I=1,NEL
155 D = MAX(PX1(I)*PX1(I)+PY1(I)*PY1(I)+PZ1(I)*PZ1(I),
156 . PX2(I)*PX2(I)+PY2(I)*PY2(I)+PZ2(I)*PZ2(I),
157 . PX3(I)*PX3(I)+PY3(I)*PY3(I)+PZ3(I)*PZ3(I),
158 . PX4(I)*PX4(I)+PY4(I)*PY4(I)+PZ4(I)*PZ4(I))
159 DELTAX(I) = ONE / SQRT(D)
160 END DO
161
162
163 ELSEIF(IFORMDT==1)THEN
164
165 GFAC=PM(105,MXT(1))
166 LD =TWO*SQRT(MAX(ONE-GFAC,ZERO))+ONE
167 DO I=1,NEL
168 PXX=PX1(I)*PX1(I)+PX2(I)*PX2(I)+PX3(I)*PX3(I)+PX4(I)*PX4(I)
169 PYY=PY1(I)*PY1(I)+PY2(I)*PY2(I)+PY3(I)*PY3(I)+PY4(I)*PY4(I)
170 PZZ=PZ1(I)*PZ1(I)+PZ2(I)*PZ2(I)+PZ3(I)*PZ3(I)+PZ4(I)*PZ4(I)
171 PXY=PX1(I)*PY1(I)+PX2(I)*PY2(I)+PX3(I)*PY3(I)+PX4(I)*PY4(I)
172 PXZ=PX1(I)*PZ1(I)+PX2(I)*PZ2(I)+PX3(I)*PZ3(I)+PX4(I)*PZ4(I)
173 PYZ=PY1(I)*PZ1(I)+PY2(I)*PZ2(I)+PY3(I)*PZ3(I)+PY4(I)*PZ4(I)
174C
175 AA = -(PXX+PYY+PZZ)
176 BB = (PXX*PYY+PXX*PZZ+PYY*PZZ-PXY**2-PXZ**2-PYZ**2)
177 P = BB-THIRD*AA*AA
178 D=TWO*SQRT(THIRD*MAX(-P,ZERO))-THIRD*AA
179C
180 D=LD*D
181C
182 DELTAX(I) = ONE / SQRT(D)
183 END DO
184
185 ELSEIF(IFORMDT==2)THEN
186
187 GFAC=PM(105,MXT(1))
188 DO I=1,NEL
189 PXX=PX1(I)*PX1(I)+PX2(I)*PX2(I)+PX3(I)*PX3(I)+PX4(I)*PX4(I)
190 PYY=PY1(I)*PY1(I)+PY2(I)*PY2(I)+PY3(I)*PY3(I)+PY4(I)*PY4(I)
191 PZZ=PZ1(I)*PZ1(I)+PZ2(I)*PZ2(I)+PZ3(I)*PZ3(I)+PZ4(I)*PZ4(I)
192 PXY=PX1(I)*PY1(I)+PX2(I)*PY2(I)+PX3(I)*PY3(I)+PX4(I)*PY4(I)
193 PXZ=PX1(I)*PZ1(I)+PX2(I)*PZ2(I)+PX3(I)*PZ3(I)+PX4(I)*PZ4(I)
194 PYZ=PY1(I)*PZ1(I)+PY2(I)*PZ2(I)+PY3(I)*PZ3(I)+PY4(I)*PZ4(I)
195C
196 AA = -(PXX+PYY+PZZ)
197 BB = GFAC*(PXX*PYY+PXX*PZZ+PYY*PZZ-PXY**2-PXZ**2-PYZ**2)
198 P = BB-THIRD*AA*AA
199 D = TWO*SQRT(THIRD*MAX(-P,ZERO))-THIRD*AA
200C
201 DELTAX(I) = ONE / SQRT(D)
202 END DO
203
204 END IF
205C
206 RETURN
207C
208 1000 FORMAT(/' ZERO OR NEGATIVE VOLUME : 3D-ELEMENT NB',I10/)
209 2000 FORMAT(/' ZERO OR NEGATIVE VOLUME : DELETE 3D-ELEMENT NB',I10/)