OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
s8sderi3.F File Reference
#include "implicit_f.inc"
#include "comlock.inc"
#include "mvsiz_p.inc"
#include "units_c.inc"
#include "scr17_c.inc"
#include "impl1_c.inc"
#include "lockon.inc"
#include "lockoff.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine s8sderi3 (offg, off, voldp, ngl, ksi, eta, zeta, wi, x1, x2, x3, x4, x5, x6, x7, x8, y1, y2, y3, y4, y5, y6, y7, y8, z1, z2, z3, z4, z5, z6, z7, z8, a11, a12, a13, a21, a22, a23, a31, a32, a33, dn_r, dn_s, dn_t, invj, dn_x, dn_y, dn_z, voln, nel)

Function/Subroutine Documentation

◆ s8sderi3()

subroutine s8sderi3 ( offg,
off,
double precision, dimension(*) voldp,
integer, dimension(*) ngl,
ksi,
eta,
zeta,
wi,
x1,
x2,
x3,
x4,
x5,
x6,
x7,
x8,
y1,
y2,
y3,
y4,
y5,
y6,
y7,
y8,
z1,
z2,
z3,
z4,
z5,
z6,
z7,
z8,
a11,
a12,
a13,
a21,
a22,
a23,
a31,
a32,
a33,
double precision, dimension(8) dn_r,
double precision, dimension(8) dn_s,
double precision, dimension(8) dn_t,
double precision, dimension(9,mvsiz) invj,
double precision, dimension(mvsiz,8) dn_x,
double precision, dimension(mvsiz,8) dn_y,
double precision, dimension(mvsiz,8) dn_z,
voln,
integer, intent(in) nel )

Definition at line 29 of file s8sderi3.F.

