CAPD DynSys Library
5.2.0
|
BasicPoicareMap class is mainly used for non-rigorous computations of Poincare Map. More...
#include <capd/poincare/BasicPoincareMap.h>
Public Types | |
typedef SolverT | Solver |
ODE solver type. More... | |
typedef Solver::VectorFieldType | VectorFieldType |
vector field type More... | |
typedef Solver::MatrixType | MatrixType |
matrix type More... | |
typedef Solver::VectorType | VectorType |
vector type More... | |
typedef Solver::ScalarType | ScalarType |
scalar entries type More... | |
typedef VectorType::size_type | size_type |
integral type used to index containers (vectors, matrices, etc) More... | |
typedef TypeTraits< ScalarType >::Real | RealType |
floating point type: for floating points is equal to ScalarType, for intervals is a type of their bounds. More... | |
typedef Solver::SolutionCurve | CurveType |
typedef capd::diffAlgebra::SolutionCurve< CurveType > | SolutionCurve |
typedef CurveType::HessianType | HessianType |
data structure for storing Hessians More... | |
typedef CurveType::JetType | JetType |
data structure for storing Hessians More... | |
typedef SectionT | SectionType |
Section function type. More... | |
typedef capd::poincare::CrossingDirection | CrossingDirection |
specifies direction of crossing of Poincare section (plus to minus, minus to plus or both) More... | |
Public Member Functions | |
BasicPoincareMap (Solver &solver, SectionType §ion, CrossingDirection direction=Both, const RealType &errorTolerance=pow(TypeTraits< RealType >::epsilon(), RealType(14.)/RealType(15.))) | |
Constructor. More... | |
VectorType | operator() (const VectorType &v) |
Computes value of Poincare Map. More... | |
VectorType | operator() (VectorType v, ScalarType &in_out_time) |
Computes value of Poincare Map. More... | |
VectorType | operator() (const VectorType &v, VectorType &afterSection) |
Computes value of Poincare Map. More... | |
VectorType | operator() (VectorType v, VectorType &afterSection, ScalarType &in_out_time) |
Computes value of Poincare Map. More... | |
VectorType | operator() (const VectorType &v, MatrixType &dF) |
Computes value of Poincare Map and derivativeof the flow. More... | |
VectorType | operator() (VectorType v, MatrixType &dF, ScalarType &in_out_time) |
Computes value of Poincare Map and derivative of the flow. More... | |
VectorType | operator() (const VectorType &v, MatrixType &dF, HessianType &h) |
Computes value of Poincare Map, derivative and hessian of the flow. More... | |
VectorType | operator() (VectorType v, MatrixType &dF, HessianType &h, ScalarType &in_out_time) |
Computes value of Poincare Map, derivative and hessian of the flow. More... | |
VectorType | operator() (JetType &x) |
Computes Poincare Map and derivatives of the flow to given order evaluated at return time. More... | |
VectorType | operator() (JetType &x, ScalarType &in_out_time) |
Computes Poincare Map and derivatives of the flow to given order evaluated at return time. More... | |
MatrixType | computeDP (const VectorType &Px, const MatrixType &derivativeOfFlow, VectorType &dT, ScalarType returnTime=TypeTraits< ScalarType >::zero()) |
Simultaneous computation of gradient of return time and derivative of Poincare Map dP. More... | |
MatrixType | computeDP (const VectorType &Px, const MatrixType &derivativeOfFlow, ScalarType returnTime=TypeTraits< ScalarType >::zero()) |
Computes derivative of Poincare Map dP. More... | |
void | computeDP (const VectorType &Px, const MatrixType &derivativeOfFlow, const HessianType &hessianOfFlow, MatrixType &DP, HessianType &D2P, VectorType &dT, MatrixType &d2T, ScalarType returnTime=TypeTraits< ScalarType >::zero()) |
Simultaneous computation of first and second Taylor coefficients of return time and Poincare map. More... | |
void | computeDP (const VectorType &Px, const MatrixType &derivativeOfFlow, const HessianType &hessianOfFlow, MatrixType &DP, HessianType &D2P, ScalarType returnTime=TypeTraits< ScalarType >::zero()) |
Simultaneous computation of first and second Taylor coefficients of return time and Poincare map. More... | |
template<class JetT > | |
JetT | computeDP (const JetT &DPhi) |
Recomputes Taylor expansion of the flow into Taylor expansion of Poincare map. More... | |
const Solver & | getSolver () const |
Returns read-only reference to solver used to integrate the system. More... | |
Solver & | getSolver () |
Returns reference to solver used to integrate the system. More... | |
const Solver & | getDynamicalSystem () const |
Returns read-only reference to solver used to integrate the system. More... | |
Solver & | getDynamicalSystem () |
Returns reference to solver used to integrate the system. More... | |
VectorFieldType & | getVectorField () |
Returns reference to solver used to integrate the system. More... | |
const VectorFieldType & | getVectorField () const |
Returns read-only reference to solver used to integrate the system. More... | |
const SectionType & | getSection () const |
Returns reference to Poincare section object. More... | |
size_type | getOrder () const |
Returns order of numerical method used. More... | |
ScalarType | getStep () const |
Returns time step. More... | |
void | setOrder (size_type newOrder) |
Sets order of Taylor method. More... | |
void | setSection (const SectionType &newSection) |
Sets new section function. More... | |
void | setStep (const ScalarType &newStep) |
Sets time step for integration of DS. More... | |
void | setFactor (double newFactor) |
void | setCrossingDirection (CrossingDirection cs) |
void | turnOnStepControl () |
Disables automatic step control. More... | |
void | turnOffStepControl () |
Enables automatic step control. Step control strategy is built in the solver. More... | |
void | onOffStepControl (bool sc) |
Disables or enables automatic step control. More... | |
void | setMaxReturnTime (double maxReturnTime) |
Sets maximal return time to Poincare section. If the trajectory does not reach the section during time [0,maxReturnTime] then an exception is thrown. This prevents looping of the procedure computing Poincare map in the case when the trajectory is captured by an attractor (like sink or attracting periodic orbit) and never intersect Poincare section. More... | |
void | setBlowUpMaxNorm (double blowUpMaxNorm) |
Sets threshold value of norm that is considered as a blow up of the solution. A trajectory may escape to infinity in finite time without crossing Poincare section. If the norm of a point on trajectory is bigger than this threshold value then an exception is thrown. More... | |
Protected Member Functions | |
template<typename T > | |
T | integrateUntilSectionCrossing (T &x, int n=1, ScalarType *lastStep=0) |
Given an initial condition the function computes its trajetory until -th intersection with the Poincare section. The point just before -th intersection is returned. More... | |
ScalarType | findRelativeCrossingTime (ScalarType timeJustBeforeSection, const CurveType &curve) |
This function computes time needed to cross the section from a point which is just before the section. Given solves for satisfying by a Newton like scheme. This is just scalar equation with one unknown. Then, computed return time is used to integrate the point and compute Poincare map. More... | |
Protected Attributes | |
Solver & | m_solver |
dynamical system (e.g. Taylor, C2Taylor, CnTaylor, FadTaylor, etc) More... | |
const SectionType * | m_section |
section function More... | |
CrossingDirection | m_crossingDirection |
requested direction of section crossing More... | |
RealType | m_sectionFactor |
sectionFactor is used in the procedures reachSection and crossSection. IN NONRIGOROUS : we want to be closer than m_sectionFactor after section crossing IN RIGOROUS VERSION: Before and after section crossing we want the set to be closer to section than sectionFactor * sizeOfSet More... | |
double | m_blowUpMaxNorm |
double | m_maxReturnTime |
BasicPoicareMap class is mainly used for non-rigorous computations of Poincare Map.
For given Dynamical System and section it computes first return map and its derivatives but non-rigorously (i.e. without handling any computational errors).
Let be a dynamical system Let be a section function, Let Let be a Poincare Map For given point let T(x) be first return time (in given crossing direction) i.e.
In the following we denote by
Parameters:
typedef capd::poincare::CrossingDirection capd::poincare::BasicPoincareMap< SolverT, SectionT >::CrossingDirection |
specifies direction of crossing of Poincare section (plus to minus, minus to plus or both)
typedef Solver::SolutionCurve capd::poincare::BasicPoincareMap< SolverT, SectionT >::CurveType |
typedef CurveType::HessianType capd::poincare::BasicPoincareMap< SolverT, SectionT >::HessianType |
data structure for storing Hessians
typedef CurveType::JetType capd::poincare::BasicPoincareMap< SolverT, SectionT >::JetType |
data structure for storing Hessians
typedef Solver::MatrixType capd::poincare::BasicPoincareMap< SolverT, SectionT >::MatrixType |
matrix type
typedef TypeTraits<ScalarType>::Real capd::poincare::BasicPoincareMap< SolverT, SectionT >::RealType |
floating point type: for floating points is equal to ScalarType, for intervals is a type of their bounds.
typedef Solver::ScalarType capd::poincare::BasicPoincareMap< SolverT, SectionT >::ScalarType |
scalar entries type
typedef SectionT capd::poincare::BasicPoincareMap< SolverT, SectionT >::SectionType |
Section function type.
typedef VectorType::size_type capd::poincare::BasicPoincareMap< SolverT, SectionT >::size_type |
integral type used to index containers (vectors, matrices, etc)
typedef capd::diffAlgebra::SolutionCurve<CurveType> capd::poincare::BasicPoincareMap< SolverT, SectionT >::SolutionCurve |
typedef SolverT capd::poincare::BasicPoincareMap< SolverT, SectionT >::Solver |
ODE solver type.
typedef Solver::VectorFieldType capd::poincare::BasicPoincareMap< SolverT, SectionT >::VectorFieldType |
vector field type
typedef Solver::VectorType capd::poincare::BasicPoincareMap< SolverT, SectionT >::VectorType |
vector type
Solver& capd::poincare::BasicPoincareMap< SolverT, SectionT >::getDynamicalSystem | ( | ) |
Returns reference to solver used to integrate the system.
Solver& capd::poincare::BasicPoincareMap< SolverT, SectionT >::getSolver | ( | ) |
Returns reference to solver used to integrate the system.
const VectorFieldType& capd::poincare::BasicPoincareMap< SolverT, SectionT >::getVectorField | ( | ) | const |
Returns read-only reference to solver used to integrate the system.
VectorType capd::poincare::BasicPoincareMap< SolverT, SectionT >::operator() | ( | const VectorType & | v, |
VectorType & | afterSection | ||
) |
Computes value of Poincare Map.
[in] | v | - argument of Poincare map |
[out] | afterSection | - on output it contains a point just after first intersection with Poincare section that might be used for further integration. |
|
inline |
|
protected |
|
protected |
requested direction of section crossing
|
protected |
|
protected |
section function
|
protected |
sectionFactor is used in the procedures reachSection and crossSection. IN NONRIGOROUS : we want to be closer than m_sectionFactor after section crossing IN RIGOROUS VERSION: Before and after section crossing we want the set to be closer to section than sectionFactor * sizeOfSet
|
protected |
dynamical system (e.g. Taylor, C2Taylor, CnTaylor, FadTaylor, etc)