OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
ebcs_main.F File Reference
#include "implicit_f.inc"
#include "param_c.inc"
#include "com01_c.inc"
#include "com04_c.inc"
#include "parit_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine ebcs_main (igrsurf, segvar, volmon, a, v, w, x, fsav, fv, ms, stifn, iparg, elbuf_tab, ebcs_tab, multi_fvm, ixq, ixs, ixtg, fsky, fsavsurf, time, dt1, nsensor, sensor_tab, python, npc, tf, snpc, stf, output, matparam, pm, bufmat)

Function/Subroutine Documentation

◆ ebcs_main()

subroutine ebcs_main ( type (surf_), dimension(nsurf) igrsurf,
type(t_segvar) segvar,
volmon,
a,
v,
w,
x,
fsav,
fv,
dimension(numnod), intent(inout) ms,
stifn,
integer, dimension(nparg,ngroup) iparg,
type(elbuf_struct_), dimension(ngroup) elbuf_tab,
type(t_ebcs_tab), intent(inout), target ebcs_tab,
type(multi_fvm_struct), intent(in) multi_fvm,
integer, dimension(nixq,numelq), intent(in) ixq,
integer, dimension(nixs,numels), intent(in) ixs,
integer, dimension(nixtg,numeltg), intent(in) ixtg,
intent(inout) fsky,
dimension(th_surf_num_channel,nsurf), intent(inout) fsavsurf,
intent(in) time,
intent(in) dt1,
integer, intent(in) nsensor,
type (sensor_str_), dimension(nsensor), intent(in) sensor_tab,
type (python_), intent(in) python,
integer, dimension(snpc), intent(in) npc,
tf,
integer, intent(in) snpc,
integer, intent(in) stf,
type(output_), intent(inout) output,
type(matparam_struct_), dimension(nummat), intent(in) matparam,
dimension(npropm, nummat), intent(in) pm,
dimension(*), intent(in) bufmat )
Parameters
[in,out]outputoutput structure
[in]matparammaterial buffer

Definition at line 62 of file ebcs_main.F.

