OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_load_centri.F File Reference
#include "implicit_f.inc"
#include "param_c.inc"
#include "com04_c.inc"
#include "units_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine hm_read_load_centri (icfield, lcfield, cfield, itab, itabm1, igrnod, npc, sensors, unitab, iframe, lsubmodel)

Function/Subroutine Documentation

◆ hm_read_load_centri()

subroutine hm_read_load_centri ( integer, dimension(sizfield,*) icfield,
integer, dimension(*) lcfield,
cfield,
integer, dimension(*) itab,
integer, dimension(*) itabm1,
type (group_), dimension(ngrnod) igrnod,
integer, dimension(*) npc,
type (sensors_), intent(in) sensors,
type (unit_type_), intent(in) unitab,
integer, dimension(liskn,*) iframe,
type (submodel_data), dimension(*), intent(in) lsubmodel )

Definition at line 42 of file hm_read_load_centri.F.

45C
46C-----------------------------------------------
47C FAC_M FACL FAC_T : enable to convert (custom) input unit to working unit system
48C FAC_MASS, FAC_LENGTH, FAC_TIME : enable to convert working unit system into International Unit system
49C-----------------------------------------------
50C M o d u l e s
51C-----------------------------------------------
52 USE unitab_mod
53 USE r2r_mod
54 USE message_mod
55 USE groupdef_mod
56 USE submodel_mod
58 USE sensor_mod
60C-----------------------------------------------
61C I m p l i c i t T y p e s
62C-----------------------------------------------
63#include "implicit_f.inc"
64C-----------------------------------------------
65C C o m m o n B l o c k s
66C-----------------------------------------------
67#include "param_c.inc"
68#include "com04_c.inc"
69#include "units_c.inc"
70C-----------------------------------------------
71C D u m m y A r g u m e n t s
72C-----------------------------------------------
73 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
74 INTEGER ICFIELD(SIZFIELD,*), LCFIELD(*), ITAB(*), ITABM1(*),
75 . NPC(*),IFRAME(LISKN,*)
76 my_real cfield(lfacload,*)
77C-----------------------------------------------
78 TYPE (GROUP_) , DIMENSION(NGRNOD) :: IGRNOD
79 TYPE (SUBMODEL_DATA),INTENT(IN)::LSUBMODEL(*)
80 TYPE (SENSORS_) ,INTENT(IN) :: SENSORS
81C-----------------------------------------------
82C L o c a l V a r i a b l e s
83C-----------------------------------------------
85 . fcx,fcy,fac_fcx,fac_fcy
86 INTEGER I,J,K,K1,K2,NOD, NCUR, IFRA, ISENS,NN,IGU,IGS,
87 . UID,IAD,ID,IFLAGUNIT,NCURS,TSENS,IFRAS, IVAR, ISU, IDIR,
88 . SUB_INDEX, SUB_ID
89 INTEGER FLAG_FMT,FLAG_FMT_TMP,IFIX_TMP
90 CHARACTER MESS*40,char_X*1, char_Y*1, char_Z*1, char_XX*2, char_YY*2, char_ZZ*2
91 CHARACTER(LEN=NCHARFIELD) :: XYZ
92 CHARACTER(LEN=NCHARTITLE)::TITR
93 LOGICAL IS_AVAILABLE
94
95 DATA char_x/'X'/
96 DATA char_y/'Y'/
97 DATA char_z/'Z'/
98 DATA char_xx/'XX'/
99 DATA char_yy/'YY'/
100 DATA char_zz/'ZZ'/
101 DATA mess/'CENTRIFUGAL LOAD DEFINITION '/
102C-----------------------------------------------
103C E x t e r n a l F u n c t i o n s
104C-----------------------------------------------
105 INTEGER NODGRNR5
106 EXTERNAL nodgrnr5
107C-----------------------------------------------
108C C o m m e n t s
109C-----------------------------------------------
110C
111C /LOAD/CENTRI
112C
113C ICFIELD(SIZFIELD,NLOADC)
114C ICFIELD(1,K) : NN Nb of nodes
115C ICFIELD(2,K) : IDIR Direction of the load
116C ICFIELD(3,K) : NCURS Velocity function internal number
117C ICFIELD(4,K) : IAD Address of nodes in skyline vector LCFIELD
118C ICFIELD(5,K) : 1 ! Type /LOAD/CENTRI
119C ICFIELD(6,K) : TSENS Sensor internal number
120C ICFIELD(7,K) : IFRAS Frame internal number
121C ICFIELD(8,K) : IVAR Flag for vel variation
122C ICFIELD(9,K) : ID User ID of this /LOAD/CENTRI
123C ICFIELD(10,K):
124C ICFIELD(11,K):
125C ICFIELD(12,K):
126C ICFIELD(13,K):
127C-----------------------------------------------
128C LCFIELD(SLCFIELD) skyline vector of nodes vs all /LOAD/CENTRI
129C-----------------------------------------------
130C CFIELD(LFACLOAD,NLOADC)
131C CFIELD(1,K) : FCY
132C CFIELD(2,K) : ONE/FCX
133C-----------------------------------------------
134C S o u r c e L i n e s
135C-----------------------------------------------
136 is_available = .false.
137
138 iad = 1
139 nn = 0
140
141C--------------------------------------------------
142C START BROWSING MODEL CLOAD
143C--------------------------------------------------
144 CALL hm_option_start('/LOAD/CENTRI')
145C--------------------------------------------------
146C BROWSING MODEL 1..NLOADC
147C--------------------------------------------------
148 DO k=1,nloadc
149C--------------------------------------------------
150C EXTRACT DATAS OF /LOAD/CENTRI... LINE
151C--------------------------------------------------
152 CALL hm_option_read_key(lsubmodel,
153 . option_id = id,
154 . unit_id = uid,
155 . submodel_id = sub_id,
156 . submodel_index = sub_index,
157 . option_titr = titr)
158C--------------------------------------------------
159C EXTRACT DATAS (STRING VALUES)
160C--------------------------------------------------
161 xyz = ''
162 CALL hm_get_string('rad_dir',XYZ,ncharfield,IS_AVAILABLE)
163C--------------------------------------------------
164C EXTRACT DATAS (INTEGER VALUES)
165C--------------------------------------------------
166 CALL HM_GET_INTV('curveid',NCUR,IS_AVAILABLE,LSUBMODEL)
167 CALL HM_GET_INTV('inputsystem',IFRA,IS_AVAILABLE,LSUBMODEL)
168.AND. IF(IFRA == 0 SUB_ID /= 0 ) THEN
169 CALL ANCMSG(MSGID = 1712,
170 . ANMODE = ANINFO,
171 . MSGTYPE = MSGWARNING,
172 . I1 = ID,
173 . I2 = SUB_ID,
174 . C1 = '/load/centri - frame_id=0',
175 . C2 = TITR)
176 END IF
177 CALL HM_GET_INTV('rad_sensor_id',ISENS,IS_AVAILABLE,LSUBMODEL)
178 CALL HM_GET_INTV('entityid',igu,is_available,lsubmodel)
179 CALL hm_get_intv('rad_ivar_flag',ivar,is_available,lsubmodel)
180C--------------------------------------------------
181C EXTRACT DATAS (REAL VALUES)
182C--------------------------------------------------
183 CALL hm_get_floatv('xscale',fcx,is_available,lsubmodel,unitab)
184 CALL hm_get_floatv_dim('xscale',fac_fcx,is_available,lsubmodel,unitab)
185 CALL hm_get_floatv('magnitude',fcy,is_available,lsubmodel,unitab)
186 CALL hm_get_floatv_dim('magnitude',fac_fcy,is_available,lsubmodel,unitab)
187C--------------------------------------------------
188 iflagunit = 0
189 DO j=1,unitab%NUNITS
190 IF (unitab%UNIT_ID(j) == uid) THEN
191 iflagunit = 1
192 EXIT
193 ENDIF
194 ENDDO
195 IF (uid/=0.AND.iflagunit==0) THEN
196 CALL ancmsg(msgid = 659,
197 . anmode = aninfo,
198 . msgtype = msgerror,
199 . i2 = uid,
200 . i1 = id,
201 . c1 = 'CENTRIFUGAL LOAD',
202 . c2 = 'CENTRIFUGAL LOAD',
203 . c3 = titr)
204 ENDIF
205C-----------
206 idir=0
207 IF(xyz(1:1)==char_x) idir=1
208 IF(xyz(1:1)==char_y) idir=2
209 IF(xyz(1:1)==char_z) idir=3
210 IF(xyz(1:2)==char_xx)idir=4
211 IF(xyz(1:2)==char_yy)idir=5
212 IF(xyz(1:2)==char_zz)idir=6
213 IF(idir==0) THEN
214 CALL ancmsg(msgid=881,
215 . msgtype=msgerror,
216 . anmode=aninfo_blind_1,
217 . i1=id,
218 . c1=xyz)
219 ENDIF
220C-----------
221 ncurs=0
222 DO j=1,nfunct
223 IF(npc(nfunct+j+1)==ncur)ncurs=j
224 ENDDO
225 IF(ncurs==0)THEN
226 CALL ancmsg(msgid=883,
227 . msgtype=msgerror,
228 . anmode=aninfo_blind_1,
229 . i1=id,
230 . c1=titr,
231 . i2=ncur)
232 ENDIF
233C-----------
234 IF (fcx == zero) fcx = fac_fcx
235 IF (fcy == zero) fcy = fac_fcy
236C-----------
237 IF(ifra /=0)THEN
238 DO j=0,numfram
239 IF(ifra==iframe(4,j+1)) THEN
240 ifras=j
241 EXIT
242 ENDIF
243 IF (j==numfram) THEN
244 CALL ancmsg(msgid=490,
245 . msgtype=msgerror,
246 . anmode=aninfo_blind_1,
247 . c1='/LOAD/CENTRI',
248 . i1=id,
249 . c2='/LOAD/CENTRI',
250 . c3=titr,
251 . i2=ifra)
252 ENDIF
253 ENDDO
254 ELSE
255 ifras=0
256 ENDIF
257C-----------
258 tsens = 0
259 IF (isens/=0) THEN
260 DO j=1,sensors%NSENSOR
261 IF (isens == sensors%SENSOR_TAB(j)%SENS_ID) tsens=j
262 ENDDO
263 IF (tsens==0) THEN
264 CALL ancmsg(msgid=884, msgtype=msgerror, anmode=aninfo_blind_1,
265 . i1=id,
266 . c1=titr,
267 . i2=isens)
268 ENDIF
269 ENDIF
270C-----------
271 nn = nodgrnr5(igu,igs,lcfield(iad),igrnod,itabm1,mess)
272C-----------
273 IF (ivar == 0) ivar = 1
274C-----------
275 icfield(1,k) = nn
276 icfield(2,k) = idir
277 icfield(3,k) = ncurs
278 icfield(4,k) = iad
279 icfield(5,k) = 1 ! Type /LOAD/CENTRI
280 icfield(6,k) = tsens
281 icfield(7,k) = ifras
282 icfield(8,k) = ivar
283 icfield(9,k) = id
284 cfield(1,k) = fcy
285 cfield(2,k) = one/fcx
286C-----------
287 IF (ivar == 1)THEN
288 WRITE (iout,2000) id
289 ELSE
290 WRITE (iout,2001) id
291 ENDIF
292 WRITE (iout,'(I10,2X,I10,4X,A2,2X,I10,2X,I10,2X,
293 . 1PG20.13,2X,1PG20.13)')
294 . igu,ifra,xyz(1:2),
295 . ncur,isens,fcx,fcy
296C---------
297 iad = iad + nn ! NUMCENTRI
298
299 ENDDO ! next K (next /LOAD/CENTRI)
300C--------------------------------------------------------------------------------
301 RETURN
302C--------------------------------------------------------------------------------
303 2000 FORMAT(//
304 .' CENTRIFUGAL LOAD. . . . . . . . . . . . . . . . . .',i10/
305 .' VARIATION OF VELOCITY FUNCTION NOT TAKEN INTO ACCOUNT'/
306 .' ------------------ '/
307 .'node group frame dir load_curve sensor',
308 .' scale_x scale_y')
309
310 2001 FORMAT(//
311 .' centrifugal load. . . . . . . . . . . . . . . . . .',I10/
312 .' variation of velocity FUNCTION taken into account'/
313 .' ------------------ '/
314 .'node group frame dir load_curve sensor',
315 .' scale_x scale_y')
316C-----------------------------------------------
317
#define my_real
Definition cppsort.cpp:32
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_floatv_dim(name, dim_fac, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_get_string(name, sval, size, is_available)
subroutine hm_option_start(entity_type)
initmumps id
integer, parameter nchartitle
integer, parameter ncharfield
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
integer function nodgrnr5(igu, igs, ibuf, igrnod, itabm1, mess)
Definition freform.F:303