OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
chsti3.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!|| chsti3 ../engine/source/elements/shell/coque/chsti3.F
25!||--- called by ------------------------------------------------------
26!|| cforc3 ../engine/source/elements/shell/coque/cforc3.F
27!|| cforc3_crk ../engine/source/elements/xfem/cforc3_crk.F
28!||====================================================================
29 SUBROUTINE chsti3(JFT ,JLT,THK,HOUR,OFF ,PX1,
30 2 PX2,PY1,PY2 ,SIGY,IXC,DT1C,
31 3 SSP,RHO,STI ,Z2 ,EANI,STIR,
32 4 SHF,THK0,THK02,VISCMX,G ,A11 ,
33 5 H1 ,H2 ,H3 ,YM ,NU , ALPE,
34 6 VHX ,VHY ,VX1 ,VX2 ,VX3 ,VX4 ,VY1 ,
35 7 VY2 ,VY3 ,VY4,VZ1 ,VZ2 ,VZ3 ,VZ4 ,AREA,
36 8 H11 ,H12 ,H13 ,H21 ,H22 ,H23 ,H31 ,H32 ,H33 ,
37 9 B11 ,B12 ,B13 ,B14 ,B21 ,B22 ,B23 ,B24 ,
38 A RX1 ,RX2 ,RX3 ,RX4 ,RY1 ,RY2 ,RY3 ,RY4,
39 B IPARTC ,PARTSAV,
40 C IHBE ,NFT ,ISMSTR ,SRH3 ,IGTYP ,
41 D IGMAT ,A11R ,NEL)
42C-----------------------------------------------
43C I m p l i c i t T y p e s
44C-----------------------------------------------
45#include "implicit_f.inc"
46#include "comlock.inc"
47C-----------------------------------------------
48C G l o b a l P a r a m e t e r s
49C-----------------------------------------------
50#include "mvsiz_p.inc"
51C-----------------------------------------------
52C C o m m o n B l o c k s
53C-----------------------------------------------
54#include "com04_c.inc"
55#include "com06_c.inc"
56#include "param_c.inc"
57#include "remesh_c.inc"
58#include "scr02_c.inc"
59#include "scr14_c.inc"
60#include "scr16_c.inc"
61#include "scr17_c.inc"
62#include "sms_c.inc"
63C-----------------------------------------------
64C D u m m y A r g u m e n t s
65C-----------------------------------------------
66 INTEGER IXC(NIXC,*),IPARTC(*), JFT, JLT,
67 . IHBE ,NFT ,ISMSTR,IGTYP,IGMAT,NEL
68C REAL
69 my_real
70 . THK(*), HOUR(NEL,5), OFF(*),EANI(*),PARTSAV(NPSAV,*),
71 . PX1(*), PX2(*), PY1(*), PY2(*), SIGY(*),DT1C(*),STIR(*),
72 . SSP(MVSIZ), RHO(MVSIZ),STI(MVSIZ),Z2(MVSIZ), SHF(MVSIZ),
73 . THK0(MVSIZ),VISCMX(MVSIZ), ALPE(MVSIZ), A11R(*)
74C REAL
75 my_real
76 . B11(MVSIZ), B12(MVSIZ), B13(MVSIZ), B14(MVSIZ),
77 . B21(MVSIZ), B22(MVSIZ), B23(MVSIZ), B24(MVSIZ),
78 . h11(mvsiz), h12(mvsiz), h13(mvsiz), h14(mvsiz),
79 . h21(mvsiz), h22(mvsiz), h23(mvsiz), h24(mvsiz),
80 . h31(mvsiz), h32(mvsiz), h33(mvsiz), h34(mvsiz),
81 . rx1(mvsiz), rx2(mvsiz), rx3(mvsiz), rx4(mvsiz),
82 . ry1(mvsiz), ry2(mvsiz), ry3(mvsiz), ry4(mvsiz),
83 . vx1(mvsiz), vx2(mvsiz), vx3(mvsiz), vx4(mvsiz),
84 . vy1(mvsiz), vy2(mvsiz), vy3(mvsiz), vy4(mvsiz),
85 . vz1(mvsiz), vz2(mvsiz), vz3(mvsiz), vz4(mvsiz),
86 . area(mvsiz),vhx(mvsiz),
87 . h1(mvsiz), h2(mvsiz), h3(mvsiz), vhy(mvsiz),
88 . ym(mvsiz), nu(mvsiz), thk02(mvsiz),srh3(*)
89C-----------------------------------------------
90C L o c a l V a r i a b l e s
91C-----------------------------------------------
92 INTEGER I, MX, J
93C REAL
94 my_real
95 . GAMA1(MVSIZ), GAMA2(MVSIZ), GAMA3(MVSIZ), GAMA4(MVSIZ),
96 . H3L(MVSIZ), H3Q(MVSIZ),
97 . HG1(MVSIZ), HG2(MVSIZ) ,HP1(MVSIZ), HP2(MVSIZ) ,
98 . G(MVSIZ) , B1(MVSIZ), B2(MVSIZ),
99 . A11(MVSIZ) ,EHOU(MVSIZ),
100 . PX1V, PX2V, PY1V, PY2V, SSPHVL,ZZ2,VV,
101 . SHFPR3, FAC, BB, HOUR1(MVSIZ), HOUR2(MVSIZ), HOUR3(MVSIZ),
102 . EHOURT, PX1VP,PX2VP,PY1VP,PY2VP, FMAX(MVSIZ),
103 . HOUR1P,HOUR2P,HOUR3P,FMAX1,FMAXP1,FMAX2,FMAXP2,FMAXP,
104 . scale(mvsiz)
105C-----------------------------------------------
106C
107 ehourt = zero
108C
109 IF(ismstr/=3.AND.ihbe/=0)THEN
110 DO i=jft,jlt
111 px1v = px1(i)*vhx(i)
112 px2v = px2(i)*vhx(i)
113 py1v = py1(i)*vhy(i)
114 py2v = py2(i)*vhy(i)
115 gama1(i)= off(i)*( one - px1v-py1v)
116 gama3(i)= off(i)*( one + px1v+py1v)
117 gama2(i)= off(i)*(-one - px2v-py2v)
118 gama4(i)= off(i)*(-one + px2v+py2v)
119 ENDDO
120 ELSE
121 DO i=jft,jlt
122 gama1(i)= off(i)
123 gama3(i)= off(i)
124 gama2(i)= -off(i)
125 gama4(i)= -off(i)
126 ENDDO
127 ENDIF
128C
129 DO i=jft,jlt
130 hp1(i) =h1(i)
131 hp2(i) =h2(i)
132 h3(i) =srh3(i)
133 shfpr3 = shf(i)/(three*(one+nu(i)))
134 fac = fourth*rho(i)*thk02(i)
135 h3l(i) = h3(i)*zep072169*fac*area(i)
136 h3q(i) = h3(i)*h3l(i)*hundred
137 h3l(i) = h3l(i)*ssp(i)
138C
139 fac = ym(i)*thk0(i)*dt1c(i)*one_over_8
140 h1(i) = hp1(i) * fac
141 b1(i) = px1(i)*px1(i)+py1(i)*py1(i)
142 b2(i) = px2(i)*px2(i)+py2(i)*py2(i)
143 h2(i) = hp2(i) * fac*thk02(i)*shfpr3/(b1(i)+b2(i))
144 ENDDO
145C-----------------------------------
146C TRIANGLES
147C-----------------------------------
148 DO i=jft,jlt
149 IF(ixc(4,i)==ixc(5,i))THEN
150 h3q(i)=zero
151 h3l(i)=zero
152 h1(i)=zero
153 h2(i)=zero
154 ENDIF
155 ENDDO
156C-----------------------------------
157C STIFFNESS - DT
158C-----------------------------------
159 DO i=jft,jlt
160 scale(i) = zero
161 ENDDO
162 IF(nodadt/=0.OR.idt1sh==1.OR.idtmins==2)THEN
163 DO i=jft,jlt
164 scale(i) = +max(gama1(i)*gama1(i),gama2(i)*gama2(i),
165 . gama3(i)*gama3(i),gama4(i)*gama4(i)) *
166 . dt1c(i)*max(h1(i),h2(i),h3l(i)) /
167 . max(dt1c(i)*dt1c(i),em20)
168 sti(i)=sti(i) + scale(i)
169 ENDDO
170C
171 !!IF(IDTMINS==2)IGMAT = 1
172 IF(igtyp == 52 .OR.
173 . ((igtyp == 11 .OR. igtyp == 17 .OR. igtyp == 51)
174 . .AND. igmat > 0)) THEN
175 IF(nadmesh==0)THEN
176 DO i=jft,jlt
177 IF (off(i)==zero) THEN
178 sti(i) = zero
179 stir(i) = zero
180 ELSE
181 vv = viscmx(i) * viscmx(i) * alpe(i)
182 fac = max(b1(i),b2(i))/(area(i) * vv)
183 sti(i) = sti(i) + fac * thk0(i) * a11(i)
184 stir(i) = fac * a11r(i)*thk0(i)*thk02(i)*one_over_12 +
185 . fac * a11(i) *thk0(i)*area(i) *one_over_9 +
186 . scale(i)*(thk02(i)* one_over_12 + area(i)*one_over_9)
187 ENDIF
188 ENDDO
189 ELSE
190 DO i=jft,jlt
191 IF (off(i)==zero) THEN
192 sti(i) = zero
193 stir(i) = zero
194 ELSE
195 vv = viscmx(i) * viscmx(i) * alpe(i)
196 fac = max(b1(i),b2(i))/(area(i) * vv)
197 sti(i) = sti(i) + fac * thk0(i) * a11(i)
198 stir(i) = fac * a11r(i)*thk0(i)*thk02(i)* one_over_12 +
199 . scale(i)*thk02(i)* one_over_12
200 ENDIF
201 ENDDO
202 END IF
203 ELSE ! IGTYP
204 IF(nadmesh==0)THEN
205 DO i=jft,jlt
206 IF (off(i)==zero) THEN
207 sti(i) = zero
208 stir(i) = zero
209 ELSE
210 vv = viscmx(i) * viscmx(i) * alpe(i)
211 sti(i) = sti(i) + max(b1(i),b2(i))
212 . * thk0(i) * a11(i) / (area(i) * vv)
213 stir(i) = sti(i) * (thk02(i)* one_over_12 + area(i) * one_over_9)
214c .. + 0.5 * SHF(I) * AREA(I) * G(I)/A11(I))
215 ENDIF
216 ENDDO
217 ELSE
218 DO i=jft,jlt
219 IF (off(i)==zero) THEN
220 sti(i) = zero
221 stir(i) = zero
222 ELSE
223 vv = viscmx(i) * viscmx(i) * alpe(i)
224 sti(i) = sti(i) + max(b1(i),b2(i))
225 . * thk0(i) * a11(i) / (area(i) * vv)
226 stir(i) = sti(i) * thk02(i)* one_over_12
227 ENDIF
228 ENDDO
229 END IF
230 endif! igtyp
231 ENDIF !
232C-----------------------------------
233C ANTI-HOURGLASS MEMBRANE FORCES
234C-----------------------------------
235 DO i=jft,jlt
236 hg1(i)=vx1(i)*gama1(i)+vx2(i)*gama2(i)
237 . +vx3(i)*gama3(i)+vx4(i)*gama4(i)
238 hg2(i)=vy1(i)*gama1(i)+vy2(i)*gama2(i)
239 . +vy3(i)*gama3(i)+vy4(i)*gama4(i)
240 ENDDO
241
242 DO i=jft,jlt
243 hour(i,1)=hour(i,1)+hg1(i)*h1(i)
244 hour(i,2)=hour(i,2)+hg2(i)*h1(i)
245 fmax(i) = half*sigy(i)*thk0(i)*sqrt(area(i))*hp1(i)
246 hour(i,1)=sign( min( abs(hour(i,1)),fmax(i) ) , hour(i,1))
247 hour(i,2)=sign( min( abs(hour(i,2)),fmax(i) ) , hour(i,2))
248 hour1(i)=hour(i,1)
249 h11(i)=hour1(i)*gama1(i)
250 h12(i)=hour1(i)*gama2(i)
251 h13(i)=hour1(i)*gama3(i)
252 h14(i)=hour1(i)*gama4(i)
253 hour2(i)=hour(i,2)
254 h21(i)=hour2(i)*gama1(i)
255 h22(i)=hour2(i)*gama2(i)
256 h23(i)=hour2(i)*gama3(i)
257 h24(i)=hour2(i)*gama4(i)
258 ehou(i) = hour1(i)*hg1(i) + hour2(i)*hg2(i)
259 ENDDO
260C
261C----------------------------------
262C ANTI-HOURGLASS BENDING FORCES
263C----------------------------------
264 DO i=jft,jlt
265 hg1(i)=vz1(i)*gama1(i)+vz2(i)*gama2(i)
266 . +vz3(i)*gama3(i)+vz4(i)*gama4(i)
267 ENDDO
268 DO i=jft,jlt
269 hour(i,3)=hour(i,3)+hg1(i)*h2(i)
270 fmax(i) = fourth*sigy(i)*thk0(i)*thk0(i)*hp2(i)
271 hour(i,3)=sign( min( abs(hour(i,3)),fmax(i) ) , hour(i,3))
272 hour3(i) =hour(i,3)
273 h31(i)=hour3(i)*gama1(i)
274 h32(i)=hour3(i)*gama2(i)
275 h33(i)=hour3(i)*gama3(i)
276 h34(i)=hour3(i)*gama4(i)
277 ehou(i) = ehou(i) + hour3(i)*hg1(i)
278 ENDDO
279C
280C------------------------
281C ANTI-HOURGLASS MOMENTS
282C------------------------
283 DO i=jft,jlt
284 hg1(i)=rx1(i)-rx2(i)+rx3(i)-rx4(i)
285 hg2(i)=ry1(i)-ry2(i)+ry3(i)-ry4(i)
286 ENDDO
287C
288 DO i=jft,jlt
289 hour(i,4)=hg1(i)*(h3l(i)+h3q(i)*abs(hg1(i)))
290 hour(i,5)=hg2(i)*(h3l(i)+h3q(i)*abs(hg2(i)))
291 ehou(i) = ehou(i) + hour(i,4)*hg1(i) + hour(i,5)*hg2(i)
292 ehou(i) = dt1c(i) * ehou(i)*off(i)
293 ehourt = ehourt + ehou(i)
294 b11(i)= hour(i,4)*off(i)
295 b12(i)=-hour(i,4)*off(i)
296 b13(i)= hour(i,4)*off(i)
297 b14(i)=-hour(i,4)*off(i)
298 b21(i)= hour(i,5)*off(i)
299 b22(i)=-hour(i,5)*off(i)
300 b23(i)= hour(i,5)*off(i)
301 b24(i)=-hour(i,5)*off(i)
302 ENDDO
303C
304 DO i=jft,jlt
305 mx = ipartc(i)
306 partsav(8,mx)=partsav(8,mx) + ehou(i)
307 ENDDO
308C
309!$OMP ATOMIC
310 ehour = ehour + ehourt
311C
312 DO i=jft,jlt
313 eani(nft+numels+i) = eani(nft+numels+i)+ehou(i)
314 ENDDO
315C
316 RETURN
317 END
subroutine chsti3(jft, jlt, thk, hour, off, px1, px2, py1, py2, sigy, ixc, dt1c, ssp, rho, sti, z2, eani, stir, shf, thk0, thk02, viscmx, g, a11, h1, h2, h3, ym, nu, alpe, vhx, vhy, vx1, vx2, vx3, vx4, vy1, vy2, vy3, vy4, vz1, vz2, vz3, vz4, area, h11, h12, h13, h21, h22, h23, h31, h32, h33, b11, b12, b13, b14, b21, b22, b23, b24, rx1, rx2, rx3, rx4, ry1, ry2, ry3, ry4, ipartc, partsav, ihbe, nft, ismstr, srh3, igtyp, igmat, a11r, nel)
Definition chsti3.F:42
subroutine area(d1, x, x2, y, y2, eint, stif0)
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21