OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
admnorm.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!|| admnorm4 ../engine/source/model/remesh/admnorm.F
25!||--- called by ------------------------------------------------------
26!|| admdiv ../engine/source/model/remesh/admdiv.F
27!||--- uses -----------------------------------------------------
28!|| element_mod ../common_source/modules/elements/element_mod.F90
29!|| remesh_mod ../engine/share/modules/remesh_mod.F
30!||====================================================================
31 SUBROUTINE admnorm4(N,IXC,X)
32C-----------------------------------------------
33C M o d u l e s
34C-----------------------------------------------
35 USE remesh_mod
36 use element_mod , only : nixc
37C-----------------------------------------------
38C I m p l i c i t T y p e s
39C-----------------------------------------------
40#include "implicit_f.inc"
41#include "comlock.inc"
42C-----------------------------------------------
43C D u m m y A r g u m e n t s
44C-----------------------------------------------
45 INTEGER N, IXC(NIXC,*)
47 . x(3,*)
48C-----------------------------------------------
49C L o c a l V a r i a b l e s
50C-----------------------------------------------
51 INTEGER SON,LEVEL,IP,NLEV,N1,N2,N3,N4
53 . x13,y13,z13,x24,y24,z24,nx,ny,nz,aaa
54C-----------------------------------------------
55 n1=ixc(2,n)
56 n2=ixc(3,n)
57 n3=ixc(4,n)
58 n4=ixc(5,n)
59
60 tagnod(n1)=1
61 tagnod(n2)=1
62 tagnod(n3)=1
63 tagnod(n4)=1
64
65 x13 = x(1,n3) - x(1,n1)
66 y13 = x(2,n3) - x(2,n1)
67 z13 = x(3,n3) - x(3,n1)
68
69 x24 = x(1,n4) - x(1,n2)
70 y24 = x(2,n4) - x(2,n2)
71 z24 = x(3,n4) - x(3,n2)
72
73 nx = y13*z24 - z13*y24
74 ny = z13*x24 - x13*z24
75 nz = x13*y24 - y13*x24
76
77 aaa=one/max(em30,sqrt(nx*nx+ny*ny+nz*nz))
78 nx = nx * aaa
79 ny = ny * aaa
80 nz = nz * aaa
81
82 nodnorm(1,n1)=nodnorm(1,n1)+nx
83 nodnorm(2,n1)=nodnorm(2,n1)+ny
84 nodnorm(3,n1)=nodnorm(3,n1)+nz
85C
86 nodnorm(1,n2)=nodnorm(1,n2)+nx
87 nodnorm(2,n2)=nodnorm(2,n2)+ny
88 nodnorm(3,n2)=nodnorm(3,n2)+nz
89C
90 nodnorm(1,n3)=nodnorm(1,n3)+nx
91 nodnorm(2,n3)=nodnorm(2,n3)+ny
92 nodnorm(3,n3)=nodnorm(3,n3)+nz
93C
94 nodnorm(1,n4)=nodnorm(1,n4)+nx
95 nodnorm(2,n4)=nodnorm(2,n4)+ny
96 nodnorm(3,n4)=nodnorm(3,n4)+nz
97
98 RETURN
99 END
100
101!||====================================================================
102!|| admnorm3 ../engine/source/model/remesh/admnorm.F
103!||--- called by ------------------------------------------------------
104!|| admdiv ../engine/source/model/remesh/admdiv.f
105!||--- uses -----------------------------------------------------
106!|| element_mod ../common_source/modules/elements/element_mod.F90
107!|| remesh_mod ../engine/share/modules/remesh_mod.F
108!||====================================================================
109 SUBROUTINE admnorm3(N,IXTG,X)
110C-----------------------------------------------
111C M o d u l e s
112C-----------------------------------------------
113 USE remesh_mod
114 use element_mod , only : nixtg
115C-----------------------------------------------
116C I m p l i c i t T y p e s
117C-----------------------------------------------
118#include "implicit_f.inc"
119#include "comlock.inc"
120C-----------------------------------------------
121C D u m m y A r g u m e n t s
122C-----------------------------------------------
123 INTEGER N, IXTG(NIXTG,*)
124 my_real
125 . x(3,*)
126C-----------------------------------------------
127C L o c a l V a r i a b l e s
128C-----------------------------------------------
129 INTEGER N1,N2,N3
130 my_real
131 . x12,y12,z12,x13,y13,z13,nx,ny,nz,aaa
132C-----------------------------------------------
133 n1=ixtg(2,n)
134 n2=ixtg(3,n)
135 n3=ixtg(4,n)
136
137 tagnod(n1)=1
138 tagnod(n2)=1
139 tagnod(n3)=1
140
141 x13 = x(1,n3) - x(1,n1)
142 y13 = x(2,n3) - x(2,n1)
143 z13 = x(3,n3) - x(3,n1)
144
145 x12 = x(1,n2) - x(1,n1)
146 y12 = x(2,n2) - x(2,n1)
147 z12 = x(3,n2) - x(3,n1)
148
149 nx = y12*z13 - z12*y13
150 ny = z12*x13 - x12*z13
151 nz = x12*y13 - y12*x13
152
153 aaa=one/max(em30,sqrt(nx*nx+ny*ny+nz*nz))
154 nx = nx * aaa
155 ny = ny * aaa
156 nz = nz * aaa
157
158 nodnorm(1,n1)=nodnorm(1,n1)+nx
159 nodnorm(2,n1)=nodnorm(2,n1)+ny
160 nodnorm(3,n1)=nodnorm(3,n1)+nz
161C
162 nodnorm(1,n2)=nodnorm(1,n2)+nx
163 nodnorm(2,n2)=nodnorm(2,n2)+ny
164 nodnorm(3,n2)=nodnorm(3,n2)+nz
165C
166 nodnorm(1,n3)=nodnorm(1,n3)+nx
167 nodnorm(2,n3)=nodnorm(2,n3)+ny
168 nodnorm(3,n3)=nodnorm(3,n3)+nz
169
170 RETURN
171 END
172
173
174
175
176
subroutine admdiv(ixc, ipartc, ixtg, iparttg, ipart, itask, icontact, iparg, x, ms, in, rcontact, elbuf_tab, nodft, nodlt, igeo, ipm, sh4tree, padmesh, msc, inc, sh3tree, mstg, intg, ptg, acontact, pcontact, err_thk_sh4, err_thk_sh3, mscnd, incnd, pm, mcp, mcpc, mcptg, itherm_fe)
Definition admdiv.F:48
subroutine admnorm4(n, ixc, x)
Definition admnorm.F:32
subroutine admnorm3(n, ixtg, x)
Definition admnorm.F:110
#define my_real
Definition cppsort.cpp:32
#define max(a, b)
Definition macros.h:21
integer, dimension(:), allocatable tagnod
Definition remesh_mod.F:77