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

Defines overset interface vector boundary conditions.

Data Types

type  overset_interface_vector_t
 Extension of the user defined dirichlet condition overset_interface More...
 

Functions/Subroutines

subroutine overset_interface_vector_init (this, coef, json)
 Constructor.
 
subroutine overset_interface_vector_init_from_components (this, coef, tol, pad)
 Constructor from components.
 
subroutine overset_interface_vector_free (this)
 Destructor. Currently unused as is, all field_dirichlet attributes are freed in fluid_scheme_incompressible::free.
 
subroutine overset_interface_vector_apply_scalar (this, x, n, time, strong)
 No-op apply scalar.
 
subroutine overset_interface_vector_apply_scalar_dev (this, x_d, time, strong, strm)
 No-op apply scalar (device).
 
subroutine overset_interface_vector_apply_vector (this, x, y, z, n, time, strong)
 Apply the boundary condition to a vector field.
 
subroutine overset_interface_vector_apply_vector_dev (this, x_d, y_d, z_d, time, strong, strm)
 Apply the boundary condition to a vector field on the device.
 
subroutine overset_interface_vector_finalize (this, only_facets)
 Finalize by building the mask arrays and propagating to underlying bcs.
 
subroutine overset_interface_update (this, time)
 Update the values at the interfaces.
 
subroutine build_masks_ (this)
 Build masks.
 
subroutine gather_interface_dofs_ (this)
 Gather interface dofs.
 
subroutine setup_interpolator_ (this)
 Set up the interpolator.
 

Function/Subroutine Documentation

◆ build_masks_()

subroutine overset_interface_vector::build_masks_ ( class(overset_interface_vector_t), intent(inout this)
private

Create a new mask_t based on the 0-mask for the overset boundary points

Create a mask that marks the full elements containing overset boundary points

Create a domain mask that exclude the boundary elements.

Definition at line 465 of file overset_interface_vector.f90.

Here is the call graph for this function:

◆ gather_interface_dofs_()

subroutine overset_interface_vector::gather_interface_dofs_ ( class(overset_interface_vector_t), intent(inout this)
private

Gather the coordinates to the vectors

synchronize if on device

Definition at line 518 of file overset_interface_vector.f90.

Here is the call graph for this function:

◆ overset_interface_update()

subroutine overset_interface_vector::overset_interface_update ( class(overset_interface_vector_t), intent(inout this,
type(time_state_t), intent(in time 
)
private

Change the coordinates of the interface if set up by the user

Update in sub-step 1 should be an extrapolation of the boundary values

Find points if needed - later make sure only in first substep

For more substep than 1, then we just interpolate

Interpolate the values

Scatter them to the bc fields

Definition at line 407 of file overset_interface_vector.f90.

Here is the call graph for this function:

◆ overset_interface_vector_apply_scalar()

subroutine overset_interface_vector::overset_interface_vector_apply_scalar ( class(overset_interface_vector_t), intent(inout this,
real(kind=rp), dimension(n), intent(inout x,
integer, intent(in n,
type(time_state_t), intent(in), optional  time,
logical, intent(in), optional  strong 
)
private
Parameters
xField onto which to copy the values (e.g. u,v,w,p or s).
nSize of the array x.
tCurrent time state.

Definition at line 243 of file overset_interface_vector.f90.

◆ overset_interface_vector_apply_scalar_dev()

subroutine overset_interface_vector::overset_interface_vector_apply_scalar_dev ( class(overset_interface_vector_t), intent(inout), target  this,
type(c_ptr), intent(inout x_d,
type(time_state_t), intent(in), optional  time,
logical, intent(in), optional  strong,
type(c_ptr), intent(inout strm 
)
private
Parameters
x_dDevice pointer to the field onto which to copy the values.
timeThe current time state.

Definition at line 258 of file overset_interface_vector.f90.

◆ overset_interface_vector_apply_vector()

subroutine overset_interface_vector::overset_interface_vector_apply_vector ( class(overset_interface_vector_t), intent(inout 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(time_state_t), intent(in), optional  time,
logical, intent(in), optional  strong 
)
private
Parameters
xx-component of the field onto which to apply the values.
yy-component of the field onto which to apply the values.
zz-component of the field onto which to apply the values.
nSize of the x, y and z arrays.
timeThe current time state.

TODO: Change the mask to mask_t

Definition at line 277 of file overset_interface_vector.f90.

Here is the call graph for this function:

◆ overset_interface_vector_apply_vector_dev()

subroutine overset_interface_vector::overset_interface_vector_apply_vector_dev ( class(overset_interface_vector_t), intent(inout), target  this,
type(c_ptr), intent(inout x_d,
type(c_ptr), intent(inout y_d,
type(c_ptr), intent(inout z_d,
type(time_state_t), intent(in), optional  time,
logical, intent(in), optional  strong,
type(c_ptr), intent(inout strm 
)
private
Parameters
xx-component of the field onto which to apply the values.
yy-component of the field onto which to apply the values.
zz-component of the field onto which to apply the values.
timeThe current time state.
strmDevice stream

Definition at line 317 of file overset_interface_vector.f90.

Here is the call graph for this function:

◆ overset_interface_vector_finalize()

subroutine overset_interface_vector::overset_interface_vector_finalize ( class(overset_interface_vector_t), intent(inout), target  this,
logical, intent(in), optional  only_facets 
)
private

From field_dirichlet_vector_t

Build heper masks

Gather the interface boundary points

Initialize the interpolator and find the points

Keep a vector list that holds the values of interface fields

Fill the vector lists

Definition at line 353 of file overset_interface_vector.f90.

◆ overset_interface_vector_free()

subroutine overset_interface_vector::overset_interface_vector_free ( class(overset_interface_vector_t), intent(inout), target  this)
private

Definition at line 208 of file overset_interface_vector.f90.

◆ overset_interface_vector_init()

subroutine overset_interface_vector::overset_interface_vector_init ( class(overset_interface_vector_t), intent(inout), target  this,
type(coef_t), intent(in), target  coef,
type(json_file), intent(inout json 
)
Parameters
[in]coefThe SEM coefficients.
[in,out]jsonThe JSON object configuring the boundary condition.

Parse the interpolation settings

Definition at line 139 of file overset_interface_vector.f90.

◆ overset_interface_vector_init_from_components()

subroutine overset_interface_vector::overset_interface_vector_init_from_components ( class(overset_interface_vector_t), intent(inout), target  this,
type(coef_t), intent(in coef,
real(kind=rp), intent(in), optional  tol,
real(kind=rp), intent(in), optional  pad 
)
private
Parameters
[in]coefThe SEM coefficients.

This initializes coef, dof, msh, and Xh pointers

Set the interpolation settings

init coord vectors

Copy the dof coordinates to the internal vectors keep this to later check if the coordinates have changed.

Definition at line 157 of file overset_interface_vector.f90.

Here is the call graph for this function:

◆ setup_interpolator_()

subroutine overset_interface_vector::setup_interpolator_ ( class(overset_interface_vector_t), intent(inout this)
private

Initialize the interpolator with the mask and the dof coords

Find the interface points on the global domain

Definition at line 543 of file overset_interface_vector.f90.