40
41
42
43#include "implicit_f.inc"
44
45
46
47#include "mvsiz_p.inc"
48
49
50
51 INTEGER, INTENT(IN) :: NEL
53 . x1(*), x2(*), x3(*), x4(*), x5(*), x6(*), x7(*), x8(*),
54 . y1(*), y2(*), y3(*), y4(*), y5(*), y6(*), y7(*), y8(*),
55 . z1(*), z2(*), z3(*), z4(*), z5(*), z6(*), z7(*), z8(*),
56 .
area(mvsiz,6),aream(*),volg(*)
57
58
59
60
61
62
63 INTEGER I,IDEG(MVSIZ),J,IDET4(MVSIZ),IT(MVSIZ)
64 INTEGER :: N_INDX
65 INTEGER, DIMENSION(MVSIZ) :: INDX
67
68 ideg(1:mvsiz)=0
69 DO j=1,6
70 DO i=1,nel
71 IF(
area(i,j)<em30) ideg(i)=ideg(i)+1
72 ENDDO
73 ENDDO
74
75 n_indx = 0
76 DO i=1,nel
77
78 IF(ideg(i) > 0) THEN
79 aream(i) =em20
80
81 IF (ideg(i)>=2) THEN
82 fac(i)=one_over_9
83 ELSE
84 fac(i)=fourth
85 END IF
86 n_indx = n_indx + 1
87 indx(n_indx) = i
88 ENDIF
89 ENDDO
90 idet4(1:mvsiz) = 1
91 it(1:mvsiz) = 0
92 IF(n_indx>0) THEN
93 CALL idege(x1,x2,x3,x4,y1,y2,y3,y4,
94 . z1,z2,z3,z4,
area(1,1),aream,fac,idet4,it,indx,n_indx)
95 CALL idege(x5,x6,x7,x8,y5,y6,y7,y8,
96 . z5,z6,z7,z8,
area(1,2),aream,fac,idet4,it,indx,n_indx)
97 CALL idege(x1,x2,x6,x5,y1,y2,y6,y5,
98 . z1,z2,z6,z5,
area(1,3),aream,fac,idet4,it,indx,n_indx)
99 CALL idege(x2,x3,x7,x6,y2,y3,y7,y6,
100 . z2,z3,z7,z6,
area(1,4),aream,fac,idet4,it,indx,n_indx)
101 CALL idege(x3,x4,x8,x7,y3,y4,y8,y7,
102 . z3,z4,z8,z7,
area(1,5),aream,fac,idet4,it,indx,n_indx)
103 CALL idege(x4,x1,x5,x8,y4,y1,y5,y8,
104 . z4,z1,z5,z8,
area(1,6),aream,fac,idet4,it,indx,n_indx)
105
106#include "vectorize.inc"
107 DO j=1,n_indx
108 i = indx(j)
109
110 IF (it(i) ==0 ) aream(i)=fac(i)*aream(i)
111
112 IF (idet4(i) ==1 ) THEN
114 . x1(i), x2(i), x3(i), x4(i), x5(i), x6(i), x7(i), x8(i),
115 . y1(i), y2(i), y3(i), y4(i), y5(i), y6(i), y7(i), y8(i),
116 . z1(i), z2(i), z3(i), z4(i), z5(i), z6(i), z7(i), z8(i))
117 fac(i)=third*volg(i)/v_g
118 aream(i)=fac(i)*fac(i)*aream(i)
119 END IF
120 ENDDO
121 ENDIF
122
123 RETURN
subroutine deges4v(det, x1, x2, x3, x4, x5, x6, x7, x8, y1, y2, y3, y4, y5, y6, y7, y8, z1, z2, z3, z4, z5, z6, z7, z8)
subroutine area(d1, x, x2, y, y2, eint, stif0)
subroutine idege(x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, a, amax, fac, it4, it, indx, n_indx)