27 const size_t sizeA1 = index_A1[TA].count_size;
28 const size_t sizeA2 = index_A2[TA].count_size;
29 const size_t sizeB1 = index_B1[TB].count_size;
30 const size_t sizeB2 = index_B2[TB].count_size;
57 default:
throw std::invalid_argument(std::string(__FILE__)+
" line "+std::to_string(__LINE__));
62 const int LA1 = co3.first;
63 for(
const auto &co4 : co3.second )
65 const size_t NA1 = co4.first;
66 for(
size_t MA1=0; MA1!=2*LA1+1; ++MA1 )
68 for(
const auto &co5 : co4.second )
70 const int LA2 = co5.first;
71 for(
const auto &co6 : co5.second )
73 const size_t NA2 = co6.first;
74 for(
size_t MA2=0; MA2!=2*LA2+1; ++MA2 )
76 for(
const auto &co7 : co6.second )
78 const int LB1 = co7.first;
79 for(
const auto &co8 : co7.second )
81 const size_t NB1 = co8.first;
82 for(
size_t MB1=0; MB1!=2*LB1+1; ++MB1 )
84 for(
const auto &co9 : co8.second )
86 const int LB2 = co9.first;
87 for(
const auto &co10 : co9.second )
89 const size_t NB2 = co10.first;
90 for(
size_t MB2=0; MB2!=2*LB2+1; ++MB2 )
92 const Tdata overlap = co10.second.cal_overlap( tauA*
lat0, tauB*
lat0, MA1, MA2, MB1, MB2 );
93 const size_t iA1 = index_A1[TA][LA1][NA1][MA1];
94 const size_t iA2 = index_A2[TA][LA2][NA2][MA2];
95 const size_t iB1 = index_B1[TB][LB1][NB1][MB1];
96 const size_t iB2 = index_B2[TB][LB2][NB2][MB2];
123 default:
throw std::invalid_argument(std::string(__FILE__)+
" line "+std::to_string(__LINE__));
152 std::array<RI::Tensor<Tdata>,3> m;
153 const size_t sizeA1 = index_A1[TA].count_size;
154 const size_t sizeA2 = index_A2[TA].count_size;
155 const size_t sizeB1 = index_B1[TB].count_size;
156 const size_t sizeB2 = index_B2[TB].count_size;
157 for(
int i=0; i<m.size(); ++i)
185 default:
throw std::invalid_argument(std::string(__FILE__)+
" line "+std::to_string(__LINE__));
191 const int LA1 = co3.first;
192 for(
const auto &co4 : co3.second )
194 const size_t NA1 = co4.first;
195 for(
size_t MA1=0; MA1!=2*LA1+1; ++MA1 )
197 for(
const auto &co5 : co4.second )
199 const int LA2 = co5.first;
200 for(
const auto &co6 : co5.second )
202 const size_t NA2 = co6.first;
203 for(
size_t MA2=0; MA2!=2*LA2+1; ++MA2 )
205 for(
const auto &co7 : co6.second )
207 const int LB1 = co7.first;
208 for(
const auto &co8 : co7.second )
210 const size_t NB1 = co8.first;
211 for(
size_t MB1=0; MB1!=2*LB1+1; ++MB1 )
213 for(
const auto &co9 : co8.second )
215 const int LB2 = co9.first;
216 for(
const auto &co10 : co9.second )
218 const size_t NB2 = co10.first;
219 for(
size_t MB2=0; MB2!=2*LB2+1; ++MB2 )
221 const Tdata overlap = co10.second.cal_overlap( tauA*
lat0, tauB*
lat0, MA1, MA2, MB1, MB2 );
225 const size_t iA1 = index_A1[TA][LA1][NA1][MA1];
226 const size_t iA2 = index_A2[TA][LA2][NA2][MA2];
227 const size_t iB1 = index_B1[TB][LB1][NB1][MB1];
228 const size_t iB2 = index_B2[TB][LB2][NB2][MB2];
229 for(
size_t i=0; i<m.size(); ++i)
257 default:
throw std::invalid_argument(std::string(__FILE__)+
" line "+std::to_string(__LINE__));