OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
sldege.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!||====================================================================
25!|| sldege ../engine/source/elements/solid/solide/sldege.F
26!||--- called by ------------------------------------------------------
27!|| sdlen3 ../engine/source/elements/solid/solide/sdlen3.F
28!||--- calls -----------------------------------------------------
29!|| deges4v ../engine/source/elements/solid/solide/deges4v.F
30!|| idege ../engine/source/elements/solid/solide/idege.F
31!||====================================================================
32 SUBROUTINE sldege(
33 1 X1, X2, X3, X4,
34 2 X5, X6, X7, X8,
35 3 Y1, Y2, Y3, Y4,
36 4 Y5, Y6, Y7, Y8,
37 5 Z1, Z2, Z3, Z4,
38 6 Z5, Z6, Z7, Z8,
39 7 AREA, AREAM, VOLG, NEL)
40C-----------------------------------------------
41C I m p l i c i t T y p e s
42C-----------------------------------------------
43#include "implicit_f.inc"
44C-----------------------------------------------
45C G l o b a l P a r a m e t e r s
46C-----------------------------------------------
47#include "mvsiz_p.inc"
48C-----------------------------------------------
49C D u m m y A r g u m e n t s
50C-----------------------------------------------
51 INTEGER, INTENT(IN) :: NEL
52 my_real
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(*)
57C-----------------------------------------------
58C C o m m o n B l o c k s
59C-----------------------------------------------
60C-----------------------------------------------
61C L o c a l V a r i a b l e s
62C-----------------------------------------------
63 INTEGER I,IDEG(MVSIZ),J,IDET4(MVSIZ),IT(MVSIZ)
64 INTEGER :: N_INDX
65 INTEGER, DIMENSION(MVSIZ) :: INDX
66 my_real FAC(MVSIZ),V_G
67C-----------------------------------------------
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
74C
75 n_indx = 0
76 DO i=1,nel
77C-------due to the fact that AREA_Max*L is far from V for Dege---
78 IF(ideg(i) > 0) THEN
79 aream(i) =em20
80C----tetra 4 ,pyrami
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)
109C--------suposse here V=0.5*A_max*L for penta =0.333A_max*L for Pyram
110 IF (it(i) ==0 ) aream(i)=fac(i)*aream(i)
111C--------add special treat for tetra4, as V is not right values
112 IF (idet4(i) ==1 ) THEN
113 CALL deges4v(v_g,
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
122C
123 RETURN
124 END
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)
Definition deges4v.F:37
subroutine idege(x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, a, amax, fac, it4, it, indx, n_indx)
Definition idege.F:30
subroutine sldege(x1, x2, x3, x4, x5, x6, x7, x8, y1, y2, y3, y4, y5, y6, y7, y8, z1, z2, z3, z4, z5, z6, z7, z8, area, aream, volg, nel)
Definition sldege.F:40