Octopus
sternheimer_oct_m Module Reference

Data Types

type  sternheimer_t
 

Functions/Subroutines

subroutine, public sternheimer_init (this, namespace, space, gr, st, hm, xc, mc, wfs_are_cplx, set_ham_var, set_occ_response, set_last_occ_response, occ_response_by_sternheimer)
 
subroutine, public sternheimer_end (this)
 
subroutine sternheimer_build_fxc (this, namespace, mesh, st, xc)
 
subroutine, public sternheimer_build_kxc (this, namespace, mesh, st, xc)
 
subroutine, public sternheimer_unset_kxc (this)
 
logical function, public sternheimer_add_fxc (this)
 
logical function, public sternheimer_add_hartree (this)
 
logical function, public sternheimer_has_converged (this)
 
logical pure function, public sternheimer_have_rhs (this)
 
subroutine, public sternheimer_unset_rhs (this)
 
logical pure function, public sternheimer_have_inhomog (this)
 
subroutine, public sternheimer_unset_inhomog (this)
 
integer pure function, public swap_sigma (sigma)
 
character(len=100) function, public wfs_tag_sigma (namespace, base_name, isigma)
 
subroutine, public sternheimer_obsolete_variables (namespace, old_prefix, new_prefix)
 
subroutine calc_hvar_photons (this, mesh, nspin, lr_rho, nsigma, hvar, idir)
 
subroutine, public zsternheimer_solve (this, namespace, space, gr, kpoints, st, hm, mc, lr, nsigma, omega, perturbation, restart, rho_tag, wfs_tag, idir, have_restart_rho, have_exact_freq)
 This routine calculates the first-order variations of the wavefunctions for an applied perturbation. More...
 
subroutine zsternheimer_add_occ (namespace, mesh, st, lr_psi, rhs, sst, est, ik, omega_sigma, degen_thres)
 add projection onto occupied states, by sum over states More...
 
subroutine, public zsternheimer_calc_hvar (this, namespace, mesh, hm, lr, nsigma, hvar, idir)
 
subroutine, public zcalc_hvar (namespace, add_hartree, mesh, hm, lrc_alpha, lr_rho, nsigma, hvar, fxc)
 
subroutine, public zcalc_kvar (this, mesh, st, lr_rho1, lr_rho2, nsigma, kvar)
 
subroutine, public zsternheimer_set_rhs (this, rhs)
 
subroutine, public zsternheimer_set_inhomog (this, inhomog)
 
subroutine, public zsternheimer_solve_order2 (sh1, sh2, sh_2ndorder, namespace, space, gr, kpoints, st, hm, mc, lr1, lr2, nsigma, omega1, omega2, pert1, pert2, lr_2ndorder, pert_2ndorder, restart, rho_tag, wfs_tag, have_restart_rho, have_exact_freq, give_pert1psi2, give_dl_eig1)
 
subroutine, public dsternheimer_solve (this, namespace, space, gr, kpoints, st, hm, mc, lr, nsigma, omega, perturbation, restart, rho_tag, wfs_tag, idir, have_restart_rho, have_exact_freq)
 This routine calculates the first-order variations of the wavefunctions for an applied perturbation. More...
 
subroutine dsternheimer_add_occ (namespace, mesh, st, lr_psi, rhs, sst, est, ik, omega_sigma, degen_thres)
 add projection onto occupied states, by sum over states More...
 
subroutine, public dsternheimer_calc_hvar (this, namespace, mesh, hm, lr, nsigma, hvar, idir)
 
subroutine, public dcalc_hvar (namespace, add_hartree, mesh, hm, lrc_alpha, lr_rho, nsigma, hvar, fxc)
 
subroutine, public dcalc_kvar (this, mesh, st, lr_rho1, lr_rho2, nsigma, kvar)
 
subroutine, public dsternheimer_set_rhs (this, rhs)
 
subroutine, public dsternheimer_set_inhomog (this, inhomog)
 
subroutine, public dsternheimer_solve_order2 (sh1, sh2, sh_2ndorder, namespace, space, gr, kpoints, st, hm, mc, lr1, lr2, nsigma, omega1, omega2, pert1, pert2, lr_2ndorder, pert_2ndorder, restart, rho_tag, wfs_tag, have_restart_rho, have_exact_freq, give_pert1psi2, give_dl_eig1)
 

Variables

character(len= *), parameter, public em_resp_photons_dir = "em_resp_photons/"
 

Function/Subroutine Documentation

◆ sternheimer_init()

