25#ifndef __PAW_FIELD4D_HPP__
26#define __PAW_FIELD4D_HPP__
28#include "function3d/spheric_function_set.hpp"
62 for (
int j = 0; j < uc__.parameters().num_mag_dims() + 1; j++) {
64 uc__.paw_atoms(), [&uc__](
int ia){return lmax_t(2 * uc__.atom(ia).type().indexr().lmax());}, ptr);
66 uc__.paw_atoms(), [&uc__](
int ia){return lmax_t(2 * uc__.atom(ia).type().indexr().lmax());}, ptr);
80 for (
int j = 0; j <
uc_.parameters().num_mag_dims() + 1; j++) {
88 for (
int j = 0; j <
uc_.parameters().num_mag_dims() + 1; j++) {
94 auto& ae_component(
int i__)
99 auto const& ae_component(
int i__)
const
104 auto& ps_component(
int i__)
109 auto const& ps_component(
int i__)
const
114 auto const& unit_cell()
const
119 template <
typename T_>
121 inner(PAW_field4D<T_>
const& x__, PAW_field4D<T_>
const& y__);
126inner(PAW_field4D<T>
const& x__, PAW_field4D<T>
const& y__)
129 for (
int j = 0; j < x__.uc_.parameters().num_mag_dims() + 1; j++) {
130 result +=
inner(x__.ae_components_[j], y__.ae_components_[j]);
131 result +=
inner(x__.ps_components_[j], y__.ps_components_[j]);
PAW density and potential storage.
std::array< Spheric_function_set< T, paw_atom_index_t >, 4 > ae_components_
All-electron part.
std::array< Spheric_function_set< T, paw_atom_index_t >, 4 > ps_components_
Pseudo-potential part.
std::string label_
Text label of the field.
Unit_cell const & uc_
Unit cell.
PAW_field4D(std::string label__, Unit_cell const &uc__, bool is_global__)
Constructor.
Representation of a unit cell.
int num_paw_atoms() const
Return number of atoms with PAW pseudopotential.
auto const & spl_num_paw_atoms() const
Get split index of PAW atoms.
std::enable_if_t< std::is_same< T, real_type< F > >::value, void > inner(::spla::Context &spla_ctx__, sddk::memory_t mem__, spin_range spins__, W const &wf_i__, band_range br_i__, Wave_functions< T > const &wf_j__, band_range br_j__, la::dmatrix< F > &result__, int irow0__, int jcol0__)
Compute inner product between the two sets of wave-functions.
Namespace of the SIRIUS library.