35
36
37
38
39
40
41
44 use element_mod , only : nixs,nixq
45
46
47
48#include "implicit_f.inc"
49
50
51
52#include "param_c.inc"
53#include "com01_c.inc"
54#include "com04_c.inc"
55#include "scr17_c.inc"
56
57
58
59 INTEGER,INTENT(IN) :: IXS(NIXS,NUMELS),IXQ(NIXQ,NUMELQ),IGEO(NPROPGI,NUMGEO)
60 INTEGER,INTENT(IN) :: ICODE(NUMNOD),ITAB(NUMNOD),NPBY(NNPBY,*),LPBY(*)
61 INTEGER,INTENT(INOUT) :: NODPOR(*)
62 my_real,
INTENT(INOUT) :: geo(npropg,numgeo)
63
64
65
66 INTEGER, DIMENSION(NUMNOD) :: ITAG
67 INTEGER IG,N,I,J,K,IC,IC1,IC2,IC3,IC4,JWARN,IRB,KRB,P
68 INTEGER, DIMENSION(:,:),ALLOCATABLE :: INDEX
69 INTEGER IWORK(70000),IT
70 CHARACTER(len=nchartitle) :: TITR
71
72
73
74
75
76
77 numpor=0
78 DO i=1,numnod
79 itag(i)=0
80 END DO
81
82 DO ig=1,numgeo
83 IF(int(geo(12,ig)) /= 15)cycle
84 IF(n2d == 0)THEN
85 DO i=1,numels
86 IF(ixs(10,i) /= ig)cycle
87 DO j=2,9
88 IF(itag(ixs(j,i)) == 0)itag(ixs(j,i))=ig
89 END DO
90 END DO
91 ELSE
92 DO i=1,numelq
93 IF(ixq(6,i) /= ig)cycle
94 DO j=2,5
95 IF(itag(ixq(j,i)) == 0)itag(ixq(j,i))=ig
96 END DO
97 END DO
98 ENDIF
99
100
101
102
103 n=0
104 jwarn=0
105 DO i=1,numnod
106 IF(itag(i) /= ig)cycle
107 ic=icode(i)
108 ic1=ic/512
109 ic2=(ic-512*ic1)/64
110 ic3=(ic-512*ic1-64*ic2)/8
111 ic4=ic-512*ic1-64*ic2-8*ic3
112 IF(n2d == 0)THEN
113 IF(ic4 == 7)cycle
114 ELSE
115 IF(ic4 >= 6)cycle
116 ENDIF
117 IF(int(geo(30,ig)) /= 0 .AND. ic1 /= 0)THEN
118 jwarn = jwarn+1
119 CALL fretitl2(titr,igeo(npropgi-ltitr+1,ig),ltitr)
120 CALL ancmsg(msgid=358,msgtype=msgwarning,anmode=aninfo_blind_2,i1=igeo(1,ig),c1=titr,i2=itab(i))
121 ENDIF
122 n=n+1
123 nodpor(numpor+n)=i
124 END DO
125
126
127
128
129
130 ALLOCATE(index(n,3))
131 DO i=1,n
132 index(i,3)=nodpor(numpor+i)
133 ENDDO
134 IF(n > 0)
CALL my_orders(0,iwork,index(1,3),index,n,1)
135 DO i=1,n
136 it = index(i,1)
137 nodpor(numpor+i)=index(it,3)
138 ENDDO
139 DEALLOCATE(index)
140
141
142
143 IF(jwarn > 0) THEN
144 CALL fretitl2(titr,igeo(npropgi-ltitr+1,ig),ltitr)
145 CALL ancmsg(msgid=359,msgtype=msgwarning,anmode=aninfo,i1=igeo(1,ig),c1=titr,i2=jwarn)
146 ENDIF
147 geo(31,ig)=n+.1
148 numpor=numpor+n
149 irb=int(geo(29,ig))
150 IF(irb /= 0)THEN
151 k=1
152 DO krb=1,nrbykin
153 IF(npby(1,krb) == irb)THEN
154 geo(33,ig) = krb+ em01
155 geo(34,ig) = lpby(k)+em01
156 ENDIF
157 k=k+npby(2,krb)
158 END DO
159 IF(geo(33,ig) == zero)THEN
160 geo(29,ig)=em01
161 CALL fretitl2(titr,igeo(npropgi-ltitr+1,ig),ltitr)
162 CALL ancmsg(msgid=360,msgtype=msgwarning,anmode=aninfo_blind_1,i1=igeo(1,ig),c1=titr,i2=irb)
163 ELSE
164
165 DO p = 1, nspmd
167 ENDDO
168 ENDIF
169 ENDIF
170 END DO
171
172 RETURN
subroutine ifrontplus(n, p)
void my_orders(int *mode, int *iwork, int *data, int *index, int *n, int *irecl)
integer, parameter nchartitle
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)