37
38
39
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58#include "implicit_f.inc"
59
60
61
62#include "vect01_c.inc"
63#include "com04_c.inc"
64#include "param_c.inc"
65
66
67
68 INTEGER KXX(5,*),(6,*),IPARTX(*),
69 . EADD(*),ITR1(*),INDEX(*),ITRI(4,*),
70 . ND, CEP(*), XEP(*),
71 . IPM(NPROPMI,*)
73
74
75
76 INTEGER
77 . I, K, NG, ISSN, NPN, NN, N, MID, PID ,
78 . II, J, ,JJ2,JJ, II3, , L,NGROU,
79 . MSKMTN,MSKISN,MSKPID
81 INTEGER MY_SHIFTL,MY_SHIFTR,MY_AND
82
83 DATA mskmtn /o'07770000000'/
84 DATA mskisn /o'00000000700'/
85 DATA mskpid /o'07777777777'/
86
87 TYPE (SURF_) , DIMENSION(NSURF) :: IGRSURF
88
89
90
91
92C
93 DO i=1,numelx
94 eadd(i)=1
95 itri(4,i)=i
96 index(i)=i
97 inum(1,i)=ipartx(i)
98 inum(2,i)=kxx(1,i)
99 inum(3,i)=kxx(2,i)
100 inum(4,i)=kxx(3,i)
101 inum(5,i)=kxx(4,i)
102 inum(6,i)=kxx(5,i)
103 ENDDO
104
105 DO i=1,numelx
106 xep(i)=cep(i)
107 ENDDO
108
109 DO i = 1, numelx
110 mid= kxx(1,i)
111 pid= kxx(2,i)
112 mtn= nint(geo(12,pid))
113 IF (mtn<28.OR.mtn>31) THEN
115 . msgtype=msgerror,
116 . anmode=aninfo_blind_1,
117 . i1=kxx(5,i),
118 . c1='MATERIAL',
119 . i2=ipm(1,mid),
120 . c2='MATERIAL',
121 . i3=mtn)
122 ENDIF
123
124 issn = 0
125 IF(geo(5,pid)/=zero) issn=1
126
129
130 itri(1,i)=mtn+issn
131 itri(2,i)=pid
132 itri(3,i)=kxx(3,i)
133 itri(4,i)=0
134 ENDDO
135
136 mode=0
137 CALL my_orders( mode, work, itri, index, numelx , 4)
138
139 DO i=1,numelx
140 ipartx(i) =inum(1,index(i))
141 ENDDO
142 DO i=1,numelx
143 cep(i)=xep(index(i))
144 ENDDO
145 DO k=1,5
146 DO i=1,numelx
147 kxx(k,i)=inum(k+1,index(i))
148 ENDDO
149 ENDDO
150
151
152
153 DO i=1,numelx
154 itr1(index(i))=i
155 ENDDO
156
157
158
159
160
161 DO i=1,nsurf
162 nn=igrsurf(i)%NSEG
163 DO j=1,nn
164 IF(igrsurf(i)%ELTYP(j) == 100)
165 . igrsurf(i)%ELEM(j) = itr1(igrsurf(i)%ELEM(j))
166 ENDDO
167 ENDDO
168
169
170
171 nd=1
172 DO i=2,numelx
173 ii=itri(1,index(i))
174 jj=itri(1,index(i-1))
175 ii2=itri(2,index(i))
176 jj2=itri(2,index(i-1))
177 ii3=itri(3,index(i))
178 jj3=itri(3,index(i-1))
179 IF(ii/=jj.OR.ii2/=jj2.OR.ii3/=jj3) THEN
180 nd=nd+1
181 eadd(nd)=i
182 ENDIF
183 ENDDO
184 eadd(nd+1) = numelx+1
185
186 RETURN
void my_orders(int *mode, int *iwork, int *data, int *index, int *n, int *irecl)
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)