Octopus
box_parallelepiped_oct_m Module Reference

Data Types

interface  box_parallelepiped_t
 Class implementing a parallelepiped box. Currently this is restricted to a rectangular cuboid (all the faces must be rectangular) and the vectors generating the parallelepiped must be along the Cartesian axes. More...
 

Functions/Subroutines

class(box_parallelepiped_t) function, pointer box_parallelepiped_constructor (dim, center, axes, length, namespace, n_periodic_boundaries)
 
subroutine box_parallelepiped_regenerate (box, dim, axes, length, namespace)
 
subroutine box_parallelepiped_finalize (this)
 
logical function, dimension(1:nn) box_parallelepiped_shape_contains_points (this, nn, xx)
 
logical function, dimension(1:nn) box_parallelepiped_shape_get_surface_points (this, namespace, mesh_spacing, nn, xx, number_of_layers)
 Get a mask for the grid points telling which of them are surface points. More...
 
subroutine box_parallelepiped_shape_get_surface_point_info (this, point_coordinates, mesh_spacing, normal_vector, surface_element)
 
subroutine box_parallelepiped_write_info (this, iunit, namespace)
 
character(len=box_info_len) function box_parallelepiped_short_info (this, unit_length)
 

Function/Subroutine Documentation

◆ box_parallelepiped_constructor()

class(box_parallelepiped_t) function, pointer box_parallelepiped_oct_m::box_parallelepiped_constructor ( integer, intent(in)  dim,
real(real64), dimension(dim), intent(in)  center,
real(real64), dimension(dim, dim), intent(in)  axes,
real(real64), dimension(dim), intent(in)  length,
type(namespace_t), intent(in)  namespace,
integer, intent(in), optional  n_periodic_boundaries 
)
private
Parameters
[in]axesthe A matrix from Chelikowski PRB 78 075109 (2008)
[in]lengthlength of the parallelepiped along each basis vector
[in]n_periodic_boundariesin how many directions the parallelepiped boundaries are periodic

Definition at line 157 of file box_parallelepiped.F90.

◆ box_parallelepiped_regenerate()

subroutine box_parallelepiped_oct_m::box_parallelepiped_regenerate ( class(box_parallelepiped_t), intent(inout)  box,
integer, intent(in)  dim,
real(real64), dimension(dim, dim), intent(in)  axes,
real(real64), dimension(dim), intent(in)  length,
type(namespace_t), intent(in)  namespace 
)
private
Parameters
[in]axesthe A matrix from Chelikowski PRB 78 075109 (2008)
[in]lengthlength of the parallelepiped along each basis vector

Definition at line 186 of file box_parallelepiped.F90.

◆ box_parallelepiped_finalize()

subroutine box_parallelepiped_oct_m::box_parallelepiped_finalize ( type(box_parallelepiped_t), intent(inout)  this)
private

Definition at line 212 of file box_parallelepiped.F90.

◆ box_parallelepiped_shape_contains_points()

logical function, dimension(1:nn) box_parallelepiped_oct_m::box_parallelepiped_shape_contains_points ( class(box_parallelepiped_t), intent(in)  this,
integer, intent(in)  nn,
real(real64), dimension(:,:), intent(in), contiguous  xx 
)
private

Definition at line 224 of file box_parallelepiped.F90.

◆ box_parallelepiped_shape_get_surface_points()

logical function, dimension(1:nn) box_parallelepiped_oct_m::box_parallelepiped_shape_get_surface_points ( class(box_parallelepiped_t), intent(in)  this,
type(namespace_t), intent(in)  namespace,
real(real64), dimension(:), intent(in)  mesh_spacing,
integer, intent(in)  nn,
real(real64), dimension(:,:), intent(in)  xx,
integer, intent(in), optional  number_of_layers 
)
private

Get a mask for the grid points telling which of them are surface points.

  1. Create a box that is fractionally smaller than the original.
  2. Look for points that belong to the original box but not to the smaller one - These define surface points

Definition at line 260 of file box_parallelepiped.F90.

◆ box_parallelepiped_shape_get_surface_point_info()

subroutine box_parallelepiped_oct_m::box_parallelepiped_shape_get_surface_point_info ( class(box_parallelepiped_t), intent(in)  this,
real(real64), dimension(:), intent(in)  point_coordinates,
real(real64), dimension(:), intent(in)  mesh_spacing,
real(real64), dimension(:), intent(out)  normal_vector,
real(real64), intent(out)  surface_element 
)
private
Parameters
[in]point_coordinates(x,y,z) coordinates of the point
[in]mesh_spacingspacing of the mesh
[out]normal_vectornormal vector to the surface point
[out]surface_elementsurface element (needed to compute the surface integral)

Definition at line 303 of file box_parallelepiped.F90.

◆ box_parallelepiped_write_info()

subroutine box_parallelepiped_oct_m::box_parallelepiped_write_info ( class(box_parallelepiped_t), intent(in)  this,
integer, intent(in), optional  iunit,
type(namespace_t), intent(in), optional  namespace 
)
private

Definition at line 363 of file box_parallelepiped.F90.

◆ box_parallelepiped_short_info()

character(len=box_info_len) function box_parallelepiped_oct_m::box_parallelepiped_short_info ( class(box_parallelepiped_t), intent(in)  this,
type(unit_t), intent(in)  unit_length 
)
private

Definition at line 382 of file box_parallelepiped.F90.