OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
s8forc3.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!|| s8forc3 ../engine/source/elements/solid/solide8/s8forc3.F
25!||--- called by ------------------------------------------------------
26!|| forint ../engine/source/elements/forint.F
27!||--- calls -----------------------------------------------------
28!|| mmain8 ../engine/source/materials/mat_share/mmain8.F
29!|| s8bilan ../engine/source/elements/solid/solide8/s8bilan.F
30!|| s8coor3 ../engine/source/elements/solid/solide8/s8coor3.F
31!|| s8cumu3 ../engine/source/elements/solid/solide8/s8cumu3.F
32!|| s8defo3 ../engine/source/elements/solid/solide8/s8defo3.F
33!|| s8deri3 ../engine/source/elements/solid/solide8/s8deri3.F
34!|| s8fint3 ../engine/source/elements/solid/solide8/s8fint3.F
35!|| s8lagr3 ../engine/source/elements/solid/solide8/s8lagr3.F
36!|| s8rota3 ../engine/source/elements/solid/solide8/s8rota3.F
37!|| scumu3p ../engine/source/elements/solid/solide/scumu3p.F
38!|| smallb3 ../engine/source/elements/solid/solide/smallb3.F
39!|| sr8bilan ../engine/source/elements/solid/solide8/sr8bilan.F
40!|| sr8coor3 ../engine/source/elements/solid/solide8/sr8coor3.F
41!|| srrota3 ../engine/source/elements/solid/solide/srrota3.F
42!|| startime ../engine/source/system/timer_mod.F90
43!|| stoptime ../engine/source/system/timer_mod.F90
44!||--- uses -----------------------------------------------------
45!|| ale_connectivity_mod ../common_source/modules/ale/ale_connectivity_mod.F
46!|| elbufdef_mod ../common_source/modules/mat_elem/elbufdef_mod.F90
47!|| glob_therm_mod ../common_source/modules/mat_elem/glob_therm_mod.F90
48!|| mat_elem_mod ../common_source/modules/mat_elem/mat_elem_mod.F90
49!|| output_mod ../common_source/modules/output/output_mod.F90
50!|| sensor_mod ../common_source/modules/sensor_mod.F90
51!|| table_mod ../engine/share/modules/table_mod.F
52!|| timer_mod ../engine/source/system/timer_mod.F90
53!||====================================================================
54 SUBROUTINE s8forc3(TIMERS, OUTPUT,
55 1 ELBUF_STR,PM ,GEO ,IXS ,X ,
56 2 A ,V ,MS ,
57 3 VEUL ,FV ,ALE_CONNECT ,IPARG ,
58 4 TF ,NPF ,BUFMAT ,PARTSAV ,
59 5 STIFN ,FSKY ,IADS ,OFFSET ,IPARTS ,
60 6 NEL ,DT2T ,NELTST ,ITYPTST ,IPM ,
61 7 ITASK ,GRESAV ,GRTH ,IGRTH ,MSSA ,
62 8 DMELS ,TABLE ,IOUTPRT,MAT_ELEM,NG,SVIS ,GLOB_THERM,
63 9 SNPC ,NUMGEO ,SBUFMAT ,STF ,NTABLE,SENSORS)
64C-----------------------------------------------
65C M o d u l e s
66C-----------------------------------------------
67 USE timer_mod
68 USE output_mod, ONLY : output_
69 USE table_mod
70 USE mat_elem_mod
72 USE elbufdef_mod
73 use glob_therm_mod
74 USE sensor_mod
75C-----------------------------------------------
76C I m p l i c i t T y p e s
77C-----------------------------------------------
78#include "implicit_f.inc"
79C-----------------------------------------------
80C G l o b a l P a r a m e t e r s
81C-----------------------------------------------
82#include "mvsiz_p.inc"
83C-----------------------------------------------
84C C o m m o n B l o c k s
85C-----------------------------------------------
86#include "com01_c.inc"
87#include "vect01_c.inc"
88#include "parit_c.inc"
89#include "timeri_c.inc"
90#include "param_c.inc"
91C-----------------------------------------------
92C D u m m y A r g u m e n t s
93C-----------------------------------------------
94 TYPE(timer_), INTENT(INOUT) :: TIMERS
95 TYPE(OUTPUT_), INTENT(INOUT) :: OUTPUT
96 INTEGER,INTENT(IN) :: SNPC
97 INTEGER,INTENT(IN) :: NUMGEO
98 INTEGER,INTENT(IN) :: SBUFMAT
99 INTEGER,INTENT(IN) :: STF
100 INTEGER,INTENT(IN) :: NTABLE
101 INTEGER IXS(*), IPARG(NPARG,*), NPF(*),IADS(8,*),
102 . IPARTS(*),IPM(*),OFFSET,NEL, NELTST, ITYPTST,ITASK,
103 . grth(*),igrth(*) ,ioutprt, ng
104C REAL
105 my_real
106 . pm(*), geo(*), x(*), a(*), v(*), ms(*),
107 . veul(*), fv(*),tf(*), bufmat(*),
108 . partsav(*),stifn(*),fsky(*), dt2t,gresav(*), mssa(*), dmels(*)
109 my_real, DIMENSION(MVSIZ,6), INTENT(INOUT) :: svis
110 TYPE (ELBUF_STRUCT_), TARGET :: ELBUF_STR
111 TYPE (MAT_ELEM_) ,TARGET ,INTENT(INOUT) :: MAT_ELEM
112 TYPE(TTABLE) TABLE(*)
113 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECT
114 type (glob_therm_) ,intent(inout) :: glob_therm
115 type (sensors_),INTENT(INOUT) :: SENSORS
116C-----------------------------------------------
117C L o c a l V a r i a b l e s
118C-----------------------------------------------
119 INTEGER I,LCO,IFLAG,IPT,IBI
120 INTEGER NC(8,MVSIZ),MXT(MVSIZ),NGL(MVSIZ),PID(MVSIZ)
121 my_real
122 . fbi
123 my_real
124 . xloc(mvsiz,8), yloc(mvsiz,8), zloc(mvsiz,8),
125 . vxloc(mvsiz,8),vyloc(mvsiz,8),vzloc(mvsiz,8),
126 . px1(mvsiz,8),px2(mvsiz,8),px3(mvsiz,8),px4(mvsiz,8),
127 . px5(mvsiz,8),px6(mvsiz,8),px7(mvsiz,8),px8(mvsiz,8),
128 . py1(mvsiz,8),py2(mvsiz,8),py3(mvsiz,8),py4(mvsiz,8),
129 . py5(mvsiz,8),py6(mvsiz,8),py7(mvsiz,8),py8(mvsiz,8),
130 . pz1(mvsiz,8),pz2(mvsiz,8),pz3(mvsiz,8),pz4(mvsiz,8),
131 . pz5(mvsiz,8),pz6(mvsiz,8),pz7(mvsiz,8),pz8(mvsiz,8),
132 . d1(mvsiz,8), d2(mvsiz,8), d3(mvsiz,8), d4(mvsiz,8),
133 . d5(mvsiz,8), d6(mvsiz,8),
134 . volgp(mvsiz,8), voln(mvsiz),deltax(mvsiz), vd2(mvsiz),
135 . wxx(mvsiz,8),wyy(mvsiz,8),wzz(mvsiz,8),dvol(mvsiz),
136 . rho0(mvsiz), sti(mvsiz),gama(mvsiz,6), off(mvsiz),
137 . vgxa(mvsiz),vgya(mvsiz),vgza(mvsiz), vga2(mvsiz),
138 . xgxa(mvsiz),xgya(mvsiz),xgza(mvsiz),
139 . xgxya(mvsiz),xgyza(mvsiz),xgzxa(mvsiz),
140 . xgxa2(mvsiz),xgya2(mvsiz),xgza2(mvsiz)
141C Variables utilisees en arguments dans les routines solides
142 my_real
143 . r11(mvsiz),r12(mvsiz),r13(mvsiz),
144 . r21(mvsiz),r22(mvsiz),r23(mvsiz),
145 . r31(mvsiz),r32(mvsiz),r33(mvsiz)
146 my_real :: ssp(mvsiz)
147 my_real :: f11(mvsiz),f12(mvsiz),f13(mvsiz),f14(mvsiz),
148 . f15(mvsiz), f16(mvsiz), f17(mvsiz), f18(mvsiz), f21(mvsiz),
149 . f22(mvsiz), f23(mvsiz), f24(mvsiz), f25(mvsiz), f26(mvsiz),
150 . f27(mvsiz), f28(mvsiz), f31(mvsiz), f32(mvsiz), f33(mvsiz),
151 . f34(mvsiz), f35(mvsiz), f36(mvsiz), f37(mvsiz), f38(mvsiz)
152
153C
154
155 my_real,
156 . DIMENSION(:), POINTER :: eint
157C-----
158 TYPE(g_bufel_) ,POINTER :: GBUF
159 TYPE(L_BUFEL_) ,POINTER :: LBUF
160C=======================================================================
161 GBUF => elbuf_str%GBUF
162C-----
163 lco=1+11*nft
164C--------------------------
165C-----------------------------------------------
166C GATHERING VECTEURS LOCAUX
167C-----------------------------------------------
168 IF (jcvt==0) THEN
169 CALL s8coor3(
170 1 gbuf%OFF,off, x, v,
171 2 ixs(lco),xloc, yloc, zloc,
172 3 vxloc, vyloc, vzloc, mxt,
173 4 nc, ngl, pid, nel)
174 ELSE
175 CALL sr8coor3(gbuf%OFF,off,x,v,ixs(lco),
176 . xloc,yloc,zloc,vxloc,vyloc,vzloc,
177 . mxt,nc,ngl,pid,
178 . r11, r12, r13, r21, r22, r23, r31, r32, r33,
179 . ioutprt,vgxa,vgya,vgza,vga2,nel,
180 . xgxa,xgya,xgza,xgxa2,xgya2,xgza2,
181 . xgxya,xgyza,xgzxa,iparg(1,ng))
182 ENDIF
183C-----------------------------------------------
184C FONCTIONS DE FORME, DEFORMATION, ET OBJECTIVITE
185C PXJ(K,I) FONCTION J DU PT INTEGRATION K ELEMENT I
186C-----------------------------------------------
187 CALL s8deri3(
188 1 xloc, yloc, zloc, px1,
189 2 px2, px3, px4, px5,
190 3 px6, px7, px8, py1,
191 4 py2, py3, py4, py5,
192 5 py6, py7, py8, pz1,
193 6 pz2, pz3, pz4, pz5,
194 7 pz6, pz7, pz8, volgp,
195 8 voln, deltax, ngl, off,
196 9 nel)
197 CALL s8lagr3(
198 1 pm, gbuf%VOL, gbuf%RHO, gbuf%EINT,
199 2 mxt, voln, rho0, dvol,
200 3 vd2, nel)
201C
202 DO ipt = 1,npt
203 lbuf => elbuf_str%BUFLY(1)%LBUF(1,1,ipt)
204 CALL s8defo3(
205 1 vxloc, vyloc, vzloc, px1,
206 2 px2, px3, px4, px5,
207 3 px6, px7, px8, py1,
208 4 py2, py3, py4, py5,
209 5 py6, py7, py8, pz1,
210 6 pz2, pz3, pz4, pz5,
211 7 pz6, pz7, pz8, ipt,
212 8 d1, d2, d3, d4,
213 9 d5, d6, wxx(1,ipt),wyy(1,ipt),
214 a wzz(1,ipt),nel, jcvt)
215 CALL s8rota3(
216 1 lbuf%SIG, wxx(1,ipt),wyy(1,ipt),wzz(1,ipt),
217 2 nel, jcvt)
218 ENDDO
219C------------------------------------------------------
220C CALCUL DES CONTRAINTES SUIVANT LOIS CONSTITUTIVES
221C------------------------------------------------------
222 IF ((itask==0).AND.(imon_mat==1)) CALL startime(timers,35)
223 CALL mmain8(timers, output, pm ,geo ,elbuf_str,mat_elem ,
224 2 ixs ,iparg ,v ,tf ,
225 3 npf ,bufmat,sti ,x ,d1 ,
226 4 d2 ,d3 ,d4 ,d5 ,d6 ,
227 5 volgp,deltax,voln ,dvol ,vd2 ,
228 6 rho0 ,mxt ,nc ,ngl ,fv ,
229 7 nel ,wxx ,wyy ,wzz ,pid ,
230 8 dt2t ,neltst,ityptst,r11 ,r21 ,
231 9 r31 ,r12 ,r22 ,r32 ,r13 ,
232 a r23 ,r33 ,off ,ipm ,gama ,
233 b mssa ,dmels ,table ,ssp ,itask ,
234 c svis ,snpc ,numgeo ,sbufmat ,stf ,
235 d ntable)
236 IF ((itask==0).AND.(imon_mat==1)) CALL stoptime(timers,35)
237C--------------------------
238C BILANS PAR MATERIAU
239C--------------------------
240 iflag=mod(ncycle,ncpri)
241 IF(ioutprt>0)THEN
242c NB3S = NB3
243c IF (MTN==11) NB3S = NB14
244 IF (mtn == 11) THEN
245 eint => elbuf_str%GBUF%EINS(1:nel)
246 ELSE
247 eint => elbuf_str%GBUF%EINT(1:nel)
248 ENDIF
249 IF (jcvt==0)THEN
250 CALL s8bilan(partsav,eint,gbuf%RHO,gbuf%RK,gbuf%VOL,
251 . voln,vxloc,vyloc,vzloc,iparts,
252 . gresav,grth,igrth,xloc,yloc,zloc,itask,iparg(1,ng),sensors)
253 ELSE
254 CALL sr8bilan(partsav,eint,gbuf%RHO,gbuf%RK,gbuf%VOL,
255 . voln,vgxa,vgya,vgza,vga2,iparts,
256 . gresav,grth,igrth,xgxa,xgya,xgza,
257 . xgxa2,xgya2,xgza2,xgxya,xgyza,xgzxa,itask,iparg(1,ng),sensors)
258 ENDIF
259 ENDIF
260C----------------------------
261C OFF
262C----------------------------
263 CALL smallb3(
264 1 gbuf%OFF,off, nel, ismstr)
265C----------------------------
266C INTERNAL FORCES
267C----------------------------
268 CALL s8fint3(elbuf_str%BUFLY(1) ,volgp,gbuf%QVIS,
269 . px1,px2,px3,px4,px5,px6,px7,px8,
270 . py1,py2,py3,py4,py5,py6,py7,py8,
271 . pz1,pz2,pz3,pz4,pz5,pz6,pz7,pz8,nel,
272 . f11, f12, f13, f14,
273 . f15, f16, f17, f18, f21,
274 . f22, f23, f24, f25, f26,
275 . f27, f28, f31, f32, f33,
276 . f34, f35, f36, f37, f38,
277 . svis)
278
279C----------------------------
280C CONVECTE --> GLOBAL.
281C----------------------------
282 IF (jcvt==1) THEN
283 CALL srrota3(
284 1 r11, r21, r31, r12,
285 2 r22, r32, r13, r23,
286 3 r33, f11, f12, f13,
287 4 f14, f15, f16, f17,
288 5 f18, f21, f22, f23,
289 6 f24, f25, f26, f27,
290 7 f28, f31, f32, f33,
291 8 f34, f35, f36, f37,
292 9 f38, nel)
293 ENDIF
294C-------------------------
295C ASSEMBLE
296C-------------------------
297 IF(iparit==0)THEN
298 CALL s8cumu3(
299 1 gbuf%OFF,a, nc, stifn,
300 2 sti, f11, f21, f31,
301 3 f12, f22, f32, f13,
302 4 f23, f33, f14, f24,
303 5 f34, f15, f25, f35,
304 6 f16, f26, f36, f17,
305 7 f27, f37, f18, f28,
306 8 f38, nel)
307 ELSE
308 fbi = zero
309 CALL scumu3p(
310 1 gbuf%OFF,sti, fsky, fsky,
311 2 iads, f11, f21, f31,
312 3 f12, f22, f32, f13,
313 4 f23, f33, f14, f24,
314 5 f34, f15, f25, f35,
315 6 f16, f26, f36, f17,
316 7 f27, f37, f18, f28,
317 8 f38, ibi, ibi, ibi,
318 9 ibi, ibi, ibi, ibi,
319 a ibi, fbi, fbi, fbi,
320 b fbi, fbi, fbi, fbi,
321 c fbi, fbi, fbi, fbi,
322 d fbi, fbi, fbi, fbi,
323 e fbi, fbi, fbi, fbi,
324 f fbi, fbi, fbi, fbi,
325 g fbi, fbi, fbi, fbi,
326 h fbi, fbi, fbi, fbi,
327 i nel, nft, jthe, isrot,
328 j ipartsph,glob_therm%NODADT_THERM)
329 ENDIF
330C
331C-----------
332 RETURN
333 END
#define my_real
Definition cppsort.cpp:32
subroutine mmain8(timers, output, pm, geo, elbuf_str, mat_elem, ix, iparg, v, tf, npf, bufmat, stifn, x, d1, d2, d3, d4, d5, d6, volgp, deltax, voln, dvol, vd2, rho0, mat, nc, ngl, fv, nel, wxx, wyy, wzz, pid, dt2t, neltst, ityptst, rx, ry, rz, sx, sy, sz, tx, ty, tz, off, ipm, gama, mssa, dmels, table, ssp, itask, svis, snpc, numgeo, sbufmat, stf, ntable)
Definition mmain8.F:69
subroutine s8bilan(partsav, eint, rho, rk, vol, vnew, vx, vy, vz, iparts, gresav, grth, igrth, x, y, z, itask, iparg, sensors)
Definition s8bilan.F:36
subroutine s8coor3(offg, off, x, v, ixs, xloc, yloc, zloc, vxloc, vyloc, vzloc, mxt, nc, ngl, pid, nel)
Definition s8coor3.F:33
subroutine s8cumu3(offg, e, nc, stifn, sti, f11, f21, f31, f12, f22, f32, f13, f23, f33, f14, f24, f34, f15, f25, f35, f16, f26, f36, f17, f27, f37, f18, f28, f38, nel)
Definition s8cumu3.F:37
subroutine s8defo3(vx, vy, vz, px1, px2, px3, px4, px5, px6, px7, px8, py1, py2, py3, py4, py5, py6, py7, py8, pz1, pz2, pz3, pz4, pz5, pz6, pz7, pz8, ipt, d1, d2, d3, d4, d5, d6, wxx, wyy, wzz, nel, jcvt)
Definition s8defo3.F:39
subroutine s8deri3(x, y, z, px1, px2, px3, px4, px5, px6, px7, px8, py1, py2, py3, py4, py5, py6, py7, py8, pz1, pz2, pz3, pz4, pz5, pz6, pz7, pz8, vlinc, vol, deltax, ngl, off, nel)
Definition s8deri3.F:44
subroutine s8fint3(bufly, volgp, qvis, px1, px2, px3, px4, px5, px6, px7, px8, py1, py2, py3, py4, py5, py6, py7, py8, pz1, pz2, pz3, pz4, pz5, pz6, pz7, pz8, nel, f11, f12, f13, f14, f15, f16, f17, f18, f21, f22, f23, f24, f25, f26, f27, f28, f31, f32, f33, f34, f35, f36, f37, f38, svis)
Definition s8fint3.F:39
subroutine s8forc3(timers, output, elbuf_str, pm, geo, ixs, x, a, v, ms, veul, fv, ale_connect, iparg, tf, npf, bufmat, partsav, stifn, fsky, iads, offset, iparts, nel, dt2t, neltst, ityptst, ipm, itask, gresav, grth, igrth, mssa, dmels, table, ioutprt, mat_elem, ng, svis, glob_therm, snpc, numgeo, sbufmat, stf, ntable, sensors)
Definition s8forc3.F:64
subroutine s8lagr3(pm, vol0, rho, eint, mxt, voln, rho0, dvol, vd2, nel)
Definition s8lagr3.F:32
subroutine s8rota3(sig, wxx, wyy, wzz, nel, jcvt)
Definition s8rota3.F:31
subroutine scumu3p(offg, sti, fsky, fskyv, iads, f11, f21, f31, f12, f22, f32, f13, f23, f33, f14, f24, f34, f15, f25, f35, f16, f26, f36, f17, f27, f37, f18, f28, f38, nc1, nc2, nc3, nc4, nc5, nc6, nc7, nc8, ar, fr_wave, fr_wav, mx1, my1, mz1, mx2, my2, mz2, mx3, my3, mz3, mx4, my4, mz4, mx5, my5, mz5, mx6, my6, mz6, mx7, my7, mz7, mx8, my8, mz8, them, fthesky, condnsky, conde, nel, nft, jthe, isrot, ipartsph, nodadt_therm)
Definition scumu3p.F:56
subroutine smallb3(offg, off, nel, ismstr)
Definition smallb3.F:44
subroutine sr8bilan(partsav, eint, rho, rk, vol, vnew, vxa, vya, vza, va2, iparts, gresav, grth, igrth, xx, yy, zz, xx2, yy2, zz2, xy, yz, zx, itask, iparg, sensors)
Definition sr8bilan.F:37
subroutine sr8coor3(offg, off, x, v, ixs, xloc, yloc, zloc, vxloc, vyloc, vzloc, mxt, nc, ngl, pid, r11, r12, r13, r21, r22, r23, r31, r32, r33, ioutprt, vgax, vgay, vgaz, vga2, nel, xgax, xgay, xgaz, xgxa2, xgya2, xgza2, xgxya, xgyza, xgzxa, iparg)
Definition sr8coor3.F:38
subroutine srrota3(r11, r12, r13, r21, r22, r23, r31, r32, r33, x1, x2, x3, x4, x5, x6, x7, x8, y1, y2, y3, y4, y5, y6, y7, y8, z1, z2, z3, z4, z5, z6, z7, z8)
Definition srrota3.F:33
subroutine startime(event, itask)
Definition timer.F:93
subroutine stoptime(event, itask)
Definition timer.F:135