OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
srfvit.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!|| srfvit ../engine/source/constraints/general/rbody/srfvit.F
25!||--- called by ------------------------------------------------------
26!|| resol ../engine/source/engine/resol.F
27!||--- calls -----------------------------------------------------
28!|| rotbmr ../engine/source/tools/skew/rotbmr.f
29!||--- uses -----------------------------------------------------
30!|| groupdef_mod ../common_source/modules/groupdef_mod.F
31!||====================================================================
32 SUBROUTINE srfvit(X,V,VR,A,AR,
33 2 NPBY,RBY ,MS ,IN ,
34 3 IGRSURF ,BUFSF )
35C-----------------------------------------------
36C M o d u l e s
37C-----------------------------------------------
38 USE groupdef_mod
39C=======================================================================
40C
41C * Retour des conditions cinematiques vers les surfaces
42C * Envoi des positions ou devra etre effectue le calcul des forces
43C dans les interfaces, au pas suivant.
44C=======================================================================
45C----6---------------------------------------------------------------7---------8
46C I m p l i c i t T y p e s
47C-----------------------------------------------
48#include "implicit_f.inc"
49#include "comlock.inc"
50C-----------------------------------------------
51C C o m m o n B l o c k s
52C-----------------------------------------------
53#include "com04_c.inc"
54#include "com08_c.inc"
55#include "param_c.inc"
56C-----------------------------------------------------------------
57C D u m m y A r g u m e n t s
58C-----------------------------------------------
59 INTEGER NPBY(NNPBY,*)
60C REAL
62 . x(3,*) ,v(3,*) ,vr(3,*) ,a(3,*) ,ar(3,*) ,
63 . rby(nrby,*) ,in(*) ,ms(*),
64 . bufsf(*)
65 TYPE (SURF_) , DIMENSION(NSURF) :: IGRSURF
66C-----------------------------------------------
67C L o c a l V a r i a b l e s
68C-----------------------------------------------
69 INTEGER ISU, ADRSRF, IM, NRBOD
70 my_real
71 . vi(3), vm(3), vrm(3)
72C
73
74!$OMP DO
75
76 DO isu=1,nsurf
77
78 IF ( igrsurf(isu)%TYPE==101 ) THEN
79 nrbod=igrsurf(isu)%NB_MADYMO
80 IF ( nrbod/=0 ) THEN
81C ISURF(9,ISU)==1 (RIGID BODIES) !
82C A chaque instant (et a TT=0. dans le Starter),
83C le Rigid Body transmet la position et les vitesses du noeud main
84C a la surface.
85 im=npby(1,nrbod)
86 adrsrf=igrsurf(isu)%IAD_BUFR
87 bufsf(adrsrf+16)=x(1,im)
88 bufsf(adrsrf+17)=x(2,im)
89 bufsf(adrsrf+18)=x(3,im)
90 vm(1) =v(1,im) +a(1,im)*dt12
91 vm(2) =v(2,im) +a(2,im)*dt12
92 vm(3) =v(3,im) +a(3,im)*dt12
93 vrm(1)=vr(1,im)+ar(1,im)*dt12
94 vrm(2)=vr(2,im)+ar(2,im)*dt12
95 vrm(3)=vr(3,im)+ar(3,im)*dt12
96 bufsf(adrsrf+19)= vm(1)
97 bufsf(adrsrf+20)= vm(2)
98 bufsf(adrsrf+21)= vm(3)
99 bufsf(adrsrf+22)=vrm(1)
100 bufsf(adrsrf+23)=vrm(2)
101 bufsf(adrsrf+24)=vrm(3)
102C Translation et Rotation de la surface.
103C deplacer apres SORTIES :
104 bufsf(adrsrf+4)=bufsf(adrsrf+4)+vm(1)*dt2
105 bufsf(adrsrf+5)=bufsf(adrsrf+5)+vm(2)*dt2
106 bufsf(adrsrf+6)=bufsf(adrsrf+6)+vm(3)*dt2
107 CALL rotbmr(vrm,bufsf(adrsrf+7),dt2)
108 END IF
109 END IF
110 END DO
111
112!$OMP END DO
113
114C-----------------------------------------------
115 200 CONTINUE
116 RETURN
117 END
#define my_real
Definition cppsort.cpp:32
subroutine rotbmr(vr, rby, dt)
Definition rotbmr.F:35
subroutine srfvit(x, v, vr, a, ar, npby, rby, ms, in, igrsurf, bufsf)
Definition srfvit.F:35