subroutine, public sternheimer_oct_m::sternheimer_init ( type(sternheimer_t), intent(out)  this,
type(namespace_t), intent(in)  namespace,
class(space_t), intent(in)  space,
type(grid_t), intent(inout)  gr,
type(states_elec_t), intent(in)  st,
type(hamiltonian_elec_t), intent(in)  hm,
type(xc_t), intent(in)  xc,
type(multicomm_t), intent(in)  mc,
logical, intent(in)  wfs_are_cplx,
integer, intent(in), optional  set_ham_var,
logical, intent(in), optional  set_occ_response,
logical, intent(in), optional  set_last_occ_response,
logical, intent(in), optional  occ_response_by_sternheimer 
)

Definition at line 225 of file sternheimer.F90.

◆ sternheimer_end()

subroutine, public sternheimer_oct_m::sternheimer_end ( type(sternheimer_t), intent(inout)  this)

Definition at line 398 of file sternheimer.F90.

◆ sternheimer_build_fxc()

subroutine sternheimer_oct_m::sternheimer_build_fxc ( type(sternheimer_t), intent(inout)  this,
type(namespace_t), intent(in)  namespace,
class(mesh_t), intent(in)  mesh,
type(states_elec_t), intent(in)  st,
type(xc_t), intent(in)  xc 
)
private

Definition at line 416 of file sternheimer.F90.

◆ sternheimer_build_kxc()

subroutine, public sternheimer_oct_m::sternheimer_build_kxc ( type(sternheimer_t), intent(inout)  this,
type(namespace_t), intent(in)  namespace,
class(mesh_t), intent(in)  mesh,
type(states_elec_t), intent(in)  st,
type(xc_t), intent(in)  xc 
)

Definition at line 441 of file sternheimer.F90.

◆ sternheimer_unset_kxc()

subroutine, public sternheimer_oct_m::sternheimer_unset_kxc ( type(sternheimer_t), intent(inout)  this)

Definition at line 467 of file sternheimer.F90.

◆ sternheimer_add_fxc()

logical function, public sternheimer_oct_m::sternheimer_add_fxc ( type(sternheimer_t), intent(in)  this)

Definition at line 478 of file sternheimer.F90.

◆ sternheimer_add_hartree()

logical function, public sternheimer_oct_m::sternheimer_add_hartree ( type(sternheimer_t), intent(in)  this)

Definition at line 485 of file sternheimer.F90.

◆ sternheimer_has_converged()

logical function, public sternheimer_oct_m::sternheimer_has_converged ( type(sternheimer_t), intent(in)  this)

Definition at line 492 of file sternheimer.F90.

◆ sternheimer_have_rhs()

logical pure function, public sternheimer_oct_m::sternheimer_have_rhs ( type(sternheimer_t), intent(in)  this)

Definition at line 498 of file sternheimer.F90.

◆ sternheimer_unset_rhs()

subroutine, public sternheimer_oct_m::sternheimer_unset_rhs ( type(sternheimer_t), intent(inout)  this)

Definition at line 504 of file sternheimer.F90.

◆ sternheimer_have_inhomog()

logical pure function, public sternheimer_oct_m::sternheimer_have_inhomog ( type(sternheimer_t), intent(in)  this)

Definition at line 516 of file sternheimer.F90.

◆ sternheimer_unset_inhomog()

subroutine, public sternheimer_oct_m::sternheimer_unset_inhomog ( type(sternheimer_t), intent(inout)  this)

Definition at line 522 of file sternheimer.F90.

◆ swap_sigma()

integer pure function, public sternheimer_oct_m::swap_sigma ( integer, intent(in)  sigma)

Definition at line 534 of file sternheimer.F90.

◆ wfs_tag_sigma()

character(len=100) function, public sternheimer_oct_m::wfs_tag_sigma ( type(namespace_t), intent(in)  namespace,
character(len=*), intent(in)  base_name,
integer, intent(in)  isigma 
)

Definition at line 546 of file sternheimer.F90.

◆ sternheimer_obsolete_variables()

subroutine, public sternheimer_oct_m::sternheimer_obsolete_variables ( type(namespace_t), intent(in)  namespace,
character(len=*), intent(in)  old_prefix,
character(len=*), intent(in)  new_prefix 
)

Definition at line 573 of file sternheimer.F90.

◆ calc_hvar_photons()

subroutine sternheimer_oct_m::calc_hvar_photons ( type(sternheimer_t), intent(inout)  this,
class(mesh_t), intent(in)  mesh,
integer, intent(in)  nspin,
complex(real64), dimension(:,:), intent(in)  lr_rho,
integer, intent(in)  nsigma,
complex(real64), dimension(:,:,:), intent(inout)  hvar,
integer, intent(in), optional  idir 
)
private
Parameters
[in,out]hvar(1:meshnp, 1:stdnspin, 1:nsigma)

