1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- /****************************************************************
-
- This software is part of J.-S. Caux's C++ library.
-
- Copyright (c) J.-S. Caux.
-
- -----------------------------------------------------------
-
- XXX_VOA_par.cc
-
- Zero field structure factor for XXX, 4 spinons, parallel (MPI).
-
- ******************************************************************/
-
- #include "mpi.h"
- #include "ABACUS.h"
-
- using namespace std;
-
- namespace ABACUS {
-
- // ***************** THIS IS NOT FINISHED !!!!!!!!!!!!!!!!!!!!
-
-
- 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)
- {
- stringstream SFraw_stringstream;
- string SFraw_string;
- SFraw_stringstream << "SF_4p_k_" << k << "_prec_" << req_prec << "_Npts_" << Npts_w << "_" << Npts_K
- << "_" << Npts_W << ".raw";
- SFraw_string = SFraw_stringstream.str();
- const char* SFraw_Cstr = SFraw_string.c_str();
-
- stringstream SF_stringstream;
- string SF_string;
- SF_stringstream << "SF_4p_k_" << k << "_prec_" << req_prec << "_Npts_" << Npts_w << "_" << Npts_K
- << "_" << Npts_W << ".dat";
- SF_string = SF_stringstream.str();
- const char* SF_Cstr = SF_string.c_str();
-
- stringstream SFsrc_stringstream;
- string SFsrc_string;
- SFsrc_stringstream << "SF_4p_k_" << k << "_prec_" << req_prec << "_Npts_" << Npts_w << "_" << Npts_K
- << "_" << Npts_W << ".src";
- SFsrc_string = SFsrc_stringstream.str();
- const char* SFsrc_Cstr = SFsrc_string.c_str();
-
- ofstream SFraw_outfile;
- SFraw_outfile.open(SFraw_Cstr);
- ofstream SFsrc_outfile;
- SFsrc_outfile.open(SFsrc_Cstr);
-
-
- Vect_DP args_to_SF(5);
- args_to_SF[0] = k;
- args_to_SF[1] = 0.0; // integration variable
- args_to_SF[2] = req_prec;
- args_to_SF[3] = DP(Npts_K);
- args_to_SF[4] = DP(Npts_W);
-
- // Version using omega = omegamin + (omegamax - omegamin) * (1-cos(alpha))
- 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);
- // Version using omega = omegamin * cosh(alpha)
- //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);
- answer.integ_est /= twoPI;
- answer.abs_prec /= twoPI;
-
- SFraw_outfile.close();
-
- SFsrc_outfile << answer << endl;
- SFsrc_outfile.close();
-
- // Translate raw data into SF_4p (k,omega) data
- Translate_raw_4p_data (k, answer.n_vals, SFraw_Cstr, SF_Cstr, SFsrc_Cstr, Itable);
- //Translate_raw_4p_data_cosh (k, answer.n_vals, SFraw_Cstr, SF_Cstr, SFsrc_Cstr, Itable);
-
- return(answer);
- }
-
- } // namespace ABACUS
|