OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
alelec.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!|| alelec ../starter/source/ale/alelec.F
25!||--- called by ------------------------------------------------------
26!|| lectur ../starter/source/starter/lectur.F
27!||--- calls -----------------------------------------------------
28!|| ale_check_lag ../starter/source/ale/ale_check_lag.F
29!|| aleso2 ../starter/source/ale/ale2d/aleso2.F
30!|| aleso2t ../starter/source/ale/ale2d/aleso2t.F
31!|| aleso3 ../starter/source/ale/ale3d/aleso3.F
32!|| alesop ../starter/source/ale/alesop.F
33!||--- uses -----------------------------------------------------
34!|| message_mod ../starter/share/message_module/message_mod.F
35!||====================================================================
36 SUBROUTINE alelec(
37 1 ICODE ,IXS , IXQ , IXC ,IXT ,
38 2 IXTG ,PM , IGEO , ITAB ,GEO ,
39 3 NALE_R2R ,FLAG_R2R, MULTI_FVM, ALE_CONNECTIVITY,ITHERM , ISHADOW)
40C-----------------------------------------------
41C D e s c r i p t i o n
42C-----------------------------------------------
43C This subroutine is building ALE connectivities
44C 'NN' stands for Node/Node
45C 'NE' stands for Node/Elem
46C 'EE' stands for Elem/Elem
47C In addition to that the subroutine is also marking ALE nodes
48C-----------------------------------------------
49C M o d u l e s
50C-----------------------------------------------
51 USE message_mod
52 USE multi_fvm_mod
54 use element_mod , only : nixs,nixq,nixc,nixt,nixtg
55C-----------------------------------------------
56C I m p l i c i t T y p e s
57C-----------------------------------------------
58#include "implicit_f.inc"
59C-----------------------------------------------
60C C o m m o n B l o c k s
61C-----------------------------------------------
62#include "com01_c.inc"
63#include "com04_c.inc"
64#include "param_c.inc"
65C-----------------------------------------------
66C D u m m y A r g u m e n t s
67C-----------------------------------------------
68 INTEGER,INTENT(IN) :: ITHERM
69 LOGICAL,INTENT(IN) :: ISHADOW !< shadowing option for detonators (Eikonal equation solver)
70 INTEGER,INTENT(IN) :: ICODE(*),IXS(3,NUMNOD),IXQ(NIXQ,NUMELQ),IXC(NIXC,NUMELC),IXT(NIXT,NUMELT),IXTG(NIXTG,NUMELTG)
71 INTEGER,INTENT(IN) :: ITAB(NUMNOD), NALE_R2R(*),FLAG_R2R,IGEO(NPROPGI,NUMGEO)
72 my_real,INTENT(IN) :: pm(npropm,nummat), geo(npropg,numgeo)
73 TYPE(multi_fvm_struct), INTENT(IN) :: MULTI_FVM
74 TYPE(t_ale_connectivity), INTENT(INOUT) :: ALE_CONNECTIVITY
75C-----------------------------------------------
76C L o c a l V a r i a b l e s
77C-----------------------------------------------
78 INTEGER :: I
79C-----------------------------------------------
80C S o u r c e L i n e s
81C-----------------------------------------------
82 CALL ale_connectivity%ALE_COMPUTE_EE_CONNECTIVITY(
83 . pm , igeo,
84 . npropgi, numgeo, npropm, nummat , numnod , numelq, numeltg, numels, n2d,
85 . iale , ieuler, itherm, ialelag, ishadow,
86 . nixq , nixtg , nixs ,
87 . ixq , ixtg , ixs )
88
89 IF (ale_connectivity%has_ne_connect .OR. ale_connectivity%has_nn_connect) THEN
90 CALL ale_connectivity%ALE_COMPUTE_CONNECTIVITY(
91 . numnod, numelq, numeltg, numels,
92 . nixq , nixtg , nixs ,
93 . ixq , ixtg , ixs)
94 ENDIF
95
96 CALL ale_check_lag(ale_connectivity%NALE,ixs,ixq,ixc,ixt,ixtg,pm,itab,nale_r2r,flag_r2r,igeo)
97
98 IF (ale_connectivity%has_nn_connect) THEN
99 CALL alesop(ale_connectivity%NALE, ale_connectivity%NN_CONNECT, icode, itab)
100 ENDIF
101
102
103 !ALE NODES ARE HERE MARKED
104 IF (n2d == 0)THEN
105 CALL aleso3(ale_connectivity,pm,ixs,geo,igeo)
106 ELSEIF( .NOT. multi_fvm%IS_USED .OR. numelq /= 0) THEN
107 CALL aleso2(ale_connectivity,pm,ixq,igeo)
108 ELSE
109 CALL aleso2t(ale_connectivity, pm, ixtg,igeo)
110 ENDIF
111
112 !SPECIFIC MARKER FOR COLOCATED SCHEME (LAW51)
113 IF(multi_fvm%IS_USED)THEN
114 DO i=1,numnod
115 IF( ale_connectivity%NALE(i)==151)THEN
116 ale_connectivity%NALE(i)=-1
117 ELSEIF(ale_connectivity%NALE(i)==152)THEN
118 ale_connectivity%NALE(i)=-2
119 ENDIF
120 ENDDO
121 ENDIF
122C-----------------------------------------------
123 RETURN
124 END
subroutine ale_check_lag(nale, ixs, ixq, ixc, ixt, ixtg, pm, itab, nale_r2r, flag_r2r, igeo)
subroutine alelec(icode, ixs, ixq, ixc, ixt, ixtg, pm, igeo, itab, geo, nale_r2r, flag_r2r, multi_fvm, ale_connectivity, itherm, ishadow)
Definition alelec.F:40
subroutine aleso2(ale_connectivity, pm, ixq, igeo)
Definition aleso2.F:31
subroutine aleso2t(ale_connectivity, pm, ixtg, igeo)
Definition aleso2t.F:30
subroutine aleso3(ale_connectivity, pm, ixs, geo, igeo)
Definition aleso3.F:30
subroutine alesop(nale, ale_nn_connect, icode, itab)
Definition alesop.F:30
#define my_real
Definition cppsort.cpp:32