Class FluidDaeApplicable

java.lang.Object
jline.solvers.fluid.moments.FluidDaeApplicable

public final class FluidDaeApplicable extends Object
Whether DaeAnalyzer can answer a model, used by SolverFluid to try dae before dropping a declined minnormal to a first-order method. Java twin of the MATLAB fluid_dae_applicable.

WHY THIS EXISTS SEPARATELY FROM FluidMinNormalApplicable. The two methods state the SAME closure and differ only in how the coupled equations are discharged, so a model minnormal accepts is almost always one dae accepts too. Almost: dae carries a finite-difference Jacobian over the whole unknown vector rather than one Lyapunov solve, so its state cap is lower; it closes on the per-station variance only, so DPS and GPS are out; and it has no decomposition route, so a cache model is out. Those three are exactly the difference set, and naming them here keeps the fallback ladder from entering a rung that would refuse the model a moment later.

The test is STATIC, for the same reason the min-normal one is: a rung chosen by trial and rollback would make the reported method depend on a failed run. The one condition that cannot be static is the NON-HYPERBOLIC fixed point the ladder exists to route around -- it exists only once the mean is solved -- and dae fails on it loudly, which is what moves the ladder to its last rung.

Every condition below mirrors a refusal DaeAnalyzer would otherwise raise, so this class and those refusals must move together.

  • Method Details

    • reasonToDecline

      public static String reasonToDecline(NetworkStruct sn, SolverOptions options)
      Parameters:
      sn - network structure, after the non-Markovian to phase-type conversion
      options - solver options
      Returns:
      null when dae can be selected, otherwise one line naming the blocking feature