47
48
49
55 USE sensor_mod
57 USE reader_old_mod , ONLY : irec
58
59
60
61#include "implicit_f.inc"
62
63
64
65#include "scr17_c.inc"
66#include "com04_c.inc"
67#include "units_c.inc"
68#include "param_c.inc"
69#include "sphcom.inc"
70
71
72
73 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
74 INTEGER IGRV(NIGRV,NGRAV), LGRAV(*), ITAB(*), ITABM1(*),
75 . NPC(*), ISKN(LISKN,*), ITAGND(*)
77 . grav(lfacgrv,ngrav)
78 TYPE(SUBMODEL_DATA),INTENT(IN)::LSUBMODEL(NSUBMOD)
79 TYPE (SENSORS_) ,INTENT(IN) :: SENSORS
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96 TYPE (GROUP_) , DIMENSION(NGRNOD) :: IGRNOD
97
98
99
100 my_real fcx,fcy,fac_fcx,fac_fcy
101 INTEGER I, NCUR, NOSKEW,NSKW, ISENS,NN,IGU,IGS,UID,IAD,NS,J,K,ID,NCURS,TSENS, IFLAGUNIT, SUB_INDEX
102 CHARACTER(LEN=NCHARFIELD) :: XYZ
103 CHARACTER :: X*1, Y*1, Z*1, XX*2, YY*2, ZZ*2, MESS*40
104 CHARACTER(LEN=NCHARTITLE)::TITR
105 LOGICAL IS_AVAILABLE
106
107
108
109 INTEGER USR2SYS,NODGRNR5
111
112 DATA x/'X'/
113 DATA y/'Y'/
114 DATA z/'Z'/
115 DATA xx/'XX'/
116 DATA yy/'YY'/
117 DATA zz/'ZZ'/
118 DATA mess/'GRAVITY LOADS DEFINITION '/
119
120 is_available = .false.
121
122
123 iad=1
124 IF(ngrav==0)RETURN
125
126 WRITE (iout,2000)
127
128
129
131
132
133
134 DO k=1,ngrav
135 titr = ''
136
137
138
141 . unit_id = uid,
142 . submodel_index = sub_index,
143 . option_titr = titr)
144
145
146
148
149
150
151 CALL hm_get_intv(
'curveid',ncur,is_available,lsubmodel)
152 CALL hm_get_intv(
'inputsystem',noskew,is_available,lsubmodel)
153 IF(noskew == 0 .AND. sub_index /= 0 ) noskew = lsubmodel(sub_index)%SKEW
154 CALL hm_get_intv(
'rad_sensor_id',isens,is_available,lsubmodel)
155 CALL hm_get_intv(
'entityid',igu,is_available,lsubmodel)
156
157
158
159 CALL hm_get_floatv(
'xscale',fcx,is_available,lsubmodel,unitab)
161 CALL hm_get_floatv(
'magnitude',fcy,is_available,lsubmodel,unitab)
163
164 iflagunit = 0
165 DO j=1,unitab%NUNITS
166 IF (unitab%UNIT_ID(j) == uid) THEN
167 iflagunit = 1
168 EXIT
169 ENDIF
170 ENDDO
171 IF (uid/=0.AND.iflagunit==0) THEN
172 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,
173 . i2=uid,i1=
id,c1=
'GRAVITY LOAD',
174 . c2='GRAVITY LOAD',
175 . c3=titr)
176 ENDIF
178 IF(noskew == iskn(4,j+1)) THEN
179 noskew=j+1
180 GO TO 100
181 ENDIF
182 ENDDO
183 CALL ancmsg(msgid=137,anmode=aninfo,msgtype=msgerror,
184 . c1='GRAVITY LOAD',
185 . c2='GRAVITY LOAD',
186 . i2=noskew,i1=
id,c3=titr)
187 100 CONTINUE
188
189 IF (fcx == zero) fcx = fac_fcx
190 IF (fcy == zero) fcy = fac_fcy
191
192 nskw=10*noskew
193 ns=0
194 IF (xyz(1:1)==x) THEN
195 ns=1+nskw
196 ELSEIF(xyz(1:1)==y)THEN
197 ns=2+nskw
198 ELSEIF(xyz(1:1)==z)THEN
199 ns=3+nskw
200 ELSE
201 xyz='Z'
202 ns=3+nskw
203
204
205 ENDIF
206
207 IF (igu /= 0) THEN
208 nn =
nodgrnr5(igu,igs,lgrav(iad),igrnod,itabm1,mess)
209 ELSE
210 nn = numnod
211 DO i=1,numnod
212 lgrav(iad-1+i)=i
213 ENDDO
214 ENDIF
215 IF (ns10e > 0 )
CALL remove_nd(nn,lgrav(iad),itagnd)
216
217 irec = irec + 1
218 igrv(1,k)=nn
219 igrv(2,k)=ns
220 ncurs=0
221 IF(ncur/=0) THEN
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=154,anmode=aninfo,msgtype=msgerror,
227 . i2=ncur,i1=
id,c1=titr)
228 ENDIF
229 ENDIF
230 igrv(3,k)=ncurs
231 igrv(4,k)=iad
233 igrv(6,k)=isens
234 grav(1,k) = fcy
235 grav(2,k) = one/fcx
236 tsens=0
237 DO j=1,sensors%NSENSOR
238 IF(isens/=0) THEN
239 IF (igrv(6,k) == sensors%SENSOR_TAB(j)%SENS_ID) tsens=j
240 ENDIF
241 ENDDO
242 IF((tsens==0).AND.(igrv(6,k)/=0))THEN
243 CALL ancmsg(msgid=521,anmode=aninfo,msgtype=msgerror,
244 . i2=igrv(6,k),i1=
id,c1=titr)
245 ENDIF
246 IF (noskew > 0) noskew = iskn(4,noskew)
247 WRITE (iout,3000) noskew,xyz(1:1),
248 . ncur,isens,fcx,fcy
249 WRITE (iout,'(10I10)') (itab(lgrav(j+iad-1)),j=1,nn)
250 iad=iad+nn
251 ENDDO
252
253 RETURN
254
255 2000 FORMAT(//
256 .' GRAVITY LOADS '/
257 .' ------------- '/
258 .' SKEW DIRECTION LOAD CURVE',
259 .' SENSOR SCALE_X SCALE_Y ')
260 3000 FORMAT(2x,i10,10x,a2,4x,i10,2x,i10,2x,1p2g20.13)
261
262 RETURN
subroutine remove_nd(nn, inn, itagnd)
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)
integer function usr2sys(iu, itabm1, mess, id)