Neko 1.99.7
A portable framework for high-order spectral element flow simulations
Loading...
Searching...
No Matches
boundary_data::boundary_data_t Type Reference

Collects data on the boundary points of one or more labelled zones and perform some bounary operations. More...

Collaboration diagram for boundary_data::boundary_data_t:

Public Member Functions

procedure, pass(thisinit (this, coef, zone_indices, outward_normals)
 Constructor.
 
procedure, pass(thisfree (this)
 Destructor.
 
procedure, pass(thisupdate_geometry (this)
 Re-gather the geometry factors at the boundary points.
 
generic get (this, name, v)
 Sample a quantity into a boundary vector.
 
generic get (this, f, v)
 Sample a quantity into a boundary vector.
 
generic scatter (this, v, f, clear)
 Scatter boundary values back into a full field.
 
generic scatter (this, name, f, clear)
 Scatter boundary values back into a full field.
 
generic integrate (this, name)
 Surface integral of a quantity over the zones.
 
generic integrate (this, f)
 Surface integral of a quantity over the zones.
 
generic average (this, name)
 Area weighted average of a quantity over the zones.
 
generic average (this, f)
 Area weighted average of a quantity over the zones.
 
procedure, pass(thissurface_area (this)
 Total surface area of the zones.
 
procedure, pass(thiscentroid (this)
 Area weighted geometric centre of the zones.
 
procedure, pass(thispoint_average (this)
 Unweighted mean of the boundary point coordinates.
 
generic integrate_vector (this, fx, fy, fz)
 Surface integral of a vector quantity, component by component.
 
generic integrate_vector (this, fx, fy, fz)
 Surface integral of a vector quantity, component by component.
 
generic integrate_normal (this, name)
 Surface integral of a scalar times the normal.
 
generic integrate_normal (this, f)
 Surface integral of a scalar times the normal.
 
generic flux (this, u, v, w)
 Flux of a vector quantity through the zones.
 
generic flux (this, u, v, w)
 Flux of a vector quantity through the zones.
 
generic tangential (this, vx, vy, vz)
 Wall tangential part of a vector.
 
generic tangential (this, vx, vy, vz, tx, ty, tz)
 Wall tangential part of a vector.
 
generic normal (this, vx, vy, vz)
 Wall normal part of a vector.
 
generic normal (this, vx, vy, vz, nx, ny, nz)
 Wall normal part of a vector.
 

Static Public Member Functions

procedure, nopass is_geometry (name)
 Whether a name refers to a geometry attribute.
 

Public Attributes

type(coef_t), pointer coef => null()
 SEM coefficients.
 
type(dirichlet_tbc
 Boundary mask built from the chosen zones.
 
integer, dimension(:), allocatable zone_indices
 Labelled zones included.
 
integer n_local = 0
 Number of boundary points on this rank.
 
integer n_global = 0
 Number of boundary points over all ranks.
 
type(vector_tx
 Coordinates at the boundary points.
 
type(vector_ty
 
type(vector_tz
 
type(vector_tn_x
 Unit normal components at the boundary points.
 
type(vector_tn_y
 
type(vector_tn_z
 
type(vector_tarea
 Surface quadrature weights at the boundary points.
 
logical outward_normals = .true.
 Whether the stored normals point out of the wall into the fluid. When false they keep the coef convention, pointing out of the fluid.
 

Private Member Functions

procedure, pass(this), private get_vector_by_name (this, name, v)
 Sample a named quantity at the boundary points into a vector.
 
procedure, pass(this), private get_vector_by_field (this, f, v)
 Sample a field at the boundary points into a vector.
 
procedure, pass(this), private scatter_to_field_by_vector (this, v, f, clear)
 Scatter a boundary vector back into a full field.
 
procedure, pass(this), private scatter_to_field_by_name (this, name, f, clear)
 Scatter a named boundary quantity into a full field.
 
procedure, pass(this), private integrate_by_name (this, name)
 Surface integral of a named quantity over the zones.
 
procedure, pass(this), private integrate_by_field (this, f)
 Surface integral of a field over the zones.
 
procedure, pass(this), private average_by_name (this, name)
 Area weighted average of a named quantity over the zones.
 
procedure, pass(this), private average_by_field (this, f)
 Area weighted average of a field over the zones.
 
procedure, pass(this), private integrate_vector_by_name (this, fx, fy, fz)
 Surface integral of a named vector quantity, component by component.
 
procedure, pass(this), private integrate_vector_by_field (this, fx, fy, fz)
 Surface integral of a vector quantity, component by component.
 
procedure, pass(this), private integrate_normal_by_name (this, name)
 Surface integral of a named scalar quantity times the normal.
 
procedure, pass(this), private integrate_normal_by_field (this, f)
 Surface integral of a scalar quantity times the normal.
 
procedure, pass(this), private flux_by_name (this, u, v, w)
 Flux of a named vector quantity through the zones.
 
procedure, pass(this), private flux_by_field (this, u, v, w)
 Flux of a vector quantity through the zones.
 
procedure, pass(this), private tangential_inplace (this, vx, vy, vz)
 Keep only the wall tangential part of a vector at the boundary points, in place. Each component is overwritten with v - (v . n) n.
 
procedure, pass(this), private tangential_split (this, vx, vy, vz, tx, ty, tz)
 Wall tangential part of a vector at the boundary points, out of place. The input (vx, vy, vz) is left unchanged and (tx, ty, tz) receive v - (v . n) n.
 
procedure, pass(this), private normal_inplace (this, vx, vy, vz)
 Keep only the wall normal part of a vector at the boundary points, in place. Each component is overwritten with (v . n) n.
 
procedure, pass(this), private normal_split (this, vx, vy, vz, nx, ny, nz)
 Wall normal part of a vector at the boundary points, out of place. The input (vx, vy, vz) is left unchanged and (nx, ny, nz) receive (v . n) n.
 

Private Attributes

type(vector_t), private work
 Work vector.
 

Detailed Description

Definition at line 56 of file boundary_data.f90.

Member Function/Subroutine Documentation

◆ average() [1/2]

generic boundary_data::boundary_data_t::average ( class(boundary_data_t), intent(inout this,
type(field_t), intent(in f 
)
Parameters
fThe field to average.

Definition at line 108 of file boundary_data.f90.

◆ average() [2/2]

generic boundary_data::boundary_data_t::average ( class(boundary_data_t), intent(inout this,
character(len=*), intent(in name 
)
Parameters
nameThe quantity to average.

Definition at line 108 of file boundary_data.f90.

◆ average_by_field()

procedure, pass(this), private boundary_data::boundary_data_t::average_by_field ( class(boundary_data_t), intent(inout this,
type(field_t), intent(in f 
)
private
Parameters
fThe field to average.

Definition at line 111 of file boundary_data.f90.

◆ average_by_name()

procedure, pass(this), private boundary_data::boundary_data_t::average_by_name ( class(boundary_data_t), intent(inout this,
character(len=*), intent(in name 
)
private
Parameters
nameThe quantity to average.

Definition at line 109 of file boundary_data.f90.

◆ centroid()

procedure, pass(this) boundary_data::boundary_data_t::centroid ( class(boundary_data_t), intent(inout this)

Definition at line 116 of file boundary_data.f90.

◆ flux() [1/2]

generic boundary_data::boundary_data_t::flux ( class(boundary_data_t), intent(inout this,
type(field_t), intent(in u,
type(field_t), intent(in v,
type(field_t), intent(in w 
)
Note
The sign follows the stored normals. With the default outward convention a positive value is a flux out of the wall into the fluid.
Parameters
uThe x component.
vThe y component.
wThe z component.

Definition at line 134 of file boundary_data.f90.

◆ flux() [2/2]

generic boundary_data::boundary_data_t::flux ( class(boundary_data_t), intent(inout this,
character(len=*), intent(in u,
character(len=*), intent(in v,
character(len=*), intent(in w 
)
Parameters
uThe name of the x component.
vThe name of the y component.
wThe name of the z component.

Definition at line 134 of file boundary_data.f90.

◆ flux_by_field()

procedure, pass(this), private boundary_data::boundary_data_t::flux_by_field ( class(boundary_data_t), intent(inout this,
type(field_t), intent(in u,
type(field_t), intent(in v,
type(field_t), intent(in w 
)
private
Note
The sign follows the stored normals. With the default outward convention a positive value is a flux out of the wall into the fluid.
Parameters
uThe x component.
vThe y component.
wThe z component.

Definition at line 137 of file boundary_data.f90.

◆ flux_by_name()

procedure, pass(this), private boundary_data::boundary_data_t::flux_by_name ( class(boundary_data_t), intent(inout this,
character(len=*), intent(in u,
character(len=*), intent(in v,
character(len=*), intent(in w 
)
private
Parameters
uThe name of the x component.
vThe name of the y component.
wThe name of the z component.

Definition at line 135 of file boundary_data.f90.

◆ free()

procedure, pass(this) boundary_data::boundary_data_t::free ( class(boundary_data_t), intent(inout this)

Definition at line 82 of file boundary_data.f90.

◆ get() [1/2]

generic boundary_data::boundary_data_t::get ( class(boundary_data_t), intent(inout this,
type(field_t), intent(in f,
type(vector_t), intent(inout v 
)
Parameters
fThe source field, which must live on the same dofmap.
vThe vector to fill.

Definition at line 87 of file boundary_data.f90.

◆ get() [2/2]

generic boundary_data::boundary_data_t::get ( class(boundary_data_t), intent(inout this,
character(len=*), intent(in name,
type(vector_t), intent(inout v 
)

The name is either one of the geometry attributes x, y, z, n_x, n_y, n_z, area, or the name of a field in the registry.

Parameters
nameThe requested quantity.
vThe vector to fill.

Definition at line 87 of file boundary_data.f90.

◆ get_vector_by_field()

procedure, pass(this), private boundary_data::boundary_data_t::get_vector_by_field ( class(boundary_data_t), intent(inout this,
type(field_t), intent(in f,
type(vector_t), intent(inout v 
)
private
Parameters
fThe source field, which must live on the same dofmap.
vThe vector to fill.

Definition at line 90 of file boundary_data.f90.

◆ get_vector_by_name()

procedure, pass(this), private boundary_data::boundary_data_t::get_vector_by_name ( class(boundary_data_t), intent(inout this,
character(len=*), intent(in name,
type(vector_t), intent(inout v 
)
private

The name is either one of the geometry attributes x, y, z, n_x, n_y, n_z, area, or the name of a field in the registry.

Parameters
nameThe requested quantity.
vThe vector to fill.

Definition at line 88 of file boundary_data.f90.

◆ init()

procedure, pass(this) boundary_data::boundary_data_t::init ( class(boundary_data_t), intent(inout this,
type(coef_t), intent(inout), target  coef,
integer, dimension(:), intent(in zone_indices,
logical, intent(in), optional  outward_normals 
)
Parameters
coefThe SEM coefficients.
zone_indicesThe labelled zones to include.
outward_normalsWhether the normals should point out of the wall into the fluid, which is the default. Pass false to keep the coef convention, where they point out of the fluid domain.

Definition at line 80 of file boundary_data.f90.

◆ integrate() [1/2]

generic boundary_data::boundary_data_t::integrate ( class(boundary_data_t), intent(inout this,
type(field_t), intent(in f 
)
Parameters
fThe field to integrate, on the same dofmap.

Definition at line 102 of file boundary_data.f90.

◆ integrate() [2/2]

generic boundary_data::boundary_data_t::integrate ( class(boundary_data_t), intent(inout this,
character(len=*), intent(in name 
)
Parameters
nameThe quantity to integrate.

Definition at line 102 of file boundary_data.f90.

◆ integrate_by_field()

procedure, pass(this), private boundary_data::boundary_data_t::integrate_by_field ( class(boundary_data_t), intent(inout this,
type(field_t), intent(in f 
)
private
Parameters
fThe field to integrate, on the same dofmap.

Definition at line 105 of file boundary_data.f90.

◆ integrate_by_name()

procedure, pass(this), private boundary_data::boundary_data_t::integrate_by_name ( class(boundary_data_t), intent(inout this,
character(len=*), intent(in name 
)
private
Parameters
nameThe quantity to integrate.

Definition at line 103 of file boundary_data.f90.

◆ integrate_normal() [1/2]

generic boundary_data::boundary_data_t::integrate_normal ( class(boundary_data_t), intent(inout this,
type(field_t), intent(in f 
)
Note
The sign follows the stored normals, so it changes with outward_normals.
Parameters
fThe scalar field.

Definition at line 127 of file boundary_data.f90.

◆ integrate_normal() [2/2]

generic boundary_data::boundary_data_t::integrate_normal ( class(boundary_data_t), intent(inout this,
character(len=*), intent(in name 
)
Parameters
nameThe scalar quantity.

Definition at line 127 of file boundary_data.f90.

◆ integrate_normal_by_field()

procedure, pass(this), private boundary_data::boundary_data_t::integrate_normal_by_field ( class(boundary_data_t), intent(inout this,
type(field_t), intent(in f 
)
private
Note
The sign follows the stored normals, so it changes with outward_normals.
Parameters
fThe scalar field.

Definition at line 131 of file boundary_data.f90.

◆ integrate_normal_by_name()

procedure, pass(this), private boundary_data::boundary_data_t::integrate_normal_by_name ( class(boundary_data_t), intent(inout this,
character(len=*), intent(in name 
)
private
Parameters
nameThe scalar quantity.

Definition at line 129 of file boundary_data.f90.

◆ integrate_vector() [1/2]

generic boundary_data::boundary_data_t::integrate_vector ( class(boundary_data_t), intent(inout this,
character(len=*), intent(in fx,
character(len=*), intent(in fy,
character(len=*), intent(in fz 
)
Parameters
fxThe name of the x component.
fyThe name of the y component.
fzThe name of the z component.

Definition at line 120 of file boundary_data.f90.

◆ integrate_vector() [2/2]

generic boundary_data::boundary_data_t::integrate_vector ( class(boundary_data_t), intent(inout this,
type(field_t), intent(in fx,
type(field_t), intent(in fy,
type(field_t), intent(in fz 
)
Parameters
fxThe x component.
fyThe y component.
fzThe z component.

Definition at line 120 of file boundary_data.f90.

◆ integrate_vector_by_field()

procedure, pass(this), private boundary_data::boundary_data_t::integrate_vector_by_field ( class(boundary_data_t), intent(inout this,
type(field_t), intent(in fx,
type(field_t), intent(in fy,
type(field_t), intent(in fz 
)
private
Parameters
fxThe x component.
fyThe y component.
fzThe z component.

Definition at line 124 of file boundary_data.f90.

◆ integrate_vector_by_name()

procedure, pass(this), private boundary_data::boundary_data_t::integrate_vector_by_name ( class(boundary_data_t), intent(inout this,
character(len=*), intent(in fx,
character(len=*), intent(in fy,
character(len=*), intent(in fz 
)
private
Parameters
fxThe name of the x component.
fyThe name of the y component.
fzThe name of the z component.

Definition at line 122 of file boundary_data.f90.

◆ is_geometry()

procedure, nopass boundary_data::boundary_data_t::is_geometry ( character(len=*), intent(in name)
static
Parameters
nameThe requested name.

Definition at line 100 of file boundary_data.f90.

◆ normal() [1/2]

generic boundary_data::boundary_data_t::normal ( class(boundary_data_t), intent(inout this,
type(vector_t), intent(inout vx,
type(vector_t), intent(inout vy,
type(vector_t), intent(inout vz 
)
Note
The result does not depend on the sign of the normal, since the normal enters twice, so it is the same whether the stored normals are the outward or not.
Parameters
vxThe x component, overwritten with its normal part.
vyThe y component, overwritten with its normal part.
vzThe z component, overwritten with its normal part.

Definition at line 146 of file boundary_data.f90.

◆ normal() [2/2]

generic boundary_data::boundary_data_t::normal ( class(boundary_data_t), intent(inout this,
type(vector_t), intent(in vx,
type(vector_t), intent(in vy,
type(vector_t), intent(in vz,
type(vector_t), intent(inout nx,
type(vector_t), intent(inout ny,
type(vector_t), intent(inout nz 
)
Note
The result does not depend on the sign of the normal, since the normal enters twice, so it is the same whether the stored normals are the outward or not.
Parameters
vxThe input x component.
vyThe input y component.
vzThe input z component.
nxThe output x component of the normal part.
nyThe output y component of the normal part.
nzThe output z component of the normal part.

Definition at line 146 of file boundary_data.f90.

◆ normal_inplace()

procedure, pass(this), private boundary_data::boundary_data_t::normal_inplace ( class(boundary_data_t), intent(inout this,
type(vector_t), intent(inout vx,
type(vector_t), intent(inout vy,
type(vector_t), intent(inout vz 
)
private
Note
The result does not depend on the sign of the normal, since the normal enters twice, so it is the same whether the stored normals are the outward or not.
Parameters
vxThe x component, overwritten with its normal part.
vyThe y component, overwritten with its normal part.
vzThe z component, overwritten with its normal part.

Definition at line 147 of file boundary_data.f90.

◆ normal_split()

procedure, pass(this), private boundary_data::boundary_data_t::normal_split ( class(boundary_data_t), intent(inout this,
type(vector_t), intent(in vx,
type(vector_t), intent(in vy,
type(vector_t), intent(in vz,
type(vector_t), intent(inout nx,
type(vector_t), intent(inout ny,
type(vector_t), intent(inout nz 
)
private
Note
The result does not depend on the sign of the normal, since the normal enters twice, so it is the same whether the stored normals are the outward or not.
Parameters
vxThe input x component.
vyThe input y component.
vzThe input z component.
nxThe output x component of the normal part.
nyThe output y component of the normal part.
nzThe output z component of the normal part.

Definition at line 149 of file boundary_data.f90.

◆ point_average()

procedure, pass(this) boundary_data::boundary_data_t::point_average ( class(boundary_data_t), intent(inout this)

Definition at line 118 of file boundary_data.f90.

◆ scatter() [1/2]

generic boundary_data::boundary_data_t::scatter ( class(boundary_data_t), intent(inout this,
character(len=*), intent(in name,
type(field_t), intent(inout f,
logical, intent(in), optional  clear 
)
Parameters
nameThe requested quantity.
fThe destination field.
clearIf true, zero the whole field before writing the boundary points; defaults to false.

Definition at line 93 of file boundary_data.f90.

◆ scatter() [2/2]

generic boundary_data::boundary_data_t::scatter ( class(boundary_data_t), intent(inout this,
type(vector_t), intent(in v,
type(field_t), intent(inout f,
logical, intent(in), optional  clear 
)
Parameters
vThe boundary point values.
fThe destination field.
clearIf true, zero the whole field before writing the boundary points; defaults to false.

Definition at line 93 of file boundary_data.f90.

◆ scatter_to_field_by_name()

procedure, pass(this), private boundary_data::boundary_data_t::scatter_to_field_by_name ( class(boundary_data_t), intent(inout this,
character(len=*), intent(in name,
type(field_t), intent(inout f,
logical, intent(in), optional  clear 
)
private
Parameters
nameThe requested quantity.
fThe destination field.
clearIf true, zero the whole field before writing the boundary points; defaults to false.

Definition at line 97 of file boundary_data.f90.

◆ scatter_to_field_by_vector()

procedure, pass(this), private boundary_data::boundary_data_t::scatter_to_field_by_vector ( class(boundary_data_t), intent(inout this,
type(vector_t), intent(in v,
type(field_t), intent(inout f,
logical, intent(in), optional  clear 
)
private
Parameters
vThe boundary point values.
fThe destination field.
clearIf true, zero the whole field before writing the boundary points; defaults to false.

Definition at line 95 of file boundary_data.f90.

◆ surface_area()

procedure, pass(this) boundary_data::boundary_data_t::surface_area ( class(boundary_data_t), intent(inout this)

Definition at line 114 of file boundary_data.f90.

◆ tangential() [1/2]

generic boundary_data::boundary_data_t::tangential ( class(boundary_data_t), intent(inout this,
type(vector_t), intent(inout vx,
type(vector_t), intent(inout vy,
type(vector_t), intent(inout vz 
)
Note
The result does not depend on the sign of the normal, since the normal enters twice, so it is the same whether the stored normals are the outward or not.
Parameters
vxThe x component, overwritten with its tangential part.
vyThe y component, overwritten with its tangential part.
vzThe z component, overwritten with its tangential part.

Definition at line 140 of file boundary_data.f90.

◆ tangential() [2/2]

generic boundary_data::boundary_data_t::tangential ( class(boundary_data_t), intent(inout this,
type(vector_t), intent(in vx,
type(vector_t), intent(in vy,
type(vector_t), intent(in vz,
type(vector_t), intent(inout tx,
type(vector_t), intent(inout ty,
type(vector_t), intent(inout tz 
)
Note
The result does not depend on the sign of the normal, since the normal enters twice, so it is the same whether the stored normals are the outward or not.
Parameters
vxThe input x component.
vyThe input y component.
vzThe input z component.
txThe output x component of the tangential part.
tyThe output y component of the tangential part.
tzThe output z component of the tangential part.

Definition at line 140 of file boundary_data.f90.

◆ tangential_inplace()

procedure, pass(this), private boundary_data::boundary_data_t::tangential_inplace ( class(boundary_data_t), intent(inout this,
type(vector_t), intent(inout vx,
type(vector_t), intent(inout vy,
type(vector_t), intent(inout vz 
)
private
Note
The result does not depend on the sign of the normal, since the normal enters twice, so it is the same whether the stored normals are the outward or not.
Parameters
vxThe x component, overwritten with its tangential part.
vyThe y component, overwritten with its tangential part.
vzThe z component, overwritten with its tangential part.

Definition at line 141 of file boundary_data.f90.

◆ tangential_split()

procedure, pass(this), private boundary_data::boundary_data_t::tangential_split ( class(boundary_data_t), intent(inout this,
type(vector_t), intent(in vx,
type(vector_t), intent(in vy,
type(vector_t), intent(in vz,
type(vector_t), intent(inout tx,
type(vector_t), intent(inout ty,
type(vector_t), intent(inout tz 
)
private
Note
The result does not depend on the sign of the normal, since the normal enters twice, so it is the same whether the stored normals are the outward or not.
Parameters
vxThe input x component.
vyThe input y component.
vzThe input z component.
txThe output x component of the tangential part.
tyThe output y component of the tangential part.
tzThe output z component of the tangential part.

Definition at line 143 of file boundary_data.f90.

◆ update_geometry()

procedure, pass(this) boundary_data::boundary_data_t::update_geometry ( class(boundary_data_t), intent(inout this)

Definition at line 84 of file boundary_data.f90.

Member Data Documentation

◆ area

type(vector_t) boundary_data::boundary_data_t::area

Definition at line 72 of file boundary_data.f90.

◆ bc

type(dirichlet_t) boundary_data::boundary_data_t::bc

Definition at line 60 of file boundary_data.f90.

◆ coef

type(coef_t), pointer boundary_data::boundary_data_t::coef => null()

Definition at line 58 of file boundary_data.f90.

◆ n_global

integer boundary_data::boundary_data_t::n_global = 0

Definition at line 66 of file boundary_data.f90.

◆ n_local

integer boundary_data::boundary_data_t::n_local = 0

Definition at line 64 of file boundary_data.f90.

◆ n_x

type(vector_t) boundary_data::boundary_data_t::n_x

Definition at line 70 of file boundary_data.f90.

◆ n_y

type(vector_t) boundary_data::boundary_data_t::n_y

Definition at line 70 of file boundary_data.f90.

◆ n_z

type(vector_t) boundary_data::boundary_data_t::n_z

Definition at line 70 of file boundary_data.f90.

◆ outward_normals

logical boundary_data::boundary_data_t::outward_normals = .true.

Definition at line 77 of file boundary_data.f90.

◆ work

type(vector_t), private boundary_data::boundary_data_t::work
private

Definition at line 74 of file boundary_data.f90.

◆ x

type(vector_t) boundary_data::boundary_data_t::x

Definition at line 68 of file boundary_data.f90.

◆ y

type(vector_t) boundary_data::boundary_data_t::y

Definition at line 68 of file boundary_data.f90.

◆ z

type(vector_t) boundary_data::boundary_data_t::z

Definition at line 68 of file boundary_data.f90.

◆ zone_indices

integer, dimension(:), allocatable boundary_data::boundary_data_t::zone_indices

Definition at line 62 of file boundary_data.f90.


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