31 PROFILE(
"sirius::Potential::generate_pw_coefs");
35 int gv_count = ctx_.
gvec_fft().count();
37 auto& fft = ctx_.spfft<
double>();
43 case relativity_t::iora: {
44 fft::spfft_input<double>(fft, [&](
int ir) ->
double
46 double M = 1 - sq_alpha_half * effective_potential().rg().value(ir);
47 return ctx_.
theta(ir) / std::pow(M, 2);
49 fft.forward(SPFFT_PU_HOST,
reinterpret_cast<double*
>(&fpw_fft[0]), SPFFT_FULL_SCALING);
52 case relativity_t::zora: {
53 fft::spfft_input<double>(fft, [&](
int ir)
55 double M = 1 - sq_alpha_half * effective_potential().rg().value(ir);
56 return ctx_.
theta(ir) / M;
58 fft.forward(SPFFT_PU_HOST,
reinterpret_cast<double*
>(&fpw_fft[0]), SPFFT_FULL_SCALING);
62 fft::spfft_input<double>(fft, [&](
int ir)
64 return effective_potential().rg().value(ir) * ctx_.
theta(ir);
66 fft.forward(SPFFT_PU_HOST,
reinterpret_cast<double*
>(&fpw_fft[0]), SPFFT_FULL_SCALING);
72 if (!ctx_.cfg().control().use_second_variation()) {
73 throw std::runtime_error(
"not implemented");
sddk::mdarray< std::complex< double >, 1 > rm_inv_pw_
Plane-wave coefficients of the inverse relativistic mass weighted by the unit step-function.
sddk::mdarray< std::complex< double >, 1 > rm2_inv_pw_
Plane-wave coefficients of the squared inverse relativistic mass weighted by the unit step-function.
sddk::mdarray< std::complex< double >, 1 > veff_pw_
Plane-wave coefficients of the effective potential weighted by the unit step-function.
void generate_pw_coefs()
Generate plane-wave coefficients of the potential in the interstitial region.
auto const & gvec_fft() const
Return const reference to Gvec_fft object.
double theta(int ir__) const
Return the value of the step function for the grid point ir.
void valence_relativity(std::string name__)
Set valence relativity for the LAPW method.
Multidimensional array with the column-major (Fortran) order.
Namespace of the SIRIUS library.
const double speed_of_light
NIST value for the inverse fine structure (http://physics.nist.gov/cuu/Constants/index....
Contains declaration and partial implementation of sirius::Potential class.