42 . IGRSURF ,IGRNOD ,IGRSLIN ,IGRPART ,IGRBRIC ,IGRQUAD,
43 . IGRSH4N ,IGRSH3N ,IGRTRUSS ,IGRBEAM ,IGRSPRING,BUFSF ,
44 . LISURF1 ,ROOTNAM ,ROOTLEN ,INFILE_NAME ,INFILE_NAME_LEN)
67 USE fill_surf_plane_mod
68 USE file_descriptor_mod
72#include "implicit_f.inc"
77 TYPE (GROUP_) ,
INTENT(INOUT):: IGRNOD(*)
78 TYPE (SURF_) ,
INTENT(INOUT):: (*)
79 TYPE (SURF_) ,
INTENT(INOUT):: IGRSLIN(*)
80 TYPE (GROUP_) ,
INTENT(INOUT):: IGRPART(*)
81 TYPE (GROUP_) ,
INTENT(INOUT):: IGRBRIC(*)
82 TYPE (GROUP_) ,
INTENT(INOUT):: IGRQUAD(*)
83 TYPE (GROUP_) ,
INTENT(INOUT):: IGRSH4N(*)
84 TYPE (GROUP_) ,
INTENT(INOUT):: IGRSH3N(*)
85 TYPE (GROUP_) ,
INTENT(INOUT):: IGRTRUSS(*)
86 TYPE (GROUP_) ,
INTENT(INOUT):: IGRBEAM(*)
87 TYPE (GROUP_) ,
INTENT(INOUT):: IGRSPRING(*)
88 TYPE (SET_),
DIMENSION(NSETS),
INTENT(INOUT) :: SET
89 INTEGER,
INTENT(IN) :: LISURF1
91 INTEGER,
INTENT(IN) :: ROOTLEN,INFILE_NAME_LEN
92 CHARACTER(LEN=ROOTLEN),
INTENT(IN) :: ROOTNAM
93 CHARACTER(LEN=INFILE_NAME_LEN),
INTENT(IN) :: INFILE_NAME
101 INTEGER I,J,IGS,GRTYPE,IO_ERR1,IO_ERR2,NB_GRNODE,NB_GRPART
103 CHARACTER FILNAM*109, KEYA*80
104 CHARACTER(LEN=NCHARLINE) ::CARTE
105 INTEGER :: LEN_TMP_NAME
106 CHARACTER(len=4096) :: TMP_NAME
107 INTEGER ,
DIMENSION(:),
ALLOCATABLE :: GRNODE,GRPART,GRPART_TMP
115 WRITE(filnam,
'(A, A, I4.4, A)') rootnam(1:rootlen
'_''.rad'
116 tmp_name = infile_name(1:infile_name_len)//filnam(1:len_trim(filnam))
117 len_tmp_name = infile_name_len + len_trim(filnam)
118 OPEN(unit=tmp_engine, file=tmp_name(1:len_tmp_name),
119 . access=
'SEQUENTIAL', status=
'OLD', iostat=io_err1)
121 IF (io_err1 == 0)
THEN
124 DO WHILE (io_err2 == 0)
125 READ(unit=tmp_engine, fmt=
'(A)', iostat=io_err2) keya
126 IF (io_err2 == 0)
THEN
128 IF(keya(1:14) ==
'/DT/NODA/CST/1' .OR. keya(1:8) ==
'/DYREL/1' .OR. keya(1:8) ==
'/KEREL/1' .OR.
129 . keya(1:14) ==
'/INIV/AXIS/X/2' .OR. keya(1:14) ==
'/INIV/AXIS/Y/2' .OR.
130 . keya(1:14) ==
'/INIV/AXIS/Z/2')
THEN
131 nb_grnode = nb_grnode + 1
132 ELSEIF(keya(1:4) ==
'/H3D' .AND. keya(1:7) /=
'/H3D/DT' .AND.
133 . keya(1:10) /=
'/H3D/TITLE''/H3D/COMPRESS'
134 . keya(1:12) /=
'/H3D/LSENSOR' .AND. keya(1:7) /=
'/H3D/RB' )
THEN
135 READ(unit=tmp_engine, fmt=
'(A)', iostat=io_err2) carte
136 IF(carte(1:1) ==
'/')
THEN
137 backspace(tmp_engine)
138 ELSE IF(carte(1:1) /=
'#')
THEN
139 ALLOCATE(grpart_tmp(nvar(carte)))
140 READ(carte, fmt=*) grpart_tmp
142 IF(grpart_tmp(j) < 0) nb_grpart = nb_grpart + 1
144 IF(
ALLOCATED(grpart_tmp))
DEALLOCATE(grpart_tmp)
146 ELSE IF(keya(1:6) ==
'/BEGIN')
THEN
156 IF (nb_grnode > 0)
ALLOCATE(grnode(nb_grnode))
159 IF (nb_grpart > 0)
ALLOCATE(grpart(nb_grpart))
163 WRITE(filnam,
'(A, A, I4.4, A)') rootnam(1:rootlen),
'_', i-1,
'.rad'
164 tmp_name = infile_name(1:infile_name_len)//filnam(1:len_trim(filnam))
165 len_tmp_name = infile_name_len + len_trim(filnam)
166 OPEN(unit=tmp_engine, file=tmp_name(1:len_tmp_name),
167 . access=
'SEQUENTIAL', status=
'OLD', iostat=io_err1)
169 IF (io_err1 == 0)
THEN
172 DO WHILE (io_err2 == 0)
173 READ(unit=tmp_engine, fmt=
'(A)', iostat=io_err2) keya
174 IF (io_err2 == 0)
THEN
176 IF(keya(1:14) ==
'/DT/NODA/CST/1')
THEN
177 nb_grnode = nb_grnode + 1
179 DO WHILE (carte(1:1) ==
'#' .AND. io_err2 == 0)
180 READ(unit=tmp_engine, fmt=
'(A)', iostat=io_err2) carte
182 READ(unit=tmp_engine, fmt=
'(A)', iostat=io_err2) carte
183 DO WHILE (carte(1:1) ==
'#' .AND. io_err2 == 0)
184 READ(unit=tmp_engine, fmt=
'(A)', iostat=io_err2) carte
186 READ(unit=tmp_engine, fmt=
'(A)', iostat=io_err2) carte
187 DO WHILE (carte(1:1) ==
'#' .AND. io_err2 == 0)
188 READ(unit=tmp_engine, fmt=
'(A)', iostat=io_err2) carte
190 READ(carte, fmt=*) grnode(nb_grnode)
191 ELSEIF(keya(1:8) ==
'/DYREL/1')
THEN
192 nb_grnode = nb_grnode + 1
194 DO WHILE (carte(1:1) ==
'#' .AND. io_err2 == 0)
195 READ(unit=tmp_engine, fmt=
'(A)', iostat=io_err2) carte
197 READ(unit=tmp_engine, fmt=
'(A)', iostat=io_err2) carte
198 DO WHILE (carte(1:1) ==
'#' .AND. io_err2 == 0)
199 READ(unit=tmp_engine, fmt=
'(A)', iostat=io_err2) carte
201 READ(carte, fmt=*) grnode(nb_grnode)
202 ELSEIF(keya(1:8) ==
'/KEREL/1')
THEN
203 nb_grnode = nb_grnode + 1
205 DO WHILE (carte(1:1) ==
'#' .AND. io_err2 == 0)
206 READ(unit=tmp_engine, fmt=
'(A)', iostat=io_err2) carte
208 READ(unit=tmp_engine, fmt=
'(A)', iostat=io_err2) carte
209 DO WHILE (carte(1:1) ==
'#' .AND. io_err2 == 0)
210 READ(unit=tmp_engine, fmt=
'(A)', iostat=io_err2) carte
212 READ(carte, fmt=*) grnode(nb_grnode)
213 ELSEIF(keya(1:14) ==
'/INIV/AXIS/X/2' .OR. keya(1:14) ==
'/INIV/AXIS/Y/2' .OR.
214 . keya(1:14) ==
'/INIV/AXIS/Z/2')
THEN
215 nb_grnode = nb_grnode + 1
217 DO WHILE (carte(1:1) ==
'#' .AND. io_err2 == 0)
218 READ(unit=tmp_engine, fmt=
'(A)', iostat=io_err2) carte
220 READ(unit=tmp_engine, fmt=
'(A)', iostat=io_err2) carte
221 DO WHILE (carte(1:1) ==
'#' .AND. io_err2 == 0)
222 READ(unit=tmp_engine, fmt=
'(A)', iostat=io_err2) carte
224 READ(unit=tmp_engine, fmt=
'(A)', iostat=io_err2) carte
225 DO WHILE (carte(1:1) ==
'#' .AND. io_err2 == 0)
226 READ(unit=tmp_engine, fmt=
'(A)', iostat=io_err2) carte
228 READ(unit=tmp_engine, fmt=
'(A)', iostat=io_err2) carte
229 DO WHILE (carte(1:1) ==
'#' .AND. io_err2 == 0)
230 READ(unit=tmp_engine, fmt=
'(A)', iostat=io_err2) carte
232 READ(carte, fmt=*) grnode(nb_grnode)
233 ELSE IF(keya(1:6) ==
'/BEGIN')
THEN
235 ELSE IF(keya(1:4) ==
'/H3D' .AND. keya(1:7) /=
'/H3D/DT' .AND.
236 . keya(1:10) /=
'/H3D/TITLE' .AND.
'/H3D/COMPRESS' .AND.
237 . keya(1:12) /=
'/H3D/LSENSOR' .AND. keya(1:7) /=
'/H3D/RB' )
THEN
238 READ(unit=tmp_engine, fmt=
'(A)', iostat=io_err2) carte
239 IF(carte(1:1) ==
'/')
THEN
240 backspace(tmp_engine)
241 ELSE IF(carte(1:1) /=
'#')
THEN
242 ALLOCATE(grpart_tmp(nvar(carte)))
243 READ(carte, fmt=*) grpart_tmp
245 IF(grpart_tmp(j) < 0)
THEN
246 nb_grpart = nb_grpart + 1
247 grpart(nb_grpart) = grpart_tmp(j)
250 IF(
ALLOCATED(grpart_tmp))
DEALLOCATE(grpart_tmp)
264 IF( set(igs)%SET_ACTIV == 0 ) cycle
270 IF(.NOT. is_used .AND. nb_grpart > 0)
THEN
272 IF(set(igs)%SET_ID == -grpart(i))
THEN
278 IF(is_used .OR.
doqa == 1)
THEN
280 CALL fill_gr( igrpart ,ngrpart,grtype,
281 * set(igs)%SET_ID,set(igs)%TITLE,set(igs)%PART,set(igs)%NB_PART,set(igs)%SET_GRPART_ID)
285 IF(
ALLOCATED (set(igs)%PART ))
DEALLOCATE ( set(igs)%PART )
291 IF(is_used .OR.
doqa == 1)
THEN
293 CALL fill_gr( igrbric ,ngrbric,grtype,
294 * set(igs)%SET_ID,set(igs)%TITLE,set(igs)%SOLID,set(igs)%NB_SOLID,set(igs)%SET_GRSOLID_ID)
298 IF(
ALLOCATED (set(igs)%SOLID ))
DEALLOCATE ( set(igs)%SOLID )
299 set(igs)%NB_SOLID = 0
304 IF(is_used .OR.
doqa == 1)
THEN
306 CALL fill_gr( igrquad ,ngrquad,grtype,
307 * set(igs)%SET_ID,set(igs)%TITLE,set(igs)%QUAD,set(igs)%NB_QUAD,set(igs)%SET_GRQUAD_ID)
311 IF(
ALLOCATED (set(igs)%QUAD ))
DEALLOCATE ( set(igs)%QUAD )
317 IF(is_used .OR.
doqa == 1)
THEN
319 CALL fill_gr( igrsh4n ,ngrshel,grtype,
320 * set(igs)%SET_ID,set(igs)%TITLE,set(igs)%SH4N,set(igs)%NB_SH4N,set(igs)%SET_GRSH4N_ID)
324 IF(
ALLOCATED (set(igs)%SH4N ))
DEALLOCATE ( set(igs)%SH4N )
330 IF(is_used .OR.
doqa == 1)
THEN
332 CALL fill_gr( igrsh3n ,ngrsh3n,grtype,
333 * set(igs)%SET_ID,set(igs)%TITLE,set(igs)%SH3N,set(igs)%NB_SH3N,set(igs)%SET_GRSH3N_ID)
337 IF(
ALLOCATED (set(igs)%SH3N ))
DEALLOCATE ( set(igs
343 IF(is_used .OR.
doqa == 1)
THEN
344 IF (numeltria > 0)
THEN
346 CALL fill_gr( igrsh3n ,ngrsh3n,grtype,
347 * set(igs)%SET_ID,set(igs)%TITLE,set(igs)%TRIA,set(igs)%NB_TRIA,set(igs)%SET_GRTRIA_ID)
352 IF(
ALLOCATED (set(igs)%TRIA ))
DEALLOCATE ( set(igs)%TRIA )
358 IF(is_used .OR.
doqa == 1)
THEN
360 CALL fill_gr( igrtruss ,ngrtrus,grtype,
361 * set(igs)%SET_ID,set(igs)%TITLE,set(igs)%TRUSS,set(igs)%NB_TRUSS,set(igs)%SET_GRTRUSS_ID)
365 IF(
ALLOCATED (set(igs)%TRUSS ))
DEALLOCATE ( set(igs)%TRUSS )
366 set(igs)%NB_TRUSS = 0
371 IF(is_used .OR.
doqa == 1)
THEN
373 CALL fill_gr( igrbeam ,ngrbeam,grtype,
378 IF(
ALLOCATED (set(igs)%BEAM ))
DEALLOCATE ( set(igs)%BEAM )
384 IF(is_used .OR.
doqa == 1)
THEN
386 CALL fill_gr( igrspring ,ngrspri,grtype,
387 * set(igs)%SET_ID,set(igs)%TITLE,set(igs)%SPRING,set(igs)%NB_SPRING,set(igs)%SET_GRSPRING_ID)
391 IF(
ALLOCATED (set(igs)%SPRING ))
DEALLOCATE ( set(igs)%SPRING )
392 set(igs)%NB_SPRING = 0
398 IF(.NOT. is_used .AND. nb_grnode > 0)
THEN
400 IF(set(igs)%SET_ID == grnode(i))
THEN
406 IF((is_used .OR.
doqa == 1) .AND. set(igs)%NB_ELLIPSE == 0 .AND. set(igs)%NB_PLANE == 0
407 * .AND. set(igs)%NB_NODENS == 0 )
THEN
409 CALL fill_gr( igrnod ,ngrnod,grtype,
410 * set(igs)%SET_ID,set(igs)%TITLE,set(igs)%NODE,set(igs)%NB_NODE,set(igs)%SET_GRNOD_ID)
414 IF(
ALLOCATED (set(igs)%NODE ))
DEALLOCATE ( set(igs)%NODE )
420 IF((is_used .OR.
doqa == 1) .AND. set(igs)%NB_ELLIPSE == 0 .AND. set(igs)%NB_PLANE == 0
421 * .AND. set(igs)%NB_NODENS /= 0 )
THEN
423 CALL fill_gr( igrnod ,ngrnod,grtype,
424 * set(igs)%SET_ID,set(igs)%TITLE,set(igs)%NODENS,set(igs)%NB_NODENS,set(igs)%SET_GRNOD_ID)
425 igrnod(set(igs)%SET_GRNOD_ID)%SORTED = 1
429 IF(
ALLOCATED (set(igs)%NODENS ))
DEALLOCATE ( set(igs)%NODENS )
430 set(igs)%NB_NODENS = 0
435 IF(is_used .OR.
doqa == 1)
THEN
436 IF (set(igs)%NB_ELLIPSE == 0 .and. set(igs)%NB_PLANE =
CALL fill_surf(set(igs),igrsurf,nsurf)
437 IF (set(igs)%NB_ELLIPSE > 0)
CALL fill_surf_ellipse(set(igs),igrsurf,nsurf,bufsf,lisurf1,nsurf)
438 IF (set(igs)%NB_PLANE > 0)
CALL fill_surf_plane(set(igs),igrsurf,nsurf,bufsf,lisurf1,nsurf)
442 IF(
ALLOCATED (set(igs)%SURF_NODES ))
DEALLOCATE ( set(igs)%SURF_NODES )
443 IF(
ALLOCATED (set(igs)%SURF_ELTYP ))
DEALLOCATE ( set(igs)%SURF_ELTYP )
444 IF(
ALLOCATED (set(igs)%SURF_ELEM ))
DEALLOCATE ( set(igs)%SURF_ELEM )
445 set(igs)%NB_SURF_SEG = 0
447 IF(
ALLOCATED (set(igs)%ELLIPSE_SKEW ))
DEALLOCATE ( set(igs)%ELLIPSE_SKEW )
448 set(igs)%ELLIPSE_A = zero
449 set(igs)%ELLIPSE_B = zero
450 set(igs)%ELLIPSE_C = zero
451 set(igs)%ELLIPSE_XC = zero
452 set(igs)%ELLIPSE_YC = zero
453 set(igs)%ELLIPSE_ZC = zero
454 set(igs)%ELLIPSE_N = zero
455 set(igs)%ELLIPSE_IAD_BUFR = 0
456 set(igs)%ELLIPSE_ID_MADYMO = 0
458 set(igs)%PLANE_XM = zero
459 set(igs)%PLANE_YM = zero
460 set(igs)%PLANE_ZM = zero
461 set(igs)%PLANE_XM1 = zero
462 set(igs)%PLANE_YM1 = zero
463 set(igs)%PLANE_ZM1 = zero
464 set(igs)%PLANE_IAD_BUFR = 0
469 IF(is_used .OR.
doqa == 1)
THEN
474 IF(
ALLOCATED (set(igs)%LINE_NODES ))
DEALLOCATE ( set(igs)%LINE_NODES )
475 IF(
ALLOCATED (set(igs)%LINE_ELTYP ))
DEALLOCATE ( set(igs)%LINE_ELTYP )
476 IF(
ALLOCATED (set(igs)%LINE_ELEM ))
DEALLOCATE ( set(igs)%LINE_ELEM )
477 set(igs)%NB_LINE_SEG = 0
481 IF(
ALLOCATED(grnode))
DEALLOCATE(grnode)
482 IF(
ALLOCATED(grpart))
DEALLOCATE(grpart)