OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
ale51_init.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!|| ale51_init ../engine/source/ale/ale51/ale51_init.f
25!||--- called by ------------------------------------------------------
26!|| alethe ../engine/source/ale/alethe.F
27!||--- calls -----------------------------------------------------
28!|| ale51_upwind2 ../engine/source/ale/ale51/ale51_upwind2.F
29!|| ale51_upwind3 ../engine/source/ale/ale51/ale51_upwind3.F
30!|| ale51_upwind3_int22 ../engine/source/ale/alefvm/cut_cells/ale51_upwind3_int22.F
31!|| initbuf ../engine/share/resol/initbuf.F
32!|| my_barrier ../engine/source/system/machine.F
33!||--- uses -----------------------------------------------------
34!|| ale_connectivity_mod ../common_source/modules/ale/ale_connectivity_mod.F
35!|| elbufdef_mod ../common_source/modules/mat_elem/elbufdef_mod.F90
36!|| element_mod ../common_source/modules/elements/element_mod.F90
37!|| i22bufbric_mod ../common_source/modules/interfaces/cut-cell-search_mod.F
38!|| i22tri_mod ../common_source/modules/interfaces/cut-cell-search_mod.F
39!|| initbuf_mod ../engine/share/resol/initbuf.F
40!||====================================================================
41 SUBROUTINE ale51_init(IPARG ,PM ,IXS ,IXQ ,
42 2 X ,FLUX ,FLU2 ,
43 3 ALE_CONNECT,ITASK ,
44 4 FLUX_SAV ,QMV ,NV46 ,ELBUF_TAB)
45C-----------------------------------------------
46C M o d u l e s
47C-----------------------------------------------
48 USE initbuf_mod
49 USE elbufdef_mod
51 USE i22tri_mod
53 use element_mod , only : nixs
54C-----------------------------------------------
55C I m p l i c i t T y p e s
56C-----------------------------------------------
57#include "implicit_f.inc"
58C-----------------------------------------------
59C C o m m o n B l o c k s
60C-----------------------------------------------
61#include "com01_c.inc"
62#include "com04_c.inc"
63#include "vect01_c.inc"
64#include "param_c.inc"
65#include "task_c.inc"
66#include "inter22.inc"
67C-----------------------------------------------
68C D u m m y A r g u m e n t s
69C-----------------------------------------------
70 TYPE(elbuf_struct_), TARGET, DIMENSION(NGROUP) :: ELBUF_TAB
71 my_real PM(NPROPM,NUMMAT), X(3,NUMNOD),
72 . FLUX(NV46,*), FLU2(*),
73 . flux_sav(nv46,*), qmv(*)
74 INTEGER IPARG(NPARG,NGROUP), IXS(NIXS,NUMELS), IXQ(7,NUMELQ), ITASK, NV46, J
75 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECT
76C-----------------------------------------------
77C L o c a l V a r i a b l e s
78C-----------------------------------------------
79 INTEGER :: NG, K, II, NF1
80 my_real :: BID(1)
81 INTEGER :: NIN, IB, NBF, NBL, IE, MLW
82C-----------------------------------------------
83C S o u r c e L i n e s
84C-----------------------------------------------
85
86 CALL my_barrier
87
88C-----------------------------------------------
89C VOLUME FLUXES BACKUP
90C-----------------------------------------------
91 DO ng=itask+1,ngroup,nthread
92C ALE ON / OFF
93 IF (iparg(76, ng) == 1) cycle ! --> OFF
94 CALL initbuf(iparg ,ng ,
95 2 mtn ,llt ,nft ,iad ,ity ,
96 3 npt ,jale ,ismstr ,jeul ,jtur ,
97 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
98 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
99 6 irep ,iint ,igtyp ,israt ,isrot ,
100 7 icsen ,isorth ,isorthg ,ifailure,jsms )
101 !--------------------!
102 ! UNPLUG CONDITIONS !
103 !--------------------!
104 IF(jale+jeul == 0) cycle
105 IF(iparg(8,ng) == 1) cycle
106 IF(iparg(1,ng) /= 51) cycle
107 !------------------------------!
108 lft=1
109 DO k=1,nv46
110 DO ii=nft+lft,nft+llt
111 flux_sav(k,ii)=flux(k,ii)
112 ENDDO
113 ENDDO
114 END DO !next NG
115
116C--------------------
117 CALL my_barrier
118C--------------------
119
120C-----------------------------------------------
121C UPDATE VOLUME FLUXES & UPWIND
122C-----------------------------------------------
123 DO ng=itask+1,ngroup,nthread
124C ALE ON / OFF
125 IF (iparg(76, ng) == 1) cycle ! --> OFF
126 CALL initbuf(iparg ,ng ,
127 2 mtn ,llt ,nft ,iad ,ity ,
128 3 npt ,jale ,ismstr ,jeul ,jtur ,
129 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
130 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
131 6 irep ,iint ,igtyp ,israt ,isrot ,
132 7 icsen ,isorth ,isorthg ,ifailure,jsms )
133 IF(jale+jeul == 0) cycle
134 IF(iparg(8,ng) == 1) cycle
135 IF(iparg(1,ng) /= 51) cycle
136 lft=1
137 nf1=nft+1
138 !------------------------------!
139 ! UPWIND, QMV, DDVOL !
140 !------------------------------!
141 IF(n2d == 0)THEN
142 CALL ale51_upwind3(pm,ixs,flux(1,nf1),flu2(nf1),ale_connect,
143 + 0 ,bid,qmv(12*nft+1),1,
144 + nv46 )
145 ELSE
146 CALL ale51_upwind2(pm,x,ixq,flux(1,nf1),flu2(nf1),ale_connect,
147 + 0,bid,qmv(8*nft+1),1)
148 ENDIF
149 END DO !next NG
150
151C--------------------
152 CALL my_barrier
153C--------------------
154
155 IF(int22 /= 0)THEN !OBSOLETE
156 !Restore Direct Fluxes
157 nin = 1
158 nbf = 1+itask*nb/nthread
159 nbl = (itask+1)*nb/nthread
160 nbl = min(nbl,nb)
161 DO ib=nbf,nbl
162 ie = brick_list(nin,ib)%ID
163 mlw = brick_list(nin,ib)%MLW
164 IF(mlw /= 51)cycle
165 DO j=1,6
166 brick_list(nin,ib)%POLY(1:9)%FACE(j)%Adjacent_UpwFLUX(1) = brick_list(nin,ib)%POLY(1:9)%FACE(j)%Adjacent_FLUX(1)
167 brick_list(nin,ib)%POLY(1:9)%FACE(j)%Adjacent_UpwFLUX(2) = brick_list(nin,ib)%POLY(1:9)%FACE(j)%Adjacent_FLUX(2)
168 brick_list(nin,ib)%POLY(1:9)%FACE(j)%Adjacent_UpwFLUX(3) = brick_list(nin,ib)%POLY(1:9)%FACE(j)%Adjacent_FLUX(3)
169 brick_list(nin,ib)%POLY(1:9)%FACE(j)%Adjacent_UpwFLUX(4) = brick_list(nin,ib)%POLY(1:9)%FACE(j)%Adjacent_FLUX(4)
170 brick_list(nin,ib)%POLY(1:9)%FACE(j)%Adjacent_UpwFLUX(5) = brick_list(nin,ib)%POLY(1:9)%FACE(j)%Adjacent_FLUX(5)
171 ENDDO
172 ENDDO
173
174 !Computing Upwind fluxes
176 + (pm , ixs ,0 , 1,
177 + iparg, elbuf_tab ,itask )
178 ENDIF
179
180C-----------------------------------------------
181 RETURN
182 END
183C
subroutine ale51_init(iparg, pm, ixs, ixq, x, flux, flu2, ale_connect, itask, flux_sav, qmv, nv46, elbuf_tab)
Definition ale51_init.F:45
subroutine ale51_upwind2(pm, x, ixq, flux, flu1, ale_connect, itrimat, ddvol, qmv, iflg)
subroutine ale51_upwind3(pm, ixs, flux, flu1, ale_connect, itrimat, ddvol, qmv, iflg, nv46)
subroutine ale51_upwind3_int22(pm, ixs, itrimat, iflg, iparg, elbuf_tab, itask)
#define min(a, b)
Definition macros.h:20
type(brick_entity), dimension(:,:), allocatable, target brick_list
subroutine initbuf(iparg, ng, mtn, llt, nft, iad, ity, npt, jale, ismstr, jeul, jtur, jthe, jlag, jmult, jhbe, jivf, mid, jpor, jcvt, jclose, jpla, irep, iint, igtyp, israt, isrot, icsen, isorth, isorthg, ifailure, jsms)
Definition initbuf.F:261
subroutine my_barrier
Definition machine.F:31