OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
szderi3.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!|| szderi3 ../starter/source/elements/solid/solidez/szderi3.F
25!||--- called by ------------------------------------------------------
26!|| sinit3 ../starter/source/elements/solid/solide/sinit3.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 szderi3(
33 . VOL ,VEUL ,GEO ,IGEO ,
34 . XD1 ,XD2 ,XD3 ,XD4 ,XD5 ,XD6 ,XD7 ,XD8 ,
35 . YD1 ,YD2 ,YD3 ,YD4 ,YD5 ,YD6 ,YD7 ,YD8 ,
36 . ZD1 ,ZD2 ,ZD3 ,ZD4 ,ZD5 ,ZD6 ,ZD7 ,ZD8 ,
37 . PX1 ,PX2 ,PX3 ,PX4 ,
38 . PY1 ,PY2 ,PY3 ,PY4 ,
39 . PZ1 ,PZ2 ,PZ3 ,PZ4 ,
40 . JAC1 ,JAC2 ,JAC3 ,JAC4 ,JAC5 ,JAC6 ,JAC9 ,
41 . NGL ,NGEO ,DET ,VOLDP,NEL ,JEUL ,NXREF)
42C-----------------------------------------------
43C M o d u l e s
44C-----------------------------------------------
45 USE message_mod , ONLY : ancmsg, aninfo, msgerror
46C-----------------------------------------------
47C I m p l i c i t T y p e s
48C-----------------------------------------------
49#include "implicit_f.inc"
50C-----------------------------------------------
51C G l o b a l P a r a m e t e r s
52C-----------------------------------------------
53#include "mvsiz_p.inc"
54C-----------------------------------------------
55C C o m m o n B l o c k s
56C-----------------------------------------------
57#include "param_c.inc"
58C-----------------------------------------------
59C D u m m y A r g u m e n t s
60C-----------------------------------------------
61 INTEGER :: IGEO(NPROPGI,*),NGL(*),NGEO(*),NEL,JEUL,NXREF
62 my_real
63 . VOL(*), VEUL(LVEUL,*), GEO(NPROPG,*),
64 . JAC1(*), JAC2(*), JAC3(*), JAC4(*), JAC5(*), JAC6(*), JAC9(*),
65 . PX1(*), PX2(*), PX3(*), PX4(*),
66 . PY1(*), PY2(*), PY3(*), PY4(*),
67 . PZ1(*), PZ2(*), PZ3(*), PZ4(*), DET(*)
68 DOUBLE PRECISION
69 . XD1(MVSIZ), XD2(MVSIZ), XD3(MVSIZ), XD4(MVSIZ),
70 . xd5(mvsiz), xd6(mvsiz), xd7(mvsiz), xd8(mvsiz),
71 . yd1(mvsiz), yd2(mvsiz), yd3(mvsiz), yd4(mvsiz),
72 . yd5(mvsiz), yd6(mvsiz), yd7(mvsiz), yd8(mvsiz),
73 . zd1(mvsiz), zd2(mvsiz), zd3(mvsiz), zd4(mvsiz),
74 . zd5(mvsiz), zd6(mvsiz), zd7(mvsiz), zd8(mvsiz),voldp(*)
75C-----------------------------------------------
76C L o c a l V a r i a b l e s
77C-----------------------------------------------
78 INTEGER I
79 my_real
80 . DETT(MVSIZ), JAC7(MVSIZ), JAC8(MVSIZ) ,
81 . JACI1(MVSIZ), JACI2(MVSIZ), JACI3(MVSIZ), JACI4(MVSIZ),
82 . JACI5(MVSIZ), JACI6(MVSIZ), JACI7(MVSIZ), JACI8(MVSIZ), JACI9(MVSIZ),
83 . JAC_59_68(MVSIZ), JAC_67_49(MVSIZ), JAC_48_57(MVSIZ),
84 . A17_46(MVSIZ),
85 . A28_35(MVSIZ),
86 . B17_46(MVSIZ),
87 . b28_35(mvsiz),
88 . c17_46(mvsiz),
89 . c28_35(mvsiz)
90 double precision
91 . x17(mvsiz), x28(mvsiz), x35(mvsiz), x46(mvsiz),
92 . y17(mvsiz), y28(mvsiz), y35(mvsiz), y46(mvsiz),
93 . z17(mvsiz), z28(mvsiz), z35(mvsiz), z46(mvsiz)
94C=======================================================================
95 DO i=1,nel
96 x17(i)=xd7(i)-xd1(i)
97 x28(i)=xd8(i)-xd2(i)
98 x35(i)=xd5(i)-xd3(i)
99 x46(i)=xd6(i)-xd4(i)
100 y17(i)=yd7(i)-yd1(i)
101 y28(i)=yd8(i)-yd2(i)
102 y35(i)=yd5(i)-yd3(i)
103 y46(i)=yd6(i)-yd4(i)
104 z17(i)=zd7(i)-zd1(i)
105 z28(i)=zd8(i)-zd2(i)
106 z35(i)=zd5(i)-zd3(i)
107 z46(i)=zd6(i)-zd4(i)
108 ENDDO
109 DO i=1,nel
110 jac4(i)=x17(i)+x28(i)-x35(i)-x46(i)
111 jac5(i)=y17(i)+y28(i)-y35(i)-y46(i)
112 jac6(i)=z17(i)+z28(i)-z35(i)-z46(i)
113 a17_46(i)=x17(i)+x46(i)
114 a28_35(i)=x28(i)+x35(i)
115 b17_46(i)=y17(i)+y46(i)
116 b28_35(i)=y28(i)+y35(i)
117 c17_46(i)=z17(i)+z46(i)
118 c28_35(i)=z28(i)+z35(i)
119 ENDDO
120 DO i=1,nel
121 jac7(i)=a17_46(i)+a28_35(i)
122 jac8(i)=b17_46(i)+b28_35(i)
123 jac9(i)=c17_46(i)+c28_35(i)
124 jac1(i)=a17_46(i)-a28_35(i)
125 jac2(i)=b17_46(i)-b28_35(i)
126 jac3(i)=c17_46(i)-c28_35(i)
127 ENDDO
128C
129 DO i=1,nel
130 jac_59_68(i)=jac5(i)*jac9(i)-jac6(i)*jac8(i)
131 jac_67_49(i)=jac6(i)*jac7(i)-jac4(i)*jac9(i)
132 jac_48_57(i)=jac4(i)*jac8(i)-jac5(i)*jac7(i)
133 ENDDO
134
135C
136 DO i=1,nel
137 voldp(i)=one_over_64*(jac1(i)*jac_59_68(i)+jac2(i)*jac_67_49(i)+jac3(i)*jac_48_57(i))
138 det(i)=voldp(i)
139 vol(i)=det(i)
140 ENDDO
141C
142 DO i=1,nel
143 IF(det(i) <=zero) THEN
144 CALL ancmsg(msgid=245,
145 . msgtype=msgerror,
146 . anmode=aninfo,
147 . i1=ngl(i))
148 ENDIF
149 ENDDO
150C
151 IF (jeul == 0 .AND. nxref == 0) RETURN
152C
153 DO i=1,nel
154 dett(i)=one_over_64/det(i)
155 ENDDO
156C
157C Jacobian matrix inverse
158 DO i=1,nel
159 jaci1(i)=dett(i)*jac_59_68(i)
160 jaci4(i)=dett(i)*jac_67_49(i)
161 jaci7(i)=dett(i)*jac_48_57(i)
162 jaci2(i)=dett(i)*(-jac2(i)*jac9(i)+jac3(i)*jac8(i))
163 jaci5(i)=dett(i)*( jac1(i)*jac9(i)-jac3(i)*jac7(i))
164 jaci8(i)=dett(i)*(-jac1(i)*jac8(i)+jac2(i)*jac7(i))
165 jaci3(i)=dett(i)*( jac2(i)*jac6(i)-jac3(i)*jac5(i))
166 jaci6(i)=dett(i)*(-jac1(i)*jac6(i)+jac3(i)*jac4(i))
167 jaci9(i)=dett(i)*( jac1(i)*jac5(i)-jac2(i)*jac4(i))
168 ENDDO
169C
170C Shape functions derivatives
171 DO i=1,nel
172 px2(i)= jaci1(i)-jaci2(i)-jaci3(i)
173 py2(i)= jaci4(i)-jaci5(i)-jaci6(i)
174 pz2(i)= jaci7(i)-jaci8(i)-jaci9(i)
175C
176 px4(i)=-jaci1(i)+jaci2(i)-jaci3(i)
177 py4(i)=-jaci4(i)+jaci5(i)-jaci6(i)
178 pz4(i)=-jaci7(i)+jaci8(i)-jaci9(i)
179C
180 px1(i)=-jaci1(i)-jaci2(i)-jaci3(i)
181 py1(i)=-jaci4(i)-jaci5(i)-jaci6(i)
182 pz1(i)=-jaci7(i)-jaci8(i)-jaci9(i)
183C
184 px3(i)= jaci1(i)+jaci2(i)-jaci3(i)
185 py3(i)= jaci4(i)+jaci5(i)-jaci6(i)
186 pz3(i)= jaci7(i)+jaci8(i)-jaci9(i)
187 ENDDO
188C
189 IF(jeul /= 0)THEN
190 DO i=1,nel
191 veul(3,i) = px3(i)
192 veul(4,i) = py3(i)
193 veul(7,i) = pz3(i)
194 veul(8,i) = px4(i)
195 veul(11,i)= py4(i)
196 veul(12,i)= pz4(i)
197 veul(1,i) = px1(i)
198 veul(2,i) = py1(i)
199 veul(5,i) = pz1(i)
200 veul(6,i) = px2(i)
201 veul(9,i) = py2(i)
202 veul(10,i)= pz2(i)
203 END DO
204 IF (igeo(11,ngeo(1)) == 15) THEN
205 DO i=1,nel
206 vol(i)=vol(i)*geo(1,ngeo(i))
207 ENDDO
208 ENDIF
209 ENDIF
210C-----------
211 RETURN
212 END SUBROUTINE szderi3
subroutine szderi3(vol, veul, geo, igeo, xd1, xd2, xd3, xd4, xd5, xd6, xd7, xd8, yd1, yd2, yd3, yd4, yd5, yd6, yd7, yd8, zd1, zd2, zd3, zd4, zd5, zd6, zd7, zd8, px1, px2, px3, px4, py1, py2, py3, py4, pz1, pz2, pz3, pz4, jac1, jac2, jac3, jac4, jac5, jac6, jac9, ngl, ngeo, det, voldp, nel, jeul, nxref)
Definition szderi3.F:42
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