OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
section.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!|| section ../engine/source/tools/sect/section.F
25!||--- called by ------------------------------------------------------
26!|| section_io ../engine/source/tools/sect/section_io.F
27!||--- calls -----------------------------------------------------
28!|| section_skew ../engine/source/tools/sect/section_skew.F
29!|| section_skewp ../engine/source/tools/sect/section_skewp.f
30!||====================================================================
31 SUBROUTINE section(NNOD,N1 ,N2 ,N3 ,NSTRF ,X ,
32 2 V ,VR ,FSAV ,FOPTA,SECFCUM,MS ,
33 3 IN ,IFRAM,XSEC)
34C-----------------------------------------------
35C I m p l i c i t T y p e s
36C-----------------------------------------------
37#include "implicit_f.inc"
38C-----------------------------------------------
39C C o m m o n B l o c k s
40C-----------------------------------------------
41#include "comlock.inc"
42#include "com01_c.inc"
43#include "com08_c.inc"
44#include "param_c.inc"
45C-----------------------------------------------
46C D u m m y A r g u m e n t s
47C-----------------------------------------------
48 INTEGER NNOD,N1, N2, N3,IFRAM
49 INTEGER NSTRF(*)
50 my_real x(3,*), fsav(nthvki), fopta(6), secfcum(7,*),
51 . v(3,*), vr(3,*),ms(*),in(*),xsec(4,3)
52C-----------------------------------------------
53C L o c a l V a r i a b l e s
54C-----------------------------------------------
55 integer
56 . j, i, k, i1, i2, n
58 . fx1, fy1, fz1,mx1, my1, mz1, dx1,dy1, dz1,fst(35),
59 . msx, msy, msz, xx1, yy1, zz1, xx2, yy2, zz2, xx3, yy3, zz3,
60 . xx4, yy4, zz4, xx5, yy5, zz5, xx6, yy6, zz6, xxn, yyn, zzn,
61 . d13, xxc, yyc, zzc, fsx, fsy, fsz, fn, fsnx, fsny, fsnz, fstx,
62 . fsty, fstz, dmx, dmy, dmz
63C-----------------------------------------------
64C
65C---------------------------------------------------------
66C
67 DO i=1,35
68 fst(i)=zero
69 ENDDO
70C
71 IF(nspmd==1) THEN
72 CALL section_skew(n1 ,n2 ,n3 ,x , xxc, yyc, zzc,
73 2 xx4, yy4, zz4, xx5, yy5, zz5, xx6, yy6, zz6,
74 3 xxn, yyn, zzn,ifram,nnod,nstrf,ms)
75 ELSE
76 CALL section_skewp(xxc, yyc, zzc, xx4 , yy4 , zz4 ,
77 2 xx5, yy5, zz5, xx6 , yy6 , zz6 ,
78 3 xxn, yyn, zzn, ifram, n1 , xsec)
79 END IF
80C
81 IF(iroddl/=0)THEN
82 DO i=1,nnod
83 n=nstrf(i)
84C
85 fx1=secfcum(1,n)
86 fy1=secfcum(2,n)
87 fz1=secfcum(3,n)
88C
89 mx1=secfcum(5,n)
90 my1=secfcum(6,n)
91 mz1=secfcum(7,n)
92C
93 dx1=x(1,n)
94 dy1=x(2,n)
95 dz1=x(3,n)
96C
97 fsx=fx1
98 fsy=fy1
99 fsz=fz1
100C
101 fn=fsx*xxn+fsy*yyn+fsz*zzn
102 fsnx=fn*xxn
103 fsny=fn*yyn
104 fsnz=fn*zzn
105 fstx=fsx-fsnx
106 fsty=fsy-fsny
107 fstz=fsz-fsnz
108C
109 dx1=dx1-xxc
110 dy1=dy1-yyc
111 dz1=dz1-zzc
112C
113 msx =dy1*fz1-dz1*fy1
114 msy =dz1*fx1-dx1*fz1
115 msz =dx1*fy1-dy1*fx1
116C
117 msx =msx+mx1
118 msy =msy+my1
119 msz =msz+mz1
120C
121 dmx =msx*xx4+msy*yy4+msz*zz4
122 dmy =msx*xx5+msy*yy5+msz*zz5
123 dmz =msx*xx6+msy*yy6+msz*zz6
124C
125 fst(1)=fst(1)+fsnx
126 fst(2)=fst(2)+fsny
127 fst(3)=fst(3)+fsnz
128 fst(4)=fst(4)+fstx
129 fst(5)=fst(5)+fsty
130 fst(6)=fst(6)+fstz
131 fst(7)=fst(7)+dmx
132 fst(8)=fst(8)+dmy
133 fst(9)=fst(9)+dmz
134 fst(30) = fst(30) + fsx
135 fst(31) = fst(31) + fsy
136 fst(32) = fst(32) + fsz
137 fst(33) = fst(33) + msx
138 fst(34) = fst(34) + msy
139 fst(35) = fst(35) + msz
140 fst(10)=fst(10)
141 . +fx1*v(1,n) +fy1*v(2,n) +fz1*v(3,n)
142 fst(15)=fst(15)
143 . +mx1*vr(1,n)+my1*vr(2,n)+mz1*vr(3,n)
144 fst(20)=fst(20)
145 . +ms(n)*(v(1,n)*v(1,n)+v(2,n)*v(2,n)+v(3,n)*v(3,n))
146 fst(21)=fst(21)
147 . +in(n)*(vr(1,n)*vr(1,n)+vr(2,n)*vr(2,n)+vr(3,n)*vr(3,n))
148C
149 ENDDO
150 ELSE
151c on ne traite pas les VR car IRODDL vaut 0
152 DO i=1,nnod
153 n=nstrf(i)
154C
155 fx1=secfcum(1,n)
156 fy1=secfcum(2,n)
157 fz1=secfcum(3,n)
158C
159 mx1=secfcum(5,n)
160 my1=secfcum(6,n)
161 mz1=secfcum(7,n)
162C
163 dx1=x(1,n)
164 dy1=x(2,n)
165 dz1=x(3,n)
166C
167 fsx=fx1
168 fsy=fy1
169 fsz=fz1
170C
171 fn=fsx*xxn+fsy*yyn+fsz*zzn
172 fsnx=fn*xxn
173 fsny=fn*yyn
174 fsnz=fn*zzn
175 fstx=fsx-fsnx
176 fsty=fsy-fsny
177 fstz=fsz-fsnz
178C
179 dx1=dx1-xxc
180 dy1=dy1-yyc
181 dz1=dz1-zzc
182C
183 msx =dy1*fz1-dz1*fy1
184 msy =dz1*fx1-dx1*fz1
185 msz =dx1*fy1-dy1*fx1
186C
187 msx =msx+mx1
188 msy =msy+my1
189 msz =msz+mz1
190C
191 dmx =msx*xx4+msy*yy4+msz*zz4
192 dmy =msx*xx5+msy*yy5+msz*zz5
193 dmz =msx*xx6+msy*yy6+msz*zz6
194C
195 fst(1)=fst(1)+fsnx
196 fst(2)=fst(2)+fsny
197 fst(3)=fst(3)+fsnz
198 fst(4)=fst(4)+fstx
199 fst(5)=fst(5)+fsty
200 fst(6)=fst(6)+fstz
201 fst(7)=fst(7)+dmx
202 fst(8)=fst(8)+dmy
203 fst(9)=fst(9)+dmz
204 fst(30) = fst(30) + fsx
205 fst(31) = fst(31) + fsy
206 fst(32) = fst(32) + fsz
207 fst(33) = fst(33) + msx
208 fst(34) = fst(34) + msy
209 fst(35) = fst(35) + msz
210 fst(10)=fst(10)
211 . +fx1*v(1,n) +fy1*v(2,n) +fz1*v(3,n)
212 fst(20)=fst(20)
213 . +ms(n)*(v(1,n)*v(1,n)+v(2,n)*v(2,n)+v(3,n)*v(3,n))
214C
215 ENDDO
216 ENDIF
217C
218#include "lockon.inc"
219 fsav(1)=fsav(1)+dt12*fst(1)
220 fsav(2)=fsav(2)+dt12*fst(2)
221 fsav(3)=fsav(3)+dt12*fst(3)
222 fsav(4)=fsav(4)+dt12*fst(4)
223 fsav(5)=fsav(5)+dt12*fst(5)
224 fsav(6)=fsav(6)+dt12*fst(6)
225 fsav(7)=fsav(7)+dt12*fst(7)
226 fsav(8)=fsav(8)+dt12*fst(8)
227 fsav(9)=fsav(9)+dt12*fst(9)
228 fsav(10)=fsav(10)+dt12*(fst(10)+fst(15))
229 fsav(15)=fsav(15)+dt12*fst(15)
230 fsav(20)=half*fst(20)
231 fsav(21)=half*fst(21)
232 fsav(31)=fsav(31)+dt12*fst(33)
233 fsav(32)=fsav(32)+dt12*fst(34)
234 fsav(33)=fsav(33)+dt12*fst(35)
235 fsav(34)=fsav(34) + dt12* (xx4*(fst(1)+fst(4)) +
236 . yy4*(fst(2)+fst(5)) + zz4*(fst(3)+fst(6)))
237 fsav(35)=fsav(35) + dt12* (xx5*(fst(1)+fst(4)) +
238 . yy5*(fst(2)+fst(5)) + zz5*(fst(3)+fst(6)))
239 fsav(36)=fsav(36) + dt12* (xx6*(fst(1)+fst(4)) +
240 . yy6*(fst(2)+fst(5)) + zz6*(fst(3)+fst(6)))
241 fsav(37)=xxc
242 fsav(38)=yyc
243 fsav(39)=zzc
244C
245 fopta(1) = fopta(1) + fst(30)
246 fopta(2) = fopta(2) + fst(31)
247 fopta(3) = fopta(3) + fst(32)
248 fopta(4) = fopta(4) + fst(33)
249 fopta(5) = fopta(5) + fst(34)
250 fopta(6) = fopta(6) + fst(35)
251#include "lockoff.inc"
252C
253 RETURN
254 END
#define my_real
Definition cppsort.cpp:32
subroutine section(nnod, n1, n2, n3, nstrf, x, v, vr, fsav, fopta, secfcum, ms, in, ifram, xsec)
Definition section.F:34
subroutine section_skew(n1, n2, n3, x, xxc, yyc, zzc, xx4, yy4, zz4, xx5, yy5, zz5, xx6, yy6, zz6, xxn, yyn, zzn, ifram, nnod, nod, ms)
subroutine section_skewp(xxc, yyc, zzc, xx4, yy4, zz4, xx5, yy5, zz5, xx6, yy6, zz6, xxn, yyn, zzn, ifram, n1, xsec)