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

Implements the boundary_data_t type.

Data Types

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

Functions/Subroutines

subroutine boundary_data_init (this, coef, zone_indices, outward_normals)
 Build the boundary point mask and gather the geometry.
 
subroutine boundary_data_free (this)
 Destructor.
 
subroutine boundary_data_update_geometry (this)
 Re-gather the coordinates, normals and surface weights.
 
pure logical function boundary_data_is_geometry (name)
 Whether name refers to one of the geometry attributes.
 
subroutine boundary_data_get_vector_by_name (this, name, v)
 Sample a named quantity at the boundary points into a vector.
 
subroutine boundary_data_get_vector_by_field (this, f, v)
 Sample a field at the boundary points into a vector.
 
subroutine boundary_data_scatter_to_field_by_vector (this, v, f, clear)
 Scatter a boundary vector back into a full field.
 
subroutine boundary_data_scatter_to_field_by_name (this, name, f, clear)
 Scatter a named boundary quantity into a full field.
 
subroutine boundary_data_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.
 
subroutine boundary_data_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.
 
subroutine boundary_data_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.
 
subroutine boundary_data_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.
 
real(kind=rp) function boundary_data_integrate_by_name (this, name)
 Surface integral of a named quantity over the zones.
 
real(kind=rp) function boundary_data_integrate_by_field (this, f)
 Surface integral of a field over the zones.
 
real(kind=rp) function boundary_data_surface_area (this)
 Total surface area of the zones.
 
real(kind=rp) function boundary_data_average_by_name (this, name)
 Area weighted average of a named quantity over the zones.
 
real(kind=rp) function boundary_data_average_by_field (this, f)
 Area weighted average of a field over the zones.
 
real(kind=rp) function, dimension(3) boundary_data_centroid (this)
 Area weighted geometric centre of the zones.
 
real(kind=rp) function, dimension(3) boundary_data_point_average (this)
 Unweighted mean of the boundary point coordinates.
 
real(kind=rp) function, dimension(3) boundary_data_integrate_vector_by_field (this, fx, fy, fz)
 Surface integral of a vector quantity, component by component.
 
real(kind=rp) function, dimension(3) boundary_data_integrate_vector_by_name (this, fx, fy, fz)
 Surface integral of a named vector quantity, component by component.
 
real(kind=rp) function boundary_data_flux_by_field (this, u, v, w)
 Flux of a vector quantity through the zones.
 
real(kind=rp) function boundary_data_flux_by_name (this, u, v, w)
 Flux of a named vector quantity through the zones.
 
real(kind=rp) function, dimension(3) boundary_data_integrate_normal_by_field (this, f)
 Surface integral of a scalar quantity times the normal.
 
real(kind=rp) function, dimension(3) boundary_data_integrate_normal_by_name (this, name)
 Surface integral of a named scalar quantity times the normal.
 

Function/Subroutine Documentation

◆ boundary_data_average_by_field()

real(kind=rp) function boundary_data::boundary_data_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 582 of file boundary_data.f90.

◆ boundary_data_average_by_name()

real(kind=rp) function boundary_data::boundary_data_average_by_name ( class(boundary_data_t), intent(inout this,
character(len=*), intent(in name 
)
private
Parameters
nameThe quantity to average.

Definition at line 565 of file boundary_data.f90.

◆ boundary_data_centroid()

real(kind=rp) function, dimension(3) boundary_data::boundary_data_centroid ( class(boundary_data_t), intent(inout this)
private

Definition at line 598 of file boundary_data.f90.

Here is the call graph for this function:

◆ boundary_data_flux_by_field()

real(kind=rp) function boundary_data::boundary_data_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 663 of file boundary_data.f90.

Here is the call graph for this function:

◆ boundary_data_flux_by_name()

real(kind=rp) function boundary_data::boundary_data_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 681 of file boundary_data.f90.

Here is the call graph for this function:

◆ boundary_data_free()

subroutine boundary_data::boundary_data_free ( class(boundary_data_t), intent(inout this)
private

Definition at line 221 of file boundary_data.f90.

◆ boundary_data_get_vector_by_field()

subroutine boundary_data::boundary_data_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 344 of file boundary_data.f90.

Here is the call graph for this function:

◆ boundary_data_get_vector_by_name()

subroutine boundary_data::boundary_data_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 302 of file boundary_data.f90.

Here is the call graph for this function:

◆ boundary_data_init()

subroutine boundary_data::boundary_data_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 161 of file boundary_data.f90.

◆ boundary_data_integrate_by_field()

real(kind=rp) function boundary_data::boundary_data_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 544 of file boundary_data.f90.

Here is the call graph for this function:

◆ boundary_data_integrate_by_name()

real(kind=rp) function boundary_data::boundary_data_integrate_by_name ( class(boundary_data_t), intent(inout this,
character(len=*), intent(in name 
)
private
Parameters
nameThe quantity to integrate.

Definition at line 532 of file boundary_data.f90.

Here is the call graph for this function:

◆ boundary_data_integrate_normal_by_field()

real(kind=rp) function, dimension(3) boundary_data::boundary_data_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 699 of file boundary_data.f90.

Here is the call graph for this function:

◆ boundary_data_integrate_normal_by_name()

real(kind=rp) function, dimension(3) boundary_data::boundary_data_integrate_normal_by_name ( class(boundary_data_t), intent(inout this,
character(len=*), intent(in name 
)
private
Parameters
nameThe scalar quantity.

Definition at line 713 of file boundary_data.f90.

Here is the call graph for this function:

◆ boundary_data_integrate_vector_by_field()

real(kind=rp) function, dimension(3) boundary_data::boundary_data_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 630 of file boundary_data.f90.

◆ boundary_data_integrate_vector_by_name()

real(kind=rp) function, dimension(3) boundary_data::boundary_data_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 646 of file boundary_data.f90.

◆ boundary_data_is_geometry()

pure logical function boundary_data::boundary_data_is_geometry ( character(len=*), intent(in name)
private
Parameters
nameThe requested name.

Definition at line 284 of file boundary_data.f90.

◆ boundary_data_normal_inplace()

subroutine boundary_data::boundary_data_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 482 of file boundary_data.f90.

Here is the call graph for this function:

◆ boundary_data_normal_split()

subroutine boundary_data::boundary_data_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 511 of file boundary_data.f90.

Here is the call graph for this function:

◆ boundary_data_point_average()

real(kind=rp) function, dimension(3) boundary_data::boundary_data_point_average ( class(boundary_data_t), intent(inout this)
private

Definition at line 616 of file boundary_data.f90.

Here is the call graph for this function:

◆ boundary_data_scatter_to_field_by_name()

subroutine boundary_data::boundary_data_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 400 of file boundary_data.f90.

◆ boundary_data_scatter_to_field_by_vector()

subroutine boundary_data::boundary_data_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 371 of file boundary_data.f90.

Here is the call graph for this function:

◆ boundary_data_surface_area()

real(kind=rp) function boundary_data::boundary_data_surface_area ( class(boundary_data_t), intent(inout this)
private

Definition at line 555 of file boundary_data.f90.

Here is the call graph for this function:

◆ boundary_data_tangential_inplace()

subroutine boundary_data::boundary_data_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 423 of file boundary_data.f90.

Here is the call graph for this function:

◆ boundary_data_tangential_split()

subroutine boundary_data::boundary_data_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 452 of file boundary_data.f90.

Here is the call graph for this function:

◆ boundary_data_update_geometry()

subroutine boundary_data::boundary_data_update_geometry ( class(boundary_data_t), intent(inout this)
private

Definition at line 244 of file boundary_data.f90.

Here is the call graph for this function: