OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_impvel.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!|| hm_read_impvel ../starter/source/constraints/general/impvel/hm_read_impvel.F
25!||--- called by ------------------------------------------------------
26!|| lectur ../starter/source/starter/lectur.F
27!||--- calls -----------------------------------------------------
28!|| hm_option_count ../starter/source/devtools/hm_reader/hm_option_count.F
29!|| read_impdisp ../starter/source/constraints/general/impvel/read_impdisp.F
30!|| read_impdisp_fgeo ../starter/source/constraints/general/impvel/read_impdisp_fgeo.F
31!|| read_impvel ../starter/source/constraints/general/impvel/read_impvel.F
32!|| read_impvel_fgeo ../starter/source/constraints/general/impvel/read_impvel_fgeo.F
33!|| read_impvel_lagmul ../starter/source/constraints/general/impvel/read_impvel_lagmul.F
34!|| udouble ../starter/source/system/sysfus.F
35!||--- uses -----------------------------------------------------
36!|| hm_option_read_mod ../starter/share/modules1/hm_option_read_mod.F
37!|| message_mod ../starter/share/message_module/message_mod.F
38!|| submodel_mod ../starter/share/modules1/submodel_mod.F
39!||====================================================================
40 SUBROUTINE hm_read_impvel(
41 . FBFVEL ,IBFVEL ,IKINE ,IKINE1LAG,
42 . ITAB ,ITABM1 ,IGRNOD ,X0 ,IXR ,
43 . IPART ,IPARTR ,ISKN ,NOM_OPT ,
44 . NIMPDISP ,NIMPVEL ,UNITAB ,LSUBMODEL)
45C============================================================================
46C M o d u l e s
47C-----------------------------------------------
48 USE message_mod
49 USE groupdef_mod
50 USE submodel_mod
52 USE unitab_mod
53 use element_mod , only : nixr
54C-----------------------------------------------
55C I m p l i c i t T y p e s
56C-----------------------------------------------
57#include "implicit_f.inc"
58C-----------------------------------------------
59C C o m m o n B l o c k s
60C-----------------------------------------------
61#include "com04_c.inc"
62#include "scr17_c.inc"
63#include "param_c.inc"
64C-----------------------------------------------
65C D u m m y A r g u m e n t s
66C-----------------------------------------------
67 INTEGER :: NIMPDISP,NIMPVEL
68 INTEGER ,DIMENSION(*) :: ITAB,ITABM1,IKINE,IKINE1LAG,IPARTR
69 INTEGER ,DIMENSION(LISKN,*) ,INTENT(IN) :: ISKN
70 INTEGER ,DIMENSION(LIPART1,*) ,INTENT(IN) :: IPART
71 INTEGER ,DIMENSION(NIXR,*) ,INTENT(IN) :: IXR
72 INTEGER ,DIMENSION(LNOPT1,*) ,INTENT(OUT) :: NOM_OPT
73 INTEGER ,DIMENSION(NIFV,NFXVEL) ,INTENT(OUT) :: IBFVEL
74 my_real ,DIMENSION(LFXVELR,NFXVEL) ,INTENT(OUT) :: fbfvel
75 TYPE(unit_type_),INTENT(IN) :: UNITAB
76 my_real ,DIMENSION(3,NUMNOD) ,INTENT(IN) :: x0
77 TYPE (GROUP_) ,DIMENSION(NGRNOD) ,INTENT(IN) :: IGRNOD
78 TYPE(submodel_data),DIMENSION(*) ,INTENT(IN) :: LSUBMODEL
79C-----------------------------------------------
80C L o c a l V a r i a b l e s
81C-----------------------------------------------
82 INTEGER IOPT,INUM,NOPT,NFDISP,NFVEL,FGEOD,FGEOV,NIMPDISP_0,LAGMULV
83 INTEGER ,DIMENSION(:), ALLOCATABLE :: OPTID
84 CHARACTER(nchartitle) :: MESS
85C-----------------------------------------------
86C D a t a
87C-----------------------------------------------
88 DATA mess/'IMPOSED VELOCITY DEFINITION '/
89C======================================================================|
90 inum = 0 ! init index of IBFVEL,FBFVEL (imposed node counter)
91 iopt = 0 ! init counter of impdisp, impvel and impacc options
92c--------------------------------------------------
93c READ /IMPDISP
94c--------------------------------------------------
95c
96 CALL hm_option_count('/IMPDISP' ,nimpdisp )
97 nimpdisp_0 = nimpdisp
98 CALL hm_option_count('/IMPDISP/FGEO',fgeod)
99c
100 CALL hm_option_count('/IMPVEL' ,nimpvel )
101 CALL hm_option_count('/IMPVEL/FGEO' ,fgeov)
102 CALL hm_option_count('/IMPVEL/LAGMUL',lagmulv)
103c
104 nfdisp = nimpdisp - fgeod
105 nfvel = nimpvel - fgeov - lagmulv
106 nopt = nfdisp + nfvel
107c
108c--------------------------------------------------
109 IF (nimpdisp > 0) THEN
110
111 IF (nfdisp > 0) THEN
112 CALL read_impdisp(
113 . nimpdisp ,inum ,iopt ,fbfvel ,ibfvel ,
114 . itab ,itabm1 ,ikine ,igrnod ,nom_opt ,
115 . iskn ,unitab ,lsubmodel)
116 ENDIF
117c
118 IF (fgeod > 0) THEN
120 . fgeod ,inum ,iopt ,fbfvel ,ibfvel ,
121 . itab ,itabm1 ,igrnod ,nom_opt ,x0 ,
122 . ixr ,ipart ,ipartr ,unitab ,lsubmodel)
123 ENDIF
124c
125c TEST DOUBLE IDs of IMPDISP
126c
127 ALLOCATE( optid(nimpdisp) )
128 optid(1:nimpdisp) = nom_opt(1,1:nimpdisp)
129 CALL udouble(optid,1,nimpdisp,mess,0,zero)
130 DEALLOCATE( optid )
131c
132 END IF ! NIMPDISP > 0
133 nimpdisp = inum
134c
135c--------------------------------------------------
136c READ /IMPVEL
137c--------------------------------------------------
138 IF (nimpvel > 0) THEN
139
140c
141 IF (nfvel > 0) THEN
142 CALL read_impvel(
143 . nimpvel ,inum ,iopt ,fbfvel ,ibfvel ,
144 . itab ,itabm1 ,ikine ,ikine1lag,nom_opt ,
145 . igrnod ,iskn ,unitab ,lsubmodel)
146 END IF
147c
148c READ /IMPVEL/FGEO
149c
150 IF (fgeov > 0) THEN
151 CALL read_impvel_fgeo(
152 . fgeov ,inum ,iopt ,fbfvel ,ibfvel ,
153 . itab ,itabm1 ,igrnod ,nom_opt ,x0 ,
154 . ixr ,ipart ,ipartr ,unitab ,lsubmodel)
155 END IF
156c
157c READ /IMPVEL/LAGMUL
158c
159 IF (lagmulv > 0) THEN
161 . lagmulv ,inum ,iopt ,fbfvel ,ibfvel ,
162 . itab ,itabm1 ,igrnod ,nom_opt ,x0 ,
163 . ixr ,ipart ,ipartr ,iskn ,ikine ,
164 . unitab ,lsubmodel)
165 END IF
166c
167c TEST DOUBLE IDs of IMPVEL
168c
169 ALLOCATE( optid(nimpvel) )
170 optid(1:nimpvel) = nom_opt(1,nimpdisp_0+1:nimpvel+nimpdisp_0)
171 CALL udouble(optid,1,nimpvel,mess,0,zero)
172 DEALLOCATE( optid )
173c
174 END IF ! NIMPVEL > 0
175c-----------
176 nimpvel = inum - nimpdisp
177 nfxvel = inum
178c--------------------------------------------------
179 RETURN
180 END
#define my_real
Definition cppsort.cpp:32
subroutine hm_option_count(entity_type, hm_option_number)
subroutine hm_read_impvel(fbfvel, ibfvel, ikine, ikine1lag, itab, itabm1, igrnod, x0, ixr, ipart, ipartr, iskn, nom_opt, nimpdisp, nimpvel, unitab, lsubmodel)
subroutine read_impdisp(ndisp, inum, iopt, fbfvel, ibfvel, itab, itabm1, ikine, igrnod, nom_opt, iskn, unitab, lsubmodel)
subroutine read_impdisp_fgeo(nfgeo, inum, iopt, fbfvel, ibfvel, itab, itabm1, igrnod, nom_opt, x0, ixr, ipart, ipartr, unitab, lsubmodel)
subroutine read_impvel(nfvel, inum, iopt, fbfvel, ibfvel, itab, itabm1, ikine, ikine1lag, nom_opt, igrnod, iskn, unitab, lsubmodel)
Definition read_impvel.F:48
subroutine read_impvel_fgeo(nfgeo, inum, iopt, fbfvel, ibfvel, itab, itabm1, igrnod, nom_opt, x0, ixr, ipart, ipartr, unitab, lsubmodel)
subroutine read_impvel_lagmul(nlagmul, inum, iopt, fbfvel, ibfvel, itab, itabm1, igrnod, nom_opt, x0, ixr, ipart, ipartr, iskn, ikine, unitab, lsubmodel)
subroutine udouble(list, ilist, nlist, mess, ir, rlist)
Definition sysfus.F:573