43
44
45
53 USE loads_mod
55
56
57
58#include "implicit_f.inc"
59
60
61
62#include "param_c.inc"
63#include "units_c.inc"
64#include "scr03_c.inc"
65#include "com04_c.inc"
66#include "r2r_c.inc"
67
68
69
70 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
71 INTEGER NPREL
72 INTEGER IPRES(NIBCLD,*), ITAB(*), ITABM1(*)
74 . pres(lfaccld,*)
75 TYPE (SURF_) , DIMENSION(NSURF) :: IGRSURF
76 TYPE(SUBMODEL_DATA),INTENT(IN)::LSUBMODEL(*)
77 TYPE (LOADS_),INTENT(INOUT) :: LOADS
78
79
80
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
84 INTEGER N1,N2,N3,N4
86 CHARACTER MESS*40
87 CHARACTER(LEN=NCHARTITLE) ::
88 LOGICAL IS_AVAILABLE
89
90
91
92 INTEGER USR2SYS
93 DATA mess/'PRESSURE LOADS DEFINITION '/
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113 is_available = .false.
114
115 npr0=npreld
116 npreld=0
117 k=0
119 kpinch=0
120 pdel = 0
121 ifunctype = 0
122
123
124
126
127
128
129
130 DO i=1,npr0
131 titr = ''
134 . unit_id = uid,
135 . submodel_index = sub_index,
136 . option_titr = titr)
137
138
139
140
141 CALL hm_get_intv(
'entityid',isu,is_available,lsubmodel)
142 CALL hm_get_intv(
'curveid',ifu,is_available,lsubmodel)
143 CALL hm_get_intv(
'rad_sensor_id',isens,is_available,lsubmodel)
144 CALL hm_get_intv(
'ipinch',flag_pinch,is_available,lsubmodel)
145 CALL hm_get_intv(
'Idel',idel,is_available,lsubmodel)
146 CALL hm_get_intv(
'Itypfun',ifunctype,is_available,lsubmodel)
147
148
149
150 CALL hm_get_floatv(
'xscale',fcx,is_available,lsubmodel,unitab)
152 CALL hm_get_floatv(
'magnitude',fcy,is_available,lsubmodel,unitab)
154
155 iflagunit = 0
156 DO j=1,unitab%NUNITS
157 IF (unitab%UNIT_ID(j) == uid) THEN
158 iflagunit = 1
159 EXIT
160 ENDIF
161 ENDDO
162 IF (uid/=0.AND.iflagunit==0) THEN
163 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,
164 . i2=uid,i1=
id,c1=
'PRESSURE LOAD',
165 . c2='PRESSURE LOAD',
166 . c3=titr)
167 ENDIF
168
169 IF (fcx == zero) fcx = fac_fcx
170 IF (fcy == zero) fcy = fac_fcy
171 is=0
172 DO j=1,nsurf
173 IF (isu==igrsurf(j)%ID) is=j
174 ENDDO
175 IF( idel /= 2) THEN
176 pdel = 1
177 idel = 1
178 ELSE
179 pdel = 0
180 idel = 0
181 ENDIF
182
183 IF(ifunctype == 0) ifunctype = 1
184
185
186
187 IF(is/=0)THEN
188 nn=igrsurf(is)%NSEG
189 kpinch=nn+1
190 DO j=1,nn
191 IF (iddom/=0) THEN
192
193 capt=0
194 DO h=1,4
195 IF (
tagno(npart+igrsurf(is)%NODES(j,h))==1) capt = 1
196 END DO
197 IF (capt==0) GOTO 150
198 ENDIF
199
200 IF(flag_pinch /= 1) THEN
201 k=k+1
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
206
207 ipres(4,k) = 0
208 ELSE
209 ipres(4,k) = igrsurf(is)%NODES(j,4)
210 ENDIF
211 ipres(5,k) = ifu
212 ipres(6,k) = isens
213 ipres(7,k) = idel
214 ipres(8,k) = 0
215 ipres(9,k) = ifunctype
216 pres(1,k) = fcy
217 pres(2,k) = one/fcx
218 ELSE
220 kpinch=kpinch-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
225
226 ipres(4,kpinch) = 0
227 ELSE
228 ipres(4,kpinch) = igrsurf(is)%NODES(j,4)
229 ENDIF
230 ipres(5,kpinch) = ifu
231 ipres(6,kpinch) = isens
232 ipres(7,kpinch) = idel
233 ipres(8,kpinch) = 0
234 ipres(9,kpinch) = ifunctype
235 pres(1,kpinch) = fcy
236 pres(2,kpinch) = one/fcx
237 ENDIF
238
239 150 CONTINUE
240 ENDDO
241
243 npreld=npreld+nn
244 ELSE
246 . msgtype=msgerror,
247 . anmode=aninfo,
249 . c1=titr)
250 ENDIF
251 ENDDO
252
253 i1=1
254 i2=min0(50,npreld)
255
256 loads%NLOAD_PLOAD = npreld
257
258
259 90 WRITE (iout,2000)
260
261 DO i=i1,i2
262
263 IF(ipres(4,i) == 0 .AND. ipres(3,i) == 0)THEN
264
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)
268
269 ELSEIF(ipres(4,i) == 0 .AND. ipres(3,i) /= 0)THEN
270
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)
274 ELSE
275
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)
279 ENDIF
280
281 ENDDO
282
283 IF(i2==npreld)GOTO 200
284 i1=i1+50
285 i2=min0(i2+50,npreld)
286 GOTO 90
287 200 RETURN
288 300
CALL ancmsg(msgid=157,
289 . msgtype=msgerror,
290 . anmode=aninfo,
291 . i1=k)
292
293 2000 FORMAT(//
294 .' PRESSURE LOADS '/
295 .' ---------------- '/
296 .' SEGM NODE1 NODE2 NODE3 NODE4 CURVE',
297 .' SENSOR SCALE-X SCALE-Y ')
298
299 RETURN
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_option_start(entity_type)
integer, parameter nchartitle
integer, dimension(:), allocatable tagno
integer, dimension(:,:), allocatable isurf_r2r
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)