SELF_BoundaryConditions Module


Uses

  • module~~self_boundaryconditions~~UsesGraph module~self_boundaryconditions SELF_BoundaryConditions module~self_metadata SELF_Metadata module~self_boundaryconditions->module~self_metadata module~self_supportroutines SELF_SupportRoutines module~self_boundaryconditions->module~self_supportroutines iso_c_binding iso_c_binding module~self_boundaryconditions->iso_c_binding HDF5 HDF5 module~self_metadata->HDF5 module~self_hdf5 SELF_HDF5 module~self_metadata->module~self_hdf5 iso_fortran_env iso_fortran_env module~self_supportroutines->iso_fortran_env module~self_constants SELF_Constants module~self_supportroutines->module~self_constants module~self_hdf5->HDF5 module~self_hdf5->iso_fortran_env module~self_hdf5->module~self_constants mpi mpi module~self_hdf5->mpi module~self_constants->iso_c_binding module~self_constants->iso_fortran_env

Used by

  • module~~self_boundaryconditions~~UsedByGraph module~self_boundaryconditions SELF_BoundaryConditions module~self_dgmodel2d_t SELF_DGModel2D_t module~self_dgmodel2d_t->module~self_boundaryconditions module~self_linearshallowwater2d_t self_LinearShallowWater2D_t module~self_linearshallowwater2d_t->module~self_boundaryconditions module~self_dgmodel2d~2 SELF_DGModel2D module~self_linearshallowwater2d_t->module~self_dgmodel2d~2 module~self_lineareuler2d_t self_LinearEuler2D_t module~self_lineareuler2d_t->module~self_boundaryconditions module~self_lineareuler2d_t->module~self_dgmodel2d~2 module~self_advection_diffusion_3d_t self_advection_diffusion_3d_t module~self_advection_diffusion_3d_t->module~self_boundaryconditions module~self_dgmodel3d~2 SELF_DGModel3D module~self_advection_diffusion_3d_t->module~self_dgmodel3d~2 module~self_dgmodel1d_t SELF_DGModel1D_t module~self_dgmodel1d_t->module~self_boundaryconditions module~self_lineareuler3d self_LinearEuler3D module~self_lineareuler3d->module~self_boundaryconditions module~self_lineareuler3d_t self_LinearEuler3D_t module~self_lineareuler3d->module~self_lineareuler3d_t module~self_dgmodel1d SELF_DGModel1D module~self_dgmodel1d->module~self_boundaryconditions module~self_dgmodel1d->module~self_dgmodel1d_t module~self_dgmodel2d SELF_DGModel2D module~self_dgmodel2d->module~self_boundaryconditions module~self_dgmodel2d->module~self_dgmodel2d_t module~self_dgmodel3d SELF_DGModel3D module~self_dgmodel3d->module~self_boundaryconditions module~self_dgmodel3d_t SELF_DGModel3D_t module~self_dgmodel3d->module~self_dgmodel3d_t module~self_ecadvection3d SELF_ECAdvection3D module~self_ecadvection3d->module~self_boundaryconditions module~self_ecadvection3d_t SELF_ECAdvection3D_t module~self_ecadvection3d->module~self_ecadvection3d_t module~self_ecdgmodel3d_t SELF_ECDGModel3D_t module~self_ecadvection3d->module~self_ecdgmodel3d_t module~self_advection_diffusion_2d_t self_advection_diffusion_2d_t module~self_advection_diffusion_2d_t->module~self_boundaryconditions module~self_advection_diffusion_2d_t->module~self_dgmodel2d~2 module~self_dgmodel3d_t->module~self_boundaryconditions module~self_ecadvection3d_t->module~self_boundaryconditions module~self_ecadvection3d_t->module~self_ecdgmodel3d_t module~self_ecadvection2d_t SELF_ECAdvection2D_t module~self_ecadvection2d_t->module~self_boundaryconditions module~self_ecdgmodel2d_t SELF_ECDGModel2D_t module~self_ecadvection2d_t->module~self_ecdgmodel2d_t module~self_linearshallowwater2d~2 self_LinearShallowWater2D module~self_linearshallowwater2d~2->module~self_boundaryconditions module~self_linearshallowwater2d~2->module~self_linearshallowwater2d_t module~self_ecadvection2d~2 SELF_ECAdvection2D module~self_ecadvection2d~2->module~self_boundaryconditions module~self_ecadvection2d~2->module~self_ecadvection2d_t module~self_ecadvection2d~2->module~self_ecdgmodel2d_t module~self_lineareuler2d self_LinearEuler2D module~self_lineareuler2d->module~self_boundaryconditions module~self_lineareuler2d->module~self_lineareuler2d_t module~self_lineareuler2d~2 self_LinearEuler2D module~self_lineareuler2d~2->module~self_lineareuler2d_t module~self_advection_diffusion_3d self_advection_diffusion_3d module~self_advection_diffusion_3d->module~self_advection_diffusion_3d_t module~self_advection_diffusion_3d~2 self_advection_diffusion_3d module~self_advection_diffusion_3d~2->module~self_advection_diffusion_3d_t module~self_dgmodel1d~2 SELF_DGModel1D module~self_dgmodel1d~2->module~self_dgmodel1d_t module~self_ecdgmodel3d_t->module~self_dgmodel3d_t module~self_dgmodel2d~2->module~self_dgmodel2d_t module~self_ecdgmodel2d_t->module~self_dgmodel2d_t module~self_linearshallowwater2d self_LinearShallowWater2D module~self_linearshallowwater2d->module~self_linearshallowwater2d_t module~self_advection_diffusion_2d self_advection_diffusion_2d module~self_advection_diffusion_2d->module~self_advection_diffusion_2d_t module~self_advection_diffusion_2d~2 self_advection_diffusion_2d module~self_advection_diffusion_2d~2->module~self_advection_diffusion_2d_t module~self_dgmodel3d~2->module~self_dgmodel3d_t module~self_ecadvection3d~2 SELF_ECAdvection3D module~self_ecadvection3d~2->module~self_ecadvection3d_t module~self_ecadvection2d SELF_ECAdvection2D module~self_ecadvection2d->module~self_ecadvection2d_t module~self_ecdgmodel3d~2 SELF_ECDGModel3D module~self_ecdgmodel3d~2->module~self_ecdgmodel3d_t module~self_ecdgmodel3d SELF_ECDGModel3D module~self_ecdgmodel3d->module~self_ecdgmodel3d_t module~self_nulldgmodel2d_t self_NullDGModel2D_t module~self_nulldgmodel2d_t->module~self_dgmodel2d~2 module~self_lineareuler3d_t->module~self_dgmodel3d~2 module~self_nulldgmodel3d_t self_NullDGModel3D_t module~self_nulldgmodel3d_t->module~self_dgmodel3d~2 module~self_advection_diffusion_1d_t self_advection_diffusion_1d_t module~self_advection_diffusion_1d_t->module~self_dgmodel1d~2 module~self_nulldgmodel1d_t self_NullDGModel1D_t module~self_nulldgmodel1d_t->module~self_dgmodel1d~2 module~self_advection_diffusion_1d self_advection_diffusion_1d module~self_advection_diffusion_1d->module~self_dgmodel1d~2 module~self_advection_diffusion_1d->module~self_advection_diffusion_1d_t module~self_burgers1d_t self_Burgers1D_t module~self_burgers1d_t->module~self_dgmodel1d~2 module~self_ecdgmodel2d SELF_ECDGModel2D module~self_ecdgmodel2d->module~self_ecdgmodel2d_t module~self_ecdgmodel2d~2 SELF_ECDGModel2D module~self_ecdgmodel2d~2->module~self_ecdgmodel2d_t module~self_nulldgmodel2d self_NullDGModel2D module~self_nulldgmodel2d->module~self_nulldgmodel2d_t module~self_lineareuler3d~2 self_LinearEuler3D module~self_lineareuler3d~2->module~self_lineareuler3d_t module~self_nulldgmodel2d~2 self_NullDGModel2D module~self_nulldgmodel2d~2->module~self_nulldgmodel2d_t module~self_nulldgmodel3d~2 self_NullDGModel3D module~self_nulldgmodel3d~2->module~self_nulldgmodel3d_t module~self_advection_diffusion_1d~2 self_advection_diffusion_1d module~self_advection_diffusion_1d~2->module~self_advection_diffusion_1d_t module~self_nulldgmodel1d~2 self_NullDGModel1D module~self_nulldgmodel1d~2->module~self_nulldgmodel1d_t module~self_nulldgmodel1d self_NullDGModel1D module~self_nulldgmodel1d->module~self_nulldgmodel1d_t module~self_nulldgmodel3d self_NullDGModel3D module~self_nulldgmodel3d->module~self_nulldgmodel3d_t module~self_burgers1d~2 self_Burgers1D module~self_burgers1d~2->module~self_burgers1d_t module~self_burgers1d self_Burgers1D module~self_burgers1d->module~self_burgers1d_t

