Octopus
submesh_oct_m Module Reference

Data Types

interface  submesh_add_to_mesh
 
type  submesh_t
 A submesh is a type of mesh, used for the projectors in the pseudopotentials It contains points on a regular mesh confined to a sphere of a given radius. More...
 
interface  submesh_to_mesh_dotp
 

Functions/Subroutines

recursive real(real64) function f_n (dims)
 
subroutine, public submesh_init_box (this, space, mesh, box, center)
 This subroutine creates a submesh which has the same box of the one that the user passes. More...
 
subroutine, public submesh_init (this, space, mesh, latt, center, rc)
 
subroutine submesh_reorder_points (this, space, xtmp, rtmp)
 
subroutine, public submesh_merge (this, space, mesh, sm1, sm2, shift)
 
subroutine, public submesh_shift_center (this, space, newcenter)
 
subroutine, public submesh_broadcast (this, space, mesh, center, radius, root, mpi_grp)
 
logical function, public submesh_compatible (this, radius, center, dx)
 
subroutine, public submesh_end (this)
 
subroutine, public submesh_get_inv (this, map_inv)
 
logical function, public submesh_overlap (sm1, sm2, space)
 
subroutine, public submesh_build_global (this, space)
 
subroutine, public submesh_end_global (this)
 
subroutine zzsubmesh_add_to_mesh (this, sphi, phi, factor)
 
complex(real64) function zzsubmesh_to_mesh_dotp (this, sphi, phi, reduce)
 
subroutine, public submesh_get_cube_dim (sm, space, db)
 finds the dimension of a box containing the submesh More...
 
subroutine, public submesh_init_cube_map (sm, space)
 
subroutine, public submesh_end_cube_map (sm)
 
subroutine, public dzsubmesh_batch_add (this, ss, mm)
 The following function takes a batch of functions defined in submesh (ss) and adds one of them to each of the mesh functions in other batch (mm). Each one is multiplied by a factor given by the array factor. In this version of the routine, the submesh batch is real and the mesh batch is complex. More...
 
real(real64) function, public dsm_integrate (mesh, sm, ff, reduce)
 
real(real64) function, public dsm_integrate_frommesh (mesh, sm, ff, reduce)
 
subroutine ddsubmesh_add_to_mesh (this, sphi, phi, factor)
 
subroutine, public dsubmesh_copy_from_mesh (this, phi, sphi, conjugate)
 
real(real64) function, public dsm_nrm2 (sm, ff, reduce)
 this function returns the the norm of a vector More...
 
real(real64) function ddsubmesh_to_mesh_dotp (this, sphi, phi, reduce)
 
subroutine, public dsubmesh_batch_add_matrix (this, factor, ss, mm)
 The following functions takes a batch of functions defined in submesh (ss) and adds all of them to each of the mesh functions in other batch (mm). Each one is multiplied by a factor given by the array 'factor'. More...
 
subroutine, public dsubmesh_batch_add (this, ss, mm)
 The following function takes a batch of functions defined in submesh (ss) and adds one of them to each of the mesh functions in other batch (mm). Each one is multiplied by a factor given by the array factor. More...
 
subroutine, public dsubmesh_batch_dotp_matrix (this, mm, ss, dot, reduce)
 
complex(real64) function, public zsm_integrate (mesh, sm, ff, reduce)
 
complex(real64) function, public zsm_integrate_frommesh (mesh, sm, ff, reduce)
 
subroutine zdsubmesh_add_to_mesh (this, sphi, phi, factor)
 
subroutine, public zsubmesh_copy_from_mesh (this, phi, sphi, conjugate)
 
real(real64) function, public zsm_nrm2 (sm, ff, reduce)
 this function returns the the norm of a vector More...
 
complex(real64) function zdsubmesh_to_mesh_dotp (this, sphi, phi, reduce)
 
subroutine, public zsubmesh_batch_add_matrix (this, factor, ss, mm)
 The following functions takes a batch of functions defined in submesh (ss) and adds all of them to each of the mesh functions in other batch (mm). Each one is multiplied by a factor given by the array 'factor'. More...
 
subroutine, public zsubmesh_batch_add (this, ss, mm)
 The following function takes a batch of functions defined in submesh (ss) and adds one of them to each of the mesh functions in other batch (mm). Each one is multiplied by a factor given by the array factor. More...
 
subroutine, public zsubmesh_batch_dotp_matrix (this, mm, ss, dot, reduce)
 

Function/Subroutine Documentation

◆ f_n()

