You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

JSC_XXZ_h0.h 3.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /**********************************************************
  2. This software is part of J.-S. Caux's ABACUS library.
  3. Copyright (c).
  4. -----------------------------------------------------------
  5. File: JSC_XXZ_h0.h
  6. Purpose: Declares classes for XXZ in zero field: quantum group stuff.
  7. ***********************************************************/
  8. #ifndef _XXZ_h0_
  9. #define _XXZ_h0_
  10. #include "JSC.h"
  11. //const DP default_req_prec = 1.0e-14;
  12. //const int default_max_rec = 10;
  13. namespace JSC {
  14. /*
  15. inline DP Integrand_xi_11 (Vect_DP args)
  16. {
  17. // args[0] corresponds to t, args[1] to rho, args[2] to xi
  18. //return((exp(args[0]) * sinh(args[0]) * cos(4.0 * args[0] * args[1])/(2.0 * pow(cosh(args[0]), 2.0)) + 2.0 * pow(sin(2.0 * args[0] * args[1]), 2.0))/args[0]);
  19. return((sinh(args[0]*(1.0 + args[2])) * sinh(args[0]) * cos(4.0 * args[0] * args[1])/(2.0 * sinh(args[0] * args[2]) * pow(cosh(args[0]), 2.0))
  20. + 2.0 * pow(sin(2.0 * args[0] * args[1]), 2.0))/args[0]);
  21. }
  22. inline DP Integrand_xi_12 (Vect_DP args)
  23. {
  24. DP expm2t = exp(-2.0*args[0]);
  25. DP expm2txi = exp(-2.0*args[0]*args[2]);
  26. //return(cos(4.0 * args[0] * args[1]) * expm2t * (3.0 + expm2t)/ (args[0] * (1.0 + expm2t) * (1.0 + expm2t)));
  27. return(cos(4.0 * args[0] * args[1]) * (expm2t * (3.0 * (1.0 + expm2txi) + expm2t) + expm2txi) / (args[0] * (1.0 - expm2txi) * (1.0 + expm2t) * (1.0 + expm2t)));
  28. }
  29. */
  30. /*
  31. inline DP Integrand_xi_2 (Vect_DP args)
  32. {
  33. DP answer = 0.0;
  34. if (args[0] < 1.0)
  35. //answer = exp(args[0]) * pow(sin(2.0 * args[0] * args[1]), 2.0)/(args[0] * sinh(args[0]) * pow(cosh(args[0]), 2.0));
  36. answer = sinh(args[0] * (args[2] + 1.0)) * pow(sin(2.0 * args[0] * args[1]), 2.0)/(args[0] * sinh(args[2] * args[0]) * sinh(args[0]) * pow(cosh(args[0]), 2.0));
  37. else if (args[0] >= 1.0) {
  38. DP expm2t = exp(-2.0 * args[0]);
  39. DP expm2txi = exp(-2.0*args[0]*args[2]);
  40. //answer = 8.0 * expm2t * pow(sin(2.0 * args[0] * args[1]), 2.0)/(args[0] * (1.0 - expm2t) * (1.0 + expm2t) * (1.0 + expm2t));
  41. answer = 8.0 * ((1.0 - expm2t*expm2txi)/(1.0 - expm2t*expm2txi)) * expm2t *
  42. pow(sin(2.0 * args[0] * args[1]), 2.0)/(args[0] * (1.0 - expm2t) * (1.0 + expm2t) * (1.0 + expm2t));
  43. }
  44. return(answer);
  45. }
  46. */
  47. DP I_xi_integral (DP xi, DP rho, DP req_prec, int max_nr_pts);
  48. /********************* TWO SPINONS ********************/
  49. DP Szz_XXZ_h0_2spinons (DP k, DP omega, Integral_table Itable);
  50. DP Szz_XXZ_h0_2spinons (Vect_DP args, Integral_table Itable);
  51. DP Szz_XXZ_h0_2spinons_alt (Vect_DP args, Integral_table Itable);
  52. DP Szz_XXZ_h0_2spinons_omega (Vect_DP args, Integral_table Itable);
  53. DP Szz_XXZ_h0_2spinons_omega_alt (Vect_DP args, Integral_table Itable);
  54. DP Szz_XXZ_h0_2spinons_intomega (Vect_DP args, Integral_table Itable);
  55. DP Szz_XXZ_h0_2spinons_intomega_alt (Vect_DP args, Integral_table Itable);
  56. DP Szz_XXZ_h0_2spinons_check_sumrule (DP Delta, DP req_prec, int max_nr_pts, Integral_table Itable);
  57. DP Szz_XXZ_h0_2spinons_check_sumrule_alt (DP Delta, DP req_prec, int max_nr_pts, Integral_table Itable);
  58. DP Fixed_k_sumrule_omega_Szz_XXZ_h0_N (DP Delta, DP k);
  59. DP GSE_XXZ_h0 (DP Delta, DP req_prec, int max_nr_pts);
  60. DP Fixed_k_sumrule_omega_Szz_XXZ_h0 (DP Delta, DP k, DP req_prec, int max_nr_pts);
  61. DP Szz_XXZ_h0_2spinons_check_fixed_k_Szz_sumrule (DP Delta, DP k, DP req_prec, int max_nr_pts, Integral_table Itable);
  62. DP Szz_XXZ_h0_2spinons_check_fixed_k_Szz_sumrule_alt (DP Delta, DP k, DP req_prec, int max_nr_pts, Integral_table Itable);
  63. //******************************** Functions to produce files similar to ABACUS **********************************
  64. void Produce_Szz_XXZ_h0_2spinons_file (DP Delta, int N, int Nomega, DP omegamax, Integral_table Itable);
  65. void Produce_Szz_XXZ_h0_2spinons_fixed_K_file (DP Delta, DP Kover2PI, int Nomega, Integral_table Itable);
  66. } // namespace JSC
  67. #endif