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
wall_model_bc::wall_model_bc_t Type Referenceabstract

A shear stress boundary condition, computing the stress values using a wall model. More...

Inheritance diagram for wall_model_bc::wall_model_bc_t:
Collaboration diagram for wall_model_bc::wall_model_bc_t:

Public Member Functions

procedure, pass(thisinit (this, coef, json)
 Constructor.
 
procedure, pass(thisfree (this)
 Destructor.
 
procedure, pass(thisfinalize (this)
 Finalize by building mask arrays and init'ing the wall model.
 
procedure, pass(thisapply_scalar (this, x, n, t, tstep, strong)
 Apply shear stress for a scalar field x.
 
procedure, pass(thisapply_vector (this, x, y, z, n, t, tstep, strong)
 Apply the boundary condition to the right-hand side.
 
procedure, pass(thisapply_scalar_dev (this, x_d, t, tstep, strong)
 Boundary condition apply for a generic wall_model_bc condition to a vector x (device version)
 
procedure, pass(thisapply_vector_dev (this, x_d, y_d, z_d, t, tstep, strong)
 Boundary condition apply for a generic wall_model_bc condition to vectors x, y and z (device version)
 
procedure, pass(thisapply_scalar (this, x, n, t, tstep, strong)
 Apply shear stress for a scalar field x.
 
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, pass(thisapply_vector (this, x, y, z, n, t, tstep, strong)
 Boundary condition apply for a generic shear_stress condition to vectors x, y and z.
 
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, pass(thisapply_scalar_dev (this, x_d, t, tstep, strong)
 Boundary condition apply for a generic shear_stress condition to a vector x (device version)
 
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, pass(thisapply_vector_dev (this, x_d, y_d, z_d, t, tstep, strong)
 Boundary condition apply for a generic shear_stress condition to vectors x, y and z (device version)
 
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, pass(thisinit (this, coef, json)
 Constructor.
 
procedure(bc_constructor), deferred, pass init (this, coef, json)
 Deferred constructor.
 
procedure, pass(thisinit_from_components (this, coef, value)
 Constructor from components.
 
procedure, pass(thisset_stress_scalar (this, tau_x, tau_y, tau_z)
 Set the value of the shear stress vector using 3 scalars.
 
procedure, pass(thisset_stress_array (this, tau_x, tau_y, tau_z)
 Set the shear stress components.
 
generic set_stress (this, tau_x, tau_y, tau_z)
 Set the shear stress to apply.
 
generic set_stress (this, tau_x, tau_y, tau_z)
 Set the shear stress to apply.
 
procedure, pass(thisfree (this)
 Destructor.
 
procedure(bc_destructor), deferred, pass free (this)
 Deferred destructor.
 
procedure, pass(thisfinalize (this)
 Finalize the construction.
 
procedure(bc_finalize), deferred, pass finalize (this)
 Deferred finalizer.
 
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.
 

Public Attributes

class(wall_model_t), allocatable wall_model
 The wall model to compute the stress.
 
real(kind=rp) nu
 The kinematic viscosity.
 
type(json_file) params_
 Parameter dictionary for the wall model.
 
type(symmetry_t) symmetry
 
type(neumann_t) neumann_x
 Neumann condition for the x direction.
 
type(neumann_t) neumann_y
 Neumann condition for the y direction.
 
type(neumann_t) neumann_z
 Neumann condition for the z direction.
 
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.
 
logical updated = .false.
 Indicates wether the bc has been updated, for those BCs that need additional computations.
 

Detailed Description

Warning
Only works with axis-aligned boundaries.

Definition at line 53 of file wall_model_bc.f90.

Member Function/Subroutine Documentation

◆ apply_scalar() [1/3]

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 108 of file bc.f90.

◆ apply_scalar() [2/3]

procedure, pass(this) shear_stress::shear_stress_t::apply_scalar ( class(shear_stress_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 
)
inherited

Definition at line 63 of file shear_stress.f90.

◆ apply_scalar() [3/3]

procedure, pass(this) wall_model_bc::wall_model_bc_t::apply_scalar ( class(wall_model_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 
)

Definition at line 67 of file wall_model_bc.f90.

◆ apply_scalar_dev() [1/3]

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 112 of file bc.f90.

◆ apply_scalar_dev() [2/3]

procedure, pass(this) shear_stress::shear_stress_t::apply_scalar_dev ( class(shear_stress_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 
)
inherited

Definition at line 65 of file shear_stress.f90.

◆ apply_scalar_dev() [3/3]

procedure, pass(this) wall_model_bc::wall_model_bc_t::apply_scalar_dev ( class(wall_model_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 
)

Definition at line 69 of file wall_model_bc.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 101 of file bc.f90.

◆ apply_vector() [1/3]

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 110 of file bc.f90.

◆ apply_vector() [2/3]

procedure, pass(this) shear_stress::shear_stress_t::apply_vector ( class(shear_stress_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 
)
inherited

Definition at line 64 of file shear_stress.f90.

◆ apply_vector() [3/3]

procedure, pass(this) wall_model_bc::wall_model_bc_t::apply_vector ( class(wall_model_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 
)
Parameters
xThe x component of the right-hand side
yThe y component of the right-hand side
zThe z component of the right-hand side
nThe size of the right-hand side arrays.
tThe time value.
tstepThe time step.

Definition at line 68 of file wall_model_bc.f90.

◆ apply_vector_dev() [1/3]

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 114 of file bc.f90.

◆ apply_vector_dev() [2/3]

procedure, pass(this) shear_stress::shear_stress_t::apply_vector_dev ( class(shear_stress_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 
)
inherited

Definition at line 66 of file shear_stress.f90.

◆ apply_vector_dev() [3/3]

procedure, pass(this) wall_model_bc::wall_model_bc_t::apply_vector_dev ( class(wall_model_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 
)

Definition at line 71 of file wall_model_bc.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 104 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 106 of file bc.f90.

◆ finalize() [1/3]

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

Definition at line 120 of file bc.f90.

◆ finalize() [2/3]

procedure, pass(this) shear_stress::shear_stress_t::finalize ( class(shear_stress_t), intent(inout), target  this)
inherited

Definition at line 81 of file shear_stress.f90.

◆ finalize() [3/3]

procedure, pass(this) wall_model_bc::wall_model_bc_t::finalize ( class(wall_model_bc_t), intent(inout), target  this)

Definition at line 66 of file wall_model_bc.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 97 of file bc.f90.

◆ free() [1/3]

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

Definition at line 116 of file bc.f90.

◆ free() [2/3]

procedure, pass(this) shear_stress::shear_stress_t::free ( class(shear_stress_t), intent(inout), target  this)
inherited

Definition at line 79 of file shear_stress.f90.

◆ free() [3/3]

procedure, pass(this) wall_model_bc::wall_model_bc_t::free ( class(wall_model_bc_t), intent(inout), target  this)

Definition at line 64 of file wall_model_bc.f90.

◆ free_base()

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

Definition at line 88 of file bc.f90.

◆ init() [1/3]

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 118 of file bc.f90.

◆ init() [2/3]

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

Definition at line 68 of file shear_stress.f90.

◆ init() [3/3]

procedure, pass(this) wall_model_bc::wall_model_bc_t::init ( class(wall_model_bc_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 62 of file wall_model_bc.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 86 of file bc.f90.

◆ init_from_components()

procedure, pass(this) shear_stress::shear_stress_t::init_from_components ( class(shear_stress_t), intent(inout), target  this,
type(coef_t), intent(in coef,
real(kind=rp), dimension(3), intent(in value 
)
inherited
Parameters
[in]coefThe SEM coefficients.
[in]valueThe value of the shear stress to apply.

Definition at line 70 of file shear_stress.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 90 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 92 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 94 of file bc.f90.

◆ set_stress() [1/2]

generic shear_stress::shear_stress_t::set_stress ( class(shear_stress_t), intent(inout this,
real(kind=rp), dimension(this%msk(0)), intent(in tau_x,
real(kind=rp), dimension(this%msk(0)), intent(in tau_y,
real(kind=rp), dimension(this%msk(0)), intent(in tau_z 
)
inherited

Definition at line 77 of file shear_stress.f90.

◆ set_stress() [2/2]

generic shear_stress::shear_stress_t::set_stress ( class(shear_stress_t), intent(inout this,
real(kind=rp), intent(in tau_x,
real(kind=rp), intent(in tau_y,
real(kind=rp), intent(in tau_z 
)
inherited

Definition at line 77 of file shear_stress.f90.

◆ set_stress_array()

procedure, pass(this) shear_stress::shear_stress_t::set_stress_array ( class(shear_stress_t), intent(inout this,
real(kind=rp), dimension(this%msk(0)), intent(in tau_x,
real(kind=rp), dimension(this%msk(0)), intent(in tau_y,
real(kind=rp), dimension(this%msk(0)), intent(in tau_z 
)
inherited

Definition at line 74 of file shear_stress.f90.

◆ set_stress_scalar()

procedure, pass(this) shear_stress::shear_stress_t::set_stress_scalar ( class(shear_stress_t), intent(inout this,
real(kind=rp), intent(in tau_x,
real(kind=rp), intent(in tau_y,
real(kind=rp), intent(in tau_z 
)
inherited

Definition at line 72 of file shear_stress.f90.

Member Data Documentation

◆ 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.

◆ neumann_x

type(neumann_t) shear_stress::shear_stress_t::neumann_x
inherited

Definition at line 57 of file shear_stress.f90.

◆ neumann_y

type(neumann_t) shear_stress::shear_stress_t::neumann_y
inherited

Definition at line 59 of file shear_stress.f90.

◆ neumann_z

type(neumann_t) shear_stress::shear_stress_t::neumann_z
inherited

Definition at line 61 of file shear_stress.f90.

◆ nu

real(kind=rp) wall_model_bc::wall_model_bc_t::nu

Definition at line 57 of file wall_model_bc.f90.

◆ params_

type(json_file) wall_model_bc::wall_model_bc_t::params_

Definition at line 59 of file wall_model_bc.f90.

◆ strong

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

Definition at line 80 of file bc.f90.

◆ symmetry

type(symmetry_t) shear_stress::shear_stress_t::symmetry
inherited

Definition at line 54 of file shear_stress.f90.

◆ updated

logical bc::bc_t::updated = .false.
inherited

Definition at line 83 of file bc.f90.

◆ wall_model

class(wall_model_t), allocatable wall_model_bc::wall_model_bc_t::wall_model

Definition at line 55 of file wall_model_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: