|
@@ -853,9 +853,9 @@ namespace ABACUS {
|
853
|
853
|
|
854
|
854
|
// General version for equilibrium correlators at generic (possibly finite) temperature:
|
855
|
855
|
|
856
|
|
- void Scan_LiebLin (char whichDSF, DP c_int, DP L, int N, int iKmin, int iKmax, DP kBT,
|
857
|
|
- int Max_Secs, DP target_sumrule, bool refine,
|
858
|
|
- int paralevel, Vect<int> rank, Vect<int> nr_processors)
|
|
856
|
+ Scan_Info Scan_LiebLin (char whichDSF, DP c_int, DP L, int N, int iKmin, int iKmax, DP kBT,
|
|
857
|
+ int Max_Secs, DP target_sumrule, bool refine,
|
|
858
|
+ int paralevel, Vect<int> rank, Vect<int> nr_processors)
|
859
|
859
|
{
|
860
|
860
|
|
861
|
861
|
// This function scans the Hilbert space of the LiebLin gas,
|
|
@@ -960,30 +960,26 @@ namespace ABACUS {
|
960
|
960
|
spsfile.close();
|
961
|
961
|
|
962
|
962
|
// Perform the scan:
|
963
|
|
- General_Scan (whichDSF, iKmin, iKmax, 100000000, kBT, spstate, SeedScanState, "",
|
964
|
|
- Max_Secs, target_sumrule, refine, paralevel, rank, nr_processors);
|
965
|
|
-
|
966
|
|
- return;
|
|
963
|
+ return General_Scan (whichDSF, iKmin, iKmax, 100000000, kBT, spstate, SeedScanState, "",
|
|
964
|
+ Max_Secs, target_sumrule, refine, paralevel, rank, nr_processors);
|
967
|
965
|
}
|
968
|
966
|
|
969
|
|
- void Scan_LiebLin (char whichDSF, DP c_int, DP L, int N, int iKmin, int iKmax, DP kBT,
|
970
|
|
- int Max_Secs, DP target_sumrule, bool refine)
|
|
967
|
+ Scan_Info Scan_LiebLin (char whichDSF, DP c_int, DP L, int N, int iKmin, int iKmax, DP kBT,
|
|
968
|
+ int Max_Secs, DP target_sumrule, bool refine)
|
971
|
969
|
{
|
972
|
970
|
int paralevel = 0;
|
973
|
971
|
Vect<int> rank(0,1);
|
974
|
972
|
Vect<int> nr_processors(0,1);
|
975
|
973
|
|
976
|
|
- Scan_LiebLin (whichDSF, c_int, L, N, iKmin, iKmax, kBT, Max_Secs, target_sumrule,
|
977
|
|
- refine, paralevel, rank, nr_processors);
|
978
|
|
-
|
979
|
|
- return;
|
|
974
|
+ return Scan_LiebLin (whichDSF, c_int, L, N, iKmin, iKmax, kBT, Max_Secs, target_sumrule,
|
|
975
|
+ refine, paralevel, rank, nr_processors);
|
980
|
976
|
}
|
981
|
977
|
|
982
|
978
|
|
983
|
979
|
// Scanning on an excited state defined by a set of Ix2:
|
984
|
|
- void Scan_LiebLin (char whichDSF, LiebLin_Bethe_State AveragingState, string defaultScanStatename,
|
985
|
|
- int iKmin, int iKmax, int Max_Secs, DP target_sumrule, bool refine,
|
986
|
|
- int paralevel, Vect<int> rank, Vect<int> nr_processors)
|
|
980
|
+ Scan_Info Scan_LiebLin (char whichDSF, LiebLin_Bethe_State AveragingState, string defaultScanStatename,
|
|
981
|
+ int iKmin, int iKmax, int Max_Secs, DP target_sumrule, bool refine,
|
|
982
|
+ int paralevel, Vect<int> rank, Vect<int> nr_processors)
|
987
|
983
|
{
|
988
|
984
|
// This function is as Scan_LiebLin for generic T defined above, except that the
|
989
|
985
|
// averaging is now done on a state defined by AveragingStateIx2
|
|
@@ -1024,30 +1020,28 @@ namespace ABACUS {
|
1024
|
1020
|
DP kBT = 0.0;
|
1025
|
1021
|
|
1026
|
1022
|
// Perform the scan:
|
1027
|
|
- General_Scan (whichDSF, iKmin, iKmax, 100000000, kBT, AveragingState, SeedScanState, defaultScanStatename,
|
1028
|
|
- Max_Secs, target_sumrule, refine, paralevel, rank, nr_processors);
|
1029
|
|
-
|
1030
|
|
- return;
|
1031
|
|
-
|
|
1023
|
+ return General_Scan (whichDSF, iKmin, iKmax, 100000000, kBT,
|
|
1024
|
+ AveragingState, SeedScanState, defaultScanStatename,
|
|
1025
|
+ Max_Secs, target_sumrule, refine, paralevel, rank, nr_processors);
|
1032
|
1026
|
}
|
1033
|
1027
|
|
1034
|
1028
|
// Simplified function call of the above:
|
1035
|
|
- void Scan_LiebLin (char whichDSF, LiebLin_Bethe_State AveragingState, string defaultScanStatename,
|
1036
|
|
- int iKmin, int iKmax, int Max_Secs, DP target_sumrule, bool refine)
|
|
1029
|
+ Scan_Info Scan_LiebLin (char whichDSF, LiebLin_Bethe_State AveragingState, string defaultScanStatename,
|
|
1030
|
+ int iKmin, int iKmax, int Max_Secs, DP target_sumrule, bool refine)
|
1037
|
1031
|
{
|
1038
|
1032
|
int paralevel = 0;
|
1039
|
1033
|
Vect<int> rank(0,1);
|
1040
|
1034
|
Vect<int> nr_processors(0,1);
|
1041
|
1035
|
|
1042
|
|
- Scan_LiebLin (whichDSF, AveragingState, defaultScanStatename, iKmin, iKmax, Max_Secs,
|
1043
|
|
- target_sumrule, refine, paralevel, rank, nr_processors);
|
1044
|
|
-
|
1045
|
|
- return;
|
|
1036
|
+ return Scan_LiebLin (whichDSF, AveragingState, defaultScanStatename, iKmin, iKmax, Max_Secs,
|
|
1037
|
+ target_sumrule, refine, paralevel, rank, nr_processors);
|
1046
|
1038
|
}
|
1047
|
1039
|
|
1048
|
1040
|
// Scanning on a previously-defined AveragingState
|
1049
|
|
- void Scan_Heis (char whichDSF, XXZ_Bethe_State& AveragingState, string defaultScanStatename, int iKmin, int iKmax,
|
1050
|
|
- int Max_Secs, DP target_sumrule, bool refine, int paralevel, Vect<int> rank, Vect<int> nr_processors)
|
|
1041
|
+ Scan_Info Scan_Heis (char whichDSF, XXZ_Bethe_State& AveragingState, string defaultScanStatename,
|
|
1042
|
+ int iKmin, int iKmax,
|
|
1043
|
+ int Max_Secs, DP target_sumrule, bool refine,
|
|
1044
|
+ int paralevel, Vect<int> rank, Vect<int> nr_processors)
|
1051
|
1045
|
{
|
1052
|
1046
|
// General state scanning for Heisenberg chains
|
1053
|
1047
|
|
|
@@ -1070,8 +1064,10 @@ namespace ABACUS {
|
1070
|
1064
|
}
|
1071
|
1065
|
|
1072
|
1066
|
// Scanning on a previously-defined AveragingState
|
1073
|
|
- void Scan_Heis (char whichDSF, XXX_Bethe_State& AveragingState, string defaultScanStatename, int iKmin, int iKmax,
|
1074
|
|
- int Max_Secs, DP target_sumrule, bool refine, int paralevel, Vect<int> rank, Vect<int> nr_processors)
|
|
1067
|
+ Scan_Info Scan_Heis (char whichDSF, XXX_Bethe_State& AveragingState, string defaultScanStatename,
|
|
1068
|
+ int iKmin, int iKmax,
|
|
1069
|
+ int Max_Secs, DP target_sumrule, bool refine,
|
|
1070
|
+ int paralevel, Vect<int> rank, Vect<int> nr_processors)
|
1075
|
1071
|
{
|
1076
|
1072
|
// General state scanning for Heisenberg chains
|
1077
|
1073
|
|
|
@@ -1088,14 +1084,16 @@ namespace ABACUS {
|
1088
|
1084
|
else ABACUSerror("Unknown whichDSF in Scan_Heis.");
|
1089
|
1085
|
|
1090
|
1086
|
// Now the scan itself
|
1091
|
|
- General_Scan (whichDSF, iKmin, iKmax, AveragingState.chain.Nsites, 0.0, AveragingState, SeedScanState,
|
1092
|
|
- defaultScanStatename, Max_Secs, target_sumrule, refine, paralevel, rank, nr_processors);
|
|
1087
|
+ return General_Scan (whichDSF, iKmin, iKmax, AveragingState.chain.Nsites, 0.0, AveragingState, SeedScanState,
|
|
1088
|
+ defaultScanStatename, Max_Secs, target_sumrule, refine, paralevel, rank, nr_processors);
|
1093
|
1089
|
|
1094
|
1090
|
}
|
1095
|
1091
|
|
1096
|
1092
|
// Scanning on a previously-defined AveragingState
|
1097
|
|
- void Scan_Heis (char whichDSF, XXZ_gpd_Bethe_State& AveragingState, string defaultScanStatename, int iKmin, int iKmax,
|
1098
|
|
- int Max_Secs, DP target_sumrule, bool refine, int paralevel, Vect<int> rank, Vect<int> nr_processors)
|
|
1093
|
+ Scan_Info Scan_Heis (char whichDSF, XXZ_gpd_Bethe_State& AveragingState, string defaultScanStatename,
|
|
1094
|
+ int iKmin, int iKmax,
|
|
1095
|
+ int Max_Secs, DP target_sumrule, bool refine,
|
|
1096
|
+ int paralevel, Vect<int> rank, Vect<int> nr_processors)
|
1099
|
1097
|
{
|
1100
|
1098
|
// General state scanning for Heisenberg chains
|
1101
|
1099
|
|
|
@@ -1112,14 +1110,15 @@ namespace ABACUS {
|
1112
|
1110
|
else ABACUSerror("Unknown whichDSF in Scan_Heis.");
|
1113
|
1111
|
|
1114
|
1112
|
// Now the scan itself
|
1115
|
|
- General_Scan (whichDSF, iKmin, iKmax, AveragingState.chain.Nsites, 0.0, AveragingState, SeedScanState,
|
1116
|
|
- defaultScanStatename, Max_Secs, target_sumrule, refine, paralevel, rank, nr_processors);
|
|
1113
|
+ return General_Scan (whichDSF, iKmin, iKmax, AveragingState.chain.Nsites, 0.0, AveragingState, SeedScanState,
|
|
1114
|
+ defaultScanStatename, Max_Secs, target_sumrule, refine, paralevel, rank, nr_processors);
|
1117
|
1115
|
|
1118
|
1116
|
}
|
1119
|
1117
|
|
1120
|
1118
|
|
1121
|
|
- void Scan_Heis (char whichDSF, DP Delta, int N, int M, int iKmin, int iKmax,
|
1122
|
|
- int Max_Secs, DP target_sumrule, bool refine, int paralevel, Vect<int> rank, Vect<int> nr_processors)
|
|
1119
|
+ Scan_Info Scan_Heis (char whichDSF, DP Delta, int N, int M, int iKmin, int iKmax,
|
|
1120
|
+ int Max_Secs, DP target_sumrule, bool refine,
|
|
1121
|
+ int paralevel, Vect<int> rank, Vect<int> nr_processors)
|
1123
|
1122
|
{
|
1124
|
1123
|
// This function scans the Hilbert space of the Heisenberg spin-1/2 chain
|
1125
|
1124
|
// for the function identified by whichDSF.
|
|
@@ -1190,25 +1189,24 @@ namespace ABACUS {
|
1190
|
1189
|
else ABACUSerror("Unknown whichDSF in Scan_Heis.");
|
1191
|
1190
|
|
1192
|
1191
|
// Now the scan itself
|
1193
|
|
- General_Scan (whichDSF, iKmin, iKmax, N, 0.0, GroundState, SeedScanState, "",
|
1194
|
|
- Max_Secs, target_sumrule, refine, paralevel, rank, nr_processors);
|
|
1192
|
+ return General_Scan (whichDSF, iKmin, iKmax, N, 0.0, GroundState, SeedScanState, "",
|
|
1193
|
+ Max_Secs, target_sumrule, refine, paralevel, rank, nr_processors);
|
1195
|
1194
|
}
|
1196
|
1195
|
|
1197
|
1196
|
else ABACUSerror("Delta out of range in Heis_Structure_Factor");
|
1198
|
1197
|
|
1199
|
|
- return;
|
|
1198
|
+ return Scan_Info();
|
1200
|
1199
|
}
|
1201
|
1200
|
|
1202
|
|
- void Scan_Heis (char whichDSF, DP Delta, int N, int M, int iKmin, int iKmax,
|
1203
|
|
- int Max_Secs, DP target_sumrule, bool refine)
|
|
1201
|
+ Scan_Info Scan_Heis (char whichDSF, DP Delta, int N, int M, int iKmin, int iKmax,
|
|
1202
|
+ int Max_Secs, DP target_sumrule, bool refine)
|
1204
|
1203
|
{
|
1205
|
1204
|
int paralevel = 0;
|
1206
|
1205
|
Vect<int> rank(0,1);
|
1207
|
1206
|
Vect<int> nr_processors(0,1);
|
1208
|
1207
|
|
1209
|
|
- Scan_Heis (whichDSF, Delta, N, M, iKmin, iKmax, Max_Secs, target_sumrule, refine, paralevel, rank, nr_processors);
|
1210
|
|
-
|
1211
|
|
- return;
|
|
1208
|
+ return Scan_Heis (whichDSF, Delta, N, M, iKmin, iKmax,
|
|
1209
|
+ Max_Secs, target_sumrule, refine, paralevel, rank, nr_processors);
|
1212
|
1210
|
}
|
1213
|
1211
|
|
1214
|
1212
|
|