29 use,
intrinsic :: iso_fortran_env
60 type(orbitalset_t),
allocatable,
public :: orbsets(:)
62 integer,
public :: norbsets = 0
63 integer,
public :: maxnorbs = 0
64 integer,
public :: max_np = 0
65 integer,
public :: size = 0
66 integer,
allocatable,
public :: global2os(:,:)
67 integer,
allocatable :: os2global(:,:)
69 integer(int64) :: truncation
70 real(real64) :: threshold = 0.01_real64
72 logical,
public :: normalize = .
true.
73 logical,
public :: use_submesh = .false.
74 logical,
public :: orthogonalization = .false.
76 character(len=256),
public :: debugdir
78 logical,
public :: combine_j_orbitals
84 type(orbitalbasis_t),
intent(inout) :: this
85 type(namespace_t),
intent(in) :: namespace
86 integer,
intent(in) :: periodic_dim
108 call parse_variable(namespace,
'AOTruncation', option__aotruncation__ao_full, this%truncation)
122 call parse_variable(namespace,
'AOThreshold', 0.01_real64, this%threshold)
147 if (periodic_dim > 0)
then
148 call parse_variable(namespace,
'AOSubmesh', .false., this%use_submesh)
164 call parse_variable(namespace,
'AOLoewdin', .false., this%orthogonalization)
167 if (this%orthogonalization) this%normalize = .false.
181 call parse_variable(namespace,
'AOCombineJOrbitals', .false., this%combine_j_orbitals)
185 if (this%orthogonalization .and. this%use_submesh)
then
190 write(this%debugdir,
'(a)')
'debug/ao_basis'
191 call io_mkdir(this%debugdir, namespace)
205 do ios = 1, this%norbsets
208 safe_deallocate_a(this%orbsets)
210 safe_deallocate_a(this%global2os)
211 safe_deallocate_a(this%os2global)
222 type(
mesh_t),
intent(in) :: mesh
224 integer,
intent(in) :: hubbard_l
225 real(real64),
intent(in) :: hubbard_j
226 integer,
intent(out) :: norb
228 integer :: iorb, i, l, m, n
235 do iorb = 1, os%spec%get_niwfs()
236 call os%spec%get_iwf_ilm(iorb, 1, i, l, m)
237 call os%spec%get_iwf_n(iorb, 1, n)
238 call os%spec%get_iwf_j(iorb, j)
239 if (l .eq. hubbard_l .and.
is_close(hubbard_j, j))
then
243 if (os%spec%is_full()) os%ii = n
245 this%truncation, this%threshold)
254#include "orbitalbasis_inc.F90"
257#include "complex.F90"
258#include "orbitalbasis_inc.F90"
Prints out to iunit a message in the form: ["InputVariable" = value] where "InputVariable" is given b...
real(real64) function, public atomic_orbital_get_radius(species, mesh, iorb, ispin, truncation, threshold)
type(debug_t), save, public debug
real(real64), parameter, public m_zero
subroutine, public io_mkdir(fname, namespace, parents)
This module is intended to contain "only mathematical" functions and procedures.
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_input_error(namespace, var, details, row, column)
subroutine, public messages_experimental(name, namespace)
subroutine, public orbitalbasis_end(this)
subroutine, public zorbitalbasis_build(this, namespace, ions, mesh, kpt, ndim, skip_s_orb, use_all_orb, verbose)
This routine is an interface for constructing the orbital basis.
subroutine, public dorbitalbasis_build(this, namespace, ions, mesh, kpt, ndim, skip_s_orb, use_all_orb, verbose)
This routine is an interface for constructing the orbital basis.
subroutine, public zorbitalbasis_build_empty(this, mesh, kpt, ndim, norbsets, map_os, verbose)
This routine constructd an empty orbital basis.
subroutine, public dorbitalbasis_build_empty(this, mesh, kpt, ndim, norbsets, map_os, verbose)
This routine constructd an empty orbital basis.
subroutine orbitalbasis_set_nlmj_radius(this, mesh, os, hubbard_l, hubbard_j, norb)
Loop over orbitals for a given l and j.
subroutine, public orbitalbasis_init(this, namespace, periodic_dim)
subroutine, public orbitalset_end(this)
subroutine, public orbitalset_set_jln(this, jj, ll, nn)
Describes mesh distribution to nodes.