recursive real(real64) function submesh_oct_m::f_n ( integer  dims)
private

Definition at line 212 of file submesh.F90.

◆ submesh_init_box()

subroutine, public submesh_oct_m::submesh_init_box ( type(submesh_t), intent(inout)  this,
class(space_t), intent(in)  space,
class(mesh_t), intent(in), target  mesh,
class(box_t), intent(in), target  box,
real(real64), dimension(:), intent(in)  center 
)

This subroutine creates a submesh which has the same box of the one that the user passes.

Parameters
[in]boxSimulation box of the submesh. Must be contained in the box of the mesh!

Definition at line 226 of file submesh.F90.

◆ submesh_init()

subroutine, public submesh_oct_m::submesh_init ( type(submesh_t), intent(inout)  this,
class(space_t), intent(in)  space,
class(mesh_t), intent(in), target  mesh,
type(lattice_vectors_t), intent(in)  latt,
real(real64), dimension(1:space%dim), intent(in)  center,
real(real64), intent(in)  rc 
)

Definition at line 279 of file submesh.F90.

◆ submesh_reorder_points()

subroutine submesh_oct_m::submesh_reorder_points ( type(submesh_t), intent(inout)  this,
class(space_t), intent(in)  space,
real(real64), dimension(:, :), intent(in)  xtmp,
real(real64), dimension(:), intent(in)  rtmp 
)
private

Definition at line 438 of file submesh.F90.

◆ submesh_merge()

subroutine, public submesh_oct_m::submesh_merge ( type(submesh_t), intent(inout)  this,
class(space_t), intent(in)  space,
class(mesh_t), intent(in), target  mesh,
type(submesh_t), intent(in)  sm1,
type(submesh_t), intent(in)  sm2,
real(real64), dimension(:), intent(in), optional  shift 
)
Parameters
[in,out]thisvalgrind objects to intent(out) due to the initializations above
[in]shiftIf present, shifts the center of sm2

Definition at line 564 of file submesh.F90.

◆ submesh_shift_center()

subroutine, public submesh_oct_m::submesh_shift_center ( type(submesh_t), intent(inout)  this,
class(space_t), intent(in)  space,
real(real64), dimension(:), intent(in)  newcenter 
)

Definition at line 630 of file submesh.F90.

◆ submesh_broadcast()

subroutine, public submesh_oct_m::submesh_broadcast ( type(submesh_t), intent(inout)  this,
class(space_t), intent(in)  space,
type(mesh_t), intent(in), target  mesh,
real(real64), dimension(1:space%dim), intent(in)  center,
real(real64), intent(in)  radius,
integer, intent(in)  root,
type(mpi_grp_t), intent(in)  mpi_grp 
)

Definition at line 657 of file submesh.F90.

◆ submesh_compatible()

logical function, public submesh_oct_m::submesh_compatible ( type(submesh_t), intent(in)  this,
real(real64), intent(in)  radius,
real(real64), dimension(:), intent(in)  center,
real(real64), intent(in)  dx 
)

At the moment the center check doesnt matter because everywhere submeshes are recycled at the moment, between uses, the position doesnt change

Definition at line 716 of file submesh.F90.

◆ submesh_end()

subroutine, public submesh_oct_m::submesh_end ( type(submesh_t), intent(inout)  this)

Definition at line 734 of file submesh.F90.

◆ submesh_get_inv()

subroutine, public submesh_oct_m::submesh_get_inv ( type(submesh_t), intent(in)  this,
integer, dimension(:), intent(out)  map_inv 
)

Definition at line 758 of file submesh.F90.

◆ submesh_overlap()

logical function, public submesh_oct_m::submesh_overlap ( type(submesh_t), intent(in)  sm1,
type(submesh_t), intent(in)  sm2,
class(space_t), intent(in)  space 
)

Definition at line 775 of file submesh.F90.

◆ submesh_build_global()

subroutine, public submesh_oct_m::submesh_build_global ( type(submesh_t), intent(inout)  this,
class(space_t), intent(in)  space 
)

Definition at line 818 of file submesh.F90.

◆ submesh_end_global()

subroutine, public submesh_oct_m::submesh_end_global ( type(submesh_t), intent(inout)  this)

Definition at line 869 of file submesh.F90.

◆ zzsubmesh_add_to_mesh()

subroutine submesh_oct_m::zzsubmesh_add_to_mesh ( type(submesh_t), intent(in)  this,
complex(real64), dimension(:), intent(in)  sphi,
complex(real64), dimension(:), intent(inout)  phi,
complex(real64), intent(in), optional  factor 
)
private

