MURE
|
Base class of Bateman-type solvers like Runge-Kutta or CRAM or any other. More...
#include <CRAMSolver.hxx>
Public Member Functions | |
CRAMSolver (string type="IPF", int order=48, bool aut=true) | |
Normal constructor. | |
Public methods | |
void | Solve (double *N0, double **Matrix, int N, double t1, double t2) override |
Abstract method to Solve Bateman equation : must be overriden. | |
void | SetTheMatrix (double **f) |
void | printCoeffs (int order=0) |
void | SetNSubsteps (int n) |
void | SetOrder (int n) |
Public Member Functions inherited from BatemanSolver | |
BatemanSolver () | |
Normal constructor. | |
BatemanSolver (const BatemanSolver &BS) | |
Copy constructor. | |
virtual | ~BatemanSolver () |
Destructor. | |
int | GetNumberOfEquationSize () |
void | SetNumberOfEquations (int N) |
void | SetPrecision (double eps=1e-5) |
void | SetForbidNegativeValue () |
Forbid negative value during integration. | |
void | SetXe135EquilibriumIndex (int Te135, int I135, int Xe135) |
Set index (position) in EvolvingSystem::fEvolvingAtoms vector for Te-135, I-135 and Xe-135. | |
Private methods | |
t_SpMat_SolverVector | CRAMSpMatSolver |
t_CRAMCoeff | CRAMCoefficients |
string | CRAMType |
string | SparseSolver |
int | CRAMOrder |
double ** | fTheMatrix |
The evolution Matrix. | |
double | CRAMDeltaT |
double | CRAMDeltaTsubstep |
int | nSubsteps |
Timer | HPTimer |
const double | cutoff = 1e-20 |
const double | significantDigits = 10 |
const int | maxorder = 48 |
bool | automatic = false |
bool | fBuildEqns |
static const vector< int > | fCramOrder |
static const vector< t_CRAMCoeff > | CRAMCoeff |
void | BuildEqns (double *N0, double **Matrix) |
Setup Eigen3 solver, compute inverse matrices. | |
t_CRAMCoeff | GetCRAMCoefficients (int order=0) |
t_SpMat_SolverVector | GetSparseLUSolvers () |
int | GetNumberSubsteps (double &N0_i, double &A_ii, double dT, int order, double sigDigits) |
double | GetSignificantDigits (double &N0_i, double &A_ii, double dT, int order, int niter) |
int | GetNeededCRAMOrder (double &N0_i, double &A_ii, double dT, double sigDigits) |
void | SetOptimalStrategy (double *N0, double **fMatrix) |
int | GetNearestCRAMOrder (int order) |
double | GetLG10 (double &n0, double &A_ii, double dT, int nT) |
void | CleanUp () |
Additional Inherited Members | |
Protected Attributes inherited from BatemanSolver | |
int | fNVar |
The size of the composition vector and /or number of ZAIs involved. | |
double | fPrecision |
Precision of the solution. | |
double | fTmin |
The lowest value of the decay constant considered. | |
bool | fIsNegativeValueAllowed |
int | fIdxTe135 |
index of Te-135 in the fEvolvingAtoms array | |
int | fIdxI135 |
index of I-135 in the fEvolvingAtoms array | |
int | fIdxXe135 |
index of Xe-135 in the fEvolvingAtoms array | |
Base class of Bateman-type solvers like Runge-Kutta or CRAM or any other.
This class only holds common variables and defines template functions for inheriting classes
CRAMSolver::CRAMSolver | ( | string | type = "IPF" , |
int | order = 48 , |
||
bool | aut = true |
||
) |
Normal constructor.
|
private |
Setup Eigen3 solver, compute inverse matrices.
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
void CRAMSolver::printCoeffs | ( | int | order = 0 | ) |
|
inline |
|
private |
|
inline |
|
inline |
|
overridevirtual |
Abstract method to Solve Bateman equation : must be overriden.
For a given vector
of initial composition and a given matrix NxN, integrate Bateman equation from t1 to t2.
N0 | : initial composition vector |
Matrix | : matrix of Bateman eqs |
N | : initial composition vector |
t1 | : initial time |
t2 | : final time |
Implements BatemanSolver.
|
private |
|
staticprivate |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
staticprivate |
|
private |
The evolution Matrix.
|
private |
|
private |
|
private |
|
private |
|
private |