grans Module

Granular flow solver with Point and/or Resolved Particles


Uses

  • module~~grans~~UsesGraph module~grans grans module~grans_cases grans_cases module~grans->module~grans_cases module~immersed_boundaries immersed_boundaries module~grans->module~immersed_boundaries module~leapblock leapBlock module~grans->module~leapblock module~leapeulerian leapEulerian module~grans->module~leapeulerian module~leaphypre leapHypre module~grans->module~leaphypre module~leapkinds leapKinds module~grans->module~leapkinds module~leapmonitor leapMonitor module~grans->module~leapmonitor module~leapparallel leapParallel module~grans->module~leapparallel module~leapparser leapParser module~grans->module~leapparser module~leapsolver leapSolver module~grans->module~leapsolver module~leaptimer leapTimer module~grans->module~leaptimer module~particles_point particles_point module~grans->module~particles_point module~particles_resolved particles_resolved module~grans->module~particles_resolved module~grans_cases->module~immersed_boundaries module~grans_cases->module~leapeulerian module~grans_cases->module~leapkinds module~grans_cases->module~particles_point module~grans_cases->module~particles_resolved module~leapcases leapCases module~grans_cases->module~leapcases module~immersed_boundaries_markers immersed_boundaries_markers module~immersed_boundaries->module~immersed_boundaries_markers module~immersed_boundaries_solids immersed_boundaries_solids module~immersed_boundaries->module~immersed_boundaries_solids module~leapblock->module~leapkinds module~leapblock->module~leapparallel mpi_f08 mpi_f08 module~leapblock->mpi_f08 module~leapeulerian->module~leapblock module~leapeulerian->module~leapkinds module~leapeulerian->module~leapparallel module~leapeulerian->module~leapparser module~leapio leapIO module~leapeulerian->module~leapio module~leapio_mpi leapIO_mpi module~leapeulerian->module~leapio_mpi module~leaputils leapUtils module~leapeulerian->module~leaputils module~leapeulerian->mpi_f08 module~leaphypre->module~leapblock module~leaphypre->module~leapeulerian module~leaphypre->module~leapkinds module~leaphypre->module~leapparallel iso_c_binding iso_c_binding module~leaphypre->iso_c_binding module~leaphypre->mpi_f08 iso_fortran_env iso_fortran_env module~leapkinds->iso_fortran_env module~leapmonitor->module~leapkinds module~leapmonitor->module~leapparallel module~leapmonitor->module~leaputils module~leapparallel->module~leapkinds module~leapparallel->module~leapparser module~leapparallel->mpi_f08 module~leapparser->module~leapkinds module~leapcli leapCli module~leapparser->module~leapcli module~leapsolver->module~leapkinds module~leapsolver->module~leapparallel module~leapsolver->module~leapparser module~leapsolver->module~leaptimer module~leaptimer->module~leapkinds module~leaptimer->module~leapparser module~particles_point->module~leapblock module~particles_point->module~leapeulerian module~particles_point->module~leapkinds module~particles_point->module~leapparallel module~particles_point->module~leapio module~leaplagrangian leapLagrangian module~particles_point->module~leaplagrangian module~particles_point->mpi_f08 module~particles_resolved->module~immersed_boundaries module~particles_resolved->module~leapblock module~particles_resolved->module~leapeulerian module~particles_resolved->module~leapkinds module~particles_resolved->module~leapmonitor module~particles_resolved->module~leapparallel module~particles_resolved->module~leapparser module~particles_resolved->module~leaptimer module~leapdiffop leapDiffOp module~particles_resolved->module~leapdiffop module~particles_resolved->module~leapio module~particles_resolved->module~leaplagrangian module~immersed_boundaries_markers->module~leapblock module~immersed_boundaries_markers->module~leapeulerian module~immersed_boundaries_markers->module~leaphypre module~immersed_boundaries_markers->module~leapkinds module~immersed_boundaries_markers->module~leapmonitor module~immersed_boundaries_markers->module~leapparallel module~immersed_boundaries_markers->module~leapparser module~immersed_boundaries_markers->module~leaptimer module~immersed_boundaries_markers->module~leapdiffop module~immersed_boundaries_markers->module~leapio module~immersed_boundaries_markers->module~leaplagrangian module~immersed_boundaries_solids->module~leapblock module~immersed_boundaries_solids->module~leapeulerian module~immersed_boundaries_solids->module~leapkinds module~immersed_boundaries_solids->module~leapparallel module~immersed_boundaries_solids->module~immersed_boundaries_markers module~immersed_boundaries_solids->module~leapio module~immersed_boundaries_solids->module~leaplagrangian module~leapcases->module~leapblock module~leapcases->module~leapkinds module~leapcases->module~leapparallel module~leapcases->module~leapparser module~leapcli->module~leapkinds module~leapdiffop->module~leapblock module~leapdiffop->module~leapeulerian module~leapdiffop->module~leapkinds module~leapdiffop->module~leapparallel module~leapbc leapBC module~leapdiffop->module~leapbc module~leapio->module~leapio_mpi module~leapio_h5hut leapIO_h5hut module~leapio->module~leapio_h5hut module~leapio_hdf5 leapIO_hdf5 module~leapio->module~leapio_hdf5 module~leapio_silo leapIO_silo module~leapio->module~leapio_silo module~leapio_mpi->module~leapblock module~leapio_mpi->module~leapkinds module~leapio_mpi->module~leapparallel module~leapio_mpi->mpi_f08 module~leaplagrangian->module~leapblock module~leaplagrangian->module~leapkinds module~leaplagrangian->module~leapparallel module~leaplagrangian->module~leapparser module~leaplagrangian->module~leapio module~leaplagrangian->module~leaputils module~leaplagrangian->mpi_f08 module~leaputils->module~leapkinds module~leaputils->mpi_f08 module~leapbc->module~leapblock module~leapbc->module~leapeulerian module~leapbc->module~leapkinds module~leapbc->module~leapparallel module~leapbc->module~leaputils module~leapbc->mpi_f08 module~leapio_h5hut->module~leapkinds module~leapio_h5hut->module~leapparallel h5hut h5hut module~leapio_h5hut->h5hut module~leapio_hdf5->module~leapkinds module~leapio_hdf5->module~leapparallel module~leapio_hdf5->module~leaputils hdf5 hdf5 module~leapio_hdf5->hdf5 module~leapio_silo->module~leapblock module~leapio_silo->module~leapkinds module~leapio_silo->module~leapparallel module~leapio_silo->module~leaputils module~leapio_silo->mpi_f08

