41
42
43
46 USE format_mod , ONLY : fmt_10i, fmt_8i, fmt_2i
47 USE reader_old_mod , ONLY : kline, kcur, line, kige3d, koptad, irec
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70#include "implicit_f.inc"
71
72
73
74#include "com04_c.inc"
75#include "scr17_c.inc"
76#include "units_c.inc"
77#include "param_c.inc"
78#include "ige3d_c.inc"
79
80
81
82 INTEGER KXIG3D(NIXIG3D,*),IXIG3D(*),ITAB(*),
83 . IPART(LIPART1,*),IPARTIG3D(*),
84 . IPM(NPROPMI,*),IGEO(NPROPGI,*),ITABM1(*),
85 . NCTRLMAX
86 TYPE(TABCONPATCH_IG3D_), DIMENSION(*) :: TABCONPATCH
87
88
89
90 INTEGER I,N,J,ID,IDS,IDEX,IDGU,IGS,NNOD,IAD,
91 . I1, I2,MID,PID,IDX1,IDY1,IDZ1,NCTRL,NBLINE,
92 . NRAFX,NRAFY,NRAFZ,NBIG3D_PATCH
93 INTEGER TABIDS(NUMELIG3D0),J10(10)
94 CHARACTER MESS*40
96
97
98
99 INTEGER NODGRNR5,USR2SYS
100
101 DATA mess /'ISO-GEOMETRIC ELEMENTS DEFINITION '/
102
103
104 nbig3d_patch = 0
105 nbpart_ig3d = 0
106
107 kcur = kige3d
108 nbpart_ig3d = nbpart_ig3d+1
109 tabconpatch(nbpart_ig3d)%ID_TABCON=nbpart_ig3d
110 irec = koptad(kcur)
111 irec=irec+1
112 READ(iin,rec=irec,err=999,fmt='(A)')line
113 DO WHILE( line(1:1) /= '/' .OR. line(1:6) == '/IGE3D')
114
115 IF (line(1:1) == '/')THEN
116 irec=irec+1
117 READ(iin,rec=irec,err=999,fmt='(A)')line
118 ENDIF
119
120 READ
121 nbig3d_patch=nbig3d_patch+1
122 irec = irec + ((nctrl-1)/10)+2
123 READ(iin,rec=irec,err=999,fmt='(A)')line
124
125 IF (line(1:6) == '/IGE3D')THEN
126 tabconpatch(nbpart_ig3d)%L_TAB_IG3D=nbig3d_patch
127 ALLOCATE(tabconpatch(nbpart_ig3d)%TAB_IG3D
128 nbpart_ig3d = nbpart_ig3d+1
129 nbig3d_patch=0
130 irec=irec+1
131 READ(iin,rec=irec,err=999,fmt='(A)')line
132 ENDIF
133
134 ENDDO
135
136 tabconpatch(nbpart_ig3d)%L_TAB_IG3D=nbig3d_patch
137 ALLOCATE(tabconpatch(nbpart_ig3d)%TAB_IG3D(nbig3d_patch))
138
139 nbpart_ig3d = 0
140 nbig3d_patch = 0
141
142 bid =0
143 iad =1
144 kcur=kige3d
145 irec=koptad(kcur)-1
146 i = 0
147 inod_ige = firstnod_isogeo
148 ids=0
149 DO WHILE( i < numelig3d0 )
150 irec=irec+1
151 READ(iin,rec=irec,err=999,fmt='(A)')line
152 IF (line(1:1) == '/')THEN
153 nbpart_ig3d = nbpart_ig3d+1
154 nbig3d_patch = 0
155 kline=line
157 ids=0
158 DO j=1,npart
159 IF(ipart(4,j) ==
id)ids=j
160 ENDDO
161 IF(ids == 0) THEN
162 CALL ancmsg(msgid=402,msgtype=msgerror,anmode=aninfo_blind_1
"IGE3D",i1=
id,i2=
id,prmod=msg_cumu)
163 ENDIF
164 tabconpatch(nbpart_ig3d)%PID=ids
165 ELSE
166 i = i + 1
167 kxig3d(1,i
168 kxig3d(2,i) =ipart(2,ids)
169 kxig3d(4,i) =iad
170 ipartig3d(i)=ids
171
172 READ(iin,rec=irec,err=999,fmt='(A)')line
173 READ(line,err=999,fmt=fmt_8i)
id,idx1,idy1,idz1,nctrl,nrafx,nrafy,nrafz
174 nbig3d_patch = nbig3d_patch + 1
175 tabconpatch(nbpart_ig3d)%TAB_IG3D(nbig3d_patch)=i
176 nctrlmax =
max(nctrlmax,nctrl)
177 kxig3d(3,i)=nctrl
179 kxig3d(6,i)=idx1
180 kxig3d(7,i)=idy1
181 kxig3d(8,i)=idz1
182
183 kxig3d(12,i)=
max(nrafx,1)
184 kxig3d(13,i)=
max(nrafy,1)
185 kxig3d(14,i)=
max(nrafz,1)
186 kxig3d(15,i)=inod_ige
187 inod_ige = inod_ige + 64
188
189 nbline= ((nctrl-1)/10)+1
190
191 DO n=1,nbline
192 irec=irec+1
193 READ(iin,rec=irec,err=999,fmt='(A)')line
194 READ(line,err=999,fmt=fmt_10i) j10
195 DO j=1,10
196 IF(j10(j) /= 0)THEN
197 ixig3d(iad)=
usr2sys(j10(j),itabm1,mess,
id)
198 iad=iad+1
199 ENDIF
200 ENDDO
201 ENDDO
202 ENDIF
203 ENDDO
204
205 CALL ancmsg(msgid=402,msgtype=msgerror,anmode=aninfo_blind_1,prmod=msg_print)
206
207
208
209 DO i=1,numelig3d0
210 tabids(i)= kxig3d(5,i)
211 ENDDO
212 CALL udouble(tabids,1,numelig3d0,mess,0,bid)
213
214
215
216 i1=1
217 i2=min0(50,numelig3d0)
218
219 90 WRITE (iout,300)
220 DO 100 i=i1,i2
221 mid=ipm(1,kxig3d(1,i))
222 pid=igeo(1,kxig3d(2,i))
223 WRITE (iout,'(4(I10,1X))') i,kxig3d(5,i),mid,pid
224 WRITE (iout,'(10(I10,1X))')
225 . (itab(ixig3d(iad)),iad=kxig3d(4,i),kxig3d(4,i)+kxig3d(3,i)-1)
226 100 CONTINUE
227 IF(i2==numelig3d0)GOTO 200
228 i1=i1+50
229 i2=min0(i2+50,numelig3d0)
230 GOTO 90
231
232 200 CONTINUE
233
234 300 FORMAT(/' ISO-GEOMETRIC ELEMENTS'/
235 + ' ----------------------'/
236 + ' LOC-EL GLO-EL MATER GEOM'/
237 + ' NODES LIST')
238 RETURN
239
241 RETURN
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)
subroutine udouble(list, ilist, nlist, mess, ir, rlist)