SEVN
Loading...
Searching...
No Matches
Lambda_Nanjing Class Reference

#include <lambda_nanjing.h>

Inheritance diagram for Lambda_Nanjing:
Lambda_Base Lambda_Nanjing_interpolator

Public Member Functions

 Lambda_Nanjing ()
 
 Lambda_Nanjing (_UNUSED const Star *s)
 
 Lambda_Nanjing (_UNUSED const IO *io)
 
virtual ~Lambda_Nanjing ()=default
 
double operator() (const Star *s) override
 

Protected Types

typedef unsigned int coeff_status
 

Protected Member Functions

virtual double lambda_Giant (const Star *s)
 
virtual double lambda_Cheb (const Star *s)
 
virtual double lambda_AGB (const Star *s)
 
virtual double lambda_pureHe (const Star *s)
 
virtual double lambda_Giant (_UNUSED double Mzams, _UNUSED double Z, _UNUSED double Radius, _UNUSED double Menv, _UNUSED double lambda_th)
 
virtual double lambda_Cheb (_UNUSED double Mzams, _UNUSED double Z, _UNUSED double Radius, _UNUSED double Menv, _UNUSED double lambda_th)
 
virtual double lambda_AGB (_UNUSED double Mzams, _UNUSED double Z, _UNUSED double Radius, _UNUSED double Menv, _UNUSED double lambda_th)
 
virtual double lambda_pureHe (_UNUSED double Mzams, _UNUSED double Z, _UNUSED double Radius, _UNUSED double Menv, _UNUSED double lambda_th)
 
virtual coeff_status set_coeff_Giant (double Mzams, double Z, double Radius)
 
virtual coeff_status set_coeff_Cheb (double Mzams, double Z, double Radius)
 
virtual coeff_status set_coeff_AGB (double Mzams, double Z, double Radius)
 
std::vector< double > fitting_equation (double x)
 
int reset ()
 

Protected Attributes

sevnstd::SevnLogging svlog
 
std::vector< double > coeff_lambdab
 
std::vector< double > coeff_lambdag
 
std::vector< double > maxBG = {}
 
std::vector< double > lambdaBG = {}
 

Private Member Functions

double lambda_estimate (double lambda_th)
 

Private Attributes

const double ZpopI = 0.0085
 

Static Private Attributes

static constexpr unsigned int COEF_SET = 1
 
static constexpr unsigned int COEF_NOT_SET = 0
 

Detailed Description