Contents


Variables

TypeVisibilityAttributesNameInitial
integer, public, parameter:: SELF_BCNAME_LENGTH =32

Interfaces

interface

  • public subroutine SELF_bcMethod(this, mymodel)

    Arguments

    TypeIntentOptionalAttributesName
    class(BoundaryCondition), intent(in) :: this
    class(Model), intent(inout) :: mymodel

Derived Types

type, public :: BoundaryCondition

Components

TypeVisibilityAttributesNameInitial
procedure(SELF_bcMethod), public, pointer:: bcMethod=> null()
integer, public :: bcid
character, public :: bcname
integer, public, allocatable:: elements(:)
type(c_ptr), public :: elements_gpu =c_null_ptr
integer, public :: nBoundaries
type(BoundaryCondition), public, pointer:: next=> null()
type(BoundaryCondition), public, pointer:: prev=> null()
integer, public, allocatable:: sides(:)
type(c_ptr), public :: sides_gpu =c_null_ptr

type, public :: BoundaryConditionList

Components

TypeVisibilityAttributesNameInitial
type(BoundaryCondition), public, pointer:: current=> null()
type(BoundaryCondition), public, pointer:: head=> null()
integer, public :: nbc
type(BoundaryCondition), public, pointer:: tail=> null()

Type-Bound Procedures

