OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_inter_lagmul_type07.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!||====================================================================
25!||--- called by ------------------------------------------------------
26!|| hm_read_inter_lagmul ../starter/source/interfaces/reader/hm_read_inter_lagmul.F
27!||--- calls -----------------------------------------------------
28!|| ancmsg ../starter/source/output/message/message.F
29!|| hm_get_floatv ../starter/source/devtools/hm_reader/hm_get_floatv.F
30!|| hm_get_intv ../starter/source/devtools/hm_reader/hm_get_intv.F
31!|| ngr2usr ../starter/source/system/nintrr.F
32!||--- uses -----------------------------------------------------
33!|| message_mod ../starter/share/message_module/message_mod.f
34!|| submodel_mod ../starter/share/modules1/submodel_mod.F
35!||====================================================================
37 1 IPARI ,STFAC ,FRIGAP ,NOINT ,
38 2 IGRNOD ,IGRSURF ,TITR ,UNITAB ,LSUBMODEL )
39C============================================================================
40C-----------------------------------------------
41C M o d u l e s
42C-----------------------------------------------
43 USE message_mod
44 USE groupdef_mod
45 USE submodel_mod
46 USE unitab_mod
48C-----------------------------------------------
49C I m p l i c i t T y p e s
50C-----------------------------------------------
51#include "implicit_f.inc"
52C-----------------------------------------------
53C C o m m o n B l o c k s
54C-----------------------------------------------
55#include "com01_c.inc"
56#include "com04_c.inc"
57#include "scr06_c.inc"
58#include "units_c.inc"
59C-----------------------------------------------
60C D u m m y A r g u m e n t s
61C-----------------------------------------------
62 INTEGER ISU1,ISU2,NOINT,NI
63 INTEGER IPARI(*)
65 . frigap(*), stfac
66 CHARACTER(LEN=NCHARTITLE)::TITR
67C-----------------------------------------------
68 TYPE (GROUP_) ,TARGET, DIMENSION(NGRNOD) :: IGRNOD
69 TYPE (SURF_) ,TARGET , DIMENSION(NSURF) :: IGRSURF
70 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
71 TYPE(submodel_data) LSUBMODEL(*)
72C-----------------------------------------------
73C L o c a l V a r i a b l e s
74C-----------------------------------------------
75 INTEGER I,J,L, NTYP,MULTIMP,FLAGREMNOD,
76 . IREM7I2,IS1,IS2
78 . startt,bumult,stopt,gapmax,gap
79 CHARACTER MESS*40
80!
81 INTEGER, DIMENSION(:), POINTER :: INGR2USR
82 LOGICAL IS_AVAILABLE
83C-----------------------------------------------
84C E x t e r n a l F u n c t i o n s
85C-----------------------------------------------
86 INTEGER NGR2USR
87C=======================================================================
88C /INTER/LAGMUL/TYPE2 reading
89C=======================================================================
90 is1=0
91 is2=0
92 multimp = 0
93 irem7i2=0
94C
95 ntyp = 7
96 ipari(15)=noint
97 ipari(7)=ntyp
98C
99 is_available = .false.
100C------------------------------------------------------------
101C Card1
102C------------------------------------------------------------
103 CALL hm_get_intv('secondaryentityids',isu1,is_available,lsubmodel)
104 CALL hm_get_intv('mainentityids',isu2,is_available,lsubmodel)
105C
106 IF(isu2==0) THEN
107 CALL ancmsg(msgid=119,
108 . msgtype=msgerror,
109 . anmode=aninfo,
110 . i1=noint,
111 . c1=titr)
112 ENDIF
113C
114 is2=1
115 ingr2usr => igrsurf(1:nsurf)%ID
116 isu2=ngr2usr(isu2,ingr2usr,nsurf)
117 IF(isu1/=0)THEN
118 ingr2usr => igrnod(1:ngrnod)%ID
119 isu1=ngr2usr(isu1,ingr2usr,ngrnod)
120 is1 =2
121 ENDIF
122 IF(isu1==0)THEN
123 isu1=isu2
124 is1 =1
125 ENDIF
126C------------------------------------------------------------
127 IF(frigap(16)==zero)THEN
128 gapmax=ep30
129 frigap(16)=gapmax
130 END IF
131C------------------------------------------------------------
132 flagremnod = 0
133 IF (flagremnod == 0) flagremnod = 1
134 ipari(63) = flagremnod
135C
136 IF (irem7i2==0) THEN
137 IF (iimplicit>0) irem7i2=1
138 END IF
139 ipari(54) = irem7i2
140C------------------------------------------------------------
141C Card4
142C------------------------------------------------------------
143 CALL hm_get_floatv('Gapmin',gap,is_available,lsubmodel,unitab)
144 frigap(2)=gap
145C
146C STARTT & STOPT are actually working but not documented
147C IF (STOPT == ZERO) STOPT = EP30
148C
149 startt = zero
150 stopt = ep30
151 frigap(3)=startt
152 frigap(11)=stopt
153C
154 IF(stfac==zero) THEN
155 stfac=one
156 ENDIF
157C
158C------------------------------------------------------------
159C Card5
160C------------------------------------------------------------
161 CALL hm_get_floatv('BUMULT',bumult,is_available,lsubmodel,unitab)
162
163 IF(bumult==zero) THEN
164 bumult = bmul0
165C bmult augmente pour les tres gros modeles et interface 7 ou 20
166 IF(ntyp==7)THEN
167 IF(numnod > 2500000) THEN
168 bumult = bmul0*two
169 ELSEIF(numnod > 1500000) THEN
170 bumult = bmul0*three/two
171 END IF
172 END IF
173 END IF
174 frigap(4)=bumult
175
176C FRIGAP(10) is initialized but used only in engine for storing number of couples candidates
177 frigap(10)=float(0)
178 multimp = 4
179 ipari(23)=multimp
180
181 ipari(13)=is1*10+is2
182
183 ipari(15)=noint
184
185 ipari(45)=isu1
186 ipari(46)=isu2
187C
188C------------------------------------------------------------
189C PRINTOUT
190C------------------------------------------------------------
191C
192 WRITE(iout,1527)
193C
194 IF(is1==0)THEN
195 WRITE(iout,'(6X,A)')'NO SECONDARY SURFACE INPUT'
196 ELSEIF(is1==1)THEN
197 WRITE(iout,'(6X,A)')'SECONDARY SURFACE INPUT BY SEGMENTS'
198 ELSEIF(is1==2)THEN
199 WRITE(iout,'(6X,A)')'SECONDARY SURFACE INPUT BY NODES'
200 ELSEIF(is1==3)THEN
201 WRITE(iout,'(6X,A)')'SECONDARY SURFACE INPUT BY SEGMENTS'
202 ELSEIF(is1==4 )THEN
203 WRITE(iout,'(6X,A)')'SECONDARY SIDE INPUT BY BRICKS'
204 ELSEIF(is1==5 )THEN
205 WRITE(iout,'(6X,A)')'SECONDARY SIDE INPUT BY SOLID ELEMENTS'
206 ENDIF
207 IF(is2==0)THEN
208 WRITE(iout,'(6X,A)')'NO MAIN SURFACE INPUT'
209 ELSEIF(is2==1)THEN
210 WRITE(iout,'(6X,A)')'MAIN SURFACE INPUT BY SEGMENTS'
211 ELSEIF(is2==2)THEN
212 WRITE(iout,'(6X,A)')'MAIN SURFACE INPUT BY NODES'
213 ELSEIF(is2==3)THEN
214 WRITE(iout,'(6X,A)')'MAIN SURFACE INPUT BY SEGMENTS'
215 ELSEIF(is2==4)THEN
216 WRITE(iout,'(6X,A)')'MAIN SURFACE REFERS ',
217 . 'TO HYPER-ELLIPSOIDAL SURFACE'
218 ENDIF
219C
220C--------------------------------------------------------------
221 RETURN
222 1527 FORMAT(//
223 . ' TYPE==7 PARALLEL/AUTO IMPACTING ' /,
224 . ' LAGRANGE MULTIPLIER FORMULATION ' //)
225 END
#define my_real
Definition cppsort.cpp:32
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_read_inter_lagmul_type07(ipari, stfac, frigap, noint, igrnod, igrsurf, titr, unitab, lsubmodel)
integer, parameter nchartitle
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
Definition message.F:889
program starter
Definition starter.F:39