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