Definition at line 590 of file sternheimer.F90.

◆ zsternheimer_solve()

subroutine, public sternheimer_oct_m::zsternheimer_solve ( type(sternheimer_t), intent(inout)  this,
type(namespace_t), intent(in)  namespace,
class(space_t), intent(in)  space,
type(grid_t), intent(in), target  gr,
type(kpoints_t), intent(in)  kpoints,
type(states_elec_t), intent(in)  st,
type(hamiltonian_elec_t), intent(in)  hm,
type(multicomm_t), intent(in)  mc,
type(lr_t), dimension(:), intent(inout)  lr,
integer, intent(in)  nsigma,
complex(real64), intent(in)  omega,
class(perturbation_t), intent(in)  perturbation,
type(restart_t), intent(inout)  restart,
character(len=*), intent(in)  rho_tag,
character(len=*), intent(in)  wfs_tag,
integer, intent(in), optional  idir,
logical, intent(in), optional  have_restart_rho,
logical, intent(in), optional  have_exact_freq 
)

This routine calculates the first-order variations of the wavefunctions for an applied perturbation.

Definition at line 702 of file sternheimer.F90.

◆ zsternheimer_add_occ()

subroutine sternheimer_oct_m::zsternheimer_add_occ ( type(namespace_t), intent(in)  namespace,
class(mesh_t), intent(in)  mesh,
type(states_elec_t), intent(in)  st,
complex(real64), dimension(:,:,:), intent(inout)  lr_psi,
complex(real64), dimension(:,:,:), intent(in)  rhs,
integer, intent(in)  sst,
integer, intent(in)  est,
integer, intent(in)  ik,
complex(real64), intent(in)  omega_sigma,
real(real64), intent(in)  degen_thres 
)
private

add projection onto occupied states, by sum over states

Parameters
[in]rhs(np, ndim, nst)
[in]sststart state
[in]eststart state

Definition at line 1119 of file sternheimer.F90.

◆ zsternheimer_calc_hvar()

subroutine, public sternheimer_oct_m::zsternheimer_calc_hvar ( type(sternheimer_t), intent(inout)  this,
type(namespace_t), intent(in)  namespace,
class(mesh_t), intent(in)  mesh,
type(hamiltonian_elec_t), intent(in)  hm,
type(lr_t), dimension(:), intent(in)  lr,
integer, intent(in)  nsigma,
complex(real64), dimension(:,:,:), intent(out), contiguous  hvar,
integer, intent(in), optional  idir 
)
Parameters
[out]hvar(1:meshnp, 1:stdnspin, 1:nsigma)

Definition at line 1184 of file sternheimer.F90.

◆ zcalc_hvar()

subroutine, public sternheimer_oct_m::zcalc_hvar ( type(namespace_t), intent(in)  namespace,
logical, intent(in)  add_hartree,
class(mesh_t), intent(in)  mesh,
type(hamiltonian_elec_t), intent(in)  hm,
real(real64), intent(in)  lrc_alpha,
complex(real64), dimension(:,:), intent(in)  lr_rho,
integer, intent(in)  nsigma,
complex(real64), dimension(:,:,:), intent(out), contiguous  hvar,
real(real64), dimension(:,:,:), intent(in), optional  fxc 
)
Parameters
[in]lr_rho(1:meshnp, 1:stdnspin)
[out]hvar(1:meshnp, 1:stdnspin, 1:nsigma)
[in]fxc(1:meshnp, 1:stdnspin, 1:stdnspin)

Definition at line 1215 of file sternheimer.F90.

◆ zcalc_kvar()

subroutine, public sternheimer_oct_m::zcalc_kvar ( type(sternheimer_t), intent(in)  this,
class(mesh_t), intent(in)  mesh,
type(states_elec_t), intent(in)  st,
complex(real64), dimension(:,:), intent(in)  lr_rho1,
complex(real64), dimension(:,:), intent(in)  lr_rho2,
integer, intent(in)  nsigma,
complex(real64), dimension(:,:,:), intent(out)  kvar 
)
Parameters
[in]lr_rho1(1:meshnp, 1:stdnspin)
[in]lr_rho2(1:meshnp, 1:stdnspin)
[out]kvar(1:meshnp, 1:stdnspin, 1:nsigma)

Definition at line 1276 of file sternheimer.F90.

◆ zsternheimer_set_rhs()

