m_MEF90_DMPlex Module



Variables

Type Visibility Attributes Name Initial
character(len=MEF90MXSTRLEN), public, parameter :: MEF90CellSetLabelName = 'Cell Sets  '
character(len=MEF90MXSTRLEN), public, parameter :: MEF90CellSetprefix = 'cs'
character(len=MEF90MXSTRLEN), public, parameter :: MEF90FaceSetLabelName = 'Face Sets  '
character(len=MEF90MXSTRLEN), public, parameter :: MEF90FaceSetprefix = 'fs'
character(len=MEF90MXSTRLEN), public, parameter, dimension(3) :: MEF90SetLabelName = [MEF90CellSetLabelName, MEF90FaceSetLabelName, MEF90VertexSetLabelName]
character(len=MEF90MXSTRLEN), public, parameter, dimension(3) :: MEF90SetPrefix = [MEF90CellSetPrefix, MEF90FaceSetPrefix, MEF90VertexSetPrefix]
integer(kind=C_INT32_T), public, parameter, dimension(3) :: MEF90SetType = [MEF90CellSetType, MEF90FaceSetType, MEF90VertexSetType]

Not sure why this has to be made explicitly public

character(len=MEF90MXSTRLEN), public, parameter :: MEF90VertexSetLabelName = 'Vertex Sets'
character(len=MEF90MXSTRLEN), public, parameter :: MEF90VertexSetprefix = 'vs'

Enumerations

enum, bind(c)

Enumerators

enumerator:: MEF90CellSetType = 1
enumerator:: MEF90FaceSetType = 2
enumerator:: MEF90VertexSetType = 3

Subroutines

private subroutine CreateCGlobalToLocalSF_Private(MEF90Ctx, dm, sf, ierr)

Author
Alexis Marboeuf (2022, marboeua@mcmaster.ca)

CreateCGlobalToLocalSF_Private:

Arguments

Type IntentOptional Attributes Name
type(MEF90Ctx_Type), intent(in) :: MEF90Ctx
type(tDM), intent(in) :: dm
type(tPetscSF), intent(out) :: sf
integer(kind=C_INT32_T), intent(inout) :: ierr

private subroutine CreateLocalToCGlobalSF_Private(MEF90Ctx, dm, sf, ierr)

Author
Alexis Marboeuf (2022, marboeua@mcmaster.ca)

CreateLocalToCGlobalSF_Private:

Arguments

Type IntentOptional Attributes Name
type(MEF90Ctx_Type), intent(in) :: MEF90Ctx
type(tDM), intent(in) :: dm
type(tPetscSF), intent(out) :: sf
integer(kind=C_INT32_T), intent(inout) :: ierr

private subroutine CreateNaturalToIOSF_Private(MEF90Ctx, dm, sf, ierr)

Author
Alexis Marboeuf (2022, marboeua@mcmaster.ca)

CreateNaturalToIOSF_Private:

Arguments

Type IntentOptional Attributes Name
type(MEF90Ctx_Type), intent(in) :: MEF90Ctx
type(tDM), intent(in) :: dm
type(tPetscSF), intent(out) :: sf
integer(kind=C_INT32_T), intent(inout) :: ierr

private subroutine CreateSideSF_Private(MEF90Ctx, dm, sf, invSF, ierr)

Author
Alexis Marboeuf (2022, marboeua@mcmaster.ca)

CreateSideSF_Private:

Arguments

Type IntentOptional Attributes Name
type(MEF90Ctx_Type), intent(in) :: MEF90Ctx
type(tDM), intent(in) :: dm
type(tPetscSF), intent(out) :: sf
type(tPetscSF), intent(out) :: invSF
integer(kind=C_INT32_T), intent(inout) :: ierr

public subroutine MEF90CellSectionCreate(dm, numComponents, section, ierr)

Author
Alexis Marboeuf (2022, marboeua@mcmaster.ca)

MEF90CellSectionCreate: create a section with numComponent dof at cells

Arguments

