Galerkin: Unsteady (implicit)#

Header: <pressio/rom_galerkin_unsteady.hpp>

API#

namespace pressio{ namespace rom{ namespace galerkin{

template<
 class TrialSubspaceType, class FomSystemType,
 std::enable_if_t<
   PossiblyAffineRealValuedTrialColumnSubspace<TrialSubspaceType>::value
   && RealValuedSemiDiscreteFomWithJacobianAction<FomSystemType, typename TrialSubspaceType::basis_matrix_type>::value

  using ind_var_type = typename FomSystemType::time_type;
  using reduced_state_type = typename TrialSubspaceType::reduced_state_type;
  using default_types      = ImplicitGalerkinDefaultReducedOperatorsTraits<reduced_state_type>;
    && std::is_same<typename TrialSubspaceType::full_state_type, typename FomSystemType::state_type>::value
    , int > = 0
  >
auto create_unsteady_implicit_problem(::pressio::ode::StepScheme schemeName,   /*(2)*/
				      const TrialSubspaceType & trialSpace,
				      const FomSystemType & fomSystem)
{
  using galerkin_system = impl::GalerkinDefaultOdeSystemRhsJacobianMassMatrix<
    ind_var_type, reduced_state_type, reduced_residual_type,
    reduced_jacobian_type, reduced_mm_type, TrialSubspaceType, FomSystemType>;

  using default_types      = ImplicitGalerkinDefaultReducedOperatorsTraits<reduced_state_type>;
  using reduced_residual_type = typename default_types::reduced_residual_type;
  using reduced_jacobian_type = typename default_types::reduced_jacobian_type;

  // the "system" implements the math
  using galerkin_system = impl::GalerkinHypRedOdeSystemRhsAndJacobian<
    ind_var_type, reduced_state_type, reduced_residual_type,
    reduced_jacobian_type, TrialSubspaceType, FomSystemType, HyperReducerType>;

  galerkin_system galSystem(trialSpace, fomSystem, hyperReducer);
  return ::pressio::ode::create_implicit_stepper(schemeName, std::move(galSystem));
}

// -------------------------------------------------------------

  // the "system" implements the math
  using galerkin_system = impl::GalerkinMaskedOdeSystemRhsAndJacobian<
    ind_var_type, reduced_state_type, reduced_residual_type,
    reduced_jacobian_type, TrialSubspaceType, FomSystemType,
    MaskerType, HyperReducerType>;

  galerkin_system galSystem(trialSpace, fomSystem, masker, hyperReducer);
  return ::pressio::ode::create_implicit_stepper(schemeName, std::move(galSystem));
}

// -------------------------------------------------------------
// fully-discrete
// -------------------------------------------------------------

template<

template<
  std::size_t TotalNumberOfDesiredStates,
  class TrialSubspaceType,
  class FomSystemType,
  class HyperReducerType>
auto create_unsteady_implicit_problem(const TrialSubspaceType & trialSpace,
                                      const FomSystemType & fomSystem,
                                      const HyperReducerType & hyperReducer)
{

  using independent_variable_type = typename FomSystemType::time_type;
#endif  // PRESSIO_ROM_GALERKIN_UNSTEADY_IMPLICIT_HPP_