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