32 use,
intrinsic :: iso_fortran_env
73 logical :: coc_translation
74 type(photon_mode_t),
public :: pt
75 type(lr_t) :: photon_lr
76 logical,
public :: rm_ee_interaction
83 type(xc_oep_photon_t),
intent(inout) :: oep
84 type(namespace_t),
intent(in) :: namespace
85 integer,
intent(in) :: family
86 type(grid_t),
intent(inout) :: gr
87 type(states_elec_t),
intent(in) :: st
88 type(multicomm_t),
intent(in) :: mc
89 class(space_t),
intent(in) :: space
93 if(
bitand(family, xc_family_oep) == 0)
then
109 if (oep%pt%nmodes > 1)
then
123 if (st%nik > st%d%ispin .and. st%d%ispin==
spinors)
then
127 safe_allocate(oep%pt%correlator(1:gr%np, 1:oep%pt%nmodes))
128 oep%pt%correlator =
m_zero
167 safe_allocate(oep%vxc_old(1:gr%np,st%d%ispin))
168 safe_allocate(oep%ss_old(1:gr%np,st%d%ispin))
181 safe_allocate(oep%vxc(1:gr%np,st%d%nspin))
183 safe_allocate(oep%vxc(1:gr%np,1:min(st%d%nspin, 2)))
196 call scf_tol_init(oep%scftol, namespace, st%qtot, def_maximumiter=10)
200 call parse_variable(namespace,
'KLIPhotonCOC', .false., oep%coc_translation)
210 call parse_variable(namespace,
'OEPRemoveElectron', .false., oep%rm_ee_interaction)
215 if(st%d%kpt%parallel)
then
239#include "xc_oep_qed_inc.F90"
243#include "xc_kli_photon_inc.F90"
244#include "xc_oep_photon_inc.F90"
247#include "complex.F90"
248#include "xc_kli_photon_inc.F90"
249#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 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....