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
53C-----------------------------------------------
54C I m p l i c i t T y p e s
55C-----------------------------------------------
56#include "implicit_f.inc"
57C-----------------------------------------------
58C C o m m o n B l o c k s
59C-----------------------------------------------
60#include "com04_c.inc"
61#include "scr17_c.inc"
62#include "param_c.inc"
63C-----------------------------------------------
64C D u m m y A r g u m e n t s
65C-----------------------------------------------
66 INTEGER :: NIMPDISP,NIMPVEL
67 INTEGER ,DIMENSION(*) :: ITAB,ITABM1,IKINE,IKINE1LAG,IPARTR
68 INTEGER ,DIMENSION(LISKN,*) ,INTENT(IN) :: ISKN
69 INTEGER ,DIMENSION(LIPART1,*) ,INTENT(IN) :: IPART
70 INTEGER ,DIMENSION(NIXR,*) ,INTENT(IN) :: IXR
71 INTEGER ,DIMENSION(LNOPT1,*) ,INTENT(OUT) :: NOM_OPT
72 INTEGER ,DIMENSION(NIFV,NFXVEL) ,INTENT(OUT) :: IBFVEL
73 my_real ,DIMENSION(LFXVELR,NFXVEL) ,INTENT(OUT) :: fbfvel
74 TYPE(UNIT_TYPE_),INTENT(IN) :: UNITAB
75 my_real ,DIMENSION(3,NUMNOD) ,INTENT(IN) :: x0
76 TYPE (GROUP_) ,DIMENSION(NGRNOD) ,INTENT(IN) :: IGRNOD
77 TYPE(submodel_data),DIMENSION(*) ,INTENT(IN) :: LSUBMODEL
78C-----------------------------------------------
79C L o c a l V a r i a b l e s
80C-----------------------------------------------
81 INTEGER IOPT,INUM,NOPT,NFDISP,NFVEL,FGEOD,FGEOV,NIMPDISP_0,LAGMULV
82 INTEGER ,DIMENSION(:), ALLOCATABLE :: OPTID
83 CHARACTER(nchartitle) :: MESS
84C-----------------------------------------------
85C D a t a
86C-----------------------------------------------
87 DATA mess/'imposed velocity definition '/
88C======================================================================|
89 INUM = 0 ! init index of IBFVEL,FBFVEL (imposed node counter)
90 IOPT = 0 ! init counter of impdisp, impvel and impacc options
91c--------------------------------------------------
92c READ /IMPDISP
93c--------------------------------------------------
94c
95 CALL HM_OPTION_COUNT('/impdisp' ,NIMPDISP )
96 NIMPDISP_0 = NIMPDISP
97 CALL HM_OPTION_COUNT('/impdisp/fgeo',FGEOD)
98c
99 CALL HM_OPTION_COUNT('/impvel' ,NIMPVEL )
100 CALL HM_OPTION_COUNT('/impvel/fgeo' ,FGEOV)
101 CALL HM_OPTION_COUNT('/impvel/lagmul',LAGMULV)
102c
103 NFDISP = NIMPDISP - FGEOD
104 NFVEL = NIMPVEL - FGEOV - LAGMULV
105 NOPT = NFDISP + NFVEL
106c
107c--------------------------------------------------
108 IF (NIMPDISP > 0) THEN
109
110 IF (NFDISP > 0) THEN
111 CALL READ_IMPDISP(
112 . NIMPDISP ,INUM ,IOPT ,FBFVEL ,IBFVEL ,
113 . ITAB ,ITABM1 ,IKINE ,IGRNOD ,NOM_OPT ,
114 . ISKN ,UNITAB ,LSUBMODEL)
115 ENDIF
116c
117 IF (FGEOD > 0) THEN
118 CALL READ_IMPDISP_FGEO(
119 . FGEOD ,INUM ,IOPT ,FBFVEL ,IBFVEL ,
120 . ITAB ,ITABM1 ,IGRNOD ,NOM_OPT ,X0 ,
121 . IXR ,IPART ,IPARTR ,UNITAB ,LSUBMODEL)
122 ENDIF
123c
124c TEST DOUBLE IDs of IMPDISP
125c
126 ALLOCATE( OPTID(NIMPDISP) )
127 OPTID(1:NIMPDISP) = NOM_OPT(1,1:NIMPDISP)
128 CALL UDOUBLE(OPTID,1,NIMPDISP,MESS,0,ZERO)
129 DEALLOCATE( OPTID )
130c
131 END IF ! NIMPDISP > 0
132 NIMPDISP = INUM
133c
134c--------------------------------------------------
135c READ /IMPVEL
136c--------------------------------------------------
137 IF (NIMPVEL > 0) THEN
138
139c
140 IF (NFVEL > 0) THEN
141 CALL READ_IMPVEL(
142 . NIMPVEL ,INUM ,IOPT ,FBFVEL ,IBFVEL ,
143 . ITAB ,ITABM1 ,IKINE ,IKINE1LAG,NOM_OPT ,
144 . IGRNOD ,ISKN ,UNITAB ,LSUBMODEL)
145 END IF
146c
147c READ /IMPVEL/FGEO
148c
149 IF (FGEOV > 0) THEN
150 CALL READ_IMPVEL_FGEO(
151 . FGEOV ,INUM ,IOPT ,FBFVEL ,IBFVEL ,
152 . ITAB ,ITABM1 ,IGRNOD ,NOM_OPT ,X0 ,
153 . IXR ,IPART ,IPARTR ,UNITAB ,LSUBMODEL)
154 END IF
155c
156c READ /IMPVEL/LAGMUL
157c
158 IF (LAGMULV > 0) THEN
159 CALL READ_IMPVEL_LAGMUL(
160 . LAGMULV ,INUM ,IOPT ,FBFVEL ,IBFVEL ,
161 . ITAB ,ITABM1 ,IGRNOD ,NOM_OPT ,X0 ,
162 . IXR ,IPART ,IPARTR ,ISKN ,IKINE ,
163 . UNITAB ,LSUBMODEL)
164 END IF
165c
166c TEST DOUBLE IDs of IMPVEL
167c
168 ALLOCATE( OPTID(NIMPVEL) )
169 OPTID(1:NIMPVEL) = NOM_OPT(1,NIMPDISP_0+1:NIMPVEL+NIMPDISP_0)
170 CALL UDOUBLE(OPTID,1,NIMPVEL,MESS,0,ZERO)
171 DEALLOCATE( OPTID )
172c
173 END IF ! NIMPVEL > 0
174c-----------
175 NIMPVEL = INUM - NIMPDISP
176 NFXVEL = INUM
177c--------------------------------------------------
178 RETURN
179 END
#define my_real
Definition cppsort.cpp:32
subroutine hm_read_impvel(fbfvel, ibfvel, ikine, ikine1lag, itab, itabm1, igrnod, x0, ixr, ipart, ipartr, iskn, nom_opt, nimpdisp, nimpvel, unitab, lsubmodel)
subroutine udouble(list, ilist, nlist, mess, ir, rlist)
Definition sysfus.F:589
program starter
Definition starter.F:39