68
69
70
72 USE elbufdef_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_
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
92
93
94
95#include "implicit_f.inc"
96
97
98
99#include "param_c.inc"
100#include "com01_c.inc"
101#include "com04_c.inc"
102#include "parit_c.inc"
103
104
105
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
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)
124 TYPE(t_segvar) :: SEGVAR
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(*)
129
130
131
132 INTEGER I,TYP,ISU,NSEG,VOLU,NOD
133 CLASS(t_ebcs), POINTER :: EBCS
134 LOGICAL HAS_TH
135
136
137
138
139 DO i = 1, nebcs
140 IF(.NOT.ebcs_tab%need_to_compute(i)) cycle
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
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)
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
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)
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)
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)
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)
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)
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
261
262 RETURN
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)
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)
subroutine ebcs5_normv(nseg, iseg, segvar, a, v, x, liste, nod, irect, la, fv, ms, stifn, ebcs, output, dt1, time)
subroutine ebcs6_inip(nseg, iseg, segvar, a, v, x, liste, nod, irect, ro0, en0, p0, vo, po, la, ms, stifn, ebcs, output, dt1, time)
subroutine ebcs7_iniv(nseg, iseg, segvar, a, v, x, liste, nod, irect, ro0, en0, v0, la, ms, stifn, ebcs, output, dt1, time)
OPTION /TH/SURF outputs of Pressure and Area needed Tabs.
integer, parameter th_surf_num_channel
number of /TH/SURF channels : AREA, VELOCITY, MASSFLOW, P A, MASS