(git:42dac4a)
Loading...
Searching...
No Matches
rixs_types.F
Go to the documentation of this file.
1!--------------------------------------------------------------------------------------------------!
2! CP2K: A general program to perform molecular dynamics simulations !
3! Copyright 2000-2025 CP2K developers group <https://cp2k.org> !
4! !
5! SPDX-License-Identifier: GPL-2.0-or-later !
6!--------------------------------------------------------------------------------------------------!
7
8!> *************************************************************************************************
9!> \brief Define Resonant Inelastic XRAY Scattering (RIXS) control type and associated create,
10!> release, etc subroutines
11!> \author BSG (02.2025)
12!> *************************************************************************************************
14 USE cp_fm_types, ONLY: cp_fm_release,&
16 USE kinds, ONLY: dp
20#include "./base/base_uses.f90"
21
22 IMPLICIT NONE
23
24 PRIVATE
25
26! **************************************************************************************************
27!> \brief
28! **************************************************************************************************
30
31 TYPE(xas_tdp_env_type), POINTER :: core_state => null()
33 POINTER :: valence_state => null()
34
35 END TYPE rixs_env_type
36
37! **************************************************************************************************
38!> \brief Valence state coming from the qs_tddfpt2 routine
39! **************************************************************************************************
41
42 INTEGER :: nstates = 0
43 TYPE(cp_fm_type), DIMENSION(:, :), &
44 POINTER :: evects => null() ! eigenvectors
45 REAL(dp), DIMENSION(:), ALLOCATABLE :: evals ! energies
46
47 ! entities below are coming from tddfpt_ground_state_mos type
48 TYPE(cp_fm_type), DIMENSION(:), &
49 POINTER :: mos_occ => null()
50
52
53 CHARACTER(len=*), PARAMETER, PRIVATE :: modulen = 'rixs_types'
54
56
58
59CONTAINS
60
61! **************************************************************************************************
62!> \brief Creates a rixs environment type
63!> \param rixs_env the type to create
64! **************************************************************************************************
65 SUBROUTINE rixs_env_create(rixs_env)
66 TYPE(rixs_env_type), POINTER :: rixs_env
67
68 ALLOCATE (rixs_env)
69 NULLIFY (rixs_env%core_state)
70 CALL xas_tdp_env_create(rixs_env%core_state)
71 NULLIFY (rixs_env%valence_state)
72 CALL tddfpt2_valence_state_create(rixs_env%valence_state)
73
74 END SUBROUTINE rixs_env_create
75
76! **************************************************************************************************
77!> \brief Releases the rixs environment type
78!> \param rixs_env the type to release
79! **************************************************************************************************
80 SUBROUTINE rixs_env_release(rixs_env)
81 TYPE(rixs_env_type), POINTER :: rixs_env
82
83 IF (ASSOCIATED(rixs_env)) THEN
84 IF (ASSOCIATED(rixs_env%core_state)) THEN
85 CALL xas_tdp_env_release(rixs_env%core_state)
86 END IF
87 IF (ASSOCIATED(rixs_env%valence_state)) THEN
88 CALL tddfpt2_valence_state_release(rixs_env%valence_state)
89 END IF
90 END IF
91
92 DEALLOCATE (rixs_env)
93
94 END SUBROUTINE rixs_env_release
95
96! **************************************************************************************************
97!> \brief Creates the valence state type
98!> \param valence_state ...
99! **************************************************************************************************
100 SUBROUTINE tddfpt2_valence_state_create(valence_state)
101 TYPE(tddfpt2_valence_type), POINTER :: valence_state
102
103 ALLOCATE (valence_state)
104
105 NULLIFY (valence_state%evects)
106
107 ! entities below come from tddfpt_ground_state_mos type
108 NULLIFY (valence_state%mos_occ)
109
110 END SUBROUTINE tddfpt2_valence_state_create
111
112! **************************************************************************************************
113!> \brief Releases the valence state type
114!> \param valence_state ...
115! **************************************************************************************************
116 SUBROUTINE tddfpt2_valence_state_release(valence_state)
117 TYPE(tddfpt2_valence_type), POINTER :: valence_state
118
119 IF (ASSOCIATED(valence_state)) THEN
120 IF (ASSOCIATED(valence_state%evects)) THEN
121 CALL cp_fm_release(valence_state%evects)
122 END IF
123 IF (ALLOCATED(valence_state%evals)) THEN
124 DEALLOCATE (valence_state%evals)
125 END IF
126 IF (ASSOCIATED(valence_state%mos_occ)) THEN
127 CALL cp_fm_release(valence_state%mos_occ)
128 END IF
129 END IF
130
131 DEALLOCATE (valence_state)
132
133 END SUBROUTINE tddfpt2_valence_state_release
134
135END MODULE rixs_types
represent a full matrix distributed on many processors
Definition cp_fm_types.F:15
Defines the basic variable types.
Definition kinds.F:23
integer, parameter, public dp
Definition kinds.F:34
Define Resonant Inelastic XRAY Scattering (RIXS) control type and associated create,...
Definition rixs_types.F:13
subroutine, public tddfpt2_valence_state_create(valence_state)
Creates the valence state type.
Definition rixs_types.F:101
subroutine, public rixs_env_create(rixs_env)
Creates a rixs environment type.
Definition rixs_types.F:66
subroutine, public rixs_env_release(rixs_env)
Releases the rixs environment type.
Definition rixs_types.F:81
Define XAS TDP control type and associated create, release, etc subroutines, as well as XAS TDP envir...
subroutine, public xas_tdp_env_create(xas_tdp_env)
Creates a TDP XAS environment type.
subroutine, public xas_tdp_env_release(xas_tdp_env)
Releases the TDP XAS environment type.
represent a full matrix
Valence state coming from the qs_tddfpt2 routine.
Definition rixs_types.F:40
Type containing informations such as inputs and results for TDP XAS calculations.