Tempus
Version of the Day
Time Integration
|
Thyra Base interface for time steppers. More...
#include <Tempus_Integrator.hpp>
Public Member Functions | |
virtual Teuchos::RCP< const Teuchos::ParameterList > | getValidParameters () const =0 |
Basic stepper methods | |
virtual void | setModel (const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &appModel)=0 |
virtual void | setNonConstModel (const Teuchos::RCP< Thyra::ModelEvaluator< Scalar > > &appModel)=0 |
virtual Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > | getModel ()=0 |
virtual void | setSolver (Teuchos::RCP< Thyra::NonlinearSolverBase< Scalar > > solver=Teuchos::null)=0 |
Set solver. More... | |
virtual Teuchos::RCP < Thyra::NonlinearSolverBase < Scalar > > | getSolver () const =0 |
Get solver. More... | |
virtual void | setObserver (Teuchos::RCP< StepperObserver< Scalar > > obs=Teuchos::null)=0 |
Set Observer. More... | |
virtual Teuchos::RCP < StepperObserver< Scalar > > | getObserver () const =0 |
Get Observer. More... | |
virtual void | initialize ()=0 |
Initialize during construction and after changing input parameters. More... | |
virtual void | setInitialConditions (const Teuchos::RCP< SolutionHistory< Scalar > > &solutionHistory)=0 |
Set initial conditions, make them consistent, and set stepper memory. More... | |
virtual void | takeStep (const Teuchos::RCP< SolutionHistory< Scalar > > &solutionHistory)=0 |
Take the specified timestep, dt, and return true if successful. More... | |
virtual void | setInitialGuess (Teuchos::RCP< const Thyra::VectorBase< Scalar > > initial_guess=Teuchos::null)=0 |
Pass initial guess to Newton solver (for implicit schemes) More... | |
virtual Teuchos::RCP < Tempus::StepperState< Scalar > > | getDefaultStepperState ()=0 |
virtual Scalar | getOrder () const =0 |
virtual Scalar | getOrderMin () const =0 |
virtual Scalar | getOrderMax () const =0 |
virtual Scalar | getInitTimeStep (const Teuchos::RCP< SolutionHistory< Scalar > > &solutionHistory) const =0 |
virtual bool | isExplicit () const =0 |
virtual bool | isImplicit () const =0 |
virtual bool | isExplicitImplicit () const =0 |
virtual bool | isOneStepMethod () const =0 |
virtual bool | isMultiStepMethod () const =0 |
void | setStepperType (std::string s) |
std::string | getStepperType () const |
void | setUseFSAL (bool a) |
bool | getUseFSAL () const |
virtual bool | getUseFSALDefault () const |
void | setICConsistency (std::string s) |
std::string | getICConsistency () const |
virtual std::string | getICConsistencyDefault () const |
void | setICConsistencyCheck (bool c) |
bool | getICConsistencyCheck () const |
virtual bool | getICConsistencyCheckDefault () const |
virtual OrderODE | getOrderODE () const =0 |
Overridden from Teuchos::Describable | |
virtual std::string | description () const |
Functions for Steppers with subSteppers (e.g., OperatorSplit) | |
virtual void | createSubSteppers (std::vector< Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > >) |
Private Attributes | |
std::string | stepperType_ |
bool | useFSAL_ |
std::string | ICConsistency_ |
bool | ICConsistencyCheck_ |
Thyra Base interface for time steppers.
Design Considerations
Definition at line 24 of file Tempus_Integrator.hpp.
|
inlinevirtual |
Definition at line 147 of file Tempus_Stepper_decl.hpp.
|
inlinevirtual |
Reimplemented in Tempus::StepperStaggeredForwardSensitivity< Scalar >.
Definition at line 142 of file Tempus_Stepper_decl.hpp.
|
pure virtual |
Implemented in Tempus::StepperIMEX_RK< Scalar >, Tempus::StepperIMEX_RK_Partition< Scalar >, Tempus::StepperNewmarkImplicitAForm< Scalar >, Tempus::StepperDIRK< Scalar >, Tempus::StepperExplicitRK< Scalar >, Tempus::StepperLeapfrog< Scalar >, Tempus::StepperStaggeredForwardSensitivity< Scalar >, Tempus::StepperOperatorSplit< Scalar >, Tempus::StepperBDF2< Scalar >, Tempus::StepperNewmarkExplicitAForm< Scalar >, Tempus::StepperSubcycling< Scalar >, Tempus::StepperHHTAlpha< Scalar >, Tempus::StepperForwardEuler< Scalar >, Tempus::StepperNewmarkImplicitDForm< Scalar >, Tempus::StepperBackwardEuler< Scalar >, Tempus::StepperTrapezoidal< Scalar >, and Tempus_Test::StepperPhysicsStateTest< Scalar >.
|
inline |
Definition at line 130 of file Tempus_Stepper_decl.hpp.
|
inline |
Definition at line 134 of file Tempus_Stepper_decl.hpp.
|
inlinevirtual |
Reimplemented in Tempus::StepperDIRK_General< Scalar >, Tempus::StepperSDIRK_21Pair< Scalar >, Tempus::StepperSDIRK_5Stage5thOrder< Scalar >, Tempus::StepperSDIRK_3Stage4thOrder< Scalar >, Tempus::StepperSDIRK_5Stage4thOrder< Scalar >, Tempus::StepperDIRK_2Stage2ndOrderLobattoIIIB< Scalar >, Tempus::StepperDIRK_1Stage1stOrderRadauIA< Scalar >, Tempus::StepperSDIRK_ImplicitMidpoint< Scalar >, Tempus::StepperEDIRK_TrapezoidalRule< Scalar >, Tempus::StepperEDIRK_2StageTheta< Scalar >, Tempus::StepperDIRK_1StageTheta< Scalar >, Tempus::StepperEDIRK_2Stage3rdOrder< Scalar >, Tempus::StepperSDIRK_2Stage2ndOrder< Scalar >, Tempus::StepperDIRK_BackwardEuler< Scalar >, Tempus::StepperIMEX_RK< Scalar >, and Tempus::StepperBDF2< Scalar >.
Definition at line 135 of file Tempus_Stepper_decl.hpp.
|
inlinevirtual |
Reimplemented in Tempus::StepperNewmarkImplicitAForm< Scalar >, Tempus::StepperNewmarkExplicitAForm< Scalar >, Tempus::StepperLeapfrog< Scalar >, and Tempus::StepperTrapezoidal< Scalar >.
Definition at line 131 of file Tempus_Stepper_decl.hpp.
|
pure virtual |
Implemented in Tempus::StepperExplicitRK< Scalar >, Tempus::StepperLeapfrog< Scalar >, Tempus::StepperStaggeredForwardSensitivity< Scalar >, Tempus::StepperImplicit< Scalar >, Tempus::StepperOperatorSplit< Scalar >, Tempus::StepperNewmarkExplicitAForm< Scalar >, Tempus::StepperSubcycling< Scalar >, and Tempus::StepperExplicit< Scalar >.
|
pure virtual |
|
pure virtual |
Get Observer.
Implemented in Tempus::StepperIMEX_RK< Scalar >, Tempus::StepperIMEX_RK_Partition< Scalar >, Tempus::StepperNewmarkImplicitAForm< Scalar >, Tempus::StepperExplicitRK< Scalar >, Tempus::StepperLeapfrog< Scalar >, Tempus::StepperDIRK< Scalar >, Tempus::StepperStaggeredForwardSensitivity< Scalar >, Tempus::StepperNewmarkExplicitAForm< Scalar >, Tempus::StepperOperatorSplit< Scalar >, Tempus::StepperBDF2< Scalar >, Tempus::StepperHHTAlpha< Scalar >, Tempus::StepperForwardEuler< Scalar >, Tempus::StepperNewmarkImplicitDForm< Scalar >, Tempus::StepperSubcycling< Scalar >, Tempus::StepperTrapezoidal< Scalar >, Tempus::StepperBackwardEuler< Scalar >, and Tempus_Test::StepperPhysicsStateTest< Scalar >.
|
pure virtual |
Implemented in Tempus::StepperIMEX_RK< Scalar >, Tempus::StepperIMEX_RK_Partition< Scalar >, Tempus::StepperNewmarkImplicitAForm< Scalar >, Tempus::StepperDIRK< Scalar >, Tempus::StepperExplicitRK< Scalar >, Tempus::StepperLeapfrog< Scalar >, Tempus::StepperStaggeredForwardSensitivity< Scalar >, Tempus::StepperOperatorSplit< Scalar >, Tempus::StepperSubcycling< Scalar >, Tempus::StepperBDF2< Scalar >, Tempus::StepperNewmarkExplicitAForm< Scalar >, Tempus::StepperHHTAlpha< Scalar >, Tempus::StepperForwardEuler< Scalar >, Tempus::StepperNewmarkImplicitDForm< Scalar >, Tempus::StepperBackwardEuler< Scalar >, Tempus::StepperTrapezoidal< Scalar >, and Tempus_Test::StepperPhysicsStateTest< Scalar >.
|
pure virtual |
Implemented in Tempus::StepperIMEX_RK< Scalar >, Tempus::StepperIMEX_RK_Partition< Scalar >, Tempus::StepperNewmarkImplicitAForm< Scalar >, Tempus::StepperDIRK< Scalar >, Tempus::StepperExplicitRK< Scalar >, Tempus::StepperLeapfrog< Scalar >, Tempus::StepperStaggeredForwardSensitivity< Scalar >, Tempus::StepperOperatorSplit< Scalar >, Tempus::StepperSubcycling< Scalar >, Tempus::StepperNewmarkExplicitAForm< Scalar >, Tempus::StepperBDF2< Scalar >, Tempus::StepperNewmarkImplicitDForm< Scalar >, Tempus::StepperHHTAlpha< Scalar >, Tempus::StepperForwardEuler< Scalar >, Tempus::StepperBackwardEuler< Scalar >, Tempus::StepperTrapezoidal< Scalar >, and Tempus_Test::StepperPhysicsStateTest< Scalar >.
|
pure virtual |
Implemented in Tempus::StepperIMEX_RK< Scalar >, Tempus::StepperIMEX_RK_Partition< Scalar >, Tempus::StepperNewmarkImplicitAForm< Scalar >, Tempus::StepperDIRK< Scalar >, Tempus::StepperExplicitRK< Scalar >, Tempus::StepperLeapfrog< Scalar >, Tempus::StepperStaggeredForwardSensitivity< Scalar >, Tempus::StepperOperatorSplit< Scalar >, Tempus::StepperSubcycling< Scalar >, Tempus::StepperNewmarkExplicitAForm< Scalar >, Tempus::StepperBDF2< Scalar >, Tempus::StepperHHTAlpha< Scalar >, Tempus::StepperNewmarkImplicitDForm< Scalar >, Tempus::StepperForwardEuler< Scalar >, Tempus::StepperBackwardEuler< Scalar >, Tempus::StepperTrapezoidal< Scalar >, and Tempus_Test::StepperPhysicsStateTest< Scalar >.
|
pure virtual |
Implemented in Tempus::StepperIMEX_RK< Scalar >, Tempus::StepperIMEX_RK_Partition< Scalar >, Tempus::StepperOperatorSplit< Scalar >, Tempus::StepperDIRK< Scalar >, Tempus::StepperNewmarkImplicitAForm< Scalar >, Tempus::StepperExplicitRK< Scalar >, Tempus::StepperStaggeredForwardSensitivity< Scalar >, Tempus::StepperLeapfrog< Scalar >, Tempus::StepperNewmarkExplicitAForm< Scalar >, Tempus::StepperBDF2< Scalar >, Tempus::StepperNewmarkImplicitDForm< Scalar >, Tempus::StepperSubcycling< Scalar >, Tempus::StepperHHTAlpha< Scalar >, Tempus::StepperForwardEuler< Scalar >, Tempus::StepperBackwardEuler< Scalar >, Tempus::StepperTrapezoidal< Scalar >, and Tempus_Test::StepperPhysicsStateTest< Scalar >.
|
pure virtual |
|
inline |
Definition at line 123 of file Tempus_Stepper_decl.hpp.
|
inline |
Definition at line 126 of file Tempus_Stepper_decl.hpp.
|
inlinevirtual |
Reimplemented in Tempus::StepperNewmarkImplicitAForm< Scalar >, Tempus::StepperNewmarkExplicitAForm< Scalar >, and Tempus::StepperTrapezoidal< Scalar >.
Definition at line 127 of file Tempus_Stepper_decl.hpp.
|
pure virtual |
Implemented in Tempus::StepperDIRK_General< Scalar >, Tempus::StepperSDIRK_21Pair< Scalar >, Tempus::StepperSDIRK_5Stage5thOrder< Scalar >, Tempus::StepperSDIRK_3Stage4thOrder< Scalar >, Tempus::StepperSDIRK_5Stage4thOrder< Scalar >, Tempus::StepperDIRK_2Stage2ndOrderLobattoIIIB< Scalar >, Tempus::StepperDIRK_1Stage1stOrderRadauIA< Scalar >, Tempus::StepperSDIRK_ImplicitMidpoint< Scalar >, Tempus::StepperEDIRK_TrapezoidalRule< Scalar >, Tempus::StepperEDIRK_2StageTheta< Scalar >, Tempus::StepperDIRK_1StageTheta< Scalar >, Tempus::StepperEDIRK_2Stage3rdOrder< Scalar >, Tempus::StepperSDIRK_2Stage3rdOrder< Scalar >, Tempus::StepperSDIRK_2Stage2ndOrder< Scalar >, Tempus::StepperDIRK_BackwardEuler< Scalar >, Tempus::StepperERK_General< Scalar >, Tempus::StepperIMEX_RK< Scalar >, Tempus::StepperIMEX_RK_Partition< Scalar >, Tempus::StepperStaggeredForwardSensitivity< Scalar >, Tempus::StepperDIRK< Scalar >, Tempus::StepperOperatorSplit< Scalar >, Tempus::StepperNewmarkImplicitAForm< Scalar >, Tempus::StepperExplicitRK< Scalar >, Tempus::StepperLeapfrog< Scalar >, Tempus::StepperBDF2< Scalar >, Tempus::StepperNewmarkImplicitDForm< Scalar >, Tempus::StepperNewmarkExplicitAForm< Scalar >, Tempus::StepperHHTAlpha< Scalar >, Tempus::StepperSubcycling< Scalar >, Tempus::StepperBackwardEuler< Scalar >, Tempus::StepperTrapezoidal< Scalar >, Tempus::StepperForwardEuler< Scalar >, and Tempus_Test::StepperPhysicsStateTest< Scalar >.
|
pure virtual |
Initialize during construction and after changing input parameters.
Implemented in Tempus::StepperIMEX_RK< Scalar >, Tempus::StepperIMEX_RK_Partition< Scalar >, Tempus::StepperNewmarkImplicitAForm< Scalar >, Tempus::StepperExplicitRK< Scalar >, Tempus::StepperLeapfrog< Scalar >, Tempus::StepperDIRK< Scalar >, Tempus::StepperStaggeredForwardSensitivity< Scalar >, Tempus::StepperBDF2< Scalar >, Tempus::StepperOperatorSplit< Scalar >, Tempus::StepperNewmarkExplicitAForm< Scalar >, Tempus::StepperHHTAlpha< Scalar >, Tempus::StepperForwardEuler< Scalar >, Tempus::StepperNewmarkImplicitDForm< Scalar >, Tempus::StepperSubcycling< Scalar >, Tempus::StepperBackwardEuler< Scalar >, Tempus::StepperTrapezoidal< Scalar >, and Tempus_Test::StepperPhysicsStateTest< Scalar >.
|
pure virtual |
Implemented in Tempus::StepperIMEX_RK< Scalar >, Tempus::StepperIMEX_RK_Partition< Scalar >, Tempus::StepperNewmarkImplicitAForm< Scalar >, Tempus::StepperExplicitRK< Scalar >, Tempus::StepperDIRK< Scalar >, Tempus::StepperLeapfrog< Scalar >, Tempus::StepperStaggeredForwardSensitivity< Scalar >, Tempus::StepperOperatorSplit< Scalar >, Tempus::StepperNewmarkExplicitAForm< Scalar >, Tempus::StepperBDF2< Scalar >, Tempus::StepperNewmarkImplicitDForm< Scalar >, Tempus::StepperHHTAlpha< Scalar >, Tempus::StepperSubcycling< Scalar >, Tempus::StepperBackwardEuler< Scalar >, Tempus::StepperTrapezoidal< Scalar >, and Tempus::StepperExplicit< Scalar >.
|
pure virtual |
Implemented in Tempus::StepperIMEX_RK< Scalar >, Tempus::StepperIMEX_RK_Partition< Scalar >, Tempus::StepperOperatorSplit< Scalar >, Tempus::StepperDIRK< Scalar >, Tempus::StepperNewmarkImplicitAForm< Scalar >, Tempus::StepperExplicitRK< Scalar >, Tempus::StepperLeapfrog< Scalar >, Tempus::StepperStaggeredForwardSensitivity< Scalar >, Tempus::StepperNewmarkExplicitAForm< Scalar >, Tempus::StepperBDF2< Scalar >, Tempus::StepperNewmarkImplicitDForm< Scalar >, Tempus::StepperHHTAlpha< Scalar >, Tempus::StepperSubcycling< Scalar >, Tempus::StepperBackwardEuler< Scalar >, Tempus::StepperTrapezoidal< Scalar >, and Tempus::StepperExplicit< Scalar >.
|
pure virtual |
Implemented in Tempus::StepperIMEX_RK< Scalar >, Tempus::StepperIMEX_RK_Partition< Scalar >, Tempus::StepperDIRK< Scalar >, Tempus::StepperNewmarkImplicitAForm< Scalar >, Tempus::StepperExplicitRK< Scalar >, Tempus::StepperOperatorSplit< Scalar >, Tempus::StepperLeapfrog< Scalar >, Tempus::StepperStaggeredForwardSensitivity< Scalar >, Tempus::StepperNewmarkExplicitAForm< Scalar >, Tempus::StepperBDF2< Scalar >, Tempus::StepperNewmarkImplicitDForm< Scalar >, Tempus::StepperHHTAlpha< Scalar >, Tempus::StepperSubcycling< Scalar >, Tempus::StepperBackwardEuler< Scalar >, Tempus::StepperTrapezoidal< Scalar >, and Tempus::StepperExplicit< Scalar >.
|
pure virtual |
Implemented in Tempus::StepperIMEX_RK< Scalar >, Tempus::StepperIMEX_RK_Partition< Scalar >, Tempus::StepperOperatorSplit< Scalar >, Tempus::StepperDIRK< Scalar >, Tempus::StepperNewmarkImplicitAForm< Scalar >, Tempus::StepperExplicitRK< Scalar >, Tempus::StepperStaggeredForwardSensitivity< Scalar >, Tempus::StepperLeapfrog< Scalar >, Tempus::StepperNewmarkExplicitAForm< Scalar >, Tempus::StepperBDF2< Scalar >, Tempus::StepperNewmarkImplicitDForm< Scalar >, Tempus::StepperHHTAlpha< Scalar >, Tempus::StepperSubcycling< Scalar >, Tempus::StepperBackwardEuler< Scalar >, Tempus::StepperTrapezoidal< Scalar >, and Tempus::StepperExplicit< Scalar >.
|
pure virtual |
Implemented in Tempus::StepperIMEX_RK< Scalar >, Tempus::StepperIMEX_RK_Partition< Scalar >, Tempus::StepperOperatorSplit< Scalar >, Tempus::StepperDIRK< Scalar >, Tempus::StepperNewmarkImplicitAForm< Scalar >, Tempus::StepperExplicitRK< Scalar >, Tempus::StepperLeapfrog< Scalar >, Tempus::StepperStaggeredForwardSensitivity< Scalar >, Tempus::StepperNewmarkExplicitAForm< Scalar >, Tempus::StepperBDF2< Scalar >, Tempus::StepperNewmarkImplicitDForm< Scalar >, Tempus::StepperHHTAlpha< Scalar >, Tempus::StepperSubcycling< Scalar >, Tempus::StepperBackwardEuler< Scalar >, Tempus::StepperTrapezoidal< Scalar >, and Tempus::StepperExplicit< Scalar >.
|
inline |
Definition at line 129 of file Tempus_Stepper_decl.hpp.
|
inline |
Definition at line 133 of file Tempus_Stepper_decl.hpp.
|
pure virtual |
Set initial conditions, make them consistent, and set stepper memory.
Implemented in Tempus::StepperIMEX_RK< Scalar >, Tempus::StepperIMEX_RK_Partition< Scalar >, Tempus::StepperNewmarkImplicitAForm< Scalar >, Tempus::StepperExplicitRK< Scalar >, Tempus::StepperLeapfrog< Scalar >, Tempus::StepperDIRK< Scalar >, Tempus::StepperStaggeredForwardSensitivity< Scalar >, Tempus::StepperBDF2< Scalar >, Tempus::StepperOperatorSplit< Scalar >, Tempus::StepperNewmarkExplicitAForm< Scalar >, Tempus::StepperHHTAlpha< Scalar >, Tempus::StepperForwardEuler< Scalar >, Tempus::StepperNewmarkImplicitDForm< Scalar >, Tempus::StepperSubcycling< Scalar >, Tempus::StepperBackwardEuler< Scalar >, Tempus::StepperImplicit< Scalar >, Tempus::StepperTrapezoidal< Scalar >, and Tempus::StepperExplicit< Scalar >.
|
pure virtual |
Pass initial guess to Newton solver (for implicit schemes)
Implemented in Tempus::StepperStaggeredForwardSensitivity< Scalar >, Tempus::StepperImplicit< Scalar >, Tempus::StepperOperatorSplit< Scalar >, Tempus::StepperSubcycling< Scalar >, and Tempus::StepperExplicit< Scalar >.
|
pure virtual |
Implemented in Tempus::StepperIMEX_RK< Scalar >, Tempus::StepperIMEX_RK_Partition< Scalar >, Tempus::StepperNewmarkImplicitAForm< Scalar >, Tempus::StepperStaggeredForwardSensitivity< Scalar >, Tempus::StepperHHTAlpha< Scalar >, Tempus::StepperOperatorSplit< Scalar >, Tempus::StepperImplicit< Scalar >, Tempus::StepperSubcycling< Scalar >, and Tempus::StepperExplicit< Scalar >.
|
pure virtual |
|
pure virtual |
Set Observer.
Implemented in Tempus::StepperIMEX_RK< Scalar >, Tempus::StepperIMEX_RK_Partition< Scalar >, Tempus::StepperNewmarkImplicitAForm< Scalar >, Tempus::StepperExplicitRK< Scalar >, Tempus::StepperLeapfrog< Scalar >, Tempus::StepperDIRK< Scalar >, Tempus::StepperStaggeredForwardSensitivity< Scalar >, Tempus::StepperNewmarkExplicitAForm< Scalar >, Tempus::StepperOperatorSplit< Scalar >, Tempus::StepperBDF2< Scalar >, Tempus::StepperHHTAlpha< Scalar >, Tempus::StepperForwardEuler< Scalar >, Tempus::StepperNewmarkImplicitDForm< Scalar >, Tempus::StepperSubcycling< Scalar >, Tempus::StepperTrapezoidal< Scalar >, Tempus::StepperBackwardEuler< Scalar >, and Tempus_Test::StepperPhysicsStateTest< Scalar >.
|
pure virtual |
|
inline |
Definition at line 122 of file Tempus_Stepper_decl.hpp.
|
inline |
Definition at line 125 of file Tempus_Stepper_decl.hpp.
|
pure virtual |
Take the specified timestep, dt, and return true if successful.
Implemented in Tempus::StepperIMEX_RK< Scalar >, Tempus::StepperIMEX_RK_Partition< Scalar >, Tempus::StepperNewmarkImplicitAForm< Scalar >, Tempus::StepperDIRK< Scalar >, Tempus::StepperExplicitRK< Scalar >, Tempus::StepperLeapfrog< Scalar >, Tempus::StepperStaggeredForwardSensitivity< Scalar >, Tempus::StepperBDF2< Scalar >, Tempus::StepperOperatorSplit< Scalar >, Tempus::StepperNewmarkExplicitAForm< Scalar >, Tempus::StepperSubcycling< Scalar >, Tempus::StepperHHTAlpha< Scalar >, Tempus::StepperForwardEuler< Scalar >, Tempus::StepperBackwardEuler< Scalar >, and Tempus::StepperTrapezoidal< Scalar >.
|
private |
Definition at line 156 of file Tempus_Stepper_decl.hpp.
|
private |
Definition at line 157 of file Tempus_Stepper_decl.hpp.
|
private |
Definition at line 154 of file Tempus_Stepper_decl.hpp.
|
private |
Definition at line 155 of file Tempus_Stepper_decl.hpp.