Loading [MathJax]/extensions/tex2jax.js
Neko 0.9.99
A portable framework for high-order spectral element flow simulations
All Classes Namespaces Files Functions Variables Typedefs Enumerator Macros Pages
symmetry::symmetry_t Type Referenceabstract

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

Inheritance diagram for symmetry::symmetry_t:
Collaboration diagram for symmetry::symmetry_t:

Public Member Functions

procedure, pass(thisapply_scalar (this, x, n, t, tstep, strong)
 No-op scalar apply.
 
procedure, pass(thisapply_vector (this, x, y, z, n, t, tstep, strong)
 Apply symmetry conditions (axis aligned)
 
procedure, pass(thisapply_scalar_dev (this, x_d, t, tstep, strong)
 No-op scalar apply (device version)
 
procedure, pass(thisapply_vector_dev (this, x_d, y_d, z_d, t, tstep, strong)
 Apply symmetry conditions (axis aligned) (device version)
 
procedure, pass(thisinit (this, coef, json)
 Constructor.
 
procedure, pass(thisinit_from_components (this, coef)
 Constructor from compoenents.
 
procedure, pass(thisfree (this)
 Destructor.
 
procedure, pass(thisget_normal_axis (this, sx, sy, sz, facet, el)
 Get the axis coressponding to the direction of the normal.
 
procedure, pass(thisfinalize (this)
 Finalize.
 
procedure, pass(thisinit_base (this, coef)
 Constructor.
 
procedure, pass(thisfree_base (this)
 Destructor.
 
procedure, pass(thismark_facet (this, facet, el)
 Mark a facet on an element as part of the boundary condition.
 
procedure, pass(thismark_facets (this, facet_list)
 Mark all facets from a (facet, element) tuple list.
 
procedure, pass(thismark_zone (this, bc_zone)
 Mark all facets from a zone.
 
procedure, pass(thisfinalize_base (this, only_facets)
 Finalize the construction of the bc by populating the msk and facet arrays.
 
procedure, pass(thisapply_scalar_generic (this, x, n, t, tstep)
 Apply the boundary condition to a scalar field. Dispatches to the CPU or the device version.
 
procedure, pass(thisapply_vector_generic (this, x, y, z, n, t, tstep)
 Apply the boundary condition to a vector field. Dispatches to the CPU or the device version.
 
procedure, pass(thisdebug_mask_ (this, file_name)
 Write a field showing the mask of the bcs.
 
procedure(bc_apply_scalar), deferred, pass apply_scalar (this, x, n, t, tstep, strong)
 Apply the boundary condition to a scalar field on the CPU.
 
procedure(bc_apply_vector), deferred, pass apply_vector (this, x, y, z, n, t, tstep, strong)
 Apply the boundary condition to a vector field on the CPU.
 
procedure(bc_apply_scalar_dev), deferred, pass apply_scalar_dev (this, x_d, t, tstep, strong)
 Device version of apply_scalar on the device.
 
procedure(bc_apply_vector_dev), deferred, pass apply_vector_dev (this, x_d, y_d, z_d, t, tstep, strong)
 Device version of apply_vector on the device.
 
procedure(bc_destructor), deferred, pass free (this)
 Deferred destructor.
 
procedure(bc_constructor), deferred, pass init (this, coef, json)
 Deferred constructor.
 
procedure(bc_finalize), deferred, pass finalize (this)
 Deferred finalizer.
 

Public Attributes

type(zero_dirichlet_tbc_x
 
type(zero_dirichlet_tbc_y
 
type(zero_dirichlet_tbc_z
 
integer, dimension(:), allocatable msk
 The linear index of each node in each boundary facet.
 
integer, dimension(:), allocatable facet
 A list of facet ids (1 to 6), one for each element in msk.
 
type(dofmap_t), pointer dof => null()
 Map of degrees of freedom.
 
type(coef_t), pointer coef => null()
 SEM coefficients.
 
type(mesh_t), pointer msh => null()
 The mesh.
 
type(space_t), pointer xh => null()
 The function space.
 
type(stack_i4t2_t) marked_facet
 Index tuples (facet, element) marked as part of the boundary condition.
 
type(c_ptr) msk_d = C_NULL_PTR
 Device pointer for msk.
 
type(c_ptr) facet_d = C_NULL_PTR
 Device pointer for facet.
 
logical strong = .true.
 Wether the bc is strongly enforced. Essentially valid for all Dirichlet types of bcs. These need to be masked out for solvers etc, so that values are not affected. Mixed bcs are, by convention, weak.
 

Detailed Description

Warning
Only works for axis-aligned plane boundaries.

Definition at line 49 of file symmetry.f90.

Member Function/Subroutine Documentation

◆ apply_scalar() [1/2]

procedure(bc_apply_scalar), deferred, pass bc::bc_t::apply_scalar ( class(bc_t), intent(inout this,
real(kind=rp), dimension(n), intent(inout x,
integer, intent(in n,
real(kind=rp), intent(in), optional  t,
integer, intent(in), optional  tstep,
logical, intent(in), optional  strong 
)
pure virtualinherited

Definition at line 105 of file bc.f90.

◆ apply_scalar() [2/2]

procedure, pass(this) symmetry::symmetry_t::apply_scalar ( class(symmetry_t), intent(inout this,
real(kind=rp), dimension(n), intent(inout x,
integer, intent(in n,
real(kind=rp), intent(in), optional  t,
integer, intent(in), optional  tstep,
logical, intent(in), optional  strong 
)
Parameters
xThe field for which to apply the boundary condition.
nThe size of x.
tCurrent time.
tstepCurrent time-step.
strongWhether we are setting a strong or a weak bc.

Definition at line 54 of file symmetry.f90.

◆ apply_scalar_dev() [1/2]

procedure(bc_apply_scalar_dev), deferred, pass bc::bc_t::apply_scalar_dev ( class(bc_t), intent(inout), target  this,
type(c_ptr)  x_d,
real(kind=rp), intent(in), optional  t,
integer, intent(in), optional  tstep,
logical, intent(in), optional  strong 
)
pure virtualinherited

Definition at line 109 of file bc.f90.

◆ apply_scalar_dev() [2/2]

procedure, pass(this) symmetry::symmetry_t::apply_scalar_dev ( class(symmetry_t), intent(inout), target  this,
type(c_ptr)  x_d,
real(kind=rp), intent(in), optional  t,
integer, intent(in), optional  tstep,
logical, intent(in), optional  strong 
)
Parameters
x_dDevice pointer to the field.
tThe time value.
tstepThe time iteration.
strongWhether we are setting a strong or a weak bc.

Definition at line 56 of file symmetry.f90.

◆ apply_scalar_generic()

procedure, pass(this) bc::bc_t::apply_scalar_generic ( class(bc_t), intent(inout this,
real(kind=rp), dimension(n), intent(inout x,
integer, intent(in n,
real(kind=rp), intent(in), optional  t,
integer, intent(in), optional  tstep 
)
inherited
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.
tCurrent time.
tstepThe current time iteration.

Definition at line 98 of file bc.f90.

◆ apply_vector() [1/2]

procedure(bc_apply_vector), deferred, pass bc::bc_t::apply_vector ( class(bc_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,
real(kind=rp), intent(in), optional  t,
integer, intent(in), optional  tstep,
logical, intent(in), optional  strong 
)
pure virtualinherited

Definition at line 107 of file bc.f90.

◆ apply_vector() [2/2]

procedure, pass(this) symmetry::symmetry_t::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,
real(kind=rp), intent(in), optional  t,
integer, intent(in), optional  tstep,
logical, intent(in), optional  strong 
)
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.
tCurrent time.
tstepCurrent time-step.
strongWhether we are setting a strong or a weak bc.

Definition at line 55 of file symmetry.f90.

◆ apply_vector_dev() [1/2]

procedure(bc_apply_vector_dev), deferred, pass bc::bc_t::apply_vector_dev ( class(bc_t), intent(inout), target  this,
type(c_ptr)  x_d,
type(c_ptr)  y_d,
type(c_ptr)  z_d,
real(kind=rp), intent(in), optional  t,
integer, intent(in), optional  tstep,
logical, intent(in), optional  strong 
)
pure virtualinherited

Definition at line 111 of file bc.f90.

◆ apply_vector_dev() [2/2]

procedure, pass(this) symmetry::symmetry_t::apply_vector_dev ( class(symmetry_t), intent(inout), target  this,
type(c_ptr)  x_d,
type(c_ptr)  y_d,
type(c_ptr)  z_d,
real(kind=rp), intent(in), optional  t,
integer, intent(in), optional  tstep,
logical, intent(in), optional  strong 
)
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.
tThe time value.
tstepCurrent time-step.
strongWhether we are setting a strong or a weak bc.

Definition at line 57 of file symmetry.f90.

◆ apply_vector_generic()

procedure, pass(this) bc::bc_t::apply_vector_generic ( class(bc_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,
real(kind=rp), intent(in), optional  t,
integer, intent(in), optional  tstep 
)
inherited
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.
tCurrent time.
tstepThe current time iteration.

Definition at line 101 of file bc.f90.

◆ debug_mask_()

procedure, pass(this) bc::bc_t::debug_mask_ ( class(bc_t), intent(inout this,
character(len=*), intent(in file_name 
)
inherited

The mask will be marked with 1.

Parameters
file_nameThe name of the fld file.

Definition at line 103 of file bc.f90.

◆ finalize() [1/2]

procedure(bc_finalize), deferred, pass bc::bc_t::finalize ( class(bc_t), intent(inout), target  this)
pure virtualinherited

Definition at line 117 of file bc.f90.

◆ finalize() [2/2]

procedure, pass(this) symmetry::symmetry_t::finalize ( class(symmetry_t), intent(inout), target  this)

Definition at line 68 of file symmetry.f90.

◆ finalize_base()

procedure, pass(this) bc::bc_t::finalize_base ( class(bc_t), intent(inout), target  this,
logical, intent(in), optional  only_facets 
)
inherited
Parameters
only_facets,ifthe bc is only to be applied on facets. Relevant for bcs where the normal direction is important and where and shared dofs should not be included.

This will linearize the marked facet's indicies in the msk array.

Definition at line 94 of file bc.f90.

◆ free() [1/2]

procedure(bc_destructor), deferred, pass bc::bc_t::free ( class(bc_t), intent(inout), target  this)
pure virtualinherited

Definition at line 113 of file bc.f90.

◆ free() [2/2]

procedure, pass(this) symmetry::symmetry_t::free ( class(symmetry_t), intent(inout), target  this)

Definition at line 64 of file symmetry.f90.

◆ free_base()

procedure, pass(this) bc::bc_t::free_base ( class(bc_t), intent(inout this)
inherited

Definition at line 85 of file bc.f90.

◆ get_normal_axis()

procedure, pass(this) symmetry::symmetry_t::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 
)

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 66 of file symmetry.f90.

◆ init() [1/2]

procedure(bc_constructor), deferred, pass bc::bc_t::init ( class(bc_t), intent(inout), target  this,
type(coef_t), intent(in coef,
type(json_file), intent(inout json 
)
pure virtualinherited

Definition at line 115 of file bc.f90.

◆ init() [2/2]

procedure, pass(this) symmetry::symmetry_t::init ( class(symmetry_t), intent(inout), target  this,
type(coef_t), intent(in coef,
type(json_file), intent(inout json 
)
Parameters
[in]coefThe SEM coefficients.
[in,out]jsonThe JSON object configuring the boundary condition.

Definition at line 59 of file symmetry.f90.

◆ init_base()

procedure, pass(this) bc::bc_t::init_base ( class(bc_t), intent(inout this,
type(coef_t), intent(in), target  coef 
)
inherited
Parameters
dofMap of degrees of freedom.

Definition at line 83 of file bc.f90.

◆ init_from_components()

procedure, pass(this) symmetry::symmetry_t::init_from_components ( class(symmetry_t), intent(inout), target  this,
type(coef_t), intent(in coef 
)
Parameters
[in]coefThe SEM coefficients.

Definition at line 61 of file symmetry.f90.

◆ mark_facet()

procedure, pass(this) bc::bc_t::mark_facet ( class(bc_t), intent(inout this,
integer, intent(in facet,
integer, intent(in el 
)
inherited
Parameters
facetThe index of the facet.
elThe index of the element.

Definition at line 87 of file bc.f90.

◆ mark_facets()

procedure, pass(this) bc::bc_t::mark_facets ( class(bc_t), intent(inout this,
type(stack_i4t2_t), intent(inout facet_list 
)
inherited
Parameters
facet_listThe list of tuples.

Definition at line 89 of file bc.f90.

◆ mark_zone()

procedure, pass(this) bc::bc_t::mark_zone ( class(bc_t), intent(inout this,
class(facet_zone_t), intent(in bc_zone 
)
inherited
Parameters
bc_zoneBoundary zone to be marked.

Definition at line 91 of file bc.f90.

Member Data Documentation

◆ bc_x

type(zero_dirichlet_t) symmetry::symmetry_t::bc_x

Definition at line 50 of file symmetry.f90.

◆ bc_y

type(zero_dirichlet_t) symmetry::symmetry_t::bc_y

Definition at line 51 of file symmetry.f90.

◆ bc_z

type(zero_dirichlet_t) symmetry::symmetry_t::bc_z

Definition at line 52 of file symmetry.f90.

◆ coef

type(coef_t), pointer bc::bc_t::coef => null()
inherited

Definition at line 65 of file bc.f90.

◆ dof

type(dofmap_t), pointer bc::bc_t::dof => null()
inherited

Definition at line 63 of file bc.f90.

◆ facet

integer, dimension(:), allocatable bc::bc_t::facet
inherited

Definition at line 61 of file bc.f90.

◆ facet_d

type(c_ptr) bc::bc_t::facet_d = C_NULL_PTR
inherited

Definition at line 75 of file bc.f90.

◆ marked_facet

type(stack_i4t2_t) bc::bc_t::marked_facet
inherited

Definition at line 71 of file bc.f90.

◆ msh

type(mesh_t), pointer bc::bc_t::msh => null()
inherited

Definition at line 67 of file bc.f90.

◆ msk

integer, dimension(:), allocatable bc::bc_t::msk
inherited

Definition at line 59 of file bc.f90.

◆ msk_d

type(c_ptr) bc::bc_t::msk_d = C_NULL_PTR
inherited

Definition at line 73 of file bc.f90.

◆ strong

logical bc::bc_t::strong = .true.
inherited

Definition at line 80 of file bc.f90.

◆ xh

type(space_t), pointer bc::bc_t::xh => null()
inherited

Definition at line 69 of file bc.f90.


The documentation for this type was generated from the following file: