123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- /**********************************************************
-
- This software is part of J.-S. Caux's ABACUS library.
-
- Copyright (c) J.-S. Caux.
-
- -----------------------------------------------------------
-
- File: ABACUS_Usage_Example_LiebLin.cc
-
- Purpose: examples of calculations for Lieb-Liniger
-
- ***********************************************************/
-
- #include "ABACUS.h"
-
- using namespace std;
- using namespace ABACUS;
-
-
- int main()
- {
- clock_t StartTime = clock();
-
- DP c_int = 25.0;
- DP L = 50.0;
- int N = 10;
- DP nbar_required = 1.0;
- DP kBT = 4.0;
- int Npts = 4*N;
- DP req_diff = 1.0e-4;
- int Max_Secs = 60;
-
-
- if (true) { // State-by-state checks
-
- DP c_int = 25.0;
- DP L = 50.0;
- int N = 10;
-
- LiebLin_Bethe_State gstate (c_int, L, N);
- gstate.Compute_All(true);
- cout << setprecision(16) << gstate << endl;
-
- LiebLin_Bethe_State estate (c_int, L, N-1);
- //estate.Set_to_ids (1LL, 1LL, 2LL, 0LL);
- //estate.Set_to_Label ("64_2_028ysn1", gstate.Ix2);
- //for (int i = 0; i < N; ++i) estate.Ix2[i] += 2;
- // estate.Ix2[0] -= 8;
- // estate.Ix2[1] -= 4;
- // estate.Ix2[N-3] += 2;
- // estate.Ix2[N-2] += 4;
- // estate.Ix2[N-1] += 6;
- // estate.Set_Label_from_Ix2(gstate.Ix2);
- estate.Compute_All(true);
- cout << setprecision(16) << estate << endl;
-
- //Scan_LiebLin ('o', estate, "28_3_i3y55yf3", -2*N, 2*N, 60, 1.0e+6, 0, 0, 1);
- //stringstream filenameprefix;
- //Data_File_Name (filenameprefix, 'd', -2*N, 2*N, 0.0, estate, estate, "28_3_i3y55yf3");
- //string prefix = filenameprefix.str();
-
- DP ommin = 0.0; DP ommax = 10.0; DP gwidth = 1.0;// meaningless
- int Nom = 10;
- DP normalization = twoPI * L;
-
- //Smoothen_RAW_into_SF (filenameprefix.str(), -2*N, 2*N, 0, ommin, ommax, Nom, gwidth, normalization, L);
-
- //Density-density matrix elements:
- // cout << setprecision(16) << "omega = " << estate.E - gstate.E << "\t"
- // << exp(real(ln_Density_ME(gstate, estate))) << "\t" << exp(real(ln_Density_ME(estate, gstate))) << endl;
-
- //Field operator matrix elements:
- // cout << "omega\tiK\t< estate | Psi | gstate > matrix element:" << endl;
- // cout << setprecision(16) << estate.E - gstate.E << "\t" << estate.iK - gstate.iK << "\t"
- // << exp(ln_Psi_ME(estate, gstate)) << endl;
-
- //LiebLin_Bethe_State flipstate = estate;
- //flipstate.Parity_Flip();
- //cout << "Flipping: " << endl;
- //cout << "omega = " << flipstate.E - gstate.E << "\t" << exp(real(ln_Density_ME(gstate, flipstate))) << endl;
-
- // Finite T checks:
- DP kBT = 1.0;
-
- // Delta is the number of sites involved in the smoothing of the entropy
- //int Delta = int(sqrt(N))/2;//6;//N/20;
- //DP epsilon = log(L)/L;
- DP epsilon = log(L)/L;
-
- // Construct the finite-size saddle-point state:
- //LiebLin_Bethe_State spstate = Canonical_Saddle_Point_State (c_int, L, N, kBT, Delta);
- //LiebLin_Bethe_State spstate = Canonical_Saddle_Point_State (c_int, L, N, kBT, epsilon);
- //spstate.Compute_All(true);
-
- //cout << spstate << endl;
-
- }
-
-
- clock_t StopTime = clock();
-
- //cout << "Total time: " << (StopTime - StartTime)/*/CLOCKS_PER_SEC*/ << " hundreths of a second."
- cout << "Total time: " << DP(StopTime - StartTime)/CLOCKS_PER_SEC << " seconds."
- << endl;
-
- return(0);
- }
|