Neko 0.9.99
A portable framework for high-order spectral element flow simulations
Loading...
Searching...
No Matches
field_dirichlet::field_dirichlet_t Type Referenceabstract

User defined dirichlet condition, for which the user can work with an entire field. The type stores a separate dummy field field_bc, which is passed to the user routine and can be populated with arbitrary values. The boundary condition then copy-pastes these values to the actual solution field using the mask of the boundary condition. So, in the end, only the relevant boundary values are updated. More...

Inheritance diagram for field_dirichlet::field_dirichlet_t:
Collaboration diagram for field_dirichlet::field_dirichlet_t:

Public Member Functions

procedure, pass(thisinit_field (this, bc_name)
 Constructor.
 
procedure, pass(thisapply_scalar (this, x, n, t, tstep)
 Apply scalar by performing a masked copy.
 
procedure, pass(thisapply_vector (this, x, y, z, n, t, tstep)
 (No-op) Apply vector.
 
procedure, pass(thisapply_vector_dev (this, x_d, y_d, z_d, t, tstep)
 (No-op) Apply vector (device).
 
procedure, pass(thisapply_scalar_dev (this, x_d, t, tstep)
 Apply scalar (device).
 
procedure, pass(thisfree (this)
 Destructor.
 
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_zones_from_list (this, bc_zones, bc_key, bc_labels)
 Mark all facets from a list of zones, also marks type of bc in the mesh.
 
procedure, pass(thismark_zone (this, bc_zone)
 Mark all facets from a zone.
 
procedure, pass(thisfinalize (this)
 Finalize the construction of the bc by populting the msk and facet arrays.
 
procedure(bc_apply_scalar), deferred, pass apply_scalar (this, x, n, t, tstep)
 Apply the boundary condition to a scalar field.
 
procedure(bc_apply_vector), deferred, pass apply_vector (this, x, y, z, n, t, tstep)
 Apply the boundary condition to a vector field.
 
procedure(bc_apply_scalar_dev), deferred, pass apply_scalar_dev (this, x_d, t, tstep)
 Device version of apply_scalar.
 
procedure(bc_apply_vector_dev), deferred, pass apply_vector_dev (this, x_d, y_d, z_d, t, tstep)
 Device version of apply_vector.
 
procedure(bc_destructor), deferred, pass free (this)
 Destructor.
 

Public Attributes

type(field_tfield_bc
 A dummy field which can be manipulated by the user to set the boundary values.
 
type(field_list_tfield_list
 A field list, which just stores field_bc, for convenience.
 
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
 Map of degrees of freedom.
 
type(coef_t), pointer coef
 SEM coefficients.
 
type(mesh_t), pointer msh
 The mesh.
 
type(space_t), pointer xh
 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.
 

Static Public Attributes

procedure(field_dirichlet_update), pointer, nopass update => null()
 Function pointer to the user routine performing the update of the values of the boundary fields.
 

Detailed Description

Note
Would be neat to add another class that contains all three dirichlet bcs for the velocity, this bc would then implement apply_vector.

Definition at line 62 of file field_dirichlet.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 
)
pure virtualinherited

Definition at line 87 of file bc.f90.

◆ apply_scalar() [2/2]

procedure, pass(this) field_dirichlet::field_dirichlet_t::apply_scalar ( class(field_dirichlet_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 
)
Parameters
xField onto which to copy the values (e.g. u,v,w,p or s).
nSize of the array x.
tTime.
tstepTime step.

Definition at line 75 of file field_dirichlet.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 
)
pure virtualinherited

Definition at line 91 of file bc.f90.

◆ apply_scalar_dev() [2/2]

procedure, pass(this) field_dirichlet::field_dirichlet_t::apply_scalar_dev ( class(field_dirichlet_t), intent(inout), target  this,
type(c_ptr)  x_d,
real(kind=rp), intent(in), optional  t,
integer, intent(in), optional  tstep 
)
Parameters
x_dDevice pointer to the field onto which to copy the values.
tTime.
tstepTime step.

Definition at line 81 of file field_dirichlet.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 
)
pure virtualinherited

Definition at line 89 of file bc.f90.

◆ apply_vector() [2/2]

procedure, pass(this) field_dirichlet::field_dirichlet_t::apply_vector ( class(field_dirichlet_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 
)
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.
tTime.
tstepTime step.

Definition at line 77 of file field_dirichlet.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 
)
pure virtualinherited

Definition at line 93 of file bc.f90.

◆ apply_vector_dev() [2/2]

procedure, pass(this) field_dirichlet::field_dirichlet_t::apply_vector_dev ( class(field_dirichlet_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 
)
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.
tTime.
tstepTime step.

Definition at line 79 of file field_dirichlet.f90.

◆ finalize()

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

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

Definition at line 85 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 95 of file bc.f90.

◆ free() [2/2]

procedure, pass(this) field_dirichlet::field_dirichlet_t::free ( class(field_dirichlet_t), intent(inout), target  this)

Definition at line 83 of file field_dirichlet.f90.

◆ free_base()

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

Definition at line 74 of file 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 72 of file bc.f90.

◆ init_field()

procedure, pass(this) field_dirichlet::field_dirichlet_t::init_field ( class(field_dirichlet_t), intent(inout), target  this,
character(len=*), intent(in bc_name 
)
Parameters
bc_nameName of thisfield_bc

Definition at line 73 of file field_dirichlet.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 76 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 78 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 82 of file bc.f90.

◆ mark_zones_from_list()

procedure, pass(this) bc::bc_t::mark_zones_from_list ( class(bc_t), intent(inout this,
class(facet_zone_t), dimension(:), intent(in bc_zones,
character(len=*)  bc_key,
character(len=neko_msh_max_zlbl_len), dimension(:)  bc_labels 
)
inherited
Parameters
bc_zoneArray of boundary zones.
bc_keyBoundary condition label, e.g. 'w' for wall.
bc_labelList of boundary condition labels.

Definition at line 80 of file bc.f90.

Member Data Documentation

◆ coef

type(coef_t), pointer bc::bc_t::coef
inherited

Definition at line 59 of file bc.f90.

◆ dof

type(dofmap_t), pointer bc::bc_t::dof
inherited

Definition at line 57 of file bc.f90.

◆ facet

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

Definition at line 55 of file bc.f90.

◆ facet_d

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

Definition at line 69 of file bc.f90.

◆ field_bc

type(field_t) field_dirichlet::field_dirichlet_t::field_bc

Definition at line 65 of file field_dirichlet.f90.

◆ field_list

type(field_list_t) field_dirichlet::field_dirichlet_t::field_list

Definition at line 67 of file field_dirichlet.f90.

◆ marked_facet

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

Definition at line 65 of file bc.f90.

◆ msh

type(mesh_t), pointer bc::bc_t::msh
inherited

Definition at line 61 of file bc.f90.

◆ msk

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

Definition at line 53 of file bc.f90.

◆ msk_d

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

Definition at line 67 of file bc.f90.

◆ update

procedure(field_dirichlet_update), pointer, nopass field_dirichlet::field_dirichlet_t::update => null()
static

Definition at line 70 of file field_dirichlet.f90.

◆ xh

type(space_t), pointer bc::bc_t::xh
inherited

Definition at line 63 of file bc.f90.


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