SEVN
Loading...
Searching...
No Matches
lambda_klencki21.h
Go to the documentation of this file.
1//
2// Created by Giuliano Iorio on 07/12/2021.
3// This headed contains the class Lambda Klencki and its derived classes.
4// They are used to use the Lambda fit from the paper Klencki+21 (Appendix A, https://ui.adsabs.harvard.edu/abs/2021A%26A...645A..54K/abstract).
5//
6
7#ifndef SEVN_LAMBDA_KLENCKI21_H
8#define SEVN_LAMBDA_KLENCKI21_H
9
10#include <cmath>
11#include <iostream>
12#include <vector>
13#include <sevnlog.h>
14#include <set>
15#include <lambda_base.h>
16
17class Star;
18class IO;
19
41
42public:
43 Lambda_Klencki(const Star *s);
44 Lambda_Klencki(const IO *io);
45 virtual ~Lambda_Klencki() = default;
46
55 std::vector<double> find_row(double Mzams,double Z);
56
65 double operator() (const Star* s) override;
79 virtual double operator() (double Mzams, double Z, double R);
80
81protected:
82
84 double Mzams_cache{0}, Z_cache{0};
85 std::vector<double> vector_cache;
86 const double Zsun=0.017;
102 static double estimate_lambda(double R, const std::vector<double>& coefficients);
103
116 static thread_local std::vector<std::vector<double>> table;
117 static thread_local bool already_loaded;
118};
119
120
121
127
128public:
161 double operator() (double Mzams, double Z, double R) override;
162
163protected:
164
169
178 void find_interpolators(double Mzams, double Z);
179
180 static thread_local std::vector<double> Mzams_list;
181 static thread_local std::vector<std::vector<double>> Z_list;
182 static thread_local bool already_loaded_lists;
184 std::vector<std::vector<double>> vector_cache;
186private:
187
188 double Mzams_interpolators [2] = {0.,0.};
189 double Z_interpolators [4] = {0.,0.,0.,0.};
190 double wM [2] = {0., 0.};
191 double wZ [4] = {0., 0., 0., 0.};
193};
194
195#endif //SEVN_LAMBDA_KLENCKI21_H
Definition: IO.h:53
Definition: lambda_base.h:19
Definition: lambda_klencki21.h:126
double Z_interpolators[4]
Definition: lambda_klencki21.h:189
static thread_local std::vector< std::vector< double > > Z_list
Definition: lambda_klencki21.h:181
double operator()(double Mzams, double Z, double R) override
Definition: lambda_klencki21.cpp:193
void find_interpolators(double Mzams, double Z)
Definition: lambda_klencki21.cpp:154
double wZ[4]
Definition: lambda_klencki21.h:191
static thread_local std::vector< double > Mzams_list
Definition: lambda_klencki21.h:180
double wM[2]
Definition: lambda_klencki21.h:190
std::vector< std::vector< double > > vector_cache
Definition: lambda_klencki21.h:184
double Mzams_interpolators[2]
Definition: lambda_klencki21.h:188
static thread_local bool already_loaded_lists
Definition: lambda_klencki21.h:182
void fill_interpolators_lists()
Definition: lambda_klencki21.cpp:126
Definition: lambda_klencki21.h:40
double Z_cache
Definition: lambda_klencki21.h:84
double operator()(const Star *s) override
Definition: lambda_klencki21.cpp:47
double Mzams_cache
Definition: lambda_klencki21.h:84
static thread_local bool already_loaded
Definition: lambda_klencki21.h:117
std::vector< double > vector_cache
Definition: lambda_klencki21.h:85
static double estimate_lambda(double R, const std::vector< double > &coefficients)
Definition: lambda_klencki21.cpp:66
std::vector< double > find_row(double Mzams, double Z)
Definition: lambda_klencki21.cpp:27
virtual ~Lambda_Klencki()=default
static thread_local std::vector< std::vector< double > > table
Definition: lambda_klencki21.h:116
const double Zsun
Definition: lambda_klencki21.h:86
sevnstd::SevnLogging svlog
Definition: lambda_klencki21.h:83
Definition: star.h:39
Definition: sevnlog.h:43