1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- /**********************************************************
-
- This software is part of J.-S. Caux's ABACUS library.
-
- Copyright (c).
-
- -----------------------------------------------------------
-
- File: JSC_XXZ_h0.h
-
- Purpose: Declares classes for XXZ in zero field: quantum group stuff.
-
-
- ***********************************************************/
-
- #ifndef _XXZ_h0_
- #define _XXZ_h0_
-
- #include "JSC.h"
-
- //const DP default_req_prec = 1.0e-14;
- //const int default_max_rec = 10;
-
- namespace JSC {
-
- /*
- inline DP Integrand_xi_11 (Vect_DP args)
- {
- // args[0] corresponds to t, args[1] to rho, args[2] to xi
- //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]);
- 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))
- + 2.0 * pow(sin(2.0 * args[0] * args[1]), 2.0))/args[0]);
- }
-
- inline DP Integrand_xi_12 (Vect_DP args)
- {
- DP expm2t = exp(-2.0*args[0]);
- DP expm2txi = exp(-2.0*args[0]*args[2]);
- //return(cos(4.0 * args[0] * args[1]) * expm2t * (3.0 + expm2t)/ (args[0] * (1.0 + expm2t) * (1.0 + expm2t)));
- 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)));
- }
- */
- /*
- inline DP Integrand_xi_2 (Vect_DP args)
- {
- DP answer = 0.0;
- if (args[0] < 1.0)
- //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));
- 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));
- else if (args[0] >= 1.0) {
- DP expm2t = exp(-2.0 * args[0]);
- DP expm2txi = exp(-2.0*args[0]*args[2]);
- //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));
- answer = 8.0 * ((1.0 - expm2t*expm2txi)/(1.0 - expm2t*expm2txi)) * expm2t *
- pow(sin(2.0 * args[0] * args[1]), 2.0)/(args[0] * (1.0 - expm2t) * (1.0 + expm2t) * (1.0 + expm2t));
- }
- return(answer);
- }
- */
-
- DP I_xi_integral (DP xi, DP rho, DP req_prec, int max_nr_pts);
-
-
- /********************* TWO SPINONS ********************/
- DP Szz_XXZ_h0_2spinons (DP k, DP omega, Integral_table Itable);
- DP Szz_XXZ_h0_2spinons (Vect_DP args, Integral_table Itable);
- DP Szz_XXZ_h0_2spinons_alt (Vect_DP args, Integral_table Itable);
- DP Szz_XXZ_h0_2spinons_omega (Vect_DP args, Integral_table Itable);
- DP Szz_XXZ_h0_2spinons_omega_alt (Vect_DP args, Integral_table Itable);
- DP Szz_XXZ_h0_2spinons_intomega (Vect_DP args, Integral_table Itable);
- DP Szz_XXZ_h0_2spinons_intomega_alt (Vect_DP args, Integral_table Itable);
- DP Szz_XXZ_h0_2spinons_check_sumrule (DP Delta, DP req_prec, int max_nr_pts, Integral_table Itable);
- DP Szz_XXZ_h0_2spinons_check_sumrule_alt (DP Delta, DP req_prec, int max_nr_pts, Integral_table Itable);
- DP Fixed_k_sumrule_omega_Szz_XXZ_h0_N (DP Delta, DP k);
- DP GSE_XXZ_h0 (DP Delta, DP req_prec, int max_nr_pts);
- DP Fixed_k_sumrule_omega_Szz_XXZ_h0 (DP Delta, DP k, DP req_prec, int max_nr_pts);
- DP Szz_XXZ_h0_2spinons_check_fixed_k_Szz_sumrule (DP Delta, DP k, DP req_prec, int max_nr_pts, Integral_table Itable);
- 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);
-
- //******************************** Functions to produce files similar to ABACUS **********************************
- void Produce_Szz_XXZ_h0_2spinons_file (DP Delta, int N, int Nomega, DP omegamax, Integral_table Itable);
- void Produce_Szz_XXZ_h0_2spinons_fixed_K_file (DP Delta, DP Kover2PI, int Nomega, Integral_table Itable);
-
- } // namespace JSC
-
- #endif
|