Definition at line 884 of file submesh.F90.

◆ zzsubmesh_to_mesh_dotp()

complex(real64) function submesh_oct_m::zzsubmesh_to_mesh_dotp ( type(submesh_t), intent(in)  this,
complex(real64), dimension(:), intent(in)  sphi,
complex(real64), dimension(:), intent(in)  phi,
logical, intent(in), optional  reduce 
)
private

Definition at line 927 of file submesh.F90.

◆ submesh_get_cube_dim()

subroutine, public submesh_oct_m::submesh_get_cube_dim ( type(submesh_t), intent(in), target  sm,
class(space_t), intent(in)  space,
integer, dimension(1:space%dim), intent(out)  db 
)

finds the dimension of a box containing the submesh

Definition at line 970 of file submesh.F90.

◆ submesh_init_cube_map()

subroutine, public submesh_oct_m::submesh_init_cube_map ( type(submesh_t), intent(inout), target  sm,
class(space_t), intent(in)  space 
)

Definition at line 1001 of file submesh.F90.

◆ submesh_end_cube_map()

subroutine, public submesh_oct_m::submesh_end_cube_map ( type(submesh_t), intent(inout)  sm)

Definition at line 1040 of file submesh.F90.

◆ dzsubmesh_batch_add()

subroutine, public submesh_oct_m::dzsubmesh_batch_add ( type(submesh_t), intent(in)  this,
class(batch_t), intent(in)  ss,
class(batch_t), intent(inout)  mm 
)

The following function takes a batch of functions defined in submesh (ss) and adds one of them to each of the mesh functions in other batch (mm). Each one is multiplied by a factor given by the array factor. In this version of the routine, the submesh batch is real and the mesh batch is complex.

Definition at line 1056 of file submesh.F90.

◆ dsm_integrate()

real(real64) function, public submesh_oct_m::dsm_integrate ( class(mesh_t), intent(in)  mesh,
type(submesh_t), intent(in)  sm,
real(real64), dimension(:), intent(in), optional  ff,
logical, intent(in), optional  reduce 
)

Definition at line 1160 of file submesh.F90.

◆ dsm_integrate_frommesh()

real(real64) function, public submesh_oct_m::dsm_integrate_frommesh ( type(mesh_t), intent(in)  mesh,
type(submesh_t), intent(in)  sm,
real(real64), dimension(:), intent(in), optional  ff,
logical, intent(in), optional  reduce 
)

Definition at line 1200 of file submesh.F90.

◆ ddsubmesh_add_to_mesh()

subroutine submesh_oct_m::ddsubmesh_add_to_mesh ( type(submesh_t), intent(in)  this,
real(real64), dimension(:), intent(in)  sphi,
real(real64), dimension(:), intent(inout)  phi,
real(real64), intent(in), optional  factor 
)
private

Definition at line 1233 of file submesh.F90.

◆ dsubmesh_copy_from_mesh()

subroutine, public submesh_oct_m::dsubmesh_copy_from_mesh ( type(submesh_t), intent(in)  this,
real(real64), dimension(:), intent(in)  phi,
real(real64), dimension(:), intent(inout)  sphi,
logical, intent(in), optional  conjugate 
)

Definition at line 1281 of file submesh.F90.

◆ dsm_nrm2()

real(real64) function, public submesh_oct_m::dsm_nrm2 ( type(submesh_t), intent(in)  sm,
real(real64), dimension(:), intent(in)  ff,
logical, intent(in), optional  reduce 
)

this function returns the the norm of a vector

Definition at line 1311 of file submesh.F90.

◆ ddsubmesh_to_mesh_dotp()

real(real64) function submesh_oct_m::ddsubmesh_to_mesh_dotp ( type(submesh_t), intent(in)  this,
real(real64), dimension(:), intent(in)  sphi,
real(real64), dimension(:), intent(in)  phi,
logical, intent(in), optional  reduce 
)
private

Definition at line 1348 of file submesh.F90.

◆ dsubmesh_batch_add_matrix()

subroutine, public submesh_oct_m::dsubmesh_batch_add_matrix ( type(submesh_t), intent(in)  this,
real(real64), dimension(:, :), intent(in)  factor,
class(batch_t), intent(in)  ss,
class(batch_t), intent(inout)  mm 
)

The following functions takes a batch of functions defined in submesh (ss) and adds all of them to each of the mesh functions in other batch (mm). Each one is multiplied by a factor given by the array 'factor'.

Definition at line 1393 of file submesh.F90.

