LSPG: Unsteady#

Header: <pressio/rom_lspg_unsteady.hpp>

API#

#ifdef PRESSIO_ENABLE_TPL_TRILINOS
#include "./impl/lspg_unsteady_reconstructor.hpp"
#endif
// -------------------------------------------------------------
// default
// -------------------------------------------------------------
template<
  class TrialSubspaceType,
  class FomSystemType>
auto create_unsteady_problem(::pressio::ode::StepScheme schemeName,    /*(1)*/
			     const TrialSubspaceType & trialSpace,
			     const FomSystemType & fomSystem)
{

  class TrialSubspaceType, class FomSystemType, class MaskerType,
  std::enable_if_t<
    PossiblyAffineRealValuedTrialColumnSubspace<TrialSubspaceType>::value
    && RealValuedSemiDiscreteFomWithJacobianAction<FomSystemType, typename TrialSubspaceType::basis_matrix_type>::value
    && std::is_same<typename TrialSubspaceType::full_state_type, typename FomSystemType::state_type>::value
    && MaskableWith<typename FomSystemType::rhs_type, MaskerType>::value
    && MaskableWith<impl::fom_jac_action_on_trial_space_t<FomSystemType, TrialSubspaceType>, MaskerType>::value
    , int> = 0
  using lspg_unmasked_residual_type = typename FomSystemType::rhs_type;
  using lspg_unmasked_jacobian_type = typename TrialSubspaceType::basis_matrix_type;
  using lspg_residual_type =
    decltype(std::declval<MaskerType const>().createResultOfMaskActionOn
	     (std::declval<lspg_unmasked_residual_type const &>()));
			     const FomSystemType & fomSystem,
			     const HypRedUpdaterType & hypRedUpdater)
{

  impl::valid_scheme_for_lspg_else_throw(schemeName);

    ind_var_type, reduced_state_type,
    lspg_residual_type, lspg_jacobian_type,
    TrialSubspaceType, FomSystemType, HypRedUpdaterType>;


  using ind_var_type = typename FomSystemType::time_type;
  using reduced_state_type = typename TrialSubspaceType::reduced_state_type;
	     );

  using rj_policy_type =
    impl::LspgScalingDecorator<
      ScalingOperatorType, lspg_residual_type, lspg_jacobian_type, TrialSubspaceType,
      impl::LspgUnsteadyResidualJacobianPolicy<
	ind_var_type, reduced_state_type, lspg_residual_type,
	lspg_jacobian_type, TrialSubspaceType, FomSystemType
	>
    >;

  using return_type = impl::LspgUnsteadyProblemSemiDiscreteAPI<TrialSubspaceType, rj_policy_type>;
  return return_type(schemeName, trialSpace, fomSystem, scaler);
    impl::LspgScalingDecorator<
      ScalingOperatorType, lspg_residual_type, lspg_jacobian_type, TrialSubspaceType,
      impl::LspgUnsteadyResidualJacobianPolicyHypRed<
	ind_var_type, reduced_state_type, lspg_residual_type,
	lspg_jacobian_type, TrialSubspaceType, FomSystemType, HypRedUpdaterType
	>
    >;

  using return_type = impl::LspgUnsteadyProblemSemiDiscreteAPI<TrialSubspaceType, rj_policy_type>;
  return return_type(schemeName, trialSpace, fomSystem, scaler, hypRedUpdater);
}


} //end namespace experimental

    TrialSubspaceType, FomSystemType>;

  using return_type = impl::LspgUnsteadyProblemFullyDiscreteAPI<
#ifdef PRESSIO_ENABLE_TPL_TRILINOS
template<
  class TrialSubspaceType,
  std::enable_if_t<
    PossiblyAffineRealValuedTrialColumnSubspace<TrialSubspaceType>::value,
    int > = 0
  >
auto create_reconstructor(const TrialSubspaceType & trialSpace)
{
  using T = impl::LspgReconstructor<TrialSubspaceType>;
  return T(trialSpace);