Used by


Interfaces

interface

  • private module subroutine grans_obj_AdvanceSolution(this)

    Advances solver from n to n+1

    Arguments

    Type IntentOptional Attributes Name
    class(grans_obj), intent(inout) :: this

    The solver

interface

  • private module subroutine grans_obj_Monitor(this)

    Analyze data and post to monitors

    Arguments

    Type IntentOptional Attributes Name
    class(grans_obj), intent(inout) :: this

    The solver

interface

  • private module subroutine grans_obj_PrepareSolver(this)

    Prepare data before run

    Arguments

    Type IntentOptional Attributes Name
    class(grans_obj), intent(inout) :: this

    The solver

interface

  • private module subroutine grans_obj_WriteOutputData(this)

    Process single-precision data for visualization

    Arguments

    Type IntentOptional Attributes Name
    class(grans_obj), intent(inout) :: this

    The solver

interface

  • private module subroutine grans_obj_WriteRestartData(this)

    Write restart data to disk

    Arguments

    Type IntentOptional Attributes Name
    class(grans_obj), intent(inout) :: this

    The solver


Derived Types

type, public, extends(solver_obj) ::  grans_obj

Granular flow solver with resolved particles Simulation case

Components

Type Visibility Attributes Name Initial
type(eulerian_obj_r), public :: Fp(3)

Particle Eulerian forcing Physical parameters

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(eulerian_obj_r), public :: SA

Surface Area Density

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(block_obj), public :: block

Block information Mathematical tools

type(grans_case_obj), public :: case

Case to run Geometry

real(kind=wp), public :: edry

Dry restitution coefficient

type(eulerian_set), public :: fields

Eulerian data container

real(kind=wp), public :: gravity(3) = 0.0_wp

Gravity Solver parameters

type(hypre_obj), public :: hypre

HYPRE Solvers Core data

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

real(kind=wp), public :: muc

Coulomb friction factor Output parmeters

character(len=:), public, allocatable :: name

Name of this solver

character(len=str8), public, allocatable :: output_var(:)

Names of variables to output Volume fraction solver

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

integer, public :: subit = 0

Solver sub-iteration

integer, public :: subit_max = 40

Maximum sub-iterations

real(kind=wp), public :: tcol

Collision time

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 parameter

Type-Bound Procedures

procedure, public :: AdvanceSolution => grans_obj_AdvanceSolution
procedure, public :: Finalize => grans_obj_Final
procedure, public :: Initialize => grans_obj_Init
procedure, public :: Monitor => grans_obj_Monitor
procedure, public :: PrepareSolver => grans_obj_PrepareSolver
procedure, public :: SetInitialConditions => grans_obj_SetInitialConditions
procedure, public :: WriteOutputData => grans_obj_WriteOutputData
procedure, public :: WriteRestartData => grans_obj_WriteRestartData

Subroutines

private subroutine grans_obj_Final(this)

Deallocate data

Arguments

Type IntentOptional Attributes Name
class(grans_obj), intent(inout) :: this

The solver

private subroutine grans_obj_Init(this, timer, parallel, parser)

Initialize the solver

Arguments

Type IntentOptional Attributes Name
class(grans_obj), intent(inout) :: this

The 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

private subroutine grans_obj_SetInitialConditions(this)

Set initial conditions at n=0

Arguments

Type IntentOptional Attributes Name
class(grans_obj), intent(inout) :: this

The solver