45
46
47
48
49
50
51
58 USE sensor_mod
60
61
62
63#include "implicit_f.inc"
64
65
66
67#include "param_c.inc"
68#include "com04_c.inc"
69#include "units_c.inc"
70
71
72
73 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
74 INTEGER ICFIELD(SIZFIELD,*), LCFIELD(*), ITAB(*), ITABM1(*),
75 . NPC(*),IFRAME(LISKN,*)
77
78 TYPE () , DIMENSION(NGRNOD) :: IGRNOD
79 TYPE (SUBMODEL_DATA),INTENT(IN)::LSUBMODEL(*)
80 TYPE (SENSORS_) ,INTENT(IN) :: SENSORS
81
82
83
85 . fcx,fcy,fac_fcx,fac_fcy
86 INTEGER I,J,K,K1,K2,NOD, NCUR, , ISENS,NN,IGU,IGS,
87 . UID,IAD,ID,IFLAGUNIT,NCURS,TSENS,IFRAS, , 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, *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 '/
102
103
104
105 INTEGER NODGRNR5
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136 is_available = .false.
137
138 iad = 1
139 nn = 0
140
141
142
143
145
146
147
148 DO k=1,nloadc
149
150
151
154 . unit_id = uid,
155 . submodel_id = sub_id,
156 . submodel_index = sub_index,
157 . option_titr = titr)
158
159
160
161 xyz = ''
163
164
165
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)
180
181
182
183 CALL hm_get_floatv(
'xscale',fcx,is_available,lsubmodel,unitab)
185 CALL hm_get_floatv(
'magnitude',fcy,is_available,lsubmodel,unitab)
187
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
197 . anmode = aninfo,
198 . msgtype = msgerror,
199 . i2 = uid,
201 . c1 = 'CENTRIFUGAL LOAD',
202 . c2 = 'CENTRIFUGAL LOAD',
203 . c3 = titr)
204 ENDIF
205
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
215 . msgtype=msgerror,
216 . anmode=aninfo_blind_1,
218 . c1=xyz)
219 ENDIF
220
221 ncurs=0
222 DO j=1,nfunct
223 IF(npc(nfunct+j+1)==ncur)ncurs=j
224 ENDDO
225 IF(ncurs==0)THEN
227 . msgtype=msgerror,
228 . anmode=aninfo_blind_1,
230 . c1=titr,
231 . i2=ncur)
232 ENDIF
233
234 IF (fcx == zero) fcx = fac_fcx
235 IF (fcy == zero) fcy = fac_fcy
236
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
245 . msgtype=msgerror,
246 . anmode=aninfo_blind_1,
247 . c1='/LOAD/CENTRI',
249 . c2='/LOAD/CENTRI',
250 . c3=titr,
251 . i2=ifra)
252 ENDIF
253 ENDDO
254 ELSE
255 ifras=0
256 ENDIF
257
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,
266 . c1=titr,
267 . i2=isens)
268 ENDIF
269 ENDIF
270
271 nn =
nodgrnr5(igu,igs,lcfield(iad),igrnod,itabm1,mess)
272
273 IF (ivar == 0) ivar = 1
274
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
280 icfield(6,k) = tsens
281 icfield(7,k) = ifras
282 icfield(8,k) = ivar
284 cfield(1,k) = fcy
285 cfield(2,k) = one/fcx
286
287 IF (ivar == 1)THEN
289 ELSE
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
296
297 iad = iad + nn
298
299 ENDDO
300
301 RETURN
302
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')
316
317
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)
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)