44 . NUMLOADP ,ILOADP ,LLOADP ,INTERLOADP ,FACLOADP ,
45 . KLOADPINTER,LOADPINTER ,NPC ,SENSORS ,IGRSURF ,
46 . UNITAB ,ISKN ,LSUBMODEL ,DGAPINT ,INTGAPLOADP,
47 . DGAPLOADINT,S_LOADPINTER,PBLAST )
64#include "implicit_f.inc"
77 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
79 INTEGER NPC(*),ISKN(LISKN,*),
80 . ILOADP(SIZLOADP,*), LLOADP(*)
81 INTEGER,
INTENT(IN) :: S_LOADPINTER
82 INTEGER,
INTENT(INOUT) :: KLOADPINTER(NINTER+1) ,LOADPINTER(S_LOADPINTER),
83 . interloadp(nintloadp)
85 my_real ,
INTENT(INOUT) :: dgapint(ninter),
86 . intgaploadp(nintloadp),dgaploadint(s_loadpinter )
88 TYPE (SURF_) ,
TARGETDIMENSION(NSURF)
90 TYPE (SENSORS_) ,
INTENT(IN) :: SENSORS
91 TYPE (PBLAST_) ,
INTENT(INOUT) :: PBLAST
97 . SUB_INDEX, SUB_ID, UID, ID, IFLAGUNIT,NIP,
98 . NN,IAD,ISENS,IS,ISU,NOSKEW,IDIR,IFUNC,NINTERP,INORM,
99 . TINTER,IDINT,NIK,NBINTER,NOINT,STAT,IFUNCL,
100 . idsens,idskew,iload,ninters,nidxload
101 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ID_INTER,INTER_TYP
103 . FCX,FCY,FAC_FCX,FAC_FCY,GAP_I
104 CHARACTER MESS*40, char_X*1, char_Y*1, char_Z*1
105 CHARACTER(LEN=NCHARFIELD) ::DIR
106 CHARACTER(LEN=NCHARTITLE) :: TITR
107 CHARACTER(LEN=NCHARLINE) :: KEY
114 DATA mess/
'PRESSURE LOAD DEFINITION '/
151 ALLOCATE (id_inter(hm_ninter ),stat=stat)
152 id_inter(1:hm_ninter ) = 0
153 ALLOCATE (inter_typ(hm_ninter),stat=stat)
154 inter_typ(1:hm_ninter ) = 0
169 IF(key(1:len_trim
'SUB'THEN
174 IF(key(1:len_trim(key))==
'TYPE21') inter_typ(nbinter)=21
189 nidxload = nloadp_f+pblast%NLOADP_B
197 . submodel_id = sub_id,
198 . submodel_index = sub_index,
199 . option_titr = titr)
204 IF (unitab%UNIT_ID(j) == uid)
THEN
209 IF (uid/=0.AND.iflagunit==0)
THEN
212 . msgtype = msgerror,
215 . c1 =
'PRESSURE LOAD',
216 . c2 =
'PRESSURE LOAD',
220 iloadp(2,k+nidxload) = id
235 CALL hm_get_intv(
'surf_ID',isu,is_available,lsubmodel)
236 CALL hm_get_intv(
'fct_ID',ifunc,is_available,lsubmodel)
237 CALL hm_get_intv(
'Inorm',inorm,is_available,lsubmodel)
238 CALL hm_get_intv(
'sens_ID',idsens,is_available,lsubmodel)
239 CALL hm_get_intv(
'Iload',iload,is_available,lsubmodel)
240 IF(inorm == 0) inorm = 1
241 IF(iload == 0) iload = 1
244 CALL hm_get_intv(
'skew_ID',idskew,is_available,lsubmodel)
248 IF(dir(1:1)==
'X') idir=1
249 IF(dir(1:1)==
'Y') idir=2
250 IF(dir(1:1)==
'Z') idir=3
256 IF (isu==igrsurf(j)%ID) is=j
261 lloadp(iad+4*(j-1)) =igrsurf(is)%NODES(j,1)
262 lloadp(iad+4*(j-1)+1)=igrsurf(is)%NODES(j,2)
263 lloadp(iad+4*(j-1)+2)=igrsurf(is)%NODES(j,3)
264 IF(igrsurf(is)%NODES(j,2)==igrsurf(is)%NODES(j,3))
THEN
265 lloadp(iad+4*(j-1)+3)=0
267 lloadp(iad+4*(j-1)+3)=igrsurf(is)%NODES(j,4)
271 iloadp(1,k+nidxload)=4*nn
276 IF(npc(nfunct+j+1)==ifunc)ifuncl=j
281 . anmode=aninfo_blind_1,
289 DO j=1,sensors%NSENSOR
291 IF(idsens == sensors%SENSOR_TAB(j)%SENS_ID)
THEN
300 . anmode=aninfo_blind_1,
310 IF(idskew == 0 .AND. sub_index /= 0 ) idskew = lsubmodel(sub_index)%SKEW
314 IF(idskew == iskn(4,j+1))
THEN
319 CALL ancmsg(msgid=137,anmode=aninfo,msgtype=msgerror,
320 . c1=
'LOAD PRESSURE',
321 . c2=
'LOAD PRESSURE',
322 . i2=idskew,i1=id,c3=titr)
329 CALL hm_get_floatv(
'xscale_p',fcx,is_available,lsubmodel,unitab)
331 CALL hm_get_floatv(
'yscale_p',fcy,is_available,lsubmodel,unitab)
334 IF (fcx == zero) fcx = fac_fcx
335 IF (fcy == zero) fcy = fac_fcy
339 CALL hm_get_intv(
'N_inter_P',ninterp,is_available,lsubmodel)
352 IF(id_inter(ni) == idint)
THEN
353 interloadp(nintloadp+nip)= ni
354 IF(inter_typ(ni) == 21) nintloadp21 = nintloadp21 + 1
356 dgapint(ni)=
max(dgapint(ni),gap_i)
357 intgaploadp(nintloadp+nip)= gap_i
368 ninters = ninters + 1
376 iloadp( 3,k+nidxload) = ifuncl
377 iloadp( 4,k+nidxload) = iad
378 iloadp( 5,k+nidxload) = ninters
379 iloadp( 6,k+nidxload) = idir
380 iloadp( 7,k+nidxload) = isens
381 iloadp( 8,k+nidxload) = noskew
382 iloadp( 9,k+nidxload) = inorm
383 iloadp(10,k+nidxload) = iload
385 facloadp( 1,k+nidxload) = fcy
386 facloadp( 2,k+nidxload) = one/fcx
392 WRITE (iout,
'(I10,2X,I10,2X,I10,2X,I10,9X,A1,2X,I10,2X,
393 . 1PG20.13,2X,1PG20.13)')isu,ifunc,idsens,inorm,dir(1:1),idskew,fcx,fcy
398 WRITE (iout,
'(10(6X,I10,4X))')id_inter
399 WRITE (iout,
'(10G20.13)')intgaploadp
402 IF(modulo(ninters,10) > 0)
THEN
403 WRITE (iout,
'(10(6X,I10,4X))')id_inter(interloadp(nintloadp+j+1:nintloadp+ninterp))
404 WRITE (iout,
'(10G20.13)')intgaploadp(nintloadp+j+1:nintloadp+ninters)
407 numloadp = numloadp + 4*nn
408 nintloadp = nintloadp + ninters
413 IF(nintloadp > 0)
THEN
416 ninterp = iloadp(5,k+nidxload)
418 ni = interloadp(nik + n)
419 kloadpinter(ni) = kloadpinter(ni)+1
425 kloadpinter(n+1) = kloadpinter(n+1) + kloadpinter(n)
429 kloadpinter(n+1) = kloadpinter(n)
435 ninterp = iloadp(5,k+nidxload)
437 ni = interloadp(nik + n)
438 kloadpinter(ni) = kloadpinter(ni)+1
439 loadpinter(kloadpinter(ni)) = k
440 dgaploadint(kloadpinter(ni)) = intgaploadp(nik + n)
447 kloadpinter(n+1) = kloadpinter(n)
453 DEALLOCATE (id_inter,inter_typ)
460 .
' PRESSURE LOADS (GENERAL) '/
461 .
' ------------------ '/
462 .
' SURFACE CURVE SENSOR INORM DIRECTION SKEW',
463 .
' SCALE_X SCALE_Y')
466 .
' INTERFACES AND GAP SHIFTS')
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)