procedure, public :: Free => Free_BCList
procedure, public :: GetBCForID
procedure, public :: Init => Init_BCList
procedure, private :: MoveNext
procedure, public :: PopulateBoundaries
generic, public :: RegisterBoundaryCondition => RegisterbcMethod
procedure, private :: RegisterbcMethod
procedure, private :: rewind

Functions

public function GetBCForID(list, bcid) result(node)

Returns the node associated with the given bcid. If the bcid is not found, a null pointer is returned.

Arguments

TypeIntentOptionalAttributesName
class(BoundaryConditionList), intent(in) :: list
integer, intent(in) :: bcid

Return Value type(BoundaryCondition),pointer


Subroutines

public subroutine Free_BCList(list)

Arguments

TypeIntentOptionalAttributesName
class(BoundaryConditionList), intent(inout) :: list

public subroutine Init_BCList(list)

Arguments

TypeIntentOptionalAttributesName
class(BoundaryConditionList), intent(inout) :: list

public subroutine MoveNext(list)

Arguments

TypeIntentOptionalAttributesName
class(BoundaryConditionList), intent(inout) :: list

public subroutine PopulateBoundaries(list, bcid, nBoundaries, elements, sides)

Populate the elements and sides arrays for a registered boundary condition. Called after scanning the mesh to determine which faces belong to each bcid.

Arguments

TypeIntentOptionalAttributesName
class(BoundaryConditionList), intent(inout) :: list
integer, intent(in) :: bcid
integer, intent(in) :: nBoundaries
integer, intent(in) :: elements(1:nBoundaries)
integer, intent(in) :: sides(1:nBoundaries)

public subroutine RegisterbcMethod(list, bcid, bcname, bcfunc)

Register a boundary condition function with the given bcid and bcname. If the bcid is already registered, the function pointer is updated. The elements and sides arrays are not allocated here; call PopulateBoundaries after scanning the mesh.

Arguments

TypeIntentOptionalAttributesName
class(BoundaryConditionList), intent(inout) :: list
integer, intent(in) :: bcid
character, intent(in) :: bcname
procedure(SELF_bcMethod), intent(in), pointer:: bcfunc

public subroutine rewind(list)

Arguments

TypeIntentOptionalAttributesName
class(BoundaryConditionList), intent(inout) :: list