Type IntentOptional Attributes Name
type(tDM), intent(in) :: dm
integer(kind=C_INT32_T), intent(in) :: numComponents
type(tPetscSection), intent(inout) :: section
integer(kind=C_INT32_T), intent(inout) :: ierr

public subroutine MEF90ConstraintSFCreate(MEF90Ctx, v, vB, sf, invSF, ierr)

Author
Alexis Marboeuf (2022, marboeua@mcmaster.ca) Blaise Bourdin (2022, bourdin@mcmaster.ca)

MEF90ConstraintSFCreate: sf mapping between local and constraint type(tVec) ordering and distribution

Arguments

Type IntentOptional Attributes Name
type(MEF90Ctx_Type), intent(in) :: MEF90Ctx
type(tVec), intent(in) :: v
type(tVec), intent(in) :: vB
type(tPetscSF), intent(out) :: sf
type(tPetscSF), intent(out) :: invSF
integer(kind=C_INT32_T), intent(inout) :: ierr

public subroutine MEF90CreateBoundaryCellVector(dm, sDim, name, V, ierr)

Author
Blaise Bourdin (2022, bourdin@mcmaster.ca)

MEF90CreateBoundaryCellVector: create a type(tVec) for a cell-based vector

Arguments

Type IntentOptional Attributes Name
type(tDM), intent(in) :: dm
integer(kind=C_INT32_T), intent(in) :: sDim
character(len=MEF90MXSTRLEN), intent(in) :: name
type(tVec), intent(out) :: V
integer(kind=C_INT32_T), intent(inout) :: ierr

public subroutine MEF90CreateBoundaryLocalVector(dm, elemFamily, elemOrder, sDim, name, V, ierr)

Author
Blaise Bourdin (2022, bourdin@mcmaster.ca)

MEF90CreateBoundaryLocalVector: create a type(tVec) associated with a FE space over the boundary of a domain (face sets) and constraints face set BC are obtained from the command line option -fsBC [bool], [bool], ... vertex set BC are obtained from the command line option -vsBC [bool], [bool], ...

Arguments

Type IntentOptional Attributes Name
type(tDM), intent(in) :: dm
integer(kind=C_INT32_T), intent(in) :: elemFamily
integer(kind=C_INT32_T), intent(in) :: elemOrder
integer(kind=C_INT32_T), intent(in) :: sDim
character(len=MEF90MXSTRLEN), intent(in) :: name
type(tVec), intent(out) :: V
integer(kind=C_INT32_T), intent(inout) :: ierr

public subroutine MEF90CreateCellVector(dm, sDim, name, V, ierr)

Author
Blaise Bourdin (2022, bourdin@mcmaster.ca)

MEF90CreateCellVector: create a type(tVec) for a cell-based vector

Arguments

Type IntentOptional Attributes Name
type(tDM), intent(in) :: dm
integer(kind=C_INT32_T), intent(in) :: sDim
character(len=MEF90MXSTRLEN), intent(in) :: name
type(tVec), intent(out) :: V
integer(kind=C_INT32_T), intent(inout) :: ierr

public subroutine MEF90CreateLocalVector(dm, elemFamily, elemOrder, sDim, name, V, ierr)

Author
Blaise Bourdin (2022, bourdin@mcmaster.ca)

MEF90CreateLocalVector: create a type(tVec) associated with a FE space and constraints cell set BC are obtained from the command line option -csBC [bool], [bool], ... face set BC are obtained from the command line option -fsBC [bool], [bool], ... vertex set BC are obtained from the command line option -vs_BC [bool], [bool], ...

Arguments

Type IntentOptional Attributes Name
type(tDM), intent(in) :: dm
integer(kind=C_INT32_T), intent(in) :: elemFamily
integer(kind=C_INT32_T), intent(in) :: elemOrder
integer(kind=C_INT32_T), intent(in) :: sDim
character(len=MEF90MXSTRLEN), intent(in) :: name
type(tVec), intent(out) :: V
integer(kind=C_INT32_T), intent(inout) :: ierr

public subroutine MEF90DMGetNumSets(dm, labelName, numSet, ierr)

Author
Blaise Bourdin (2026, bourdin@mcmaster.ca)

