OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
multi_face_data_elem.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!|| multi_face_elem_data ../engine/source/multifluid/multi_face_data_elem.F
25!||--- called by ------------------------------------------------------
26!|| alemain ../engine/source/ale/alemain.F
27!|| multi_timeevolution ../engine/source/multifluid/multi_timeevolution.F
28!||--- calls -----------------------------------------------------
29!|| centroid2 ../engine/source/multifluid/centroid.F
30!|| centroid2t ../engine/source/multifluid/centroid.F
31!|| centroid3 ../engine/source/multifluid/centroid.F
32!|| centroid3t ../engine/source/multifluid/centroid.F
33!|| qnorm2 ../engine/source/multifluid/qnorm2.F
34!|| qnorm2t ../engine/source/multifluid/qnorm2t.f
35!|| snorm3 ../engine/source/multifluid/snorm3.F
36!|| snorm3t ../engine/source/multifluid/snorm3t.F
37!||--- uses -----------------------------------------------------
38!|| element_mod ../common_source/modules/elements/element_mod.F90
39!|| multi_fvm_mod ../common_source/modules/ale/multi_fvm_mod.F90
40!||====================================================================
41 SUBROUTINE multi_face_elem_data(ITASK, IPARG, IXS, IXQ, IXTG, XGRID, WGRID, MULTI_FVM)
42C-----------------------------------------------
43C M o d u l e s
44C-----------------------------------------------
45 USE multi_fvm_mod
46 use element_mod , only : nixs,nixq,nixtg
47C-----------------------------------------------
48C I m p l i c i t T y p e s
49C-----------------------------------------------
50#include "implicit_f.inc"
51C-----------------------------------------------
52C C o m m o n B l o c k s
53C-----------------------------------------------
54C NIXS, NIXQ, NIXTG, NPARG
55#include "param_c.inc"
56C NGROUP
57#include "com01_c.inc"
58C NTHREAD
59#include "task_c.inc"
60C-----------------------------------------------
61C D u m m y A r g u m e n t s
62C-----------------------------------------------
63 INTEGER, INTENT(IN) :: ITASK, IPARG(NPARG, *), IXS(NIXS, *), IXQ(NIXQ, *), IXTG(NIXTG, *)
64 my_real, INTENT(IN) :: xgrid(3, *), wgrid(3, *)
65 TYPE(multi_fvm_struct), INTENT(INOUT) :: MULTI_FVM
66C-----------------------------------------------
67C L o c a l V a r i a b l e s
68C-----------------------------------------------
69 INTEGER :: NG, MTN, NEL, ITY, ISOLNOD, NFT, JALE
70 LOGICAL :: COMPUTE_CENTROID
71
72 compute_centroid = (multi_fvm%MUSCL > 0) .OR. multi_fvm%NS_DIFF
73
74 DO ng = itask + 1, ngroup, nthread
75 mtn = iparg(1, ng)
76 IF (mtn == 151) THEN
77 nel = iparg(2, ng)
78 nft = iparg(3, ng)
79 ity = iparg(5, ng)
80 jale = iparg(7, ng)
81 isolnod = iparg(28, ng)
82 IF (ity == 1) THEN
83C Solid
84 IF (isolnod == 4) THEN
85C TETRA
86 CALL snorm3t(nel, nft, jale, ixs, xgrid, wgrid,
87 . multi_fvm%FACE_DATA%NORMAL(1:3, 1:6, 1 + nft : nel + nft),
88 . multi_fvm%FACE_DATA%WFAC(1:3, 1:6, 1 + nft : nel + nft),
89 . multi_fvm%FACE_DATA%SURF(1:6, 1 + nft : nel + nft))
90 IF (compute_centroid) THEN
91 CALL centroid3t(nel, multi_fvm%NELEM, nft, ixs, xgrid,
92 . multi_fvm%ELEM_DATA%CENTROID(:, 1 + nft : nel + nft),
93 . multi_fvm%FACE_DATA%CENTROID(:, :, 1 + nft : nel + nft))
94 ENDIF
95 ELSE
96C OTHER SOLIDS
97 CALL snorm3(nel, nft, jale, ixs, xgrid, wgrid,
98 . multi_fvm%FACE_DATA%NORMAL(1:3, 1:6, 1 + nft : nel + nft),
99 . multi_fvm%FACE_DATA%WFAC(1:3, 1:6, 1 + nft : nel + nft),
100 . multi_fvm%FACE_DATA%SURF(1:6, 1 + nft : nel + nft))
101C
102 IF (compute_centroid) THEN
103 CALL centroid3(nel, multi_fvm%NELEM, nft, ixs, xgrid,
104 . multi_fvm%ELEM_DATA%CENTROID(:, 1 + nft : nel + nft),
105 . multi_fvm%FACE_DATA%CENTROID(:, :, 1 + nft : nel + nft))
106 ENDIF
107 ENDIF
108 ELSE IF (ity == 2) THEN
109C QUAD
110 CALL qnorm2(nel, nft, jale, multi_fvm%SYM, ixq, xgrid, wgrid,
111 . multi_fvm%FACE_DATA%NORMAL(1:3, 1:4, 1 + nft : nel + nft),
112 . multi_fvm%FACE_DATA%WFAC(1:3, 1:4, 1 + nft : nel + nft),
113 . multi_fvm%FACE_DATA%SURF(1:4, 1 + nft : nel + nft))
114 IF (compute_centroid) THEN
115 CALL centroid2(nel, multi_fvm%NELEM, nft, ixq, xgrid,
116 . multi_fvm%ELEM_DATA%CENTROID(:, 1 + nft : nel + nft),
117 . multi_fvm%FACE_DATA%CENTROID(:, :, 1 + nft : nel + nft))
118 ENDIF
119 ELSE IF (ity == 7) THEN
120C TRIANGLE
121 CALL qnorm2t(nel, nft, jale, multi_fvm%SYM, ixtg, xgrid, wgrid,
122 . multi_fvm%FACE_DATA%NORMAL(1:3, 1:3, 1 + nft : nel + nft),
123 . multi_fvm%FACE_DATA%WFAC(1:3, 1:3, 1 + nft : nel + nft),
124 . multi_fvm%FACE_DATA%SURF(1:3, 1 + nft : nel + nft))
125 IF (compute_centroid) THEN
126 CALL centroid2t(nel, multi_fvm%NELEM, nft, ixtg, xgrid,
127 . multi_fvm%ELEM_DATA%CENTROID(:, 1 + nft : nel + nft),
128 . multi_fvm%FACE_DATA%CENTROID(:, :, 1 + nft : nel + nft))
129 ENDIF
130 ENDIF
131 ENDIF
132 ENDDO
133 END SUBROUTINE multi_face_elem_data
subroutine centroid2t(nel, length, nft, ixtg, xgrid, elem_centroid, face_centroid)
Definition centroid.F:258
subroutine centroid3t(nel, length, nft, ixs, xgrid, elem_centroid, face_centroid)
Definition centroid.F:109
subroutine centroid3(nel, length, nft, ixs, xgrid, elem_centroid, face_centroid)
Definition centroid.F:33
subroutine centroid2(nel, length, nft, ixq, xgrid, elem_centroid, face_centroid)
Definition centroid.F:197
#define my_real
Definition cppsort.cpp:32
subroutine multi_face_elem_data(itask, iparg, ixs, ixq, ixtg, xgrid, wgrid, multi_fvm)
subroutine qnorm2(nel, nft, jale, sym, ixq, xgrid, wgrid, norm, wfac, surf)
Definition qnorm2.F:32
subroutine qnorm2t(nel, nft, jale, sym, ixtg, xgrid, wgrid, norm, wfac, surf)
Definition qnorm2t.F:34
subroutine snorm3(nel, nft, jale, ixs, xgrid, wgrid, norm, wfac, surf)
Definition snorm3.F:33
subroutine snorm3t(nel, nft, jale, ixs, xgrid, wgrid, norm, wfac, surf)
Definition snorm3t.F:35