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

Mixed Dirichlet-Neumann axis aligned symmetry plane.

Data Types

type  symmetry_t
 Mixed Dirichlet-Neumann symmetry plane condition. More...
 

Functions/Subroutines

subroutine symmetry_init (this, coef, json)
 Constructor.
 
subroutine symmetry_init_from_components (this, coef)
 Constructor from components.
 
subroutine symmetry_finalize (this, only_facets)
 Finalize. Marks the appropriate faces for application of a homogeneous Dirchlet condition based on the direction of the axis normal.
 
subroutine symmetry_get_normal_axis (this, sx, sy, sz, facet, el)
 Compute the average normal for a facet of an element.
 
subroutine symmetry_apply_scalar (this, x, n, time, strong)
 No-op scalar apply.
 
subroutine symmetry_apply_vector (this, x, y, z, n, time, strong)
 Apply symmetry conditions (axis aligned)
 
subroutine symmetry_apply_scalar_dev (this, x_d, time, strong, strm)
 No-op scalar apply (device version)
 
subroutine symmetry_apply_vector_dev (this, x_d, y_d, z_d, time, strong, strm)
 Apply symmetry conditions (axis aligned) (device version)
 
subroutine symmetry_free (this)
 Destructor.
 

Function/Subroutine Documentation

◆ symmetry_apply_scalar()

subroutine symmetry::symmetry_apply_scalar ( class(symmetry_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
xThe field for which to apply the boundary condition.
nThe size of x.
timeCurrent time state.
strongWhether we are setting a strong or a weak bc.

Definition at line 206 of file symmetry.f90.

◆ symmetry_apply_scalar_dev()

subroutine symmetry::symmetry_apply_scalar_dev ( class(symmetry_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.
timeThe time state.
strongWhether we are setting a strong or a weak bc.

Definition at line 249 of file symmetry.f90.

◆ symmetry_apply_vector()

subroutine symmetry::symmetry_apply_vector ( class(symmetry_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
xThe x comp of the field for which to apply the bc.
yThe y comp of the field for which to apply the bc.
zThe z comp of the field for which to apply the bc.
nThe size of x, y, and z.
timeCurrent time state.
strongWhether we are setting a strong or a weak bc.

Definition at line 221 of file symmetry.f90.

◆ symmetry_apply_vector_dev()

subroutine symmetry::symmetry_apply_vector_dev ( class(symmetry_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
x_dDevice pointer to the values to be applied for the x comp.
y_dDevice pointer to the values to be applied for the y comp.
z_dDevice pointer to the values to be applied for the z comp.
timeThe time state.
strongWhether we are setting a strong or a weak bc.

Definition at line 263 of file symmetry.f90.

◆ symmetry_finalize()

subroutine symmetry::symmetry_finalize ( class(symmetry_t), intent(inout), target  this,
logical, intent(in), optional  only_facets 
)
private

Definition at line 104 of file symmetry.f90.

◆ symmetry_free()

subroutine symmetry::symmetry_free ( class(symmetry_t), intent(inout), target  this)
private

Definition at line 288 of file symmetry.f90.

◆ symmetry_get_normal_axis()

subroutine symmetry::symmetry_get_normal_axis ( class(symmetry_t), intent(inout), target  this,
real(kind=rp), intent(out sx,
real(kind=rp), intent(out sy,
real(kind=rp), intent(out sz,
integer, intent(in facet,
integer, intent(in el 
)
private

The normal direction is the one for which s is 0, so e.g for a y normal, sx and sz will be unity, and sy will be 0.

Definition at line 153 of file symmetry.f90.

◆ symmetry_init()

subroutine symmetry::symmetry_init ( class(symmetry_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.

Definition at line 76 of file symmetry.f90.

◆ symmetry_init_from_components()

subroutine symmetry::symmetry_init_from_components ( class(symmetry_t), intent(inout), target  this,
type(coef_t), intent(in), target  coef 
)
private
Parameters
[in]coefThe SEM coefficients.

Definition at line 87 of file symmetry.f90.