OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
fsigtini.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!|| fsigtini ../starter/source/constraints/fxbody/fsigtini.F
25!||--- called by ------------------------------------------------------
26!|| fxbsini ../starter/source/constraints/fxbody/fxbsini.F
27!||--- calls -----------------------------------------------------
28!|| c3curvi ../starter/source/constraints/fxbody/fsigtini.F
29!|| c3defli ../starter/source/constraints/fxbody/fsigtini.F
30!|| c3evec3 ../starter/source/elements/sh3n/coque3n/c3evec3.F
31!|| c3pxpyi ../starter/source/elements/sh3n/coque3n/c3epsini.F
32!|| ccoefi ../starter/source/constraints/fxbody/fsigcini.F
33!|| cm1inif ../starter/source/elements/shell/coque/cm1inif.F
34!||--- uses -----------------------------------------------------
35!||====================================================================
36 SUBROUTINE fsigtini(FXBELM, IPARG , X , PM, IXTG ,
37 . GEO , FXBMOD, FXBSIG, R , NELTG)
38 use element_mod , only : nixtg
39C-----------------------------------------------
40C I m p l i c i t T y p e s
41C-----------------------------------------------
42#include "implicit_f.inc"
43C-----------------------------------------------
44C G l o b a l P a r a m e t e r s
45C-----------------------------------------------
46#include "mvsiz_p.inc"
47C-----------------------------------------------
48C C o m m o n B l o c k s
49C-----------------------------------------------
50#include "param_c.inc"
51C-----------------------------------------------
52C D u m m y A r g u m e n t s
53C-----------------------------------------------
54 INTEGER FXBELM(*), IPARG(NPARG,*), IXTG(NIXTG,*), NELTG
56 . fxbsig(*), x(3,*), pm(npropm), fxbmod(*),
57 . geo(npropg,*), r(3,*)
58C-----------------------------------------------
59C L o c a l V a r i a b l e s
60C-----------------------------------------------
61 INTEGER IG,OFFSET,FIRST,LAST,NFT,I,NG,IEL,
62 . n1,n2,n3,ism,ithk,npt,nfs
63 INTEGER MAT(MVSIZ), PROP(MVSIZ)
65 . vl(3,3,mvsiz), vrl(3,3,mvsiz)
67 . x1(mvsiz) , x2(mvsiz) , x3(mvsiz) ,
68 . y1(mvsiz) , y2(mvsiz) , y3(mvsiz) ,
69 . z1(mvsiz) , z2(mvsiz) , z3(mvsiz) ,
70 . x31(mvsiz) , y31(mvsiz) , z31(mvsiz)
72 . d11, d12, d13, d21, d22, d23, d31, d32, d33,
73 . dr11, dr12, dr13, dr21, dr22, dr23, dr31, dr32, dr33
75 . e1x(mvsiz), e1y(mvsiz), e1z(mvsiz),
76 . e2x(mvsiz), e2y(mvsiz), e2z(mvsiz),
77 . e3x(mvsiz), e3y(mvsiz), e3z(mvsiz),
78 . exx(mvsiz),eyy(mvsiz),exy(mvsiz),eyz(mvsiz),ezx(mvsiz),
79 . kxx(mvsiz),kyy(mvsiz),kxy(mvsiz),
80 . px1g(mvsiz), py1g(mvsiz), py2g(mvsiz),
81 . px1(mvsiz) , py1(mvsiz) , py2(mvsiz),
82 . x2s(mvsiz), x3s(mvsiz), y3s(mvsiz)
84 . gstrbid(8,mvsiz), for(5,mvsiz), mom(3,mvsiz),
85 . eint(2,mvsiz) , thk(mvsiz), area(mvsiz),
86 . nu(mvsiz), g(mvsiz), a1(mvsiz), a2(mvsiz), gs(mvsiz)
87C=======================================================================
88 first=1
89 DO ig=1,neltg,mvsiz
90 offset=ig-1
91 last=min(mvsiz,neltg-offset)
92 nft=offset*9
93 nfs=offset*10
94 DO i=1,last
95 ng=fxbelm(nft+9*(i-1)+1)
96 iel=iparg(3,ng)+fxbelm(nft+9*(i-1)+2)
97 mat(i)=ixtg(1,iel)
98 prop(i)=ixtg(5,iel)
99 thk(i)=geo(1,prop(i))
100 x1(i)=zero
101 y1(i)=zero
102 z1(i)=zero
103 x2(i)=x(1,ixtg(3,iel))-x(1,ixtg(2,iel))
104 y2(i)=x(2,ixtg(3,iel))-x(2,ixtg(2,iel))
105 z2(i)=x(3,ixtg(3,iel))-x(3,ixtg(2,iel))
106 x3(i)=x(1,ixtg(4,iel))-x(1,ixtg(2,iel))
107 y3(i)=x(2,ixtg(4,iel))-x(2,ixtg(2,iel))
108 z3(i)=x(3,ixtg(4,iel))-x(3,ixtg(2,iel))
109 n1=fxbelm(nft+9*(i-1)+3)
110 n2=fxbelm(nft+9*(i-1)+4)
111 n3=fxbelm(nft+9*(i-1)+5)
112 d11=fxbmod(6*(n1-1)+1)
113 d12=fxbmod(6*(n1-1)+2)
114 d13=fxbmod(6*(n1-1)+3)
115 d21=fxbmod(6*(n2-1)+1)
116 d22=fxbmod(6*(n2-1)+2)
117 d23=fxbmod(6*(n2-1)+3)
118 d31=fxbmod(6*(n3-1)+1)
119 d32=fxbmod(6*(n3-1)+2)
120 d33=fxbmod(6*(n3-1)+3)
121 vl(1,1,i)=r(1,1)*d11+r(1,2)*d12+r(1,3)*d13
122 vl(2,1,i)=r(2,1)*d11+r(2,2)*d12+r(2,3)*d13
123 vl(3,1,i)=r(3,1)*d11+r(3,2)*d12+r(3,3)*d13
124 vl(1,2,i)=r(1,1)*d21+r(1,2)*d22+r(1,3)*d23
125 vl(2,2,i)=r(2,1)*d21+r(2,2)*d22+r(2,3)*d23
126 vl(3,2,i)=r(3,1)*d21+r(3,2)*d22+r(3,3)*d23
127 vl(1,3,i)=r(1,1)*d31+r(1,2)*d32+r(1,3)*d33
128 vl(2,3,i)=r(2,1)*d31+r(2,2)*d32+r(2,3)*d33
129 vl(3,3,i)=r(3,1)*d31+r(3,2)*d32+r(3,3)*d33
130 dr11=fxbmod(6*(n1-1)+4)
131 dr12=fxbmod(6*(n1-1)+5)
132 dr13=fxbmod(6*(n1-1)+6)
133 dr21=fxbmod(6*(n2-1)+4)
134 dr22=fxbmod(6*(n2-1)+5)
135 dr23=fxbmod(6*(n2-1)+6)
136 dr31=fxbmod(6*(n3-1)+4)
137 dr32=fxbmod(6*(n3-1)+5)
138 dr33=fxbmod(6*(n3-1)+6)
139 vrl(1,1,i)=r(1,1)*dr11+r(1,2)*dr12+r(1,3)*dr13
140 vrl(2,1,i)=r(2,1)*dr11+r(2,2)*dr12+r(2,3)*dr13
141 vrl(3,1,i)=r(3,1)*dr11+r(3,2)*dr12+r(3,3)*dr13
142 vrl(1,2,i)=r(1,1)*dr21+r(1,2)*dr22+r(1,3)*dr23
143 vrl(2,2,i)=r(2,1)*dr21+r(2,2)*dr22+r(2,3)*dr23
144 vrl(3,2,i)=r(3,1)*dr21+r(3,2)*dr22+r(3,3)*dr23
145 vrl(1,3,i)=r(1,1)*dr31+r(1,2)*dr32+r(1,3)*dr33
146 vrl(2,3,i)=r(2,1)*dr31+r(2,2)*dr32+r(2,3)*dr33
147 vrl(3,3,i)=r(3,1)*dr31+r(3,2)*dr32+r(3,3)*dr33
148 gstrbid(1,i)=zero
149 gstrbid(2,i)=zero
150 gstrbid(3,i)=zero
151 for(1,i)=zero
152 for(2,i)=zero
153 for(3,i)=zero
154 for(4,i)=zero
155 for(5,i)=zero
156 mom(1,i)=zero
157 mom(2,i)=zero
158 mom(3,i)=zero
159 px1g(i)=zero
160 py1g(i)=zero
161 py2g(i)=zero
162 ism=1
163 ithk=0
164 ENDDO
165C
166 CALL c3evec3(first,last ,area,
167 . x1 ,x2 ,x3 ,y1 ,y2 ,y3 ,
168 . z1 ,z2 ,z3 ,e1x ,e2x ,e3x ,
169 . e1y ,e2y ,e3y ,e1z ,e2z ,e3z ,
170 . x31 ,y31 ,z31 ,x2s ,x3s ,y3s )
171 npt=1
172 CALL ccoefi(last, pm , geo , nu ,
173 . g , a1 , a2 , gs , thk,
174 . mat , prop, npt , area )
175 CALL c3pxpyi(first,last ,ism ,
176 . px1g ,py1g ,py2g ,
177 . px1 ,py1 ,py2 ,
178 . x2s ,x3s ,y3s ,
179 . x1 ,x2 ,x3 ,y1 ,y2 ,y3 ,
180 . z1 ,z2 ,z3 ,e1x ,e2x ,e3x ,
181 . e1y ,e2y ,e3y ,e1z ,e2z ,e3z )
182 CALL c3defli(last ,vl ,gstrbid ,
183 . px1 ,py1 ,py2 ,
184 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y ,e1z ,e2z ,e3z ,
185 . exx ,eyy ,exy ,eyz ,ezx ,area )
186 CALL c3curvi(last ,vrl ,
187 . px1 ,py1 ,py2 ,
188 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y ,e1z ,e2z ,e3z ,
189 . eyz ,ezx ,kxx ,kyy ,kxy ,area )
190 ithk=0
191 CALL cm1inif(first,last ,for ,mom ,ithk ,
192 . thk ,eint ,nu ,g ,a1 ,
193 . a2 ,gs ,kxx ,kyy ,kxy ,
194 . exx ,eyy ,exy ,eyz ,ezx ,
195 . area )
196C
197 DO i=1,last
198 fxbsig(nfs+10*(i-1)+1)=for(1,i)
199 fxbsig(nfs+10*(i-1)+2)=for(2,i)
200 fxbsig(nfs+10*(i-1)+3)=for(3,i)
201 fxbsig(nfs+10*(i-1)+4)=for(4,i)
202 fxbsig(nfs+10*(i-1)+5)=for(5,i)
203 fxbsig(nfs+10*(i-1)+6)=mom(1,i)
204 fxbsig(nfs+10*(i-1)+7)=mom(2,i)
205 fxbsig(nfs+10*(i-1)+8)=mom(3,i)
206 fxbsig(nfs+10*(i-1)+9)=eint(1,i)
207 fxbsig(nfs+10*(i-1)+10)=eint(2,i)
208 ENDDO
209 ENDDO
210C
211 RETURN
212 END SUBROUTINE fsigtini
213!||====================================================================
214!|| c3defli ../starter/source/constraints/fxbody/fsigtini.F
215!||--- called by ------------------------------------------------------
216!|| fsigtini ../starter/source/constraints/fxbody/fsigtini.F
217!||====================================================================
218 SUBROUTINE c3defli (NEL ,VL ,GSTR ,
219 . PX1 ,PY1 ,PY2 ,
220 . E1X ,E2X ,E3X ,E1Y ,E2Y ,E3Y ,E1Z ,E2Z ,E3Z ,
221 . EXX ,EYY ,EXY ,EYZ ,EZX ,AREA )
222C-----------------------------------------------
223C I m p l i c i t T y p e s
224C-----------------------------------------------
225#include "implicit_f.inc"
226C-----------------------------------------------
227C G l o b a l P a r a m e t e r s
228C-----------------------------------------------
229#include "mvsiz_p.inc"
230C-----------------------------------------------
231C D u m m y A r g u m e n t s
232C-----------------------------------------------
233 INTEGER :: NEL
234C
235 my_real VL(3,3,*),GSTR(8,*),PX1(*),PY1(*),PY2(*)
236 my_real EXX(MVSIZ),EYY(MVSIZ),EXY(MVSIZ),EZX(MVSIZ),EYZ(MVSIZ),
237 . e1x(mvsiz) , e1y(mvsiz) , e1z(mvsiz) ,
238 . e2x(mvsiz) , e2y(mvsiz) , e2z(mvsiz) ,
239 . e3x(mvsiz) , e3y(mvsiz) , e3z(mvsiz) ,area(mvsiz)
240C-----------------------------------------------
241C L o c a l V a r i a b l e s
242C-----------------------------------------------
243 INTEGER I
244C
245 my_real
246 . VX1(MVSIZ) , VX2(MVSIZ) , VX3(MVSIZ) ,
247 . vy1(mvsiz) , vy2(mvsiz) , vy3(mvsiz) ,
248 . vz1(mvsiz) , vz2(mvsiz) , vz3(mvsiz) ,
249 . vx12(mvsiz), vx13(mvsiz), vx23(mvsiz),
250 . vy12(mvsiz), vy13(mvsiz), vy23(mvsiz),
251 . vz12(mvsiz), vz13(mvsiz), vz23(mvsiz)
252 my_real fac1
253C=======================================================================
254 DO i=1,nel
255 vx1(i)=e1x(i)*vl(1,1,i)+e1y(i)*vl(2,1,i)+e1z(i)*vl(3,1,i)
256 vx2(i)=e1x(i)*vl(1,2,i)+e1y(i)*vl(2,2,i)+e1z(i)*vl(3,2,i)
257 vx3(i)=e1x(i)*vl(1,3,i)+e1y(i)*vl(2,3,i)+e1z(i)*vl(3,3,i)
258C
259 vy3(i)=e2x(i)*vl(1,3,i)+e2y(i)*vl(2,3,i)+e2z(i)*vl(3,3,i)
260 vy2(i)=e2x(i)*vl(1,2,i)+e2y(i)*vl(2,2,i)+e2z(i)*vl(3,2,i)
261 vy1(i)=e2x(i)*vl(1,1,i)+e2y(i)*vl(2,1,i)+e2z(i)*vl(3,1,i)
262C
263 vz1(i)=e3x(i)*vl(1,1,i)+e3y(i)*vl(2,1,i)+e3z(i)*vl(3,1,i)
264 vz2(i)=e3x(i)*vl(1,2,i)+e3y(i)*vl(2,2,i)+e3z(i)*vl(3,2,i)
265 vz3(i)=e3x(i)*vl(1,3,i)+e3y(i)*vl(2,3,i)+e3z(i)*vl(3,3,i)
266 ENDDO
267C
268 DO i=1,nel
269 vz12(i)=vz1(i) - vz2(i)
270 vz13(i)=vz1(i) - vz3(i)
271 vz23(i)=vz2(i) - vz3(i)
272C
273 vx12(i)=vx1(i) - vx2(i)
274 vy12(i)=vy1(i) - vy2(i)
275 vx13(i)=vx1(i) - vx3(i)
276 vy13(i)=vy1(i) - vy3(i)
277 vx23(i)=vx2(i) - vx3(i)
278 vy23(i)=vy2(i) - vy3(i)
279C
280 exx(i)=px1(i)*vx12(i)
281 eyy(i)=py1(i)*vy13(i) + py2(i)*vy23(i)
282C
283 exy(i)=py1(i)*vx13(i) + py2(i)*vx23(i) + px1(i)*vy12(i)
284 eyz(i)=py1(i)*vz13(i) + py2(i)*vz23(i)
285 ezx(i)=px1(i)*vz12(i)
286 ENDDO
287C
288 DO i=1,nel
289 fac1 = one/area(i)
290 exx(i)=exx(i)*fac1
291 eyy(i)=eyy(i)*fac1
292 exy(i)=exy(i)*fac1
293 ENDDO
294C
295 DO i=1,nel
296 gstr(1,i)=gstr(1,i)+exx(i)
297 gstr(2,i)=gstr(2,i)+eyy(i)
298 gstr(3,i)=gstr(3,i)+exy(i)
299 ENDDO
300 RETURN
301 END SUBROUTINE c3defli
302!||====================================================================
303!|| c3curvi ../starter/source/constraints/fxbody/fsigtini.F
304!||--- called by ------------------------------------------------------
305!|| fsigtini ../starter/source/constraints/fxbody/fsigtini.F
306!||====================================================================
307 SUBROUTINE c3curvi(NEL ,VRL ,
308 . PX1 ,PY1 ,PY2 ,
309 . E1X ,E2X ,E3X ,E1Y ,E2Y ,E3Y ,E1Z ,E2Z ,E3Z ,
310 . EYZ ,EZX ,KXX ,KYY ,KXY ,AREA )
311C-----------------------------------------------
312C I m p l i c i t T y p e s
313C-----------------------------------------------
314#include "implicit_f.inc"
315C-----------------------------------------------
316C G l o b a l P a r a m e t e r s
317C-----------------------------------------------
318#include "mvsiz_p.inc"
319C-----------------------------------------------
320C D u m m y A r g u m e n t s
321C-----------------------------------------------
322 INTEGER :: NEL
323 my_real VRL(3,3,*),PX1(*),PY1(*),PY2(*),
324 . E1X(MVSIZ), E1Y(MVSIZ), E1Z(MVSIZ),
325 . E2X(MVSIZ), E2Y(MVSIZ), E2Z(MVSIZ),
326 . E3X(MVSIZ), E3Y(MVSIZ), E3Z(MVSIZ),
327 . KXX(MVSIZ), KYY(MVSIZ), KXY(MVSIZ),
328 . EYZ(MVSIZ),EZX(MVSIZ), AREA(MVSIZ)
329C-----------------------------------------------
330C L o c a l V a r i a b l e s
331C-----------------------------------------------
332 INTEGER I
333 my_real
334 . RX1(MVSIZ), RX2(MVSIZ), RX3(MVSIZ),
335 . RY1(MVSIZ), RY2(MVSIZ), RY3(MVSIZ)
336 my_real
337 . RX12T,RX13T,RX23T,RY12T,RY13T,RY23T,RYAVT,RXAVT,FAC1
338C=======================================================================
339 DO i=1,nel
340 rx1(i)=e1x(i)*vrl(1,1,i)+e1y(i)*vrl(2,1,i)+e1z(i)*vrl(3,1,i)
341 rx2(i)=e1x(i)*vrl(1,2,i)+e1y(i)*vrl(2,2,i)+e1z(i)*vrl(3,2,i)
342 rx3(i)=e1x(i)*vrl(1,3,i)+e1y(i)*vrl(2,3,i)+e1z(i)*vrl(3,3,i)
343 ry1(i)=e2x(i)*vrl(1,1,i)+e2y(i)*vrl(2,1,i)+e2z(i)*vrl(3,1,i)
344 ry2(i)=e2x(i)*vrl(1,2,i)+e2y(i)*vrl(2,2,i)+e2z(i)*vrl(3,2,i)
345 ry3(i)=e2x(i)*vrl(1,3,i)+e2y(i)*vrl(2,3,i)+e2z(i)*vrl(3,3,i)
346 ENDDO
347C
348 DO i=1,nel
349 rx12t = rx1(i) - rx2(i)
350 rx13t = rx1(i) - rx3(i)
351 rx23t = rx2(i) - rx3(i)
352C
353 kyy(i)=-py1(i) * rx13t - py2(i) * rx23t
354 kxy(i)= px1(i) * rx12t
355C
356 ry12t = ry1(i) - ry2(i)
357 ry13t = ry1(i) - ry3(i)
358 ry23t = ry2(i) - ry3(i)
359C
360 kxx(i) = px1(i) * ry12t
361 kxy(i) = py1(i) * ry13t + py2(i) * ry23t - kxy(i)
362C
363 ryavt = px1(i) * (
364 . px1(i) * (-rx1(i)+rx2(i))
365 . + (two*py1(i)+three*py2(i)) * ry1(i)
366 . + (three*py1(i)+two*py2(i)) * ry2(i)
367 . + ( py1(i) + py2(i) ) * ry3(i) )
368 rxavt = -px1(i) * (
369 . + (two*py1(i)+py2(i)) * rx1(i)
370 . + (py1(i)+two*py2(i)) * rx2(i)
371 . + three*(py1(i)+py2(i)) * rx3(i) )
372 . + py1(i) * (py1(i)+three*py2(i)) * ry1(i)
373 . - py2(i) * (three*py1(i)+py2(i)) * ry2(i)
374 . + ( py2(i)**2 - py1(i)**2 ) * ry3(i)
375C
376 ezx(i) = ezx(i) + ryavt / three
377 eyz(i) = eyz(i) + rxavt / three
378 ENDDO
379C
380 DO i=1,nel
381 fac1 = one/area(i)
382 ezx(i)=ezx(i)*fac1
383 eyz(i)=eyz(i)*fac1
384 kxx(i)=kxx(i)*fac1
385 kyy(i)=kyy(i)*fac1
386 kxy(i)=kxy(i)*fac1
387 ENDDO
388C
389 RETURN
390 END SUBROUTINE c3curvi
391
subroutine c3pxpyi(jft, jlt, ismstr, px1g, py1g, py2g, px1, py1, py2, x2l, x3l, y3l, x1g, x2g, x3g, y1g, y2g, y3g, z1g, z2g, z3g, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z)
Definition c3epsini.F:271
subroutine cm1inif(jft, jlt, for, mom, ithk, thk, eint, nu, g, a1, a2, gs, kxx, kyy, kxy, exx, eyy, exy, eyz, exz, area)
Definition cm1inif.F:34
#define my_real
Definition cppsort.cpp:32
subroutine ccoefi(nel, pm, geo, nu, g, a1, a2, gs, thk, mat, prop, npt, area)
Definition fsigcini.F:235
subroutine fsigtini(fxbelm, iparg, x, pm, ixtg, geo, fxbmod, fxbsig, r, neltg)
Definition fsigtini.F:38
subroutine c3curvi(nel, vrl, px1, py1, py2, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z, eyz, ezx, kxx, kyy, kxy, area)
Definition fsigtini.F:311
subroutine c3defli(nel, vl, gstr, px1, py1, py2, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z, exx, eyy, exy, eyz, ezx, area)
Definition fsigtini.F:222
subroutine area(d1, x, x2, y, y2, eint, stif0)
#define min(a, b)
Definition macros.h:20
for(i8=*sizetab-1;i8 >=0;i8--)
subroutine c3evec3(jft, jlt, area, x1, x2, x3, y1, y2, y3, z1, z2, z3, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z, x31, y31, z31, x2l, x3l, y3l)
Definition c3evec3.F:39