◆ dsubmesh_batch_add()

subroutine, public submesh_oct_m::dsubmesh_batch_add ( type(submesh_t), intent(in)  this,
class(batch_t), intent(in)  ss,
class(batch_t), intent(inout)  mm 
)

The following function takes a batch of functions defined in submesh (ss) and adds one of them to each of the mesh functions in other batch (mm). Each one is multiplied by a factor given by the array factor.

Definition at line 1486 of file submesh.F90.

◆ dsubmesh_batch_dotp_matrix()

subroutine, public submesh_oct_m::dsubmesh_batch_dotp_matrix ( type(submesh_t), intent(in)  this,
class(batch_t), intent(in)  mm,
class(batch_t), intent(in)  ss,
real(real64), dimension(:, :), intent(inout), contiguous  dot,
logical, intent(in), optional  reduce 
)

Definition at line 1538 of file submesh.F90.

◆ zsm_integrate()

complex(real64) function, public submesh_oct_m::zsm_integrate ( class(mesh_t), intent(in)  mesh,
type(submesh_t), intent(in)  sm,
complex(real64), dimension(:), intent(in), optional  ff,
logical, intent(in), optional  reduce 
)

Definition at line 1697 of file submesh.F90.

◆ zsm_integrate_frommesh()

complex(real64) function, public submesh_oct_m::zsm_integrate_frommesh ( type(mesh_t), intent(in)  mesh,
type(submesh_t), intent(in)  sm,
complex(real64), dimension(:), intent(in), optional  ff,
logical, intent(in), optional  reduce 
)

Definition at line 1737 of file submesh.F90.

◆ zdsubmesh_add_to_mesh()

subroutine submesh_oct_m::zdsubmesh_add_to_mesh ( type(submesh_t), intent(in)  this,
real(real64), dimension(:), intent(in)  sphi,
complex(real64), dimension(:), intent(inout)  phi,
complex(real64), intent(in), optional  factor 
)
private

Definition at line 1770 of file submesh.F90.

◆ zsubmesh_copy_from_mesh()

subroutine, public submesh_oct_m::zsubmesh_copy_from_mesh ( type(submesh_t), intent(in)  this,
complex(real64), dimension(:), intent(in)  phi,
complex(real64), dimension(:), intent(inout)  sphi,
logical, intent(in), optional  conjugate 
)

Definition at line 1818 of file submesh.F90.

◆ zsm_nrm2()

real(real64) function, public submesh_oct_m::zsm_nrm2 ( type(submesh_t), intent(in)  sm,
complex(real64), dimension(:), intent(in)  ff,
logical, intent(in), optional  reduce 
)

this function returns the the norm of a vector

Definition at line 1848 of file submesh.F90.

◆ zdsubmesh_to_mesh_dotp()

complex(real64) function submesh_oct_m::zdsubmesh_to_mesh_dotp ( type(submesh_t), intent(in)  this,
real(real64), dimension(:), intent(in)  sphi,
complex(real64), dimension(:), intent(in)  phi,
logical, intent(in), optional  reduce 
)
private

Definition at line 1885 of file submesh.F90.

◆ zsubmesh_batch_add_matrix()

subroutine, public submesh_oct_m::zsubmesh_batch_add_matrix ( type(submesh_t), intent(in)  this,
complex(real64), dimension(:, :), intent(in)  factor,
class(batch_t), intent(in)  ss,
class(batch_t), intent(inout)  mm 
)

The following functions takes a batch of functions defined in submesh (ss) and adds all of them to each of the mesh functions in other batch (mm). Each one is multiplied by a factor given by the array 'factor'.

Definition at line 1930 of file submesh.F90.

◆ zsubmesh_batch_add()

subroutine, public submesh_oct_m::zsubmesh_batch_add ( type(submesh_t), intent(in)  this,
class(batch_t), intent(in)  ss,
class(batch_t), intent(inout)  mm 
)

The following function takes a batch of functions defined in submesh (ss) and adds one of them to each of the mesh functions in other batch (mm). Each one is multiplied by a factor given by the array factor.

Definition at line 2023 of file submesh.F90.

◆ zsubmesh_batch_dotp_matrix()

subroutine, public submesh_oct_m::zsubmesh_batch_dotp_matrix ( type(submesh_t), intent(in)  this,
class(batch_t), intent(in)  mm,
class(batch_t), intent(in)  ss,
complex(real64), dimension(:, :), intent(inout), contiguous  dot,
logical, intent(in), optional  reduce 
)

Definition at line 2075 of file submesh.F90.