Partial cleanup of header files

This commit is contained in:
Jean-Sébastien 2021-12-11 20:54:52 +01:00
부모 83cad3587e
커밋 bdf309d78c
9개의 변경된 파일176개의 추가작업 그리고 80개의 파일을 삭제

파일 보기

@ -17,7 +17,7 @@ Purpose: Core header file, includes all descendents.
// This core header file includes all the others // This core header file includes all the others
const char ABACUS_VERSION[20] = "ABACUS_0a"; const char ABACUS_VERSION[20] = "1.0.0";
// Standard includes // Standard includes
#include <cmath> #include <cmath>

파일 보기

@ -21,7 +21,7 @@ namespace ABACUS {
// First, some global constants... // First, some global constants...
const long long int ID_UPPER_LIMIT = 10000000LL; // max size of vectors we can define without seg fault const long long int ID_UPPER_LIMIT = 10000000LL; // max size we can define without seg fault
const int INTERVALS_SIZE = 100000; // size of Scan_Intervals arrays const int INTERVALS_SIZE = 100000; // size of Scan_Intervals arrays
const int NBASESMAX = 1000; // max number of bases kept const int NBASESMAX = 1000; // max number of bases kept
@ -30,7 +30,7 @@ namespace ABACUS {
// Cutoffs on particle numbers // Cutoffs on particle numbers
const int MAXSTRINGS = 20; // maximal number of particle types we allow in bases const int MAXSTRINGS = 20; // maximal number of particle types we allow in bases
const int NEXC_MAX_HEIS = 16; // maximal number of excitations (string binding/unbinding, particle-hole) considered const int NEXC_MAX_HEIS = 16; // max nr of excitations (string binding/unbinding, particle-hole) considered
//*********************************************************************** //***********************************************************************
@ -66,7 +66,8 @@ namespace ABACUS {
//**************************************************************************** //****************************************************************************
// Objects in class Heis_Base are a checked vector containing the number of rapidities of allowable types for a given state // Objects in class Heis_Base are a checked vector containing the number of rapidities
// of allowable types for a given state
class Heis_Base { class Heis_Base {

파일 보기

@ -116,7 +116,8 @@ namespace ABACUS {
if (i % 2 && bdry[i] < xmax_ref) xmax_reg++; if (i % 2 && bdry[i] < xmax_ref) xmax_reg++;
} }
Vect<T> new_bdry(bdry.size() + 2 * (((xmin_reg + 1) % 2 && (xmax_reg + 1) % 2) - (xmax_reg - xmin_reg)/2)); Vect<T> new_bdry(bdry.size()
+ 2 * (((xmin_reg + 1) % 2 && (xmax_reg + 1) % 2) - (xmax_reg - xmin_reg)/2));
int ishift = 0; int ishift = 0;
for (int i = 0; i <= xmin_reg; ++i) new_bdry[i] = bdry[i]; for (int i = 0; i <= xmin_reg; ++i) new_bdry[i] = bdry[i];
@ -201,18 +202,40 @@ namespace ABACUS {
// ******************************** Recursive integration functions ****************************** // ******************************** Recursive integration functions ******************************
DP Integrate_Riemann (DP (*function) (Vect_DP), Vect_DP& args, int arg_to_integ, DP xmin, DP xmax, int Npts); DP Integrate_Riemann (DP (*function) (Vect_DP),
DP Integrate_Riemann_using_table (DP (*function) (Vect_DP, I_table), Vect_DP& args, int arg_to_integ, I_table Itable, Vect_DP& args, int arg_to_integ,
DP xmin, DP xmax,
int Npts);
DP Integrate_Riemann_using_table (DP (*function) (Vect_DP, I_table),
Vect_DP& args, int arg_to_integ,
I_table Itable,
DP xmin, DP xmax, int Npts); DP xmin, DP xmax, int Npts);
DP Integrate_rec (DP (*function) (Vect_DP), Vect_DP& args, int arg_to_integ, DP xmin, DP xmax, DP req_prec, int max_rec_level); DP Integrate_rec (DP (*function) (Vect_DP),
DP Integrate_rec_using_table (DP (*function) (Vect_DP, I_table), Vect_DP& args, int arg_to_integ, I_table Itable, Vect_DP& args, int arg_to_integ,
DP xmin, DP xmax, DP req_prec, int max_rec_level); DP xmin, DP xmax,
DP Integrate_rec_using_table (DP (*function) (Vect_DP, I_table), Vect_DP& args, int arg_to_integ, I_table Itable, DP req_prec, int max_rec_level);
DP xmin, DP xmax, DP req_prec, int max_rec_level, std::ofstream& outfile);
DP Integrate_rec_using_table_and_file (DP (*function) (Vect_DP, I_table, std::ofstream&), Vect_DP& args, DP Integrate_rec_using_table (DP (*function) (Vect_DP, I_table),
int arg_to_integ, I_table Itable, Vect_DP& args, int arg_to_integ,
DP xmin, DP xmax, DP req_prec, int max_rec_level, std::ofstream& outfile); I_table Itable,
DP xmin, DP xmax,
DP req_prec, int max_rec_level);
DP Integrate_rec_using_table (DP (*function) (Vect_DP, I_table),
Vect_DP& args, int arg_to_integ,
I_table Itable,
DP xmin, DP xmax,
DP req_prec, int max_rec_level,
std::ofstream& outfile);
DP Integrate_rec_using_table_and_file (DP (*function) (Vect_DP, I_table, std::ofstream&),
Vect_DP& args, int arg_to_integ,
I_table Itable,
DP xmin, DP xmax,
DP req_prec, int max_rec_level,
std::ofstream& outfile);
@ -248,34 +271,70 @@ namespace ABACUS {
DP xmax; DP xmax;
public: public:
Integral_data (DP (*function_ref) (Vect_DP), Vect_DP& args, int arg_to_integ_ref, DP xmin_ref, DP xmax_ref); Integral_data (DP (*function_ref) (Vect_DP),
Integral_data (DP (*function_ref) (Vect_DP, I_table), Vect_DP& args, int arg_to_integ_ref, Vect_DP& args, int arg_to_integ_ref,
I_table Itable, DP xmin_ref, DP xmax_ref); DP xmin_ref, DP xmax_ref);
Integral_data (DP (*function_ref) (Vect_DP, Integral_table), Vect_DP& args, int arg_to_integ_ref,
Integral_table Itable, DP xmin_ref, DP xmax_ref); Integral_data (DP (*function_ref) (Vect_DP, I_table),
Vect_DP& args, int arg_to_integ_ref,
I_table Itable,
DP xmin_ref, DP xmax_ref);
Integral_data (DP (*function_ref) (Vect_DP, Integral_table),
Vect_DP& args, int arg_to_integ_ref,
Integral_table Itable,
DP xmin_ref, DP xmax_ref);
void Save (std::ofstream& outfile); void Save (std::ofstream& outfile);
void Improve_estimate (DP (*function) (Vect_DP), Vect_DP& args, int arg_to_integ, int Npts_max);
void Improve_estimate (DP (*function) (Vect_DP, I_table), Vect_DP& args, int arg_to_integ, I_table Itable, int Npts_max); void Improve_estimate (DP (*function) (Vect_DP),
void Improve_estimate (DP (*function) (Vect_DP, Integral_table), Vect_DP& args, int arg_to_integ, Vect_DP& args, int arg_to_integ,
Integral_table Itable, int Npts_max); int Npts_max);
void Improve_estimate (DP (*function) (Vect_DP, I_table),
Vect_DP& args, int arg_to_integ,
I_table Itable,
int Npts_max);
void Improve_estimate (DP (*function) (Vect_DP, Integral_table),
Vect_DP& args, int arg_to_integ,
Integral_table Itable,
int Npts_max);
~Integral_data (); ~Integral_data ();
}; };
Integral_result Integrate_optimal (DP (*function) (Vect_DP), Vect_DP& args, Integral_result Integrate_optimal (DP (*function) (Vect_DP),
int arg_to_integ, DP xmin, DP xmax, DP req_rel_prec, DP req_abs_prec, int max_nr_pts); Vect_DP& args, int arg_to_integ,
Integral_result Integrate_optimal_using_table (DP (*function) (Vect_DP, I_table Itable), Vect_DP& args, int arg_to_integ, DP xmin, DP xmax,
I_table Itable, DP xmin, DP xmax, DP req_rel_prec, DP req_abs_prec, int max_nr_pts); DP req_rel_prec, DP req_abs_prec,
Integral_result Integrate_optimal_using_table (DP (*function) (Vect_DP, Integral_table Itable), Vect_DP& args, int arg_to_integ, int max_nr_pts);
Integral_table Itable, DP xmin, DP xmax, DP req_rel_prec,
DP req_abs_prec, int max_nr_pts);
Integral_result Integrate_optimal_using_table (DP (*function) (Vect_DP, I_table Itable), Vect_DP& args, int arg_to_integ, Integral_result Integrate_optimal_using_table (DP (*function) (Vect_DP, I_table Itable),
I_table Itable, DP xmin, DP xmax, DP req_rel_prec, Vect_DP& args, int arg_to_integ,
DP req_abs_prec, int max_nr_pts, std::ofstream& outfile); I_table Itable,
DP xmin, DP xmax,
DP req_rel_prec, DP req_abs_prec,
int max_nr_pts);
Integral_result Integrate_optimal_using_table (DP (*function) (Vect_DP, Integral_table Itable),
Vect_DP& args, int arg_to_integ,
Integral_table Itable,
DP xmin, DP xmax,
DP req_rel_prec, DP req_abs_prec,
int max_nr_pts);
Integral_result Integrate_optimal_using_table (DP (*function) (Vect_DP, I_table Itable),
Vect_DP& args, int arg_to_integ,
I_table Itable,
DP xmin, DP xmax,
DP req_rel_prec, DP req_abs_prec,
int max_nr_pts,
std::ofstream& outfile);
// ******************************** Recursive version: optimal, complex implementation ****************************** // ********************** Recursive version: optimal, complex implementation ********************
// NB: function returns complex values but takes real arguments // NB: function returns complex values but takes real arguments
@ -307,23 +366,25 @@ namespace ABACUS {
DP xmax; DP xmax;
public: public:
Integral_data_CX (std::complex<DP> (*function_ref) (Vect_DP), Vect_DP& args, int arg_to_integ_ref, DP xmin_ref, DP xmax_ref); Integral_data_CX (std::complex<DP> (*function_ref) (Vect_DP),
Vect_DP& args, int arg_to_integ_ref,
DP xmin_ref, DP xmax_ref);
void Save (std::ofstream& outfile); void Save (std::ofstream& outfile);
void Improve_estimate (std::complex<DP> (*function) (Vect_DP), Vect_DP& args, int arg_to_integ, int Npts_max);
void Improve_estimate (std::complex<DP> (*function) (Vect_DP),
Vect_DP& args, int arg_to_integ,
int Npts_max);
~Integral_data_CX (); ~Integral_data_CX ();
}; };
Integral_result_CX Integrate_optimal (std::complex<DP> (*function) (Vect_DP), Vect_DP& args, int arg_to_integ, DP xmin, DP xmax, Integral_result_CX Integrate_optimal (std::complex<DP> (*function) (Vect_DP),
DP req_rel_prec, DP req_abs_prec, int max_nr_pts); Vect_DP& args, int arg_to_integ,
//Integral_result_CX Integrate_optimal_using_table (DP (*function) (Vect_DP, I_table Itable), Vect_DP& args, int arg_to_integ, DP xmin, DP xmax,
// I_table Itable, DP xmin, DP xmax, DP req_rel_prec, DP req_abs_prec, int max_nr_pts); DP req_rel_prec, DP req_abs_prec,
//Integral_result_CX Integrate_optimal_using_table (DP (*function) (Vect_DP, I_table Itable), Vect_DP& args, int arg_to_integ, int max_nr_pts);
// I_table Itable, DP xmin, DP xmax, DP req_rel_prec, DP req_abs_prec, int max_nr_pts, std::ofstream& outfile);
} // namespace ABACUS } // namespace ABACUS

파일 보기

@ -8,7 +8,7 @@ Copyright (c) J.-S. Caux.
File: ABACUS_Matrix.h File: ABACUS_Matrix.h
Purpose: Declares square matrix class. Purpose: Declares square and rectangular matrix classes.
***********************************************************/ ***********************************************************/

파일 보기

@ -26,7 +26,8 @@ namespace ABACUS {
// Refer to GR[6] 8.23 // Refer to GR[6] 8.23
if (x <= 0.0) { if (x <= 0.0) {
std::cout << "Cosine_Integral called with real argument " << x << " <= 0, which is ill-defined because of the branch cut." << std::endl; std::cout << "Cosine_Integral called with real argument "
<< x << " <= 0, which is ill-defined because of the branch cut." << std::endl;
ABACUSerror(""); ABACUSerror("");
} }
@ -59,7 +60,8 @@ namespace ABACUS {
else { // Use high x power series else { // Use high x power series
// Ci (x) = \frac{\sin x}{x} \sum_{n=0}^\infty (-1)^n (2n)! x^{-2n} - \frac{\cos x}{x} \sum_{n=0}^\infty (-1)^n (2n+1)! x^{-2n-1} // Ci (x) = \frac{\sin x}{x} \sum_{n=0}^\infty (-1)^n (2n)! x^{-2n}
// - \frac{\cos x}{x} \sum_{n=0}^\infty (-1)^n (2n+1)! x^{-2n-1}
int n = 0; int n = 0;
DP minonetothen = 1.0; DP minonetothen = 1.0;
@ -167,7 +169,8 @@ namespace ABACUS {
int max_nr_pts = 10000; int max_nr_pts = 10000;
Integral_result integ_ln_Gamma = Integrate_optimal (ln_Gamma_for_Barnes_G_RE, args, 0, 0.0, z - 1.0, req_rel_prec, req_abs_prec, max_nr_pts); Integral_result integ_ln_Gamma = Integrate_optimal (ln_Gamma_for_Barnes_G_RE, args, 0, 0.0, z - 1.0, req_rel_prec, req_abs_prec, max_nr_pts);
return(0.5 * (z - 1.0) * (2.0 - z + logtwoPI) + (z - 1.0) * real(ln_Gamma(std::complex<double>(z - 1.0))) - integ_ln_Gamma.integ_est); return(0.5 * (z - 1.0) * (2.0 - z + logtwoPI)
+ (z - 1.0) * real(ln_Gamma(std::complex<double>(z - 1.0))) - integ_ln_Gamma.integ_est);
} }
} // namespace ABACUS } // namespace ABACUS

파일 보기

@ -39,7 +39,9 @@ namespace ABACUS {
// Inexplicably missing string functions in standard library: // Inexplicably missing string functions in standard library:
inline std::string replace(const std::string& str, const std::string& from, const std::string& to) { inline std::string replace(const std::string& str,
const std::string& from,
const std::string& to) {
std::string repl = str; std::string repl = str;
size_t start_pos = repl.find(from); size_t start_pos = repl.find(from);
if(start_pos < std::string::npos) if(start_pos < std::string::npos)
@ -47,7 +49,9 @@ namespace ABACUS {
return repl; return repl;
} }
inline std::string replace_all(const std::string& str, const std::string& from, const std::string& to) { inline std::string replace_all(const std::string& str,
const std::string& from,
const std::string& to) {
std::string repl = str; std::string repl = str;
if(from.empty()) if(from.empty())
return repl; return repl;
@ -125,7 +129,8 @@ namespace ABACUS {
int ans = 0; int ans = 0;
if (N < 0) { if (N < 0) {
std::cerr << "Error: factorial of negative number. Exited." << std::endl; std::cerr << "Error: factorial of negative number. Exited."
<< std::endl;
exit(1); exit(1);
} }
else if ( N == 1 || N == 0) ans = 1; else if ( N == 1 || N == 0) ans = 1;
@ -139,7 +144,8 @@ namespace ABACUS {
DP ans = 0.0; DP ans = 0.0;
if (N < 0) { if (N < 0) {
std::cerr << "Error: factorial of negative number. Exited." << std::endl; std::cerr << "Error: factorial of negative number. Exited."
<< std::endl;
exit(1); exit(1);
} }
else if ( N == 1 || N == 0) ans = 0.0; else if ( N == 1 || N == 0) ans = 0.0;
@ -153,7 +159,8 @@ namespace ABACUS {
long long int ans = 0; long long int ans = 0;
if (N < 0) { if (N < 0) {
std::cerr << "Error: factorial of negative number. Exited." << std::endl; std::cerr << "Error: factorial of negative number. Exited."
<< std::endl;
exit(1); exit(1);
} }
else if ( N == 1 || N == 0) ans = 1; else if ( N == 1 || N == 0) ans = 1;
@ -167,7 +174,8 @@ namespace ABACUS {
unsigned long long int ans = 0; unsigned long long int ans = 0;
if (N < 0) { if (N < 0) {
std::cerr << "Error: factorial of negative number. Exited." << std::endl; std::cerr << "Error: factorial of negative number. Exited."
<< std::endl;
exit(1); exit(1);
} }
else if ( N == 1 || N == 0) ans = 1; else if ( N == 1 || N == 0) ans = 1;
@ -182,7 +190,8 @@ namespace ABACUS {
int ans = 0; int ans = 0;
if (N1 < N2) { if (N1 < N2) {
std::cout << "Error: N1 smaller than N2 in choose. Exited." << std::endl; std::cout << "Error: N1 smaller than N2 in choose. Exited."
<< std::endl;
exit(1); exit(1);
} }
else if (N1 == N2) ans = 1; else if (N1 == N2) ans = 1;
@ -203,7 +212,8 @@ namespace ABACUS {
DP ans = 0.0; DP ans = 0.0;
if (N1 < N2) { if (N1 < N2) {
std::cout << "Error: N1 smaller than N2 in choose. Exited." << std::endl; std::cout << "Error: N1 smaller than N2 in choose. Exited."
<< std::endl;
exit(1); exit(1);
} }
else if (N1 == N2) ans = 0.0; else if (N1 == N2) ans = 0.0;
@ -219,13 +229,14 @@ namespace ABACUS {
long long int ans = 0; long long int ans = 0;
if (N1 < N2) { if (N1 < N2) {
std::cout << "Error: N1 smaller than N2 in choose. Exited." << std::endl; std::cout << "Error: N1 smaller than N2 in choose. Exited."
<< std::endl;
exit(1); exit(1);
} }
else if (N1 == N2) ans = 1; else if (N1 == N2) ans = 1;
else if (N1 < 12) ans = fact_lli(N1)/(fact_lli(N2) * fact_lli(N1 - N2)); else if (N1 < 12) ans = fact_lli(N1)/(fact_lli(N2) * fact_lli(N1 - N2));
else { else {
// Make sure that N2 is less than or equal to N1/2; if not, just switch... // Make sure that N2 is less than or equal to N1/2; if not, just switch
int N2_min = min(N2, N1 - N2); int N2_min = min(N2, N1 - N2);
ans = 1; ans = 1;
@ -244,13 +255,14 @@ namespace ABACUS {
unsigned long long int ans = 0; unsigned long long int ans = 0;
if (N1 < N2) { if (N1 < N2) {
std::cout << "Error: N1 smaller than N2 in choose. Exited." << std::endl; std::cout << "Error: N1 smaller than N2 in choose. Exited."
<< std::endl;
exit(1); exit(1);
} }
else if (N1 == N2) ans = 1; else if (N1 == N2) ans = 1;
else if (N1 < 12) ans = fact_ulli(N1)/(fact_ulli(N2) * fact_ulli(N1 - N2)); else if (N1 < 12) ans = fact_ulli(N1)/(fact_ulli(N2) * fact_ulli(N1 - N2));
else { else {
// Make sure that N2 is less than or equal to N1/2; if not, just switch... // Make sure that N2 is less than or equal to N1/2; if not, just switch
int N2_min = min(N2, N1 - N2); int N2_min = min(N2, N1 - N2);
ans = 1; ans = 1;
@ -302,6 +314,7 @@ namespace ABACUS {
return(-0.5 * II * log((1.0 + II* x)/(1.0 - II* x))); return(-0.5 * II * log((1.0 + II* x)/(1.0 - II* x)));
} }
/**************** Gamma function *******************/ /**************** Gamma function *******************/
inline std::complex<double> ln_Gamma (std::complex<double> z) inline std::complex<double> ln_Gamma (std::complex<double> z)
@ -325,7 +338,8 @@ namespace ABACUS {
+ 0.5384136432509564062961e-7 / (z + 8.0) + 0.5384136432509564062961e-7 / (z + 8.0)
- 0.4023533141268236372067e-8 / (z + 9.0); - 0.4023533141268236372067e-8 / (z + 9.0);
return(0.5 * logtwoPI + (z - 0.5) * log(z + 8.5) - (z + 8.5) + log(series)); return(0.5 * logtwoPI + (z - 0.5) * log(z + 8.5)
- (z + 8.5) + log(series));
} }
return(log(0.0)); // never called return(log(0.0)); // never called
@ -359,7 +373,8 @@ namespace ABACUS {
for (int i = 1; i < g+2; ++i) for (int i = 1; i < g+2; ++i)
series += p[i]/(z_min_1 + std::complex<double>(i)); series += p[i]/(z_min_1 + std::complex<double>(i));
return(0.5 * logtwoPI + (z_min_1 + 0.5) * log(z_min_1 + std::complex<double>(g) + 0.5) return(0.5 * logtwoPI
+ (z_min_1 + 0.5) * log(z_min_1 + std::complex<double>(g) + 0.5)
- (z_min_1 + std::complex<double>(g) + 0.5) + log(series)); - (z_min_1 + std::complex<double>(g) + 0.5) + log(series));
} }
@ -376,16 +391,25 @@ namespace ABACUS {
int g = 7; int g = 7;
double p[9] = { 0.99999999999980993, 676.5203681218851, -1259.1392167224028, double p[9] = {
771.32342877765313, -176.61502916214059, 12.507343278686905, 0.99999999999980993,
-0.13857109526572012, 9.9843695780195716e-6, 1.5056327351493116e-7}; 676.5203681218851,
-1259.1392167224028,
771.32342877765313,
-176.61502916214059,
12.507343278686905,
-0.13857109526572012,
9.9843695780195716e-6,
1.5056327351493116e-7
};
std::complex<double> z_min_1 = z - 1.0; std::complex<double> z_min_1 = z - 1.0;
std::complex<double> series = p[0]; std::complex<double> series = p[0];
for (int i = 1; i < g+2; ++i) for (int i = 1; i < g+2; ++i)
series += p[i]/(z_min_1 + std::complex<double>(i)); series += p[i]/(z_min_1 + std::complex<double>(i));
return(0.5 * logtwoPI + (z_min_1 + 0.5) * log(z_min_1 + std::complex<double>(g) + 0.5) return(0.5 * logtwoPI
+ (z_min_1 + 0.5) * log(z_min_1 + std::complex<double>(g) + 0.5)
- (z_min_1 + std::complex<double>(g) + 0.5) + log(series)); - (z_min_1 + std::complex<double>(g) + 0.5) + log(series));
} }
@ -396,7 +420,8 @@ namespace ABACUS {
inline long long int Partition_Function (int n) inline long long int Partition_Function (int n)
{ {
// Returns the value of the partition function p(n), giving the number of partitions of n into integers. // Returns the value of the partition function p(n),
// giving the number of partitions of n into integers.
if (n < 0) ABACUSerror("Calling Partition_Function for n < 0."); if (n < 0) ABACUSerror("Calling Partition_Function for n < 0.");
else if (n == 0 || n == 1) return(1LL); else if (n == 0 || n == 1) return(1LL);

파일 보기

@ -45,7 +45,8 @@ namespace ABACUS {
public: public:
Young_Tableau (); // empty constructor, does nothing Young_Tableau (); // empty constructor, does nothing
Young_Tableau (int Nr, int Nc); // constructs empty tableau Young_Tableau (int Nr, int Nc); // constructs empty tableau
Young_Tableau (int Nr, int Nc, long long int idnr); // constructs the tableau corresponding to identification number idnr // constructs the tableau with identification number idnr:
Young_Tableau (int Nr, int Nc, long long int idnr);
Young_Tableau (const Young_Tableau& RefTableau); // copy constructor Young_Tableau (const Young_Tableau& RefTableau); // copy constructor
Young_Tableau (int Nr, int Nc, const Young_Tableau& RefTableau); Young_Tableau (int Nr, int Nc, const Young_Tableau& RefTableau);
Young_Tableau& operator= (const Young_Tableau& RefTableau); // assignment Young_Tableau& operator= (const Young_Tableau& RefTableau); // assignment
@ -55,11 +56,13 @@ namespace ABACUS {
Young_Tableau& Compute_Map (long long int idnr_to_reach); // fills the map vector Young_Tableau& Compute_Map (long long int idnr_to_reach); // fills the map vector
Young_Tableau& Distribute_boxes (int nboxes_to_dist, int level); Young_Tableau& Distribute_boxes (int nboxes_to_dist, int level);
Young_Tableau& Set_to_id (long long int idnr); // sets the tableau to the one corresponding to idnr Young_Tableau& Set_to_id (long long int idnr); // sets the tableau to the one corresponding to idnr
Young_Tableau& Set_to_id (long long int idnr, int option); // sets the tableau to the one corresponding to idnr according to rule option // sets the tableau to the one corresponding to idnr according to rule option:
Young_Tableau& Set_to_id (long long int idnr, int option);
Young_Tableau& Set_Row_L (Vect<int>& Row_Lengths); // set row lengths Young_Tableau& Set_Row_L (Vect<int>& Row_Lengths); // set row lengths
Young_Tableau& Set_Col_L_given_Row_L (); // sets the Col_L array self-consistently Young_Tableau& Set_Col_L_given_Row_L (); // sets the Col_L array self-consistently
Young_Tableau& Set_Row_L_given_Col_L (); // sets the Col_L array self-consistently Young_Tableau& Set_Row_L_given_Col_L (); // sets the Col_L array self-consistently
long long int Compute_Descendent_id (int option, Vect<int>& Desc_Row_L, int Nrows_Desc, int Ncols_Desc, long long int Compute_Descendent_id (int option, Vect<int>& Desc_Row_L,
int Nrows_Desc, int Ncols_Desc,
const Young_Tableau& RefTableau); const Young_Tableau& RefTableau);
Young_Tableau& Compute_id(); // computes the id number of tableau Young_Tableau& Compute_id(); // computes the id number of tableau
Young_Tableau& Compute_id(int option); // computes the id number of tableau according to rule option Young_Tableau& Compute_id(int option); // computes the id number of tableau according to rule option
@ -69,7 +72,8 @@ namespace ABACUS {
bool Raise_Row (int i); bool Raise_Row (int i);
bool Lower_Col (int i); bool Lower_Col (int i);
bool Raise_Col (int i); bool Raise_Col (int i);
bool Raise_Lowest_Nonzero_Row(); // adds a box to the lowest nonzero length Row, recomputes id, returns true if tableau has changed // adds a box to the lowest nonzero length Row, recomputes id, returns true if tableau has changed:
bool Raise_Lowest_Nonzero_Row();
bool Raise_Next_to_Lowest_Nonzero_Row(); // same thing, but for Row under lowest nonzero length one. bool Raise_Next_to_Lowest_Nonzero_Row(); // same thing, but for Row under lowest nonzero length one.
bool Move_Box_from_Col_to_Col (int ifrom, int ito); bool Move_Box_from_Col_to_Col (int ifrom, int ito);
@ -83,10 +87,12 @@ namespace ABACUS {
inline int Nr_Nonzero_Rows (const Vect<Young_Tableau>& Tableau_ref) inline int Nr_Nonzero_Rows (const Vect<Young_Tableau>& Tableau_ref)
{ {
// This function checks the number of rows containing at least one box /*
// in the whole vector of Young tableaux given as argument. This function checks the number of rows containing at least one box
// The usefulness is to force descent of states in which only a few in the whole vector of Young tableaux given as argument.
// excitations have started dispersing. The usefulness is to force descent of states in which only a few
excitations have started dispersing.
*/
int nr_nonzero_rows = 0; int nr_nonzero_rows = 0;
for (int i = 0; i < Tableau_ref.size(); ++i) for (int i = 0; i < Tableau_ref.size(); ++i)

파일 보기

@ -819,7 +819,7 @@ namespace ABACUS {
<< exp(-paused_thread_data.logscale * paused_thread_data.lowest_il_with_nthreads_neq_0) << endl; << exp(-paused_thread_data.logscale * paused_thread_data.lowest_il_with_nthreads_neq_0) << endl;
LOG_outfile << "Resulting info: " << scan_info << endl; LOG_outfile << "Resulting info: " << scan_info << endl;
} }
LOG_outfile << "Code version " << ABACUS_VERSION << ", copyright J.-S. Caux." << endl << endl; LOG_outfile << "ABACUS version " << ABACUS_VERSION << ", copyright J.-S. Caux." << endl << endl;
LOG_outfile.close(); LOG_outfile.close();
} }

파일 보기

@ -408,7 +408,7 @@ namespace ABACUS {
LOG_outfile << "Refining in parallel mode using " << nr_processors_at_newlevel << " processors." LOG_outfile << "Refining in parallel mode using " << nr_processors_at_newlevel << " processors."
<< endl << "Refining info: " << scan_info_refinement << endl << "Refining info: " << scan_info_refinement
<< endl << "Resulting info: " << scan_info << endl; << endl << "Resulting info: " << scan_info << endl;
LOG_outfile << "Code version " << ABACUS_VERSION << ", copyright J.-S. Caux." << endl; LOG_outfile << "ABACUS version " << ABACUS_VERSION << ", copyright J.-S. Caux." << endl;
LOG_outfile.close(); LOG_outfile.close();
return; return;