42 . IGRSURF ,UNITAB ,LSUBMODEL,LOADS )
58#include "implicit_f.inc"
70 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
72 INTEGER IPRES(NIBCLD,*), ITAB(*), ITABM1(*)
75 TYPE (SURF_) ,
DIMENSION(NSURF) :: IGRSURF
77 TYPE (LOADS_),
INTENT(INOUT) :: LOADS
81 INTEGER K, M, I1, I2, I3, I4, IFU, I, ISENS,NPR0,NN,ISU,IS,
82 . iad,
id,j,uid,iflagunit,ifix_tmp,
83 . capt,h,sub_index,flag_pinch,kpinch,idel,ifunctype
87 CHARACTER(LEN=NCHARTITLE) :: TITR
93 DATA mess/
'PRESSURE LOADS DEFINITION '/
113 is_available = .false.
135 . submodel_index = sub_index,
136 . option_titr = titr)
141 CALL hm_get_intv(
'entityid',isu,is_available,lsubmodel)
143 CALL hm_get_intv(
'rad_sensor_id',isens,is_available
145 CALL hm_get_intv(
'Idel',idel,is_available,lsubmodel)
146 CALL hm_get_intv(
'Itypfun',ifunctype,is_available,lsubmodel)
150 CALL hm_get_floatv(
'xscale',fcx,is_available,lsubmodel,unitab)
152 CALL hm_get_floatv(
'magnitude',fcy,is_available,lsubmodel,unitab)
157 IF (UNITAB%UNIT_ID(J) == UID) THEN
162.AND.
IF (UID/=0IFLAGUNIT==0) THEN
163 CALL ANCMSG(MSGID=659,ANMODE=ANINFO,MSGTYPE=MSGERROR,
164 . I2=UID,I1=ID,C1='pressure load
',
165 . C2='pressure load
',
169 IF (FCX == ZERO) FCX = FAC_FCX
170 IF (FCY == ZERO) FCY = FAC_FCY
173 IF (ISU==IGRSURF(J)%ID) IS=J
183 IF(IFUNCTYPE == 0) IFUNCTYPE = 1 ! Abscissa function is time (by default)
184 ! IFUNCTYPE = 2 ! Abscissa function is nodal displacement
185 ! IFUNCTYPE = 3 ! Abscissa function is nodal velocity
195 IF (TAGNO(NPART+IGRSURF(IS)%NODES(J,H))==1) CAPT = 1
197 IF (CAPT==0) GOTO 150
200 IF(FLAG_PINCH /= 1) THEN
202 IPRES(1,K) = IGRSURF(IS)%NODES(J,1)
203 IPRES(2,K) = IGRSURF(IS)%NODES(J,2)
204 IPRES(3,K) = IGRSURF(IS)%NODES(J,3)
205 IF (IGRSURF(IS)%NODES(J,3)==IGRSURF(IS)%NODES(J,4)) THEN
209 IPRES(4,K) = IGRSURF(IS)%NODES(J,4)
215 IPRES(9,K) = IFUNCTYPE
219 NPLOADPINCH = NPLOADPINCH + 1
221 IPRES(1,KPINCH) = IGRSURF(IS)%NODES(J,1)
222 IPRES(2,KPINCH) = IGRSURF(IS)%NODES(J,2)
223 IPRES(3,KPINCH) = IGRSURF(IS)%NODES(J,3)
224 IF (IGRSURF(IS)%ELTYP(J)==7) THEN
228 IPRES(4,KPINCH) = IGRSURF(IS)%NODES(J,4)
230 IPRES(5,KPINCH) = IFU
231 IPRES(6,KPINCH) = ISENS
232 IPRES(7,KPINCH) = IDEL
234 IPRES(9,KPINCH) = IFUNCTYPE
236 PRES(2,KPINCH) = ONE/FCX
242 IF (IDDOM>0) NN = NN-ISURF_R2R(1,IS)
245 CALL ANCMSG(MSGID=3066,
256 LOADS%NLOAD_PLOAD = NPRELD
263.AND.
IF(IPRES(4,I) == 0 IPRES(3,I) == 0)THEN
264 ! 2D / Surface made of lines
265 WRITE (IOUT,'(3(1x,i10),a,1x,i10,1x,i10,2g20.13)
') I,
266 . ITAB(IPRES(1,I)),ITAB(IPRES(2,I)),' ',
267 . IPRES(5,I),IPRES(6,I),ONE/PRES(2,I),PRES(1,I)
269.AND.
ELSEIF(IPRES(4,I) == 0 IPRES(3,I) /= 0)THEN
270 ! Surface made of 3 nodes
271 WRITE (IOUT,'(4(1x,i10),a,1x,i10,1x,i10,2g20.13)
') I,
272 . ITAB(IPRES(1,I)),ITAB(IPRES(2,I)),ITAB(IPRES(3,I)),' ',
273 . IPRES(5,I),IPRES(6,I),ONE/PRES(2,I),PRES(1,I)
275 ! Surface made of 4 nodes
276 WRITE (IOUT,'(6(1x,i10),1x,i10,2g20.13)
') I,
277 . ITAB(IPRES(1,I)),ITAB(IPRES(2,I)),ITAB(IPRES(3,I)),ITAB(IPRES(4,I)),
278 . IPRES(5,I),IPRES(6,I),ONE/PRES(2,I),PRES(1,I)
283 IF(I2==NPRELD)GOTO 200
285 I2=MIN0(I2+50,NPRELD)
288 300 CALL ANCMSG(MSGID=157,
295 .' ----------------
'/
296 .' segm node1 node2 node3 node4 curve
',
297 .' sensor scale-x scale-y
')
subroutine hm_read_pload(ipres, pres, nprel, itab, itabm1, igrsurf, unitab, lsubmodel, loads)