(git:374b731)
Loading...
Searching...
No Matches
xc_rho_cflags_types.F
Go to the documentation of this file.
1!--------------------------------------------------------------------------------------------------!
2! CP2K: A general program to perform molecular dynamics simulations !
3! Copyright 2000-2024 CP2K developers group <https://cp2k.org> !
4! !
5! SPDX-License-Identifier: GPL-2.0-or-later !
6!--------------------------------------------------------------------------------------------------!
7
8! **************************************************************************************************
9!> \brief contains the structure
10!> \par History
11!> 11.2003 created [fawzi]
12!> \author fawzi
13! **************************************************************************************************
15
16#include "../base/base_uses.f90"
17 IMPLICIT NONE
18 PRIVATE
19 LOGICAL, PRIVATE, PARAMETER :: debug_this_module = .false.
20 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'xc_rho_cflags_types'
21
22 PUBLIC :: xc_rho_cflags_type
23 PUBLIC :: xc_rho_cflags_setall, &
25
26! **************************************************************************************************
27!> \brief contains a flag for each component of xc_rho_set, so that you can
28!> use it to tell which components you need, which ones you need,....
29!> \param rho flags for rho (the total density)
30!> \param rho_spin flag for rhoa and rhob (the spin density with LSD)
31!> \param drho flag for drho (the gradient of rho)
32!> \param drho_spin flag for drhoa and drhob (the gradient of the spin
33!> density)
34!> \param norm_drho flag for norm_drho (the norm of the gradient of rho)
35!> \param norm_drho_spin flag for norm_drhoa, norm_drhob (the norm of the
36!> gradient of the spin density)
37!> \param rho_ 1_3: flag for rho**(1.0_dp/3.0_dp)
38!> \param rho_spin_ 1_3: flag for rhoa**(1.0_dp/3.0_dp) and rhob**(1.0_dp/3.0_dp)
39!> \param tau flags for the kinetic (KS) part of rho
40!> \param tau_spin flags for the kinetic (KS) part of rhoa and rhob
41!> \note
42!> low_level type without retain/release
43!> \par History
44!> 11.2003 created [fawzi]
45!> 12.2008 added laplace parts [mguidon]
46!> \author fawzi
47! **************************************************************************************************
49 LOGICAL :: rho = .false., rho_spin = .false., drho = .false., drho_spin = .false., &
50 norm_drho = .false., norm_drho_spin = .false., &
51 rho_1_3 = .false., rho_spin_1_3 = .false., &
52 tau = .false., tau_spin = .false., laplace_rho = .false., laplace_rho_spin = .false.
53 END TYPE xc_rho_cflags_type
54
55CONTAINS
56
57! **************************************************************************************************
58!> \brief sets all the flags to the given value
59!> \param cflags the flags to set
60!> \param value the value to set
61! **************************************************************************************************
62 ELEMENTAL SUBROUTINE xc_rho_cflags_setall(cflags, value)
63 TYPE(xc_rho_cflags_type), INTENT(out) :: cflags
64 LOGICAL, INTENT(in) :: value
65
66 cflags%rho = value
67 cflags%rho_spin = value
68 cflags%drho = value
69 cflags%drho_spin = value
70 cflags%norm_drho = value
71 cflags%norm_drho_spin = value
72 cflags%rho_1_3 = value
73 cflags%rho_spin_1_3 = value
74 cflags%tau = value
75 cflags%tau_spin = value
76 cflags%laplace_rho = value
77 cflags%laplace_rho_spin = value
78 END SUBROUTINE xc_rho_cflags_setall
79
80! **************************************************************************************************
81!> \brief return true if the two cflags are equal
82!> \param cflags1 the flags to compare
83!> \param cflags2 the flags to compare
84!> \return ...
85! **************************************************************************************************
86 ELEMENTAL FUNCTION xc_rho_cflags_equal(cflags1, cflags2) RESULT(equal)
87 TYPE(xc_rho_cflags_type), INTENT(in) :: cflags1, cflags2
88 LOGICAL :: equal
89
90 equal = ((cflags1%rho .EQV. cflags2%rho) .AND. &
91 (cflags1%rho_spin .EQV. cflags2%rho_spin) .AND. &
92 (cflags1%drho .EQV. cflags2%drho) .AND. &
93 (cflags1%drho_spin .EQV. cflags2%drho_spin) .AND. &
94 (cflags1%norm_drho .EQV. cflags2%norm_drho) .AND. &
95 (cflags1%norm_drho_spin .EQV. cflags2%norm_drho_spin) .AND. &
96 (cflags1%rho_1_3 .EQV. cflags2%rho_1_3) .AND. &
97 (cflags1%rho_spin_1_3 .EQV. cflags2%rho_spin_1_3) .AND. &
98 (cflags1%tau .EQV. cflags2%tau) .AND. &
99 (cflags1%tau_spin .EQV. cflags2%tau_spin) .AND. &
100 (cflags1%laplace_rho .EQV. cflags2%laplace_rho) .AND. &
101 (cflags1%laplace_rho_spin .EQV. cflags2%laplace_rho_spin))
102
103 END FUNCTION xc_rho_cflags_equal
104
105END MODULE xc_rho_cflags_types
contains the structure
elemental logical function, public xc_rho_cflags_equal(cflags1, cflags2)
return true if the two cflags are equal
elemental subroutine, public xc_rho_cflags_setall(cflags, value)
sets all the flags to the given value
contains a flag for each component of xc_rho_set, so that you can use it to tell which components you...