Multiplies two arrays and sums the resulting elements.
Multiplies two arrays and sums the resulting elements.
vec7 a = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0};
vec7 b = {0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5};
double sum_product(const vec7 &a, const vec7 &b)
#pragma once
#include <array>
#include <boost/numeric/odeint.hpp>
typedef boost::numeric::ublas::vector< double >
vector_type;
typedef boost::numeric::ublas::matrix< double >
matrix_type;
typedef std::array<double,7>
vec7;
struct Approx8Net{
static constexpr int ih1=0;
static constexpr int ihe3=1;
static constexpr int ihe4=2;
static constexpr int ic12=3;
static constexpr int in14=4;
static constexpr int io16=5;
static constexpr int ine20=6;
static constexpr int img24=7;
static constexpr std::array<int,nIso>
aIon = {
1,
3,
4,
12,
14,
16,
20,
24
};
static constexpr std::array<double,nIso>
mIon = {
1.67262164e-24,
5.00641157e-24,
6.64465545e-24,
1.99209977e-23,
2.32462686e-23,
2.65528858e-23,
3.31891077e-23,
3.98171594e-23
};
};
struct Jacobian {
};
struct ODE {
};
class Approx8Network final : public Network {
public:
NetOut
evaluate(
const NetIn &netIn)
override;
private:
};
}
static vector_type convert_netIn(const NetIn &netIn)
Converts the input parameters to the internal state vector.
bool isStiff() const override
Checks if the solver is using a stiff method.
NetOut evaluate(const NetIn &netIn) override
Evaluates the nuclear network.
void setStiff(bool stiff) override
Sets whether the solver should use a stiff method.
double he3he3_rate(const vec7 &T9)
Calculates the rate for the reaction he3 + he3 -> he4 + 2p.
double pp_rate(const vec7 &T9)
Calculates the rate for the reaction p + p -> d.
vec7 get_T9_array(const double &T)
double triple_alpha_rate(const vec7 &T9)
Calculates the rate for the reaction he4 + he4 + he4 -> c12.
boost::numeric::ublas::matrix< double > matrix_type
Alias for a matrix of doubles using Boost uBLAS.
double n14p_rate(const vec7 &T9)
Calculates the rate for the reaction n14(p,g)o15 - o15 + p -> c12 + he4.
double n14a_rate(const vec7 &T9)
Calculates the rate for the reaction n14(a,g)f18 assumed to go on to ne20.
double dp_rate(const vec7 &T9)
Calculates the rate for the reaction p + d -> he3.
double he3he4_rate(const vec7 &T9)
Calculates the rate for the reaction he3(he3,2p)he4.
double o16p_rate(const vec7 &T9)
Calculates the rate for the reaction o16(p,g)f17 then f17 -> o17(p,a)n14.
double c12c12_rate(const vec7 &T9)
Calculates the rate for the reaction c12(c12,a)ne20.
double o16a_rate(const vec7 &T9)
Calculates the rate for the reaction o16(a,g)ne20.
double c12p_rate(const vec7 &T9)
Calculates the rate for the reaction c12 + p -> n13.
double c12o16_rate(const vec7 &T9)
Calculates the rate for the reaction c12(o16,a)mg24.
double n15pa_rate(const vec7 &T9)
Calculates the rate for the reaction n15(p,a)c12 (CNO I).
boost::numeric::ublas::vector< double > vector_type
Alias for a vector of doubles using Boost uBLAS.
std::array< double, 7 > vec7
Alias for a std::array of 7 doubles.
double n15pg_frac(const vec7 &T9)
Calculates the fraction for the reaction n15(p,g)o16.
double n15pg_rate(const vec7 &T9)
Calculates the rate for the reaction n15(p,g)o16 (CNO II).
double ne20a_rate(const vec7 &T9)
Calculates the rate for the reaction ne20(a,g)mg24.
double rate_fit(const vec7 &T9, const vec7 &coef)
double c12a_rate(const vec7 &T9)
Calculates the rate for the reaction c12 + he4 -> o16.
static constexpr int iTemp
static constexpr int iEnergy
static constexpr int in14
static constexpr std::array< int, nIso > aIon
static constexpr int nIso
static constexpr int iDensity
static constexpr int nVar
static constexpr int ihe4
static constexpr std::array< double, nIso > mIon
static constexpr int ic12
static constexpr int img24
static constexpr int ihe3
static constexpr int io16
static constexpr int ine20
void operator()(const vector_type &y, matrix_type &J, double, vector_type &dfdt) const
Calculates the Jacobian matrix.
void operator()(const vector_type &y, vector_type &dydt, double) const
Calculates the derivatives of the state vector.