MEF90DMGetNumSets: the total number of sets of a given label, over the whole communicator of dm and not only the ones with a point on the local rank

Arguments

Type IntentOptional Attributes Name
type(tDM), intent(in) :: dm
character(len=*), intent(in) :: labelName
integer(kind=C_INT32_T), intent(out) :: numSet
integer(kind=C_INT32_T), intent(inout) :: ierr

public subroutine MEF90FaceSetIOSFCreate(MEF90Ctx, v, liosf, iolsf, ierr)

Author
Alexis Marboeuf (2022, marboeua@mcmaster.ca)

MEF90FaceSetIOSFCreate: sf mapping between local and IO ordering and distribution for type(tVec) defined on Face Sets

Arguments

Type IntentOptional Attributes Name
type(MEF90Ctx_Type), intent(in) :: MEF90Ctx
type(tVec), intent(in) :: v
type(tPetscSF), intent(out) :: liosf
type(tPetscSF), intent(out) :: iolsf
integer(kind=C_INT32_T), intent(inout) :: ierr

public subroutine MEF90IOSFCreate(MEF90Ctx, v, liosf, iolsf, ierr)

Author
Alexis Marboeuf (2022, marboeua@mcmaster.ca)

MEF90IOSFCreate: sf mapping between local and IO ordering and distribution

Arguments

Type IntentOptional Attributes Name
type(MEF90Ctx_Type), intent(in) :: MEF90Ctx
type(tVec), intent(in) :: v
type(tPetscSF), intent(out) :: liosf
type(tPetscSF), intent(out) :: iolsf
integer(kind=C_INT32_T), intent(inout) :: ierr

public subroutine MEF90SectionAllocateConstraint(dm, table, section, ierr)

Author
Blaise Bourdin (2022, bourdin@mcmaster.ca)

MEF90SectionAllocateConstraint: Associates dof to a section

Arguments

Type IntentOptional Attributes Name
type(tDM), intent(in) :: dm
logical(kind=C_BOOL), dimension(:, :), pointer :: table
type(tPetscSection), intent(inout) :: section
integer(kind=C_INT32_T), intent(inout) :: ierr

public subroutine MEF90SectionAllocateDof(dm, setType, elemType, numComponents, section, ierr)

Author
Blaise Bourdin (2022, bourdin@mcmaster.ca)

MEF90SectionAllocateDof: Associates dof to a section

Arguments

Type IntentOptional Attributes Name
type(tDM), intent(in) :: dm
integer(kind=C_INT32_T), intent(in) :: setType
type(MEF90ElementType), intent(in) :: elemType
integer(kind=C_INT32_T), intent(in) :: numComponents
type(tPetscSection), intent(inout) :: section
integer(kind=C_INT32_T), intent(inout) :: ierr

public subroutine MEF90SectionAllocateDofSet(dm, setType, setID, elemType, numComponents, section, ierr)

Author
Blaise Bourdin (2022, bourdin@mcmaster.ca)

MEF90SectionAllocateDofSet: Associates dof to a section in a set

Arguments

Type IntentOptional Attributes Name
type(tDM), intent(in) :: dm
integer(kind=C_INT32_T), intent(in) :: setType
integer(kind=C_INT32_T), intent(in) :: setID
type(MEF90ElementType), intent(in) :: elemType
integer(kind=C_INT32_T), intent(in) :: numComponents
type(tPetscSection), intent(inout) :: section
integer(kind=C_INT32_T), intent(inout) :: ierr

public subroutine MEF90SetupConstraintTableSet(dm, section, setType, setID, constraints, table, ierr)

Author
Blaise Bourdin (2022, bourdin@mcmaster.ca)

MEF90SetupConstraintTableSet: Build the contribution of a set to the constraint table

Arguments

Type IntentOptional Attributes Name
type(tDM), intent(in) :: dm
type(tPetscSection), intent(inout) :: section
integer(kind=C_INT32_T), intent(in) :: setType
integer(kind=C_INT32_T), intent(in) :: setID
logical(kind=C_BOOL), dimension(:), pointer :: constraints
logical(kind=C_BOOL), dimension(:, :), pointer :: table
integer(kind=C_INT32_T), intent(inout) :: ierr

