63 . FSAV,FV,MS,STIFN,IPARG,ELBUF_TAB,EBCS_TAB,MULTI_FVM,IXQ,IXS,IXTG,
64 . FSKY,FSAVSURF,TIME,DT1,
65 . NSENSOR,SENSOR_TAB,PYTHON,
66 . NPC, TF ,SNPC, STF, OUTPUT, MATPARAM, PM,
75 USE multi_fvm_mod ,
only : multi_fvm_struct
77 USE sensor_mod,
ONLY : sensor_str_
79 USE output_mod ,
only : output_
80 USE matparam_def_mod,
ONLY : matparam_struct_
87 USE ebcs8_inlet_mod ,
ONLY : ebcs8_inlet
89 USE ebcs11_propellant_mod ,
ONLY : ebcs11_propellant
90 USE ebcs12_cyclic_mod ,
ONLY : ebcs12_cyclic
91 use element_mod ,
only : nixs,nixq,nixtg
95#include "implicit_f.inc"
100#include "com01_c.inc"
101#include "com04_c.inc"
102#include
"parit_c.inc"
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) ::
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
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)
125 TYPE(output_),
INTENT(INOUT) :: OUTPUT
126 TYPE(matparam_struct_),
DIMENSION(NUMMAT),
INTENT(IN) :: MATPARAM
127 my_real,
INTENT(IN) :: pm(npropm, nummat)
128 my_real,
INTENT(IN) :: bufmat(*)
132 INTEGER I,TYP,ISU,NSEG,VOLU,NOD
133 CLASS(t_ebcs),
POINTER :: EBCS
140 IF(.NOT.ebcs_tab%need_to_compute(i)) cycle
141 ebcs => ebcs_tab%tab(i)%poly
145 fsavsurf(1:5,isu) = zero
151 IF(.NOT.ebcs_tab%need_to_compute(i)) cycle
152 ebcs => ebcs_tab%tab(i)%poly
153 IF(ebcs%is_multifluid)
return
159 select type (twf => ebcs_tab%tab(i)%poly)
160 type is (t_ebcs_gradp0)
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)
167 ELSE IF (typ <= 3)
THEN
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)
178 . ebcs%node_list,nod,ebcs%elem_list,
181 ELSE IF (typ == 5)
THEN
182 select type (twf => ebcs_tab%tab(i)%poly)
183 type is (t_ebcs_normv)
186 . ebcs%node_list,nod,ebcs%elem_list,
187 . ebcs%la,fv,ms,stifn,twf,output, dt1, time)
189 ELSE IF (typ == 6)
THEN
190 select type (twf => ebcs_tab%tab(i)%poly)
191 type is (t_ebcs_inip)
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)
199 ELSE IF (typ == 7)
THEN
200 select type (twf => ebcs_tab%tab(i)%poly)
201 type is (t_ebcs_iniv)
204 . ebcs%node_list,nod,ebcs%elem_list,
205 . ebcs%ro0,ebcs%en0,ebcs%v0,
206 . ebcs%la,ms,stifn,twf,output, dt1, time)
208 ELSE IF (typ == 8)
THEN
209 select type (twf => ebcs_tab%tab(i)%poly)
210 type is (t_ebcs_inlet)
212 . numnod, nseg,ebcs%ISEG,segvar,
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)
220 ELSE IF (typ == 10)
THEN
221 select type (twf => ebcs)
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)
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,
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)
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,
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)
252 ELSE IF (typ == 100)
THEN
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))
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)