OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_inter_type01.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_inter_type01 ../starter/source/interfaces/int01/hm_read_inter_type01.f
25!||--- called by ------------------------------------------------------
26!|| hm_read_inter_fsi ../starter/source/interfaces/reader/hm_read_inter_fsi.F
27!||--- calls -----------------------------------------------------
28!|| hm_get_intv ../starter/source/devtools/hm_reader/hm_get_intv.F
29!|| ngr2usr ../starter/source/system/nintrr.F
30!||--- uses -----------------------------------------------------
31!|| message_mod ../starter/share/message_module/message_mod.F
32!|| submodel_mod ../starter/share/modules1/submodel_mod.F
33!||====================================================================
34 SUBROUTINE hm_read_inter_type01(IPARI, STFAC, FRIGAP, IGRSURF, LSUBMODEL, NSURF, NOINT, NPARI, NPARIR)
35C-----------------------------------------------
36C D e s c r i p t i o n
37C-----------------------------------------------
38 ! Reader for interface type 1 (/INTER/TYPE1)
39 ! FSI COUPLING INTERFACE : ALE (secondary side) versus LAGRANGE (main side)
40C-----------------------------------------------
41C M o d u l e s
42C-----------------------------------------------
43 USE message_mod
44 USE groupdef_mod , ONLY : surf_
47C-----------------------------------------------
48C I m p l i c i t T y p e s
49C-----------------------------------------------
50#include "implicit_f.inc"
51C-----------------------------------------------
52C D u m m y A r g u m e n t s
53C-----------------------------------------------
54 INTEGER,INTENT(IN) :: NPARI, NPARIR !< array sizes IPARI and FRIGAP
55 INTEGER,INTENT(IN) :: NSURF !< number of surfaces : array size for IGRSURF
56 INTEGER,INTENT(IN) :: NOINT !< interface identifier
57 INTEGER,INTENT(INOUT) :: IPARI(NPARI) !< interface buffer (integer)
58 my_real,INTENT(INOUT) :: frigap(nparir) !< interface buffer (real)
59 my_real,INTENT(INOUT) :: stfac !< stiffness value or stiffness factor
60 TYPE(submodel_data),INTENT(IN),DIMENSION(NSUBMOD) :: LSUBMODEL !< SUBMODEL data structure
61 TYPE (SURF_),INTENT(IN),TARGET,DIMENSION(NSURF) :: IGRSURF !< surface sata structure
62C-----------------------------------------------
63C C o m m o n B l o c k s
64C-----------------------------------------------
65#include "units_c.inc"
66C-----------------------------------------------
67C L o c a l V a r i a b l e s
68C-----------------------------------------------
69 my_real fric,gap,startt,stopt !< interface parameters
70 INTEGER ISU1,ISU2 !< surface identifiers
71 INTEGER I,J,L, NTYP,IS1,IS2,IGSTI,ILEV,IVOID
72 INTEGER, DIMENSION(:), POINTER :: INGR2USR
73 LOGICAL :: IS_AVAILABLE
74 CHARACTER(len=nchartitle) :: MSGTITL
75C-----------------------------------------------
76C E x t e r n a l F u n c t i o n s
77C-----------------------------------------------
78 INTEGER, EXTERNAL :: NGR2USR
79C-----------------------------------------------
80
81 ! Initializations
82 is1=0
83 is2=0
84 igsti=0
85 ilev=0
86
87 fric=zero
88 gap=zero
89 startt=zero
90 stopt=ep20
91
92 ntyp=1
93 ipari(15)=noint
94 ipari(7)=ntyp
95
96 IF(stfac == zero) stfac = one_fifth
97
98C------------------------------------------------------------
99C Card1 : surface identifiers
100C------------------------------------------------------------
101
102 CALL hm_get_intv('surf_IDA', isu1, is_available, lsubmodel)
103 CALL hm_get_intv('surf_IDL', isu2, is_available, lsubmodel)
104 !--- CHECKS
105 is1=1
106 is2=1
107 ingr2usr => igrsurf(1:nsurf)%ID
108 isu1=ngr2usr(isu1,ingr2usr,nsurf)
109 isu2=ngr2usr(isu2,ingr2usr,nsurf)
110
111 !---Storage in data structure
112 ipari(45)=isu1
113 ipari(46)=isu2
114 ipari(13)=is1*10+is2
115 ipari(20)=ilev
116 frigap(3)=startt
117 frigap(11)=stopt
118C
119C------------------------------------------------------------
120C PRINTOUT
121C------------------------------------------------------------
122C
123 WRITE(iout,1501)
124
125C--------------------------------------------------------------
126 IF(is1==0)THEN
127 WRITE(iout,'(6X,A)')'NO SECONDARY SURFACE INPUT (ALE)'
128 ELSEIF(is1==1)THEN
129 WRITE(iout,'(6X,A)')'SECONDARY SURFACE INPUT BY SEGMENTS (ALE)'
130 ELSEIF(is1==2)THEN
131 WRITE(iout,'(6X,A)')'SECONDARY SURFACE INPUT BY NODES (ALE)'
132 ELSEIF(is1==3)THEN
133 WRITE(iout,'(6X,A)')'SECONDARY SURFACE INPUT BY SEGMENTS (ALE)'
134 ELSEIF(is1==4 )THEN
135 WRITE(iout,'(6X,A)')'SECONDARY SIDE INPUT BY BRICKS (ALE)'
136 ELSEIF(is1==5 )THEN
137 WRITE(iout,'(6X,A)')'SECONDARY SIDE INPUT BY SOLID ELEMENTS (ALE)'
138 ENDIF
139 IF(is2==0)THEN
140 WRITE(iout,'(6X,A)')'NO MAIN SURFACE INPUT (LAGRANGE)'
141 ELSEIF(is2==1)THEN
142 WRITE(iout,'(6X,A)')'MAIN SURFACE INPUT BY SEGMENTS (LAGRANGE)'
143 ELSEIF(is2==2)THEN
144 WRITE(iout,'(6X,A)')'MAIN SURFACE INPUT BY NODES (LAGRANGE)'
145 ELSEIF(is2==3)THEN
146 WRITE(iout,'(6X,A)')'MAIN SURFACE INPUT BY SEGMENTS (LAGRANGE)'
147 ELSEIF(is2==4)THEN
148 WRITE(iout,'(6X,A)')'MAIN SURFACE REFERS TO A HYPER-ELLIPSOIDAL SURFACE'
149 ENDIF
150C
151C--------------------------------------------------------------
152 1000 FORMAT(/1x,' INTERFACE NUMBER :',i10,1x,a)
153C------------
154 RETURN
155
156 1501 FORMAT(//
157 . ' TYPE==1 ALE(SECONDARY)/LAGRANGE(MAIN) ' //)
158
159 END
#define my_real
Definition cppsort.cpp:32
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_read_inter_type01(ipari, stfac, frigap, igrsurf, lsubmodel, nsurf, noint, npari, nparir)
integer, parameter nchartitle
integer, parameter ncharkey
integer, parameter ncharfield
integer nsubmod
program starter
Definition starter.F:39