Breakage term class.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
character(len=:), | public, | allocatable | :: | name |
object name |
||
character(len=:), | public, | allocatable | :: | msg |
error message |
||
integer, | public | :: | ierr | = | 0 |
error code |
|
logical, | public | :: | inited | = | .false. |
initialization flag |
|
type(grid1), | public, | pointer | :: | grid | => | null() |
pointer to grid object |
real(kind=rk), | public, | allocatable | :: | udot(:) |
net rate of change, |
||
integer, | public | :: | moment | = | 1 |
moment of conserved during aggregation/breakage |
|
real(kind=rk), | public, | allocatable | :: | udot_birth(:) |
rate of birth |
||
real(kind=rk), | public, | allocatable | :: | udot_death(:) |
rate of death |
Initialize breakterm
object.
where is the moment of conserved upon breakage. For example,
if denotes particle mass or volume, then , whereas if denotes
particle radius or diameter, then .
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grid1), | intent(in) | :: | grid |
|
||
procedure(bfnc_t) | :: | b |
breakage frequency function, |
|||
procedure(dfnc_t) | :: | d |
daughter distribution function, |
|||
integer, | intent(in), | optional | :: | moment |
moment of conserved during breakage (default=1) |
|
logical, | intent(in), | optional | :: | update_b |
if |
|
logical, | intent(in), | optional | :: | update_d |
if |
|
character(len=*), | intent(in), | optional | :: | name |
name (default="break-term") |
Setter method for name.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(base), | intent(inout) | :: | self |
object |
||
character(len=*), | intent(in), | optional | :: | name |
name |
|
character(len=*), | intent(in), | optional | :: | default |
default name |
Error method.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(base), | intent(inout) | :: | self |
object |
||
character(len=*), | intent(in) | :: | msg |
message |
Check initialization method.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(base), | intent(inout) | :: | self |
object |
Setter method for grid.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(pbeterm), | intent(inout) | :: | self |
object |
||
type(grid1), | intent(in), | target | :: | grid |
|
Allocator for arrays of pbeterm
class.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(pbeterm), | intent(inout) | :: | self |
object |
Setter method for moment.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(particleterm), | intent(inout) | :: | self |
object |
||
integer, | intent(in) | :: | moment |
moment of to be preserved upon aggregation/breakage |
Allocator for arrays of particleterm
class.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(particleterm), | intent(inout) | :: | self |
object |
Evaluate the rate of breakage at a given instant , using the technique described in Section 3.3 of Kumar and Ramkrishna (1996). The birth term is computed using a slightly different procedure: the summation is done from the perspective of the original particles (the ones that break up), which allows for a simpler and more efficient calculation of the particle split fractions.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(breakterm), | intent(inout) | :: | self |
object |
||
real(kind=rk), | intent(in) | :: | u(:) |
cell-average number density, |
||
real(kind=rk), | intent(in) | :: | y(:) |
environment vector, |
||
real(kind=rk), | intent(out), | optional | :: | udot(:) |
net rate of change (birth-death), |
|
real(kind=rk), | intent(out), | optional | :: | udot_birth(:) |
rate of birth |
|
real(kind=rk), | intent(out), | optional | :: | udot_death(:) |
rate of death |
type, extends(particleterm) :: breakterm !! Breakage term class. private procedure(bfnc_t), nopass, pointer :: bfnc => null() !! breakage frequency function procedure(dfnc_t), nopass, pointer :: dfnc => null() !! daughter distribution function real(rk), allocatable :: b(:) !! vector of breakage frequencies real(rk), allocatable :: d(:) !! vector of daughter probabilities logical :: update_b = .true. !! flag to select if vector **b** should be updated at each step. logical :: empty_b = .true. !! flag indicating state of vector **b**. logical :: update_d = .true. !! flag to select if vector **d** should be updated at each step. logical :: empty_d = .true. !! flag indicating state of vector **d**. contains procedure, pass(self), public :: eval => breakterm_eval procedure, pass(self), private :: compute_b procedure, pass(self), private :: compute_d end type breakterm