14 USE envi_module, ONLY: p, t_a, gi, gas_constair, c_vair
21 REAL*8,
ALLOCATABLE,
DIMENSION(:) :: rhstemp
22 REAL*8,
ALLOCATABLE,
DIMENSION(:) :: rhs
23 REAL*8,
ALLOCATABLE,
DIMENSION(:) :: ftemp
24 REAL*8,
ALLOCATABLE,
DIMENSION(:) :: f
25 REAL*8,
ALLOCATABLE,
DIMENSION(:) :: f_stepold
26 REAL*8,
ALLOCATABLE,
DIMENSION(:) :: f_oldold
28 REAL*8,
ALLOCATABLE,
DIMENSION(:) :: f_new
29 REAL*8,
ALLOCATABLE,
DIMENSION(:) :: f_RK
30 REAL*8,
ALLOCATABLE,
DIMENSION(:,:) :: rhs_RK
31 REAL*8,
ALLOCATABLE,
DIMENSION(:) :: rhs4
32 REAL*8,
ALLOCATABLE,
DIMENSION(:) :: f_err
34 REAL*8 :: eps_rel , eps_abs
46 LOGICAL :: vel_equation
69 ALLOCATE(rhstemp(itotal))
71 ALLOCATE(ftemp(itotal))
73 ALLOCATE(f_stepold(itotal))
75 ALLOCATE(f_new(itotal))
76 ALLOCATE(f_rk(itotal))
77 ALLOCATE(rhs_rk(n_rk,itotal))
78 ALLOCATE(rhs4(itotal))
79 ALLOCATE(f_err(itotal))
104 sumsed, fracsolid, c_d
108 REAL*8,
DIMENSION(:),
INTENT(OUT) :: rhs_
110 REAL*8 :: var , coeff_radial
112 REAL*8 :: term1 , term2
114 REAL*8 :: rhs_2a , rhs_2b
117 LOGICAL :: no_entr , const_volume_flux
121 IF ( oned_model )
THEN
131 solid_mass_flux = (beta * u * h * var) * ( 1.d0 - n )
133 solidmassflux_fract(1:iclass) = solid_mass_flux*fracsolid(1:iclass)
136 v_s(1:iclass) = dsqrt( (rhosol(1:iclass) * gi * diam(1:iclass)) / &
137 (c_d(1:iclass) * beta) )
139 s(1:iclass) = 1.d0 / (h * u) * solidmassflux_fract(1:iclass) * v_s(1:iclass)
141 sumsed = sum(s(1:iclass))
145 entrainment_rate = epsilon * alpha * u * var
146 rhs_(1) = entrainment_rate - sumsed
150 IF ( r_new .NE. r_old )
THEN
152 dbeta_dr = (beta_new - beta_old) / (r_new - r_old)
153 dh_dr = (h_new - h_old) / (r_new - r_old)
162 coeff_radial = ( var - 1.d0 ) / ( r - 1.d0 )
166 const_volume_flux = .false.
174 term1 = - u * epsilon * alpha / ( h * beta )
178 IF ( const_volume_flux )
THEN
184 term2 = - ( epsilon * alpha * u * var - sumsed ) / ( beta * h * var ) * &
185 dcos(theta) + u / beta * dcos(theta) * dbeta_dr
190 rhs_2a = ( term1 + ri * ( term2 + coeff_radial * u / var * dcos(theta) + &
191 u / h * dsin(theta) - u / ( 2.d0 * ( beta - alpha ) ) * dcos(theta) * &
192 dbeta_dr ) - fric * u / h ) / ( 1.d0 - ri * cos(theta) )
195 rhs_2b = - epsilon * alpha * u / ( beta * h ) + ri * u / h * ( - dh_dr &
196 * dcos(theta) + dsin(theta) ) - ri * u / ( 2.d0 * ( beta - alpha )) &
197 * dcos(theta) * dbeta_dr - fric * u / h
199 IF ( vel_equation )
THEN
211 rhs_(3) = epsilon * alpha * u * var * (c_vair * t_a + p/alpha) - sumsed * &
215 rhs_(4) = ((c_vair - c_vmix) / beta * epsilon * alpha * u * var + (c_s - &
216 c_vmix) / beta * (-sumsed))/ (u * h * var)
219 rhs_(5) = (gas_constair - gas_constmix) / (beta * n * u * h * var ) * &
220 epsilon * alpha * u * var
249 REAL*8,
DIMENSION(:),
INTENT(OUT) :: f_
256 IF ( oned_model )
THEN
267 f_(1) = beta * u * h * var
270 f_(3) = beta * u * h * var * (c_vmix * t + p/beta + 0.5 * u**2)
276 f_(5+i) = (beta * u * h * var) * (1-n) * fracsolid(i)
299 REAL*8,
DIMENSION(:),
INTENT(IN) :: fold, rat
300 REAL*8,
INTENT(IN) :: delta_r
301 REAL*8,
DIMENSION(:),
INTENT(OUT) :: fnew
306 fnew(i) = fold(i) + rat(i) * delta_r
333 REAL*8,
DIMENSION(:),
INTENT(IN) :: f_
335 REAL*8 :: c1 , c2 , c3 , c4
339 IF ( oned_model )
THEN
350 n = 1.d0 - sum(f_(5+1:5+iclass))/f_(1)
353 fracsolid(1:iclass) = (f_(5+1:5+iclass))/sum(f_(5+1:5+iclass))
355 rhosol_ave = 1.d0 / (sum(fracsolid/rhosol))
357 c1 = ( 1.d0 - n ) / rhosol_ave
358 c2 = n * gas_constmix / p
359 c3 = ( f_(3)/f_(1) - 0.5d0 * u**2 ) / c_vmix
362 beta = ( 1.d0 - c2*c4 ) / ( c2*c3 + c1 )
365 h = f_(1) / (beta * u * var)
367 ri = ((beta - alpha) * gi * h) / (beta * u**2.d0)
368 epsilon = 0.075d0 / dsqrt(1.d0 + (718.d0 * ri**2.4d0))
subroutine rate(rhs_)
Right hand side equations This subroutine contains the right-hand side of the equations that are comp...
subroutine marching(fold, fnew, rat, delta_r)
Marching r one step.
Current module This module contains descriptors for the initial conditions of the flow...
Mixture module This module contains all the variables required for describing and calculating the cha...
subroutine compute_mixture
Computing conditions within mixture This subroutine calculates the characteristics of the mixture by ...
Solver Module This module contains the differential equations that are solved at each iteration...
subroutine unlump(f_)
Unlumping variable Lumped variables defined in subroutine 'lump' are unlumped to calculate physical v...
subroutine allocate_matrix
Allocate matrix This subroutine defines the matrix over which each of the conditions are solved...
subroutine lump(f_)
Lump variables Variables are grouped together to calculate the lumped variables.
Particles module This module contains the procedures and the variables related to the solid particles...
environment module This module contains all the variables related to the background environmental con...