43C-----------------------------------------------
44C I m p l i c i t T y p e s
45C-----------------------------------------------
46#include "implicit_f.inc"
47#include "comlock.inc"
48C-----------------------------------------------
49C G l o b a l P a r a m e t e r s
50C-----------------------------------------------
51#include "mvsiz_p.inc"
52C-----------------------------------------------
53C C o m m o n B l o c k s
54C-----------------------------------------------
55#include "units_c.inc"
56#include "scr17_c.inc"
57#include "impl1_c.inc"
58C-----------------------------------------------
59C D u m m y A r g u m e n t s
60C-----------------------------------------------
61 INTEGER, INTENT(IN) :: NEL
62 !INTEGER ICP,IDEG(*)
63C REAL
65 . off(*),offg(*),ksi,eta,zeta,wi,voln(*),
66 . a11(mvsiz), a12(mvsiz), a13(mvsiz),
67 . a21(mvsiz), a22(mvsiz), a23(mvsiz),
68 . a31(mvsiz), a32(mvsiz), a33(mvsiz)
69 DOUBLE PRECISION
70 . VOLDP(*)
71C-----------------------------------------------
72C L o c a l V a r i a b l e s
73C-----------------------------------------------
74 INTEGER NGL(*), I, J ,ICOR,ep
75C REAL
76C 12
78 . x1(mvsiz), x2(mvsiz), x3(mvsiz), x4(mvsiz),
79 . x5(mvsiz), x6(mvsiz), x7(mvsiz), x8(mvsiz),
80 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz),
81 . y5(mvsiz), y6(mvsiz), y7(mvsiz), y8(mvsiz),
82 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz),
83 . z5(mvsiz), z6(mvsiz), z7(mvsiz), z8(mvsiz),vol(mvsiz)
84
85 DOUBLE PRECISION RI(8),SI(8),TI(8),DN_R(8),DN_S(8),DN_T(8),
86 . DX_R,DX_S,DX_T,DY_R,DY_S,DY_T,DZ_R,DZ_S,DZ_T,DETM1,
87 . DETJ(MVSIZ),INVJ(9,MVSIZ),
88 . DN_X(MVSIZ,8),DN_Y(MVSIZ,8),DN_Z(MVSIZ,8),C(6,6,MVSIZ),DETDP
89C-----------------------------------------------
90
91 DATA ri /-1.0, -1.0, 1.0, 1.0,-1.0, -1.0, 1.0, 1.0/
92 DATA si /-1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0/
93 DATA ti /-1.0, 1.0, 1.0, -1.0,-1.0, 1.0, 1.0,-1.0/
94
95!sb ksi->t eta->r zeta->s
96 DO i=1,8
97 dn_r(i) = ri(i)*(one+ksi*ti(i))*(one+zeta*si(i))/eight
98 dn_s(i) = si(i)*(one+ksi*ti(i))*(one+eta*ri(i))/eight
99 dn_t(i) = ti(i)*(one+eta*ri(i))*(one+zeta*si(i))/eight
100 ENDDO
101! Jacobien
102 DO i=1,nel
103 dx_r = x1(i)*dn_r(1)+x2(i)*dn_r(2)+x3(i)*dn_r(3)+x4(i)*dn_r(4)
104 . +x5(i)*dn_r(5)+x6(i)*dn_r(6)+x7(i)*dn_r(7)+x8(i)*dn_r(8)
105 dx_s = x1(i)*dn_s(1)+x2(i)*dn_s(2)+x3(i)*dn_s(3)+x4(i)*dn_s(4)
106 . +x5(i)*dn_s(5)+x6(i)*dn_s(6)+x7(i)*dn_s(7)+x8(i)*dn_s(8)
107 dx_t = x1(i)*dn_t(1)+x2(i)*dn_t(2)+x3(i)*dn_t(3)+x4(i)*dn_t(4)
108 . +x5(i)*dn_t(5)+x6(i)*dn_t(6)+x7(i)*dn_t(7)+x8(i)*dn_t(8)
109
110 dy_r = y1(i)*dn_r(1)+y2(i)*dn_r(2)+y3(i)*dn_r(3)+y4(i)*dn_r(4)
111 . +y5(i)*dn_r(5)+y6(i)*dn_r(6)+y7(i)*dn_r(7)+y8(i)*dn_r(8)
112 dy_s = y1(i)*dn_s(1)+y2(i)*dn_s(2)+y3(i)*dn_s(3)+y4(i)*dn_s(4)
113 . +y5(i)*dn_s(5)+y6(i)*dn_s(6)+y7(i)*dn_s(7)+y8(i)*dn_s(8)
114 dy_t = y1(i)*dn_t(1)+y2(i)*dn_t(2)+y3(i)*dn_t(3)+y4(i)*dn_t(4)
115 . +y5(i)*dn_t(5)+y6(i)*dn_t(6)+y7(i)*dn_t(7)+y8(i)*dn_t(8)
116
117 dz_r = z1(i)*dn_r(1)+z2(i)*dn_r(2)+z3(i)*dn_r(3)+z4(i)*dn_r(4)
118 . +z5(i)*dn_r(5)+z6(i)*dn_r(6)+z7(i)*dn_r(7)+z8(i)*dn_r(8)
119 dz_s = z1(i)*dn_s(1)+z2(i)*dn_s(2)+z3(i)*dn_s(3)+z4(i)*dn_s(4)
120 . +z5(i)*dn_s(5)+z6(i)*dn_s(6)+z7(i)*dn_s(7)+z8(i)*dn_s(8)
121 dz_t = z1(i)*dn_t(1)+z2(i)*dn_t(2)+z3(i)*dn_t(3)+z4(i)*dn_t(4)
122 . +z5(i)*dn_t(5)+z6(i)*dn_t(6)+z7(i)*dn_t(7)+z8(i)*dn_t(8)
123
124 detdp = dx_r*(dy_s*dz_t-dz_s*dy_t)
125 . -dx_s*(dy_r*dz_t-dy_t*dz_r)
126 . +dx_t*(dy_r*dz_s-dy_s*dz_r)
127 detj(i) = detdp
128 voldp(i) = wi*detdp
129
130 IF (detj(i) > zero)THEN
131 detm1 = one/detj(i)
132
133 invj(1,i) = (dy_s*dz_t-dz_s*dy_t)*detm1
134 invj(2,i) = (dz_r*dy_t-dy_r*dz_t)*detm1
135 invj(3,i) = (dy_r*dz_s-dy_s*dz_r)*detm1
136 invj(4,i) = (dx_t*dz_s-dx_s*dz_t)*detm1
137 invj(5,i) = (dx_r*dz_t-dx_t*dz_r)*detm1
138 invj(6,i) = (dx_s*dz_r-dx_r*dz_s)*detm1
139 invj(7,i) = (dx_s*dy_t-dx_t*dy_s)*detm1
140 invj(8,i) = (dx_t*dy_r-dx_r*dy_t)*detm1
141 invj(9,i) = (dx_r*dy_s-dx_s*dy_r)*detm1
142 ELSE
143
144 ENDIF
145
146 a11(i) = dx_t !R
147 a12(i) = dy_t !R
148 a13(i) = dz_t !R
149 a21(i) = dx_r !S
150 a22(i) = dy_r !S
151 a23(i) = dz_r !S
152 a31(i) = dx_s !T
153 a32(i) = dy_s !T
154 a33(i) = dz_s !T
155 ENDDO
156
157 DO j=1,8
158 DO i=1,nel
159 dn_x(i,j) = dn_r(j)*invj(1,i)+dn_s(j)*invj(2,i)+dn_t(j)*invj(3,i)
160 dn_y(i,j) = dn_r(j)*invj(4,i)+dn_s(j)*invj(5,i)+dn_t(j)*invj(6,i)
161 dn_z(i,j) = dn_r(j)*invj(7,i)+dn_s(j)*invj(8,i)+dn_t(j)*invj(9,i)
162 ENDDO
163 ENDDO
164
165 icor = 0
166 DO i=1,nel
167 off(i)=offg(i)
168 IF(off(i)==zero)THEN
169 detj(i)=one
170 IF (voldp(i)<=zero) voldp(i)=one
171 ELSEIF (voldp(i)<=zero ) THEN
172 voldp(i)= em20
173 off(i) =zero
174 icor=1
175 ENDIF
176 ENDDO
177C
178 IF (icor>0.AND.impl_s>0) THEN
179 DO i=1,nel
180 IF(voldp(i)<=zero.AND.off(i)/=zero)THEN
181 voldp(i)= em20
182 off(i) =zero
183 IF (imp_chk>0) THEN
184#include "lockon.inc"
185 WRITE(iout ,2001) ngl(i)
186#include "lockoff.inc"
187 idel7nok = 1
188 imp_ir = imp_ir + 1
189 ELSEIF (imconv==1) THEN
190#include "lockon.inc"
191 WRITE(istdo,2000) ngl(i)
192 WRITE(iout ,2000) ngl(i)
193#include "lockoff.inc"
194 idel7nok = 1
195 ENDIF
196 ENDIF
197 ENDDO
198 END IF
199
200 DO i=1,nel
201 voln(i) = voldp(i)
202 ENDDO
203c
204
205C
206 2000 FORMAT(/' ZERO OR NEGATIVE SUB-VOLUME : DELETE 3D-ELEMENT NB',
207 . i10/)
208 2001 FORMAT(/' ZERO OR NEGATIVE SOLID SUB-VOLUME : ELEMENT NB:',
209 . i10/)
210 RETURN
#define my_real
Definition cppsort.cpp:32