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