68C-----------------------------------------------
69C M o d u l e s
70C-----------------------------------------------
71 USE segvar_mod, ONLY : t_segvar
72 USE elbufdef_mod
73 USE groupdef_mod
74 USE ebcs_mod
75 USE multi_fvm_mod , only : multi_fvm_struct
77 USE sensor_mod, ONLY : sensor_str_
78 USE python_funct_mod
79 USE output_mod , only : output_
80 USE matparam_def_mod, ONLY : matparam_struct_
83 USE ebcs4_vel_mod , ONLY : ebcs4_vel
84 USE ebcs5_normv_mod , ONLY : ebcs5_normv
85 USE ebcs6_inip_mod , ONLY : ebcs6_inip
86 USE ebcs7_iniv_mod , ONLY : ebcs7_iniv
87 USE ebcs8_inlet_mod , ONLY : ebcs8_inlet
88 USE ebcs10_nrf_mod , ONLY : ebcs10_nrf
89 USE ebcs11_propellant_mod , ONLY : ebcs11_propellant
90 USE ebcs12_cyclic_mod , ONLY : ebcs12_cyclic
91 use element_mod , only : nixs,nixq,nixtg
92C-----------------------------------------------
93C I m p l i c i t T y p e s
94C-----------------------------------------------
95#include "implicit_f.inc"
96C-----------------------------------------------
97C C o m m o n B l o c k s
98C-----------------------------------------------
99#include "param_c.inc"
100#include "com01_c.inc"
101#include "com04_c.inc"
102#include "parit_c.inc"
103C-----------------------------------------------
104C D u m m y A r g u m e n t s
105C-----------------------------------------------
106 my_real,INTENT(IN) :: dt1 !time step
107 my_real,INTENT(IN) :: time !simulation time
108 my_real,INTENT(INOUT) :: fsavsurf(th_surf_num_channel,nsurf)
109 INTEGER IPARG(NPARG,NGROUP)
110 INTEGER,INTENT(IN) :: IXQ(NIXQ,NUMELQ),IXS(NIXS,NUMELS),IXTG(NIXTG,NUMELTG)
111 my_real volmon(*),v(3,numnod),w(3,numnod),a(3,numnod),x(3,numnod),fsav(nthvki,*),fv(*),stifn(numnod)
112 my_real,intent(inout) :: ms(numnod)
113 TYPE(ELBUF_STRUCT_), DIMENSION(NGROUP) :: ELBUF_TAB
114 TYPE (SURF_) , DIMENSION(NSURF) :: IGRSURF
115 TYPE(t_ebcs_tab), TARGET, INTENT(INOUT) :: EBCS_TAB
116 TYPE(MULTI_FVM_STRUCT),INTENT(IN) :: MULTI_FVM
117 my_real, DIMENSION(8,LSKY), INTENT(INOUT) :: fsky ! acceleration array for parith/on option
118 INTEGER,INTENT(IN) :: NSENSOR
119 TYPE (SENSOR_STR_) ,DIMENSION(NSENSOR) ,INTENT(IN) :: SENSOR_TAB
120 TYPE (PYTHON_), INTENT(IN) :: PYTHON
121 INTEGER,INTENT(IN) :: SNPC, STF
122 INTEGER,INTENT(IN) :: NPC(SNPC)
123 my_real :: tf(stf)
124 TYPE(t_segvar) :: SEGVAR
125 TYPE(OUTPUT_), INTENT(INOUT) :: OUTPUT !< output structure
126 TYPE(MATPARAM_STRUCT_),DIMENSION(NUMMAT),INTENT(IN) :: MATPARAM !< material buffer
127 my_real,INTENT(IN) :: pm(npropm, nummat)
128 my_real,INTENT(IN) :: bufmat(*)
129C-----------------------------------------------
130C L o c a l V a r i a b l e s
131C-----------------------------------------------
132 INTEGER I,TYP,ISU,NSEG,VOLU,NOD
133 CLASS(t_ebcs), POINTER :: EBCS
134 LOGICAL HAS_TH
135C-----------------------------------------------
136C S o u r c e L i n e s
137C-----------------------------------------------
138 !/TH/SURF (RESET)
139 DO i = 1, nebcs
140 IF(.NOT.ebcs_tab%need_to_compute(i)) cycle !EBCS may be on domain 0 only depending on ebcs type
141 ebcs => ebcs_tab%tab(i)%poly
142 has_th = ebcs%has_th
143 IF(has_th)THEN
144 isu = ebcs%surf_id
145 fsavsurf(1:5,isu) = zero
146 ! FSAVSURF(6,ISU) is cumulative value : not reset
147 ENDIF
148 ENDDO
149
150 DO i = 1, nebcs
151 IF(.NOT.ebcs_tab%need_to_compute(i)) cycle
152 ebcs => ebcs_tab%tab(i)%poly
153 IF(ebcs%is_multifluid)return
154 typ = ebcs%type
155 isu = ebcs%surf_id
156 nseg = ebcs%nb_elem
157 nod = ebcs%nb_node
158 IF (typ == 0) THEN
159 select type (twf => ebcs_tab%tab(i)%poly)
160 type is (t_ebcs_gradp0)
161 CALL ebcs0_gradp0(nseg, ebcs%iseg, segvar,
162 . a, v, x,
163 . ebcs%node_list, nod, ebcs%elem_list,ebcs%ielem,
164 . ebcs%vold, ebcs%pold, ebcs%p0,
165 . ebcs%la, fv, ms, stifn, iparg, elbuf_tab, twf, output, dt1, time)
166 end select
167 ELSE IF (typ <= 3)THEN
168 CALL ebcs123_pres(nseg,ebcs%iseg,segvar,
169 . a,v,x,
170 . ebcs%node_list,nod,ebcs%elem_list,
171 . ebcs%vold,ebcs%pold,ebcs%la,
172 . fv,ms,stifn,ebcs_tab, i,output, dt1, time)
173 ELSE IF (typ == 4) THEN
174 select type (twf => ebcs_tab%tab(i)%poly)
175 type is (t_ebcs_vel)
176 CALL ebcs4_vel(nseg,ebcs%iseg,segvar,
177 . a,v,x,
178 . ebcs%node_list,nod,ebcs%elem_list,
179 . ebcs%la,fv,ms,stifn,twf,output, dt1, time)
180 end select
181 ELSE IF (typ == 5) THEN
182 select type (twf => ebcs_tab%tab(i)%poly)
183 type is (t_ebcs_normv)
184 CALL ebcs5_normv(nseg,ebcs%iseg,segvar,
185 . a,v,x,
186 . ebcs%node_list,nod,ebcs%elem_list,
187 . ebcs%la,fv,ms,stifn,twf,output, dt1, time)
188 end select
189 ELSE IF (typ == 6) THEN
190 select type (twf => ebcs_tab%tab(i)%poly)
191 type is (t_ebcs_inip)
192 CALL ebcs6_inip(nseg,ebcs%iseg,segvar,
193 . a,v,x,
194 . ebcs%node_list,nod,ebcs%elem_list,
195 . ebcs%ro0,ebcs%en0,ebcs%p0,
196 . ebcs%vold,ebcs%pold,ebcs%la,
197 . ms,stifn,twf,output, dt1, time)
198 end select
199 ELSE IF (typ == 7) THEN
200 select type (twf => ebcs_tab%tab(i)%poly)
201 type is (t_ebcs_iniv)
202 CALL ebcs7_iniv(nseg,ebcs%iseg,segvar,
203 . a,v,x,
204 . ebcs%node_list,nod,ebcs%elem_list,
205 . ebcs%ro0,ebcs%en0,ebcs%v0,
206 . ebcs%la,ms,stifn,twf,output, dt1, time)
207 end select
208 ELSE IF (typ == 8) THEN
209 select type (twf => ebcs_tab%tab(i)%poly)
210 type is (t_ebcs_inlet)
211 CALL ebcs8_inlet(
212 . numnod, nseg,ebcs%ISEG,segvar,
213 . a,v,w,x,
214 . ebcs%NODE_LIST,nod,ebcs%ELEM_LIST,
215 . ebcs%LA, fv,twf,output,dt1,time,
216 . ngroup, elbuf_tab, nparg, iparg, n2d,
217 . twf%SURF_ID,nsurf,fsavsurf,nummat,matparam,snpc,npc,stf,tf,
218 . npropm, pm, bufmat, ncycle, iale)
219 end select
220 ELSE IF (typ == 10) THEN
221 select type (twf => ebcs)
222 type is (t_ebcs_nrf)
223 CALL ebcs10_nrf(nseg,twf%iseg,segvar,
224 . a,v,w,x,
225 . twf%node_list,nod,twf%elem_list,twf%ielem,twf%iface,
226 . twf%la,twf,iparg,elbuf_tab,multi_fvm,ixq,ixs,ixtg,
227 . ebcs_parithon(i)%ELEM_ADRESS,fsky,fsavsurf, output, dt1, time)
228 end select
229 ELSE IF (typ == 11) THEN
230 select type (twf => ebcs)
231 type is (t_ebcs_propellant)
232 call ebcs11_propellant(nseg,twf%iseg,segvar,
233 . x,
234 . twf%node_list,nod,twf%elem_list,twf%ielem,twf%iface,
235 . twf%la,ms,stifn,twf,iparg,elbuf_tab,ixq,ixs,ixtg,
236 . fsavsurf,time,iparit,dt1,
237 . numels, numelq, numeltg,numnod, nparg, ngroup, nixs, nixq, nixtg, nsurf, n2d,
238 . nfunct, npc, tf ,snpc, stf, python,
239 . nsensor, sensor_tab, output)
240 end select
241 ELSE IF (typ == 12) THEN
242 select type (twf => ebcs)
243 type is (t_ebcs_cyclic)
244 call ebcs12_cyclic(nseg,twf%iseg,segvar,
245 . x,v,w,a,
246 . twf%node_list,nod,twf%elem_list,twf%ielem,twf%iface,
247 . twf%la,ms,stifn,twf,iparg,elbuf_tab,ixq,ixs,ixtg,
248 . fsavsurf,iparit,dt1,
249 . numels, numelq, numeltg,numnod, nparg, ngroup, nixs, nixq, nixtg, nsurf, n2d,
250 . ncycle, iale,ebcs_parithon(i)%elem_adress,lsky,fsky)
251 end select
252 ELSE IF (typ == 100) THEN
253 SELECT TYPE(ebcs)
254 TYPE IS (t_ebcs_monvol)
255 volu = ebcs%monvol_id
256 CALL ebcs_vol2seg(nseg,igrsurf(isu)%NODES,ebcs%iseg,segvar,a,v,x,volmon(nrvolu*(volu-1)+1),fsav(1,volu))
257 END SELECT
258 ENDIF
259 ENDDO
260
261c-----------
262 RETURN
#define my_real
Definition cppsort.cpp:32
subroutine ebcs_vol2seg(nseg, surf_nodes, iseg, segvar, a, v, x, volmon, fsav)
subroutine ebcs0_gradp0(nseg, iseg, segvar, a, v, x, liste, nod, irect, ielem, vo, po, p0, la, fv, ms, stifn, iparg, elbuf_tab, ebcs, output, dt1, time)
subroutine ebcs10_nrf(nseg, iseg, segvar, a, v, w, x, liste, nod, irect, ielem, iface, la, ebcs, iparg, elbuf_tab, multi_fvm, ixq, ixs, ixtg, elem_adress, fsky, fsavsurf, output, dt1, time)
Definition ebcs10_nrf.F:51
subroutine ebcs123_pres(nseg, iseg, segvar, a, v, x, liste, nod, irect, vo, po, la, fv, ms, stifn, ebcs_tab, iebcs, output, dt1, time)
subroutine ebcs4_vel(nseg, iseg, segvar, a, v, x, liste, nod, irect, la, fv, ms, stifn, ebcs, output, dt1, time)
Definition ebcs4_vel.F:41
subroutine ebcs5_normv(nseg, iseg, segvar, a, v, x, liste, nod, irect, la, fv, ms, stifn, ebcs, output, dt1, time)
Definition ebcs5_normv.F:44
subroutine ebcs6_inip(nseg, iseg, segvar, a, v, x, liste, nod, irect, ro0, en0, p0, vo, po, la, ms, stifn, ebcs, output, dt1, time)
Definition ebcs6_inip.F:46
subroutine ebcs7_iniv(nseg, iseg, segvar, a, v, x, liste, nod, irect, ro0, en0, v0, la, ms, stifn, ebcs, output, dt1, time)
Definition ebcs7_iniv.F:45
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