OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
sdet43.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!|| sdet43 ../engine/source/elements/solid/sconnect/sdet43.F
25!||--- called by ------------------------------------------------------
26!|| scoor43 ../engine/source/elements/solid/sconnect/scoor43.F
27!||====================================================================
28 SUBROUTINE sdet43(
29 . NEL ,X ,Y ,Z ,AREA ,AREAP,OFF ,SOLID_ID,
30 . E1X ,E1Y ,E1Z ,E2X ,E2Y ,E2Z ,E3X ,E3Y ,E3Z )
31C-----------------------------------------------
32C I m p l i c i t T y p e s
33C-----------------------------------------------
34#include "implicit_f.inc"
35CC-----------------------------------------------
36C C o m m o n B l o c k s
37C-----------------------------------------------
38#include "units_c.inc"
39#include "comlock.inc"
40#include "mvsiz_p.inc"
41C-----------------------------------------------
42C D u m m y A r g u m e n t s
43C-----------------------------------------------
44 INTEGER NEL
45 INTEGER SOLID_ID(*)
46C REAL
48 . area(nel),areap(mvsiz,4),off(nel),
49 . x(nel,8) ,y(nel,8),z(nel,8),rxx(nel),ryy(nel),
50 . e1x(*),e2x(*),e3x(*),e1y(*),e2y(*),e3y(*),e1z(*),e2z(*),e3z(*)
51C-----------------------------------------------
52C L o c a l V a r i a b l e s
53C-----------------------------------------------
54 INTEGER I,NINDX
55 INTEGER INDX(NEL)
56C REAL
58 . pg, xx1,xx2,xx3,xx4,yy1,yy2,yy3,yy4,zz1,zz2,zz3,zz4,
59 . l1,l2,xl1,xl2,xl3,xl4,yl2,yl3,yl4,
60 . mx13,my13,mx23,mx34,my23,my34,j0,j1,j2
61 my_real
62 . vcx(4),vcy(4),
63 . p1x(nel), p2x(nel), p3x(nel), p4x(nel),
64 . p1y(nel), p2y(nel), p3y(nel), p4y(nel),
65 . p1z(nel), p2z(nel), p3z(nel), p4z(nel)
66 DATA pg/0.5773502691896257645091488/
67C=======================================================================
68 nindx = 0
69C Calcule AREA / P Gauss
70 DO i=1,nel
71 p1x(i)=(x(i,1)+x(i,5))*half
72 p1y(i)=(y(i,1)+y(i,5))*half
73 p1z(i)=(z(i,1)+z(i,5))*half
74 p2x(i)=(x(i,2)+x(i,6))*half
75 p2y(i)=(y(i,2)+y(i,6))*half
76 p2z(i)=(z(i,2)+z(i,6))*half
77 p3x(i)=(x(i,3)+x(i,7))*half
78 p3y(i)=(y(i,3)+y(i,7))*half
79 p3z(i)=(z(i,3)+z(i,7))*half
80 p4x(i)=(x(i,4)+x(i,8))*half
81 p4y(i)=(y(i,4)+y(i,8))*half
82 p4z(i)=(z(i,4)+z(i,8))*half
83 ENDDO
84C
85 DO i=1,nel
86 xx1 = p2x(i)-p1x(i)
87 yy1 = p2y(i)-p1y(i)
88 zz1 = p2z(i)-p1z(i)
89 xl2 = e1x(i)*xx1 + e1y(i)*yy1 + e1z(i)*zz1
90 yl2 = e2x(i)*xx1 + e2y(i)*yy1 + e2z(i)*zz1
91c
92 xx3 = p3x(i)-p1x(i)
93 yy3 = p3y(i)-p1y(i)
94 zz3 = p3z(i)-p1z(i)
95 xl3 = e1x(i)*xx3 + e1y(i)*yy3 + e1z(i)*zz3
96 yl3 = e2x(i)*xx3 + e2y(i)*yy3 + e2z(i)*zz3
97c
98 xx4 = p4x(i)-p1x(i)
99 yy4 = p4y(i)-p1y(i)
100 zz4 = p4z(i)-p1z(i)
101 xl4 = e1x(i)*xx4 + e1y(i)*yy4 + e1z(i)*zz4
102 yl4 = e2x(i)*xx4 + e2y(i)*yy4 + e2z(i)*zz4
103c
104 l1=fourth*(xl2+xl3+xl4)
105 l2=fourth*(yl2+yl3+yl4)
106c
107 vcx(1)=-l1
108 vcx(2)= xl2-l1
109 vcx(3)= xl3-l1
110 vcx(4)= xl4-l1
111 vcy(1)=-l2
112 vcy(2)=yl2-l2
113 vcy(3)=yl3-l2
114 vcy(4)=yl4-l2
115c
116 mx13=(vcx(1)+vcx(3))*half
117 my13=(vcy(1)+vcy(3))*half
118 mx23=(vcx(2)+vcx(3))*half
119 mx34=(vcx(3)+vcx(4))*half
120 my23=(vcy(2)+vcy(3))*half
121 my34=(vcy(3)+vcy(4))*half
122c
123 j1 = (mx23*my13-mx13*my23)*pg
124 j2 =-(mx13*my34-mx34*my13)*pg
125 j0 = area(i)*fourth
126C-----------
127 areap(i,1) = j0+j2-j1
128 areap(i,2) = j0+j2+j1
129 areap(i,3) = j0-j2+j1
130 areap(i,4) = j0-j2-j1
131 IF (off(i) == one .and. ( area(i) < zero .or.
132 . areap(i,1) < zero .or. areap(i,2) < zero .or.
133 . areap(i,3) < zero .or. areap(i,4) < zero)) THEN
134 nindx = nindx+1
135 indx(nindx) = i
136 off(i) = zero
137 ENDIF
138 ENDDO
139C-----------
140 IF (nindx > 0) THEN
141 DO i=1,nindx
142#include "lockon.inc"
143 WRITE(iout ,1000) solid_id(indx(i))
144 WRITE(istdo,1100) solid_id(indx(i))
145#include "lockoff.inc"
146 END DO
147 ENDIF
148C-----------
149 1000 FORMAT(5x,'NEGATIVE AREA: DELETE CONNECTION SOLID ELEMENT ',i10)
150 1100 FORMAT(5x,'NEGATIVE AREA: DELETE CONNECTION SOLID ELEMENT ',i10)
151C-----------
152 RETURN
153 END
154
155
156
157
#define my_real
Definition cppsort.cpp:32
subroutine area(d1, x, x2, y, y2, eint, stif0)
subroutine sdet43(nel, x, y, z, area, areap, off, solid_id, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z)
Definition sdet43.F:31