Icarus
Vehicle Simulation as a Transformable Computational Graph, built on Vulcan and Janus
Loading...
Searching...
No Matches
icarus::staging::FiniteDifferenceTrim Class Reference

Numeric trim using finite differences. More...

#include <TrimSolver.hpp>

Inheritance diagram for icarus::staging::FiniteDifferenceTrim:
Collaboration diagram for icarus::staging::FiniteDifferenceTrim:

Classes

struct  Options

Public Member Functions

 FiniteDifferenceTrim ()
 FiniteDifferenceTrim (Options opts)
::icarus::staging::TrimResult Solve (::icarus::Simulator &sim, const TrimConfig &config) override
 Solve trim problem.
Public Member Functions inherited from icarus::staging::TrimSolver
virtual ~TrimSolver ()=default

Detailed Description

Numeric trim using finite differences.

Simple and robust Newton solver using central differences for Jacobian. Works with the existing double-typed Simulator without symbolic components.

Algorithm:

  1. Evaluate residual F(u) = [selected derivatives]
  2. Compute Jacobian J = dF/du via central differences
  3. Newton step: u_new = u - damping * J^(-1) * F
  4. Apply bounds (projection)
  5. Repeat until ||F|| < tolerance

Constructor & Destructor Documentation

◆ FiniteDifferenceTrim() [1/2]

icarus::staging::FiniteDifferenceTrim::FiniteDifferenceTrim ( )
inline

◆ FiniteDifferenceTrim() [2/2]

icarus::staging::FiniteDifferenceTrim::FiniteDifferenceTrim ( Options opts)
inlineexplicit

Member Function Documentation

◆ Solve()

icarus::staging::TrimResult icarus::staging::FiniteDifferenceTrim::Solve ( ::icarus::Simulator & sim,
const TrimConfig & config )
inlineoverridevirtual

Solve trim problem.

Finds control values that zero the specified derivatives. Modifies the simulator's signal values to the trim solution.

Parameters
simSimulator to trim (will be modified)
configTrim configuration
Returns
TrimResult with convergence info and final values

Implements icarus::staging::TrimSolver.


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