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_