38
39
40
43 USE matparam_def_mod
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64#include "implicit_f.inc"
65
66
67
68#include "vect01_c.inc"
69#include "com04_c.inc"
70#include "param_c.inc"
71#include "scr17_c.inc"
72
73
74
75 INTEGER IXQ(7,*),ISEL(*),INUM(9,*),IPARTQ(*),
76 . EADD(*),ITR1(*),INDEX(*),ITRI(5,*),ND, CEP(*),XEP(*),
77 . IGEO(NPROPGI,NUMGEO), IPM(NPROPMI,NUMMAT),
78 . IQUAOFF(*)
79 my_real :: pm(npropm,nummat), geo(npropg,numgeo)
80
81 TYPE (GROUP_) , DIMENSION(NGRQUAD) :: IGRQUAD
82 TYPE (SURF_) , DIMENSION(NSURF) :: IGRSURF
83 TYPE (MATPARAM_STRUCT_) ,DIMENSION(NUMMAT),INTENT(IN) :: MAT_PARAM
84 INTEGER,INTENT(INOUT) :: TRIMAT
85
86
87
88 INTEGER
89 . I,J,K, NN, MLN, MID, PID ,
90 . II,JJ, II1,JJ1,II2,JJ2,II3,JJ3,II4,JJ4,
91 . MODE, ML1, ML2, MT1, MT2,IGT,
92 . MSKMLN,MSKJAL,MSKMID,MSKPID,IEOS,
93 . MSKJEU,MSKJTU,MSKJTH,MSKJPO,
94 . IPLAST,IREP,IFAIL,IRB,
95 . JALE_FROM_MAT,JALE_FROM_PROP
96 INTEGER ID
97 CHARACTER(LEN=NCHARTITLE)::TITR
98 INTEGER WORK(70000)
100 INTEGER MY_SHIFTL,MY_SHIFTR,MY_AND
101
102 DATA mskmln /o'07770000000'/
103 DATA mskjal /o'00000070000'/
104 DATA mskjeu /o'00000007000'/
105 DATA mskjtu /o'00000000700'/
106 DATA mskjth /o'00000000070'/
107 DATA mskjpo /o'00000000007'/
108 DATA mskmid /o'07777777777'/
109 DATA mskpid /o'07777777777'/
110
111
112
113
114
115
116
117 DO i=1,numelq
118 eadd(i)=1
119 itri(4,i)=i
120 index(i)=i
121 inum(1,i)=ipartq(i)
122 inum(2,i)=ixq(1,i)
123 inum(3,i)=ixq(2,i)
124 inum(4,i)=ixq(3,i)
125 inum(5,i)=ixq(4,i)
126 inum(6,i)=ixq(5,i)
127 inum(7,i)=ixq(6,i)
128 inum(8,i)=ixq(7,i)
129 inum(9,i)=iquaoff(i)
130 ENDDO
131
132 DO i=1,numelq
133 xep(i)=cep(i)
134 ENDDO
135
136
137 DO i = 1, numelq
138 ii = i
139 npt=1
140 jpor=0
141 mid= ixq(1,ii)
142 pid= ixq(6,ii)
143 iplast= 1
144 irep = 0
145 jcvt = 0
146 ifail = 0
147 ieos = 0
148 IF (pid/=0) THEN
149 igt = igeo(11,pid)
150 IF (igt /= 15) iplast = igeo(9,pid)
151 IF (igt==15)jpor=2*nint(geo(28,pid))
152 jcvt = igeo(16,pid)
153 ENDIF
154 mln = nint(pm(19,abs(mid)))
155 IF(mln == 51)trimat=4
156 IF(mid<0)THEN
157 IF(mln==6.AND.jpor/=2)mln=17
158 IF(mln==46)mln=47
159 mid=iabs(mid)
160 ENDIF
161 ifail = mat_param(mid)%NFAIL
162 jale_from_mat = nint(pm(72,mid))
163 jale_from_prop = igeo(62,pid)
164 jale =
max(jale_from_mat, jale_from_prop)
165 jlag=0
166 IF(jale==0.AND.mln/=18)jlag=1
167 jeul=0
168 IF(jale==2)THEN
169 jale=0
170 jeul=1
171 ENDIF
172 jtur=nint(pm(70,mid))
173 jthe=nint(pm(71,mid))
174 jmult=0
175 IF(mln==20)THEN
176 jmult=nint(pm(20,mid))
177 mt1=nint(pm(21,mid))
178 mt2=nint(pm(22,mid))
179 ml1=nint(pm(19,mt1))
180 ml2=nint(pm(19,mt2))
181 ELSE
182 jmult=0
183 ml1=0
184 ml2=0
185 ENDIF
186
187 IF(jcvt/=0.AND.(jlag==0.OR.mln==20))THEN
190 . igeo(npropgi-ltitr+1,pid),ltitr)
192 . msgtype=msgwarning,
193 . anmode=aninfo_blind_1,
195 . c1=titr,
196 . i2=ixq(7,i))
197 jcvt=0
198 END IF
199 ieos = ipm(4,mid)
200
201
202
203
204 irb = iquaoff(i)
205
206
207
214
215 itri(1,i)=mln+jale+jeul+jtur+jthe+jpor+irb
216
223 itri(2,i)=iplast+ml1+ml2+igt+jcvt + ifail
224
225 itri(3,i)=mid
226
227 itri(4,i)=pid
228
230
231 itri(5,i)=ieos
232
233 ENDDO
234
235 mode=0
236 CALL my_orders( mode, work, itri, index, numelq , 5)
237
238 DO i=1,numelq
239 ipartq(i) =inum(1,index(i))
240 iquaoff(i) = inum(9,index(i))
241 ENDDO
242 DO i=1,numelq
243 cep(i)=xep(index(i))
244 ENDDO
245 DO k=1,7
246 DO i=1,numelq
247 ixq(k,i)=inum(k+1,index(i))
248 ENDDO
249 ENDDO
250
251
252
253
254 DO i=1,numelq
255 itr1(index(i))=i
256 ENDDO
257
258
259
260
261
262 DO i=1,nsurf
263 nn=igrsurf(i)%NSEG
264 DO j=1,nn
265 IF(igrsurf(i)%ELTYP(j) == 2) igrsurf(i)%ELEM(j) = itr1(igrsurf(i)%ELEM(j))
266 ENDDO
267 ENDDO
268
269
270
271 DO i=1,ngrquad
272 nn=igrquad(i)%NENTITY
273 DO j=1,nn
274 igrquad(i)%ENTITY(j) = itr1(igrquad(i)%ENTITY(j))
275 ENDDO
276 ENDDO
277
278
279
280
281 nd=1
282 DO i=2,numelq
283 ii=itri(1,index(i))
284 jj=itri(1,index(i-1))
285 ii1=itri(2,index(i))
286 jj1=itri(2,index(i-1))
287 ii2=itri(3,index(i))
288 jj2=itri(3,index(i-1))
289 ii3=itri(4,index(i))
290 jj3=itri(4,index(i-1))
291 ii4=itri(5,index(i))
292 jj4=itri(5,index(i-1))
293 IF(ii/=jj.OR.
294 . ii1/=jj1.OR.
295 . ii4/=jj4.OR.
296 . ii2/=jj2.OR.
297 . ii3/=jj3) THEN
298 nd=nd+1
299 eadd(nd)=i
300 ENDIF
301 ENDDO
302 eadd(nd+1) = numelq+1
303
304 RETURN
void my_orders(int *mode, int *iwork, int *data, int *index, int *n, int *irecl)
integer, parameter nchartitle
int my_shiftr(int *a, int *n)
int my_shiftl(int *a, int *n)
int my_and(int *a, int *b)
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)