26 const size_t sizeA1 = index_A1[TA].count_size;
27 const size_t sizeA2 = index_A2[TA].count_size;
28 const size_t sizeB1 = index_B1[TB].count_size;
29 const size_t sizeB2 = index_B2[TB].count_size;
56 default:
throw std::invalid_argument(std::string(__FILE__)+
" line "+std::to_string(__LINE__));
61 const int LA1 = co3.first;
62 for(
const auto &co4 : co3.second )
64 const size_t NA1 = co4.first;
65 for(
size_t MA1=0; MA1!=2*LA1+1; ++MA1 )
67 for(
const auto &co5 : co4.second )
69 const int LA2 = co5.first;
70 for(
const auto &co6 : co5.second )
72 const size_t NA2 = co6.first;
73 for(
size_t MA2=0; MA2!=2*LA2+1; ++MA2 )
75 for(
const auto &co7 : co6.second )
77 const int LB1 = co7.first;
78 for(
const auto &co8 : co7.second )
80 const size_t NB1 = co8.first;
81 for(
size_t MB1=0; MB1!=2*LB1+1; ++MB1 )
83 for(
const auto &co9 : co8.second )
85 const int LB2 = co9.first;
86 for(
const auto &co10 : co9.second )
88 const size_t NB2 = co10.first;
89 for(
size_t MB2=0; MB2!=2*LB2+1; ++MB2 )
91 const Tdata overlap = co10.second.cal_overlap( tauA*
lat0, tauB*
lat0, MA1, MA2, MB1, MB2 );
92 const size_t iA1 = index_A1[TA][LA1][NA1][MA1];
93 const size_t iA2 = index_A2[TA][LA2][NA2][MA2];
94 const size_t iB1 = index_B1[TB][LB1][NB1][MB1];
95 const size_t iB2 = index_B2[TB][LB2][NB2][MB2];
122 default:
throw std::invalid_argument(std::string(__FILE__)+
" line "+std::to_string(__LINE__));
151 std::array<RI::Tensor<Tdata>,3> m;
152 const size_t sizeA1 = index_A1[TA].count_size;
153 const size_t sizeA2 = index_A2[TA].count_size;
154 const size_t sizeB1 = index_B1[TB].count_size;
155 const size_t sizeB2 = index_B2[TB].count_size;
156 for(
int i=0;
i<m.size(); ++
i)
184 default:
throw std::invalid_argument(std::string(__FILE__)+
" line "+std::to_string(__LINE__));
190 const int LA1 = co3.first;
191 for(
const auto &co4 : co3.second )
193 const size_t NA1 = co4.first;
194 for(
size_t MA1=0; MA1!=2*LA1+1; ++MA1 )
196 for(
const auto &co5 : co4.second )
198 const int LA2 = co5.first;
199 for(
const auto &co6 : co5.second )
201 const size_t NA2 = co6.first;
202 for(
size_t MA2=0; MA2!=2*LA2+1; ++MA2 )
204 for(
const auto &co7 : co6.second )
206 const int LB1 = co7.first;
207 for(
const auto &co8 : co7.second )
209 const size_t NB1 = co8.first;
210 for(
size_t MB1=0; MB1!=2*LB1+1; ++MB1 )
212 for(
const auto &co9 : co8.second )
214 const int LB2 = co9.first;
215 for(
const auto &co10 : co9.second )
217 const size_t NB2 = co10.first;
218 for(
size_t MB2=0; MB2!=2*LB2+1; ++MB2 )
221 const size_t iA1 = index_A1[TA][LA1][NA1][MA1];
222 const size_t iA2 = index_A2[TA][LA2][NA2][MA2];
223 const size_t iB1 = index_B1[TB][LB1][NB1][MB1];
224 const size_t iB2 = index_B2[TB][LB2][NB2][MB2];
225 for(
size_t i=0;
i<m.size(); ++
i)
253 default:
throw std::invalid_argument(std::string(__FILE__)+
" line "+std::to_string(__LINE__));