Neko 1.99.9
A portable framework for high-order spectral element flow simulations
Loading...
Searching...
No Matches
vector_bc_projector Module Reference

Implements boundary condition projectors for vector fields. Two types concrete types are provided: segregated_vector_bc_projector_t for simple component-wise resolution, and coupled_vector_bc_projector_t for resolving mixed boundary conditions.

Data Types

type  coupled_vector_bc_projector_t
 A coupled projector for vector fields, suitable for mixed boundary conditions. More...
 
type  segregated_vector_bc_projector_t
 A projector for vector fields that acts component-wise. More...
 
interface  vector_bc_projector_apply_intrf
 Apply the resolved vector boundary constraints. More...
 
interface  vector_bc_projector_finalize_intrf
 Finalize the vector boundary-condition projector. More...
 
interface  vector_bc_projector_free_intrf
 Free the vector boundary-condition projector. More...
 
interface  vector_bc_projector_init_intrf
 Initialize the vector boundary-condition projector. More...
 
interface  vector_bc_projector_mark_bc_intrf
 Mark a boundary condition in the vector boundary-condition projector. More...
 
interface  vector_bc_projector_mark_bc_list_intrf
 Mark a list of boundary conditions in the projector. More...
 
type  vector_bc_projector_t
 Abstract type for resolving vector boundary conditions. More...
 

Functions/Subroutines

subroutine vector_bc_projector_mark_bc_component (this, bc, component)
 Report unsupported component-specific marking.
 
subroutine vector_bc_projector_mark_bc_list_component (this, bclst, component)
 Report unsupported component-specific list marking.
 
subroutine segregated_vector_bc_projector_free (this)
 Destructor.
 
subroutine segregated_vector_bc_projector_init (this, coef)
 Constructor.
 
subroutine segregated_vector_bc_projector_finalize (this, rebuild_mask)
 Finalize the segregated vector boundary-condition projector.
 
subroutine segregated_vector_bc_projector_mark_bc (this, bc)
 Mark a boundary condition in the segregated projector.
 
subroutine segregated_vector_bc_projector_mark_bc_component (this, bc, component)
 Mark a boundary condition on one Cartesian component.
 
subroutine segregated_vector_bc_projector_mark_bc_list (this, bclst)
 Mark a list of boundary conditions in the segregated projector.
 
subroutine segregated_vector_bc_projector_mark_bc_list_component (this, bclst, component)
 Mark a list of boundary conditions on one Cartesian component.
 
subroutine segregated_vector_bc_projector_apply (this, x, y, z, n, strm)
 Apply the segregated vector boundary constraints.
 
subroutine, public vector_bc_projector_components (this, x, y, z)
 Access the component scalar projectors from a segregated vector projector.
 
subroutine coupled_vector_bc_projector_free (this)
 Destructor.
 
subroutine coupled_vector_bc_projector_init (this, coef)
 Constructor.
 
subroutine coupled_vector_bc_projector_mark_bc (this, bc)
 Register one vector boundary condition in the coupled projector.
 
subroutine coupled_vector_bc_projector_mark_bc_list (this, bclst)
 Register a list of vector boundary conditions in the coupled projector.
 
subroutine coupled_vector_bc_projector_clear_masks (this)
 Clear the resolved mask-side state of the coupled projector.
 
subroutine coupled_vector_bc_projector_clear_basis (this)
 Clear the resolved basis-side state of the coupled projector.
 
subroutine coupled_vector_bc_projector_finalize (this, rebuild_mask)
 Finalize the coupled projector by resolving the accumulated BC list.
 
subroutine coupled_vector_bc_projector_rebuild_masks (this)
 Rebuild the resolved masks and local constraint flags.
 
subroutine coupled_vector_bc_projector_rebuild_basis (this)
 Rebuild the local mixed-node basis.
 
subroutine coupled_vector_bc_projector_apply (this, x, y, z, n, strm)
 Apply homogeneous boundary constraints in the local basis.
 
subroutine coupled_vector_bc_projector_debug_output (this, field_name)
 Write fields showing the coupled projector mask and basis.
 
subroutine coupled_vector_bc_projector_debug_output_normal_component (this, x, y, z, n, field_name)
 Write scalar fields with the normal component u.n on mixed BC nodes.
 

Function/Subroutine Documentation

◆ coupled_vector_bc_projector_apply()