public subroutine MEF90VecCopySF(vin, vout, sf, ierr)

Author
Alexis Marboeuf (2022, marboeua@mcmaster.ca)

MEF90VecCopySF: rearrange a type(tVec) according to the given SF

Arguments

Type IntentOptional Attributes Name
type(tVec), intent(in) :: vin
type(tVec), intent(inout) :: vout
type(tPetscSF), intent(in) :: sf
integer(kind=C_INT32_T), intent(inout) :: ierr

public subroutine MEF90VecCreateIO(v, bs, sf, ierr)

Author
Alexis Marboeuf (2022, marboeua@mcmaster.ca)

MEF90VecCreateIO: create IO type(tVec)

Arguments

Type IntentOptional Attributes Name
type(tVec), intent(inout) :: v
integer(kind=C_INT32_T), intent(in) :: bs
type(tPetscSF), intent(in) :: sf
integer(kind=C_INT32_T), intent(inout) :: ierr

public subroutine MEF90VecGetClosureSize(v, p, clSize, ierr)

Author
Blaise Bourdin (2022, bourdin@mcmaster.ca)

MEF90VecGetClosureSize: Associates dof to a section

Arguments

Type IntentOptional Attributes Name
type(tVec), intent(in) :: v
integer(kind=C_INT32_T), intent(in) :: p
integer(kind=C_INT32_T), intent(out) :: clSize
integer(kind=C_INT32_T), intent(inout) :: ierr

public subroutine MEF90VecGlobalToLocalConstraint(g, c, l, ierr)

Author
Blaise Bourdin (2022, bourdin@mcmaster.ca)

MEF90VecGlobalToLocalConstraint: do a VecGlobaltoLocal then copy constrained values

Arguments

Type IntentOptional Attributes Name
type(tVec), intent(in) :: g
type(tVec), intent(in) :: c
type(tVec), intent(inout) :: l
integer(kind=C_INT32_T), intent(inout) :: ierr

public subroutine MEF90VecSetBCValuesFromOptions(v, scalingFactor, ierr)

Author
Blaise Bourdin (2022, bourdin@mcmaster.ca)

MEF90VecSetBCValuesFromOptions: Fill boundary values of a type(tVec) using command line options

Arguments

Type IntentOptional Attributes Name
type(tVec), intent(inout) :: v
real(kind=C_DOUBLE), intent(in) :: scalingFactor
integer(kind=C_INT32_T), intent(inout) :: ierr

public subroutine MEF90VecSetBCValuesFromOptionsExpr(v, t, ierr)

Author
Blaise Bourdin (2025, bourdin@mcmaster.ca)

MEF90VecSetBCValuesFromOptionsExpr: Fill boundary values of a type(tVec) using expressions passed as petsc options

Arguments

Type IntentOptional Attributes Name
type(tVec), intent(inout) :: v
real(kind=C_DOUBLE), intent(in) :: t
integer(kind=C_INT32_T), intent(inout) :: ierr

public subroutine MEF90VecSetValuesFromOptions(v, scalingFactor, ierr)

Author
Blaise Bourdin (2022, bourdin@mcmaster.ca)

MEF90VecSetValuesFromOptions: Fill values of a type(tVec) using command line options

Arguments

Type IntentOptional Attributes Name
type(tVec), intent(inout) :: v
real(kind=C_DOUBLE), intent(in) :: scalingFactor
integer(kind=C_INT32_T), intent(inout) :: ierr

public subroutine MEF90VecSetValuesFromOptionsExpr(v, t, ierr)

Author
Blaise Bourdin (2025, bourdin@mcmaster.ca)

MEF90VecSetValuesFromOptionsExpr: Fill values of a type(tVec) using expressions passed as petsc options

Arguments

Type IntentOptional Attributes Name
type(tVec), intent(inout) :: v
real(kind=C_DOUBLE), intent(in) :: t
integer(kind=C_INT32_T), intent(inout) :: ierr