44// ==========================================================
55
66#include " element_basis_index.h"
7+ #include " ../../source_basis/module_ao/ORB_read.h"
8+ #include " ../../source_basis/module_ao/ORB_atomic_lm.h"
9+
710namespace ModuleBase
811{
912
10- Element_Basis_Index::IndexLNM Element_Basis_Index::construct_index ( const Range &range )
13+ Element_Basis_Index::IndexLNM
14+ Element_Basis_Index::construct_index ( const Range &range )
1115{
1216 IndexLNM index;
1317 index.resize ( range.size () );
@@ -35,4 +39,40 @@ Element_Basis_Index::IndexLNM Element_Basis_Index::construct_index( const Range
3539 return index;
3640}
3741
42+
43+ ModuleBase::Element_Basis_Index::Range
44+ Element_Basis_Index::construct_range ( const LCAO_Orbitals &orb )
45+ {
46+ ModuleBase::Element_Basis_Index::Range range;
47+ range.resize ( orb.get_ntype () );
48+ for ( size_t T=0 ; T!=range.size (); ++T )
49+ {
50+ range[T].resize ( orb.Phi [T].getLmax ()+1 );
51+ for ( size_t L=0 ; L!=range[T].size (); ++L )
52+ {
53+ range[T][L].N = orb.Phi [T].getNchi (L);
54+ range[T][L].M = 2 *L+1 ;
55+ }
56+ }
57+ return range;
58+ }
59+
60+
61+ ModuleBase::Element_Basis_Index::Range
62+ Element_Basis_Index::construct_range ( const std::vector<std::vector<std::vector<Numerical_Orbital_Lm>>> &orb )
63+ {
64+ ModuleBase::Element_Basis_Index::Range range;
65+ range.resize ( orb.size () );
66+ for ( size_t T=0 ; T!=range.size (); ++T )
67+ {
68+ range[T].resize ( orb[T].size () );
69+ for ( size_t L=0 ; L!=range[T].size (); ++L )
70+ {
71+ range[T][L].N = orb[T][L].size ();
72+ range[T][L].M = 2 *L+1 ;
73+ }
74+ }
75+ return range;
76+ }
77+
3878}
0 commit comments