39
40
41
43
44
45
46#include "implicit_f.inc"
47#include "comlock.inc"
48
49
50
51#include "mvsiz_p.inc"
52
53
54
55#include "units_c.inc"
56#include "scr17_c.inc"
57#include "impl1_c.inc"
58
59
60
61 INTEGER, INTENT(IN) :: NEL
62 INTEGER NNEGA,INDEX(*),IPT
63
65 . offg(*),wi,
66 . aj1(*),aj2(*),aj3(*),
67 . aj4(*),aj5(*),aj6(*),
68 . aj7(*),aj8(*),aj9(*),
69 . aji1(*), aji2(*), aji3(*),
70 . aji4(*), aji5(*), aji6(*),
71 . aji7(*), aji8(*), aji9(*)
72 DOUBLE PRECISION
73 . VOLDP(*)
74
75
76
77 INTEGER NGL(*), I, J ,ICOR
78
79
81 . vol(mvsiz),det(mvsiz) ,dett(mvsiz) ,
82 . jac_59_68(mvsiz), jac_67_49(mvsiz), jac_48_57(mvsiz),
83 . jac_38_29(mvsiz), jac_19_37(mvsiz), jac_27_18(mvsiz),
84 . jac_26_35(mvsiz), jac_34_16(mvsiz), jac_15_24(mvsiz)
85 DOUBLE PRECISION
86 . DETDP
87
88
89 DO i=1,nel
90 jac_59_68(i)=aj5(i)*aj9(i)-aj6(i)*aj8(i)
91 jac_67_49(i)=aj6(i)*aj7(i)-aj4(i)*aj9(i)
92 jac_38_29(i)=(-aj2(i)*aj9(i)+aj3(i)*aj8(i))
93 jac_19_37(i)=( aj1(i)*aj9(i)-aj3(i)*aj7(i))
94 jac_27_18(i)=(-aj1(i)*aj8(i)+aj2(i)*aj7(i))
95 jac_26_35(i)=( aj2(i)*aj6(i)-aj3(i)*aj5(i))
96 jac_34_16(i)=(-aj1(i)*aj6(i)+aj3(i)*aj4(i))
97 jac_15_24(i)=( aj1(i)*aj5(i)-aj2(i)*aj4(i))
98 jac_48_57(i)=aj4(i)*aj8(i)-aj5(i)*aj7(i)
99 ENDDO
100
101 DO i=1,nel
102 detdp=one_over_512*(aj1(i)*jac_59_68(i)+aj2(i)*jac_67_49(i)+aj3(i)*jac_48_57(i))
103 det(i)=detdp
104 voldp(i)= wi*detdp
105 vol(i)= voldp(i)
106 ENDDO
107
108 icor = 0
109 DO i=1,nel
110 IF(offg(i)==zero)THEN
111 det(i)=one
112 IF (vol(i)<=zero) THEN
113 vol(i)=one
114 voldp(i)= one
115 END IF
116 ELSEIF (vol(i)<=zero ) THEN
117 icor=1
118 ENDIF
119 ENDDO
120 IF (icor>0.AND.inconv==1) THEN
121 DO i=1,nel
122 IF (offg(i) /= two .AND.offg(i) /= zero ) THEN
123 nnega=nnega+1
124 index(nnega)=i
125 offg(i) = two
126 END IF
127 ENDDO
128 END IF
129
130 IF (icor>0.AND.impl_s>0) THEN
131 DO i=1,nel
132 IF(vol(i)<=zero)THEN
133 voldp(i)= em20
134 det(i)= em20
135 IF (imp_chk>0) THEN
136#include "lockon.inc"
137 WRITE(iout ,2001) ngl(i)
138#include "lockoff.inc"
139 idel7nok = 1
140 imp_ir = imp_ir + 1
141 ELSEIF (imconv==1.AND.abs(offg(i))/=two) THEN
142
143
144
145
146
147 ENDIF
148 ENDIF
149 ENDDO
150 END IF
151
152
153 DO i=1,nel
154 dett(i)=one_over_512/det(i)
155 aji1(i)=dett(i)*jac_59_68(i)
156 aji4(i)=dett(i)*jac_67_49(i)
157 aji7(i)=dett(i)*jac_48_57(i)
158 aji2(i)=dett(i)*jac_38_29(i)
159 aji5(i)=dett(i)*jac_19_37(i)
160 aji8(i)=dett(i)*jac_27_18(i)
161 aji3(i)=dett(i)*jac_26_35(i)
162 aji6(i)=dett(i)*jac_34_16(i)
163 aji9(i)=dett(i)*jac_15_24(i)
164 ENDDO
165
166 RETURN
167 2000 FORMAT(/' ZERO OR NEGATIVE SUB-VOLUME : DELETE 3D-ELEMENT NB',
168 . i10/)
169 2001 FORMAT(/' ZERO OR NEGATIVE SOLID SUB-VOLUME : ELEMENT NB:',
170 . i10/)