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), (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
85
86
87 INTEGER
88 . I,J,K,L, NG, NN, N, MLN, MID, PID ,
89 . II,JJ, II1,JJ1,II2,JJ2,II3,JJ3,II4,,
90 . MODE, ML1, ML2, MT1, MT2,IGT,
91 . MSKMLN,MSKJAL,MSKMID,MSKPID,IEOS,
92 . MSKJEU,MSKJTU,MSKJTH,MSKJPO,
93 . IPLAST, IALEL, MT,IREP,IINT,ISSN,NGTVX,IFAIL,IRB,
94 . JALE_FROM_MAT,JALE_FROM_PROP
95 INTEGER ID
96 CHARACTER(LEN=NCHARTITLE)::TITR
97 INTEGER WORK(70000)
99 INTEGER MY_SHIFTL,MY_SHIFTR,MY_AND
100
101 DATA mskmln /o'07770000000'/
102 DATA mskjal /o'00000070000'/
103 DATA mskjeu /o'00000007000'/
104 DATA mskjtu /o'00000000700'/
105 DATA mskjth /o'00000000070'/
106 DATA mskjpo /o'00000000007'/
107 DATA mskmid /o'07777777777'/
108 DATA mskpid /o'07777777777'/
109
110
111
112
113
114
115
116 DO i=1,numelq
117 eadd(i)=1
118 itri(4,i)=i
119 index(i)=i
120 inum(1,i)=ipartq(i)
121 inum(2,i)=ixq(1,i)
122 inum(3,i)=ixq(2,i)
123 inum(4,i)=ixq(3,i)
124 inum(5,i)=ixq(4,i)
125 inum(6,i)=ixq(5,i)
126 inum(7,i)=ixq(6,i)
127 inum(8,i)=ixq(7,i)
128 inum(9,i)=iquaoff(i)
129 ENDDO
130
131 DO i=1,numelq
132 xep(i)=cep(i)
133 ENDDO
134
135
136 DO i = 1, numelq
137 ii = i
138 npt=1
139 jpor=0
140 mid= ixq(1,ii)
141 pid= ixq(6,ii)
142 iplast= 1
143 irep = 0
144 jcvt = 0
145 ifail = 0
146 ieos = 0
147 IF (pid/=0) THEN
148 igt = igeo(11,pid)
149 IF (igt /= 15) iplast = igeo(9,pid)
150 IF (igt==15)jpor=2*nint(geo(28,pid))
151 jcvt = igeo(16,pid)
152 ENDIF
153 mln = nint(pm(19,abs(mid)))
154 IF(mid<0)THEN
155 IF(mln==6.AND.jpor/=2)mln=17
156 IF(mln==46)mln=47
157 mid=iabs(mid)
158 ENDIF
159 ifail = mat_param(mid)%NFAIL
160 jale_from_mat = nint(pm(72,mid))
161 jale_from_prop = igeo(62,pid)
162 jale =
max(jale_from_mat, jale_from_prop)
163 jlag=0
164 IF(jale==0.AND.mln/=18)jlag=1
165 jeul=0
166 IF(jale==2)THEN
167 jale=0
168 jeul=1
169 ENDIF
170 jtur=nint(pm(70,mid))
171 jthe=nint(pm(71,mid))
172 jmult=0
173 IF(mln==20)THEN
174 jmult=nint(pm(20,mid))
175 mt1=nint(pm(21,mid))
176 mt2=nint(pm(22,mid))
177 ml1=nint(pm(19,mt1))
178 ml2=nint(pm(19,mt2))
179 ELSE
180 jmult=0
181 ml1=0
182 ml2=0
183 ENDIF
184
185 IF(jcvt/=0.AND.(jlag==0.OR.mln==20))THEN
188 . igeo(npropgi-ltitr+1,pid),ltitr)
190 . msgtype=msgwarning,
191 . anmode=aninfo_blind_1,
193 . c1=titr,
194 . i2=ixq(7,i))
195 jcvt=0
196 END IF
197 ieos = ipm(4,mid)
198
199
200
201
202 irb = iquaoff(i)
203
204
205
212
213 itri(1,i)=mln+jale+jeul+jtur+jthe+jpor+irb
214
221 itri(2,i)=iplast+ml1+ml2+igt+jcvt + ifail
222
223 itri(3,i)=mid
224
225 itri(4,i)=pid
226
228
229 itri(5,i)=ieos
230
231 ENDDO
232
233 mode=0
234 CALL my_orders( mode, work, itri, index, numelq , 5)
235
236 DO i=1,numelq
237 ipartq(i) =inum(1,index(i))
238 iquaoff(i) = inum(9,index(i))
239 ENDDO
240 DO i=1,numelq
241 cep(i)=xep(index(i))
242 ENDDO
243 DO k=1,7
244 DO i=1,numelq
245 ixq(k,i)=inum(k+1,index(i))
246 ENDDO
247 ENDDO
248
249
250
251
252 DO i=1,numelq
253 itr1(index(i))=i
254 ENDDO
255
256
257
258
259
260 DO i=1,nsurf
261 nn=igrsurf(i)%NSEG
262 DO j=1,nn
263 IF(igrsurf(i)%ELTYP(j) == 2) igrsurf(i)%ELEM(j) = itr1(igrsurf(i)%ELEM(j))
264 ENDDO
265 ENDDO
266
267
268
269 DO i=1,ngrquad
270 nn=igrquad(i)%NENTITY
271 DO j=1,nn
272 igrquad(i)%ENTITY(j) = itr1(igrquad(i)%ENTITY(j))
273 ENDDO
274 ENDDO
275
276
277
278
279 nd=1
280 DO i=2,numelq
281 ii=itri(1,index(i))
282 jj=itri(1,index(i-1))
283 ii1=itri(2,index(i))
284 jj1=itri(2,index(i-1))
285 ii2=itri(3,index(i))
286 jj2=itri(3,index(i-1))
287 ii3=itri(4,index(i))
288 jj3=itri(4,index(i-1))
289 ii4=itri(5,index(i))
290 jj4=itri(5,index(i-1))
291 IF(ii/=jj.OR.
292 . ii1/=jj1.OR.
293 . ii4/=jj4.OR.
294 . ii2/=jj2.OR.
295 . ii3/=jj3) THEN
296 nd=nd+1
297 eadd(nd)=i
298 ENDIF
299 ENDDO
300 eadd(nd+1) = numelq+1
301
302 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)