# GridFire: gridfire::MultiscalePartitioningEngineView::EigenFunctor Struct Reference

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

MultiscalePartitioningEngineView * | m_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

  view | The MultiscalePartitioningEngineView instance.
  qse_solve_indices | Indices of the species to solve for in the QSE group.
  Y_full_initial | Initial abundances of all species.
  T9 | Temperature in units of 10^9 K.
  rho | Density in g/cm^3.
  Y_scale | Scaling 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_qse | The input vector of scaled algebraic abundances.
  J_qse | The 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_qse | The input vector of scaled algebraic abundances.
  f_qse | The 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:

- src/include/gridfire/engine/views/engine_multiscale.h
- src/lib/engine/views/engine_multiscale.cpp