OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
fxbyfor.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!|| fxbyfor ../engine/source/constraints/fxbody/fxbyfor.F
25!||--- called by ------------------------------------------------------
26!|| resol ../engine/source/engine/resol.F
27!||--- calls -----------------------------------------------------
28!|| fxbodfp1 ../engine/source/constraints/fxbody/fxbodfp.F
29!|| fxbodfp2 ../engine/source/constraints/fxbody/fxbodfp.F
30!|| spmd_fxb_for ../engine/source/mpi/kinematic_conditions/spmd_fxb_for.F
31!|| spmd_fxb_for_pon ../engine/source/mpi/kinematic_conditions/spmd_fxb_for_pon.F
32!||--- uses -----------------------------------------------------
33!|| elbufdef_mod ../common_source/modules/mat_elem/elbufdef_mod.F90
34!|| output_mod ../common_source/modules/output/output_mod.f90
35!|| python_funct_mod ../common_source/modules/python_mod.F90
36!|| sensor_mod ../common_source/modules/sensor_mod.F90
37!||====================================================================
38 SUBROUTINE fxbyfor(OUTPUT,FXBIPM, FXBRPM, FXBNOD , FXBMOD , FXBGLM ,
39 . FXBCPM, FXBCPS, FXBLM , FXBFLS , FXBDLS ,
40 . FXBDEP, FXBVIT, FXBACC , A , AR ,
41 . X , FXBMVN, FXBMCD , FXBSE , FXBSV ,
42 . FXBELM, FXBSIG, ELBUF , PARTSAV , ELBUF_TAB,
43 . FSAV , FXBFP , FXBEFW , FXBFC , D ,
44 . DT2T , ITYPTST, NELTST , FXBGRVI , FXBGRVR,
45 . IGRV , NPC , TF , FXBGRP , FXBGRW ,
46 . IPARG , NSENSOR,SENSOR_TAB, IAD_ELEM, FR_ELEM,
47 . AGRV , PYTHON)
48C-----------------------------------------------
49C M o d u l e s
50C-----------------------------------------------
51 USE python_funct_mod, ONLY : python_
52 USE elbufdef_mod
53 USE sensor_mod
54 USE output_mod
55C-----------------------------------------------
56C I m p l i c i t T y p e s
57C-----------------------------------------------
58#include "implicit_f.inc"
59C-----------------------------------------------
60C C o m m o n B l o c k s
61C-----------------------------------------------
62#include "com01_c.inc"
63#include "com04_c.inc"
64#include "com08_c.inc"
65#include "scr03_c.inc"
66#include "scr07_c.inc"
67#include "scr18_c.inc"
68#include "param_c.inc"
69#include "fxbcom.inc"
70#include "task_c.inc"
71#include "parit_c.inc"
72C-----------------------------------------------
73C D u m m y A r g u m e n t s
74C-----------------------------------------------
75 TYPE(output_), INTENT(INOUT) :: OUTPUT
76 INTEGER ,INTENT(IN) :: NSENSOR
77 INTEGER FXBIPM(NBIPM,*), FXBNOD(*), FXBELM(*), ITYPTST, NELTST,
78 . FXBGRVI(*), IGRV(NIGRV,*), NPC(*), IPARG(NPARG,*),
79 . IAD_ELEM(2,*), FR_ELEM(*)
80 my_real
81 . FXBRPM(*), FXBMOD(*), FXBGLM(*), FXBCPM(*), FXBCPS(*),
82 . FXBLM(*), FXBFLS(*), FXBDLS(*), FXBDEP(*), FXBVIT(*),
83 . FXBACC(*), A(3,*), AR(3,*), X(3,*), FXBMVN(*),
84 . fxbmcd(*), fxbse(*), fxbsv(*), fxbsig(*), elbuf(*) ,
85 . partsav(*),fsav(nthvki,*), fxbfp(*),fxbefw(*),
86 . fxbfc(*), d(3,*), dt2t, fxbgrvr(*), tf(*), fxbgrp(*),
87 . fxbgrw(*), agrv(lfacgrv,*)
88 TYPE (ELBUF_STRUCT_), DIMENSION (NGROUP) :: ELBUF_TAB
89 TYPE (SENSOR_STR_) ,DIMENSION(NSENSOR) :: SENSOR_TAB
90 TYPE(python_) :: python
91C-----------------------------------------------
92C L o c a l V a r i a b l e s
93C-----------------------------------------------
94 INTEGER NFX,ANOD,AMOD,AGLM,ACP,ALM,AFLS,ADLS,AVAR,ARPM,
95 . NME,NMOD,AMCD,ASE,ITN,NCYCLP1,AELM,ASIG,N2,NN2,
96 . AGRVI,AGRVR,NLGRAV,NSN,I,PMAIN
97 my_real mfextp(lenvar)
98 INTEGER NSNT, NMMAX, IAD(NFXBODY), ANOD2, J
99 my_real, DIMENSION(:,:), ALLOCATABLE :: fskyfxb
100C=======================================================================
101 n2=ninter+nrwall+nrbody+nsect+njoint+nrbag+nvolu
102 itn=0
103 IF(tt<output%TANIM) itn=1
104 ncyclp1=ncycle+1
105 IF((ncyclp1/ncrst)*ncrst==ncyclp1.OR.mrest/=0) itn=0
106 DO i=1,lenvar
107 mfextp(i)=zero
108 ENDDO
109 IF (iparit/=0) THEN
110 nsnt=0
111 nmmax=0
112 DO nfx=1,nfxbody
113 nmod=fxbipm(4,nfx)
114 nme=fxbipm(17,nfx)
115 nsn=fxbipm(18,nfx)
116 nmmax=max(nmmax,nme+nmod)
117 iad(nfx)=nsnt
118 nsnt=nsnt+nsn
119 ENDDO
120 ALLOCATE(fskyfxb(nsnt,1+nmmax))
121 DO i=1,nsnt
122 DO j=1,nmmax
123 fskyfxb(i,j)=zero
124 ENDDO
125 ENDDO
126 ELSE
127 ALLOCATE(fskyfxb(0,0))
128 ENDIF
129 DO nfx=1,nfxbody
130 nmod=fxbipm(4,nfx)
131 anod=fxbipm(6,nfx)
132 amod=fxbipm(7,nfx)
133 avar=fxbipm(13,nfx)
134 arpm=fxbipm(14,nfx)
135 nme=fxbipm(17,nfx)
136 aelm=fxbipm(19,nfx)
137 asig=fxbipm(20,nfx)
138 nsn=fxbipm(18,nfx)
139 anod2=anod+fxbipm(3,nfx)
140 IF (nsn+fxbipm(3,nfx)>0)
141 .CALL fxbodfp1(
142 .fxbipm(1,nfx),fxbrpm(arpm),fxbnod(anod),fxbmod(amod),fxbdep(avar),
143 .fxbvit(avar) ,fxbacc(avar),a ,ar ,nme ,
144 .nmod ,itn ,fxbelm ,fxbsig ,elbuf ,
145 .partsav ,x ,d ,iparg ,nfx ,
146 .nsn ,mfextp(avar),iad_elem ,fr_elem ,nsnt ,
147 .fskyfxb ,iad(nfx) ,fxbnod(anod2),elbuf_tab )
148 ENDDO
149C
150 IF (iparit==0) THEN
151 IF(nspmd > 1) CALL spmd_fxb_for(fxbipm, mfextp)
152 ELSE
153 CALL spmd_fxb_for_pon(fxbipm, mfextp, fskyfxb, nsnt, iad)
154 ENDIF
155 DEALLOCATE(fskyfxb)
156C
157 DO nfx=1,nfxbody
158 nn2=n2+nfx
159 nmod=fxbipm(4,nfx)
160 aglm=fxbipm(8,nfx)
161 acp =fxbipm(9,nfx)
162 alm =fxbipm(10,nfx)
163 afls=fxbipm(11,nfx)
164 adls=fxbipm(12,nfx)
165 avar=fxbipm(13,nfx)
166 arpm=fxbipm(14,nfx)
167 amcd=fxbipm(15,nfx)
168 ase =(nfx-1)*15+1
169 nme=fxbipm(17,nfx)
170 nlgrav=fxbipm(25,nfx)
171 agrvi=fxbipm(26,nfx)
172 agrvr=fxbipm(27,nfx)
173 pmain=fxbipm(39,nfx)
174 IF (ispmd==pmain) THEN
175 IF (dt2t>dtfac1(11)*fxbrpm(arpm)) THEN
176 dt2t=dtfac1(11)*fxbrpm(arpm)
177 ityptst=11
178 neltst=fxbipm(2,nfx)
179 ENDIF
180 CALL fxbodfp2(
181 .fxbipm(1,nfx),fxbrpm(arpm),fxbglm(aglm),fxbcpm(acp) ,fxbcps(acp) ,
182 .fxblm(alm) ,fxbfls(afls),fxbdls(adls),fxbdep(avar),fxbvit(avar),
183 .nme ,nmod ,fxbmvn(acp) ,fxbmcd(amcd),fxbse(ase) ,
184 .fxbsv(alm) ,fsav(1,nn2) ,fxbfp(avar) ,fxbefw(nfx) ,fxbfc(alm) ,
185 .fxbgrvi(agrvi),fxbgrvr(agrvr),nlgrav ,igrv ,npc ,
186 .tf ,fxbgrp(avar),fxbgrw(nfx) ,sensor_tab ,nsensor ,
187 .mfextp(avar) ,agrv ,python )
188 ENDIF
189 ENDDO
190C
191 RETURN
192 END
193
subroutine fxbodfp2(fxbipm, fxbrpm, fxbglm, fxbcpm, fxbcps, fxblm, fxbfls, fxbdls, fxbdep, fxbvit, nme, nmod, mvn, mcd, se, sv, fsav, fxbfp, wfext, fxbfc, fxbgrvi, fxbgrvr, nlgrav, igrv, npc, tf, fxbgrp, tfgrav, sensor_tab, nsensor, mfext, agrv, python)
Definition fxbodfp.F:240
subroutine fxbodfp1(fxbipm, fxbrpm, fxbnod, fxbmod, fxbdep, fxbvit, fxbacc, a, ar, nme, nmod, itn, fxbelm, fxbsig, elbuf, partsav, x, d, iparg, nfx, nsn, mfext, iad_elem, fr_elem, nsnt, fskyfxb, iadn, iadsky, elbuf_tab)
Definition fxbodfp.F:40
subroutine fxbyfor(output, fxbipm, fxbrpm, fxbnod, fxbmod, fxbglm, fxbcpm, fxbcps, fxblm, fxbfls, fxbdls, fxbdep, fxbvit, fxbacc, a, ar, x, fxbmvn, fxbmcd, fxbse, fxbsv, fxbelm, fxbsig, elbuf, partsav, elbuf_tab, fsav, fxbfp, fxbefw, fxbfc, d, dt2t, ityptst, neltst, fxbgrvi, fxbgrvr, igrv, npc, tf, fxbgrp, fxbgrw, iparg, nsensor, sensor_tab, iad_elem, fr_elem, agrv, python)
Definition fxbyfor.F:48
#define max(a, b)
Definition macros.h:21
subroutine spmd_fxb_for(fxbipm, mfextp)
subroutine spmd_fxb_for_pon(fxbipm, mfextp, fskyfxb, dsky, iadn)