Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext

Symplectic System

Description

This concept describes how to define a symplectic system written with generalized coordinate q and generalized momentum p:

q'(t) = f(p)

p'(t) = g(q)

Such a situation is typically found for Hamiltonian systems with a separable Hamiltonian:

H(p,q) = Hkin(p) + V(q)

which gives the equations of motion:

q'(t) = dHkin / dp = f(p)

p'(t) = dV / dq = g(q)

The algorithmic implementation of this situation is described by a pair of callable objects for f and g with a specific parameter signature. Such a system should be implemented as a std::pair of functions or a functors. Symplectic systems are used in symplectic steppers like symplectic_rkn_sb3a_mclachlan.

Notation

System

A type that is a model of SymplecticSystem

Coor

The type of the coordinate q

Momentum

The type of the momentum p

CoorDeriv

The type of the derivative of coordinate q'

MomentumDeriv

The type of the derivative of momentum p'

sys

An object of the type System

q

Object of type Coor

p

Object of type Momentum

dqdt

Object of type CoorDeriv

dpdt

Object of type MomentumDeriv

Valid expressions

Name

Expression

Type

Semantics

Check for pair

boost::is_pair< System >::type

boost::mpl::true_

Check if System is a pair

Calculate dq/dt = f(p)

sys.first( p , dqdt )

void

Calculates f(p), the result is stored into dqdt

Calculate dp/dt = g(q)

sys.second( q , dpdt )

void

Calculates g(q), the result is stored into dpdt


PrevUpHomeNext