45#include <Eigen/Sparse>
46#ifdef EIGEN_SuperLU_ColMajor
47 #include <Eigen/SuperLUSupport>
48 typedef Eigen::SparseMatrix<std::complex<double>, Eigen::ColMajor>
t_SpMatrix;
50#elif EIGEN_UmfPackLU_ColMajor
51 #include <Eigen/UmfPackSupport>
52 typedef Eigen::SparseMatrix<std::complex<double>, Eigen::ColMajor >
t_SpMatrix;
56 #include<Eigen/IterativeLinearSolvers>
57 typedef Eigen::SparseMatrix<std::complex<double>, Eigen::RowMajor >
t_SpMatrix;
88 CRAMSolver(
string type =
"IPF",
int order = 48,
bool aut =
true);
96 void Solve(
double *N0,
double **Matrix,
int N,
double t1,
double t2)
override;
121 void BuildEqns(
double *N0,
double **Matrix);
125 int GetNumberSubsteps(
double &N0_i,
double &A_ii,
double dT,
int order,
double sigDigits);
133 double GetLG10(
double &n0,
double &A_ii,
double dT,
int nT);
Header file for BatemanSolver class.
Eigen::SparseMatrix< std::complex< double >, Eigen::RowMajor > t_SpMatrix
Definition CRAMSolver.hxx:57
vector< Eigen::BiCGSTAB< t_SpMatrix > > t_SpMat_SolverVector
Definition CRAMSolver.hxx:58
Eigen::Triplet< double > t_triplet
Definition CRAMSolver.hxx:61
Base class of Bateman-type solvers like Runge-Kutta or CRAM or any other.
Definition BatemanSolver.hxx:45
Base class of Bateman-type solvers like Runge-Kutta or CRAM or any other.
Definition CRAMSolver.hxx:86
int GetNearestCRAMOrder(int order)
Definition CRAMSolver.cxx:696
int nSubsteps
Definition CRAMSolver.hxx:145
void SetOrder(int n)
Definition CRAMSolver.hxx:108
void Solve(double *N0, double **Matrix, int N, double t1, double t2) override
Abstract method to Solve Bateman equation : must be overriden.
Definition CRAMSolver.cxx:467
void SetOptimalStrategy(double *N0, double **fMatrix)
Definition CRAMSolver.cxx:594
double ** fTheMatrix
The evolution Matrix.
Definition CRAMSolver.hxx:142
void CleanUp()
Definition CRAMSolver.cxx:516
double GetSignificantDigits(double &N0_i, double &A_ii, double dT, int order, int niter)
Definition CRAMSolver.cxx:648
string SparseSolver
Definition CRAMSolver.hxx:140
Timer HPTimer
Definition CRAMSolver.hxx:146
int CRAMOrder
Definition CRAMSolver.hxx:141
t_SpMat_SolverVector CRAMSpMatSolver
Definition CRAMSolver.hxx:137
int GetNumberSubsteps(double &N0_i, double &A_ii, double dT, int order, double sigDigits)
Definition CRAMSolver.cxx:655
t_CRAMCoeff GetCRAMCoefficients(int order=0)
Definition CRAMSolver.cxx:713
int GetNeededCRAMOrder(double &N0_i, double &A_ii, double dT, double sigDigits)
Definition CRAMSolver.cxx:639
bool automatic
Definition CRAMSolver.hxx:150
t_SpMat_SolverVector GetSparseLUSolvers()
Definition CRAMSolver.cxx:689
const double significantDigits
Definition CRAMSolver.hxx:148
double CRAMDeltaTsubstep
Definition CRAMSolver.hxx:144
t_CRAMCoeff CRAMCoefficients
Definition CRAMSolver.hxx:138
void SetNSubsteps(int n)
Definition CRAMSolver.hxx:103
void BuildEqns(double *N0, double **Matrix)
Setup Eigen3 solver, compute inverse matrices.
Definition CRAMSolver.cxx:521
static const vector< t_CRAMCoeff > CRAMCoeff
Definition CRAMSolver.hxx:153
void printCoeffs(int order=0)
Definition CRAMSolver.cxx:739
const int maxorder
Definition CRAMSolver.hxx:149
double GetLG10(double &n0, double &A_ii, double dT, int nT)
Definition CRAMSolver.cxx:664
void SetTheMatrix(double **f)
Definition CRAMSolver.hxx:97
static const vector< int > fCramOrder
Definition CRAMSolver.hxx:152
bool fBuildEqns
Definition CRAMSolver.hxx:151
string CRAMType
Definition CRAMSolver.hxx:139
double CRAMDeltaT
Definition CRAMSolver.hxx:143
const double cutoff
Definition CRAMSolver.hxx:147
the namespace of the Standard C++
Definition CRAMSolver.hxx:68
double alpha0
Definition CRAMSolver.hxx:70
vector< complex< double > > alpha
Definition CRAMSolver.hxx:72
vector< complex< double > > theta
Definition CRAMSolver.hxx:71
int CramOrderDiv2
Definition CRAMSolver.hxx:69