Granular flow solver with resolved particles
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(eulerian_obj_r), | public | :: | Fp(3) |
Particle Eulerian forcing |
|||
| type(marker_set), | public | :: | IB |
Immersed solids (walls) |
|||
| type(particle_set), | public | :: | PP |
Point particles |
|||
| type(eulerian_obj_r), | public | :: | PVF |
Particle volume fraction |
|||
| type(ResPart_set), | public | :: | RP |
Resolved particles |
|||
| type(hypre_obj), | public | :: | VFSolver |
HYPRE Solver for the volume-fraction equation |
|||
| integer, | public | :: | VF_MaxIT |
VF iterations |
|||
| real(kind=wp), | public | :: | VF_MaxTol |
VF maximum relative tolerance |
|||
| integer, | public | :: | VF_it |
Sub-iterations for VF solves |
|||
| real(kind=wp), | public | :: | VF_rel |
Relative error at end of VF solves |
|||
| character(len=:), | public, | allocatable | :: | VF_solver |
Name of VF solver to use |
||
| type(bc_set), | public | :: | bcs |
Boundary conditions |
|||
| type(block_obj), | public | :: | block |
Block information |
|||
| type(collision_obj), | public | :: | collisions |
Collision utility |
|||
| type(eulerian_set), | public | :: | fields |
Eulerian data container |
|||
| real(kind=wp), | public | :: | gravity(3) | = | 0.0_wp |
Gravity |
|
| type(hdf5_obj), | public, | pointer | :: | hdf5 | => | null() |
Associated hdf5 object |
| type(eulerian_obj_r), | public | :: | ibF(3) |
Immersed boundary force |
|||
| type(eulerian_obj_r), | public | :: | ibN(3) |
IB normals field |
|||
| type(eulerian_obj_r), | public | :: | ibS |
Surface Area Density |
|||
| type(eulerian_obj_r), | public | :: | ibVF |
Solid volume fraction (walls) |
|||
| real(kind=wp), | public | :: | intRHS |
Magnitude of RHS in VF equation |
|||
| type(monitor_set), | public | :: | monitors |
Monitors to print to stdout and files |
|||
| character(len=:), | public, | allocatable | :: | name |
Solver's name. |
||
| type(op_obj), | public | :: | op |
Differential Operators |
|||
| character(len=str8), | public, | allocatable | :: | output_var(:) |
Names of variables to output |
||
| character(len=str8), | public, | allocatable | :: | outputs(:) |
List of outputs (one output can contain multiple variables) |
||
| type(parallel_obj), | public, | pointer | :: | parallel | => | null() |
Associated parallel structure |
| type(parser_obj), | public, | pointer | :: | parser | => | null() |
Associated parser |
| real(kind=wp), | public | :: | rel_error_max | = | 1.0e-6_wp |
Maximum relative error |
|
| type(eulerian_obj_r), | public | :: | rhs |
Right-hand side |
|||
| logical, | public | :: | singularVF | = | .false. |
Flag for singular volume fraction Poisson equation |
|
| integer, | public | :: | subit | = | 1 |
Solver sub-iteration |
|
| type(timer_obj), | public, | pointer | :: | timer | => | null() |
Associated timer |
| logical, | public | :: | use_IB | = | .false. |
Use Immersed Boundaries |
|
| logical, | public | :: | use_PP | = | .false. |
Use Point Particles |
|
| logical, | public | :: | use_RP | = | .false. |
Use Resolved Particles |
|
| logical, | public | :: | use_col | = | .false. |
Collision flag |
Advances solution from n to n+1.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(grans_obj), | intent(inout) | :: | this |
GRANS solver |
Computes the solid volume fraction (ibVF) by solving a Poisson equation. This subroutine computes the IB normals fields, applies approriate boundary conditions, and takes the divergence, which forms the right-hand side of the poisson equation. It then uses a HYPRE solver to solve this equation. In case where the Poisson operator is singular and using resolved particles, this subroutine will apply a correction that sets the solid volume fraction at particle centroids.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(grans_obj), | intent(inout) | :: | this |
GRANS solver |
Finalizes solver and frees memory.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(grans_obj), | intent(inout) | :: | this |
GRANS solver |
Initializes the GRANS solver.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(grans_obj), | intent(inout) | :: | this |
GRANS solver |
||
| type(timer_obj), | intent(in), | target | :: | timer |
Timer utility |
|
| type(parallel_obj), | intent(in), | target | :: | parallel |
Parallel machinery |
|
| type(parser_obj), | intent(in), | target | :: | parser |
Parser for input file |
Links HDF5 Object.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(grans_obj), | intent(inout) | :: | this |
GRANS solver |
||
| type(hdf5_obj), | intent(in), | target | :: | hdf5 |
HDF5 utility |
Analyzes data and posts to monitors.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(grans_obj), | intent(inout) | :: | this |
GRANS solver |
Prepares data for run.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(grans_obj), | intent(inout) | :: | this |
GRANS solver |
Processes and outputs single-precision data for visualization.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(grans_obj), | intent(inout) | :: | this |
GRANS solver |
Writes restart data to disk.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(grans_obj), | intent(inout) | :: | this |
GRANS solver |
type, extends(solver_obj):: grans_obj !> Granular flow solver with resolved particles type(block_obj) :: block !! Block information type(op_obj) :: op !! Differential Operators type(bc_set) :: bcs !! Boundary conditions type(hypre_obj) :: VFSolver !! HYPRE Solver for the volume-fraction equation logical :: singularVF = .false. !! Flag for singular volume fraction Poisson equation type(particle_set) :: PP !! Point particles type(ResPart_set) :: RP !! Resolved particles type(marker_set) :: IB !! Immersed solids (walls) type(Eulerian_set) :: fields !! Eulerian data container type(Eulerian_obj_r) :: ibVF !! Solid volume fraction (walls) type(Eulerian_obj_r) :: PVF !! Particle volume fraction type(Eulerian_obj_r) :: ibS !! Surface Area Density type(Eulerian_obj_r) :: Fp(3) !! Particle Eulerian forcing type(Eulerian_obj_r) :: ibF(3) !! Immersed boundary force type(Eulerian_obj_r) :: ibN(3) !! IB normals field type(Eulerian_obj_r) :: rhs !! Right-hand side real(wp) :: gravity(3) = 0.0_wp !! Gravity integer :: subit = 1 !! Solver sub-iteration real(wp) :: rel_error_max = 1.0e-6_wp !! Maximum relative error logical :: use_RP = .false. !! Use Resolved Particles logical :: use_PP = .false. !! Use Point Particles logical :: use_IB = .false. !! Use Immersed Boundaries logical :: use_col = .false. !! Collision flag type(collision_obj) :: collisions !! Collision utility type(hdf5_obj), pointer :: hdf5 => null() !! Associated hdf5 object type(monitor_set) :: monitors !! Monitors to print to stdout and files character(len=str8), allocatable :: outputs(:) !! List of outputs (one output can contain multiple variables) character(len=str8), allocatable :: output_var(:) !! Names of variables to output character(len=:), allocatable :: VF_solver !! Name of VF solver to use real(wp) :: VF_MaxTol !! VF maximum relative tolerance integer :: VF_MaxIT !! VF iterations integer :: VF_it !! Sub-iterations for VF solves real(wp) :: VF_rel !! Relative error at end of VF solves real(wp) :: intRHS !! Magnitude of RHS in VF equation contains procedure :: Initialize => grans_obj_Init procedure :: Finalize => grans_obj_Final procedure :: PrepareSolver => grans_obj_PrepareSolver procedure :: AdvanceSolution => grans_obj_AdvanceSolution procedure :: Monitor => grans_obj_Monitor procedure :: WriteRestartData => grans_obj_WriteRestartData procedure :: WriteOutputData => grans_obj_WriteOutputData procedure :: LinkHDF5Object => grans_obj_LinkHDF5Object procedure :: ComputeSolidVF => grans_obj_ComputeSolidVF end type grans_obj