21 use,
intrinsic :: iso_fortran_env
47 real(real64) :: omega = 0.0_real64
48 real(real64) :: alpha = 0.0_real64
49 real(real64) :: beta = 0.0_real64
57 type(xc_cam_t),
parameter :: cam_null =
xc_cam_t(0.0_real64, 0.0_real64, 0.0_real64)
60 type(xc_cam_t),
parameter :: cam_exact_exchange =
xc_cam_t(0.0_real64, 1.0_real64, 0.0_real64)
66 class(xc_cam_t),
intent(in) :: this
70 is_null = all(abs([this%omega, this%alpha, this%beta]) <=
m_epsilon)
76 class(xc_cam_t),
intent(in) :: this
77 type(namespace_t),
intent(in) :: namespace
78 character(len=*),
optional,
intent(in) :: msg
80 character(len=256) :: info_message
84 if (
present(msg))
then
87 info_message =
"CAM parameters are:"
91 write(
message(2),
'(a)')
"Info: " // trim(adjustl(info_message))
92 write(
message(2),
'(a,f8.5)')
" alpha = ", this%alpha
93 write(
message(3),
'(a,f8.5)')
" beta = ", this%beta
94 write(
message(4),
'(a,f8.5)')
" omega = ", this%omega
110 class(xc_cam_t),
intent(in) :: this
112 real(real64) :: params(3)
114 params = [this%alpha, this%beta, this%omega]
real(real64), parameter, public m_epsilon
character(len=256), dimension(max_lines), public message
to be output by fatal, warning
subroutine, public messages_info(no_lines, iunit, debug_only, stress, all_nodes, namespace)
type(xc_cam_t), parameter, public cam_null
All CAM parameters set to zero.
pure real(real64) function, dimension(3) xc_cam_as_array(this)
@ brief Return attributes as an array of reals. LibXC interface expects an array of reals,...
pure logical function xc_cam_is_null(this)
Are all attributes of a xc_cam_t instance set to their default (null) values.
type(xc_cam_t), parameter, public cam_exact_exchange
Use only Hartree Fock exact exchange.
subroutine xc_cam_print(this, namespace, msg)
Print attribute values.
Coulomb-attenuating method parameters, used in the partitioning of the Coulomb potential into a short...