![]() |
Octopus
|
Data Types | |
| type | symmetrizer_t |
Functions/Subroutines | |
| subroutine, public | symmetrizer_init (this, mesh, symm) |
| subroutine, public | symmetrizer_build_map_buffer (this, mesh) |
| Build the symmetrization map on GPU. More... | |
| subroutine, public | symmetrizer_end (this) |
| subroutine, public | symmetrize_lattice_vectors (this, size, initial_rlattice, rlattice, symmetrize) |
| Given a symmetric lattice vector, symmetrize another one. More... | |
| subroutine, public | dsymmetrizer_apply (this, mesh, field, field_vector, symmfield, symmfield_vector, suppress_warning, reduced_quantity) |
| supply field and symmfield, and/or field_vector and symmfield_vector More... | |
| subroutine, public | dsymmetrize_tensor_cart (symm, tensor, use_non_symmorphic) |
| Symmetric a rank-2 tensor defined in Cartesian space. More... | |
| subroutine, public | dsymmetrize_magneto_optics_cart (symm, tensor) |
| subroutine, public | zsymmetrizer_apply (this, mesh, field, field_vector, symmfield, symmfield_vector, suppress_warning, reduced_quantity) |
| supply field and symmfield, and/or field_vector and symmfield_vector More... | |
| subroutine, public | zsymmetrize_tensor_cart (symm, tensor, use_non_symmorphic) |
| Symmetric a rank-2 tensor defined in Cartesian space. More... | |
| subroutine, public | zsymmetrize_magneto_optics_cart (symm, tensor) |
| subroutine, public | dsymmetrizer_apply_single (this, mesh, iop, field, symmfield) |
| The same as for symmetrizer_apply, but a single symmetry operation. More... | |
| subroutine, public | dsymmetrizer_apply_batch (this, mesh, iop, src, dst) |
| Symmetrize a whole batch, returning another batch with the same layout. More... | |
| subroutine, public | zsymmetrizer_apply_single (this, mesh, iop, field, symmfield) |
| The same as for symmetrizer_apply, but a single symmetry operation. More... | |
| subroutine, public | zsymmetrizer_apply_batch (this, mesh, iop, src, dst) |
| Symmetrize a whole batch, returning another batch with the same layout. More... | |
| subroutine | ssymmetrizer_apply_single (this, mesh, iop, field, symmfield) |
| The same as for symmetrizer_apply, but a single symmetry operation. More... | |
| subroutine, public | ssymmetrizer_apply_batch (this, mesh, iop, src, dst) |
| Symmetrize a whole batch, returning another batch with the same layout. More... | |
| subroutine | csymmetrizer_apply_single (this, mesh, iop, field, symmfield) |
| The same as for symmetrizer_apply, but a single symmetry operation. More... | |
| subroutine, public | csymmetrizer_apply_batch (this, mesh, iop, src, dst) |
| Symmetrize a whole batch, returning another batch with the same layout. More... | |
| subroutine, public symmetrizer_oct_m::symmetrizer_init | ( | type(symmetrizer_t), intent(out) | this, |
| class(mesh_t), intent(in) | mesh, | ||
| type(symmetries_t), intent(in), target | symm | ||
| ) |
Definition at line 170 of file symmetrizer.F90.
| subroutine, public symmetrizer_oct_m::symmetrizer_build_map_buffer | ( | type(symmetrizer_t), intent(inout) | this, |
| class(mesh_t), intent(in) | mesh | ||
| ) |
Build the symmetrization map on GPU.
Definition at line 256 of file symmetrizer.F90.
| subroutine, public symmetrizer_oct_m::symmetrizer_end | ( | type(symmetrizer_t), intent(inout) | this | ) |
Definition at line 286 of file symmetrizer.F90.
| subroutine, public symmetrizer_oct_m::symmetrize_lattice_vectors | ( | class(symmetrizer_t), intent(in) | this, |
| integer, intent(in) | size, | ||
| real(real64), dimension(size,size), intent(in) | initial_rlattice, | ||
| real(real64), dimension(size,size), intent(inout) | rlattice, | ||
| logical, intent(in) | symmetrize | ||
| ) |
Given a symmetric lattice vector, symmetrize another one.
This is done by symmetrizing the strain tensor This is partly inspired by the routine strainsym from Abinit To be more precise, we work with the right stretch tensor, which is identity plus strain
Definition at line 308 of file symmetrizer.F90.
| subroutine, public symmetrizer_oct_m::dsymmetrizer_apply | ( | type(symmetrizer_t), intent(in) | this, |
| class(mesh_t), intent(in) | mesh, | ||
| real(real64), dimension(:), intent(in), optional, target | field, | ||
| real(real64), dimension(:, :), intent(in), optional, target | field_vector, | ||
| real(real64), dimension(:), intent(out), optional | symmfield, | ||
| real(real64), dimension(:, :), intent(out), optional | symmfield_vector, | ||
| logical, intent(in), optional | suppress_warning, | ||
| logical, intent(in), optional | reduced_quantity | ||
| ) |
supply field and symmfield, and/or field_vector and symmfield_vector
| [in] | field | (np) |
| [in] | field_vector | (np, 3) |
| [out] | symmfield | (np) |
| [out] | symmfield_vector | (np, 3) |
| [in] | suppress_warning | use to avoid output of discrepancy, for forces, where this routine is not used to symmetrize something already supposed to be symmetric, but rather to construct the quantity properly from reduced k-points |
Definition at line 425 of file symmetrizer.F90.
| subroutine, public symmetrizer_oct_m::dsymmetrize_tensor_cart | ( | type(symmetries_t), intent(in) | symm, |
| real(real64), dimension(:,:), intent(inout) | tensor, | ||
| logical, intent(in), optional | use_non_symmorphic | ||
| ) |
Symmetric a rank-2 tensor defined in Cartesian space.
If use_non_symmorphic is set to true, the non-symmorphic operators are also used for the symmetrization
The operation is T = S * T * S^T, where T is a vector invariant by the symmetry operation S
| [in,out] | tensor | (3, 3) |
Definition at line 613 of file symmetrizer.F90.
| subroutine, public symmetrizer_oct_m::dsymmetrize_magneto_optics_cart | ( | type(symmetries_t), intent(in) | symm, |
| real(real64), dimension(:,:,:), intent(inout) | tensor | ||
| ) |
| [in,out] | tensor | (3, 3, 3) |
Definition at line 656 of file symmetrizer.F90.
| subroutine, public symmetrizer_oct_m::zsymmetrizer_apply | ( | type(symmetrizer_t), intent(in) | this, |
| class(mesh_t), intent(in) | mesh, | ||
| complex(real64), dimension(:), intent(in), optional, target | field, | ||
| complex(real64), dimension(:, :), intent(in), optional, target | field_vector, | ||
| complex(real64), dimension(:), intent(out), optional | symmfield, | ||
| complex(real64), dimension(:, :), intent(out), optional | symmfield_vector, | ||
| logical, intent(in), optional | suppress_warning, | ||
| logical, intent(in), optional | reduced_quantity | ||
| ) |
supply field and symmfield, and/or field_vector and symmfield_vector
| [in] | field | (np) |
| [in] | field_vector | (np, 3) |
| [out] | symmfield | (np) |
| [out] | symmfield_vector | (np, 3) |
| [in] | suppress_warning | use to avoid output of discrepancy, for forces, where this routine is not used to symmetrize something already supposed to be symmetric, but rather to construct the quantity properly from reduced k-points |
Definition at line 773 of file symmetrizer.F90.
| subroutine, public symmetrizer_oct_m::zsymmetrize_tensor_cart | ( | type(symmetries_t), intent(in) | symm, |
| complex(real64), dimension(:,:), intent(inout) | tensor, | ||
| logical, intent(in), optional | use_non_symmorphic | ||
| ) |
Symmetric a rank-2 tensor defined in Cartesian space.
If use_non_symmorphic is set to true, the non-symmorphic operators are also used for the symmetrization
The operation is T = S * T * S^T, where T is a vector invariant by the symmetry operation S
| [in,out] | tensor | (3, 3) |
Definition at line 961 of file symmetrizer.F90.
| subroutine, public symmetrizer_oct_m::zsymmetrize_magneto_optics_cart | ( | type(symmetries_t), intent(in) | symm, |
| complex(real64), dimension(:,:,:), intent(inout) | tensor | ||
| ) |
| [in,out] | tensor | (3, 3, 3) |
Definition at line 1004 of file symmetrizer.F90.
| subroutine, public symmetrizer_oct_m::dsymmetrizer_apply_single | ( | type(symmetrizer_t), intent(in) | this, |
| class(mesh_t), intent(in) | mesh, | ||
| integer, intent(in) | iop, | ||
| real(real64), dimension(:), intent(in), target | field, | ||
| real(real64), dimension(:), intent(out) | symmfield | ||
| ) |
The same as for symmetrizer_apply, but a single symmetry operation.
| [in] | field | (np) |
| [out] | symmfield | (np) |
Definition at line 1129 of file symmetrizer.F90.
| subroutine, public symmetrizer_oct_m::dsymmetrizer_apply_batch | ( | type(symmetrizer_t), intent(in) | this, |
| class(mesh_t), intent(in) | mesh, | ||
| integer, intent(in) | iop, | ||
| class(batch_t), intent(in) | src, | ||
| class(batch_t), intent(inout) | dst | ||
| ) |
Symmetrize a whole batch, returning another batch with the same layout.
Applies symmetry operation iop to every state of src and stores the result in dst (which must be pre-allocated with the same layout as src). Branches on the batch status: the device path runs the batched kernel, the host path symmetrizes each state (and spin component) via dsymmetrizer_apply_single.
Definition at line 1180 of file symmetrizer.F90.
| subroutine, public symmetrizer_oct_m::zsymmetrizer_apply_single | ( | type(symmetrizer_t), intent(in) | this, |
| class(mesh_t), intent(in) | mesh, | ||
| integer, intent(in) | iop, | ||
| complex(real64), dimension(:), intent(in), target | field, | ||
| complex(real64), dimension(:), intent(out) | symmfield | ||
| ) |
The same as for symmetrizer_apply, but a single symmetry operation.
| [in] | field | (np) |
| [out] | symmfield | (np) |
Definition at line 1326 of file symmetrizer.F90.
| subroutine, public symmetrizer_oct_m::zsymmetrizer_apply_batch | ( | type(symmetrizer_t), intent(in) | this, |
| class(mesh_t), intent(in) | mesh, | ||
| integer, intent(in) | iop, | ||
| class(batch_t), intent(in) | src, | ||
| class(batch_t), intent(inout) | dst | ||
| ) |
Symmetrize a whole batch, returning another batch with the same layout.
Applies symmetry operation iop to every state of src and stores the result in dst (which must be pre-allocated with the same layout as src). Branches on the batch status: the device path runs the batched kernel, the host path symmetrizes each state (and spin component) via zsymmetrizer_apply_single.
Definition at line 1377 of file symmetrizer.F90.
|
private |
The same as for symmetrizer_apply, but a single symmetry operation.
| [in] | field | (np) |
| [out] | symmfield | (np) |
Definition at line 1527 of file symmetrizer.F90.
| subroutine, public symmetrizer_oct_m::ssymmetrizer_apply_batch | ( | type(symmetrizer_t), intent(in) | this, |
| class(mesh_t), intent(in) | mesh, | ||
| integer, intent(in) | iop, | ||
| class(batch_t), intent(in) | src, | ||
| class(batch_t), intent(inout) | dst | ||
| ) |
Symmetrize a whole batch, returning another batch with the same layout.
Applies symmetry operation iop to every state of src and stores the result in dst (which must be pre-allocated with the same layout as src). Branches on the batch status: the device path runs the batched kernel, the host path symmetrizes each state (and spin component) via ssymmetrizer_apply_single.
Definition at line 1578 of file symmetrizer.F90.
|
private |
The same as for symmetrizer_apply, but a single symmetry operation.
| [in] | field | (np) |
| [out] | symmfield | (np) |
Definition at line 1728 of file symmetrizer.F90.
| subroutine, public symmetrizer_oct_m::csymmetrizer_apply_batch | ( | type(symmetrizer_t), intent(in) | this, |
| class(mesh_t), intent(in) | mesh, | ||
| integer, intent(in) | iop, | ||
| class(batch_t), intent(in) | src, | ||
| class(batch_t), intent(inout) | dst | ||
| ) |
Symmetrize a whole batch, returning another batch with the same layout.
Applies symmetry operation iop to every state of src and stores the result in dst (which must be pre-allocated with the same layout as src). Branches on the batch status: the device path runs the batched kernel, the host path symmetrizes each state (and spin component) via csymmetrizer_apply_single.
Definition at line 1779 of file symmetrizer.F90.