OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
rbycor.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!|| rbycor ../engine/source/constraints/general/rbody/rbycor.F
25!||--- called by ------------------------------------------------------
26!|| resol ../engine/source/engine/resol.F
27!||--- calls -----------------------------------------------------
28!|| rgbcor ../engine/source/constraints/general/rbody/rgbcor.F
29!||--- uses -----------------------------------------------------
30!|| imp_dyna ../engine/share/modules/impbufdef_mod.F
31!||====================================================================
32 SUBROUTINE rbycor(RBY ,X ,V ,VR ,SKEW ,FSAV ,
33 2 LPBY,NPBY,ISKEW,ITAB,WEIGHT ,A ,
34 3 AR ,MS ,IN ,KIND,IRBKIN_L,NRBYKIN_L,
35 3 WEIGHT_MD,MS_2D)
36C-----------------------------------------------
37 USE imp_dyna
38C----6---------------------------------------------------------------7---------8
39C I m p l i c i t T y p e s
40C-----------------------------------------------
41#include "implicit_f.inc"
42#include "comlock.inc"
43C-----------------------------------------------
44C C o m m o n B l o c k s
45C-----------------------------------------------
46#include "com04_c.inc"
47#include "scr11_c.inc"
48#include "param_c.inc"
49#include "impl1_c.inc"
50C-----------------------------------------------------------------
51C D u m m y A r g u m e n t s
52C-----------------------------------------------
53 INTEGER WEIGHT(*),LPBY(*),NPBY(NNPBY,*),ISKEW(*),ITAB(*),
54 . KIND(NRBYKIN),IRBKIN_L(*),NRBYKIN_L,WEIGHT_MD(*)
55C REAL
57 . rby(nrby,*) ,x(3,*) ,v(3,*) ,vr(3,*),skew(*),
58 . fsav(nthvki,*) ,a(3,*),ar(3,*),in(*),ms(*) ,ms_2d(*)
59C-----------------------------------------------
60C L o c a l V a r i a b l e s
61C-----------------------------------------------
62 INTEGER J,K,N,KK
63C REAL
64 my_real
65 . enrot_t,encin_t,xmass_t,
66 . xmomt_t,ymomt_t,zmomt_t,encin2_t,enrot2_t
67C-----------------------------------------------
68C-------------------------------------
69C CALCUL SUPER RIGID BODIES (non multi-thread) sur premiere tache libre
70C-------------------------------------
71!$OMP SINGLE
72 DO kk=1,nrbykin_l
73 n=irbkin_l(kk)
74 k = kind(n)
75 IF(npby(7,n)>0.AND.npby(4,n)/=0)THEN
76 j = ninter+nrwall+n
77 IF( idyna>0 ) THEN
78 CALL rgbcor(
79 1 dy_v,dy_vr,x,rby(1,n),lpby(k),
80 2 npby(1,n),skew,iskew,fsav(1,j),itab,
81 3 weight,dy_a,dy_ar,ms,in,enrot,encin,xmass,
82 4 xmomt,ymomt,zmomt,npby(4,n),weight_md,encin2,enrot2,
83 5 ms_2d)
84 ELSE
85 CALL rgbcor(
86 1 v,vr,x,rby(1,n),lpby(k),
87 2 npby(1,n),skew,iskew,fsav(1,j),itab,
88 3 weight,a,ar,ms,in,enrot,encin,xmass,
89 4 xmomt,ymomt,zmomt,npby(4,n),weight_md,encin2,enrot2,
90 5 ms_2d)
91 ENDIF
92 ENDIF
93 ENDDO
94!$omp END single
95C-------------------------------------
96C CALCUL FORCE RIGID BODIES CLASSIQUES (multi-thread)
97C-------------------------------------
98C
99C optimisation locks
100 enrot_t=zero
101 encin_t=zero
102 xmass_t=zero
103 xmomt_t=zero
104 ymomt_t=zero
105 zmomt_t=zero
106 enrot2_t=zero
107 encin2_t=zero
108C
109!$OMP DO SCHEDULE(DYNAMIC,1)
110 DO kk=1,nrbykin_l
111 n = irbkin_l(kk)
112 k = kind(n)
113 IF( npby(7,n)>0.AND.npby(4,n)==0)THEN
114 j = ninter+nrwall+n
115 IF( idyna>0 ) THEN
116 CALL rgbcor(
117 1 dy_v,dy_vr,x,rby(1,n),lpby(k),
118 2 npby(1,n),skew,iskew,fsav(1,j),itab,
119 3 weight,dy_a,dy_ar,ms,in,enrot_t,encin_t,xmass_t,
120 4 xmomt_t,ymomt_t,zmomt_t,npby(4,n),weight_md,encin2_t,
121 5 enrot2_t,ms_2d)
122 ELSE
123 CALL rgbcor(
124 1 v,vr,x,rby(1,n),lpby(k),
125 2 npby(1,n),skew,iskew,fsav(1,j),itab,
126 3 weight,a,ar,ms,in,enrot_t,encin_t,xmass_t,
127 4 xmomt_t,ymomt_t,zmomt_t,npby(4,n),weight_md,encin2_t,
128 5 enrot2_t,ms_2d)
129 ENDIF
130 ENDIF
131 ENDDO
132!$OMP END DO NOWAIT
133C
134#include "lockon.inc"
135 enrot=enrot + enrot_t
136 encin=encin + encin_t
137 xmass=xmass + xmass_t
138 xmomt=xmomt + xmomt_t
139 ymomt=ymomt + ymomt_t
140 zmomt=zmomt + zmomt_t
141 encin2=encin2 + encin2_t
142 enrot2=enrot2 + enrot2_t
143#include "lockoff.inc"
144C
145 RETURN
146 END
#define my_real
Definition cppsort.cpp:32
subroutine rbycor(rby, x, v, vr, skew, fsav, lpby, npby, iskew, itab, weight, a, ar, ms, in, kind, irbkin_l, nrbykin_l, weight_md, ms_2d)
Definition rbycor.F:36
subroutine rgbcor(v, vr, x, rby, nod, nby, skew, iskew, fs, itab, weight, a, ar, ms, in, enrot_t, encin_t, xmass_t, xmomt_t, ymomt_t, zmomt_t, isens, weight_md, encin2_t, enrot2_t, ms_2d)
Definition rgbcor.F:37