Basic Lambda model from the work of Xu&Li10 (https://iopscience.iop.org/article/10.1088/0004-637X/716/1/114) + its errata corrige (https://iopscience.iop.org/article/10.1088/0004-637X/722/2/1985). The implementation is taken directly from the COMPAS code https://github.com/TeamCOMPAS/COMPAS that is based on the STARTRACK implementation (see Dominik+12, https://ui.adsabs.harvard.edu/abs/2012ApJ...759...52D/abstract). Lambda is thus estimated as:

 y = a + b1*x + b2*x^2 + b3+*x^3 + b4*x^4 + b5*x^5

 where y is in general lambda (gravitational or considering also the thermal energy), sometime it is 1/lambda
 or sometime it is log lambda.
 x in general is the Radius, but sometime it is the mass of the envelope.
 The a and b coefficient are estimate for a given list of Mzams (1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,12.,14.,16.,20.,50.,100.)
 and they are split in two broad metallicity bin (PopI and PopII), we define the PopI stars as the one with
 Z<0.085 that is half of the Zsun=0.017. They are also split in the three different evolutionary stages:

 - Stage 1 begins at the center H exhaustion and ends when the star starts to shrink (i.e., near center He ignition).
 - Stage 2 follows and ends when the star starts to expand again.
 - Stage 3  Stage 3 begins after that and continues until the end of the evolution.

 Following what has been done in COMPAS, we  identify the three stages with the SEVN phases:

 - Stage 1: TerminalMainSequence, Hshellburning
 - Stage 2: coreHeburning
 - Stage 3: TerminalcoreHeburning, Heshellburning

 NOTICE: We also use the lambda estimate for pureHE stars written in COMPAS in the Nanjing implementation.
 It has not published yet and  it is
     lambda = 0.3*R^(-0.8) with Radius Range between 0.25-120 Rsun, radii smaller or larger of that limit
     are set to the mimimum or maximum allowed value.

The lambda can be retrieved using the overload operator (Star *s) Using this class the lambda is estimated in a quantised way, i.e. for a Mzamsnot present in the table, the closed track with Mtrack>Mzams is used. If Mzams>100, Mtracks=100.

Member Typedef Documentation

◆ coeff_status

typedef unsigned int Lambda_Nanjing::coeff_status
protected

Constructor & Destructor Documentation

◆ Lambda_Nanjing() [1/3]

Lambda_Nanjing::Lambda_Nanjing ( )
inline

◆ Lambda_Nanjing() [2/3]

Lambda_Nanjing::Lambda_Nanjing ( _UNUSED const Star s)
inline

◆ Lambda_Nanjing() [3/3]

Lambda_Nanjing::Lambda_Nanjing ( _UNUSED const IO io)
inline

◆ ~Lambda_Nanjing()

virtual Lambda_Nanjing::~Lambda_Nanjing ( )
virtualdefault

Member Function Documentation

◆ fitting_equation()

std::vector< double > Lambda_Nanjing::fitting_equation ( double  x)
inlineprotected

Polynomial fitting equation for lambda (Eq. 13 in Xu&Li10)

Parameters
xargument of the fitting equation
Returns
results (2) of the fifth order polynomial equation, the coefficients are taken from coeff_lambdab and coeff_lambdag

◆ lambda_AGB() [1/2]

virtual double Lambda_Nanjing::lambda_AGB ( _UNUSED double  Mzams,
_UNUSED double  Z,
_UNUSED double  Radius,
_UNUSED double  Menv,
_UNUSED double  lambda_th 
)
protectedvirtual

◆ lambda_AGB() [2/2]

double Lambda_Nanjing::lambda_AGB ( const Star s)
protectedvirtual

◆ lambda_Cheb() [1/2]

virtual double Lambda_Nanjing::lambda_Cheb ( _UNUSED double  Mzams,
_UNUSED double  Z,
_UNUSED double  Radius,
_UNUSED double  Menv,
_UNUSED double  lambda_th 
)
protectedvirtual

◆ lambda_Cheb() [2/2]

double Lambda_Nanjing::lambda_Cheb ( const Star s)
protectedvirtual

◆ lambda_estimate()

double Lambda_Nanjing::lambda_estimate ( double  lambda_th)
inlineprivate

Wrapper for the simple equation lambdab*lambda_th + lambdag*(1-lambda_th)

Parameters
lambda_thFraction of the internal energy to use (0-only gravitational energy, 1-gravitational+all internal energy)
Returns
final lambda

◆ lambda_Giant() [1/2]

virtual double Lambda_Nanjing::lambda_Giant ( _UNUSED double  Mzams,
_UNUSED double  Z,
_UNUSED double  Radius,
_UNUSED double  Menv,
_UNUSED double  lambda_th 
)
protectedvirtual

◆ lambda_Giant() [2/2]

double Lambda_Nanjing::lambda_Giant ( const Star s)
protectedvirtual

Methods to estimate lambda in various phases

◆ lambda_pureHe() [1/2]

virtual double Lambda_Nanjing::lambda_pureHe ( _UNUSED double  Mzams,
_UNUSED double  Z,
_UNUSED double  Radius,
_UNUSED double  Menv,
_UNUSED double  lambda_th 
)
protectedvirtual

◆ lambda_pureHe() [2/2]

double Lambda_Nanjing::lambda_pureHe ( const Star s)
protectedvirtual

◆ operator()()

double Lambda_Nanjing::operator() ( const Star s)
overridevirtual

Estimate lambda for a given star

Parameters
sPointer to the star
Returns
lambda

Implements Lambda_Base.

Reimplemented in Lambda_Nanjing_interpolator.

◆ reset()

int Lambda_Nanjing::reset ( )
inlineprotected

Reset (clear) members (coeff_lambdab, coeff_lambdag, maxBG, lambdaBG)

Returns
EXIT_SUCCESS

◆ set_coeff_AGB()

Lambda_Nanjing::coeff_status Lambda_Nanjing::set_coeff_AGB ( double  Mzams,
double  Z,
double  Radius 
)
protectedvirtual

◆ set_coeff_Cheb()

Lambda_Nanjing::coeff_status Lambda_Nanjing::set_coeff_Cheb ( double  Mzams,
double  Z,
double  Radius 
)
protectedvirtual

◆ set_coeff_Giant()

Lambda_Nanjing::coeff_status Lambda_Nanjing::set_coeff_Giant ( double  Mzams,
double  Z,
double  Radius 
)
protectedvirtual

Member Data Documentation

◆ COEF_NOT_SET

constexpr unsigned int Lambda_Nanjing::COEF_NOT_SET = 0
staticconstexprprivate

◆ COEF_SET

constexpr unsigned int Lambda_Nanjing::COEF_SET = 1
staticconstexprprivate

Metallicity boundary between popI and popII stars

◆ coeff_lambdab

std::vector<double> Lambda_Nanjing::coeff_lambdab
protected

coefficient to estiamate Lambda from Xi&Liu considering both the gravitational + internal energy. Set in set_coeff**

◆ coeff_lambdag

std::vector<double> Lambda_Nanjing::coeff_lambdag
protected

coefficient to estiamate Lambda from Xi&Liu considering the gravitational energy only. Set in set_coeff**

◆ lambdaBG

std::vector<double> Lambda_Nanjing::lambdaBG = {}
protected

array storing the values estimated for lambdab and lambdag. Set in set_coeff**

◆ maxBG

std::vector<double> Lambda_Nanjing::maxBG = {}
protected

array storing the maximum value allows for lambdab and lambdag. Set in set_coeff**

◆ svlog

sevnstd::SevnLogging Lambda_Nanjing::svlog
protected

◆ ZpopI

const double Lambda_Nanjing::ZpopI = 0.0085
private

The documentation for this class was generated from the following files: