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