OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
sdlensh8.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| sdlensh8 ../engine/source/elements/thickshell/solide8c/sdlensh8.F
25!||--- called by ------------------------------------------------------
26!|| s8cforc3 ../engine/source/elements/thickshell/solide8c/s8cforc3.F
27!||--- calls -----------------------------------------------------
28!|| clsys3 ../engine/source/output/h3d/h3d_results/h3d_shell_tensor.F
29!||====================================================================
30 SUBROUTINE sdlensh8(
31 1 VOLN, LLSH, AREA, X1, X2,
32 2 X3, X4, X5, X6,
33 3 X7, X8, Y1, Y2,
34 4 Y3, Y4, Y5, Y6,
35 5 Y7, Y8, Z1, Z2,
36 6 Z3, Z4, Z5, Z6,
37 7 Z7, Z8, ICS, NEL)
38C-----------------------------------------------
39C I m p l i c i t T y p e s
40C-----------------------------------------------
41#include "implicit_f.inc"
42C-----------------------------------------------
43C G l o b a l P a r a m e t e r s
44C-----------------------------------------------
45#include "mvsiz_p.inc"
46C-----------------------------------------------
47C C o m m o n B l o c k s
48C-----------------------------------------------
49#include "scr17_c.inc"
50C-----------------------------------------------
51C D u m m y A r g u m e n t s
52C-----------------------------------------------
53 INTEGER, INTENT(IN) :: NEL,ICS
54 my_real, DIMENSION(MVSIZ) , INTENT(OUT) :: AREA,LLSH
55 my_real, DIMENSION(MVSIZ) , INTENT(IN) :: VOLN,
56 . X1, X2, X3, X4, X5, X6, X7, X8,
57 . Y1, Y2, Y3, Y4, Y5, Y6, Y7, Y8,
58 . Z1, Z2, Z3, Z4, Z5, Z6, Z7, Z8
59C-----------------------------------------------
60C L o c a l V a r i a b l e s
61C-----------------------------------------------
62 INTEGER I, J, N
63 my_real
64 . RX(MVSIZ),RY(MVSIZ),RZ(MVSIZ),SX(MVSIZ),SY(MVSIZ),SZ(MVSIZ),
65 . VQ(3,3,MVSIZ), LXYZ0(3),DETA1(MVSIZ),XX,YY,ZZ,
66 . XL2(MVSIZ),XL3(MVSIZ),XL4(MVSIZ),YL2(MVSIZ),
67 . YL3(MVSIZ),YL4(MVSIZ),ZL1(MVSIZ),
68 . XN(MVSIZ,4) , YN(MVSIZ,4) , ZN(MVSIZ,4)
69 my_real
70 . al1,al2,ll(mvsiz),corel(2,4)
71 my_real
72 . x13,x24,y13,y24,l13,l24,c1,c2,thkly,posly,
73 . fac,visce,rx1,ry1,sx1,sy1,s1,fac1,fac2,faci,fac11,facdt
74C=======================================================================
75 SELECT CASE(ics)
76 CASE (1)
77 DO i=1,nel
78 xn(i,1) = half*(x1(i)+x4(i))
79 yn(i,1) = half*(y1(i)+y4(i))
80 zn(i,1) = half*(z1(i)+z4(i))
81 xn(i,2) = half*(x2(i)+x3(i))
82 yn(i,2) = half*(y2(i)+y3(i))
83 zn(i,2) = half*(z2(i)+z3(i))
84 xn(i,3) = half*(x6(i)+x7(i))
85 yn(i,3) = half*(y6(i)+y7(i))
86 zn(i,3) = half*(z6(i)+z7(i))
87 xn(i,4) = half*(x5(i)+x8(i))
88 yn(i,4) = half*(y5(i)+y8(i))
89 zn(i,4) = half*(z5(i)+z8(i))
90 ENDDO
91 CASE (10)
92 DO i=1,nel
93 xn(i,1) = half*(x1(i)+x5(i))
94 yn(i,1) = half*(y1(i)+y5(i))
95 zn(i,1) = half*(z1(i)+z5(i))
96 xn(i,2) = half*(x2(i)+x6(i))
97 yn(i,2) = half*(y2(i)+y6(i))
98 zn(i,2) = half*(z2(i)+z6(i))
99 xn(i,3) = half*(x3(i)+x7(i))
100 yn(i,3) = half*(y3(i)+y7(i))
101 zn(i,3) = half*(z3(i)+z7(i))
102 xn(i,4) = half*(x4(i)+x8(i))
103 yn(i,4) = half*(y4(i)+y8(i))
104 zn(i,4) = half*(z4(i)+z8(i))
105 ENDDO
106 CASE (100)
107 DO i=1,nel
108 xn(i,1) = half*(x1(i)+x2(i))
109 yn(i,1) = half*(y1(i)+y2(i))
110 zn(i,1) = half*(z1(i)+z2(i))
111 xn(i,2) = half*(x5(i)+x6(i))
112 yn(i,2) = half*(y5(i)+y6(i))
113 zn(i,2) = half*(z5(i)+z6(i))
114 xn(i,3) = half*(x8(i)+x7(i))
115 yn(i,3) = half*(y8(i)+y7(i))
116 zn(i,3) = half*(z8(i)+z7(i))
117 xn(i,4) = half*(x4(i)+x3(i))
118 yn(i,4) = half*(y4(i)+y3(i))
119 zn(i,4) = half*(z4(i)+z3(i))
120 ENDDO
121 END SELECT
122C------g1,g2 :
123 DO i=1,nel
124 rx(i)=xn(i,2)+xn(i,3)-xn(i,1)-xn(i,4)
125 ry(i)=yn(i,2)+yn(i,3)-yn(i,1)-yn(i,4)
126 rz(i)=zn(i,2)+zn(i,3)-zn(i,1)-zn(i,4)
127 sx(i)=xn(i,3)+xn(i,4)-xn(i,1)-xn(i,2)
128 sy(i)=yn(i,3)+yn(i,4)-yn(i,1)-yn(i,2)
129 sz(i)=zn(i,3)+zn(i,4)-zn(i,1)-zn(i,2)
130 ENDDO
131C------Local elem. base:
132 CALL clsys3(rx, ry, rz, sx, sy, sz,
133 . vq, deta1,nel)
134C------ Global -> Local Coordinate FOURTH=0.25 ;
135 DO i=1,nel
136 lxyz0(1)=fourth*(xn(i,1)+xn(i,2)+xn(i,3)+xn(i,4))
137 lxyz0(2)=fourth*(yn(i,1)+yn(i,2)+yn(i,3)+yn(i,4))
138 lxyz0(3)=fourth*(zn(i,1)+zn(i,2)+zn(i,3)+zn(i,4))
139 xx=xn(i,2)-xn(i,1)
140 yy=yn(i,2)-yn(i,1)
141 zz=zn(i,2)-zn(i,1)
142 xl2(i)=vq(1,1,i)*xx+vq(2,1,i)*yy+vq(3,1,i)*zz
143 yl2(i)=vq(1,2,i)*xx+vq(2,2,i)*yy+vq(3,2,i)*zz
144 xx=xn(i,2)-lxyz0(1)
145 yy=yn(i,2)-lxyz0(2)
146 zz=zn(i,2)-lxyz0(3)
147 zl1(i)=vq(1,3,i)*xx+vq(2,3,i)*yy+vq(3,3,i)*zz
148C
149 xx=xn(i,3)-xn(i,1)
150 yy=yn(i,3)-yn(i,1)
151 zz=zn(i,3)-zn(i,1)
152 xl3(i)=vq(1,1,i)*xx+vq(2,1,i)*yy+vq(3,1,i)*zz
153 yl3(i)=vq(1,2,i)*xx+vq(2,2,i)*yy+vq(3,2,i)*zz
154C
155 xx=xn(i,4)-xn(i,1)
156 yy=yn(i,4)-yn(i,1)
157 zz=zn(i,4)-zn(i,1)
158 xl4(i)=vq(1,1,i)*xx+vq(2,1,i)*yy+vq(3,1,i)*zz
159 yl4(i)=vq(1,2,i)*xx+vq(2,2,i)*yy+vq(3,2,i)*zz
160 area(i)=fourth*deta1(i)
161 ENDDO
162 fac = two
163 facdt = five_over_4
164C-------same than QBAT
165 IF (idt1sol>0) facdt =four_over_3
166C---- compute COREL(2,4) mean surface and area
167 DO i=1,nel
168 lxyz0(1)=fourth*(xl2(i)+xl3(i)+xl4(i))
169 lxyz0(2)=fourth*(yl2(i)+yl3(i)+yl4(i))
170 corel(1,1)=-lxyz0(1)
171 corel(1,2)=xl2(i)-lxyz0(1)
172 corel(1,3)=xl3(i)-lxyz0(1)
173 corel(1,4)=xl4(i)-lxyz0(1)
174 corel(2,1)=-lxyz0(2)
175 corel(2,2)=yl2(i)-lxyz0(2)
176 corel(2,3)=yl3(i)-lxyz0(2)
177 corel(2,4)=yl4(i)-lxyz0(2)
178 x13=(corel(1,1)-corel(1,3))*half
179 x24=(corel(1,2)-corel(1,4))*half
180 y13=(corel(2,1)-corel(2,3))*half
181 y24=(corel(2,2)-corel(2,4))*half
182C
183 l13=x13*x13+y13*y13
184 l24=x24*x24+y24*y24
185 al1=max(l13,l24)
186 c1 =corel(1,2)*corel(2,4)-corel(2,2)*corel(1,4)
187 c2 =corel(1,1)*corel(2,3)-corel(2,1)*corel(1,3)
188 al2 =max(abs(c1),abs(c2))/area(i)
189 rx1=x24-x13
190 ry1=y24-y13
191 sx1=-x24-x13
192 sy1=-y24-y13
193 c1=sqrt(rx1*rx1+ry1*ry1)
194 c2=sqrt(sx1*sx1+sy1*sy1)
195 s1=fourth*(max(c1,c2)/min(c1,c2)-one)
196 fac1=min(half,s1)+one
197 fac2=area(i)/(c1*c2)
198 fac2=3.413*max(zero,fac2-0.7071)
199 fac2=0.78+0.22*fac2*fac2*fac2
200 faci=two*fac1*fac2
201 s1 = sqrt(faci*(facdt+al2)*al1)
202 s1 = max(s1,em20)
203 llsh(i) = area(i)/s1
204 ENDDO
205C
206 RETURN
207 END
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
subroutine clsys3(rx, ry, rz, sx, sy, sz, vq, det, nel, mvsiz)
Definition scinit3.F:715
subroutine sdlensh8(voln, llsh, area, x1, x2, x3, x4, x5, x6, x7, x8, y1, y2, y3, y4, y5, y6, y7, y8, z1, z2, z3, z4, z5, z6, z7, z8, ics, nel)
Definition sdlensh8.F:38