Octopus
scdm.F90
Go to the documentation of this file.
1!! Copyright (C) 2023 N. Tancogne-Dejean
2!!
3!! This program is free software; you can redistribute it and/or modify
4!! it under the terms of the GNU General Public License as published by
5!! the Free Software Foundation; either version 2, or (at your option)
6!! any later version.
7!!
8!! This program is distributed in the hope that it will be useful,
9!! but WITHOUT ANY WARRANTY; without even the implied warranty of
10!! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11!! GNU General Public License for more details.
12!!
13!! You should have received a copy of the GNU General Public License
14!! along with this program; if not, write to the Free Software
15!! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
16!! 02110-1301, USA.
17!!
18
19#include "global.h"
20
24module scdm_oct_m
25 use debug_oct_m
27 use global_oct_m
28 use grid_oct_m
32 use mesh_oct_m
35 use parser_oct_m
37 use space_oct_m
41
42 implicit none
43
44 private
45 public :: &
46 scdm_t, &
47 scdm_init, &
50
51 type scdm_t
52 private
53
54 real(real64) :: scdm_sigma
55
56 end type scdm_t
57
58contains
59
60 subroutine scdm_init(this, namespace)
61 type(scdm_t), intent(inout) :: this
62 type(namespace_t), intent(in) :: namespace
63
64 push_sub(scdm_init)
65
66 ! We first compute the U matrix using the SCDM-k method
67 ! and then we compute the corresponding Wannier states
68 call parse_variable(global_namespace, 'SCDMsigma', 0.2_real64, this%scdm_sigma)
69
70 pop_sub(scdm_init)
71 end subroutine scdm_init
72
73#include "undef.F90"
74#include "real.F90"
75#include "scdm_inc.F90"
76
77#include "undef.F90"
78#include "complex.F90"
79#include "scdm_inc.F90"
80
81end module scdm_oct_m
82
83!! Local Variables:
84!! mode: f90
85!! coding: utf-8
86!! End:
This module implements the underlying real-space grid.
Definition: grid.F90:117
This module defines the meshes, which are used in Octopus.
Definition: mesh.F90:118
type(namespace_t), public global_namespace
Definition: namespace.F90:132
This module provides routines for perform the Selected Column of Density Matrix (SCDM) method This fo...
Definition: scdm.F90:117
subroutine, public dscdm_get_localized_states(this, namespace, space, gr, kpoints, st, scdm_st)
Perform the SCDM method and returns a states_elec_t object with localized states.
Definition: scdm.F90:236
subroutine, public scdm_init(this, namespace)
Definition: scdm.F90:154
subroutine, public zscdm_get_localized_states(this, namespace, space, gr, kpoints, st, scdm_st)
Perform the SCDM method and returns a states_elec_t object with localized states.
Definition: scdm.F90:498
This module handles spin dimensions of the states and the k-point distribution.