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 )
43 use element_mod ,
only : nixr
47#include "implicit_f.inc"
56 INTEGER ,
INTENT(IN) :: NUMELR,NSECT,NINTER,NINTSUB,NRWALL,NRBODY
57 INTEGER IPARI(NPARI,NINTER)
58 INTEGER NOM_OPT(LNOPT1,*),PTR_NOPT_RWALL,PTR_NOPT_SECT,PTR_NOPT_INTER
59 INTEGER ,
DIMENSION(NUMELR) :: R_SKEW
60 INTEGER ,
DIMENSION(NIXR,NUMELR) :: IXR
61 TYPE (SENSORS_) ,
INTENT(INOUT) ,
TARGET :: SENSORS
65 INTEGER I,J,K,IN,NSENSOR,IPARSENS,STABSEN,SFSAV,STAT,
66 . IS1,IS2,SENS_TYPE,SENS_ID,SPRING_ID
67 CHARACTER(LEN=NCHARTITLE)::TITR
68 TYPE (SENSOR_STR_) ,
DIMENSION(:) ,
POINTER :: SENSOR_TAB
72 nsensor = sensors%NSENSOR
73 sensor_tab => sensors%SENSOR_TAB(1:nsensor)
80 sens_id = sensor_tab(k)%SENS_ID
81 sens_type = sensor_tab(k)%TYPE
83 IF (sens_type == 3)
THEN
88 IF (sensor_tab(k)%IPARAM(1) == sensor_tab(i)%SENS_ID) is1=i
89 IF (sensor_tab(k)%IPARAM(2) == sensor_tab(i)%SENS_ID) is2=i
92 CALL ancmsg(msgid=339,anmode=aninfo,msgtype=msgerror,
95 . i2=sensor_tab(k)%IPARAM(1),c2=
'SENSOR')
97 sensor_tab(k)%IPARAM(1) = is1
98 sensor_tab(k)%IPARAM(2) = is2
100 ELSEIF (sens_type == 4 .OR. sens_type == 5)
THEN
105 IF (sensor_tab(k)%IPARAM(1) == sensor_tab(i)%SENS_ID) is1=i
106 IF (sensor_tab(k)%IPARAM(2) == sensor_tab(i)%SENS_ID) is2=i
109 CALL ancmsg(msgid=339,anmode=aninfo,msgtype=msgerror,
112 . i2=sensor_tab(k)%IPARAM(1),c2=
'SENSOR')
115 CALL ancmsg(msgid=339,anmode=aninfo,msgtype=msgerror,
118 . i2=sensor_tab(k)%IPARAM(2),c2=
'SENSOR')
120 sensor_tab(k)%IPARAM(1) = is1
121 sensor_tab(k)%IPARAM(2) = is2
123 ELSEIF (sens_type == 6)
THEN
128 IF (ipari(15,i) == sensor_tab(k)%IPARAM(1))
THEN
134 IF (nom_opt(1,ptr_nopt_inter+i) == sensor_tab(k)%IPARAM(1))
THEN
136 IF (ipari(15,j) == nom_opt(2,ptr_nopt_inter+i))
THEN
138 sensor_tab(k)%IPARAM(2) = j
145 CALL ancmsg(msgid=339,anmode=aninfo,msgtype=msgerror,
148 . i2=sensor_tab(k)%IPARAM(1),c2=
'INTERFACE')
150 sensor_tab(k)%IPARAM(1) = in
152 ELSEIF (sens_type == 7)
THEN
157 IF (nom_opt(1,ptr_nopt_rwall+i) == sensor_tab(k)%IPARAM(1)) in=i
160 CALL ancmsg(msgid=339,anmode=aninfo
163 . i2=sensor_tab(k)%IPARAM(1),c2=
'RIGID WALL')
165 sensor_tab(k)%IPARAM(1) = in
167 ELSEIF (sens_type == 8)
THEN
172 IF (sensor_tab(k)%IPARAM(1) == sensor_tab(i)%SENS_ID) is1=i
175 CALL ancmsg(msgid=339,anmode=aninfo,msgtype=msgerror,
178 . i2=sensor_tab(k)%IPARAM(1),c2=
'SENSOR')
180 sensor_tab(k)%IPARAM(1) = is1
182 ELSEIF (sens_type == 11)
THEN
187 IF (nom_opt(1,i) == sensor_tab(k)%IPARAM(1)) in=i
190 CALL ancmsg(msgid=339,anmode=aninfo,msgtype=msgerror,
193 . i2=sensor_tab(k)%IPARAM(1),c2=
'RIGID BODY'
195 sensor_tab(k)%IPARAM(1) = in
197 ELSEIF (sens_type == 12)
THEN
202 IF (nom_opt(1,ptr_nopt_sect +i) == sensor_tab(k)%IPARAM(1)) in=i
205 CALL ancmsg(msgid=339,anmode=aninfo,msgtype=msgerror,
208 . i2=sensor_tab(k)%IPARAM(1),c2=
'SECTION')
210 sensor_tab(k)%IPARAM(1) = in
212 ELSEIF (sens_type == 13)
THEN
219 IF (nom_opt(1,ptr_nopt_sect +i) == sensor_tab(k)%IPARAM
221 sensor_tab(k)%IPARAM(3) = in
226 IF (ipari(15,i) == sensor_tab(k)%IPARAM(4))
THEN
232 IF (nom_opt(1,ptr_nopt_inter+i) == sensor_tab(k)%IPARAM(5
THEN
234 IF (ipari(15,j) == nom_opt(2,ptr_nopt_inter+i))
THEN
236 sensor_tab(k)%IPARAM(5) = j
241 sensor_tab(k)%IPARAM(4) = in
246 IF (nom_opt(1,ptr_nopt_rwall+i) == sensor_tab(k)%IPARAM(6)) in=i
248 sensor_tab(k)%IPARAM(6) = in
253 IF (nom_opt(1,i) == sensor_tab(k)%IPARAM(7)) in=i
255 sensor_tab(k)%IPARAM(7) = in
257 IF (sensor_tab(k)%IPARAM(3) == 0 .and. sensor_tab(k)%IPARAM(4) == 0 .and.
258 . sensor_tab(k)%IPARAM(5) == 0 .and. sensor_tab(k)%IPARAM(6) == 0 .and.
259 . sensor_tab(k)%IPARAM(7) == 0)
THEN
260 CALL ancmsg(msgid=339,anmode=aninfo,msgtype=msgerror,
263 . i2=sensor_tab(k)%SENS_ID,c2=
'ID in SENSOR WORK')
266 ELSEIF (sens_type == 19)
THEN
270 spring_id = sensor_tab(k)%IPARAM(1)
272 IF (ixr(6,i) == spring_id)
THEN
273 sensor_tab(k)%IPARAM(2) = i
274 sensor_tab(k)%IPARAM(4) = r_skew(i)
295 IF (nsensor > 0)
THEN
297 sens_type = sensor_tab(i)%TYPE
298 IF (sens_type== 6 .OR. sens_type== 7 .OR. sens_type== 11 .OR.
299 . sens_type== 12 .OR. sens_type== 13)
THEN
304 IF (iparsens == 1) stabsen = nsect+ninter+nintsub+nrwall+nrbody+1
307 ALLOCATE(sensors%TABSENSOR(stabsen) , stat=stat)
308 ALLOCATE(sensors%FSAV(12,6,sfsav) , stat=stat)
309 sensors%STABSEN = stabsen
310 sensors%SFSAV = sfsav
311 sensors%TABSENSOR = 0
319 IF (iparsens == 1)
THEN
320 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)