subroutine, public sternheimer_oct_m::zsternheimer_set_rhs ( type(sternheimer_t), intent(inout)  this,
complex(real64), dimension(:, :, :, :), intent(in), target  rhs 
)

Definition at line 1308 of file sternheimer.F90.

◆ zsternheimer_set_inhomog()

subroutine, public sternheimer_oct_m::zsternheimer_set_inhomog ( type(sternheimer_t), intent(inout)  this,
complex(real64), dimension(:, :, :, :, :), intent(in), target  inhomog 
)

Definition at line 1320 of file sternheimer.F90.

◆ zsternheimer_solve_order2()

subroutine, public sternheimer_oct_m::zsternheimer_solve_order2 ( type(sternheimer_t), intent(inout)  sh1,
type(sternheimer_t), intent(inout)  sh2,
type(sternheimer_t), intent(inout)  sh_2ndorder,
type(namespace_t), intent(in)  namespace,
class(space_t), intent(in)  space,
type(grid_t), intent(in), target  gr,
type(kpoints_t), intent(in)  kpoints,
type(states_elec_t), intent(in)  st,
type(hamiltonian_elec_t), intent(in)  hm,
type(multicomm_t), intent(in)  mc,
type(lr_t), dimension(:), intent(inout)  lr1,
type(lr_t), dimension(:), intent(inout)  lr2,
integer, intent(in)  nsigma,
complex(real64), intent(in)  omega1,
complex(real64), intent(in)  omega2,
class(perturbation_t), intent(in)  pert1,
class(perturbation_t), intent(in)  pert2,
type(lr_t), dimension(:), intent(inout)  lr_2ndorder,
class(perturbation_t), intent(in)  pert_2ndorder,
type(restart_t), intent(inout)  restart,
character(len=*), intent(in)  rho_tag,
character(len=*), intent(in)  wfs_tag,
logical, intent(in), optional  have_restart_rho,
logical, intent(in), optional  have_exact_freq,
complex(real64), dimension(:,:,:,:), intent(in), optional  give_pert1psi2,
real(real64), dimension(:,:), intent(in), optional  give_dl_eig1 
)
Parameters
[in]give_pert1psi2(np, ndim, ist, ik)
[in]give_dl_eig1(nst, nk) expectation values of bare perturbation

Definition at line 1333 of file sternheimer.F90.

◆ dsternheimer_solve()

subroutine, public sternheimer_oct_m::dsternheimer_solve ( type(sternheimer_t), intent(inout)  this,
type(namespace_t), intent(in)  namespace,
class(space_t), intent(in)  space,
type(grid_t), intent(in), target  gr,
type(kpoints_t), intent(in)  kpoints,
type(states_elec_t), intent(in)  st,
type(hamiltonian_elec_t), intent(in)  hm,
type(multicomm_t), intent(in)  mc,
type(lr_t), dimension(:), intent(inout)  lr,
integer, intent(in)  nsigma,
real(real64), intent(in)  omega,
class(perturbation_t), intent(in)  perturbation,
type(restart_t), intent(inout)  restart,
character(len=*), intent(in)  rho_tag,
character(len=*), intent(in)  wfs_tag,
integer, intent(in), optional  idir,
logical, intent(in), optional  have_restart_rho,
logical, intent(in), optional  have_exact_freq 
)

This routine calculates the first-order variations of the wavefunctions for an applied perturbation.

Definition at line 1556 of file sternheimer.F90.

◆ dsternheimer_add_occ()

subroutine sternheimer_oct_m::dsternheimer_add_occ ( type(namespace_t), intent(in)  namespace,
class(mesh_t), intent(in)  mesh,
type(states_elec_t), intent(in)  st,
real(real64), dimension(:,:,:), intent(inout)  lr_psi,
real(real64), dimension(:,:,:), intent(in)  rhs,
integer, intent(in)  sst,
integer, intent(in)  est,
integer, intent(in)  ik,
real(real64), intent(in)  omega_sigma,
real(real64), intent(in)  degen_thres 
)
private

add projection onto occupied states, by sum over states

Parameters
[in]rhs(np, ndim, nst)
[in]sststart state
[in]eststart state

Definition at line 1973 of file sternheimer.F90.

◆ dsternheimer_calc_hvar()

subroutine, public sternheimer_oct_m::dsternheimer_calc_hvar ( type(sternheimer_t), intent(inout)  this,
type(namespace_t), intent(in)  namespace,
class(mesh_t), intent(in)  mesh,
type(hamiltonian_elec_t), intent(in)  hm,
type(lr_t), dimension(:), intent(in)  lr,
integer, intent(in)  nsigma,
real(real64), dimension(:,:,:), intent(out), contiguous  hvar,
integer, intent(in), optional  idir 
)
Parameters
[out]hvar(1:meshnp, 1:stdnspin, 1:nsigma)

