OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
surf_area.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!|| surf_area ../engine/source/output/th/surf_area.F
25!||--- called by ------------------------------------------------------
26!|| hist2 ../engine/source/output/th/hist2.F
27!||====================================================================
28 SUBROUTINE surf_area(X, NN, SURF_NODES, AREA, NUMNOD, N2D)
29C-----------------------------------------------
30C I m p l i c i t T y p e s
31C-----------------------------------------------
32#include "implicit_f.inc"
33C-----------------------------------------------
34C D u m m y A r g u m e n t s
35C-----------------------------------------------
36 INTEGER,INTENT(IN) :: NN,NUMNOD
37 INTEGER,INTENT(IN) :: SURF_NODES(NN,4) !< FACE NODES (NN FACES, 3D:4nodes, 2D:2nodes only are used)
38 my_real,INTENT(IN) :: x(3,numnod) !< coordinates x,y,z for each node
39 my_real,INTENT(INOUT) :: area !< surface area
40 INTEGER,INTENT(IN) :: N2D !0:3D, 1:2d-axi 2:2d-plane
41C-----------------------------------------------
42C L o c a l V a r i a b l e s
43C-----------------------------------------------
44 INTEGER :: I,NOD1,NOD2,NOD3,NOD4
45 my_real :: x13, y13, z13, x24, y24, z24,n1, n2, n3
46 my_real :: y12, z12
47C-----------------------------------------------
48C S o u r c e L i n e s
49C-----------------------------------------------
50 area = zero
51 IF(n2d == 0)THEN
52 DO i=1,nn
53 nod1=surf_nodes(i,1)
54 nod2=surf_nodes(i,2)
55 nod3=surf_nodes(i,3)
56 nod4=surf_nodes(i,4)
57 x13= x(1,nod3)-x(1,nod1)
58 y13= x(2,nod3)-x(2,nod1)
59 z13= x(3,nod3)-x(3,nod1)
60 x24= x(1,nod4)-x(1,nod2)
61 y24= x(2,nod4)-x(2,nod2)
62 z24= x(3,nod4)-x(3,nod2)
63 n1 = y13*z24-y24*z13
64 n2 = z13*x24-z24*x13
65 n3 = x13*y24-x24*y13
66 area = area + sqrt(n1*n1+n2*n2+n3*n3)
67 ENDDO
68 area = area * half
69 ELSE
70 !2D case
71 DO i=1,nn
72 nod1=surf_nodes(i,1)
73 nod2=surf_nodes(i,2)
74 !vector N1-N2 (2d:0,y,z)
75 y12= x(2,nod1)-x(2,nod2)
76 z12= x(3,nod1)-x(3,nod2)
77 area = area + sqrt(y12*y12+z12*z12)
78 ENDDO
79 ENDIF
80C-----------------------------------------------
81 RETURN
82 END
#define my_real
Definition cppsort.cpp:32
subroutine area(d1, x, x2, y, y2, eint, stif0)
subroutine surf_area(x, nn, surf_nodes, area, numnod, n2d)
Definition surf_area.F:29