Finite volume data
In the finite volume method, the data is stored separately throughout the cells. Therefore, we provide AbstractControlVolume and AbstractInterface structs for processing in-cell and edge information, which are used as arrays of structs (AoS) in numerical simulations. Considering one-dimensional physical space $x$, we provide the following control volume structs. The structs differs from the number of particle distribution functions.
KitBase.ControlVolume1D — Typemutable struct ControlVolume1D{A, B} <: KitBase.AbstractControlVolume1D1D control volume with no distribution function
Fields
wprimsw
KitBase.ControlVolume1D1F — Typemutable struct ControlVolume1D1F{A, B} <: KitBase.AbstractControlVolume1D1D control volume with 1 distribution function
Fields
wprimswfsf
KitBase.ControlVolume1D2F — Typestruct ControlVolume1D2F{A, B} <: KitBase.AbstractControlVolume1D1D control volume with 2 distribution functions
Fields
wprimswhbshsb
KitBase.ControlVolume1D3F — Typemutable struct ControlVolume1D3F{A, B, C, D, E} <: KitBase.AbstractControlVolume1D1D control volume with 3 distribution functions
Fields
wprimswh0h1h2sh0sh1sh2EBϕψlorenz
KitBase.ControlVolume1D4F — Typemutable struct ControlVolume1D4F{A, B, C, D, E} <: KitBase.AbstractControlVolume1D1D control volume with 4 distribution functions
Fields
wprimswh0h1h2h3sh0sh1sh2sh3EBϕψlorenz
Within each cell, different numbers of particle distribution function can be tracked. The interface data is stored correspondingly.
KitBase.Interface1D — Typemutable struct Interface1D{A<:Union{Real, AbstractArray}} <: KitBase.AbstractInterface1D1D cell interface with no distribution function Note that deepcopy constructor is needed to work with StructArrays
Fields
fw
KitBase.Interface1D1F — Typemutable struct Interface1D1F{A, B<:AbstractArray} <: KitBase.AbstractInterface1D1D cell interface with 1 distribution function Note that deepcopy constructor is needed to work with StructArrays
Fields
fwff
KitBase.Interface1D2F — Typestruct Interface1D2F{A, B<:AbstractArray} <: KitBase.AbstractInterface1D1D cell interface with 2 distribution functions
Fields
fwfhfb
KitBase.Interface1D3F — Typestruct Interface1D3F{A, B, C} <: KitBase.AbstractInterface1D1D cell interface with 3 distribution functions
Fields
fwfh0fh1fh2femLfemR
KitBase.Interface1D4F — Typestruct Interface1D4F{A, B, C} <: KitBase.AbstractInterface1D1D cell interface with 4 distribution functions
Fields
fwfh0fh1fh2fh3femLfemR
The 2D control volume structs are implemented as well.
KitBase.ControlVolume2D — Typemutable struct ControlVolume2D{A, B} <: KitBase.AbstractControlVolume2D2D control volume with no distribution function
Fields
wprimsw
KitBase.ControlVolume2D1F — Typemutable struct ControlVolume2D1F{A, B, C, D} <: KitBase.AbstractControlVolume2D2D control volume with 1 distribution function
Fields
wprimswfsf
KitBase.ControlVolume2D2F — Typestruct ControlVolume2D2F{A, B, C, D} <: KitBase.AbstractControlVolume2D2D control volume with 2 distribution functions
Fields
wprimswhbshsb
KitBase.ControlVolume2D3F — Typemutable struct ControlVolume2D3F{T2, T3, T4, T5, T6, T7, T8} <: KitBase.AbstractControlVolume2D2D control volume with 3 distribution functions
Fields
wprimswh0h1h2sh0sh1sh2EBϕψlorenz
The numerical fluxes are evaluated through AbstractInterface structs.
KitBase.Interface2D — Typemutable struct Interface2D{A, B, C} <: KitBase.AbstractInterface2D2D cell interface with no distribution function
Fields
lennfw
KitBase.Interface2D1F — Typemutable struct Interface2D1F{A, B, C, D} <: KitBase.AbstractInterface2D2D cell interface with 1 distribution function
Fields
lennfwff
KitBase.Interface2D2F — Typestruct Interface2D2F{A, B<:(AbstractVector), C, D} <: KitBase.AbstractInterface2D2D cell interface with 2 distribution functions
Fields
lennfwfhfb