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);