GridFire 0.0.1a
General Purpose Nuclear Network
Loading...
Searching...
No Matches
gridfire::MultiscalePartitioningEngineView::EigenFunctor Struct Reference

Functor for solving QSE abundances using Eigen's nonlinear optimization. More...

Public Types

enum  { InputsAtCompileTime = Eigen::Dynamic , ValuesAtCompileTime = Eigen::Dynamic }
 
using InputType = Eigen::Matrix<double, Eigen::Dynamic, 1>
 
using OutputType = Eigen::Matrix<double, Eigen::Dynamic, 1>
 
using JacobianType = Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic>
 

Public Member Functions

 EigenFunctor (MultiscalePartitioningEngineView &view, const std::vector< size_t > &qse_solve_indices, const std::vector< double > &Y_full_initial, const double T9, const double rho, const Eigen::VectorXd &Y_scale)
 Constructs an EigenFunctor.
 
int values () const
 Gets the number of output values from the functor (size of the residual vector).
 
int inputs () const
 Gets the number of input values to the functor (size of the variable vector).
 
int operator() (const InputType &v_qse, OutputType &f_qse) const
 Evaluates the functor's residual vector f_qse = dY_alg/dt.
 
int df (const InputType &v_qse, JacobianType &J_qse) const
 Evaluates the Jacobian of the functor, J_qse = d(f_qse)/d(v_qse).
 

Public Attributes

MultiscalePartitioningEngineViewm_view
 Pointer to the MultiscalePartitioningEngineView instance.
 
const std::vector< size_t > & m_qse_solve_indices
 Indices of the species to solve for in the QSE group.
 
const std::vector< double > & m_Y_full_initial
 Initial abundances of all species in the full network.
 
const double m_T9
 Temperature in units of 10^9 K.
 
const double m_rho
 Density in g/cm^3.
 
const Eigen::VectorXd & m_Y_scale
 Scaling factors for the species abundances, used to improve solver stability.
 

Detailed Description

Functor for solving QSE abundances using Eigen's nonlinear optimization.

@purpose This struct provides the objective function (operator()) and its Jacobian (df) to Eigen's Levenberg-Marquardt solver. The goal is to find the abundances of algebraic species that make their time derivatives (dY/dt) equal to zero.

@how

  • operator(): Takes a vector v_qse (scaled abundances of algebraic species) as input. It constructs a full trial abundance vector y_trial, calls the base engine's calculateRHSAndEnergy, and returns the dY/dt values for the algebraic species. The solver attempts to drive this return vector to zero.
  • df: Computes the Jacobian of the objective function. It calls the base engine's generateJacobianMatrix and extracts the sub-matrix corresponding to the algebraic species. It applies the chain rule to account for the asinh scaling used on the abundances.

The abundances are scaled using asinh to handle the large dynamic range and ensure positivity.

Definition at line 729 of file engine_multiscale.h.

Member Typedef Documentation

◆ InputType

using gridfire::MultiscalePartitioningEngineView::EigenFunctor::InputType = Eigen::Matrix<double, Eigen::Dynamic, 1>

Definition at line 730 of file engine_multiscale.h.

◆ JacobianType

using gridfire::MultiscalePartitioningEngineView::EigenFunctor::JacobianType = Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic>

Definition at line 732 of file engine_multiscale.h.

◆ OutputType

using gridfire::MultiscalePartitioningEngineView::EigenFunctor::OutputType = Eigen::Matrix<double, Eigen::Dynamic, 1>

Definition at line 731 of file engine_multiscale.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
InputsAtCompileTime 
ValuesAtCompileTime 

Definition at line 733 of file engine_multiscale.h.

Constructor & Destructor Documentation

◆ EigenFunctor()

gridfire::MultiscalePartitioningEngineView::EigenFunctor::EigenFunctor ( MultiscalePartitioningEngineView & view,
const std::vector< size_t > & qse_solve_indices,
const std::vector< double > & Y_full_initial,
const double T9,
const double rho,
const Eigen::VectorXd & Y_scale )
inline

Constructs an EigenFunctor.

Parameters
viewThe MultiscalePartitioningEngineView instance.
qse_solve_indicesIndices of the species to solve for in the QSE group.
Y_full_initialInitial abundances of all species.
T9Temperature in units of 10^9 K.
rhoDensity in g/cm^3.
Y_scaleScaling factors for the species abundances.

Definition at line 773 of file engine_multiscale.h.

Member Function Documentation

◆ df()

int gridfire::MultiscalePartitioningEngineView::EigenFunctor::df ( const InputType & v_qse,
JacobianType & J_qse ) const

Evaluates the Jacobian of the functor, J_qse = d(f_qse)/d(v_qse).

Parameters
v_qseThe input vector of scaled algebraic abundances.
J_qseThe output Jacobian matrix.
Returns
0 on success.

Definition at line 1525 of file engine_multiscale.cpp.

◆ inputs()

int gridfire::MultiscalePartitioningEngineView::EigenFunctor::inputs ( ) const
inlinenodiscard

Gets the number of input values to the functor (size of the variable vector).

Returns
The number of algebraic species being solved.

Definition at line 797 of file engine_multiscale.h.

◆ operator()()

int gridfire::MultiscalePartitioningEngineView::EigenFunctor::operator() ( const InputType & v_qse,
OutputType & f_qse ) const

Evaluates the functor's residual vector f_qse = dY_alg/dt.

Parameters
v_qseThe input vector of scaled algebraic abundances.
f_qseThe output residual vector.
Returns
0 on success.

Definition at line 1503 of file engine_multiscale.cpp.

◆ values()

int gridfire::MultiscalePartitioningEngineView::EigenFunctor::values ( ) const
inlinenodiscard

Gets the number of output values from the functor (size of the residual vector).

Returns
The number of algebraic species being solved.

Definition at line 792 of file engine_multiscale.h.

Member Data Documentation

◆ m_qse_solve_indices

const std::vector<size_t>& gridfire::MultiscalePartitioningEngineView::EigenFunctor::m_qse_solve_indices

Indices of the species to solve for in the QSE group.

Definition at line 745 of file engine_multiscale.h.

◆ m_rho

const double gridfire::MultiscalePartitioningEngineView::EigenFunctor::m_rho

Density in g/cm^3.

Definition at line 757 of file engine_multiscale.h.

◆ m_T9

const double gridfire::MultiscalePartitioningEngineView::EigenFunctor::m_T9

Temperature in units of 10^9 K.

Definition at line 753 of file engine_multiscale.h.

◆ m_view

MultiscalePartitioningEngineView* gridfire::MultiscalePartitioningEngineView::EigenFunctor::m_view

Pointer to the MultiscalePartitioningEngineView instance.

Definition at line 741 of file engine_multiscale.h.

◆ m_Y_full_initial

const std::vector<double>& gridfire::MultiscalePartitioningEngineView::EigenFunctor::m_Y_full_initial

Initial abundances of all species in the full network.

Definition at line 749 of file engine_multiscale.h.

◆ m_Y_scale

const Eigen::VectorXd& gridfire::MultiscalePartitioningEngineView::EigenFunctor::m_Y_scale

Scaling factors for the species abundances, used to improve solver stability.

Definition at line 761 of file engine_multiscale.h.


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