38
39
40
43 USE format_mod , ONLY : fmw_10i
44
45
46
47#include "implicit_f.inc"
48
49
50
51#include "param_c.inc"
52#include "units_c.inc"
53#include "com01_c.inc"
54#include "com04_c.inc"
55#include "scr03_c.inc"
56#include "tabsiz_c.inc"
57
58
59
60 TYPE(t_ale_connectivity), INTENT(INOUT) :: ALE_CONNECTIVITY
61 INTEGER NNODE, NIX, IDSU,ID,NSEG,ISEG(*),IELE(*),ITYPE(*),
62 . IADD(*),INVC(*),IFAC(*),TYPE,SURF_NODES(NSEG,4)
63 INTEGER,INTENT(IN) :: NUMEL
64 INTEGER,INTENT(IN) :: IX(NIX,NUMEL)
65 INTEGER,INTENT(IN) :: ITAB(NUMNOD)
66 INTEGER,INTENT(IN) :: IGEO(NPROPGI,NUMGEO)
67 my_real pm(npropm,nummat),x(3,sx/3)
68
69
70
71 INTEGER II,JJ,J,K,M,PP,NN,KK,NEL,IRECT(4),IAD,N,ALE,NF,IP(NNODE),TURBU,NEIGH,CON(8),IS
72 INTEGER IFACE, IFACE2, IFACE2T, JALE_FROM_MAT, JALE_FROM_PROP,MINUS
74 my_real :: xx1(4), xx2(4),xx3(4),xs1,ys1,zs1,xc,yc,zc
76 DATA con/1,2,3,4,5,6,7,8/
77
78
79
80 turbu=0
81 neigh=0
82 IF(ipri>=1)
WRITE(iout,1000)
id,idsu
83
84 DO j=1,nseg
85 DO k=1,4
86 irect(k)=surf_nodes(j,k)
87 ENDDO
88 IF (irect(3) == 0) irect(3) = irect(2)
89 IF(irect(4)==0) irect(4)=irect(3)
90
91 nel=0
92 DO 230 iad=iadd(irect(1)),iadd(irect(1)+1)-1
93 DO k=1,nnode
94 ip(k)=0
95 ENDDO
96 n = invc(iad)
97 DO 220 jj=1,4
98 ii=irect(jj)
99 DO k=1,nnode
100 IF(ix(k+1,n)==ii)THEN
101 ip(k)=1
102 GOTO 220
103 ENDIF
104 ENDDO
105 GOTO 230
106 220 CONTINUE
107
108 IF (n2d == 0) THEN
109
111 IF (ip(1) * ip(3) * ip(6) /= 0) THEN
112 nf = 5
113 ELSEIF (ip(1) * ip(3) * ip(5) /= 0) THEN
114 nf = 6
115 ELSEIF (ip(3) * ip(6) * ip(5) /= 0) THEN
116 nf = 2
117 ELSEIF (ip(6) * ip(5) * ip(1) /= 0) THEN
118 nf = 4
119 ENDIF
120 ELSEIF (nnode == 4) THEN
121
123 ELSEIF (nnode == 3) THEN
124
126 ENDIF
127 nel = n
128
129 230 CONTINUE
130
131 IF (nel == 0) THEN
132 ierr=ierr+1
133 neigh=neigh+1
134 IF(n2d == 0)THEN
135 WRITE(istdo,*)
' ** ERROR EBCS ',
id,
' FACE IS NOT FACING A SOLID ELEMENT, FACE :', itab(irect(1:4))
136 ELSE
137 WRITE(istdo,*)
' ** ERROR EBCS ',
id,
' SEGMENTS IS NOT FACING A SOLID ELEMENT, SEG :', itab(irect
138 ENDIF
139 GOTO 500
140 ENDIF
141
142 xs1=zero
143 ys1=zero
144 zs1=zero
145 IF(n2d == 0)THEN
146 DO jj=1,4
147 nn=irect(jj)
148 IF(nn==0)nn=irect(3)
149 xx1(jj)=x(1,nn)
150 xx2(jj)=x(2,nn)
151 xx3(jj)=x(3,nn)
152 xs1=xs1+fourth*x(1,nn)
153 ys1=ys1+fourth*x(2,nn)
154 zs1=zs1+fourth*x(3,nn)
155 ENDDO
156 ELSE
157 xx2(1)=x(2,irect(1))
158 xx3(1)=x(3,irect(1))
159 xx2(2)=x(2,irect(2))
160 xx3(2)=x(3,irect(2))
161 ys1=half*(x(2,irect(1)) + x(2,irect(2)))
162 zs1=half*(x(3,irect(1)) + x(3,irect(2)))
163 ENDIF
164
165 IF (n2d == 0) THEN
167 ELSE
168 n1 = zero
169 n2 = xx3(2) - xx3(1)
170 n3 = -(xx2(2) - xx2(1))
171 area = sqrt(n2 * n2 + n3 * n3)
174 ENDIF
175
176 xc=zero
177 yc=zero
178 zc=zero
179 DO k=1,nnode
180 kk=ix(k+1,nel)
181 xc=xc+x(1,kk)
182 yc=yc+x(2,kk)
183 zc=zc+x(3,kk)
184 ENDDO
185 xc=xc/nnode
186 yc=yc/nnode
187 zc=zc/nnode
188
189 dds=n1*(xc-xs1)+n2*(yc-ys1)+n3*(zc-zs1)
190 IF(dds>0)THEN
191 is=-1
192 ELSE
193 is=1
194 ENDIF
195
196 iele(j)=nel
197 itype(j)=nnode
198 IF (TYPE == 8 .OR. type == 9 .OR. TYPE == 10 .OR. type == 11 .OR. TYPE == 12) then
199 ifac(j) = nf
200 ENDIF
201 m=ix(1,nel)
202 pp=ix(nix-1,nel)
203 jale_from_mat = int(pm(72,m))
204 jale_from_prop = igeo(62,pp)
205 ale = jale_from_mat + jale_from_prop
206 IF(ale/=0)THEN
207 segindx = segindx+1
208 iseg(j) = is*segindx
209 iad = ale_connectivity%ee_connect%iad_connect(nel)
210 minus = -1
211
212 ale_connectivity%ee_connect%connected(iad + nf - 1) = -segindx
213 IF(ipri>=1)WRITE(iout,fmt=fmw_10i)j,ix(nix,nel),nf,iseg(j)
214 ELSE
215 IF(ipri>=1)WRITE(iout,fmt=fmw_10i)j,ix(nix,nel),0,0
216 ENDIF
217 turbu=
max(turbu,int(pm(70,m)))
218 500 CONTINUE
219 ENDDO
220
221 IF(turbu/=0)THEN
222 ierr=ierr+1
223 WRITE(istdo,*)
' ** ERROR EBCS ',
id,
' TURBULENCE NOT YET SUPPORTED'
224 WRITE(iout,*)
' ** ERROR EBCS ',
id,
' TURBULENCE NOT YET SUPPORTED'
225 ENDIF
226 IF(neigh /= 0)THEN
227 IF(n2d == 0)THEN
228 WRITE(istdo,*)
' ** ERROR EBCS ',
id,neigh,
' FACE IS NOT FACING A SOLID ELEMENT, FACE :', itab(irect(1:4))
229 ELSE
230 WRITE(istdo,*)
' ** ERROR EBCS ',
id,neigh,
' SEGMENTS IS NOT FACING A SOLID ELEMENT, SEG :', itab(irect(1:2))
231 ENDIF
232 ENDIF
233
234 RETURN
235
236 1000 FORMAT(//,'ELEMENTARY BCS',i10,' SURFACE ',i10,/,
237 . '-----------------------------------------',/,
238 . ' SEGMENT ELT FACE SEGINDX ')
subroutine area(d1, x, x2, y, y2, eint, stif0)
integer function iface(ip, n)
integer function iface2(ip, n)
integer function iface2t(ip, n)
subroutine norma1(n1, n2, n3, area, xx1, xx2, xx3)