OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
multi_ebcs.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_ebcs ../engine/source/multifluid/multi_ebcs.f
25!||--- called by ------------------------------------------------------
26!|| multi_timeevolution ../engine/source/multifluid/multi_timeevolution.F
27!||--- calls -----------------------------------------------------
28!|| arret ../engine/source/system/arret.F
29!|| multi_inlet_ebcs ../engine/source/multifluid/multi_inlet_ebcs.F
30!|| multi_nrf_ebcs ../engine/source/multifluid/multi_nrf_ebcs.F
31!||--- uses -----------------------------------------------------
32!|| ebcs_mod ../common_source/modules/boundary_conditions/ebcs_mod.F90
33!|| element_mod ../common_source/modules/elements/element_mod.F90
34!|| matparam_def_mod ../common_source/modules/mat_elem/matparam_def_mod.F90
35!|| multi_fvm_mod ../common_source/modules/ale/multi_fvm_mod.F90
36!|| multi_inlet_ebcs_mod ../engine/source/multifluid/multi_inlet_ebcs.F
37!|| output_mod ../common_source/modules/output/output_mod.F90
38!|| th_surf_mod ../common_source/modules/interfaces/th_surf_mod.F
39!||====================================================================
40 SUBROUTINE multi_ebcs(ITASK, MULTI_FVM, IXS, IXQ, IXTG, XGRID, WGRID, IPM, PM,
41 . FUNC_VALUE, EBCS_TAB,NPF,TF,FSAVSURF,NSURF,TIMESTEP,
42 . NUMELS, NUMELQ, NUMELTG, NUMNOD, NCYCLE, NUMMAT, MATPARAM, OUTPUT, PRED)
43C-----------------------------------------------
44C M o d u l e s
45C-----------------------------------------------
46 USE multi_fvm_mod
47 USE ebcs_mod
49 USE matparam_def_mod , ONLY : matparam_struct_
50 USE output_mod , ONLY : output_
52 use element_mod , only : nixs,nixq,nixtg
53 !USE multi_propellant_ebcs_mod , ONLY : MULTI_PROPELLANT_EBCS
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! NEBCS
62! NPEBC, NIXS
63#include "param_c.inc"
64! LISURF1
65! SNPC,STF
66#include "tabsiz_c.inc"
67C-----------------------------------------------
68C D u m m y A r g u m e n t s
69C-----------------------------------------------
70 INTEGER,INTENT(IN) :: NUMMAT !< array size
71 TYPE(MATPARAM_STRUCT_), DIMENSION(NUMMAT), INTENT(IN) :: MATPARAM !material data structure
72 INTEGER,INTENT(IN) :: NCYCLE
73 INTEGER,INTENT(IN) :: NSURF
74 INTEGER,INTENT(IN) :: NUMELS, NUMELQ, NUMELTG, NUMNOD
75 my_real,INTENT(INOUT) :: fsavsurf(th_surf_num_channel,nsurf)
76 TYPE(multi_fvm_struct), INTENT(INOUT) :: MULTI_FVM
77 INTEGER, INTENT(IN) :: ITASK
78 INTEGER, INTENT(IN) :: IXS(NIXS, *), IXQ(NIXQ, *), IXTG(NIXTG, *)
79 my_real, INTENT(IN) :: xgrid(3, *), wgrid(3, *)
80 INTEGER, INTENT(IN) :: IPM(NPROPMI, *)
81 my_real, INTENT(IN) :: pm(npropm, *), func_value(*)
82 TYPE(t_ebcs_tab), TARGET, INTENT(IN) :: EBCS_TAB
83 INTEGER, INTENT(IN) :: NPF(SNPC)
84 my_real, INTENT(IN) :: tf(stf), timestep
85 TYPE(output_), INTENT(INOUT) :: OUTPUT !< output structure
86 LOGICAL, INTENT(IN) :: PRED !< predictor step if true, corrector step if false
87C-----------------------------------------------
88C L o c a l V a r i a b l e s
89C-----------------------------------------------
90 INTEGER :: I
91 INTEGER :: TYPE, NELEM
92 class(t_ebcs), POINTER :: ebcs
93C-----------------------------------------------
94C B e g i n n i n g o f s u b r o u t i n e
95C-----------------------------------------------
96 DO i = 1, ebcs_tab%nebcs_fvm
97 ebcs => ebcs_tab%tab(i)%poly
98 TYPE = ebcs%type
99 nelem = ebcs%nb_elem
100 SELECT TYPE (twf => ebcs)
101 TYPE IS (t_ebcs_inlet)
102C Inlet, outlet boundary condition
103 CALL multi_inlet_ebcs(itask, i, multi_fvm, nelem,
104 . twf%ielem, twf%iface, twf%fvm_inlet_data,
105 . ixs, ixq, ixtg, xgrid, wgrid, ipm, pm, func_value,
106 . twf%surf_id,npf,tf,fsavsurf, timestep, matparam, output, pred)
107 TYPE IS(t_ebcs_fluxout)
108 CALL multi_inlet_ebcs(itask, i, multi_fvm, nelem,
109 . twf%ielem, twf%iface, twf%fvm_inlet_data,
110 . ixs, ixq, ixtg, xgrid, wgrid, ipm, pm, func_value,
111 . twf%surf_id,npf,tf,fsavsurf,timestep, matparam, output, pred)
112 TYPE IS(t_ebcs_nrf)
113 CALL multi_nrf_ebcs(itask, i, multi_fvm, nelem,
114 . twf%ielem, twf%iface, twf%fvm_inlet_data,
115 . ixs, ixq, ixtg, xgrid, wgrid, ipm, pm, func_value,
116 . twf,npf,tf,fsavsurf,timestep, matparam, output, pred)
117 TYPE IS(t_ebcs_propellant)
118! work in progress
119 write(6,*) 'MULTI_EBCS: Propellant EBCS not yet implemented'
120 write(6,*) "NUMELS=",numels,"NUMELQ=",numelq,"NUMELTG=",numeltg
121 write(6,*) "NUMNOD=",numnod,"NCYCLE=",ncycle,"NUMMAT=",nummat
122 CALL arret(2)
123! CALL MULTI_PROPELLANT_EBCS(ITASK, I, MULTI_FVM, NELEM,
124! . twf%ielem, twf%iface, twf%fvm_inlet_data,
125! . IXS, IXQ, IXTG, XGRID, WGRID, IPM, PM, FUNC_VALUE,
126! . twf,NPF,TF,FSAVSURF,TIMESTEP,NIXS, NIXQ, NIXTG, NPROPMI, NPROPM, NSURF, STF, SNPC,
127! . NUMELS, NUMELQ, NUMELTG, NUMNOD, NCYCLE, NUMMAT ,MATPARAM)
128 CLASS DEFAULT
129 END SELECT
130 ENDDO
131C-----------------------------------------------
132C E n d o f s u b r o u t i n e
133C-----------------------------------------------
134 END SUBROUTINE multi_ebcs
#define my_real
Definition cppsort.cpp:32
subroutine multi_ebcs(itask, multi_fvm, ixs, ixq, ixtg, xgrid, wgrid, ipm, pm, func_value, ebcs_tab, npf, tf, fsavsurf, nsurf, timestep, numels, numelq, numeltg, numnod, ncycle, nummat, matparam, output, pred)
Definition multi_ebcs.F:43
subroutine multi_nrf_ebcs(itask, ebcs_id, multi_fvm, nelem, elem_list, face_list, fvm_inlet_data, ixs, ixq, ixtg, xgrid, wgrid, ipm, pm, func_value, ebcs, npf, tf, fsavsurf, timestep, matparam, output, pred)
subroutine multi_inlet_ebcs(itask, ebcs_id, multi_fvm, nelem, elem_list, face_list, fvm_inlet_data, ixs, ixq, ixtg, xgrid, wgrid, ipm, pm, func_value, id_surf, npf, tf, fsavsurf, timestep, matparam, output, pred)
OPTION /TH/SURF outputs of Pressure and Area needed Tabs.
Definition th_surf_mod.F:61
integer, parameter th_surf_num_channel
number of /TH/SURF channels : AREA, VELOCITY, MASSFLOW, P A, MASS
subroutine arret(nn)
Definition arret.F:86