81 lines
2.7 KiB
C++
Executable File
81 lines
2.7 KiB
C++
Executable File
/****************************************************************
|
|
|
|
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
|