32 use,
intrinsic :: iso_fortran_env
74 logical :: coc_translation
75 type(photon_mode_t),
public :: pt
76 type(lr_t) :: photon_lr
77 logical,
public :: rm_ee_interaction
84 type(xc_oep_photon_t),
intent(inout) :: oep
85 type(namespace_t),
intent(in) :: namespace
86 integer,
intent(in) :: family
87 type(grid_t),
intent(inout) :: gr
88 type(states_elec_t),
intent(in) :: st
89 type(multicomm_t),
intent(in) :: mc
90 class(space_t),
intent(in) :: space
94 if(
bitand(family, xc_family_oep) == 0)
then
110 if (oep%pt%nmodes > 1)
then
124 if (st%nik > st%d%ispin .and. st%d%ispin==
spinors)
then
128 safe_allocate(oep%pt%correlator(1:gr%np, 1:oep%pt%nmodes))
129 oep%pt%correlator =
m_zero
168 safe_allocate(oep%vxc_old(1:gr%np,st%d%ispin))
169 safe_allocate(oep%ss_old(1:gr%np,st%d%ispin))
182 safe_allocate(oep%vxc(1:gr%np,st%d%nspin))
184 safe_allocate(oep%vxc(1:gr%np,1:min(st%d%nspin, 2)))
198 call scf_tol_init(oep%scftol, namespace, st%qtot, def_maximumiter=10)
202 call parse_variable(namespace,
'KLIPhotonCOC', .false., oep%coc_translation)
212 call parse_variable(namespace,
'OEPRemoveElectron', .false., oep%rm_ee_interaction)
217 if(st%d%kpt%parallel)
then
241#include "xc_oep_qed_inc.F90"
245#include "xc_kli_photon_inc.F90"
246#include "xc_oep_photon_inc.F90"
249#include "complex.F90"
250#include "xc_kli_photon_inc.F90"
251#include "xc_oep_photon_inc.F90"
This module calculates the derivatives (gradients, Laplacians, etc.) of a function.
integer, parameter, public unpolarized
Parameters...
integer, parameter, public spinors
real(real64), parameter, public m_zero
real(real64), parameter, public m_one
This module implements the underlying real-space grid.
subroutine, public lr_init(lr)
subroutine, public lr_dealloc(lr)
subroutine, public linear_solver_init(this, namespace, gr, states_are_real, mc, space)
This module is intended to contain "only mathematical" functions and procedures.
This module defines various routines, operating on mesh functions.
This module defines the meshes, which are used in Octopus.
subroutine, public messages_not_implemented(feature, namespace)
subroutine, public messages_obsolete_variable(namespace, name, rep)
subroutine, public messages_input_error(namespace, var, details, row, column)
subroutine, public messages_experimental(name, namespace)
This module handles the communicators for the various parallelization strategies.
subroutine, public photon_mode_compute_dipoles(this, mesh)
Computes the polarization dipole.
subroutine, public photon_mode_end(this)
subroutine, public photon_mode_set_n_electrons(this, qtot)
subroutine, public photon_mode_init(this, namespace, dim, photon_free)
subroutine, public scf_tol_init(this, namespace, qtot, def_maximumiter, tol_scheme)
pure logical function, public states_are_complex(st)
pure logical function, public states_are_real(st)
This module handles spin dimensions of the states and the k-point distribution.
integer, parameter, public oep_level_none
the OEP levels
subroutine, public xc_oep_spinfactor(oep, nspin)
A couple of auxiliary functions for oep.
subroutine, public xc_oep_end(oep)
integer, parameter, public oep_type_photons
integer, parameter, public oep_mixing_scheme_bb
integer, parameter, public oep_level_full
integer, parameter, public oep_mixing_scheme_const
Mixing schemes.
integer, parameter, public oep_level_kli
subroutine, public zxc_oep_photon_calc(oep, namespace, xcs, gr, hm, st, space, ex, ec, vxc)
This file handles the evaluation of the OEP potential, in the KLI or full OEP as described in S....
subroutine, public xc_oep_photon_init(oep, namespace, family, gr, st, mc, space)
subroutine, public xc_oep_photon_end(oep)
subroutine, public dxc_oep_photon_calc(oep, namespace, xcs, gr, hm, st, space, ex, ec, vxc)
This file handles the evaluation of the OEP potential, in the KLI or full OEP as described in S....