/********************************************************** 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