33
34
35
36#include "implicit_f.inc"
37
38
39
40#include "mvsiz_p.inc"
41
42
43
44 INTEGER, INTENT (IN) :: NEL
45 INTEGER, DIMENSION(MVSIZ),INTENT (INOUT) :: IFC1
46 my_real,
DIMENSION(MVSIZ),
INTENT (IN) :: marge,
47 . xi, yi, zi,stif,
48 . x1, x2, x3, x4,
49 . y1, y2, y3, y4,
50 . z1, z2, z3, z4
51
52
53
54
55
56
57 INTEGER I,J,K
58
60 . rx, ry, rz, sx, sy, sz,nx,ny,nz,bbb,
61 . dx,dy,dz,dd,pene(mvsiz),
norm,dmin,dmin1
62
63 DO i=1,nel
64 IF (ifc1(i)>0) cycle
65 rx =x2(i)+x3(i)-x1(i)-x4(i)
66 ry =y2(i)+y3(i)-y1(i)-y4(i)
67 rz =z2(i)+z3(i)-z1(i)-z4(i)
68 sx =x3(i)+x4(i)-x1(i)-x2(i)
69 sy =y3(i)+y4(i)-y1(i)-y2(i)
70 sz =z3(i)+z4(i)-z1(i)-z2(i)
71 nx =ry*sz - rz*sy
72 ny =rz*sx - rx*sz
73 nz =rx*sy - ry*sx
74 norm=one/
max(em20,sqrt(nx*nx+ny*ny+nz*nz))
75 bbb = ((x3(i)-xi(i))*nx + (y3(i)-yi(i))*ny +
76 . (z3(i)-zi(i))*nz)*
norm
77 pene(i) = abs(bbb)
78 IF (pene(i)<marge(i).AND.stif(i)>zero) ifc1(i)=2
79 ENDDO
80
81#include "vectorize.inc"
82 DO i=1,nel
83 IF (ifc1(i)==0) cycle
84 dx =x4(i)-x3(i)
85 dy =y4(i)-y3(i)
86 dz =z4(i)-z3(i)
87 dmin = abs(dx)+abs(dy)+abs(dz)
88 IF (dmin==zero) THEN
89 ifc1(i)=3
90 dx =x2(i)-x1(i)
91 dy =y2(i)-y1(i)
92 dz =z2(i)-z1(i)
93 dmin1 = abs(dx)+abs(dy)+abs(dz)
94 IF (dmin1==zero) ifc1(i)=0
95 cycle
96 END IF
97 dx =x2(i)-x1(i)
98 dy =y2(i)-y1(i)
99 dz =z2(i)-z1(i)
100 dmin = abs(dx)+abs(dy)+abs(dz)
101 IF (dmin==zero) THEN
102 ifc1(i)=6
103 cycle
104 END IF
105 dx =x4(i)-x1(i)
106 dy =y4(i)-y1(i)
107 dz =z4(i)-z1(i)
108 dmin = abs(dx)+abs(dy)+abs(dz)
109 IF (dmin==zero) THEN
110 ifc1(i)=4
111 dx =x3(i)-x2(i)
112 dy =y3(i)-y2(i)
113 dz =z3(i)-z2(i)
114 dmin1 = abs(dx)+abs(dy)+abs(dz)
115 IF (dmin1==zero) ifc1(i)=0
116 cycle
117 END IF
118 dx =x3(i)-x2(i)
119 dy =y3(i)-y2(i)
120 dz =z3(i)-z2(i)
121 dmin = abs(dx)+abs(dy)+abs(dz)
122 IF (dmin==zero) THEN
123 ifc1(i)=5
124 cycle
125 END IF
126 ENDDO
127
128 RETURN
norm(diag(diag(diag(inv(mat))) -id.SOL), 2) % destroy mumps instance id.JOB