34 SUBROUTINE inisen(SENSORS , IPARI ,NOM_OPT ,PTR_NOPT_RWALL,
35 . PTR_NOPT_SECT ,PTR_NOPT_INTER ,IXR ,R_SKEW ,NUMELR,
36 . NSECT ,NINTER ,NINTSUB ,NRWALL ,NRBODY )
46#include "implicit_f.inc"
55 INTEGER ,
INTENT(IN) :: NUMELR,NSECT,NINTER,NINTSUB,NRWALL,NRBODY
56 INTEGER IPARI(NPARI,NINTER)
57 INTEGER NOM_OPT(LNOPT1,*),PTR_NOPT_RWALL,PTR_NOPT_SECT,PTR_NOPT_INTER
58 INTEGER ,
DIMENSION(NUMELR) :: R_SKEW
59 INTEGER ,
DIMENSION(NIXR,NUMELR) :: IXR
60 TYPE (SENSORS_) ,
INTENT(INOUT) ,
TARGET :: SENSORS
64 INTEGER I,J,K,IN,NSENSOR,IPARSENS,STABSEN,SFSAV,STAT,
65 . IS1,IS2,SENS_TYPE,SENS_ID,SPRING_ID
66 CHARACTER(LEN=NCHARTITLE)::TITR
67 TYPE (SENSOR_STR_) ,
DIMENSION(:) ,
POINTER :: SENSOR_TAB
71 nsensor = sensors%NSENSOR
72 sensor_tab => sensors%SENSOR_TAB(1:nsensor)
79 sens_id = sensor_tab(k)%SENS_ID
80 sens_type = sensor_tab(k)%TYPE
82 IF (sens_type == 3)
THEN
87 IF (sensor_tab(k)%IPARAM(1) == sensor_tab(i)%SENS_ID) is1=i
88 IF (sensor_tab(k)%IPARAM(2) == sensor_tab(i)%SENS_ID) is2=i
91 CALL ancmsg(msgid=339,anmode=aninfo,msgtype=msgerror,
94 . i2=sensor_tab(k)%IPARAM(1),c2=
'SENSOR')
96 sensor_tab(k)%IPARAM(1) = is1
97 sensor_tab(k)%IPARAM(2) = is2
99 ELSEIF (sens_type == 4 .OR. sens_type == 5)
THEN
104 IF (sensor_tab(k)%IPARAM(1) == sensor_tab(i)%SENS_ID) is1=i
105 IF (sensor_tab(k)%IPARAM(2) == sensor_tab(i)%SENS_ID) is2=i
108 CALL ancmsg(msgid=339,anmode=aninfo,msgtype=msgerror,
111 . i2=sensor_tab(k)%IPARAM(1),c2=
'SENSOR')
114 CALL ancmsg(msgid=339,anmode=aninfo,msgtype=msgerror,
117 . i2=sensor_tab(k)%IPARAM(2),c2=
'SENSOR')
119 sensor_tab(k)%IPARAM(1) = is1
120 sensor_tab(k)%IPARAM(2) = is2
122 ELSEIF (sens_type == 6)
THEN
127 IF (ipari(15,i) == sensor_tab(k)%IPARAM(1))
THEN
133 IF (nom_opt(1,ptr_nopt_inter+i) == sensor_tab(k)%IPARAM(1))
THEN
135 IF (ipari(15,j) == nom_opt(2,ptr_nopt_inter+i))
THEN
137 sensor_tab(k)%IPARAM(2) = j
144 CALL ancmsg(msgid=339,anmode=aninfo,msgtype=msgerror,
147 . i2=sensor_tab(k)%IPARAM(1),c2=
'INTERFACE')
149 sensor_tab(k)%IPARAM(1) = in
151 ELSEIF (sens_type == 7)
THEN
156 IF (nom_opt(1,ptr_nopt_rwall+i) == sensor_tab(k)%IPARAM(1)) in=i
159 CALL ancmsg(msgid=339,anmode=aninfo,msgtype=msgerror,
162 . i2=sensor_tab(k)%IPARAM(1),c2=
'RIGID WALL')
164 sensor_tab(k)%IPARAM(1) = in
166 ELSEIF (sens_type == 8)
THEN
171 IF (sensor_tab(k)%IPARAM(1) == sensor_tab(i)%SENS_ID) is1=i
174 CALL ancmsg(msgid=339,anmode=aninfo,msgtype=msgerror,
177 . i2=sensor_tab(k)%IPARAM(1),c2=
'SENSOR')
179 sensor_tab(k)%IPARAM(1) = is1
181 ELSEIF (sens_type == 11)
THEN
186 IF (nom_opt(1,i) == sensor_tab(k)%IPARAM(1)) in=i
189 CALL ancmsg(msgid=339,anmode=aninfo,msgtype=msgerror,
192 . i2=sensor_tab(k)%IPARAM(1),c2=
'RIGID BODY')
194 sensor_tab(k)%IPARAM(1) = in
196 ELSEIF (sens_type == 12)
THEN
201 IF (nom_opt(1,ptr_nopt_sect +i) == sensor_tab(k)%IPARAM(1)) in=i
204 CALL ancmsg(msgid=339,anmode=aninfo,msgtype=msgerror,
207 . i2=sensor_tab(k)%IPARAM(1),c2=
'SECTION')
209 sensor_tab(k)%IPARAM(1) = in
211 ELSEIF (sens_type == 13)
THEN
218 IF (nom_opt(1,ptr_nopt_sect +i) == sensor_tab(k)%IPARAM(3)) in=i
220 sensor_tab(k)%IPARAM(3) = in
225 IF (ipari(15,i) == sensor_tab(k)%IPARAM(4))
THEN
231 IF (nom_opt(1,ptr_nopt_inter+i) == sensor_tab(k)%IPARAM(5))
THEN
233 IF (ipari(15,j) == nom_opt(2,ptr_nopt_inter+i))
THEN
235 sensor_tab(k)%IPARAM(5) = j
240 sensor_tab(k)%IPARAM(4) = in
245 IF (nom_opt(1,ptr_nopt_rwall+i) == sensor_tab(k)%IPARAM(6)) in=i
247 sensor_tab(k)%IPARAM(6) = in
252 IF (nom_opt(1,i) == sensor_tab(k)%IPARAM(7)) in=i
254 sensor_tab(k)%IPARAM(7) = in
256 IF (sensor_tab(k)%IPARAM(3) == 0 .and. sensor_tab(k)%IPARAM(4) == 0 .and.
257 . sensor_tab(k)%IPARAM(5) == 0 .and. sensor_tab(k)%IPARAM(6) == 0 .and.
258 . sensor_tab(k)%IPARAM(7) == 0)
THEN
259 CALL ancmsg(msgid=339,anmode=aninfo,msgtype=msgerror,
262 . i2=sensor_tab(k)%SENS_ID,c2=
'ID in SENSOR WORK')
265 ELSEIF (sens_type == 19)
THEN
269 spring_id = sensor_tab(k)%IPARAM(1)
271 IF (ixr(6,i) == spring_id)
THEN
272 sensor_tab(k)%IPARAM(2) = i
273 sensor_tab(k)%IPARAM(4) = r_skew(i)
294 IF (nsensor > 0)
THEN
296 sens_type = sensor_tab(i)%TYPE
297 IF (sens_type== 6 .OR. sens_type== 7 .OR. sens_type== 11 .OR.
298 . sens_type== 12 .OR. sens_type== 13)
THEN
303 IF (iparsens == 1) stabsen = nsect+ninter+nintsub+nrwall+nrbody+1
306 ALLOCATE(sensors%TABSENSOR(stabsen) , stat=stat)
307 ALLOCATE(sensors%FSAV(12,6,sfsav) , stat=stat)
308 sensors%STABSEN = stabsen
309 sensors%SFSAV = sfsav
310 sensors%TABSENSOR = 0
318 IF (iparsens == 1)
THEN
319 CALL iniparsen(sensors,nsect,ninter,nintsub,nrwall,nrbody)
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)