-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path26_pen_h_allg.cpp
More file actions
36 lines (32 loc) · 817 Bytes
/
Copy path26_pen_h_allg.cpp
File metadata and controls
36 lines (32 loc) · 817 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include "bla/bla.hpp"
using namespace ngbla;
#include "hamilton.hpp"
#include <math.h>
using namespace std;
class StringPendulum : public Hamiltonian
{
public:
virtual double Eval(const Vector<>&p , const Vector<>&q) const override
{
return 1./2 * p[0] * p[0] - cos(q[0]);
}
virtual double EvalDp(const Vector<>& p, const Vector<>& q, Vector<>& dHdp) const override
{
dHdp[0] = p[0];
}
virtual double EvalDq (const Vector<>&p, const Vector<>& q, Vector<>& dHdq) const override
{
dHdq[0] = sin(q[0]);
}
virtual bool IsSeperable() const override { return true; }
};
int main()
{
Vector<> p = { 1. };
Vector<> q = { 0. };
StringPendulum H;
//SymplecticEuler method;
StoermerVerlet method;
ofstream out("bsp26.out");
HamiltonianSolve(H, method, p, q, 100., 0.1, out);
}