subroutine vector_bc_projector::coupled_vector_bc_projector_apply ( class(coupled_vector_bc_projector_t), intent(in this,
real(kind=rp), dimension(n), intent(inout x,
real(kind=rp), dimension(n), intent(inout y,
real(kind=rp), dimension(n), intent(inout z,
integer, intent(in n,
type(c_ptr), intent(inout), optional  strm 
)
private
Parameters
[in,out]xx-component field values.
[in,out]yy-component field values.
[in,out]zz-component field values.
[in]nNumber of entries in each component array.
[in,out]strmOptional backend stream/queue used on device backends.

Definition at line 1330 of file vector_bc_projector.f90.

Here is the call graph for this function:

◆ coupled_vector_bc_projector_clear_basis()

subroutine vector_bc_projector::coupled_vector_bc_projector_clear_basis ( class(coupled_vector_bc_projector_t), intent(inout this)
private

Definition at line 613 of file vector_bc_projector.f90.

◆ coupled_vector_bc_projector_clear_masks()

subroutine vector_bc_projector::coupled_vector_bc_projector_clear_masks ( class(coupled_vector_bc_projector_t), intent(inout this)
private

Releases the resolved Dirichlet and mixed masks, compact boundary-node caches, and the per-mixed-node constraint flags together with their device mirrors.

Definition at line 577 of file vector_bc_projector.f90.

◆ coupled_vector_bc_projector_debug_output()

subroutine vector_bc_projector::coupled_vector_bc_projector_debug_output ( class(coupled_vector_bc_projector_t), intent(inout this,
character(len=*), intent(in), optional  field_name 
)
private
Parameters
[in]field_nameOptional base name for the output file. The .fld suffix is appended automatically.

Definition at line 1422 of file vector_bc_projector.f90.

Here is the call graph for this function:

◆ coupled_vector_bc_projector_debug_output_normal_component()

subroutine vector_bc_projector::coupled_vector_bc_projector_debug_output_normal_component ( class(coupled_vector_bc_projector_t), intent(inout this,
real(kind=rp), dimension(n), intent(in x,
real(kind=rp), dimension(n), intent(in y,
real(kind=rp), dimension(n), intent(in z,
integer, intent(in n,
character(len=*), intent(in), optional  field_name 
)
private

The output is zero outside mixed_dof_mask. The normal vectors come from (1) the resolved basis stored in this projector and (2) the normals stored in coef_t. No area scaling is applied.

Parameters
[in]xx-component of the vector field.
[in]yy-component of the vector field.
[in]zz-component of the vector field.
[in]nNumber of entries in x, y, z.
[in]field_nameOptional base name for the output file. The .fld suffix is appended automatically.

Definition at line 1518 of file vector_bc_projector.f90.

Here is the call graph for this function:

◆ coupled_vector_bc_projector_finalize()

subroutine vector_bc_projector::coupled_vector_bc_projector_finalize ( class(coupled_vector_bc_projector_t), intent(inout this,
logical, intent(in rebuild_mask 
)
private

This routine builds the dof masks for Dirichlet and mixed nodes, and computes the local basis for the mixed ones.

Definition at line 624 of file vector_bc_projector.f90.

◆ coupled_vector_bc_projector_free()

subroutine vector_bc_projector::coupled_vector_bc_projector_free ( class(coupled_vector_bc_projector_t), intent(inout this)
private

Definition at line 464 of file vector_bc_projector.f90.

◆ coupled_vector_bc_projector_init()

subroutine vector_bc_projector::coupled_vector_bc_projector_init ( class(coupled_vector_bc_projector_t), intent(inout this,
type(coef_t), intent(in), target  coef 
)
private
Parameters
[in]coefSEM coefficients.

This resets any previous resolved state, stores pointers to the coefficient and dofmap objects, and precomputes reference-element lookup tables used later to reconstruct mixed-node normals on edges and corners.

Definition at line 486 of file vector_bc_projector.f90.

Here is the call graph for this function:

◆ coupled_vector_bc_projector_mark_bc()

subroutine vector_bc_projector::coupled_vector_bc_projector_mark_bc ( class(coupled_vector_bc_projector_t), intent(inout this,
class(bc_t), intent(inout), target  bc 
)
private
Parameters
[in,out]bcBoundary condition to queue for resolution.

Definition at line 547 of file vector_bc_projector.f90.

◆ coupled_vector_bc_projector_mark_bc_list()

subroutine vector_bc_projector::coupled_vector_bc_projector_mark_bc_list ( class(coupled_vector_bc_projector_t), intent(inout this,
type(bc_list_t), intent(in bclst 
)
private
Parameters
[in]bclstBoundary-condition list to queue.

Definition at line 561 of file vector_bc_projector.f90.

◆ coupled_vector_bc_projector_rebuild_basis()

subroutine vector_bc_projector::coupled_vector_bc_projector_rebuild_basis ( class(coupled_vector_bc_projector_t), intent(inout this)
private

Using the resolved mixed-node mask and constraint metadata built by rebuild_masks(), this routine reconstructs consistent normals on face, edge, and corner nodes and then builds an orthonormal local basis (n, t1, t2) for each mixed node. It then propagates the basis data to all marked mixed boundary conditions.

Definition at line 917 of file vector_bc_projector.f90.

Here is the call graph for this function:

◆ coupled_vector_bc_projector_rebuild_masks()

subroutine vector_bc_projector::coupled_vector_bc_projector_rebuild_masks ( class(coupled_vector_bc_projector_t), intent(inout this)
private

This routine reduces the queued boundary conditions to a nodal classification, constructs the global Dirichlet and mixed-node masks, computes BC-local resolved supports for mixed_bc_t instances, and fills the local constraint flags constraint_n, constraint_t1, and constraint_t2 on the mixed-node mask.

Definition at line 642 of file vector_bc_projector.f90.

Here is the call graph for this function:

◆ segregated_vector_bc_projector_apply()

subroutine vector_bc_projector::segregated_vector_bc_projector_apply ( class(segregated_vector_bc_projector_t), intent(in this,
real(kind=rp), dimension(n), intent(inout x,
real(kind=rp), dimension(n), intent(inout y,
real(kind=rp), dimension(n), intent(inout z,
integer, intent(in n,
type(c_ptr), intent(inout), optional  strm 
)
private
Parameters
[in,out]xx-component field values.
[in,out]yy-component field values.
[in,out]zz-component field values.
[in]nNumber of entries in each component array.
[in,out]strmOptional backend stream/queue used on device backends.

Definition at line 422 of file vector_bc_projector.f90.

◆ segregated_vector_bc_projector_finalize()

subroutine vector_bc_projector::segregated_vector_bc_projector_finalize ( class(segregated_vector_bc_projector_t), intent(inout this,
logical, intent(in rebuild_mask 
)
private

Definition at line 335 of file vector_bc_projector.f90.

◆ segregated_vector_bc_projector_free()

subroutine vector_bc_projector::segregated_vector_bc_projector_free ( class(segregated_vector_bc_projector_t), intent(inout this)
private

Definition at line 317 of file vector_bc_projector.f90.

◆ segregated_vector_bc_projector_init()

subroutine vector_bc_projector::segregated_vector_bc_projector_init ( class(segregated_vector_bc_projector_t), intent(inout this,
type(coef_t), intent(in), target  coef 
)
private
Parameters
[in]coefSEM coefficients defining the dof layout.

Definition at line 326 of file vector_bc_projector.f90.

◆ segregated_vector_bc_projector_mark_bc()

subroutine vector_bc_projector::segregated_vector_bc_projector_mark_bc ( class(segregated_vector_bc_projector_t), intent(inout this,
class(bc_t), intent(inout), target  bc 
)
private

Fully constrained vector boundary conditions are applied to all three component projectors.

Parameters
[in,out]bcBoundary condition to register.

Definition at line 344 of file vector_bc_projector.f90.

◆ segregated_vector_bc_projector_mark_bc_component()

subroutine vector_bc_projector::segregated_vector_bc_projector_mark_bc_component ( class(segregated_vector_bc_projector_t), intent(inout this,
class(bc_t), intent(inout), target  bc,
character(len=1), intent(in component 
)
private
Parameters
[in,out]bcBoundary condition to register.
[in]componentComponent selector.

Definition at line 361 of file vector_bc_projector.f90.

◆ segregated_vector_bc_projector_mark_bc_list()

subroutine vector_bc_projector::segregated_vector_bc_projector_mark_bc_list ( class(segregated_vector_bc_projector_t), intent(inout this,
type(bc_list_t), intent(in bclst 
)
private
Parameters
[in]bclstBoundary-condition list to register.

Definition at line 387 of file vector_bc_projector.f90.

◆ segregated_vector_bc_projector_mark_bc_list_component()

subroutine vector_bc_projector::segregated_vector_bc_projector_mark_bc_list_component ( class(segregated_vector_bc_projector_t), intent(inout this,
type(bc_list_t), intent(in bclst,
character(len=1), intent(in component 
)
private
Parameters
[in]bclstBoundary-condition list to register.
[in]componentComponent selector.

Definition at line 402 of file vector_bc_projector.f90.

◆ vector_bc_projector_components()

subroutine, public vector_bc_projector::vector_bc_projector_components ( class(vector_bc_projector_t), intent(inout), target  this,
type(scalar_bc_projector_t), intent(inout), pointer  x,
type(scalar_bc_projector_t), intent(inout), pointer  y,
type(scalar_bc_projector_t), intent(inout), pointer  z 
)
Parameters
[in,out]xPointer to the x-component scalar projector.
[in,out]yPointer to the y-component scalar projector.
[in,out]zPointer to the z-component scalar projector.

Definition at line 439 of file vector_bc_projector.f90.

Here is the caller graph for this function:

◆ vector_bc_projector_mark_bc_component()

subroutine vector_bc_projector::vector_bc_projector_mark_bc_component ( class(vector_bc_projector_t), intent(inout this,
class(bc_t), intent(inout), target  bc,
character(len=1), intent(in component 
)
private

Definition at line 295 of file vector_bc_projector.f90.

◆ vector_bc_projector_mark_bc_list_component()

subroutine vector_bc_projector::vector_bc_projector_mark_bc_list_component ( class(vector_bc_projector_t), intent(inout this,
type(bc_list_t), intent(in bclst,
character(len=1), intent(in component 
)
private

Definition at line 306 of file vector_bc_projector.f90.