Definition at line 2038 of file sternheimer.F90.

◆ dcalc_hvar()

subroutine, public sternheimer_oct_m::dcalc_hvar ( type(namespace_t), intent(in)  namespace,
logical, intent(in)  add_hartree,
class(mesh_t), intent(in)  mesh,
type(hamiltonian_elec_t), intent(in)  hm,
real(real64), intent(in)  lrc_alpha,
real(real64), dimension(:,:), intent(in)  lr_rho,
integer, intent(in)  nsigma,
real(real64), dimension(:,:,:), intent(out), contiguous  hvar,
real(real64), dimension(:,:,:), intent(in), optional  fxc 
)
Parameters
[in]lr_rho(1:meshnp, 1:stdnspin)
[out]hvar(1:meshnp, 1:stdnspin, 1:nsigma)
[in]fxc(1:meshnp, 1:stdnspin, 1:stdnspin)

Definition at line 2069 of file sternheimer.F90.

◆ dcalc_kvar()

subroutine, public sternheimer_oct_m::dcalc_kvar ( type(sternheimer_t), intent(in)  this,
class(mesh_t), intent(in)  mesh,
type(states_elec_t), intent(in)  st,
real(real64), dimension(:,:), intent(in)  lr_rho1,
real(real64), dimension(:,:), intent(in)  lr_rho2,
integer, intent(in)  nsigma,
real(real64), dimension(:,:,:), intent(out)  kvar 
)
Parameters
[in]lr_rho1(1:meshnp, 1:stdnspin)
[in]lr_rho2(1:meshnp, 1:stdnspin)
[out]kvar(1:meshnp, 1:stdnspin, 1:nsigma)

Definition at line 2130 of file sternheimer.F90.

◆ dsternheimer_set_rhs()

subroutine, public sternheimer_oct_m::dsternheimer_set_rhs ( type(sternheimer_t), intent(inout)  this,
real(real64), dimension(:, :, :, :), intent(in), target  rhs 
)

Definition at line 2162 of file sternheimer.F90.

◆ dsternheimer_set_inhomog()

subroutine, public sternheimer_oct_m::dsternheimer_set_inhomog ( type(sternheimer_t), intent(inout)  this,
real(real64), dimension(:, :, :, :, :), intent(in), target  inhomog 
)

Definition at line 2174 of file sternheimer.F90.

◆ dsternheimer_solve_order2()

subroutine, public sternheimer_oct_m::dsternheimer_solve_order2 ( type(sternheimer_t), intent(inout)  sh1,
type(sternheimer_t), intent(inout)  sh2,
type(sternheimer_t), intent(inout)  sh_2ndorder,
type(namespace_t), intent(in)  namespace,
class(space_t), intent(in)  space,
type(grid_t), intent(in), target  gr,
type(kpoints_t), intent(in)  kpoints,
type(states_elec_t), intent(in)  st,
type(hamiltonian_elec_t), intent(in)  hm,
type(multicomm_t), intent(in)  mc,
type(lr_t), dimension(:), intent(inout)  lr1,
type(lr_t), dimension(:), intent(inout)  lr2,
integer, intent(in)  nsigma,
real(real64), intent(in)  omega1,
real(real64), intent(in)  omega2,
class(perturbation_t), intent(in)  pert1,
class(perturbation_t), intent(in)  pert2,
type(lr_t), dimension(:), intent(inout)  lr_2ndorder,
class(perturbation_t), intent(in)  pert_2ndorder,
type(restart_t), intent(inout)  restart,
character(len=*), intent(in)  rho_tag,
character(len=*), intent(in)  wfs_tag,
logical, intent(in), optional  have_restart_rho,
logical, intent(in), optional  have_exact_freq,
real(real64), dimension(:,:,:,:), intent(in), optional  give_pert1psi2,
real(real64), dimension(:,:), intent(in), optional  give_dl_eig1 
)
Parameters
[in]give_pert1psi2(np, ndim, ist, ik)
[in]give_dl_eig1(nst, nk) expectation values of bare perturbation

Definition at line 2187 of file sternheimer.F90.

Variable Documentation

◆ em_resp_photons_dir

character(len=*), parameter, public sternheimer_oct_m::em_resp_photons_dir = "em_resp_photons/"

Definition at line 191 of file sternheimer.F90.