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.

XXX_VOA_par.cc 2.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. /****************************************************************
  2. This software is part of J.-S. Caux's C++ library.
  3. Copyright (c) J.-S. Caux.
  4. -----------------------------------------------------------
  5. XXX_VOA_par.cc
  6. Zero field structure factor for XXX, 4 spinons, parallel (MPI).
  7. ******************************************************************/
  8. #include "mpi.h"
  9. #include "ABACUS.h"
  10. using namespace std;
  11. namespace ABACUS {
  12. // ***************** THIS IS NOT FINISHED !!!!!!!!!!!!!!!!!!!!
  13. Integral_result SF_4p_opt_par (MPI_Comm comm, DP k, DP req_prec, int Npts_w, int Npts_K, int Npts_W, I_table Itable)
  14. {
  15. stringstream SFraw_stringstream;
  16. string SFraw_string;
  17. SFraw_stringstream << "SF_4p_k_" << k << "_prec_" << req_prec << "_Npts_" << Npts_w << "_" << Npts_K
  18. << "_" << Npts_W << ".raw";
  19. SFraw_string = SFraw_stringstream.str();
  20. const char* SFraw_Cstr = SFraw_string.c_str();
  21. stringstream SF_stringstream;
  22. string SF_string;
  23. SF_stringstream << "SF_4p_k_" << k << "_prec_" << req_prec << "_Npts_" << Npts_w << "_" << Npts_K
  24. << "_" << Npts_W << ".dat";
  25. SF_string = SF_stringstream.str();
  26. const char* SF_Cstr = SF_string.c_str();
  27. stringstream SFsrc_stringstream;
  28. string SFsrc_string;
  29. SFsrc_stringstream << "SF_4p_k_" << k << "_prec_" << req_prec << "_Npts_" << Npts_w << "_" << Npts_K
  30. << "_" << Npts_W << ".src";
  31. SFsrc_string = SFsrc_stringstream.str();
  32. const char* SFsrc_Cstr = SFsrc_string.c_str();
  33. ofstream SFraw_outfile;
  34. SFraw_outfile.open(SFraw_Cstr);
  35. ofstream SFsrc_outfile;
  36. SFsrc_outfile.open(SFsrc_Cstr);
  37. Vect_DP args_to_SF(5);
  38. args_to_SF[0] = k;
  39. args_to_SF[1] = 0.0; // integration variable
  40. args_to_SF[2] = req_prec;
  41. args_to_SF[3] = DP(Npts_K);
  42. args_to_SF[4] = DP(Npts_W);
  43. // Version using omega = omegamin + (omegamax - omegamin) * (1-cos(alpha))
  44. Integral_result answer = Integrate_optimal_using_table (SF_4p_kwKW_alpha_opt, args_to_SF, 1, Itable, 0.0, 0.5*PI, req_prec, 1.0e-32, Npts_w, SFraw_outfile);
  45. // Version using omega = omegamin * cosh(alpha)
  46. //Integral_result answer = Integrate_optimal_using_table (SF_4p_kwKW_cosh_alpha_opt, args_to_SF, 1, Itable, 0.0, acosh(wmax_4p(k)/wmin_4p(k)), req_prec, 1.0e-32, Npts_w, SFraw_outfile);
  47. answer.integ_est /= twoPI;
  48. answer.abs_prec /= twoPI;
  49. SFraw_outfile.close();
  50. SFsrc_outfile << answer << endl;
  51. SFsrc_outfile.close();
  52. // Translate raw data into SF_4p (k,omega) data
  53. Translate_raw_4p_data (k, answer.n_vals, SFraw_Cstr, SF_Cstr, SFsrc_Cstr, Itable);
  54. //Translate_raw_4p_data_cosh (k, answer.n_vals, SFraw_Cstr, SF_Cstr, SFsrc_Cstr, Itable);
  55. return(answer);
  56. }
  57. } // namespace ABACUS