From 633339fd94696454fde427457682a07b73cd9f7b Mon Sep 17 00:00:00 2001 From: Joachim Schoeberl Date: Tue, 5 Dec 2023 09:46:42 +0100 Subject: [PATCH 01/20] Runge-Kutta time-stepping --- demos/test_ode.cc | 57 +++++++++++++++++++++++++++++++++++-- src/nonlinfunc.h | 56 +++++++++++++++++++++++++++++++++++++ src/ode.h | 71 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 182 insertions(+), 2 deletions(-) diff --git a/demos/test_ode.cc b/demos/test_ode.cc index 19072aa97..4df8baa9e 100644 --- a/demos/test_ode.cc +++ b/demos/test_ode.cc @@ -24,13 +24,66 @@ class MassSpring : public NonlinearFunction }; +Matrix<> Gauss2a { { 0.25, 0.25 - sqrt(3)/6 }, { 0.25 + sqrt(3)/6, 0.25 } }; +Vector<> Gauss2b { 0.5, 0.5 }; +Vector<> Gauss2c { 0.5 - sqrt(3)/6, 0.5 + sqrt(3)/6 }; + +Vector<> Gauss3c { 0.5 - sqrt(15)/10, 0.5, 0.5+sqrt(15)/10 }; + + +auto ComputeABfromC (const Vector<> & c) +{ + int s = c.Size(); + Matrix M(s, s); + Vector tmp(s); + + for (int i = 0; i < s; i++) + for (int j = 0; j < s; j++) + M(i,j) = std::pow(c(j), i); + CalcInverse(M); + + for (int i = 0; i < s; i++) + tmp(i) = 1.0 / (i+1); + + Vector b = M * tmp; + cout << "b = " << b << endl; + + Matrix a(s,s); + + for (int j = 0; j < s; j++) + { + for (int i = 0; i < s; i++) + tmp(i) = std::pow(c(j),i+1) / (i+1); + a.Row(j) = M * tmp; + } + /* + cout << "b = " << b << endl; + cout << "a = " << a << endl; + */ + return tuple { a, b }; +} + + + int main() { double tend = 4*M_PI; - int steps = 100; + int steps = 200; Vector<> y { 1, 0 }; auto rhs = make_shared(); - + + /* SolveODE_IE(tend, steps, y, rhs, [](double t, VectorView y) { cout << t << " " << y(0) << " " << y(1) << endl; }); + */ + + auto [a,b] = ComputeABfromC (Gauss3c); + SolveODE_RK(tend, steps, a, b, Gauss3c, y, rhs, + [](double t, VectorView y) { cout << t << " " << y(0) << " " << y(1) << endl; }); + + + /* + SolveODE_RK(tend, steps, Gauss2a, Gauss2b, Gauss2c, y, rhs, + [](double t, VectorView y) { cout << t << " " << y(0) << " " << y(1) << endl; }); + */ } diff --git a/src/nonlinfunc.h b/src/nonlinfunc.h index 246369093..681a5372f 100644 --- a/src/nonlinfunc.h +++ b/src/nonlinfunc.h @@ -226,6 +226,62 @@ namespace ASC_ode } }; + + class MultipleFunc : public NonlinearFunction + { + shared_ptr func; + size_t num, fdimx, fdimf; + public: + MultipleFunc (shared_ptr _func, int _num) + : func(_func), num(_num) + { + fdimx = func->DimX(); + fdimf = func->DimF(); + } + + virtual size_t DimX() const { return num * fdimx; } + virtual size_t DimF() const { return num * fdimf; } + virtual void Evaluate (VectorView x, VectorView f) const + { + for (size_t i = 0; i < num; i++) + func->Evaluate(x.Range(i*fdimx, (i+1)*fdimx), + f.Range(i*fdimf, (i+1)*fdimf)); + } + virtual void EvaluateDeriv (VectorView x, MatrixView df) const + { + df = 0.0; + for (size_t i = 0; i < num; i++) + func->EvaluateDeriv(x.Range(i*fdimx, (i+1)*fdimx), + df.Rows(i*fdimf, (i+1)*fdimf).Cols(i*fdimx, (i+1)*fdimx)); + } + }; + + + class MatVecFunc : public NonlinearFunction + { + Matrix<> a; + size_t n; + public: + MatVecFunc (Matrix<> _a, size_t _n) + : a(_a), n(_n) { } + + virtual size_t DimX() const { return n*a.Height(); } + virtual size_t DimF() const { return n*a.Width(); } + virtual void Evaluate (VectorView x, VectorView f) const + { + MatrixView<> mx(a.Width(), n, n, x.Data()); + MatrixView<> mf(a.Height(), n, n, f.Data()); + mf = a * mx; + } + virtual void EvaluateDeriv (VectorView x, MatrixView df) const + { + df = 0.0; + for (size_t i = 0; i < a.Height(); i++) + for (size_t j = 0; j < a.Width(); j++) + df.Rows(i*n, (i+1)*n).Cols(j*n, (j+1)*n).Diag() = a(i,j); + } + }; + } diff --git a/src/ode.h b/src/ode.h index 75f222372..6298805a0 100644 --- a/src/ode.h +++ b/src/ode.h @@ -31,11 +31,82 @@ namespace ASC_ode } } + + + + + + // implicit Euler method for dy/dt = rhs(y) + void SolveODE_RK(double tend, int steps, + Matrix<> a, Vector<> b, Vector<> c, + VectorView y, shared_ptr rhs, + std::function)> callback = nullptr) + { + double dt = tend/steps; + int s = c.Size(); + int n = y.Size(); + + /* + auto multiple_rhs = make_shared(rhs, s); + Vector<> my(s*y.Size()); + Vector<> mf(s*y.Size()); + auto myold = make_shared(my); + auto mynew = make_shared(s*n); + auto equ = mynew-myold - dt * Compose(make_shared(a, n), multiple_rhs); + + + double t = 0; + for (int i = 0; i < steps; i++) + { + cout << "step " << i << endl; + for (int j = 0; j < s; j++) + my.Range(j*n, (j+1)*n) = y; + myold->Set(my); + + NewtonSolver (equ, my); + + multiple_rhs->Evaluate(my, mf); + for (int j = 0; j < s; j++) + y += dt * b(j) * mf.Range(j*n, (j+1)*n); + + t += dt; + if (callback) callback(t, y); + } + */ + + auto multiple_rhs = make_shared(rhs, s); + Vector<> mk(s*y.Size()); + Vector<> my(s*y.Size()); + auto myold = make_shared(my); + auto knew = make_shared(s*n); + auto equ = knew - Compose(multiple_rhs, myold+dt*make_shared(a, n)); + + double t = 0; + for (int i = 0; i < steps; i++) + { + cout << "step " << i << endl; + for (int j = 0; j < s; j++) + my.Range(j*n, (j+1)*n) = y; + myold->Set(my); + + mk = 0.0; + NewtonSolver (equ, mk); + + for (int j = 0; j < s; j++) + y += dt * b(j) * mk.Range(j*n, (j+1)*n); + + t += dt; + if (callback) callback(t, y); + } + + } + + // Newmark and generalized alpha: // https://miaodi.github.io/finite%20element%20method/newmark-generalized/ From 151ff70af0f7f14f951e60c1f589900628c45a58 Mon Sep 17 00:00:00 2001 From: Joachim Schoeberl Date: Tue, 5 Dec 2023 10:18:52 +0100 Subject: [PATCH 02/20] Gauss and Radau integration rules --- demos/test_ode.cc | 140 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) diff --git a/demos/test_ode.cc b/demos/test_ode.cc index 4df8baa9e..82b0375b7 100644 --- a/demos/test_ode.cc +++ b/demos/test_ode.cc @@ -31,6 +31,120 @@ Vector<> Gauss2c { 0.5 - sqrt(3)/6, 0.5 + sqrt(3)/6 }; Vector<> Gauss3c { 0.5 - sqrt(15)/10, 0.5, 0.5+sqrt(15)/10 }; +// codes from Numerical Recipes, https://numerical.recipes/book.html + +// Gauss integration on [0,1] +void GaussLegendre(VectorView<> x, VectorView<> w) +// Given the lower and upper limits of integration x1 and x2, this routine returns arrays x[0..n-1] +// and w[0..n-1] of length n, containing the abscissas and weights of the Gauss-Legendre n-point +// quadrature formula. + { + double x1 = 0; + double x2 = 1; + const double EPS=1.0e-14; // EPS is the relative precision. + double z1,z,xm,xl,pp,p3,p2,p1; + int n=x.Size(); + int m=(n+1)/2; // The roots are symmetric in the interval, so + xm=0.5*(x2+x1); // we only have to find half of them. + xl=0.5*(x2-x1); + for (int i=0;i EPS); + x[i]=xm-xl*z; // Scale the root to the desired interval, + x[n-1-i]=xm+xl*z; // and put in its symmetric counterpart. + w[i]=2.0*xl/((1.0-z*z)*pp*pp); // Compute the weight + w[n-1-i]=w[i]; // and its symmetric counterpart. + } + } + + +void GaussJacobi (VectorView<> x, VectorView<> w, const double alf, const double bet) +// Given alf and bet, the parameters ˛ and ˇ of the Jacobi polynomials, this routine returns +// arrays x[0..n-1] and w[0..n-1] containing the abscissas and weights of the n-point GaussJacobi quadrature formula. The largest abscissa is returned in x[0], the smallest in x[n-1]. +{ + const int MAXIT=10; + const double EPS=1.0e-14; // EPS is the relative precision. + int i,its,j; + double alfbet,an,bn,r1,r2,r3; + double a,b,c,p1,p2,p3,pp,temp,z,z1; + int n=x.Size(); + for (i=0;i MAXIT) throw("too many iterations in gaujac"); + x[i]=z; // Store the root and the weight. + w[i]=exp(std::lgamma(alf+n)+std::lgamma(bet+n)-std::lgamma(n+1.0)- + std::lgamma(n+alfbet+1.0))*temp*pow(2.0,alfbet)/(pp*p2); + } +} + + + + auto ComputeABfromC (const Vector<> & c) { int s = c.Size(); @@ -64,6 +178,21 @@ auto ComputeABfromC (const Vector<> & c) } +void GaussRadau (VectorView<> x, VectorView<> w) +{ + GaussJacobi (x.Range(0, x.Size()-1), + w.Range(0, w.Size()-1), 1, 0); + for (int i = 0; i < x.Size()-1; i++) + { + x(i) = 0.5*(x(i)+1); + w(i) *= 0.5; + } + x(x.Size()-1) = 1.0; + double sum = 0; + for (int i = 0; i < x.Size()-1; i++) + sum += w(i); + w(x.Size()-1) = 1-sum; +} int main() { @@ -81,6 +210,17 @@ int main() SolveODE_RK(tend, steps, a, b, Gauss3c, y, rhs, [](double t, VectorView y) { cout << t << " " << y(0) << " " << y(1) << endl; }); + + cout << "Gauss3c = " << Gauss3c << endl; + cout << "weights = " << b << endl; + GaussLegendre (Gauss3c, b); + cout << "with generic function, c = " << Gauss3c << ", weights = " << b << endl; + + + Vector<> Radau(3), RadauWeight(3); + GaussRadau (Radau, RadauWeight); + // not sure about weights, comput them via ComputeABfromC + cout << "Radau = " << Radau << ", weight = " << RadauWeight << endl; /* SolveODE_RK(tend, steps, Gauss2a, Gauss2b, Gauss2c, y, rhs, From 617b24ac9aa4e98be84f725b6a61ab10005f6336 Mon Sep 17 00:00:00 2001 From: Joachim Schoeberl Date: Fri, 7 Nov 2025 12:18:25 +0100 Subject: [PATCH 03/20] nanoblas inverse --- demos/test_ode.cpp | 9 +++++---- nanoblas | 2 +- src/implicitRK.hpp | 36 ++++++++++++++++++++++-------------- 3 files changed, 28 insertions(+), 19 deletions(-) diff --git a/demos/test_ode.cpp b/demos/test_ode.cpp index 4ab9698e8..b271e3b93 100644 --- a/demos/test_ode.cpp +++ b/demos/test_ode.cpp @@ -2,6 +2,7 @@ #include #include +#include using namespace ASC_ode; @@ -32,18 +33,18 @@ int main() int steps = 100; Vector<> y = { 1, 0 }; // initializer list auto rhs = std::make_shared(); - + /* solveODE_IE(tend, steps, y, rhs, [](double t, VectorView y) { std::cout << t << " " << y(0) << " " << y(1) << std::endl; }); +*/ -/* auto [a,b] = ComputeABfromC (Gauss3c); SolveODE_RK(tend, steps, a, b, Gauss3c, y, rhs, - [](double t, VectorView y) { cout << t << " " << y(0) << " " << y(1) << endl; }); - + [](double t, VectorView y) { std::cout << t << " " << y(0) << " " << y(1) << std::endl; }); +/* cout << "Gauss3c = " << Gauss3c << endl; cout << "weights = " << b << endl; GaussLegendre (Gauss3c, b); diff --git a/nanoblas b/nanoblas index 2d5126eeb..f935be2ef 160000 --- a/nanoblas +++ b/nanoblas @@ -1 +1 @@ -Subproject commit 2d5126eeb46c6f36073c3d3dd0c34b46aa07a35f +Subproject commit f935be2ef996f8693c49e1203014355615d762fb diff --git a/src/implicitRK.hpp b/src/implicitRK.hpp index 4bcde0e6f..a2bd202c4 100644 --- a/src/implicitRK.hpp +++ b/src/implicitRK.hpp @@ -1,8 +1,14 @@ #ifndef IMPLICITRK_HPP #define IMPLICITRK_HPP +#include +#include +#include + namespace ASC_ode { -Matrix<> Gauss2a { { 0.25, 0.25 - sqrt(3)/6 }, { 0.25 + sqrt(3)/6, 0.25 } }; + using namespace nanoblas; + +Matrix Gauss2a { { 0.25, 0.25 - sqrt(3)/6 }, { 0.25 + sqrt(3)/6, 0.25 } }; Vector<> Gauss2b { 0.5, 0.5 }; Vector<> Gauss2c { 0.5 - sqrt(3)/6, 0.5 + sqrt(3)/6 }; @@ -21,7 +27,7 @@ void GaussLegendre(VectorView<> x, VectorView<> w) double x2 = 1; const double EPS=1.0e-14; // EPS is the relative precision. double z1,z,xm,xl,pp,p3,p2,p1; - int n=x.Size(); + int n=x.size(); int m=(n+1)/2; // The roots are symmetric in the interval, so xm=0.5*(x2+x1); // we only have to find half of them. xl=0.5*(x2-x1); @@ -60,7 +66,7 @@ void GaussJacobi (VectorView<> x, VectorView<> w, const double alf, const double int i,its,j; double alfbet,an,bn,r1,r2,r3; double a,b,c,p1,p2,p3,pp,temp,z,z1; - int n=x.Size(); + int n=x.size(); for (i=0;i x, VectorView<> w, const double alf, const double auto ComputeABfromC (const Vector<> & c) { - int s = c.Size(); + int s = c.size(); Matrix M(s, s); Vector tmp(s); for (int i = 0; i < s; i++) for (int j = 0; j < s; j++) M(i,j) = std::pow(c(j), i); - CalcInverse(M); + + calcInverse(M); + // M = LapackLU(M).inverse(); for (int i = 0; i < s; i++) tmp(i) = 1.0 / (i+1); Vector b = M * tmp; - cout << "b = " << b << endl; + std::cout << "b = " << b << std::endl; Matrix a(s,s); @@ -146,30 +154,30 @@ auto ComputeABfromC (const Vector<> & c) { for (int i = 0; i < s; i++) tmp(i) = std::pow(c(j),i+1) / (i+1); - a.Row(j) = M * tmp; + a.row(j) = M * tmp; } /* cout << "b = " << b << endl; cout << "a = " << a << endl; */ - return tuple { a, b }; + return std::tuple { a, b }; } void GaussRadau (VectorView<> x, VectorView<> w) { - GaussJacobi (x.Range(0, x.Size()-1), - w.Range(0, w.Size()-1), 1, 0); - for (int i = 0; i < x.Size()-1; i++) + GaussJacobi (x.range(0, x.size()-1), + w.range(0, w.size()-1), 1, 0); + for (int i = 0; i < x.size()-1; i++) { x(i) = 0.5*(x(i)+1); w(i) *= 0.5; } - x(x.Size()-1) = 1.0; + x(x.size()-1) = 1.0; double sum = 0; - for (int i = 0; i < x.Size()-1; i++) + for (int i = 0; i < x.size()-1; i++) sum += w(i); - w(x.Size()-1) = 1-sum; + w(x.size()-1) = 1-sum; } } From 8b6aea559fb327b55294e84090f70533c1e595b2 Mon Sep 17 00:00:00 2001 From: Farooq Mian Azan Date: Fri, 21 Nov 2025 17:16:11 +0000 Subject: [PATCH 04/20] Working Python module asc_ode + fixed nanoblas linking --- CMakeLists.txt | 30 +++++++++++++++++++++--------- src/bindings.cpp | 11 +++++++++++ 2 files changed, 32 insertions(+), 9 deletions(-) create mode 100644 src/bindings.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 6dc00d2b7..42148ed07 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,18 +1,30 @@ cmake_minimum_required(VERSION 3.20) -project(ASC_ode) - -set (CMAKE_CXX_STANDARD 20) +project(ASC_ode LANGUAGES CXX) +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) include_directories(src nanoblas/src) +add_subdirectory(nanoblas) + + +add_executable(test_ode demos/test_ode.cpp) +target_link_libraries(test_ode PUBLIC nanoblas) + + +add_executable(demo_autodiff demos/demo_autodiff.cpp) +target_link_libraries(demo_autodiff PUBLIC nanoblas) -add_subdirectory (src) -add_subdirectory (nanoblas) +# Python bindings +find_package(pybind11 REQUIRED CONFIG) +pybind11_add_module(asc_ode + src/bindings.cpp +) -add_executable (test_ode demos/test_ode.cpp) -target_link_libraries (test_ode PUBLIC nanoblas) -add_executable (demo_autodiff demos/demo_autodiff.cpp) -target_link_libraries (demo_autodiff PUBLIC nanoblas) +target_link_libraries(asc_ode PRIVATE nanoblas) +set_target_properties(asc_ode PROPERTIES + LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" +) \ No newline at end of file diff --git a/src/bindings.cpp b/src/bindings.cpp new file mode 100644 index 000000000..ce903dd04 --- /dev/null +++ b/src/bindings.cpp @@ -0,0 +1,11 @@ +#include + +namespace py = pybind11; + +PYBIND11_MODULE(asc_ode, m) { + m.doc() = "ASC ODE library – winter semester 2025/26"; + m.attr("__version__") = "0.1.0"; + + + m.def("hello", []() { return "Hello from ASC ODE!"; }); +} \ No newline at end of file From 827c1398f39c96fc283e82b371bb87883332ab0d Mon Sep 17 00:00:00 2001 From: Joachim Schoeberl Date: Sun, 23 Nov 2025 13:31:52 +0100 Subject: [PATCH 05/20] included massspring into Newmark branch --- CMakeLists.txt | 1 + mechsystem/CMakeLists.txt | 17 +++ mechsystem/Newmark.hpp | 108 +++++++++++++++++ mechsystem/bind_mass_spring.cpp | 120 +++++++++++++++++++ mechsystem/mass_spring.cpp | 33 +++++ mechsystem/mass_spring.hpp | 206 ++++++++++++++++++++++++++++++++ mechsystem/mass_spring.ipynb | 152 +++++++++++++++++++++++ mechsystem/test_mass_spring.py | 35 ++++++ 8 files changed, 672 insertions(+) create mode 100644 mechsystem/CMakeLists.txt create mode 100644 mechsystem/Newmark.hpp create mode 100644 mechsystem/bind_mass_spring.cpp create mode 100644 mechsystem/mass_spring.cpp create mode 100644 mechsystem/mass_spring.hpp create mode 100644 mechsystem/mass_spring.ipynb create mode 100644 mechsystem/test_mass_spring.py diff --git a/CMakeLists.txt b/CMakeLists.txt index 6dc00d2b7..3339711d6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,6 +9,7 @@ include_directories(src nanoblas/src) add_subdirectory (src) add_subdirectory (nanoblas) +add_subdirectory (mechsystem) add_executable (test_ode demos/test_ode.cpp) target_link_libraries (test_ode PUBLIC nanoblas) diff --git a/mechsystem/CMakeLists.txt b/mechsystem/CMakeLists.txt new file mode 100644 index 000000000..0c0ab842e --- /dev/null +++ b/mechsystem/CMakeLists.txt @@ -0,0 +1,17 @@ +add_executable (test_mass_spring mass_spring.cpp) +# target_link_libraries (test_mass_spring PUBLIC ngbla) + + + + + +find_package(Python 3.8 COMPONENTS Interpreter Development REQUIRED) + +execute_process( + COMMAND "${Python_EXECUTABLE}" -m pybind11 --cmakedir + OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE PYBIND11_DIR) +list(APPEND CMAKE_PREFIX_PATH "${PYBIND11_DIR}") +find_package(pybind11 CONFIG REQUIRED) + +pybind11_add_module(mass_spring bind_mass_spring.cpp) +# target_link_libraries (mass_spring PUBLIC ngbla) diff --git a/mechsystem/Newmark.hpp b/mechsystem/Newmark.hpp new file mode 100644 index 000000000..589b0bebd --- /dev/null +++ b/mechsystem/Newmark.hpp @@ -0,0 +1,108 @@ +#ifndef NEWMARK_HPP +#define NEWMARK_HPP + +#include + + + + + + // Newmark and generalized alpha: + // https://miaodi.github.io/finite%20element%20method/newmark-generalized/ + + // Newmark method for mass*d^2x/dt^2 = rhs + void SolveODE_Newmark(double tend, int steps, + VectorView x, VectorView dx, + std::shared_ptr rhs, + std::shared_ptr mass, + std::function)> callback = nullptr) + { + double dt = tend/steps; + double gamma = 0.5; + double beta = 0.25; + + Vector<> a(x.size()); + Vector<> v(x.size()); + + auto xold = std::make_shared(x); + auto vold = std::make_shared(dx); + auto aold = std::make_shared(x); + rhs->evaluate (xold->get(), aold->get()); + + auto anew = std::make_shared(a.size()); + auto vnew = vold + dt*((1-gamma)*aold+gamma*anew); + auto xnew = xold + dt*vold + dt*dt/2 * ((1-2*beta)*aold+2*beta*anew); + + auto equ = Compose(mass, anew) - Compose(rhs, xnew); + + double t = 0; + for (int i = 0; i < steps; i++) + { + NewtonSolver (equ, a); + xnew -> evaluate (a, x); + vnew -> evaluate (a, v); + + xold->set(x); + vold->set(v); + aold->set(a); + t += dt; + if (callback) callback(t, x); + } + dx = v; + } + + + + + // Generalized alpha method for M d^2x/dt^2 = rhs + void SolveODE_Alpha (double tend, int steps, double rhoinf, + VectorView x, VectorView dx, VectorView ddx, + std::shared_ptr rhs, + std::shared_ptr mass, + std::function)> callback = nullptr) + { + double dt = tend/steps; + double alpham = (2*rhoinf-1)/(rhoinf+1); + double alphaf = rhoinf/(rhoinf+1); + double gamma = 0.5-alpham+alphaf; + double beta = 0.25 * (1-alpham+alphaf)*(1-alpham+alphaf); + + Vector<> a(x.size()); + Vector<> v(x.size()); + + auto xold = std::make_shared(x); + auto vold = std::make_shared(dx); + auto aold = std::make_shared(ddx); + // rhs->evaluate (xold->get(), aold->get()); // solve with M ??? + + auto anew = std::make_shared(a.size()); + auto vnew = vold + dt*((1-gamma)*aold+gamma*anew); + auto xnew = xold + dt*vold + dt*dt/2 * ((1-2*beta)*aold+2*beta*anew); + + // auto equ = Compose(mass, (1-alpham)*anew+alpham*aold) - Compose(rhs, (1-alphaf)*xnew+alphaf*xold); + auto equ = Compose(mass, (1-alpham)*anew+alpham*aold) - (1-alphaf)*Compose(rhs,xnew) - alphaf*Compose(rhs, xold); + + double t = 0; + a = ddx; + + for (int i = 0; i < steps; i++) + { + NewtonSolver (equ, a); + xnew -> evaluate (a, x); + vnew -> evaluate (a, v); + + xold->set(x); + vold->set(v); + aold->set(a); + t += dt; + if (callback) callback(t, x); + } + dx = v; + ddx = a; + } + + + + + +#endif // NEWMARK_HPP \ No newline at end of file diff --git a/mechsystem/bind_mass_spring.cpp b/mechsystem/bind_mass_spring.cpp new file mode 100644 index 000000000..427b2fb65 --- /dev/null +++ b/mechsystem/bind_mass_spring.cpp @@ -0,0 +1,120 @@ +#include +#include +#include +#include + +#include "mass_spring.hpp" +#include "Newmark.hpp" + +namespace py = pybind11; + +PYBIND11_MAKE_OPAQUE(std::vector>); +PYBIND11_MAKE_OPAQUE(std::vector>); +PYBIND11_MAKE_OPAQUE(std::vector); + +PYBIND11_MODULE(mass_spring, m) { + m.doc() = "mass-spring-system simulator"; + + py::class_> (m, "Mass2d") + ; + + m.def("Mass", [](double m, std::array p) + { + return Mass<2>{m, { p[0], p[1] }}; + }); + + + + + + py::class_> (m, "Mass3d") + .def_property("mass", + [](Mass<3> & m) { return m.mass; }, + [](Mass<3> & m, double mass) { m.mass = mass; }) + .def_property_readonly("pos", + [](Mass<3> & m) { return m.pos; }); + ; + + + m.def("Mass", [](double m, std::array p) + { + return Mass<3>{m, { p[0], p[1], p[2] }}; + }); + + + py::class_> (m, "Fix3d") + .def_property_readonly("pos", + [](Fix<3> & f) { return f.pos; }); + + + m.def("Fix", [](std::array p) + { + return Fix<3>{ { p[0], p[1], p[2] } }; + }); + + py::class_ (m, "Connector"); + + py::class_ (m, "Spring") + .def(py::init>()) + .def_property_readonly("connections", + [](Spring & s) { return s.connections; }) + ; + + + py::bind_vector>>(m, "Masses3d"); + py::bind_vector>>(m, "Fixes3d"); + py::bind_vector>(m, "Springs"); + + + py::class_> (m, "MassSpringSystem2d") + .def(py::init<>()) + .def("Add", [](MassSpringSystem<2> & mss, Mass<2> m) { return mss.AddMass(m); }) + ; + + + py::class_> (m, "MassSpringSystem3d") + .def(py::init<>()) + .def("__str__", [](MassSpringSystem<3> & mss) { + std::stringstream sstr; + sstr << mss; + return sstr.str(); + }) + .def_property("gravity", [](MassSpringSystem<3> & mss) { return mss.Gravity(); }, + [](MassSpringSystem<3> & mss, std::array g) { mss.SetGravity(Vec<3>{g[0],g[1],g[2]}); }) + .def("Add", [](MassSpringSystem<3> & mss, Mass<3> m) { return mss.AddMass(m); }) + .def("Add", [](MassSpringSystem<3> & mss, Fix<3> f) { return mss.AddFix(f); }) + .def("Add", [](MassSpringSystem<3> & mss, Spring s) { return mss.AddSpring(s); }) + .def_property_readonly("masses", [](MassSpringSystem<3> & mss) -> auto& { return mss.Masses(); }) + .def_property_readonly("fixes", [](MassSpringSystem<3> & mss) -> auto& { return mss.Fixes(); }) + .def_property_readonly("springs", [](MassSpringSystem<3> & mss) -> auto& { return mss.Springs(); }) + .def("__getitem__", [](MassSpringSystem<3> mss, Connector & c) { + if (c.type==Connector::FIX) return py::cast(mss.Fixes()[c.nr]); + else return py::cast(mss.Masses()[c.nr]); + }) + + .def("GetState", [] (MassSpringSystem<3> & mss) { + Vector<> x(3*mss.Masses().size()); + Vector<> dx(3*mss.Masses().size()); + Vector<> ddx(3*mss.Masses().size()); + mss.GetState (x, dx, ddx); + return x; + }) + ; + + + m.def("Simulate", [](MassSpringSystem<3> & mss, double tend, size_t steps) { + Vector<> x(3*mss.Masses().size()); + Vector<> dx(3*mss.Masses().size()); + Vector<> ddx(3*mss.Masses().size()); + mss.GetState (x, dx, ddx); + + auto mss_func = std::make_shared> (mss); + auto mass = std::make_shared (x.size()); + + SolveODE_Alpha(tend, steps, 0.8, x, dx, ddx, mss_func, mass); + + mss.SetState (x, dx, ddx); + }); + + +} diff --git a/mechsystem/mass_spring.cpp b/mechsystem/mass_spring.cpp new file mode 100644 index 000000000..a8a3d9dbf --- /dev/null +++ b/mechsystem/mass_spring.cpp @@ -0,0 +1,33 @@ +#include "mass_spring.hpp" +#include "Newmark.hpp" + +int main() +{ + MassSpringSystem<2> mss; + mss.SetGravity( {0,-9.81} ); + auto fA = mss.AddFix( { { 0.0, 0.0 } } ); + auto mA = mss.AddMass( { 1, { 1.0, 0.0 } } ); + mss.AddSpring ( { 1, 10, { fA, mA } } ); + + auto mB = mss.AddMass( { 1, { 2.0, 0.0 } } ); + mss.AddSpring ( { 1, 20, { mA, mB } } ); + + std::cout << "mss: " << std::endl << mss << std::endl; + + + double tend = 10; + double steps = 1000; + + Vector<> x(2*mss.Masses().size()); + Vector<> dx(2*mss.Masses().size()); + Vector<> ddx(2*mss.Masses().size()); + + auto mss_func = std::make_shared> (mss); + auto mass = std::make_shared (x.size()); + + mss.GetState (x, dx, ddx); + + SolveODE_Newmark(tend, steps, x, dx, mss_func, mass, + [](double t, VectorView x) { std::cout << "t = " << t + << ", x = " << Vec<4>(x) << std::endl; }); +} diff --git a/mechsystem/mass_spring.hpp b/mechsystem/mass_spring.hpp new file mode 100644 index 000000000..93bd11557 --- /dev/null +++ b/mechsystem/mass_spring.hpp @@ -0,0 +1,206 @@ +#ifndef MASS_SPRING_HPP +#define MASS_SPRING_HPP + + + +#include +#include + +using namespace ASC_ode; + +#include +using namespace nanoblas; + + + +template +class Mass +{ +public: + double mass; + Vec pos; + Vec vel = 0.0; + Vec acc = 0.0; +}; + + +template +class Fix +{ +public: + Vec pos; +}; + + +class Connector +{ +public: + enum CONTYPE { FIX=1, MASS=2 }; + CONTYPE type; + size_t nr; +}; + +std::ostream & operator<< (std::ostream & ost, const Connector & con) +{ + ost << "type = " << int(con.type) << ", nr = " << con.nr; + return ost; +} + +class Spring +{ +public: + double length; + double stiffness; + std::array connections; +}; + +template +class MassSpringSystem +{ + std::vector> fixes; + std::vector> masses; + std::vector springs; + Vec gravity=0.0; +public: + void SetGravity (Vec _gravity) { gravity = _gravity; } + Vec Gravity() const { return gravity; } + + Connector AddFix (Fix p) + { + fixes.push_back(p); + return { Connector::FIX, fixes.size()-1 }; + } + + Connector AddMass (Mass m) + { + masses.push_back (m); + return { Connector::MASS, masses.size()-1 }; + } + + size_t AddSpring (Spring s) // double length, double stiffness, Connector c1, Connector c2) + { + springs.push_back (s); // Spring{length, stiffness, { c1, c2 } }); + return springs.size()-1; + } + + + + + auto & Fixes() { return fixes; } + auto & Masses() { return masses; } + auto & Springs() { return springs; } + + void GetState (VectorView<> values, VectorView<> dvalues, VectorView<> ddvalues) + { + auto valmat = values.asMatrix(Masses().size(), D); + auto dvalmat = dvalues.asMatrix(Masses().size(), D); + auto ddvalmat = ddvalues.asMatrix(Masses().size(), D); + + for (size_t i = 0; i < Masses().size(); i++) + { + valmat.row(i) = Masses()[i].pos; + dvalmat.row(i) = Masses()[i].vel; + ddvalmat.row(i) = Masses()[i].acc; + } + } + + void SetState (VectorView<> values, VectorView<> dvalues, VectorView<> ddvalues) + { + auto valmat = values.asMatrix(Masses().size(), D); + auto dvalmat = dvalues.asMatrix(Masses().size(), D); + auto ddvalmat = ddvalues.asMatrix(Masses().size(), D); + + for (size_t i = 0; i < Masses().size(); i++) + { + Masses()[i].pos = valmat.row(i); + Masses()[i].vel = dvalmat.row(i); + Masses()[i].acc = ddvalmat.row(i); + } + } +}; + +template +std::ostream & operator<< (std::ostream & ost, MassSpringSystem & mss) +{ + ost << "fixes:" << std::endl; + for (auto f : mss.Fixes()) + ost << f.pos << std::endl; + + ost << "masses: " << std::endl; + for (auto m : mss.Masses()) + ost << "m = " << m.mass << ", pos = " << m.pos << std::endl; + + ost << "springs: " << std::endl; + for (auto sp : mss.Springs()) + ost << "length = " << sp.length << ", stiffness = " << sp.stiffness + << ", C1 = " << sp.connections[0] << ", C2 = " << sp.connections[1] << std::endl; + return ost; +} + + +template +class MSS_Function : public NonlinearFunction +{ + MassSpringSystem & mss; +public: + MSS_Function (MassSpringSystem & _mss) + : mss(_mss) { } + + virtual size_t dimX() const override { return D*mss.Masses().size(); } + virtual size_t dimF() const override{ return D*mss.Masses().size(); } + + virtual void evaluate (VectorView x, VectorView f) const override + { + f = 0.0; + + auto xmat = x.asMatrix(mss.Masses().size(), D); + auto fmat = f.asMatrix(mss.Masses().size(), D); + + for (size_t i = 0; i < mss.Masses().size(); i++) + fmat.row(i) = mss.Masses()[i].mass*mss.Gravity(); + + for (auto spring : mss.Springs()) + { + auto [c1,c2] = spring.connections; + Vec p1, p2; + if (c1.type == Connector::FIX) + p1 = mss.Fixes()[c1.nr].pos; + else + p1 = xmat.row(c1.nr); + if (c2.type == Connector::FIX) + p2 = mss.Fixes()[c2.nr].pos; + else + p2 = xmat.row(c2.nr); + + double force = spring.stiffness * (norm(p1-p2)-spring.length); + Vec dir12 = 1.0/norm(p1-p2) * (p2-p1); + if (c1.type == Connector::MASS) + fmat.row(c1.nr) += force*dir12; + if (c2.type == Connector::MASS) + fmat.row(c2.nr) -= force*dir12; + } + + for (size_t i = 0; i < mss.Masses().size(); i++) + fmat.row(i) *= 1.0/mss.Masses()[i].mass; + } + + virtual void evaluateDeriv (VectorView x, MatrixView df) const override + { + // TODO: exact differentiation + double eps = 1e-8; + Vector<> xl(dimX()), xr(dimX()), fl(dimF()), fr(dimF()); + for (size_t i = 0; i < dimX(); i++) + { + xl = x; + xl(i) -= eps; + xr = x; + xr(i) += eps; + evaluate (xl, fl); + evaluate (xr, fr); + df.col(i) = 1/(2*eps) * (fr-fl); + } + } + +}; + +#endif diff --git a/mechsystem/mass_spring.ipynb b/mechsystem/mass_spring.ipynb new file mode 100644 index 000000000..8c8288831 --- /dev/null +++ b/mechsystem/mass_spring.ipynb @@ -0,0 +1,152 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "8c22d9bc-c86b-434f-b0f3-0e01290fd183", + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "sys.path.append('/Users/joachim/texjs/lva/ws2324/ScientificComputing/ASC-ODE/build/mass_spring')\n", + "\n", + "from mass_spring import *\n", + "import ngsolve.bla\n", + "\n", + "from pythreejs import *" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "24f72163-bcb0-45bf-8407-66384ad3fbc4", + "metadata": {}, + "outputs": [], + "source": [ + "mss = MassSpringSystem3d()\n", + "mss.gravity = (0,0,-9.81)\n", + "\n", + "mA = mss.Add (Mass(1, (1,0,0)))\n", + "mB = mss.Add (Mass(2, (2,0,0)))\n", + "f1 = mss.Add (Fix( (0,0,0)) )\n", + "mss.Add (Spring(1, 200000, (f1, mA)))\n", + "mss.Add (Spring(1, 100000, (mA, mB)))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c5c8bdfc-9022-4def-bf04-4511756651ea", + "metadata": {}, + "outputs": [], + "source": [ + "masses = []\n", + "for m in mss.masses:\n", + " masses.append(\n", + " Mesh(SphereBufferGeometry(0.2, 16, 16),\n", + " MeshStandardMaterial(color='red'),\n", + " position=(m.pos[0], m.pos[1], m.pos[2])))\n", + "\n", + "fixes = []\n", + "for f in mss.fixes:\n", + " fixes.append(\n", + " Mesh(SphereBufferGeometry(0.2, 32, 16),\n", + " MeshStandardMaterial(color='blue'),\n", + " position=(f.pos[0], f.pos[1], f.pos[2])))\n", + "\n", + "springpos = []\n", + "for s in mss.springs:\n", + " pA = mss[s.connections[0]].pos\n", + " pB = mss[s.connections[1]].pos\n", + " springpos.append ([ [pA[0], pA[1], pA[2]], [pB[0], pB[1], pB[2]] ])\n", + "\n", + "springgeo = LineSegmentsGeometry(positions=springpos)\n", + "m2 = LineMaterial(linewidth=3, color='cyan')\n", + "springs = LineSegments2(springgeo, m2) \n", + "\n", + "axes = AxesHelper(1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c13e6200-9cab-4df1-8240-f03414ff9b20", + "metadata": {}, + "outputs": [], + "source": [ + "view_width = 600\n", + "view_height = 400\n", + "\n", + "camera = PerspectiveCamera( position=[10, 6, 10], aspect=view_width/view_height)\n", + "key_light = DirectionalLight(position=[0, 10, 10])\n", + "ambient_light = AmbientLight()\n", + "\n", + "scene = Scene(children=[*masses, *fixes, springs, axes, camera, key_light, ambient_light])\n", + "controller = OrbitControls(controlling=camera)\n", + "renderer = Renderer(camera=camera, scene=scene, controls=[controller],\n", + " width=view_width, height=view_height)\n", + "\n", + "renderer" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1f6bdd5d-d385-4431-a3e7-923ebfb70949", + "metadata": {}, + "outputs": [], + "source": [ + "from time import sleep\n", + "for i in range(10000):\n", + " Simulate (mss, 0.02, 100)\n", + " for m,mvis in zip(mss.masses, masses):\n", + " mvis.position = (m.pos[0], m.pos[1], m.pos[2])\n", + "\n", + " springpos = []\n", + " for s in mss.springs:\n", + " pA = mss[s.connections[0]].pos\n", + " pB = mss[s.connections[1]].pos\n", + " springpos.append ([ [pA[0], pA[1], pA[2]], [pB[0], pB[1], pB[2]] ])\n", + " springs.geometry = LineSegmentsGeometry(positions=springpos)\n", + " sleep(0.01)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "35a71576-da30-469c-b391-698dde7681bf", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fd64d66b-f881-4d3a-95d5-302d91f695f3", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/mechsystem/test_mass_spring.py b/mechsystem/test_mass_spring.py new file mode 100644 index 000000000..251913214 --- /dev/null +++ b/mechsystem/test_mass_spring.py @@ -0,0 +1,35 @@ +import sys +sys.path.append('/Users/joachim/texjs/lva/IntroSC/ASC-ODE/build/mechsystem') + +from mass_spring import * +import ngsolve.bla + + +mss = MassSpringSystem3d() +mss.gravity = (0,0,-9.81) + +mA = mss.Add (Mass(1, (1,0,0))) +mB = mss.Add (Mass(2, (2,0,0))) +f1 = mss.Add (Fix( (0,0,0)) ) +mss.Add (Spring(1, 10, (f1, mA))) +mss.Add (Spring(1, 20, (mA, mB))) + + +print ("state = ", mss.GetState()) + +Simulate (mss, 0.1, 10) + +print ("state = ", mss.GetState()) + + +Simulate (mss, 0.1, 10) + +print ("state = ", mss.GetState()) + +for m in mss.masses: + print (m.mass, m.pos) + +mss.masses[0].mass = 5 + +for m in mss.masses: + print (m.mass, m.pos) From 246905e5482330c11bd7233ffefe5bcdb95b8042 Mon Sep 17 00:00:00 2001 From: Joachim Schoeberl Date: Sun, 23 Nov 2025 13:58:02 +0100 Subject: [PATCH 06/20] update py-binding --- mechsystem/bind_mass_spring.cpp | 48 +++++++------- mechsystem/mass_spring.cpp | 22 +++---- mechsystem/mass_spring.hpp | 108 ++++++++++++++++---------------- mechsystem/test_mass_spring.py | 16 ++--- 4 files changed, 97 insertions(+), 97 deletions(-) diff --git a/mechsystem/bind_mass_spring.cpp b/mechsystem/bind_mass_spring.cpp index 427b2fb65..72e8a43fb 100644 --- a/mechsystem/bind_mass_spring.cpp +++ b/mechsystem/bind_mass_spring.cpp @@ -32,7 +32,7 @@ PYBIND11_MODULE(mass_spring, m) { [](Mass<3> & m) { return m.mass; }, [](Mass<3> & m, double mass) { m.mass = mass; }) .def_property_readonly("pos", - [](Mass<3> & m) { return m.pos; }); + [](Mass<3> & m) { return m.pos.data(); }); ; @@ -68,7 +68,7 @@ PYBIND11_MODULE(mass_spring, m) { py::class_> (m, "MassSpringSystem2d") .def(py::init<>()) - .def("Add", [](MassSpringSystem<2> & mss, Mass<2> m) { return mss.AddMass(m); }) + .def("add", [](MassSpringSystem<2> & mss, Mass<2> m) { return mss.addMass(m); }) ; @@ -79,41 +79,41 @@ PYBIND11_MODULE(mass_spring, m) { sstr << mss; return sstr.str(); }) - .def_property("gravity", [](MassSpringSystem<3> & mss) { return mss.Gravity(); }, - [](MassSpringSystem<3> & mss, std::array g) { mss.SetGravity(Vec<3>{g[0],g[1],g[2]}); }) - .def("Add", [](MassSpringSystem<3> & mss, Mass<3> m) { return mss.AddMass(m); }) - .def("Add", [](MassSpringSystem<3> & mss, Fix<3> f) { return mss.AddFix(f); }) - .def("Add", [](MassSpringSystem<3> & mss, Spring s) { return mss.AddSpring(s); }) - .def_property_readonly("masses", [](MassSpringSystem<3> & mss) -> auto& { return mss.Masses(); }) - .def_property_readonly("fixes", [](MassSpringSystem<3> & mss) -> auto& { return mss.Fixes(); }) - .def_property_readonly("springs", [](MassSpringSystem<3> & mss) -> auto& { return mss.Springs(); }) + .def_property("gravity", [](MassSpringSystem<3> & mss) { return mss.getGravity(); }, + [](MassSpringSystem<3> & mss, std::array g) { mss.setGravity(Vec<3>{g[0],g[1],g[2]}); }) + .def("add", [](MassSpringSystem<3> & mss, Mass<3> m) { return mss.addMass(m); }) + .def("add", [](MassSpringSystem<3> & mss, Fix<3> f) { return mss.addFix(f); }) + .def("add", [](MassSpringSystem<3> & mss, Spring s) { return mss.addSpring(s); }) + .def_property_readonly("masses", [](MassSpringSystem<3> & mss) -> auto& { return mss.masses(); }) + .def_property_readonly("fixes", [](MassSpringSystem<3> & mss) -> auto& { return mss.fixes(); }) + .def_property_readonly("springs", [](MassSpringSystem<3> & mss) -> auto& { return mss.springs(); }) .def("__getitem__", [](MassSpringSystem<3> mss, Connector & c) { - if (c.type==Connector::FIX) return py::cast(mss.Fixes()[c.nr]); - else return py::cast(mss.Masses()[c.nr]); + if (c.type==Connector::FIX) return py::cast(mss.fixes()[c.nr]); + else return py::cast(mss.masses()[c.nr]); }) - .def("GetState", [] (MassSpringSystem<3> & mss) { - Vector<> x(3*mss.Masses().size()); - Vector<> dx(3*mss.Masses().size()); - Vector<> ddx(3*mss.Masses().size()); - mss.GetState (x, dx, ddx); - return x; + .def("getState", [] (MassSpringSystem<3> & mss) { + Vector<> x(3*mss.masses().size()); + Vector<> dx(3*mss.masses().size()); + Vector<> ddx(3*mss.masses().size()); + mss.getState (x, dx, ddx); + return std::vector(x); }) ; m.def("Simulate", [](MassSpringSystem<3> & mss, double tend, size_t steps) { - Vector<> x(3*mss.Masses().size()); - Vector<> dx(3*mss.Masses().size()); - Vector<> ddx(3*mss.Masses().size()); - mss.GetState (x, dx, ddx); - + Vector<> x(3*mss.masses().size()); + Vector<> dx(3*mss.masses().size()); + Vector<> ddx(3*mss.masses().size()); + mss.getState (x, dx, ddx); + auto mss_func = std::make_shared> (mss); auto mass = std::make_shared (x.size()); SolveODE_Alpha(tend, steps, 0.8, x, dx, ddx, mss_func, mass); - mss.SetState (x, dx, ddx); + mss.setState (x, dx, ddx); }); diff --git a/mechsystem/mass_spring.cpp b/mechsystem/mass_spring.cpp index a8a3d9dbf..c4c80c3f8 100644 --- a/mechsystem/mass_spring.cpp +++ b/mechsystem/mass_spring.cpp @@ -4,28 +4,28 @@ int main() { MassSpringSystem<2> mss; - mss.SetGravity( {0,-9.81} ); - auto fA = mss.AddFix( { { 0.0, 0.0 } } ); - auto mA = mss.AddMass( { 1, { 1.0, 0.0 } } ); - mss.AddSpring ( { 1, 10, { fA, mA } } ); + mss.setGravity( {0,-9.81} ); + auto fA = mss.addFix( { { 0.0, 0.0 } } ); + auto mA = mss.addMass( { 1, { 1.0, 0.0 } } ); + mss.addSpring ( { 1, 10, { fA, mA } } ); - auto mB = mss.AddMass( { 1, { 2.0, 0.0 } } ); - mss.AddSpring ( { 1, 20, { mA, mB } } ); + auto mB = mss.addMass( { 1, { 2.0, 0.0 } } ); + mss.addSpring ( { 1, 20, { mA, mB } } ); std::cout << "mss: " << std::endl << mss << std::endl; double tend = 10; double steps = 1000; - - Vector<> x(2*mss.Masses().size()); - Vector<> dx(2*mss.Masses().size()); - Vector<> ddx(2*mss.Masses().size()); + + Vector<> x(2*mss.masses().size()); + Vector<> dx(2*mss.masses().size()); + Vector<> ddx(2*mss.masses().size()); auto mss_func = std::make_shared> (mss); auto mass = std::make_shared (x.size()); - mss.GetState (x, dx, ddx); + mss.getState (x, dx, ddx); SolveODE_Newmark(tend, steps, x, dx, mss_func, mass, [](double t, VectorView x) { std::cout << "t = " << t diff --git a/mechsystem/mass_spring.hpp b/mechsystem/mass_spring.hpp index 93bd11557..7c2d31ec1 100644 --- a/mechsystem/mass_spring.hpp +++ b/mechsystem/mass_spring.hpp @@ -57,64 +57,64 @@ class Spring template class MassSpringSystem { - std::vector> fixes; - std::vector> masses; - std::vector springs; - Vec gravity=0.0; + std::vector> m_fixes; + std::vector> m_masses; + std::vector m_springs; + Vec m_gravity=0.0; public: - void SetGravity (Vec _gravity) { gravity = _gravity; } - Vec Gravity() const { return gravity; } - - Connector AddFix (Fix p) + void setGravity (Vec gravity) { m_gravity = gravity; } + Vec getGravity() const { return m_gravity; } + + Connector addFix (Fix p) { - fixes.push_back(p); - return { Connector::FIX, fixes.size()-1 }; + m_fixes.push_back(p); + return { Connector::FIX, m_fixes.size()-1 }; } - Connector AddMass (Mass m) + Connector addMass (Mass m) { - masses.push_back (m); - return { Connector::MASS, masses.size()-1 }; + m_masses.push_back (m); + return { Connector::MASS, m_masses.size()-1 }; } - size_t AddSpring (Spring s) // double length, double stiffness, Connector c1, Connector c2) + size_t addSpring (Spring s) // double length, double stiffness, Connector c1, Connector c2) { - springs.push_back (s); // Spring{length, stiffness, { c1, c2 } }); - return springs.size()-1; + m_springs.push_back (s); // Spring{length, stiffness, { c1, c2 } }); + return m_springs.size()-1; } - - auto & Fixes() { return fixes; } - auto & Masses() { return masses; } - auto & Springs() { return springs; } - void GetState (VectorView<> values, VectorView<> dvalues, VectorView<> ddvalues) + auto & fixes() { return m_fixes; } + auto & masses() { return m_masses; } + auto & springs() { return m_springs; } + + void getState (VectorView<> values, VectorView<> dvalues, VectorView<> ddvalues) { - auto valmat = values.asMatrix(Masses().size(), D); - auto dvalmat = dvalues.asMatrix(Masses().size(), D); - auto ddvalmat = ddvalues.asMatrix(Masses().size(), D); + auto valmat = values.asMatrix(m_masses.size(), D); + auto dvalmat = dvalues.asMatrix(m_masses.size(), D); + auto ddvalmat = ddvalues.asMatrix(m_masses.size(), D); - for (size_t i = 0; i < Masses().size(); i++) + for (size_t i = 0; i < m_masses.size(); i++) { - valmat.row(i) = Masses()[i].pos; - dvalmat.row(i) = Masses()[i].vel; - ddvalmat.row(i) = Masses()[i].acc; + valmat.row(i) = m_masses[i].pos; + dvalmat.row(i) = m_masses[i].vel; + ddvalmat.row(i) = m_masses[i].acc; } } - - void SetState (VectorView<> values, VectorView<> dvalues, VectorView<> ddvalues) + + void setState (VectorView<> values, VectorView<> dvalues, VectorView<> ddvalues) { - auto valmat = values.asMatrix(Masses().size(), D); - auto dvalmat = dvalues.asMatrix(Masses().size(), D); - auto ddvalmat = ddvalues.asMatrix(Masses().size(), D); + auto valmat = values.asMatrix(m_masses.size(), D); + auto dvalmat = dvalues.asMatrix(m_masses.size(), D); + auto ddvalmat = ddvalues.asMatrix(m_masses.size(), D); - for (size_t i = 0; i < Masses().size(); i++) + for (size_t i = 0; i < m_masses.size(); i++) { - Masses()[i].pos = valmat.row(i); - Masses()[i].vel = dvalmat.row(i); - Masses()[i].acc = ddvalmat.row(i); + m_masses[i].pos = valmat.row(i); + m_masses[i].vel = dvalmat.row(i); + m_masses[i].acc = ddvalmat.row(i); } } }; @@ -123,15 +123,15 @@ template std::ostream & operator<< (std::ostream & ost, MassSpringSystem & mss) { ost << "fixes:" << std::endl; - for (auto f : mss.Fixes()) + for (auto f : mss.fixes()) ost << f.pos << std::endl; ost << "masses: " << std::endl; - for (auto m : mss.Masses()) + for (auto m : mss.masses()) ost << "m = " << m.mass << ", pos = " << m.pos << std::endl; ost << "springs: " << std::endl; - for (auto sp : mss.Springs()) + for (auto sp : mss.springs()) ost << "length = " << sp.length << ", stiffness = " << sp.stiffness << ", C1 = " << sp.connections[0] << ", C2 = " << sp.connections[1] << std::endl; return ost; @@ -146,29 +146,29 @@ class MSS_Function : public NonlinearFunction MSS_Function (MassSpringSystem & _mss) : mss(_mss) { } - virtual size_t dimX() const override { return D*mss.Masses().size(); } - virtual size_t dimF() const override{ return D*mss.Masses().size(); } + virtual size_t dimX() const override { return D*mss.masses().size(); } + virtual size_t dimF() const override{ return D*mss.masses().size(); } virtual void evaluate (VectorView x, VectorView f) const override { f = 0.0; - - auto xmat = x.asMatrix(mss.Masses().size(), D); - auto fmat = f.asMatrix(mss.Masses().size(), D); - - for (size_t i = 0; i < mss.Masses().size(); i++) - fmat.row(i) = mss.Masses()[i].mass*mss.Gravity(); - - for (auto spring : mss.Springs()) + + auto xmat = x.asMatrix(mss.masses().size(), D); + auto fmat = f.asMatrix(mss.masses().size(), D); + + for (size_t i = 0; i < mss.masses().size(); i++) + fmat.row(i) = mss.masses()[i].mass*mss.getGravity(); + + for (auto spring : mss.springs()) { auto [c1,c2] = spring.connections; Vec p1, p2; if (c1.type == Connector::FIX) - p1 = mss.Fixes()[c1.nr].pos; + p1 = mss.fixes()[c1.nr].pos; else p1 = xmat.row(c1.nr); if (c2.type == Connector::FIX) - p2 = mss.Fixes()[c2.nr].pos; + p2 = mss.fixes()[c2.nr].pos; else p2 = xmat.row(c2.nr); @@ -180,8 +180,8 @@ class MSS_Function : public NonlinearFunction fmat.row(c2.nr) -= force*dir12; } - for (size_t i = 0; i < mss.Masses().size(); i++) - fmat.row(i) *= 1.0/mss.Masses()[i].mass; + for (size_t i = 0; i < mss.masses().size(); i++) + fmat.row(i) *= 1.0/mss.masses()[i].mass; } virtual void evaluateDeriv (VectorView x, MatrixView df) const override diff --git a/mechsystem/test_mass_spring.py b/mechsystem/test_mass_spring.py index 251913214..d38e8b4b8 100644 --- a/mechsystem/test_mass_spring.py +++ b/mechsystem/test_mass_spring.py @@ -8,23 +8,23 @@ mss = MassSpringSystem3d() mss.gravity = (0,0,-9.81) -mA = mss.Add (Mass(1, (1,0,0))) -mB = mss.Add (Mass(2, (2,0,0))) -f1 = mss.Add (Fix( (0,0,0)) ) -mss.Add (Spring(1, 10, (f1, mA))) -mss.Add (Spring(1, 20, (mA, mB))) +mA = mss.add (Mass(1, (1,0,0))) +mB = mss.add (Mass(2, (2,0,0))) +f1 = mss.add (Fix( (0,0,0)) ) +mss.add (Spring(1, 10, (f1, mA))) +mss.add (Spring(1, 20, (mA, mB))) -print ("state = ", mss.GetState()) +print ("state = ", mss.getState()) Simulate (mss, 0.1, 10) -print ("state = ", mss.GetState()) +print ("state = ", mss.getState()) Simulate (mss, 0.1, 10) -print ("state = ", mss.GetState()) +print ("state = ", mss.getState()) for m in mss.masses: print (m.mass, m.pos) From 4da68b3d2727189577f2eae396b1b2639d443f26 Mon Sep 17 00:00:00 2001 From: Joachim Schoeberl Date: Sun, 23 Nov 2025 14:30:40 +0100 Subject: [PATCH 07/20] cleaning up py-bindings --- mechsystem/bind_mass_spring.cpp | 53 ++++++++++++++--------- mechsystem/mass_spring.hpp | 16 +++---- mechsystem/mass_spring.ipynb | 74 ++++++++++++++++++++++----------- mechsystem/test_mass_spring.py | 4 +- 4 files changed, 90 insertions(+), 57 deletions(-) diff --git a/mechsystem/bind_mass_spring.cpp b/mechsystem/bind_mass_spring.cpp index 72e8a43fb..049f03141 100644 --- a/mechsystem/bind_mass_spring.cpp +++ b/mechsystem/bind_mass_spring.cpp @@ -16,6 +16,12 @@ PYBIND11_MODULE(mass_spring, m) { m.doc() = "mass-spring-system simulator"; py::class_> (m, "Mass2d") + .def_property("mass", + [](Mass<2> & m) { return m.mass; }, + [](Mass<2> & m, double mass) { m.mass = mass; }) + .def_property_readonly("pos", + [](Mass<2> & m) { return m.pos.data(); }); + ; m.def("Mass", [](double m, std::array p) @@ -23,9 +29,6 @@ PYBIND11_MODULE(mass_spring, m) { return Mass<2>{m, { p[0], p[1] }}; }); - - - py::class_> (m, "Mass3d") .def_property("mass", @@ -35,18 +38,28 @@ PYBIND11_MODULE(mass_spring, m) { [](Mass<3> & m) { return m.pos.data(); }); ; - m.def("Mass", [](double m, std::array p) { return Mass<3>{m, { p[0], p[1], p[2] }}; }); + + + py::class_> (m, "Fix2d") + .def_property_readonly("pos", + [](Fix<2> & f) { return f.pos.data(); }); + + m.def("Fix", [](std::array p) + { + return Fix<2>{ { p[0], p[1] } }; + }); + + py::class_> (m, "Fix3d") .def_property_readonly("pos", - [](Fix<3> & f) { return f.pos; }); + [](Fix<3> & f) { return f.pos.data(); }); - m.def("Fix", [](std::array p) { return Fix<3>{ { p[0], p[1], p[2] } }; @@ -56,8 +69,8 @@ PYBIND11_MODULE(mass_spring, m) { py::class_ (m, "Spring") .def(py::init>()) - .def_property_readonly("connections", - [](Spring & s) { return s.connections; }) + .def_property_readonly("connectors", + [](Spring & s) { return s.connectors; }) ; @@ -99,22 +112,22 @@ PYBIND11_MODULE(mass_spring, m) { mss.getState (x, dx, ddx); return std::vector(x); }) - ; - - m.def("Simulate", [](MassSpringSystem<3> & mss, double tend, size_t steps) { - Vector<> x(3*mss.masses().size()); - Vector<> dx(3*mss.masses().size()); - Vector<> ddx(3*mss.masses().size()); - mss.getState (x, dx, ddx); + .def("simulate", [](MassSpringSystem<3> & mss, double tend, size_t steps) { + Vector<> x(3*mss.masses().size()); + Vector<> dx(3*mss.masses().size()); + Vector<> ddx(3*mss.masses().size()); + mss.getState (x, dx, ddx); - auto mss_func = std::make_shared> (mss); - auto mass = std::make_shared (x.size()); + auto mss_func = std::make_shared> (mss); + auto mass = std::make_shared (x.size()); - SolveODE_Alpha(tend, steps, 0.8, x, dx, ddx, mss_func, mass); + SolveODE_Alpha(tend, steps, 0.8, x, dx, ddx, mss_func, mass); - mss.setState (x, dx, ddx); + mss.setState (x, dx, ddx); }); - + + + } diff --git a/mechsystem/mass_spring.hpp b/mechsystem/mass_spring.hpp index 7c2d31ec1..dc9ddaebf 100644 --- a/mechsystem/mass_spring.hpp +++ b/mechsystem/mass_spring.hpp @@ -1,8 +1,6 @@ #ifndef MASS_SPRING_HPP #define MASS_SPRING_HPP - - #include #include @@ -12,7 +10,6 @@ using namespace ASC_ode; using namespace nanoblas; - template class Mass { @@ -51,7 +48,7 @@ class Spring public: double length; double stiffness; - std::array connections; + std::array connectors; }; template @@ -77,15 +74,12 @@ class MassSpringSystem return { Connector::MASS, m_masses.size()-1 }; } - size_t addSpring (Spring s) // double length, double stiffness, Connector c1, Connector c2) + size_t addSpring (Spring s) { - m_springs.push_back (s); // Spring{length, stiffness, { c1, c2 } }); + m_springs.push_back (s); return m_springs.size()-1; } - - - auto & fixes() { return m_fixes; } auto & masses() { return m_masses; } auto & springs() { return m_springs; } @@ -133,7 +127,7 @@ std::ostream & operator<< (std::ostream & ost, MassSpringSystem & mss) ost << "springs: " << std::endl; for (auto sp : mss.springs()) ost << "length = " << sp.length << ", stiffness = " << sp.stiffness - << ", C1 = " << sp.connections[0] << ", C2 = " << sp.connections[1] << std::endl; + << ", C1 = " << sp.connectors[0] << ", C2 = " << sp.connectors[1] << std::endl; return ost; } @@ -161,7 +155,7 @@ class MSS_Function : public NonlinearFunction for (auto spring : mss.springs()) { - auto [c1,c2] = spring.connections; + auto [c1,c2] = spring.connectors; Vec p1, p2; if (c1.type == Connector::FIX) p1 = mss.fixes()[c1.nr].pos; diff --git a/mechsystem/mass_spring.ipynb b/mechsystem/mass_spring.ipynb index 8c8288831..c490d3cab 100644 --- a/mechsystem/mass_spring.ipynb +++ b/mechsystem/mass_spring.ipynb @@ -2,40 +2,50 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "8c22d9bc-c86b-434f-b0f3-0e01290fd183", "metadata": {}, "outputs": [], "source": [ "import sys\n", - "sys.path.append('/Users/joachim/texjs/lva/ws2324/ScientificComputing/ASC-ODE/build/mass_spring')\n", + "sys.path.append('/Users/joachim/texjs/lva/IntroSC/ASC-ODE/build/mechsystem')\n", "\n", "from mass_spring import *\n", - "import ngsolve.bla\n", "\n", "from pythreejs import *" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "24f72163-bcb0-45bf-8407-66384ad3fbc4", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "mss = MassSpringSystem3d()\n", "mss.gravity = (0,0,-9.81)\n", "\n", - "mA = mss.Add (Mass(1, (1,0,0)))\n", - "mB = mss.Add (Mass(2, (2,0,0)))\n", - "f1 = mss.Add (Fix( (0,0,0)) )\n", - "mss.Add (Spring(1, 200000, (f1, mA)))\n", - "mss.Add (Spring(1, 100000, (mA, mB)))" + "mA = mss.add (Mass(1, (1,0,0)))\n", + "mB = mss.add (Mass(2, (2,0,0)))\n", + "f1 = mss.add (Fix( (0,0,0)) )\n", + "mss.add (Spring(1, 200000, (f1, mA)))\n", + "mss.add (Spring(1, 100000, (mA, mB)))" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "c5c8bdfc-9022-4def-bf04-4511756651ea", "metadata": {}, "outputs": [], @@ -45,20 +55,20 @@ " masses.append(\n", " Mesh(SphereBufferGeometry(0.2, 16, 16),\n", " MeshStandardMaterial(color='red'),\n", - " position=(m.pos[0], m.pos[1], m.pos[2])))\n", + " position=m.pos)) \n", "\n", "fixes = []\n", "for f in mss.fixes:\n", " fixes.append(\n", " Mesh(SphereBufferGeometry(0.2, 32, 16),\n", " MeshStandardMaterial(color='blue'),\n", - " position=(f.pos[0], f.pos[1], f.pos[2])))\n", + " position=(f.pos))) \n", "\n", "springpos = []\n", "for s in mss.springs:\n", - " pA = mss[s.connections[0]].pos\n", - " pB = mss[s.connections[1]].pos\n", - " springpos.append ([ [pA[0], pA[1], pA[2]], [pB[0], pB[1], pB[2]] ])\n", + " pA = mss[s.connectors[0]].pos\n", + " pB = mss[s.connectors[1]].pos\n", + " springpos.append ([ pA, pB ] ) \n", "\n", "springgeo = LineSegmentsGeometry(positions=springpos)\n", "m2 = LineMaterial(linewidth=3, color='cyan')\n", @@ -69,10 +79,26 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "c13e6200-9cab-4df1-8240-f03414ff9b20", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "133c9d290be24445bfd102b95674b261", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Renderer(camera=PerspectiveCamera(aspect=1.5, position=(10.0, 6.0, 10.0), projectionMatrix=(1.0, 0.0, 0.0, 0.0…" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "view_width = 600\n", "view_height = 400\n", @@ -98,15 +124,15 @@ "source": [ "from time import sleep\n", "for i in range(10000):\n", - " Simulate (mss, 0.02, 100)\n", + " mss.simulate (0.02, 100)\n", " for m,mvis in zip(mss.masses, masses):\n", " mvis.position = (m.pos[0], m.pos[1], m.pos[2])\n", "\n", " springpos = []\n", " for s in mss.springs:\n", - " pA = mss[s.connections[0]].pos\n", - " pB = mss[s.connections[1]].pos\n", - " springpos.append ([ [pA[0], pA[1], pA[2]], [pB[0], pB[1], pB[2]] ])\n", + " pA = mss[s.connectors[0]].pos\n", + " pB = mss[s.connectors[1]].pos\n", + " springpos.append ([ pA, pB ]) \n", " springs.geometry = LineSegmentsGeometry(positions=springpos)\n", " sleep(0.01)" ] @@ -130,7 +156,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -144,7 +170,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.0" + "version": "3.14.0" } }, "nbformat": 4, diff --git a/mechsystem/test_mass_spring.py b/mechsystem/test_mass_spring.py index d38e8b4b8..1704af0b7 100644 --- a/mechsystem/test_mass_spring.py +++ b/mechsystem/test_mass_spring.py @@ -17,12 +17,12 @@ print ("state = ", mss.getState()) -Simulate (mss, 0.1, 10) +mss.simulate (0.1, 10) print ("state = ", mss.getState()) -Simulate (mss, 0.1, 10) +mss.simulate (0.1, 10) print ("state = ", mss.getState()) From 3f8a6f51c1c9be925c9c0e90e494f5834a8eabb5 Mon Sep 17 00:00:00 2001 From: Joachim Schoeberl Date: Sun, 23 Nov 2025 14:54:43 +0100 Subject: [PATCH 08/20] cleanup notebook --- mechsystem/mass_spring.ipynb | 57 +++++------------------------------- 1 file changed, 7 insertions(+), 50 deletions(-) diff --git a/mechsystem/mass_spring.ipynb b/mechsystem/mass_spring.ipynb index c490d3cab..6291a1517 100644 --- a/mechsystem/mass_spring.ipynb +++ b/mechsystem/mass_spring.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "8c22d9bc-c86b-434f-b0f3-0e01290fd183", "metadata": {}, "outputs": [], @@ -17,21 +17,10 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "24f72163-bcb0-45bf-8407-66384ad3fbc4", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "mss = MassSpringSystem3d()\n", "mss.gravity = (0,0,-9.81)\n", @@ -45,7 +34,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "id": "c5c8bdfc-9022-4def-bf04-4511756651ea", "metadata": {}, "outputs": [], @@ -62,7 +51,7 @@ " fixes.append(\n", " Mesh(SphereBufferGeometry(0.2, 32, 16),\n", " MeshStandardMaterial(color='blue'),\n", - " position=(f.pos))) \n", + " position=f.pos)) \n", "\n", "springpos = []\n", "for s in mss.springs:\n", @@ -79,26 +68,10 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "id": "c13e6200-9cab-4df1-8240-f03414ff9b20", "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "133c9d290be24445bfd102b95674b261", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Renderer(camera=PerspectiveCamera(aspect=1.5, position=(10.0, 6.0, 10.0), projectionMatrix=(1.0, 0.0, 0.0, 0.0…" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "view_width = 600\n", "view_height = 400\n", @@ -136,22 +109,6 @@ " springs.geometry = LineSegmentsGeometry(positions=springpos)\n", " sleep(0.01)" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "35a71576-da30-469c-b391-698dde7681bf", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "fd64d66b-f881-4d3a-95d5-302d91f695f3", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { From 03462f0ce3856b35806e23f92bb111285631dc50 Mon Sep 17 00:00:00 2001 From: Farooq Mian Azan Date: Mon, 24 Nov 2025 09:16:56 +0000 Subject: [PATCH 09/20] Exercise 17 --- .../CMakeLists-checkpoint.txt | 3 + .../CrankNicolson-checkpoint.hpp | 34 +++ .../ImplicitEuler-checkpoint.hpp | 27 ++ .../ImprovedEuler-checkpoint.hpp | 21 ++ src/.ipynb_checkpoints/Newton-checkpoint.hpp | 52 ++++ .../bindings-checkpoint.cpp | 41 +++ .../function_algebra-checkpoint.hpp | 9 + src/.ipynb_checkpoints/main-checkpoint.cpp | 40 +++ .../mass_spring_function-checkpoint.hpp | 39 +++ src/.ipynb_checkpoints/matrix-checkpoint.hpp | 0 .../myfunction-checkpoint.hpp | 23 ++ .../newton-checkpoint.hpp} | 2 +- .../nonlinfunc-checkpoint.hpp | 1 + .../timestepper-checkpoint.cpp | 79 ++++++ .../timestepper-checkpoint.hpp | 39 +++ src/.ipynb_checkpoints/vector-checkpoint.hpp | 0 src/autodiff.hpp | 111 -------- src/bindings.cpp | 11 - src/compare_all | Bin 0 -> 2212134 bytes src/function_algebra.hpp | 1 + src/mass_spring_function.hpp | 1 + src/matrix.hpp | 1 + src/newton.hpp | 41 +++ src/nonlinfunc.hpp | 250 +----------------- src/timestepper.hpp | 65 +---- src/vector.hpp | 1 + 26 files changed, 456 insertions(+), 436 deletions(-) create mode 100644 src/.ipynb_checkpoints/CMakeLists-checkpoint.txt create mode 100644 src/.ipynb_checkpoints/CrankNicolson-checkpoint.hpp create mode 100644 src/.ipynb_checkpoints/ImplicitEuler-checkpoint.hpp create mode 100644 src/.ipynb_checkpoints/ImprovedEuler-checkpoint.hpp create mode 100644 src/.ipynb_checkpoints/Newton-checkpoint.hpp create mode 100644 src/.ipynb_checkpoints/bindings-checkpoint.cpp create mode 100644 src/.ipynb_checkpoints/function_algebra-checkpoint.hpp create mode 100644 src/.ipynb_checkpoints/main-checkpoint.cpp create mode 100644 src/.ipynb_checkpoints/mass_spring_function-checkpoint.hpp create mode 100644 src/.ipynb_checkpoints/matrix-checkpoint.hpp create mode 100644 src/.ipynb_checkpoints/myfunction-checkpoint.hpp rename src/{Newton.hpp => .ipynb_checkpoints/newton-checkpoint.hpp} (99%) create mode 100644 src/.ipynb_checkpoints/nonlinfunc-checkpoint.hpp create mode 100644 src/.ipynb_checkpoints/timestepper-checkpoint.cpp create mode 100644 src/.ipynb_checkpoints/timestepper-checkpoint.hpp create mode 100644 src/.ipynb_checkpoints/vector-checkpoint.hpp delete mode 100644 src/autodiff.hpp delete mode 100644 src/bindings.cpp create mode 100644 src/compare_all create mode 100644 src/function_algebra.hpp create mode 100644 src/mass_spring_function.hpp create mode 100644 src/matrix.hpp create mode 100644 src/newton.hpp create mode 100644 src/vector.hpp diff --git a/src/.ipynb_checkpoints/CMakeLists-checkpoint.txt b/src/.ipynb_checkpoints/CMakeLists-checkpoint.txt new file mode 100644 index 000000000..ca77dc21b --- /dev/null +++ b/src/.ipynb_checkpoints/CMakeLists-checkpoint.txt @@ -0,0 +1,3 @@ + +install (FILES nonlinfunc.hpp Newton.hpp ode.hpp DESTINATION include) + diff --git a/src/.ipynb_checkpoints/CrankNicolson-checkpoint.hpp b/src/.ipynb_checkpoints/CrankNicolson-checkpoint.hpp new file mode 100644 index 000000000..5decba086 --- /dev/null +++ b/src/.ipynb_checkpoints/CrankNicolson-checkpoint.hpp @@ -0,0 +1,34 @@ +#pragma once +#include "timestepper.hpp" +#include "function_algebra.hpp" +#include "newton.hpp" + +class CrankNicolson : public TimeStepper +{ + std::shared_ptr m_equ; + std::shared_ptr m_tau; + std::shared_ptr m_yold; + std::shared_ptr m_fold; // f(y_n) + Vector<> m_temp; + +public: + CrankNicolson(std::shared_ptr rhs) + : TimeStepper(rhs), m_tau(std::make_shared(0.0)), + m_temp(rhs->dimF()) + { + m_yold = std::make_shared(rhs->dimX()); + m_fold = std::make_shared(rhs->dimF()); + auto id = std::make_shared(rhs->dimX()); + + m_equ = id - m_yold - 0.5 * m_tau * (m_fold + rhs); + } + + void doStep(double tau, VectorView y) override + { + m_rhs->evaluate(y, m_temp); // compute f(y_n) + m_fold->set(m_temp); // store it + m_yold->set(y); + m_tau->set(tau); + NewtonSolver(m_equ, y); + } +}; \ No newline at end of file diff --git a/src/.ipynb_checkpoints/ImplicitEuler-checkpoint.hpp b/src/.ipynb_checkpoints/ImplicitEuler-checkpoint.hpp new file mode 100644 index 000000000..c80973828 --- /dev/null +++ b/src/.ipynb_checkpoints/ImplicitEuler-checkpoint.hpp @@ -0,0 +1,27 @@ +#pragma once +#include "timestepper.hpp" +#include "function_algebra.hpp" +#include "newton.hpp" + +class ImplicitEuler : public TimeStepper +{ + std::shared_ptr m_equ; + std::shared_ptr m_tau; + std::shared_ptr m_yold; + +public: + ImplicitEuler(std::shared_ptr rhs) + : TimeStepper(rhs), m_tau(std::make_shared(0.0)) + { + m_yold = std::make_shared(rhs->dimX()); + auto ynew = std::make_shared(rhs->dimX()); + m_equ = ynew - m_yold - m_tau * rhs; // y - yold - tau*f(y) = 0 + } + + void doStep(double tau, VectorView y) override + { + m_yold->set(y); + m_tau->set(tau); + NewtonSolver(m_equ, y); + } +}; \ No newline at end of file diff --git a/src/.ipynb_checkpoints/ImprovedEuler-checkpoint.hpp b/src/.ipynb_checkpoints/ImprovedEuler-checkpoint.hpp new file mode 100644 index 000000000..7699f2129 --- /dev/null +++ b/src/.ipynb_checkpoints/ImprovedEuler-checkpoint.hpp @@ -0,0 +1,21 @@ +#pragma once +#include "timestepper.hpp" + +class ImprovedEuler : public TimeStepper +{ + Vector<> m_k1, m_k2, m_temp; + +public: + ImprovedEuler(std::shared_ptr rhs) + : TimeStepper(rhs), + m_k1(rhs->dimF()), m_k2(rhs->dimF()), m_temp(rhs->dimF()) + {} + + void doStep(double tau, VectorView y) override + { + m_rhs->evaluate(y, m_k1); // k1 = f(y_n) + m_temp = y + tau * m_k1; // predictor + m_rhs->evaluate(m_temp, m_k2); // k2 = f(y_n + tau k1) + y += tau * (0.5 * m_k1 + 0.5 * m_k2); // corrector + } +}; \ No newline at end of file diff --git a/src/.ipynb_checkpoints/Newton-checkpoint.hpp b/src/.ipynb_checkpoints/Newton-checkpoint.hpp new file mode 100644 index 000000000..6021fd2b0 --- /dev/null +++ b/src/.ipynb_checkpoints/Newton-checkpoint.hpp @@ -0,0 +1,52 @@ +#ifndef NEWTON_HPP +#define NEWTON_HPP + +#include +#include +#include +#include +#include "nonlinfunc.hpp" + +class NewtonSolver { +public: + double tol = 1e-8; + int maxIter = 50; + + void solve(NonlinearFunction& func, std::vector& x) { + size_t n = x.size(); + std::vector F(n); + std::vector> J(n, std::vector(n)); + + for(int iter=0; iter dx = linearSolve(J, F); + + for(size_t i=0; i linearSolve(const std::vector>& J, const std::vector& F) { + // Only works for 2x2 systems + double a = J[0][0], b = J[0][1]; + double c = J[1][0], d = J[1][1]; + double det = a*d - b*c; + if(std::abs(det) < 1e-12) throw std::runtime_error("Singular Jacobian"); + return { (d*F[0]-b*F[1])/det, (-c*F[0]+a*F[1])/det }; + } +}; + +#endif diff --git a/src/.ipynb_checkpoints/bindings-checkpoint.cpp b/src/.ipynb_checkpoints/bindings-checkpoint.cpp new file mode 100644 index 000000000..00af57ac4 --- /dev/null +++ b/src/.ipynb_checkpoints/bindings-checkpoint.cpp @@ -0,0 +1,41 @@ +#include +#include +#include "nonlinfunc.hpp" +#include "Newton.hpp" +#include +#include + +namespace py = pybind11; +using namespace ASC_ode; +using namespace nanoblas; + +PYBIND11_MODULE(asc_ode, m) { + m.doc() = "ASC ODE solver"; + + // Vector + py::class_>(m, "Vector") + .def(py::init()) + .def(py::init>()) + .def("__len__", [](const Vector& v) { return v.size(); }) + .def("__getitem__", [](Vector& v, size_t i) -> double& { return v(i); }) + .def("__setitem__", [](Vector& v, size_t i, double val) { v(i) = val; }) + .def("__repr__", [](const Vector& v) { + std::stringstream ss; ss << "["; + for(size_t i=0; i>(m, "NonlinearFunction", py::dynamic_attr(), py::module_local()) + .def(py::init<>()) + .def("dimX", &NonlinearFunction::dimX) + .def("dimF", &NonlinearFunction::dimF) + .def("evaluate", [](NonlinearFunction& self, Vector& x, Vector& f) { self.evaluate(x,f); }) + .def("evaluateDeriv", [](NonlinearFunction& self, Vector& x, Matrix& df) { self.evaluateDeriv(x,df); }); + + // NewtonSolver + m.def("NewtonSolver", [](std::shared_ptr func, Vector& x, + double tol = 1e-12, int maxit = 50, bool linesearch = true) { + return NewtonSolver(func, x, tol, maxit, linesearch); + }); +} diff --git a/src/.ipynb_checkpoints/function_algebra-checkpoint.hpp b/src/.ipynb_checkpoints/function_algebra-checkpoint.hpp new file mode 100644 index 000000000..387a9858a --- /dev/null +++ b/src/.ipynb_checkpoints/function_algebra-checkpoint.hpp @@ -0,0 +1,9 @@ +#pragma once + +// Include the individual linear algebra components +// Assuming these files are found via your -Isrc path +#include "vector.hpp" +#include "matrix.hpp" + +// We should also include the core function type used by the steppers +#include "function_algebra.hpp" \ No newline at end of file diff --git a/src/.ipynb_checkpoints/main-checkpoint.cpp b/src/.ipynb_checkpoints/main-checkpoint.cpp new file mode 100644 index 000000000..3e50ef87f --- /dev/null +++ b/src/.ipynb_checkpoints/main-checkpoint.cpp @@ -0,0 +1,40 @@ +#include +#include // For file output +#include +#include // For math functions like sqrt, fabs, etc. + +// Your existing includes +#include "nonlinfunc.hpp" +#include "mass_spring_function.hpp" +#include "newton.hpp" + +int main() { + // Define the system and initial conditions (this might already be in your code) + std::vector x = {1.0, 0.0}; // Example initial conditions + double dt = 0.01; // Time step + double t_max = 10.0; // Max time + int steps = static_cast(t_max / dt); + + // Create a file to output data + std::ofstream output_file("simulation_data.csv"); + output_file << "Time, x1, x2\n"; // Header for CSV + + // Run the simulation (just an example loop) + for (int step = 0; step < steps; ++step) { + // Call the appropriate time-stepping method here (e.g., ExpEuler, ImpEuler) + // Example of using a simple explicit Euler method: + std::vector f_val = {1.0, 0.0}; // This should be computed by your model + + for (int i = 0; i < x.size(); ++i) { + x[i] += dt * f_val[i]; // Update state using Euler method + } + + // Save the current time and state to the CSV file + double time = step * dt; + output_file << time << ", " << x[0] << ", " << x[1] << "\n"; + } + + output_file.close(); // Close the file after writing + + return 0; +} diff --git a/src/.ipynb_checkpoints/mass_spring_function-checkpoint.hpp b/src/.ipynb_checkpoints/mass_spring_function-checkpoint.hpp new file mode 100644 index 000000000..b5fe525c3 --- /dev/null +++ b/src/.ipynb_checkpoints/mass_spring_function-checkpoint.hpp @@ -0,0 +1,39 @@ +#ifndef MASS_SPRING_FUNCTION_HPP +#define MASS_SPRING_FUNCTION_HPP + +#include "nonlinfunc.hpp" +#include +#include // For mathematical functions like sin, cos, etc. + +class MassSpringFunction : public NonlinearFunction { +public: + MassSpringFunction(double mass, double spring_constant) + : m_mass(mass), m_k(spring_constant) {} + + // Evaluate the right-hand side of the ODE system + std::vector eval(const std::vector& x) const override { + // x[0] = position (x), x[1] = velocity (v) + double dx1_dt = x[1]; // dx/dt = v (velocity) + double dx2_dt = -m_k / m_mass * x[0]; // dv/dt = -k/m * x (acceleration) + + return {dx1_dt, dx2_dt}; + } + + // Evaluate the Jacobian matrix of the system + std::vector> jacobian(const std::vector& x) const override { + // The Jacobian matrix is: + // [ 0, 1 ] + // [-k/m, 0] + + return { + {0, 1}, + {-m_k / m_mass, 0} + }; + } + +private: + double m_mass; // Mass of the object + double m_k; // Spring constant +}; + +#endif // MASS_SPRING_FUNCTION_HPP diff --git a/src/.ipynb_checkpoints/matrix-checkpoint.hpp b/src/.ipynb_checkpoints/matrix-checkpoint.hpp new file mode 100644 index 000000000..e69de29bb diff --git a/src/.ipynb_checkpoints/myfunction-checkpoint.hpp b/src/.ipynb_checkpoints/myfunction-checkpoint.hpp new file mode 100644 index 000000000..6c971a5b7 --- /dev/null +++ b/src/.ipynb_checkpoints/myfunction-checkpoint.hpp @@ -0,0 +1,23 @@ +#ifndef MYFUNCTION_HPP +#define MYFUNCTION_HPP + +#include +#include "nonlinfunc.hpp" + +class MyFunction : public NonlinearFunction { +public: + double x, y; + + MyFunction(double x0 = 1.0, double y0 = 1.0) : x(x0), y(y0) {} + + // Match the NonlinearFunction interface exactly + std::vector eval() const { + return { x*x + y*y - 4, x - y }; + } + + std::vector> jacobian() const { + return {{2*x, 2*y}, {1, -1}}; + } +}; + +#endif diff --git a/src/Newton.hpp b/src/.ipynb_checkpoints/newton-checkpoint.hpp similarity index 99% rename from src/Newton.hpp rename to src/.ipynb_checkpoints/newton-checkpoint.hpp index d346f9f91..57d4ebd05 100644 --- a/src/Newton.hpp +++ b/src/.ipynb_checkpoints/newton-checkpoint.hpp @@ -38,4 +38,4 @@ namespace ASC_ode } -#endif +#endif \ No newline at end of file diff --git a/src/.ipynb_checkpoints/nonlinfunc-checkpoint.hpp b/src/.ipynb_checkpoints/nonlinfunc-checkpoint.hpp new file mode 100644 index 000000000..1becba2bb --- /dev/null +++ b/src/.ipynb_checkpoints/nonlinfunc-checkpoint.hpp @@ -0,0 +1 @@ +404: Not Found \ No newline at end of file diff --git a/src/.ipynb_checkpoints/timestepper-checkpoint.cpp b/src/.ipynb_checkpoints/timestepper-checkpoint.cpp new file mode 100644 index 000000000..3fd6ca339 --- /dev/null +++ b/src/.ipynb_checkpoints/timestepper-checkpoint.cpp @@ -0,0 +1,79 @@ +#include "timestepper.hpp" +#include "newton.hpp" + +std::vector ExpEuler(const NonlinearFunc& f, + const std::vector& x0, + double dt) { + // Explicit Euler method implementation + std::vector x = x0; + std::vector fx = f.eval(x); + for (size_t i = 0; i < x.size(); ++i) { + x[i] += dt * fx[i]; + } + return x; +} + +std::vector ImpEuler(const NonlinearFunc& f, + const std::vector& x0, + double dt) { + // Implicit Euler method implementation + std::vector x = x0; + + // Define the system for Newton's method + auto g = [&](const std::vector& y) -> std::vector { + std::vector fy = f.eval(y); + std::vector res(fy.size()); + for (size_t i = 0; i < fy.size(); ++i) { + res[i] = y[i] - x[i] - dt * fy[i]; + } + return res; + }; + + // Solve using Newton's method + return NewtonSolver(g, x); +} + +std::vector ImprovedEuler(const NonlinearFunc& f, + const std::vector& x0, + double dt) { + // Improved Euler method implementation + std::vector x = x0; + std::vector fx = f.eval(x); + + // Take a step with the explicit Euler method + std::vector x_temp = x; + for (size_t i = 0; i < x.size(); ++i) { + x_temp[i] += dt * fx[i]; + } + + // Evaluate at the new point + std::vector fx_temp = f.eval(x_temp); + + // Combine the two steps for the improved Euler method + for (size_t i = 0; i < x.size(); ++i) { + x[i] += dt * 0.5 * (fx[i] + fx_temp[i]); + } + + return x; +} + +std::vector CrankNicolson(const NonlinearFunc& f, + const std::vector& x0, + double dt) { + // Crank-Nicolson method implementation (implicit method) + std::vector x = x0; + + // Define the system for Newton's method + auto g = [&](const std::vector& y) -> std::vector { + std::vector fy = f.eval(y); + std::vector fx = f.eval(x); + std::vector res(fx.size()); + for (size_t i = 0; i < fx.size(); ++i) { + res[i] = y[i] - x[i] - 0.5 * dt * (fx[i] + fy[i]); + } + return res; + }; + + // Solve using Newton's method + return NewtonSolver(g, x); +} diff --git a/src/.ipynb_checkpoints/timestepper-checkpoint.hpp b/src/.ipynb_checkpoints/timestepper-checkpoint.hpp new file mode 100644 index 000000000..9212f156d --- /dev/null +++ b/src/.ipynb_checkpoints/timestepper-checkpoint.hpp @@ -0,0 +1,39 @@ +#ifndef TIMESTEPPER_HPP +#define TIMESTEPPER_HPP + +#include "nonlinfunc.hpp" +#include + +std::vector ExpEuler(NonlinearFunction& f, std::vector& x, double dt) { + std::vector f_val = f.eval(x); + for (size_t i = 0; i < x.size(); ++i) { + x[i] += dt * f_val[i]; // Update the values using the explicit Euler method + } + return x; +} + +std::vector ImpEuler(NonlinearFunction& f, std::vector& x, double dt) { + std::vector f_val = f.eval(x); + for (size_t i = 0; i < x.size(); ++i) { + x[i] += dt * f_val[i]; // Update values (simplified, for demonstration) + } + return x; +} + +std::vector ImprovedEuler(NonlinearFunction& f, std::vector& x, double dt) { + std::vector f_val = f.eval(x); + for (size_t i = 0; i < x.size(); ++i) { + x[i] += dt * f_val[i]; // Final step + } + return x; +} + +std::vector CrankNicolson(NonlinearFunction& f, std::vector& x, double dt) { + std::vector f_val = f.eval(x); + for (size_t i = 0; i < x.size(); ++i) { + x[i] += dt * f_val[i]; // Update final step + } + return x; +} + +#endif diff --git a/src/.ipynb_checkpoints/vector-checkpoint.hpp b/src/.ipynb_checkpoints/vector-checkpoint.hpp new file mode 100644 index 000000000..e69de29bb diff --git a/src/autodiff.hpp b/src/autodiff.hpp deleted file mode 100644 index 40a46e7e5..000000000 --- a/src/autodiff.hpp +++ /dev/null @@ -1,111 +0,0 @@ -#ifndef AUTODIFF_HPP -#define AUTODIFF_HPP - -#include -#include -#include -#include - - -namespace ASC_ode -{ - - template - class Variable - { - private: - T m_val; - public: - Variable (T v) : m_val(v) {} - T value() const { return m_val; } - }; - - template - auto derivative (T v, size_t /*index*/) { return T(0); } - - - template - class AutoDiff - { - private: - T m_val; - std::array m_deriv; - public: - AutoDiff () : m_val(0), m_deriv{} {} - AutoDiff (T v) : m_val(v), m_deriv{} - { - for (size_t i = 0; i < N; i++) - m_deriv[i] = derivative(v, i); - } - - template - AutoDiff (Variable var) : m_val(var.value()), m_deriv{} - { - m_deriv[I] = 1.0; - } - - T value() const { return m_val; } - std::array& deriv() { return m_deriv; } - const std::array& deriv() const { return m_deriv; } - }; - - - template - auto derivative (AutoDiff v, size_t index) - { - return v.deriv()[index]; - } - - - - template - std::ostream & operator<< (std::ostream& os, const AutoDiff& ad) - { - os << "Value: " << ad.value() << ", Deriv: ["; - for (size_t i = 0; i < N; i++) - { - os << ad.deriv()[i]; - if (i < N - 1) os << ", "; - } - os << "]"; - return os; - } - - template - AutoDiff operator+ (const AutoDiff& a, const AutoDiff& b) - { - AutoDiff result(a.value() + b.value()); - for (size_t i = 0; i < N; i++) - result.deriv()[i] = a.deriv()[i] + b.deriv()[i]; - return result; - } - - template - auto operator+ (T a, const AutoDiff& b) { return AutoDiff(a) + b; } - - - template - AutoDiff operator* (const AutoDiff& a, const AutoDiff& b) - { - AutoDiff result(a.value() * b.value()); - for (size_t i = 0; i < N; i++) - result.deriv()[i] = a.deriv()[i] * b.value() + a.value() * b.deriv()[i]; - return result; - } - - using std::sin; - using std::cos; - - template - AutoDiff sin(const AutoDiff &a) - { - AutoDiff result(sin(a.value())); - for (size_t i = 0; i < N; i++) - result.deriv()[i] = cos(a.value()) * a.deriv()[i]; - return result; - } - - -} // namespace ASC_ode - -#endif diff --git a/src/bindings.cpp b/src/bindings.cpp deleted file mode 100644 index ce903dd04..000000000 --- a/src/bindings.cpp +++ /dev/null @@ -1,11 +0,0 @@ -#include - -namespace py = pybind11; - -PYBIND11_MODULE(asc_ode, m) { - m.doc() = "ASC ODE library – winter semester 2025/26"; - m.attr("__version__") = "0.1.0"; - - - m.def("hello", []() { return "Hello from ASC ODE!"; }); -} \ No newline at end of file diff --git a/src/compare_all b/src/compare_all new file mode 100644 index 0000000000000000000000000000000000000000..0e677d6dad730231aa545e0ce161eb9496b5e4e5 GIT binary patch literal 2212134 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%0AI9y? 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ƏR{|zT&-T%>kUZ3cBPa66OzUdnw|KHeaHk|p-u<2m@ zzm5LiciXgvQ2wDGiXGZQ{O+C|`@f0)vDg1Ae>v2@cai@C`!8CE-;~7vGm}5mzxR;8 z-R+q*h5SQ5|0+hv|1atM@$>&qL;er#STb|)_}l37Ps#lc{<(r-e+cn&pZ^!?|NB+^ zF8@OQO-cTLP4{2f^CAE3$p4Z17r1XZb^R-Ng*U3C`=2|D^6!T8zfUZ`xrUd2%AZ}E z_tWL~{udPszQKR}oyi~a{}KBC)NRuqGW@C}{y&)fA^#sE|7Vt8!*&mBa@n#b|OecGw@uV%WK zUy=J=4fGrKhYI=XLzB-KqY^QU6=S$3I2dQtSU0G4mhzzeWCmZv4Y`rthHwvhi(HdmbEfB5|056HiO<y=;dEI#Y zXWPX58u|^xK#2chCV%++(~ro%pyfBP-KqQ?#J|}#=2xUGRsSzZ<|m(jYC-y>=|m-`Q&e|`-4e{=qs z$NzTn`6ok<|FkXSe{IX3R{x0qUy%Q6yG=&u{68BWkAIpEsqsHqQUAXp|L@j+2A)#$ zUo%@=|5ZuH|HA$|k^dX(UxBw&e(G1

%n}i~9c=`TwZ$pIZN^f78SLhxPy8k^fs) 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%0DX<_+)>`SixlKVfe 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�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 T{P!OI^-p}~Uww|%SLy!;*Tqt{ literal 0 HcmV?d00001 diff --git a/src/function_algebra.hpp b/src/function_algebra.hpp new file mode 100644 index 000000000..1becba2bb --- /dev/null +++ b/src/function_algebra.hpp @@ -0,0 +1 @@ +404: Not Found \ No newline at end of file diff --git a/src/mass_spring_function.hpp b/src/mass_spring_function.hpp new file mode 100644 index 000000000..1becba2bb --- /dev/null +++ b/src/mass_spring_function.hpp @@ -0,0 +1 @@ +404: Not Found \ No newline at end of file diff --git a/src/matrix.hpp b/src/matrix.hpp new file mode 100644 index 000000000..1becba2bb --- /dev/null +++ b/src/matrix.hpp @@ -0,0 +1 @@ +404: Not Found \ No newline at end of file diff --git a/src/newton.hpp b/src/newton.hpp new file mode 100644 index 000000000..57d4ebd05 --- /dev/null +++ b/src/newton.hpp @@ -0,0 +1,41 @@ +#ifndef Newton_h +#define Newton_h + +#include "nonlinfunc.hpp" +#include +#include + +namespace ASC_ode +{ + void NewtonSolver (std::shared_ptr func, VectorView x, + double tol = 1e-10, int maxsteps = 10, + std::function)> callback = nullptr) + { + Vector res(func->dimF()); + Matrix fprime(func->dimF(), func->dimX()); + + for (int i = 0; i < maxsteps; i++) + { + func->evaluate(x, res); + double err= norm(res); + if (err < tol) return; + + func->evaluateDeriv(x, fprime); + + calcInverse(fprime); + x -= fprime*res; + + // LapackLU LU(fprime); + // LU.solve(res); + // x -= res; + + if (callback) + callback(i, err, x); + } + + throw std::domain_error("Newton did not converge"); + } + +} + +#endif \ No newline at end of file diff --git a/src/nonlinfunc.hpp b/src/nonlinfunc.hpp index 76a19957c..1becba2bb 100644 --- a/src/nonlinfunc.hpp +++ b/src/nonlinfunc.hpp @@ -1,249 +1 @@ -#ifndef NONLINFUNC_H -#define NONLINFUNC_H - -#include -#include - -#include -#include - -namespace ASC_ode -{ - using namespace nanoblas; - - class NonlinearFunction - { - public: - virtual ~NonlinearFunction() = default; - virtual size_t dimX() const = 0; - virtual size_t dimF() const = 0; - virtual void evaluate (VectorView x, VectorView f) const = 0; - virtual void evaluateDeriv (VectorView x, MatrixView df) const = 0; - }; - - - class IdentityFunction : public NonlinearFunction - { - size_t m_n; - public: - IdentityFunction (size_t n) : m_n(n) { } - size_t dimX() const override { return m_n; } - size_t dimF() const override { return m_n; } - void evaluate (VectorView x, VectorView f) const override - { - f = x; - } - - void evaluateDeriv (VectorView x, MatrixView df) const override - { - df = 0.0; - df.diag() = 1.0; - } - }; - - - - class ConstantFunction : public NonlinearFunction - { - Vector<> m_val; - public: - ConstantFunction(size_t n) : m_val(n) { } - ConstantFunction(VectorView val) : m_val(val) { } - void set(VectorView val) { m_val = val; } - VectorView get() const { return m_val; } - size_t dimX() const override { return m_val.size(); } - size_t dimF() const override { return m_val.size(); } - void evaluate (VectorView x, VectorView f) const override - { - f = m_val; - } - void evaluateDeriv (VectorView x, MatrixView df) const override - { - df = 0.0; - } - }; - - - - class SumFunction : public NonlinearFunction - { - std::shared_ptr m_fa, m_fb; - double m_faca, m_facb; - public: - SumFunction (std::shared_ptr fa, - std::shared_ptr fb, - double faca, double facb) - : m_fa(fa), m_fb(fb), m_faca(faca), m_facb(facb) { } - - size_t dimX() const override { return m_fa->dimX(); } - size_t dimF() const override { return m_fa->dimF(); } - void evaluate (VectorView x, VectorView f) const override - { - m_fa->evaluate(x, f); - f *= m_faca; - Vector<> tmp(dimF()); - m_fb->evaluate(x, tmp); - f += m_facb*tmp; - } - void evaluateDeriv (VectorView x, MatrixView df) const override - { - m_fa->evaluateDeriv(x, df); - df *= m_faca; - Matrix tmp(dimF(), dimX()); - m_fb->evaluateDeriv(x, tmp); - df += m_facb*tmp; - } - }; - - - inline auto operator- (std::shared_ptr fa, std::shared_ptr fb) - { - return std::make_shared(fa, fb, 1, -1); - } - - inline auto operator+ (std::shared_ptr fa, std::shared_ptr fb) - { - return std::make_shared(fa, fb, 1, 1); - } - - class Parameter - { - double m_value; - public: - Parameter(double value) : m_value(value) {} - double get() const { return m_value; } - void set(double value) { m_value = value; } - }; - - class ScaleFunction : public NonlinearFunction - { - std::shared_ptr m_fa; - std::shared_ptr m_fac; - public: - ScaleFunction (std::shared_ptr fa, - std::shared_ptr fac) - : m_fa(fa), m_fac(fac) { } - - size_t dimX() const override { return m_fa->dimX(); } - size_t dimF() const override { return m_fa->dimF(); } - void evaluate (VectorView x, VectorView f) const override - { - m_fa->evaluate(x, f); - f *= m_fac->get(); - } - - void evaluateDeriv (VectorView x, MatrixView df) const override - { - m_fa->evaluateDeriv(x, df); - df *= m_fac->get(); - } - }; - - inline auto operator* (std::shared_ptr parama, - std::shared_ptr f) - { - return std::make_shared(f, parama); - } - - inline auto operator* (double a, std::shared_ptr f) - { - return std::make_shared(a) * f; - } - - - - - // fa(fb) - class ComposeFunction : public NonlinearFunction - { - std::shared_ptr m_fa, m_fb; - public: - ComposeFunction (std::shared_ptr fa, - std::shared_ptr fb) - : m_fa(fa), m_fb(fb) { } - - size_t dimX() const override { return m_fb->dimX(); } - size_t dimF() const override { return m_fa->dimF(); } - void evaluate (VectorView x, VectorView f) const override - { - Vector<> tmp(m_fb->dimF()); - m_fb->evaluate (x, tmp); - m_fa->evaluate (tmp, f); - } - void evaluateDeriv (VectorView x, MatrixView df) const override - { - Vector<> tmp(m_fb->dimF()); - m_fb->evaluate (x, tmp); - - Matrix jaca(m_fa->dimF(), m_fa->dimX()); - Matrix jacb(m_fb->dimF(), m_fb->dimX()); - - m_fb->evaluateDeriv(x, jacb); - m_fa->evaluateDeriv(tmp, jaca); - - df = jaca*jacb; - } - }; - - - inline auto Compose (std::shared_ptr fa, std::shared_ptr fb) - { - return make_shared (fa, fb); - } - - class EmbedFunction : public NonlinearFunction - { - std::shared_ptr m_fa; - size_t m_firstx, m_dimx, m_firstf, m_dimf; - size_t m_nextx, m_nextf; - public: - EmbedFunction (std::shared_ptr fa, - size_t firstx, size_t dimx, - size_t firstf, size_t dimf) - : m_fa(fa), - m_firstx(firstx), m_dimx(dimx), m_firstf(firstf), m_dimf(dimf), - m_nextx(m_firstx+m_fa->dimX()), m_nextf(m_firstf+m_fa->dimF()) - { } - - size_t dimX() const override { return m_dimx; } - size_t dimF() const override { return m_dimf; } - void evaluate (VectorView x, VectorView f) const override - { - f = 0.0; - m_fa->evaluate(x.range(m_firstx, m_nextx), f.range(m_firstf, m_nextf)); - } - void evaluateDeriv (VectorView x, MatrixView df) const override - { - df = 0; - m_fa->evaluateDeriv(x.range(m_firstx, m_nextx), - df.rows(m_firstf, m_nextf).cols(m_firstx, m_nextx)); - } - }; - - - class Projector : public NonlinearFunction - { - size_t m_size, m_first, m_next; - public: - Projector (size_t size, - size_t first, size_t next) - : m_size(size), m_first(first), m_next(next) { } - - size_t dimX() const override { return m_size; } - size_t dimF() const override { return m_size; } - void evaluate (VectorView x, VectorView f) const override - { - f = 0.0; - f.range(m_first, m_next) = x.range(m_first, m_next); - } - void evaluateDeriv (VectorView x, MatrixView df) const override - { - df = 0.0; - df.diag().range(m_first, m_next) = 1; - } - }; - - -} - -#endif +404: Not Found \ No newline at end of file diff --git a/src/timestepper.hpp b/src/timestepper.hpp index c7802243b..1becba2bb 100644 --- a/src/timestepper.hpp +++ b/src/timestepper.hpp @@ -1,64 +1 @@ -#ifndef TIMERSTEPPER_HPP -#define TIMERSTEPPER_HPP - -#include -#include - -#include "Newton.hpp" - - -namespace ASC_ode -{ - - class TimeStepper - { - protected: - std::shared_ptr m_rhs; - public: - TimeStepper(std::shared_ptr rhs) : m_rhs(rhs) {} - virtual ~TimeStepper() = default; - virtual void DoStep(double tau, VectorView y) = 0; - }; - - class ExplicitEuler : public TimeStepper - { - Vector<> m_vecf; - public: - ExplicitEuler(std::shared_ptr rhs) - : TimeStepper(rhs), m_vecf(rhs->dimF()) {} - void DoStep(double tau, VectorView y) override - { - this->m_rhs->evaluate(y, m_vecf); - y += tau * m_vecf; - } - }; - - class ImplicitEuler : public TimeStepper - { - std::shared_ptr m_equ; - std::shared_ptr m_tau; - std::shared_ptr m_yold; - public: - ImplicitEuler(std::shared_ptr rhs) - : TimeStepper(rhs), m_tau(std::make_shared(0.0)) - { - m_yold = std::make_shared(rhs->dimX()); - auto ynew = std::make_shared(rhs->dimX()); - m_equ = ynew - m_yold - m_tau * m_rhs; - } - - void DoStep(double tau, VectorView y) override - { - m_yold->set(y); - m_tau->set(tau); - NewtonSolver(m_equ, y); - } - }; - - - - -} - - -#endif +404: Not Found \ No newline at end of file diff --git a/src/vector.hpp b/src/vector.hpp new file mode 100644 index 000000000..1becba2bb --- /dev/null +++ b/src/vector.hpp @@ -0,0 +1 @@ +404: Not Found \ No newline at end of file From 1277df03b01a7bec9a5a090312bb0b101a0d7e6d Mon Sep 17 00:00:00 2001 From: Farooq Mian Azan Date: Mon, 24 Nov 2025 09:25:50 +0000 Subject: [PATCH 10/20] Add the missing folder --- .../ExplicitEuler-checkpoint.hpp | 16 +++ .../ImprovedEuler-checkpoint.hpp | 14 ++ .../mass_spring-checkpoint.hpp | 29 ++++ .../plot_mass_spring-checkpoint.py | 47 +++++++ .../timestepper-checkpoint.hpp | 132 ++++++++++++++++++ include/CrankNicolson.hpp | 23 +++ include/ExplicitEuler.hpp | 16 +++ include/ImplicitEuler.hpp | 19 +++ include/ImprovedEuler.hpp | 14 ++ include/mass_spring.hpp | 29 ++++ include/plot_mass_spring.py | 47 +++++++ include/timestepper.hpp | 132 ++++++++++++++++++ 12 files changed, 518 insertions(+) create mode 100644 include/.ipynb_checkpoints/ExplicitEuler-checkpoint.hpp create mode 100644 include/.ipynb_checkpoints/ImprovedEuler-checkpoint.hpp create mode 100644 include/.ipynb_checkpoints/mass_spring-checkpoint.hpp create mode 100644 include/.ipynb_checkpoints/plot_mass_spring-checkpoint.py create mode 100644 include/.ipynb_checkpoints/timestepper-checkpoint.hpp create mode 100644 include/CrankNicolson.hpp create mode 100644 include/ExplicitEuler.hpp create mode 100644 include/ImplicitEuler.hpp create mode 100644 include/ImprovedEuler.hpp create mode 100644 include/mass_spring.hpp create mode 100644 include/plot_mass_spring.py create mode 100644 include/timestepper.hpp diff --git a/include/.ipynb_checkpoints/ExplicitEuler-checkpoint.hpp b/include/.ipynb_checkpoints/ExplicitEuler-checkpoint.hpp new file mode 100644 index 000000000..326c3a2da --- /dev/null +++ b/include/.ipynb_checkpoints/ExplicitEuler-checkpoint.hpp @@ -0,0 +1,16 @@ +#pragma once +#include "timestepper.hpp" +#include + +// This class implements the standard y_new = y + tau * f(y) +class ExplicitEuler : public TimeStepper { +public: + ExplicitEuler(std::shared_ptr rhs) + : TimeStepper(rhs) {} + + void doStep(double tau, VectorView y) override { + Vector<> k1; + m_rhs->evaluate(y, k1); // Evaluate f(y) + y += tau * k1; // Update y + } +}; \ No newline at end of file diff --git a/include/.ipynb_checkpoints/ImprovedEuler-checkpoint.hpp b/include/.ipynb_checkpoints/ImprovedEuler-checkpoint.hpp new file mode 100644 index 000000000..50e3c2633 --- /dev/null +++ b/include/.ipynb_checkpoints/ImprovedEuler-checkpoint.hpp @@ -0,0 +1,14 @@ +#pragma once +#include "timestepper.hpp" +class ImprovedEuler : public TimeStepper { + Vector<> k1, k2, tmp; +public: + ImprovedEuler(std::shared_ptr rhs) + : TimeStepper(rhs), k1(rhs->dimF()), k2(rhs->dimF()), tmp(rhs->dimF()) {} + void doStep(double tau, VectorView y) override { + m_rhs->evaluate(y, k1); + tmp = y + tau * k1; + m_rhs->evaluate(tmp, k2); + y += tau * (0.5 * k1 + 0.5 * k2); + } +}; diff --git a/include/.ipynb_checkpoints/mass_spring-checkpoint.hpp b/include/.ipynb_checkpoints/mass_spring-checkpoint.hpp new file mode 100644 index 000000000..86607b05d --- /dev/null +++ b/include/.ipynb_checkpoints/mass_spring-checkpoint.hpp @@ -0,0 +1,29 @@ +// include/mass_spring.hpp +#pragma once +#include "nonlinear_function.hpp" // repo's interface + +class MassSpring : public NonlinearFunction +{ + double m_mass; + double m_stiffness; + +public: + MassSpring (double m, double k) + : m_mass(m), m_stiffness(k) {} + + size_t dimX() const override { return 2; } + size_t dimF() const override { return 2; } + + void evaluate (VectorView x, VectorView f) const override + { + f(0) = x(1); + f(1) = -m_stiffness/m_mass * x(0); + } + + void evaluateDeriv (VectorView x, MatrixView df) const override + { + df = 0.0; + df(0,1) = 1; + df(1,0) = -m_stiffness/m_mass; + } +}; diff --git a/include/.ipynb_checkpoints/plot_mass_spring-checkpoint.py b/include/.ipynb_checkpoints/plot_mass_spring-checkpoint.py new file mode 100644 index 000000000..36b3a1518 --- /dev/null +++ b/include/.ipynb_checkpoints/plot_mass_spring-checkpoint.py @@ -0,0 +1,47 @@ +# python/plot_mass_spring.py +import csv +import matplotlib.pyplot as plt +import numpy as np + +def read_csv(filename): + t, x, v = [], [], [] + with open(filename) as f: + reader = csv.DictReader(f) + for row in reader: + t.append(float(row['t'])) + x.append(float(row['x'])) + v.append(float(row['v'])) + return np.array(t), np.array(x), np.array(v) + +files = [ + ("mass_explicit.csv", "Explicit Euler"), + ("mass_improved.csv", "Improved Euler"), + ("mass_crank.csv", "Crank-Nicolson (Picard)"), +] + +plt.figure(figsize=(9,5)) +for fname, label in files: + t, x, v = read_csv(fname) + plt.plot(t, x, label=label) +plt.xlabel("t") +plt.ylabel("position x(t)") +plt.legend() +plt.title("Mass-Spring: position vs time") +plt.grid(True) +plt.tight_layout() +plt.savefig("mass_position_compare.png") +print("Wrote mass_position_compare.png") + +# phase plot +plt.figure(figsize=(6,6)) +for fname, label in files: + t, x, v = read_csv(fname) + plt.plot(x, v, label=label) +plt.xlabel("position x") +plt.ylabel("velocity v") +plt.legend() +plt.title("Mass-Spring: phase plot") +plt.grid(True) +plt.tight_layout() +plt.savefig("mass_phase_compare.png") +print("Wrote mass_phase_compare.png") diff --git a/include/.ipynb_checkpoints/timestepper-checkpoint.hpp b/include/.ipynb_checkpoints/timestepper-checkpoint.hpp new file mode 100644 index 000000000..d67a282e3 --- /dev/null +++ b/include/.ipynb_checkpoints/timestepper-checkpoint.hpp @@ -0,0 +1,132 @@ +// include/timestepper.hpp +#pragma once +#include +#include +#include +#include + +// forward declarations from repo's linear algebra +// Replace these with the repo's real Vector / Matrix types. +// Here I show pseudo-types to be adapted to the project's actual types. +#include "nonlinear_function.hpp" // assume this exists in repo (NonlinearFunction) + +// The repo uses Vector<> and VectorView<> types; adapt includes if necessary. + +class TimeStepper +{ +protected: + std::shared_ptr m_rhs; +public: + TimeStepper(std::shared_ptr rhs) : m_rhs(rhs) {} + virtual ~TimeStepper() = default; + virtual void doStep(double tau, VectorView y) = 0; +}; + +/// ExplicitEuler is likely already implemented in the repo; shown for reference +class ExplicitEuler : public TimeStepper +{ + Vector<> m_vecf; +public: + ExplicitEuler(std::shared_ptr rhs) + : TimeStepper(rhs), m_vecf(rhs->dimF()) {} + + void doStep(double tau, VectorView y) override + { + this->m_rhs->evaluate(y, m_vecf); + y += tau * m_vecf; + } +}; + +/// Improved Euler (Heun / explicit midpoint-like two-stage as defined in exercise) +/// \tilde y = y_n + tau/2 * f(y_n) +/// y_{n+1} = y_n + tau * f( \tilde y ) +class ImprovedEuler : public TimeStepper +{ + Vector<> m_vecf; // f(y) + Vector<> m_vecft; // f(tilde y) + Vector<> m_ytemp; // temporary vector for tilde y +public: + ImprovedEuler(std::shared_ptr rhs) + : TimeStepper(rhs), + m_vecf(rhs->dimF()), + m_vecft(rhs->dimF()), + m_ytemp(rhs->dimX()) {} + + void doStep(double tau, VectorView y) override + { + // evaluate f(y) + this->m_rhs->evaluate(y, m_vecf); + + // tilde y = y + tau/2 * f(y) + m_ytemp = y; // copy current y to temp + m_ytemp += (tau/2.0) * m_vecf; + + // evaluate f(tilde y) + this->m_rhs->evaluate(m_ytemp, m_vecft); + + // y_{n+1} = y_n + tau * f(tilde y) + y += tau * m_vecft; + } +}; + +/// CrankNicolson (semi-implicit): we implement a Picard (fixed-point) iteration: +/// y^{k+1} = y_old + 0.5*tau*( f(y_old) + f(y^k) ) +/// start from predictor (Improved Euler or Explicit Euler) +class CrankNicolson : public TimeStepper +{ + Vector<> m_fold; // f(y_old) + Vector<> m_fk; // f(y_k) + Vector<> m_yk; // current iterate y^k + int m_max_iter; + double m_tol; +public: + CrankNicolson(std::shared_ptr rhs, + int max_iter = 20, double tol = 1e-10) + : TimeStepper(rhs), + m_fold(rhs->dimF()), + m_fk(rhs->dimF()), + m_yk(rhs->dimX()), + m_max_iter(max_iter), + m_tol(tol) {} + + void doStep(double tau, VectorView y) override + { + // store old + Vector<> yold = y; // copy (Vector supports copy) + + // evaluate f(yold) + this->m_rhs->evaluate(yold, m_fold); + + // predictor: one ImprovedEuler step -> starting guess + // yk = yold + tau * f(yold) (explicit Euler predictor) + m_yk = yold; + m_yk += tau * m_fold; + + // Picard iteration (fixed-point) + for (int iter = 0; iter < m_max_iter; ++iter) + { + // evaluate f(y_k) + this->m_rhs->evaluate(m_yk, m_fk); + + // compute new iterate + Vector<> ynew = yold; + ynew += 0.5 * tau * (m_fold + m_fk); + + // check convergence (norm of difference) + double diffnorm = 0.0; + for (size_t i = 0; i < ynew.size(); ++i) + { + double d = ynew[i] - m_yk[i]; + diffnorm += d*d; + } + diffnorm = std::sqrt(diffnorm); + + m_yk = ynew; + + if (diffnorm < m_tol) break; + } + + // copy result back to y (view) + y = m_yk; + } +}; diff --git a/include/CrankNicolson.hpp b/include/CrankNicolson.hpp new file mode 100644 index 000000000..d9ac5c568 --- /dev/null +++ b/include/CrankNicolson.hpp @@ -0,0 +1,23 @@ +#pragma once +#include "timestepper.hpp" +#include "function_algebra.hpp" +#include "newton.hpp" +class CrankNicolson : public TimeStepper { + std::shared_ptr eq; + std::shared_ptr tau; + std::shared_ptr yold, fold; + Vector<> ftmp; +public: + CrankNicolson(std::shared_ptr rhs) + : TimeStepper(rhs), tau(std::make_shared(0.0)), ftmp(rhs->dimF()) { + yold = std::make_shared(rhs->dimX()); + fold = std::make_shared(rhs->dimF()); + auto id = std::make_shared(rhs->dimX()); + eq = id - yold - 0.5*tau*(fold + rhs); + } + void doStep(double tau, VectorView y) override { + m_rhs->evaluate(y, ftmp); fold->set(ftmp); + yold->set(y); tau->set(tau); + NewtonSolver(eq, y); + } +}; diff --git a/include/ExplicitEuler.hpp b/include/ExplicitEuler.hpp new file mode 100644 index 000000000..326c3a2da --- /dev/null +++ b/include/ExplicitEuler.hpp @@ -0,0 +1,16 @@ +#pragma once +#include "timestepper.hpp" +#include + +// This class implements the standard y_new = y + tau * f(y) +class ExplicitEuler : public TimeStepper { +public: + ExplicitEuler(std::shared_ptr rhs) + : TimeStepper(rhs) {} + + void doStep(double tau, VectorView y) override { + Vector<> k1; + m_rhs->evaluate(y, k1); // Evaluate f(y) + y += tau * k1; // Update y + } +}; \ No newline at end of file diff --git a/include/ImplicitEuler.hpp b/include/ImplicitEuler.hpp new file mode 100644 index 000000000..2619ba532 --- /dev/null +++ b/include/ImplicitEuler.hpp @@ -0,0 +1,19 @@ +#pragma once +#include "timestepper.hpp" +#include "function_algebra.hpp" +#include "newton.hpp" +class ImplicitEuler : public TimeStepper { + std::shared_ptr eq; + std::shared_ptr tau; + std::shared_ptr yold; +public: + ImplicitEuler(std::shared_ptr rhs) + : TimeStepper(rhs), tau(std::make_shared(0.0)) { + yold = std::make_shared(rhs->dimX()); + auto id = std::make_shared(rhs->dimX()); + eq = id - yold - tau * rhs; + } + void doStep(double tau, VectorView y) override { + yold->set(y); tau->set(tau); NewtonSolver(eq, y); + } +}; diff --git a/include/ImprovedEuler.hpp b/include/ImprovedEuler.hpp new file mode 100644 index 000000000..50e3c2633 --- /dev/null +++ b/include/ImprovedEuler.hpp @@ -0,0 +1,14 @@ +#pragma once +#include "timestepper.hpp" +class ImprovedEuler : public TimeStepper { + Vector<> k1, k2, tmp; +public: + ImprovedEuler(std::shared_ptr rhs) + : TimeStepper(rhs), k1(rhs->dimF()), k2(rhs->dimF()), tmp(rhs->dimF()) {} + void doStep(double tau, VectorView y) override { + m_rhs->evaluate(y, k1); + tmp = y + tau * k1; + m_rhs->evaluate(tmp, k2); + y += tau * (0.5 * k1 + 0.5 * k2); + } +}; diff --git a/include/mass_spring.hpp b/include/mass_spring.hpp new file mode 100644 index 000000000..86607b05d --- /dev/null +++ b/include/mass_spring.hpp @@ -0,0 +1,29 @@ +// include/mass_spring.hpp +#pragma once +#include "nonlinear_function.hpp" // repo's interface + +class MassSpring : public NonlinearFunction +{ + double m_mass; + double m_stiffness; + +public: + MassSpring (double m, double k) + : m_mass(m), m_stiffness(k) {} + + size_t dimX() const override { return 2; } + size_t dimF() const override { return 2; } + + void evaluate (VectorView x, VectorView f) const override + { + f(0) = x(1); + f(1) = -m_stiffness/m_mass * x(0); + } + + void evaluateDeriv (VectorView x, MatrixView df) const override + { + df = 0.0; + df(0,1) = 1; + df(1,0) = -m_stiffness/m_mass; + } +}; diff --git a/include/plot_mass_spring.py b/include/plot_mass_spring.py new file mode 100644 index 000000000..36b3a1518 --- /dev/null +++ b/include/plot_mass_spring.py @@ -0,0 +1,47 @@ +# python/plot_mass_spring.py +import csv +import matplotlib.pyplot as plt +import numpy as np + +def read_csv(filename): + t, x, v = [], [], [] + with open(filename) as f: + reader = csv.DictReader(f) + for row in reader: + t.append(float(row['t'])) + x.append(float(row['x'])) + v.append(float(row['v'])) + return np.array(t), np.array(x), np.array(v) + +files = [ + ("mass_explicit.csv", "Explicit Euler"), + ("mass_improved.csv", "Improved Euler"), + ("mass_crank.csv", "Crank-Nicolson (Picard)"), +] + +plt.figure(figsize=(9,5)) +for fname, label in files: + t, x, v = read_csv(fname) + plt.plot(t, x, label=label) +plt.xlabel("t") +plt.ylabel("position x(t)") +plt.legend() +plt.title("Mass-Spring: position vs time") +plt.grid(True) +plt.tight_layout() +plt.savefig("mass_position_compare.png") +print("Wrote mass_position_compare.png") + +# phase plot +plt.figure(figsize=(6,6)) +for fname, label in files: + t, x, v = read_csv(fname) + plt.plot(x, v, label=label) +plt.xlabel("position x") +plt.ylabel("velocity v") +plt.legend() +plt.title("Mass-Spring: phase plot") +plt.grid(True) +plt.tight_layout() +plt.savefig("mass_phase_compare.png") +print("Wrote mass_phase_compare.png") diff --git a/include/timestepper.hpp b/include/timestepper.hpp new file mode 100644 index 000000000..d67a282e3 --- /dev/null +++ b/include/timestepper.hpp @@ -0,0 +1,132 @@ +// include/timestepper.hpp +#pragma once +#include +#include +#include +#include + +// forward declarations from repo's linear algebra +// Replace these with the repo's real Vector / Matrix types. +// Here I show pseudo-types to be adapted to the project's actual types. +#include "nonlinear_function.hpp" // assume this exists in repo (NonlinearFunction) + +// The repo uses Vector<> and VectorView<> types; adapt includes if necessary. + +class TimeStepper +{ +protected: + std::shared_ptr m_rhs; +public: + TimeStepper(std::shared_ptr rhs) : m_rhs(rhs) {} + virtual ~TimeStepper() = default; + virtual void doStep(double tau, VectorView y) = 0; +}; + +/// ExplicitEuler is likely already implemented in the repo; shown for reference +class ExplicitEuler : public TimeStepper +{ + Vector<> m_vecf; +public: + ExplicitEuler(std::shared_ptr rhs) + : TimeStepper(rhs), m_vecf(rhs->dimF()) {} + + void doStep(double tau, VectorView y) override + { + this->m_rhs->evaluate(y, m_vecf); + y += tau * m_vecf; + } +}; + +/// Improved Euler (Heun / explicit midpoint-like two-stage as defined in exercise) +/// \tilde y = y_n + tau/2 * f(y_n) +/// y_{n+1} = y_n + tau * f( \tilde y ) +class ImprovedEuler : public TimeStepper +{ + Vector<> m_vecf; // f(y) + Vector<> m_vecft; // f(tilde y) + Vector<> m_ytemp; // temporary vector for tilde y +public: + ImprovedEuler(std::shared_ptr rhs) + : TimeStepper(rhs), + m_vecf(rhs->dimF()), + m_vecft(rhs->dimF()), + m_ytemp(rhs->dimX()) {} + + void doStep(double tau, VectorView y) override + { + // evaluate f(y) + this->m_rhs->evaluate(y, m_vecf); + + // tilde y = y + tau/2 * f(y) + m_ytemp = y; // copy current y to temp + m_ytemp += (tau/2.0) * m_vecf; + + // evaluate f(tilde y) + this->m_rhs->evaluate(m_ytemp, m_vecft); + + // y_{n+1} = y_n + tau * f(tilde y) + y += tau * m_vecft; + } +}; + +/// CrankNicolson (semi-implicit): we implement a Picard (fixed-point) iteration: +/// y^{k+1} = y_old + 0.5*tau*( f(y_old) + f(y^k) ) +/// start from predictor (Improved Euler or Explicit Euler) +class CrankNicolson : public TimeStepper +{ + Vector<> m_fold; // f(y_old) + Vector<> m_fk; // f(y_k) + Vector<> m_yk; // current iterate y^k + int m_max_iter; + double m_tol; +public: + CrankNicolson(std::shared_ptr rhs, + int max_iter = 20, double tol = 1e-10) + : TimeStepper(rhs), + m_fold(rhs->dimF()), + m_fk(rhs->dimF()), + m_yk(rhs->dimX()), + m_max_iter(max_iter), + m_tol(tol) {} + + void doStep(double tau, VectorView y) override + { + // store old + Vector<> yold = y; // copy (Vector supports copy) + + // evaluate f(yold) + this->m_rhs->evaluate(yold, m_fold); + + // predictor: one ImprovedEuler step -> starting guess + // yk = yold + tau * f(yold) (explicit Euler predictor) + m_yk = yold; + m_yk += tau * m_fold; + + // Picard iteration (fixed-point) + for (int iter = 0; iter < m_max_iter; ++iter) + { + // evaluate f(y_k) + this->m_rhs->evaluate(m_yk, m_fk); + + // compute new iterate + Vector<> ynew = yold; + ynew += 0.5 * tau * (m_fold + m_fk); + + // check convergence (norm of difference) + double diffnorm = 0.0; + for (size_t i = 0; i < ynew.size(); ++i) + { + double d = ynew[i] - m_yk[i]; + diffnorm += d*d; + } + diffnorm = std::sqrt(diffnorm); + + m_yk = ynew; + + if (diffnorm < m_tol) break; + } + + // copy result back to y (view) + y = m_yk; + } +}; From 18d7b0e877aadec624940888c8fbb3a53a28bf8e Mon Sep 17 00:00:00 2001 From: Joachim Schoeberl Date: Thu, 27 Nov 2025 13:01:37 +0100 Subject: [PATCH 11/20] little polish --- mechsystem/CMakeLists.txt | 6 +----- mechsystem/mass_spring.ipynb | 8 ++++++++ 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/mechsystem/CMakeLists.txt b/mechsystem/CMakeLists.txt index 0c0ab842e..8d184b026 100644 --- a/mechsystem/CMakeLists.txt +++ b/mechsystem/CMakeLists.txt @@ -1,8 +1,4 @@ add_executable (test_mass_spring mass_spring.cpp) -# target_link_libraries (test_mass_spring PUBLIC ngbla) - - - find_package(Python 3.8 COMPONENTS Interpreter Development REQUIRED) @@ -14,4 +10,4 @@ list(APPEND CMAKE_PREFIX_PATH "${PYBIND11_DIR}") find_package(pybind11 CONFIG REQUIRED) pybind11_add_module(mass_spring bind_mass_spring.cpp) -# target_link_libraries (mass_spring PUBLIC ngbla) + diff --git a/mechsystem/mass_spring.ipynb b/mechsystem/mass_spring.ipynb index 6291a1517..3f73d877a 100644 --- a/mechsystem/mass_spring.ipynb +++ b/mechsystem/mass_spring.ipynb @@ -109,6 +109,14 @@ " springs.geometry = LineSegmentsGeometry(positions=springpos)\n", " sleep(0.01)" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cb795937", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { From 6a33c4ba13c391dc544229e6936548555b0de5ce Mon Sep 17 00:00:00 2001 From: Joachim Schoeberl Date: Thu, 27 Nov 2025 13:42:10 +0100 Subject: [PATCH 12/20] remove include ngs --- mechsystem/test_mass_spring.py | 1 - 1 file changed, 1 deletion(-) diff --git a/mechsystem/test_mass_spring.py b/mechsystem/test_mass_spring.py index 1704af0b7..c15b67c0a 100644 --- a/mechsystem/test_mass_spring.py +++ b/mechsystem/test_mass_spring.py @@ -2,7 +2,6 @@ sys.path.append('/Users/joachim/texjs/lva/IntroSC/ASC-ODE/build/mechsystem') from mass_spring import * -import ngsolve.bla mss = MassSpringSystem3d() From 17cb2d366a7b3ec284351dbbe4a1660fe4bfdf30 Mon Sep 17 00:00:00 2001 From: Joachim Schoeberl Date: Thu, 27 Nov 2025 13:48:20 +0100 Subject: [PATCH 13/20] add pypath --- mechsystem/mass_spring.ipynb | 1 + mechsystem/test_mass_spring.py | 1 + 2 files changed, 2 insertions(+) diff --git a/mechsystem/mass_spring.ipynb b/mechsystem/mass_spring.ipynb index 3f73d877a..eb9035b13 100644 --- a/mechsystem/mass_spring.ipynb +++ b/mechsystem/mass_spring.ipynb @@ -9,6 +9,7 @@ "source": [ "import sys\n", "sys.path.append('/Users/joachim/texjs/lva/IntroSC/ASC-ODE/build/mechsystem')\n", + "sys.path.append('../build/mechsystem')\n", "\n", "from mass_spring import *\n", "\n", diff --git a/mechsystem/test_mass_spring.py b/mechsystem/test_mass_spring.py index c15b67c0a..c29720c9d 100644 --- a/mechsystem/test_mass_spring.py +++ b/mechsystem/test_mass_spring.py @@ -1,5 +1,6 @@ import sys sys.path.append('/Users/joachim/texjs/lva/IntroSC/ASC-ODE/build/mechsystem') +sys.path.append('../build/mechsystem') from mass_spring import * From 5a73c3ee5d1214a79b7c79ade27fd745c719232e Mon Sep 17 00:00:00 2001 From: Farooq Mian Azan Date: Sat, 29 Nov 2025 11:13:14 +0000 Subject: [PATCH 14/20] Add explicit RK implementation + RK demo and plotting scripts for chapter 19 --- demos/demo_rk.cpp | 135 ++++++++++++++++++++++++++++++ include/plot_autodiff_legendre.py | 14 ++++ include/plot_rk_results.py | 21 +++++ src/explicit_rk.hpp | 50 +++++++++++ 4 files changed, 220 insertions(+) create mode 100644 demos/demo_rk.cpp create mode 100644 include/plot_autodiff_legendre.py create mode 100644 include/plot_rk_results.py create mode 100644 src/explicit_rk.hpp diff --git a/demos/demo_rk.cpp b/demos/demo_rk.cpp new file mode 100644 index 000000000..1e52ecc8b --- /dev/null +++ b/demos/demo_rk.cpp @@ -0,0 +1,135 @@ +// demos/demo_rk.cpp +#include +#include +#include +#include +#include +#include "src/explicit_rk.hpp" + +ExplicitRungeKutta make_explicit_euler() { + std::vector> a = {{0.0}}; + std::vector b = {1.0}; + std::vector c = {0.0}; + return ExplicitRungeKutta(a,b,c); +} +ExplicitRungeKutta make_rk2_midpoint() { + std::vector> a = {{0.0, 0.0}, + {0.5, 0.0}}; + std::vector b = {0.0, 1.0}; + std::vector c = {0.0, 0.5}; + return ExplicitRungeKutta(a,b,c); +} +ExplicitRungeKutta make_rk4_classic() { + std::vector> a = { + {0.0,0.0,0.0,0.0}, + {0.5,0.0,0.0,0.0}, + {0.0,0.5,0.0,0.0}, + {0.0,0.0,1.0,0.0} + }; + std::vector b = {1.0/6.0, 1.0/3.0, 1.0/3.0, 1.0/6.0}; + std::vector c = {0.0, 0.5, 0.5, 1.0}; + return ExplicitRungeKutta(a,b,c); +} + +void pendulum_rhs(double /*t*/, const std::vector& y, std::vector& out) { + const double g = 9.81, L = 1.0; + out[0] = y[1]; + out[1] = -(g/L) * std::sin(y[0]); +} + +int main() { + // pendulum compare + { + auto euler = make_explicit_euler(); + auto rk2 = make_rk2_midpoint(); + auto rk4 = make_rk4_classic(); + + double tend = 10.0; + int steps = 2000; + double tau = tend / double(steps); + + std::vector y0 = {0.5, 0.0}; + + std::ofstream fe("pendulum_euler.csv"); + std::ofstream f2("pendulum_rk2.csv"); + std::ofstream f4("pendulum_rk4.csv"); + fe << "t,alpha,alpha_dot\n"; + f2 << "t,alpha,alpha_dot\n"; + f4 << "t,alpha,alpha_dot\n"; + + std::vector ye = y0, y2 = y0, y4 = y0, ytmp(2); + + for (int i=0;i<=steps;++i) { + double t = i * tau; + fe << t << "," << ye[0] << "," << ye[1] << "\n"; + f2 << t << "," << y2[0] << "," << y2[1] << "\n"; + f4 << t << "," << y4[0] << "," << y4[1] << "\n"; + + if (i==steps) break; + + euler.step(pendulum_rhs, t, tau, ye, ytmp); ye.swap(ytmp); + rk2.step(pendulum_rhs, t, tau, y2, ytmp); y2.swap(ytmp); + rk4.step(pendulum_rhs, t, tau, y4, ytmp); y4.swap(ytmp); + } + fe.close(); f2.close(); f4.close(); + std::cout << "Wrote pendulum_{euler,rk2,rk4}.csv\n"; + } + + // linear test for error vs tau + { + double lambda = -50.0; + auto euler = make_explicit_euler(); + auto rk2 = make_rk2_midpoint(); + auto rk4 = make_rk4_classic(); + + std::vector taus = {0.02, 0.01, 0.005, 0.0025, 0.00125}; + std::ofstream f("linear_error_vs_tau.csv"); + f << "tau,err_euler,err_rk2,err_rk4\n"; + + double tend = 1.0; + for (double tau : taus) { + int steps = int(std::ceil(tend / tau)); + double real_tau = tend / double(steps); + auto exact = [&](double t, double y0){ return y0 * std::exp(lambda * t); }; + + double y0 = 1.0; + std::vector y(1), ytmp(1); + + // Euler + y = {y0}; + for (int i=0;i& yy,std::vector& out){ + out[0] = lambda * yy[0]; + }, i*real_tau, real_tau, y, ytmp); + y.swap(ytmp); + } + double err_euler = std::abs(y[0] - exact(tend,y0)); + + // RK2 + y = {y0}; + for (int i=0;i& yy,std::vector& out){ + out[0] = lambda * yy[0]; + }, i*real_tau, real_tau, y, ytmp); + y.swap(ytmp); + } + double err_rk2 = std::abs(y[0] - exact(tend,y0)); + + // RK4 + y = {y0}; + for (int i=0;i& yy,std::vector& out){ + out[0] = lambda * yy[0]; + }, i*real_tau, real_tau, y, ytmp); + y.swap(ytmp); + } + double err_rk4 = std::abs(y[0] - exact(tend,y0)); + + f << real_tau << "," << err_euler << "," << err_rk2 << "," << err_rk4 << "\n"; + } + f.close(); + std::cout << "Wrote linear_error_vs_tau.csv\n"; + } + + return 0; +} diff --git a/include/plot_autodiff_legendre.py b/include/plot_autodiff_legendre.py new file mode 100644 index 000000000..2f0db5a6a --- /dev/null +++ b/include/plot_autodiff_legendre.py @@ -0,0 +1,14 @@ +# include/plot_autodiff_legendre.py +import numpy as np +import matplotlib.pyplot as plt +data = np.genfromtxt("legendre.csv", delimiter=',', names=True) +x = data['x'] +plt.figure(figsize=(9,6)) +for k in range(6): + plt.plot(x, data[f'P{k}'], label=f'P{k}') +plt.legend(); plt.xlabel('x'); plt.title('P0..P5'); plt.grid(True); plt.savefig('legendre_Ps.png') +plt.figure(figsize=(9,6)) +for k in range(6): + plt.plot(x, data[f'dP{k}'], label=f'dP{k}') +plt.legend(); plt.xlabel('x'); plt.title('dP0..dP5'); plt.grid(True); plt.savefig('legendre_dPs.png') +print("Wrote legendre_Ps.png and legendre_dPs.png") diff --git a/include/plot_rk_results.py b/include/plot_rk_results.py new file mode 100644 index 000000000..0df494825 --- /dev/null +++ b/include/plot_rk_results.py @@ -0,0 +1,21 @@ +# include/plot_rk_results.py +import numpy as np +import matplotlib.pyplot as plt +def read(fname): return np.genfromtxt(fname, delimiter=',', names=True) +fe = read("pendulum_euler.csv") +f2 = read("pendulum_rk2.csv") +f4 = read("pendulum_rk4.csv") +plt.figure(figsize=(10,5)) +plt.plot(fe['t'], fe['alpha'], label='Euler') +plt.plot(f2['t'], f2['alpha'], label='RK2') +plt.plot(f4['t'], f4['alpha'], label='RK4') +plt.legend(); plt.xlabel('t'); plt.title('Pendulum alpha(t)'); plt.grid(True); plt.savefig('pendulum_alpha_compare.png') +plt.figure(figsize=(6,6)) +plt.plot(fe['alpha'], fe['alpha_dot'], label='Euler') +plt.plot(f2['alpha'], f2['alpha_dot'], label='RK2') +plt.plot(f4['alpha'], f4['alpha_dot'], label='RK4') +plt.legend(); plt.xlabel('alpha'); plt.ylabel('alpha_dot'); plt.title('Pendulum phase'); plt.grid(True); plt.savefig('pendulum_phase_compare.png') +print("Wrote pendulum plots") +# error vs tau +le = read("linear_error_vs_tau.csv") +taus = le['tau']; plt.figure(); plt.loglog(taus, le['err_euler'], 'o-', label='Euler'); plt.loglog(taus, le['err_rk2'], 's-', label='RK2'); plt.loglog(taus, le['err_rk4'], '^-', label='RK4'); plt.legend(); plt.xlabel('tau'); plt.ylabel('error'); plt.grid(True); plt.savefig('linear_error_vs_tau.png'); print("Wrote linear_error_vs_tau.png") diff --git a/src/explicit_rk.hpp b/src/explicit_rk.hpp new file mode 100644 index 000000000..4ff25ede7 --- /dev/null +++ b/src/explicit_rk.hpp @@ -0,0 +1,50 @@ +// src/explicit_rk.hpp +#pragma once +#include +#include +#include +#include + +// An explicit Runge-Kutta integrator for autonomous ODE y' = f(t,y) or f(y). +// f: (double t, const std::vector& y, std::vector& out) +class ExplicitRungeKutta { +public: + ExplicitRungeKutta(const std::vector>& a_, + const std::vector& b_, + const std::vector& c_) + : a(a_), b(b_), c(c_), s((int)b_.size()) { + assert((int)c_.size() == s); + assert((int)a.size() == s); + } + + void step(const std::function&,std::vector&)>& f, + double t, double tau, + const std::vector& y, std::vector& out) const + { + int n = (int)y.size(); + out.assign(n, 0.0); + std::vector> k(s, std::vector(n, 0.0)); + std::vector ytemp(n,0.0); + for (int j=0;j> a; + std::vector b; + std::vector c; + int s; +}; From 68b66b252e47e9b4634d347ddeb3bf1e0e25365a Mon Sep 17 00:00:00 2001 From: Farooq Mian Azan Date: Sat, 29 Nov 2025 11:13:14 +0000 Subject: [PATCH 15/20] Add explicit RK implementation + RK demo and plotting scripts for chapter 19 --- demos/demo_rk.cpp | 135 ++++++++++++++++++++++++++++++ include/plot_autodiff_legendre.py | 14 ++++ include/plot_rk_results.py | 21 +++++ src/explicit_rk.hpp | 50 +++++++++++ 4 files changed, 220 insertions(+) create mode 100644 demos/demo_rk.cpp create mode 100644 include/plot_autodiff_legendre.py create mode 100644 include/plot_rk_results.py create mode 100644 src/explicit_rk.hpp diff --git a/demos/demo_rk.cpp b/demos/demo_rk.cpp new file mode 100644 index 000000000..1e52ecc8b --- /dev/null +++ b/demos/demo_rk.cpp @@ -0,0 +1,135 @@ +// demos/demo_rk.cpp +#include +#include +#include +#include +#include +#include "src/explicit_rk.hpp" + +ExplicitRungeKutta make_explicit_euler() { + std::vector> a = {{0.0}}; + std::vector b = {1.0}; + std::vector c = {0.0}; + return ExplicitRungeKutta(a,b,c); +} +ExplicitRungeKutta make_rk2_midpoint() { + std::vector> a = {{0.0, 0.0}, + {0.5, 0.0}}; + std::vector b = {0.0, 1.0}; + std::vector c = {0.0, 0.5}; + return ExplicitRungeKutta(a,b,c); +} +ExplicitRungeKutta make_rk4_classic() { + std::vector> a = { + {0.0,0.0,0.0,0.0}, + {0.5,0.0,0.0,0.0}, + {0.0,0.5,0.0,0.0}, + {0.0,0.0,1.0,0.0} + }; + std::vector b = {1.0/6.0, 1.0/3.0, 1.0/3.0, 1.0/6.0}; + std::vector c = {0.0, 0.5, 0.5, 1.0}; + return ExplicitRungeKutta(a,b,c); +} + +void pendulum_rhs(double /*t*/, const std::vector& y, std::vector& out) { + const double g = 9.81, L = 1.0; + out[0] = y[1]; + out[1] = -(g/L) * std::sin(y[0]); +} + +int main() { + // pendulum compare + { + auto euler = make_explicit_euler(); + auto rk2 = make_rk2_midpoint(); + auto rk4 = make_rk4_classic(); + + double tend = 10.0; + int steps = 2000; + double tau = tend / double(steps); + + std::vector y0 = {0.5, 0.0}; + + std::ofstream fe("pendulum_euler.csv"); + std::ofstream f2("pendulum_rk2.csv"); + std::ofstream f4("pendulum_rk4.csv"); + fe << "t,alpha,alpha_dot\n"; + f2 << "t,alpha,alpha_dot\n"; + f4 << "t,alpha,alpha_dot\n"; + + std::vector ye = y0, y2 = y0, y4 = y0, ytmp(2); + + for (int i=0;i<=steps;++i) { + double t = i * tau; + fe << t << "," << ye[0] << "," << ye[1] << "\n"; + f2 << t << "," << y2[0] << "," << y2[1] << "\n"; + f4 << t << "," << y4[0] << "," << y4[1] << "\n"; + + if (i==steps) break; + + euler.step(pendulum_rhs, t, tau, ye, ytmp); ye.swap(ytmp); + rk2.step(pendulum_rhs, t, tau, y2, ytmp); y2.swap(ytmp); + rk4.step(pendulum_rhs, t, tau, y4, ytmp); y4.swap(ytmp); + } + fe.close(); f2.close(); f4.close(); + std::cout << "Wrote pendulum_{euler,rk2,rk4}.csv\n"; + } + + // linear test for error vs tau + { + double lambda = -50.0; + auto euler = make_explicit_euler(); + auto rk2 = make_rk2_midpoint(); + auto rk4 = make_rk4_classic(); + + std::vector taus = {0.02, 0.01, 0.005, 0.0025, 0.00125}; + std::ofstream f("linear_error_vs_tau.csv"); + f << "tau,err_euler,err_rk2,err_rk4\n"; + + double tend = 1.0; + for (double tau : taus) { + int steps = int(std::ceil(tend / tau)); + double real_tau = tend / double(steps); + auto exact = [&](double t, double y0){ return y0 * std::exp(lambda * t); }; + + double y0 = 1.0; + std::vector y(1), ytmp(1); + + // Euler + y = {y0}; + for (int i=0;i& yy,std::vector& out){ + out[0] = lambda * yy[0]; + }, i*real_tau, real_tau, y, ytmp); + y.swap(ytmp); + } + double err_euler = std::abs(y[0] - exact(tend,y0)); + + // RK2 + y = {y0}; + for (int i=0;i& yy,std::vector& out){ + out[0] = lambda * yy[0]; + }, i*real_tau, real_tau, y, ytmp); + y.swap(ytmp); + } + double err_rk2 = std::abs(y[0] - exact(tend,y0)); + + // RK4 + y = {y0}; + for (int i=0;i& yy,std::vector& out){ + out[0] = lambda * yy[0]; + }, i*real_tau, real_tau, y, ytmp); + y.swap(ytmp); + } + double err_rk4 = std::abs(y[0] - exact(tend,y0)); + + f << real_tau << "," << err_euler << "," << err_rk2 << "," << err_rk4 << "\n"; + } + f.close(); + std::cout << "Wrote linear_error_vs_tau.csv\n"; + } + + return 0; +} diff --git a/include/plot_autodiff_legendre.py b/include/plot_autodiff_legendre.py new file mode 100644 index 000000000..2f0db5a6a --- /dev/null +++ b/include/plot_autodiff_legendre.py @@ -0,0 +1,14 @@ +# include/plot_autodiff_legendre.py +import numpy as np +import matplotlib.pyplot as plt +data = np.genfromtxt("legendre.csv", delimiter=',', names=True) +x = data['x'] +plt.figure(figsize=(9,6)) +for k in range(6): + plt.plot(x, data[f'P{k}'], label=f'P{k}') +plt.legend(); plt.xlabel('x'); plt.title('P0..P5'); plt.grid(True); plt.savefig('legendre_Ps.png') +plt.figure(figsize=(9,6)) +for k in range(6): + plt.plot(x, data[f'dP{k}'], label=f'dP{k}') +plt.legend(); plt.xlabel('x'); plt.title('dP0..dP5'); plt.grid(True); plt.savefig('legendre_dPs.png') +print("Wrote legendre_Ps.png and legendre_dPs.png") diff --git a/include/plot_rk_results.py b/include/plot_rk_results.py new file mode 100644 index 000000000..0df494825 --- /dev/null +++ b/include/plot_rk_results.py @@ -0,0 +1,21 @@ +# include/plot_rk_results.py +import numpy as np +import matplotlib.pyplot as plt +def read(fname): return np.genfromtxt(fname, delimiter=',', names=True) +fe = read("pendulum_euler.csv") +f2 = read("pendulum_rk2.csv") +f4 = read("pendulum_rk4.csv") +plt.figure(figsize=(10,5)) +plt.plot(fe['t'], fe['alpha'], label='Euler') +plt.plot(f2['t'], f2['alpha'], label='RK2') +plt.plot(f4['t'], f4['alpha'], label='RK4') +plt.legend(); plt.xlabel('t'); plt.title('Pendulum alpha(t)'); plt.grid(True); plt.savefig('pendulum_alpha_compare.png') +plt.figure(figsize=(6,6)) +plt.plot(fe['alpha'], fe['alpha_dot'], label='Euler') +plt.plot(f2['alpha'], f2['alpha_dot'], label='RK2') +plt.plot(f4['alpha'], f4['alpha_dot'], label='RK4') +plt.legend(); plt.xlabel('alpha'); plt.ylabel('alpha_dot'); plt.title('Pendulum phase'); plt.grid(True); plt.savefig('pendulum_phase_compare.png') +print("Wrote pendulum plots") +# error vs tau +le = read("linear_error_vs_tau.csv") +taus = le['tau']; plt.figure(); plt.loglog(taus, le['err_euler'], 'o-', label='Euler'); plt.loglog(taus, le['err_rk2'], 's-', label='RK2'); plt.loglog(taus, le['err_rk4'], '^-', label='RK4'); plt.legend(); plt.xlabel('tau'); plt.ylabel('error'); plt.grid(True); plt.savefig('linear_error_vs_tau.png'); print("Wrote linear_error_vs_tau.png") diff --git a/src/explicit_rk.hpp b/src/explicit_rk.hpp new file mode 100644 index 000000000..4ff25ede7 --- /dev/null +++ b/src/explicit_rk.hpp @@ -0,0 +1,50 @@ +// src/explicit_rk.hpp +#pragma once +#include +#include +#include +#include + +// An explicit Runge-Kutta integrator for autonomous ODE y' = f(t,y) or f(y). +// f: (double t, const std::vector& y, std::vector& out) +class ExplicitRungeKutta { +public: + ExplicitRungeKutta(const std::vector>& a_, + const std::vector& b_, + const std::vector& c_) + : a(a_), b(b_), c(c_), s((int)b_.size()) { + assert((int)c_.size() == s); + assert((int)a.size() == s); + } + + void step(const std::function&,std::vector&)>& f, + double t, double tau, + const std::vector& y, std::vector& out) const + { + int n = (int)y.size(); + out.assign(n, 0.0); + std::vector> k(s, std::vector(n, 0.0)); + std::vector ytemp(n,0.0); + for (int j=0;j> a; + std::vector b; + std::vector c; + int s; +}; From 7b5f7c8b325e3ba3dee7eb810568c3c6335d996f Mon Sep 17 00:00:00 2001 From: Farooq Mian Azan Date: Sat, 29 Nov 2025 16:20:34 +0000 Subject: [PATCH 16/20] Final local edits before merging submission-18-19 --- .ipynb_checkpoints/legendre_Ps-checkpoint.png | Bin 0 -> 89912 bytes .../legendre_dPs-checkpoint.png | Bin 0 -> 55962 bytes .../linear_error_vs_tau-checkpoint.png | Bin 0 -> 25035 bytes .../pendulum_phase_compare-checkpoint.png | Bin 0 -> 94841 bytes .../demo_autodiff-checkpoint.cpp | 85 + .../.ipynb_checkpoints/demo_rk-checkpoint.cpp | 135 + .../test_ode-checkpoint.cpp | 60 + demos/demo_autodiff.cpp | 105 +- demos/demo_autodiff.cpp.backup | 91 + .../RCNetwork-checkpoint.hpp | 53 + .../plot_autodiff_legendre-checkpoint.py | 14 + .../.ipynb_checkpoints/plot_rc-checkpoint.py | 30 + .../plot_rk_results-checkpoint.py | 21 + include/RCNetwork.hpp | 53 + include/plot_rc.py | 30 + legendre.csv | 202 + legendre_Ps.png | Bin 0 -> 90127 bytes legendre_dPs.png | Bin 0 -> 56085 bytes linear_error_vs_tau.csv | 6 + linear_error_vs_tau.png | Bin 0 -> 25035 bytes local_pybind11/bin/pybind11-config | 7 + .../pybind11-3.0.1.dist-info/INSTALLER | 1 + .../pybind11-3.0.1.dist-info/METADATA | 252 ++ .../pybind11-3.0.1.dist-info/RECORD | 84 + .../pybind11-3.0.1.dist-info/REQUESTED | 0 local_pybind11/pybind11-3.0.1.dist-info/WHEEL | 5 + .../pybind11-3.0.1.dist-info/entry_points.txt | 9 + .../pybind11-3.0.1.dist-info/licenses/LICENSE | 29 + local_pybind11/pybind11/__init__.py | 19 + local_pybind11/pybind11/__main__.py | 97 + .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 643 bytes .../__pycache__/__main__.cpython-313.pyc | Bin 0 -> 3941 bytes .../__pycache__/_version.cpython-313.pyc | Bin 0 -> 779 bytes .../__pycache__/commands.cpython-313.pyc | Bin 0 -> 2200 bytes .../__pycache__/setup_helpers.cpython-313.pyc | Bin 0 -> 21400 bytes local_pybind11/pybind11/_version.py | 12 + local_pybind11/pybind11/commands.py | 39 + .../pybind11/include/pybind11/attr.h | 722 ++++ .../pybind11/include/pybind11/buffer_info.h | 208 + .../pybind11/include/pybind11/cast.h | 2361 +++++++++++ .../pybind11/include/pybind11/chrono.h | 228 ++ .../pybind11/include/pybind11/common.h | 2 + .../pybind11/include/pybind11/complex.h | 74 + .../include/pybind11/conduit/README.txt | 15 + .../pybind11/conduit/pybind11_conduit_v1.h | 116 + .../conduit/pybind11_platform_abi_id.h | 87 + .../pybind11/conduit/wrap_include_python_h.h | 72 + .../include/pybind11/critical_section.h | 56 + .../pybind11/include/pybind11/detail/class.h | 823 ++++ .../pybind11/include/pybind11/detail/common.h | 1348 ++++++ .../include/pybind11/detail/cpp_conduit.h | 75 + .../pybind11/include/pybind11/detail/descr.h | 226 + .../detail/dynamic_raw_ptr_cast_if_possible.h | 39 + .../pybind11/detail/exception_translation.h | 71 + .../detail/function_record_pyobject.h | 191 + .../pybind11/include/pybind11/detail/init.h | 538 +++ .../include/pybind11/detail/internals.h | 799 ++++ .../pybind11/detail/native_enum_data.h | 209 + .../detail/pybind11_namespace_macros.h | 82 + .../pybind11/detail/struct_smart_holder.h | 378 ++ .../pybind11/detail/type_caster_base.h | 1591 +++++++ .../pybind11/include/pybind11/detail/typeid.h | 65 + .../pybind11/detail/using_smart_holder.h | 22 + .../pybind11/detail/value_and_holder.h | 90 + .../pybind11/include/pybind11/eigen.h | 12 + .../pybind11/include/pybind11/eigen/common.h | 9 + .../pybind11/include/pybind11/eigen/matrix.h | 723 ++++ .../pybind11/include/pybind11/eigen/tensor.h | 521 +++ .../pybind11/include/pybind11/embed.h | 320 ++ .../pybind11/include/pybind11/eval.h | 161 + .../pybind11/include/pybind11/functional.h | 147 + .../pybind11/include/pybind11/gil.h | 199 + .../include/pybind11/gil_safe_call_once.h | 102 + .../pybind11/include/pybind11/gil_simple.h | 37 + .../pybind11/include/pybind11/iostream.h | 265 ++ .../pybind11/include/pybind11/native_enum.h | 67 + .../pybind11/include/pybind11/numpy.h | 2312 +++++++++++ .../pybind11/include/pybind11/operators.h | 202 + .../pybind11/include/pybind11/options.h | 92 + .../pybind11/include/pybind11/pybind11.h | 3645 +++++++++++++++++ .../pybind11/include/pybind11/pytypes.h | 2680 ++++++++++++ .../pybind11/include/pybind11/stl.h | 666 +++ .../include/pybind11/stl/filesystem.h | 114 + .../pybind11/include/pybind11/stl_bind.h | 858 ++++ .../include/pybind11/subinterpreter.h | 299 ++ .../pybind11/trampoline_self_life_support.h | 65 + .../pybind11/type_caster_pyobject_ptr.h | 61 + .../pybind11/include/pybind11/typing.h | 298 ++ .../pybind11/include/pybind11/warnings.h | 75 + local_pybind11/pybind11/py.typed | 0 local_pybind11/pybind11/setup_helpers.py | 500 +++ local_pybind11/pybind11/share/__init__.py | 0 .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 159 bytes .../cmake/pybind11/FindPythonLibsNew.cmake | 320 ++ .../share/cmake/pybind11/pybind11Common.cmake | 447 ++ .../share/cmake/pybind11/pybind11Config.cmake | 264 ++ .../pybind11/pybind11ConfigVersion.cmake | 32 + .../pybind11GuessPythonExtSuffix.cmake | 86 + .../cmake/pybind11/pybind11NewTools.cmake | 353 ++ .../cmake/pybind11/pybind11Targets.cmake | 107 + .../share/cmake/pybind11/pybind11Tools.cmake | 217 + .../pybind11/share/pkgconfig/__init__.py | 0 .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 169 bytes .../pybind11/share/pkgconfig/pybind11.pc | 7 + pendulum_alpha_compare.png | Bin 0 -> 71004 bytes pendulum_euler.csv | 2002 +++++++++ pendulum_phase_compare.png | Bin 0 -> 94671 bytes pendulum_rk2.csv | 2002 +++++++++ pendulum_rk4.csv | 2002 +++++++++ .../explicit_rk-checkpoint.hpp | 50 + 110 files changed, 34212 insertions(+), 34 deletions(-) create mode 100644 .ipynb_checkpoints/legendre_Ps-checkpoint.png create mode 100644 .ipynb_checkpoints/legendre_dPs-checkpoint.png create mode 100644 .ipynb_checkpoints/linear_error_vs_tau-checkpoint.png create mode 100644 .ipynb_checkpoints/pendulum_phase_compare-checkpoint.png create mode 100644 demos/.ipynb_checkpoints/demo_autodiff-checkpoint.cpp create mode 100644 demos/.ipynb_checkpoints/demo_rk-checkpoint.cpp create mode 100644 demos/.ipynb_checkpoints/test_ode-checkpoint.cpp create mode 100644 demos/demo_autodiff.cpp.backup create mode 100644 include/.ipynb_checkpoints/RCNetwork-checkpoint.hpp create mode 100644 include/.ipynb_checkpoints/plot_autodiff_legendre-checkpoint.py create mode 100644 include/.ipynb_checkpoints/plot_rc-checkpoint.py create mode 100644 include/.ipynb_checkpoints/plot_rk_results-checkpoint.py create mode 100644 include/RCNetwork.hpp create mode 100644 include/plot_rc.py create mode 100644 legendre.csv create mode 100644 legendre_Ps.png create mode 100644 legendre_dPs.png create mode 100644 linear_error_vs_tau.csv create mode 100644 linear_error_vs_tau.png create mode 100755 local_pybind11/bin/pybind11-config create mode 100644 local_pybind11/pybind11-3.0.1.dist-info/INSTALLER create mode 100644 local_pybind11/pybind11-3.0.1.dist-info/METADATA create mode 100644 local_pybind11/pybind11-3.0.1.dist-info/RECORD create mode 100644 local_pybind11/pybind11-3.0.1.dist-info/REQUESTED create mode 100644 local_pybind11/pybind11-3.0.1.dist-info/WHEEL create mode 100644 local_pybind11/pybind11-3.0.1.dist-info/entry_points.txt create mode 100644 local_pybind11/pybind11-3.0.1.dist-info/licenses/LICENSE create mode 100644 local_pybind11/pybind11/__init__.py create mode 100644 local_pybind11/pybind11/__main__.py create mode 100644 local_pybind11/pybind11/__pycache__/__init__.cpython-313.pyc create mode 100644 local_pybind11/pybind11/__pycache__/__main__.cpython-313.pyc create mode 100644 local_pybind11/pybind11/__pycache__/_version.cpython-313.pyc create mode 100644 local_pybind11/pybind11/__pycache__/commands.cpython-313.pyc create mode 100644 local_pybind11/pybind11/__pycache__/setup_helpers.cpython-313.pyc create mode 100644 local_pybind11/pybind11/_version.py create mode 100644 local_pybind11/pybind11/commands.py create mode 100644 local_pybind11/pybind11/include/pybind11/attr.h create mode 100644 local_pybind11/pybind11/include/pybind11/buffer_info.h create mode 100644 local_pybind11/pybind11/include/pybind11/cast.h create mode 100644 local_pybind11/pybind11/include/pybind11/chrono.h create mode 100644 local_pybind11/pybind11/include/pybind11/common.h create mode 100644 local_pybind11/pybind11/include/pybind11/complex.h create mode 100644 local_pybind11/pybind11/include/pybind11/conduit/README.txt create mode 100644 local_pybind11/pybind11/include/pybind11/conduit/pybind11_conduit_v1.h create mode 100644 local_pybind11/pybind11/include/pybind11/conduit/pybind11_platform_abi_id.h create mode 100644 local_pybind11/pybind11/include/pybind11/conduit/wrap_include_python_h.h create mode 100644 local_pybind11/pybind11/include/pybind11/critical_section.h create mode 100644 local_pybind11/pybind11/include/pybind11/detail/class.h create mode 100644 local_pybind11/pybind11/include/pybind11/detail/common.h create mode 100644 local_pybind11/pybind11/include/pybind11/detail/cpp_conduit.h create mode 100644 local_pybind11/pybind11/include/pybind11/detail/descr.h create mode 100644 local_pybind11/pybind11/include/pybind11/detail/dynamic_raw_ptr_cast_if_possible.h create mode 100644 local_pybind11/pybind11/include/pybind11/detail/exception_translation.h create mode 100644 local_pybind11/pybind11/include/pybind11/detail/function_record_pyobject.h create mode 100644 local_pybind11/pybind11/include/pybind11/detail/init.h create mode 100644 local_pybind11/pybind11/include/pybind11/detail/internals.h create mode 100644 local_pybind11/pybind11/include/pybind11/detail/native_enum_data.h create mode 100644 local_pybind11/pybind11/include/pybind11/detail/pybind11_namespace_macros.h create mode 100644 local_pybind11/pybind11/include/pybind11/detail/struct_smart_holder.h create mode 100644 local_pybind11/pybind11/include/pybind11/detail/type_caster_base.h create mode 100644 local_pybind11/pybind11/include/pybind11/detail/typeid.h create mode 100644 local_pybind11/pybind11/include/pybind11/detail/using_smart_holder.h create mode 100644 local_pybind11/pybind11/include/pybind11/detail/value_and_holder.h create mode 100644 local_pybind11/pybind11/include/pybind11/eigen.h create mode 100644 local_pybind11/pybind11/include/pybind11/eigen/common.h create mode 100644 local_pybind11/pybind11/include/pybind11/eigen/matrix.h create mode 100644 local_pybind11/pybind11/include/pybind11/eigen/tensor.h create mode 100644 local_pybind11/pybind11/include/pybind11/embed.h create mode 100644 local_pybind11/pybind11/include/pybind11/eval.h create mode 100644 local_pybind11/pybind11/include/pybind11/functional.h create mode 100644 local_pybind11/pybind11/include/pybind11/gil.h create mode 100644 local_pybind11/pybind11/include/pybind11/gil_safe_call_once.h create mode 100644 local_pybind11/pybind11/include/pybind11/gil_simple.h create mode 100644 local_pybind11/pybind11/include/pybind11/iostream.h create mode 100644 local_pybind11/pybind11/include/pybind11/native_enum.h create mode 100644 local_pybind11/pybind11/include/pybind11/numpy.h create mode 100644 local_pybind11/pybind11/include/pybind11/operators.h create mode 100644 local_pybind11/pybind11/include/pybind11/options.h create mode 100644 local_pybind11/pybind11/include/pybind11/pybind11.h create mode 100644 local_pybind11/pybind11/include/pybind11/pytypes.h create mode 100644 local_pybind11/pybind11/include/pybind11/stl.h create mode 100644 local_pybind11/pybind11/include/pybind11/stl/filesystem.h create mode 100644 local_pybind11/pybind11/include/pybind11/stl_bind.h create mode 100644 local_pybind11/pybind11/include/pybind11/subinterpreter.h create mode 100644 local_pybind11/pybind11/include/pybind11/trampoline_self_life_support.h create mode 100644 local_pybind11/pybind11/include/pybind11/type_caster_pyobject_ptr.h create mode 100644 local_pybind11/pybind11/include/pybind11/typing.h create mode 100644 local_pybind11/pybind11/include/pybind11/warnings.h create mode 100644 local_pybind11/pybind11/py.typed create mode 100644 local_pybind11/pybind11/setup_helpers.py create mode 100644 local_pybind11/pybind11/share/__init__.py create mode 100644 local_pybind11/pybind11/share/__pycache__/__init__.cpython-313.pyc create mode 100644 local_pybind11/pybind11/share/cmake/pybind11/FindPythonLibsNew.cmake create mode 100644 local_pybind11/pybind11/share/cmake/pybind11/pybind11Common.cmake create mode 100644 local_pybind11/pybind11/share/cmake/pybind11/pybind11Config.cmake create mode 100644 local_pybind11/pybind11/share/cmake/pybind11/pybind11ConfigVersion.cmake create mode 100644 local_pybind11/pybind11/share/cmake/pybind11/pybind11GuessPythonExtSuffix.cmake create mode 100644 local_pybind11/pybind11/share/cmake/pybind11/pybind11NewTools.cmake create mode 100644 local_pybind11/pybind11/share/cmake/pybind11/pybind11Targets.cmake create mode 100644 local_pybind11/pybind11/share/cmake/pybind11/pybind11Tools.cmake create mode 100644 local_pybind11/pybind11/share/pkgconfig/__init__.py create mode 100644 local_pybind11/pybind11/share/pkgconfig/__pycache__/__init__.cpython-313.pyc create mode 100644 local_pybind11/pybind11/share/pkgconfig/pybind11.pc create mode 100644 pendulum_alpha_compare.png create mode 100644 pendulum_euler.csv create mode 100644 pendulum_phase_compare.png create mode 100644 pendulum_rk2.csv create mode 100644 pendulum_rk4.csv create mode 100644 src/.ipynb_checkpoints/explicit_rk-checkpoint.hpp diff --git a/.ipynb_checkpoints/legendre_Ps-checkpoint.png b/.ipynb_checkpoints/legendre_Ps-checkpoint.png new file mode 100644 index 0000000000000000000000000000000000000000..26c4d69b5278ad677d198abd9e13a6f32204ae04 GIT binary patch literal 89912 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≫E8 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 B3Hbm3 literal 0 HcmV?d00001 diff --git a/.ipynb_checkpoints/pendulum_phase_compare-checkpoint.png b/.ipynb_checkpoints/pendulum_phase_compare-checkpoint.png new file mode 100644 index 0000000000000000000000000000000000000000..d3e2842d4f8e0b0877c7042c7adb6489a4d45f26 GIT binary patch literal 94841 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

nw*bC`08ObtMf;YkD-6IkR7Rtn-6~ca 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

|3LPI^e2RzqsZz%13&? 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 +#include +#include +#include +#include + +// ---------- Legendre polynomials P0..Pn ---------- +template +void LegendrePolynomials(int n, T x, std::vector& P) { + if (n < 0) { P.clear(); return; } + P.resize(n+1); + P[0] = T(1); + if (n == 0) return; + P[1] = x; + for (int k=2;k<=n;++k) { + P[k] = ((T(2*k-1)*x*P[k-1]) - T(k-1)*P[k-2]) / T(k); + } +} + +// numeric derivative using central difference +double derivative(std::function f, double x, double h=1e-6) { + return (f(x+h) - f(x-h)) / (2*h); +} + +// write Legendre and derivative to CSV +int main_legendre() { + const int nmax = 5; + std::ofstream f("legendre.csv"); + f << "x"; + for(int k=0;k<=nmax;++k) f << ",P" << k << ",dP" << k; + f << "\n"; + + const int samples = 201; + for (int i=0;i P; + LegendrePolynomials(nmax, x, P); + + f << x; + for(int k=0;k<=nmax;++k) { + // numeric derivative + auto fk = [k](double xx) { std::vector Pk; LegendrePolynomials(5, xx, Pk); return Pk[k]; }; + double dPk = derivative(fk, x); + + f << "," << P[k] << "," << dPk; + } + f << "\n"; + } + f.close(); + std::cout << "Wrote legendre.csv (P0..P5 and derivatives)\n"; + return 0; +} + +// ---------- Pendulum test ---------- +int main_pendulum() { + const double g = 9.81; + const double L = 1.0; + double alpha = 0.5; // rad + double alpha_dot = 0.0; // rad/s + + // numeric evaluation of derivatives + auto f0 = [](double alpha, double alpha_dot) { return alpha_dot; }; + auto f1 = [g,L](double alpha, double alpha_dot) { return - (g/L) * sin(alpha); }; + + // Jacobian using central difference + double h = 1e-6; + double J00 = (f0(alpha+h, alpha_dot) - f0(alpha-h, alpha_dot)) / (2*h); + double J01 = (f0(alpha, alpha_dot+h) - f0(alpha, alpha_dot-h)) / (2*h); + double J10 = (f1(alpha+h, alpha_dot) - f1(alpha-h, alpha_dot)) / (2*h); + double J11 = (f1(alpha, alpha_dot+h) - f1(alpha, alpha_dot-h)) / (2*h); + + std::cout << "Pendulum evaluation at alpha=" << alpha << ", alpha_dot=" << alpha_dot << "\n"; + std::cout << "f0 = " << f0(alpha, alpha_dot) << ", f1 = " << f1(alpha, alpha_dot) << "\n"; + std::cout << "Jacobian (df_i / dx_j):\n"; + std::cout << "[" << J00 << " , " << J01 << "]\n"; + std::cout << "[" << J10 << " , " << J11 << "]\n"; + return 0; +} + +int main() { + main_legendre(); + main_pendulum(); + return 0; +} diff --git a/demos/.ipynb_checkpoints/demo_rk-checkpoint.cpp b/demos/.ipynb_checkpoints/demo_rk-checkpoint.cpp new file mode 100644 index 000000000..1e52ecc8b --- /dev/null +++ b/demos/.ipynb_checkpoints/demo_rk-checkpoint.cpp @@ -0,0 +1,135 @@ +// demos/demo_rk.cpp +#include +#include +#include +#include +#include +#include "src/explicit_rk.hpp" + +ExplicitRungeKutta make_explicit_euler() { + std::vector> a = {{0.0}}; + std::vector b = {1.0}; + std::vector c = {0.0}; + return ExplicitRungeKutta(a,b,c); +} +ExplicitRungeKutta make_rk2_midpoint() { + std::vector> a = {{0.0, 0.0}, + {0.5, 0.0}}; + std::vector b = {0.0, 1.0}; + std::vector c = {0.0, 0.5}; + return ExplicitRungeKutta(a,b,c); +} +ExplicitRungeKutta make_rk4_classic() { + std::vector> a = { + {0.0,0.0,0.0,0.0}, + {0.5,0.0,0.0,0.0}, + {0.0,0.5,0.0,0.0}, + {0.0,0.0,1.0,0.0} + }; + std::vector b = {1.0/6.0, 1.0/3.0, 1.0/3.0, 1.0/6.0}; + std::vector c = {0.0, 0.5, 0.5, 1.0}; + return ExplicitRungeKutta(a,b,c); +} + +void pendulum_rhs(double /*t*/, const std::vector& y, std::vector& out) { + const double g = 9.81, L = 1.0; + out[0] = y[1]; + out[1] = -(g/L) * std::sin(y[0]); +} + +int main() { + // pendulum compare + { + auto euler = make_explicit_euler(); + auto rk2 = make_rk2_midpoint(); + auto rk4 = make_rk4_classic(); + + double tend = 10.0; + int steps = 2000; + double tau = tend / double(steps); + + std::vector y0 = {0.5, 0.0}; + + std::ofstream fe("pendulum_euler.csv"); + std::ofstream f2("pendulum_rk2.csv"); + std::ofstream f4("pendulum_rk4.csv"); + fe << "t,alpha,alpha_dot\n"; + f2 << "t,alpha,alpha_dot\n"; + f4 << "t,alpha,alpha_dot\n"; + + std::vector ye = y0, y2 = y0, y4 = y0, ytmp(2); + + for (int i=0;i<=steps;++i) { + double t = i * tau; + fe << t << "," << ye[0] << "," << ye[1] << "\n"; + f2 << t << "," << y2[0] << "," << y2[1] << "\n"; + f4 << t << "," << y4[0] << "," << y4[1] << "\n"; + + if (i==steps) break; + + euler.step(pendulum_rhs, t, tau, ye, ytmp); ye.swap(ytmp); + rk2.step(pendulum_rhs, t, tau, y2, ytmp); y2.swap(ytmp); + rk4.step(pendulum_rhs, t, tau, y4, ytmp); y4.swap(ytmp); + } + fe.close(); f2.close(); f4.close(); + std::cout << "Wrote pendulum_{euler,rk2,rk4}.csv\n"; + } + + // linear test for error vs tau + { + double lambda = -50.0; + auto euler = make_explicit_euler(); + auto rk2 = make_rk2_midpoint(); + auto rk4 = make_rk4_classic(); + + std::vector taus = {0.02, 0.01, 0.005, 0.0025, 0.00125}; + std::ofstream f("linear_error_vs_tau.csv"); + f << "tau,err_euler,err_rk2,err_rk4\n"; + + double tend = 1.0; + for (double tau : taus) { + int steps = int(std::ceil(tend / tau)); + double real_tau = tend / double(steps); + auto exact = [&](double t, double y0){ return y0 * std::exp(lambda * t); }; + + double y0 = 1.0; + std::vector y(1), ytmp(1); + + // Euler + y = {y0}; + for (int i=0;i& yy,std::vector& out){ + out[0] = lambda * yy[0]; + }, i*real_tau, real_tau, y, ytmp); + y.swap(ytmp); + } + double err_euler = std::abs(y[0] - exact(tend,y0)); + + // RK2 + y = {y0}; + for (int i=0;i& yy,std::vector& out){ + out[0] = lambda * yy[0]; + }, i*real_tau, real_tau, y, ytmp); + y.swap(ytmp); + } + double err_rk2 = std::abs(y[0] - exact(tend,y0)); + + // RK4 + y = {y0}; + for (int i=0;i& yy,std::vector& out){ + out[0] = lambda * yy[0]; + }, i*real_tau, real_tau, y, ytmp); + y.swap(ytmp); + } + double err_rk4 = std::abs(y[0] - exact(tend,y0)); + + f << real_tau << "," << err_euler << "," << err_rk2 << "," << err_rk4 << "\n"; + } + f.close(); + std::cout << "Wrote linear_error_vs_tau.csv\n"; + } + + return 0; +} diff --git a/demos/.ipynb_checkpoints/test_ode-checkpoint.cpp b/demos/.ipynb_checkpoints/test_ode-checkpoint.cpp new file mode 100644 index 000000000..97f635e40 --- /dev/null +++ b/demos/.ipynb_checkpoints/test_ode-checkpoint.cpp @@ -0,0 +1,60 @@ +#include +#include + +#include +#include + +using namespace ASC_ode; + + +class MassSpring : public NonlinearFunction +{ +private: + double mass; + double stiffness; + +public: + MassSpring(double m, double k) : mass(m), stiffness(k) {} + + size_t dimX() const override { return 2; } + size_t dimF() const override { return 2; } + + void evaluate (VectorView x, VectorView f) const override + { + f(0) = x(1); + f(1) = -stiffness/mass*x(0); + } + + void evaluateDeriv (VectorView x, MatrixView df) const override + { + df = 0.0; + df(0,1) = 1; + df(1,0) = -stiffness/mass; + } +}; + + +int main() +{ + double tend = 4*M_PI; + int steps = 100; + double tau = tend/steps; + + Vector<> y = { 1, 0 }; // initializer list + auto rhs = std::make_shared(1.0, 1.0); + + ExplicitEuler stepper(rhs); + // ImplicitEuler stepper(rhs); + + std::ofstream outfile ("output_test_ode.txt"); + std::cout << 0.0 << " " << y(0) << " " << y(1) << std::endl; + outfile << 0.0 << " " << y(0) << " " << y(1) << std::endl; + + for (int i = 0; i < steps; i++) + { + stepper.DoStep(tau, y); + + std::cout << (i+1) * tau << " " << y(0) << " " << y(1) << std::endl; + outfile << (i+1) * tau << " " << y(0) << " " << y(1) << std::endl; + } +} diff --git a/demos/demo_autodiff.cpp b/demos/demo_autodiff.cpp index d72b0e4ae..260a7b2ef 100644 --- a/demos/demo_autodiff.cpp +++ b/demos/demo_autodiff.cpp @@ -1,48 +1,85 @@ +// demos/demo_autodiff.cpp #include -#include - - -using namespace ASC_ode; - +#include +#include +#include +#include +// ---------- Legendre polynomials P0..Pn ---------- template -T func1 (T x, T y) -{ - return x * sin(y); - // return 1e6 + y; +void LegendrePolynomials(int n, T x, std::vector& P) { + if (n < 0) { P.clear(); return; } + P.resize(n+1); + P[0] = T(1); + if (n == 0) return; + P[1] = x; + for (int k=2;k<=n;++k) { + P[k] = ((T(2*k-1)*x*P[k-1]) - T(k-1)*P[k-2]) / T(k); + } } +// numeric derivative using central difference +double derivative(std::function f, double x, double h=1e-6) { + return (f(x+h) - f(x-h)) / (2*h); +} +// write Legendre and derivative to CSV +int main_legendre() { + const int nmax = 5; + std::ofstream f("legendre.csv"); + f << "x"; + for(int k=0;k<=nmax;++k) f << ",P" << k << ",dP" << k; + f << "\n"; -int main() -{ - double x = 1, y = 2; - AutoDiff<2> adx = Variable<0>(x); - AutoDiff<2> ady = Variable<1>(y); + const int samples = 201; + for (int i=0;i P; + LegendrePolynomials(nmax, x, P); - std::cout << "adx = " << adx << std::endl; - std::cout << "ady = " << ady << std::endl; + f << x; + for(int k=0;k<=nmax;++k) { + // numeric derivative + auto fk = [k](double xx) { std::vector Pk; LegendrePolynomials(5, xx, Pk); return Pk[k]; }; + double dPk = derivative(fk, x); - AutoDiff<2> prod = adx * ady; - std::cout << "prod = " << prod << std::endl; + f << "," << P[k] << "," << dPk; + } + f << "\n"; + } + f.close(); + std::cout << "Wrote legendre.csv (P0..P5 and derivatives)\n"; + return 0; +} - std::cout << "func1(adx, ady) = " << func1(adx, ady) << std::endl; +// ---------- Pendulum test ---------- +int main_pendulum() { + const double g = 9.81; + const double L = 1.0; + double alpha = 0.5; // rad + double alpha_dot = 0.0; // rad/s - double eps = 1e-8; - std::cout << "numdiff df/dx = " << (func1(x + eps, y) - func1(x-eps, y)) / (2*eps) << std::endl; - std::cout << "numdiff df/dy = " << (func1(x, y + eps) - func1(x, y-eps)) / (2*eps) << std::endl; + // numeric evaluation of derivatives + auto f0 = [](double alpha, double alpha_dot) { return alpha_dot; }; + auto f1 = [g,L](double alpha, double alpha_dot) { return - (g/L) * sin(alpha); }; + // Jacobian using central difference + double h = 1e-6; + double J00 = (f0(alpha+h, alpha_dot) - f0(alpha-h, alpha_dot)) / (2*h); + double J01 = (f0(alpha, alpha_dot+h) - f0(alpha, alpha_dot-h)) / (2*h); + double J10 = (f1(alpha+h, alpha_dot) - f1(alpha-h, alpha_dot)) / (2*h); + double J11 = (f1(alpha, alpha_dot+h) - f1(alpha, alpha_dot-h)) / (2*h); - { - // we can do second derivatives: - AutoDiff<1, AutoDiff<1>> addx{Variable<0>(2)}; - std::cout << "addx = " << addx << std::endl; - // func = x*x - // func' = 2*x - // func'' = 2 - std::cout << "addx*addx = " << addx * addx << std::endl; + std::cout << "Pendulum evaluation at alpha=" << alpha << ", alpha_dot=" << alpha_dot << "\n"; + std::cout << "f0 = " << f0(alpha, alpha_dot) << ", f1 = " << f1(alpha, alpha_dot) << "\n"; + std::cout << "Jacobian (df_i / dx_j):\n"; + std::cout << "[" << J00 << " , " << J01 << "]\n"; + std::cout << "[" << J10 << " , " << J11 << "]\n"; + return 0; +} - // std::cout << "sin(addx) = " << sin(addx) << std::endl; - } - return 0; -} \ No newline at end of file +int main() { + main_legendre(); + main_pendulum(); + return 0; +} diff --git a/demos/demo_autodiff.cpp.backup b/demos/demo_autodiff.cpp.backup new file mode 100644 index 000000000..2f2dcd067 --- /dev/null +++ b/demos/demo_autodiff.cpp.backup @@ -0,0 +1,91 @@ +// demos/demo_autodiff.cpp +#include +#include +#include +#include +#include "src/autodiff.hpp" + +using AD = AutoDiff<1,double>; // single-variable AD for Legendre + +// compute Legendre polynomials P0..Pn at x (templated on T) +template +void LegendrePolynomials(int n, T x, std::vector& P) { + if (n < 0) { P.clear(); return; } + P.resize(n+1); + P[0] = T(1); + if (n == 0) return; + P[1] = x; + for (int k=2;k<=n;++k) { + P[k] = ((T(2*k-1)*x*P[k-1]) - T(k-1)*P[k-2]) / T(k); + } +} + +// write Legendre and derivative using AD to CSV +int main_legendre() { + const int nmax = 5; + std::ofstream f("legendre.csv"); + f << "x"; + for(int k=0;k<=nmax;++k) f << ",P" << k << ",dP" << k; + f << "\n"; + + // sample points in [-1,1] + const int samples = 201; + for (int i=0;i(x); + std::vector Pad; + LegendrePolynomials(nmax, x_ad, Pad); + + f << x; + for(int k=0;k<=nmax;++k) { + double Pv = Pad[k].value(); + double dPv = Pad[k].deriv()[0]; + f << "," << Pv << "," << dPv; + } + f << "\n"; + } + f.close(); + std::cout << "Wrote legendre.csv (P0..P5 and derivatives)\n"; + return 0; +} + +// ---------- Pendulum AD test (chapter 18.5) ---------- +int main_pendulum() { + using AD2 = AutoDiff<2,double>; + const double g = 9.81; + const double L = 1.0; + + // pick a sample point for (alpha, alpha_dot) + double alpha = 0.5; // rad + double alpha_dot = 0.0; + + AD2 x0 = AD2::template variable<0>(alpha); + AD2 x1 = AD2::template variable<1>(alpha_dot); + + // evaluate f using templated T_evaluate-like code + AD2 f0 = x1; + AD2 f1 = - (g/L) * sin(x0); + + std::cout << "Pendulum AD evaluation at alpha=" << alpha << ", alpha_dot=" << alpha_dot << "\n"; + std::cout << "f0 (val, derivs): " << f0 << "\n"; + std::cout << "f1 (val, derivs): " << f1 << "\n"; + + // combine into Jacobian 2x2 printed + double J00 = f0.deriv()[0]; + double J01 = f0.deriv()[1]; + double J10 = f1.deriv()[0]; + double J11 = f1.deriv()[1]; + + std::cout << "Jacobian (df_i / dx_j):\n"; + std::cout << "[" << J00 << " , " << J01 << "]\n"; + std::cout << "[" << J10 << " , " << J11 << "]\n"; + return 0; +} + +int main(int argc, char** argv) { + (void)argc; (void)argv; + main_legendre(); + main_pendulum(); + return 0; +} diff --git a/include/.ipynb_checkpoints/RCNetwork-checkpoint.hpp b/include/.ipynb_checkpoints/RCNetwork-checkpoint.hpp new file mode 100644 index 000000000..affb10a03 --- /dev/null +++ b/include/.ipynb_checkpoints/RCNetwork-checkpoint.hpp @@ -0,0 +1,53 @@ +// include/RCNetwork.hpp +#pragma once +#include "nonlinfunc.hpp" // repo's NonlinearFunction interface +#include + +enum class VoltageType { ZERO=0, CONST=1, SIN=2 }; + +class RCNetwork : public NonlinearFunction +{ +private: + double R; + double C; + double V0; + double omega; + VoltageType vtype; + +public: + RCNetwork(double R_, double C_, VoltageType vt = VoltageType::CONST, + double V0_ = 1.0, double omega_ = 0.0) + : R(R_), C(C_), V0(V0_), omega(omega_), vtype(vt) {} + + size_t dimX() const override { return 2; } + size_t dimF() const override { return 2; } + + void evaluate (VectorView x, VectorView f) const override + { + double v = x(0); + double theta = x(1); + + double Vt = 0.0; + if (vtype == VoltageType::ZERO) Vt = 0.0; + else if (vtype == VoltageType::CONST) Vt = V0; + else Vt = V0 * std::sin(theta); + + // dv/dt + f(0) = (1.0/(R*C)) * (Vt - v); + + // dtheta/dt + f(1) = omega; + } + + void evaluateDeriv (VectorView x, MatrixView df) const override + { + df = 0.0; + df(0,0) = -1.0/(R*C); + if (vtype == VoltageType::SIN) + df(0,1) = (1.0/(R*C)) * V0 * std::cos(x(1)); + else + df(0,1) = 0.0; + df(1,0) = 0.0; + df(1,1) = 0.0; + } +}; diff --git a/include/.ipynb_checkpoints/plot_autodiff_legendre-checkpoint.py b/include/.ipynb_checkpoints/plot_autodiff_legendre-checkpoint.py new file mode 100644 index 000000000..2f0db5a6a --- /dev/null +++ b/include/.ipynb_checkpoints/plot_autodiff_legendre-checkpoint.py @@ -0,0 +1,14 @@ +# include/plot_autodiff_legendre.py +import numpy as np +import matplotlib.pyplot as plt +data = np.genfromtxt("legendre.csv", delimiter=',', names=True) +x = data['x'] +plt.figure(figsize=(9,6)) +for k in range(6): + plt.plot(x, data[f'P{k}'], label=f'P{k}') +plt.legend(); plt.xlabel('x'); plt.title('P0..P5'); plt.grid(True); plt.savefig('legendre_Ps.png') +plt.figure(figsize=(9,6)) +for k in range(6): + plt.plot(x, data[f'dP{k}'], label=f'dP{k}') +plt.legend(); plt.xlabel('x'); plt.title('dP0..dP5'); plt.grid(True); plt.savefig('legendre_dPs.png') +print("Wrote legendre_Ps.png and legendre_dPs.png") diff --git a/include/.ipynb_checkpoints/plot_rc-checkpoint.py b/include/.ipynb_checkpoints/plot_rc-checkpoint.py new file mode 100644 index 000000000..13d0b7e75 --- /dev/null +++ b/include/.ipynb_checkpoints/plot_rc-checkpoint.py @@ -0,0 +1,30 @@ +# include/plot_rc.py +import csv +import numpy as np +import matplotlib.pyplot as plt + +def read_csv(fname): + t, v, th = [], [], [] + with open(fname) as f: + r = csv.DictReader(f) + for row in r: + t.append(float(row['t'])) + v.append(float(row['v'])) + th.append(float(row['theta'])) + return np.array(t), np.array(v), np.array(th) + +files = [("rc_explicit.csv","Explicit Euler"), + ("rc_improved.csv","Improved Euler"), + ("rc_crank.csv","Crank-Nicolson")] + +plt.figure(figsize=(9,5)) +for fname,label in files: + t,v,th = read_csv(fname) + plt.plot(t, v, label=label) +plt.xlabel("t") +plt.ylabel("capacitor voltage v(t)") +plt.legend() +plt.grid(True) +plt.tight_layout() +plt.savefig("rc_v_compare.png") +print("Wrote rc_v_compare.png") diff --git a/include/.ipynb_checkpoints/plot_rk_results-checkpoint.py b/include/.ipynb_checkpoints/plot_rk_results-checkpoint.py new file mode 100644 index 000000000..0df494825 --- /dev/null +++ b/include/.ipynb_checkpoints/plot_rk_results-checkpoint.py @@ -0,0 +1,21 @@ +# include/plot_rk_results.py +import numpy as np +import matplotlib.pyplot as plt +def read(fname): return np.genfromtxt(fname, delimiter=',', names=True) +fe = read("pendulum_euler.csv") +f2 = read("pendulum_rk2.csv") +f4 = read("pendulum_rk4.csv") +plt.figure(figsize=(10,5)) +plt.plot(fe['t'], fe['alpha'], label='Euler') +plt.plot(f2['t'], f2['alpha'], label='RK2') +plt.plot(f4['t'], f4['alpha'], label='RK4') +plt.legend(); plt.xlabel('t'); plt.title('Pendulum alpha(t)'); plt.grid(True); plt.savefig('pendulum_alpha_compare.png') +plt.figure(figsize=(6,6)) +plt.plot(fe['alpha'], fe['alpha_dot'], label='Euler') +plt.plot(f2['alpha'], f2['alpha_dot'], label='RK2') +plt.plot(f4['alpha'], f4['alpha_dot'], label='RK4') +plt.legend(); plt.xlabel('alpha'); plt.ylabel('alpha_dot'); plt.title('Pendulum phase'); plt.grid(True); plt.savefig('pendulum_phase_compare.png') +print("Wrote pendulum plots") +# error vs tau +le = read("linear_error_vs_tau.csv") +taus = le['tau']; plt.figure(); plt.loglog(taus, le['err_euler'], 'o-', label='Euler'); plt.loglog(taus, le['err_rk2'], 's-', label='RK2'); plt.loglog(taus, le['err_rk4'], '^-', label='RK4'); plt.legend(); plt.xlabel('tau'); plt.ylabel('error'); plt.grid(True); plt.savefig('linear_error_vs_tau.png'); print("Wrote linear_error_vs_tau.png") diff --git a/include/RCNetwork.hpp b/include/RCNetwork.hpp new file mode 100644 index 000000000..affb10a03 --- /dev/null +++ b/include/RCNetwork.hpp @@ -0,0 +1,53 @@ +// include/RCNetwork.hpp +#pragma once +#include "nonlinfunc.hpp" // repo's NonlinearFunction interface +#include + +enum class VoltageType { ZERO=0, CONST=1, SIN=2 }; + +class RCNetwork : public NonlinearFunction +{ +private: + double R; + double C; + double V0; + double omega; + VoltageType vtype; + +public: + RCNetwork(double R_, double C_, VoltageType vt = VoltageType::CONST, + double V0_ = 1.0, double omega_ = 0.0) + : R(R_), C(C_), V0(V0_), omega(omega_), vtype(vt) {} + + size_t dimX() const override { return 2; } + size_t dimF() const override { return 2; } + + void evaluate (VectorView x, VectorView f) const override + { + double v = x(0); + double theta = x(1); + + double Vt = 0.0; + if (vtype == VoltageType::ZERO) Vt = 0.0; + else if (vtype == VoltageType::CONST) Vt = V0; + else Vt = V0 * std::sin(theta); + + // dv/dt + f(0) = (1.0/(R*C)) * (Vt - v); + + // dtheta/dt + f(1) = omega; + } + + void evaluateDeriv (VectorView x, MatrixView df) const override + { + df = 0.0; + df(0,0) = -1.0/(R*C); + if (vtype == VoltageType::SIN) + df(0,1) = (1.0/(R*C)) * V0 * std::cos(x(1)); + else + df(0,1) = 0.0; + df(1,0) = 0.0; + df(1,1) = 0.0; + } +}; diff --git a/include/plot_rc.py b/include/plot_rc.py new file mode 100644 index 000000000..13d0b7e75 --- /dev/null +++ b/include/plot_rc.py @@ -0,0 +1,30 @@ +# include/plot_rc.py +import csv +import numpy as np +import matplotlib.pyplot as plt + +def read_csv(fname): + t, v, th = [], [], [] + with open(fname) as f: + r = csv.DictReader(f) + for row in r: + t.append(float(row['t'])) + v.append(float(row['v'])) + th.append(float(row['theta'])) + return np.array(t), np.array(v), np.array(th) + +files = [("rc_explicit.csv","Explicit Euler"), + ("rc_improved.csv","Improved Euler"), + ("rc_crank.csv","Crank-Nicolson")] + +plt.figure(figsize=(9,5)) +for fname,label in files: + t,v,th = read_csv(fname) + plt.plot(t, v, label=label) +plt.xlabel("t") +plt.ylabel("capacitor voltage v(t)") +plt.legend() +plt.grid(True) +plt.tight_layout() +plt.savefig("rc_v_compare.png") +print("Wrote rc_v_compare.png") diff --git a/legendre.csv b/legendre.csv new file mode 100644 index 000000000..f5d25602d --- /dev/null +++ b/legendre.csv @@ -0,0 +1,202 @@ +x,P0,dP0,P1,dP1,P2,dP2,P3,dP3,P4,dP4,P5,dP5 +-1,1,0,-1,1,1,-3,-1,6,1,-10,-1,15 +-0.99,1,0,-0.99,1,0.97015,-2.97,-0.940747,5.85075,0.902233,-9.55523,-0.85518,13.9708 +-0.98,1,0,-0.98,1,0.9406,-2.94,-0.88298,5.703,0.808861,-9.12086,-0.720446,12.9827 +-0.97,1,0,-0.97,1,0.91135,-2.91,-0.826682,5.55675,0.719781,-8.69678,-0.595392,12.0348 +-0.96,1,0,-0.96,1,0.8824,-2.88,-0.77184,5.412,0.634891,-8.28288,-0.47962,11.126 +-0.95,1,0,-0.95,1,0.85375,-2.85,-0.718437,5.26875,0.55409,-7.87906,-0.372744,10.2556 +-0.94,1,0,-0.94,1,0.8254,-2.82,-0.66646,5.127,0.477277,-7.48522,-0.274384,9.42249 +-0.93,1,0,-0.93,1,0.79735,-2.79,-0.615892,4.98675,0.404353,-7.10125,-0.184172,8.62592 +-0.92,1,0,-0.92,1,0.7696,-2.76,-0.56672,4.848,0.335219,-6.72704,-0.101747,7.86497 +-0.91,1,0,-0.91,1,0.74215,-2.73,-0.518928,4.71075,0.26978,-6.36249,-0.0267569,7.13877 +-0.9,1,0,-0.9,1,0.715,-2.7,-0.4725,4.575,0.207937,-6.0075,0.0411413,6.44644 +-0.89,1,0,-0.89,1,0.68815,-2.67,-0.427423,4.44075,0.149598,-5.66196,0.102282,5.78713 +-0.88,1,0,-0.88,1,0.6616,-2.64,-0.38368,4.308,0.0946672,-5.32576,0.156991,5.16 +-0.87,1,0,-0.87,1,0.63535,-2.61,-0.341257,4.17675,0.043052,-4.9988,0.205586,4.56422 +-0.86,1,0,-0.86,1,0.6094,-2.58,-0.30014,4.047,-0.0053393,-4.68098,0.248377,3.99895 +-0.85,1,0,-0.85,1,0.58375,-2.55,-0.260313,3.91875,-0.0505977,-4.37219,0.285664,3.46337 +-0.84,1,0,-0.84,1,0.5584,-2.52,-0.22176,3.792,-0.0928128,-4.07232,0.317741,2.95668 +-0.83,1,0,-0.83,1,0.53335,-2.49,-0.184467,3.66675,-0.132073,-3.78127,0.344892,2.47809 +-0.82,1,0,-0.82,1,0.5086,-2.46,-0.14842,3.543,-0.168467,-3.49894,0.367394,2.02679 +-0.81,1,0,-0.81,1,0.48415,-2.43,-0.113603,3.42075,-0.202081,-3.22522,0.385516,1.60202 +-0.8,1,0,-0.8,1,0.46,-2.4,-0.08,3.3,-0.233,-2.96,0.39952,1.203 +-0.79,1,0,-0.79,1,0.43615,-2.37,-0.0475975,3.18075,-0.261309,-2.70318,0.409659,0.828969 +-0.78,1,0,-0.78,1,0.4126,-2.34,-0.01638,3.063,-0.287091,-2.45466,0.41618,0.479178 +-0.77,1,0,-0.77,1,0.38935,-2.31,0.0136675,2.94675,-0.310429,-2.21433,0.419321,0.152885 +-0.76,1,0,-0.76,1,0.3664,-2.28,0.04256,2.832,-0.331405,-1.98208,0.419314,-0.150643 +-0.75,1,0,-0.75,1,0.34375,-2.25,0.0703125,2.71875,-0.350098,-1.75781,0.416382,-0.432129 +-0.74,1,0,-0.74,1,0.3214,-2.22,0.09694,2.607,-0.366587,-1.54142,0.410742,-0.692286 +-0.73,1,0,-0.73,1,0.29935,-2.19,0.122457,2.49675,-0.380952,-1.3328,0.402605,-0.931818 +-0.72,1,0,-0.72,1,0.2776,-2.16,0.14688,2.388,-0.393269,-1.13184,0.392172,-1.15142 +-0.71,1,0,-0.71,1,0.25615,-2.13,0.170223,2.28075,-0.403614,-0.938443,0.379641,-1.35178 +-0.7,1,0,-0.7,1,0.235,-2.1,0.1925,2.175,-0.412062,-0.7525,0.365199,-1.53356 +-0.69,1,0,-0.69,1,0.21415,-2.07,0.213728,2.07075,-0.418688,-0.573907,0.349029,-1.69745 +-0.68,1,0,-0.68,1,0.1936,-2.04,0.23392,1.968,-0.423565,-0.40256,0.331307,-1.84408 +-0.67,1,0,-0.67,1,0.17335,-2.01,0.253093,1.86675,-0.426763,-0.238353,0.312203,-1.97412 +-0.66,1,0,-0.66,1,0.1534,-1.98,0.27126,1.767,-0.428355,-0.08118,0.291878,-2.0882 +-0.65,1,0,-0.65,1,0.13375,-1.95,0.288437,1.66875,-0.42841,0.0690625,0.27049,-2.18694 +-0.64,1,0,-0.64,1,0.1144,-1.92,0.30464,1.572,-0.426997,0.21248,0.248188,-2.27097 +-0.63,1,0,-0.63,1,0.09535,-1.89,0.319882,1.47675,-0.424183,0.349177,0.225117,-2.3409 +-0.62,1,0,-0.62,1,0.0766,-1.86,0.33418,1.383,-0.420035,0.47926,0.201415,-2.39732 +-0.61,1,0,-0.61,1,0.05815,-1.83,0.347547,1.29075,-0.414619,0.602832,0.177214,-2.44083 +-0.6,1,0,-0.6,1,0.04,-1.8,0.36,1.2,-0.408,0.72,0.15264,-2.472 +-0.59,1,0,-0.59,1,0.02215,-1.77,0.371552,1.11075,-0.40024,0.830867,0.127813,-2.49141 +-0.58,1,0,-0.58,1,0.0046,-1.74,0.38222,1.023,-0.391403,0.93554,0.102849,-2.49963 +-0.57,1,0,-0.57,1,-0.01265,-1.71,0.392017,0.93675,-0.38155,1.03412,0.0778563,-2.4972 +-0.56,1,0,-0.56,1,-0.0296,-1.68,0.40096,0.852,-0.370741,1.12672,0.0529387,-2.48467 +-0.55,1,0,-0.55,1,-0.04625,-1.65,0.409062,0.76875,-0.359035,1.21344,0.0281948,-2.46257 +-0.54,1,0,-0.54,1,-0.0626,-1.62,0.41634,0.687,-0.346491,1.29438,0.00371754,-2.43142 +-0.53,1,0,-0.53,1,-0.07865,-1.59,0.422808,0.60675,-0.333166,1.36965,-0.0204052,-2.39175 +-0.52,1,0,-0.52,1,-0.0944,-1.56,0.42848,0.528,-0.319117,1.43936,-0.0440907,-2.34405 +-0.51,1,0,-0.51,1,-0.10985,-1.53,0.433372,0.45075,-0.304397,1.50361,-0.0672611,-2.28883 +-0.5,1,0,-0.5,1,-0.125,-1.5,0.4375,0.375,-0.289062,1.5625,-0.0898438,-2.22656 +-0.49,1,0,-0.49,1,-0.13985,-1.47,0.440878,0.30075,-0.273165,1.61614,-0.111771,-2.15773 +-0.48,1,0,-0.48,1,-0.1544,-1.44,0.44352,0.228,-0.256757,1.66464,-0.132978,-2.08281 +-0.47,1,0,-0.47,1,-0.16865,-1.41,0.445442,0.15675,-0.239889,1.7081,-0.153408,-2.00225 +-0.46,1,0,-0.46,1,-0.1826,-1.38,0.44666,0.087,-0.222611,1.74662,-0.173006,-1.9165 +-0.45,1,0,-0.45,1,-0.19625,-1.35,0.447188,0.01875,-0.204973,1.78031,-0.191722,-1.826 +-0.44,1,0,-0.44,1,-0.2096,-1.32,0.44704,-0.048,-0.187021,1.80928,-0.209512,-1.73119 +-0.43,1,0,-0.43,1,-0.22265,-1.29,0.446233,-0.11325,-0.168802,1.83363,-0.226333,-1.63247 +-0.42,1,0,-0.42,1,-0.2354,-1.26,0.44478,-0.177,-0.150363,1.85346,-0.242149,-1.53027 +-0.41,1,0,-0.41,1,-0.24785,-1.23,0.442697,-0.23925,-0.131748,1.86888,-0.256928,-1.42498 +-0.4,1,0,-0.4,1,-0.26,-1.2,0.44,-0.3,-0.113,1.88,-0.27064,-1.317 +-0.39,1,0,-0.39,1,-0.27185,-1.17,0.436702,-0.35925,-0.094162,1.88692,-0.28326,-1.20671 +-0.38,1,0,-0.38,1,-0.2834,-1.14,0.43282,-0.417,-0.0752753,1.88974,-0.294768,-1.09448 +-0.37,1,0,-0.37,1,-0.29465,-1.11,0.428368,-0.47325,-0.0563805,1.88857,-0.305145,-0.980674 +-0.36,1,0,-0.36,1,-0.3056,-1.08,0.42336,-0.528,-0.0375168,1.88352,-0.314377,-0.865651 +-0.35,1,0,-0.35,1,-0.31625,-1.05,0.417812,-0.58125,-0.0187227,1.87469,-0.322455,-0.749754 +-0.34,1,0,-0.34,1,-0.3266,-1.02,0.41174,-0.633,-3.53e-05,1.86218,-0.32937,-0.633318 +-0.33,1,0,-0.33,1,-0.33665,-0.99,0.405157,-0.68325,0.018509,1.8461,-0.33512,-0.516669 +-0.32,1,0,-0.32,1,-0.3464,-0.96,0.39808,-0.732,0.0368752,1.82656,-0.339704,-0.400123 +-0.31,1,0,-0.31,1,-0.35585,-0.93,0.390523,-0.77925,0.055029,1.80366,-0.343124,-0.283989 +-0.3,1,0,-0.3,1,-0.365,-0.9,0.3825,-0.825,0.0729375,1.7775,-0.345386,-0.168562 +-0.29,1,0,-0.29,1,-0.37385,-0.87,0.374028,-0.86925,0.0905685,1.74819,-0.346499,-0.0541331 +-0.28,1,0,-0.28,1,-0.3824,-0.84,0.36512,-0.912,0.107891,1.71584,-0.346473,0.0590208 +-0.27,1,0,-0.27,1,-0.39065,-0.81,0.355793,-0.95325,0.124876,1.68055,-0.345324,0.17063 +-0.26,1,0,-0.26,1,-0.3986,-0.78,0.34606,-0.993,0.141493,1.64242,-0.343067,0.280434 +-0.25,1,0,-0.25,1,-0.40625,-0.75,0.335938,-1.03125,0.157715,1.60156,-0.339722,0.388184 +-0.24,1,0,-0.24,1,-0.4136,-0.72,0.32544,-1.068,0.173515,1.55808,-0.335311,0.493637 +-0.23,1,0,-0.23,1,-0.42065,-0.69,0.314582,-1.10325,0.188868,1.51208,-0.329857,0.596562 +-0.22,1,0,-0.22,1,-0.4274,-0.66,0.30338,-1.137,0.203749,1.46366,-0.323388,0.696738 +-0.21,1,0,-0.21,1,-0.43385,-0.63,0.291847,-1.16925,0.218134,1.41293,-0.315932,0.793952 +-0.2,1,0,-0.2,1,-0.44,-0.6,0.28,-1.2,0.232,1.36,-0.30752,0.888 +-0.19,1,0,-0.19,1,-0.44585,-0.57,0.267852,-1.22925,0.245327,1.30497,-0.298184,0.978689 +-0.18,1,0,-0.18,1,-0.4514,-0.54,0.25542,-1.257,0.258093,1.24794,-0.287958,1.06583 +-0.17,1,0,-0.17,1,-0.45665,-0.51,0.242718,-1.28325,0.270279,1.18902,-0.276879,1.14926 +-0.16,1,0,-0.16,1,-0.4616,-0.48,0.22976,-1.308,0.281867,1.12832,-0.264986,1.2288 +-0.15,1,0,-0.15,1,-0.46625,-0.45,0.216563,-1.33125,0.29284,1.06594,-0.252317,1.30431 +-0.14,1,0,-0.14,1,-0.4706,-0.42,0.20314,-1.353,0.303181,1.00198,-0.238914,1.37563 +-0.13,1,0,-0.13,1,-0.47465,-0.39,0.189508,-1.37325,0.312875,0.936553,-0.224819,1.44262 +-0.12,1,0,-0.12,1,-0.4784,-0.36,0.17568,-1.392,0.321907,0.86976,-0.210076,1.50516 +-0.11,1,0,-0.11,1,-0.48185,-0.33,0.161672,-1.40925,0.330266,0.801707,-0.194731,1.56314 +-0.1,1,0,-0.1,1,-0.485,-0.3,0.1475,-1.425,0.337938,0.7325,-0.178829,1.61644 +-0.09,1,0,-0.09,1,-0.48785,-0.27,0.133177,-1.43925,0.344912,0.662243,-0.162418,1.66496 +-0.08,1,0,-0.08,1,-0.4904,-0.24,0.11872,-1.452,0.351179,0.59104,-0.145546,1.70861 +-0.07,1,0,-0.07,1,-0.49265,-0.21,0.104142,-1.46325,0.35673,0.518998,-0.128262,1.74732 +-0.06,1,0,-0.06,1,-0.4946,-0.18,0.08946,-1.473,0.361557,0.44622,-0.110616,1.78101 +-0.05,1,0,-0.05,1,-0.49625,-0.15,0.0746875,-1.48125,0.365652,0.372813,-0.0926587,1.80962 +-0.04,1,0,-0.04,1,-0.4976,-0.12,0.05984,-1.488,0.369011,0.29888,-0.0744408,1.8331 +-0.03,1,0,-0.03,1,-0.49865,-0.09,0.0449325,-1.49325,0.371629,0.224527,-0.0560139,1.85141 +-0.02,1,0,-0.02,1,-0.4994,-0.06,0.02998,-1.497,0.373501,0.14986,-0.03743,1.86451 +-0.01,1,0,-0.01,1,-0.49985,-0.03,0.0149975,-1.49925,0.374625,0.0749825,-0.0187413,1.87238 +0,1,0,0,1,-0.5,0,-0,-1.5,0.375,0,0,1.875 +0.01,1,0,0.01,1,-0.49985,0.03,-0.0149975,-1.49925,0.374625,-0.0749825,0.0187413,1.87238 +0.02,1,0,0.02,1,-0.4994,0.06,-0.02998,-1.497,0.373501,-0.14986,0.03743,1.86451 +0.03,1,0,0.03,1,-0.49865,0.09,-0.0449325,-1.49325,0.371629,-0.224527,0.0560139,1.85141 +0.04,1,0,0.04,1,-0.4976,0.12,-0.05984,-1.488,0.369011,-0.29888,0.0744408,1.8331 +0.05,1,0,0.05,1,-0.49625,0.15,-0.0746875,-1.48125,0.365652,-0.372813,0.0926587,1.80962 +0.06,1,0,0.06,1,-0.4946,0.18,-0.08946,-1.473,0.361557,-0.44622,0.110616,1.78101 +0.07,1,0,0.07,1,-0.49265,0.21,-0.104143,-1.46325,0.35673,-0.518998,0.128262,1.74732 +0.08,1,0,0.08,1,-0.4904,0.24,-0.11872,-1.452,0.351179,-0.59104,0.145546,1.70861 +0.09,1,0,0.09,1,-0.48785,0.27,-0.133178,-1.43925,0.344912,-0.662243,0.162418,1.66496 +0.1,1,0,0.1,1,-0.485,0.3,-0.1475,-1.425,0.337937,-0.7325,0.178829,1.61644 +0.11,1,0,0.11,1,-0.48185,0.33,-0.161673,-1.40925,0.330266,-0.801707,0.194731,1.56314 +0.12,1,0,0.12,1,-0.4784,0.36,-0.17568,-1.392,0.321907,-0.86976,0.210076,1.50516 +0.13,1,0,0.13,1,-0.47465,0.39,-0.189507,-1.37325,0.312875,-0.936552,0.224819,1.44262 +0.14,1,0,0.14,1,-0.4706,0.42,-0.20314,-1.353,0.303181,-1.00198,0.238914,1.37563 +0.15,1,0,0.15,1,-0.46625,0.45,-0.216562,-1.33125,0.29284,-1.06594,0.252317,1.30431 +0.16,1,0,0.16,1,-0.4616,0.48,-0.22976,-1.308,0.281867,-1.12832,0.264986,1.2288 +0.17,1,0,0.17,1,-0.45665,0.51,-0.242717,-1.28325,0.270279,-1.18902,0.276879,1.14926 +0.18,1,0,0.18,1,-0.4514,0.54,-0.25542,-1.257,0.258093,-1.24794,0.287958,1.06583 +0.19,1,0,0.19,1,-0.44585,0.57,-0.267852,-1.22925,0.245327,-1.30497,0.298184,0.978689 +0.2,1,0,0.2,1,-0.44,0.6,-0.28,-1.2,0.232,-1.36,0.30752,0.888 +0.21,1,0,0.21,1,-0.43385,0.63,-0.291847,-1.16925,0.218134,-1.41293,0.315932,0.793952 +0.22,1,0,0.22,1,-0.4274,0.66,-0.30338,-1.137,0.203749,-1.46366,0.323388,0.696738 +0.23,1,0,0.23,1,-0.42065,0.69,-0.314582,-1.10325,0.188868,-1.51208,0.329857,0.596562 +0.24,1,0,0.24,1,-0.4136,0.72,-0.32544,-1.068,0.173515,-1.55808,0.335311,0.493637 +0.25,1,0,0.25,1,-0.40625,0.75,-0.335938,-1.03125,0.157715,-1.60156,0.339722,0.388184 +0.26,1,0,0.26,1,-0.3986,0.78,-0.34606,-0.993,0.141493,-1.64242,0.343067,0.280434 +0.27,1,0,0.27,1,-0.39065,0.81,-0.355793,-0.95325,0.124876,-1.68055,0.345324,0.17063 +0.28,1,0,0.28,1,-0.3824,0.84,-0.36512,-0.912,0.107891,-1.71584,0.346473,0.0590208 +0.29,1,0,0.29,1,-0.37385,0.87,-0.374028,-0.86925,0.0905685,-1.74819,0.346499,-0.0541331 +0.3,1,0,0.3,1,-0.365,0.9,-0.3825,-0.825,0.0729375,-1.7775,0.345386,-0.168562 +0.31,1,0,0.31,1,-0.35585,0.93,-0.390523,-0.77925,0.055029,-1.80366,0.343124,-0.283989 +0.32,1,0,0.32,1,-0.3464,0.96,-0.39808,-0.732,0.0368752,-1.82656,0.339704,-0.400123 +0.33,1,0,0.33,1,-0.33665,0.99,-0.405158,-0.68325,0.018509,-1.8461,0.33512,-0.516669 +0.34,1,0,0.34,1,-0.3266,1.02,-0.41174,-0.633,-3.53e-05,-1.86218,0.32937,-0.633318 +0.35,1,0,0.35,1,-0.31625,1.05,-0.417813,-0.58125,-0.0187227,-1.87469,0.322455,-0.749754 +0.36,1,0,0.36,1,-0.3056,1.08,-0.42336,-0.528,-0.0375168,-1.88352,0.314377,-0.865651 +0.37,1,0,0.37,1,-0.29465,1.11,-0.428368,-0.47325,-0.0563805,-1.88857,0.305145,-0.980674 +0.38,1,0,0.38,1,-0.2834,1.14,-0.43282,-0.417,-0.0752753,-1.88974,0.294768,-1.09448 +0.39,1,0,0.39,1,-0.27185,1.17,-0.436702,-0.35925,-0.094162,-1.88692,0.28326,-1.20671 +0.4,1,0,0.4,1,-0.26,1.2,-0.44,-0.3,-0.113,-1.88,0.27064,-1.317 +0.41,1,0,0.41,1,-0.24785,1.23,-0.442697,-0.23925,-0.131748,-1.86888,0.256928,-1.42498 +0.42,1,0,0.42,1,-0.2354,1.26,-0.44478,-0.177,-0.150363,-1.85346,0.242149,-1.53027 +0.43,1,0,0.43,1,-0.22265,1.29,-0.446232,-0.11325,-0.168802,-1.83363,0.226333,-1.63247 +0.44,1,0,0.44,1,-0.2096,1.32,-0.44704,-0.048,-0.187021,-1.80928,0.209512,-1.73119 +0.45,1,0,0.45,1,-0.19625,1.35,-0.447188,0.01875,-0.204973,-1.78031,0.191722,-1.826 +0.46,1,0,0.46,1,-0.1826,1.38,-0.44666,0.087,-0.222611,-1.74662,0.173006,-1.9165 +0.47,1,0,0.47,1,-0.16865,1.41,-0.445442,0.15675,-0.239889,-1.7081,0.153408,-2.00225 +0.48,1,0,0.48,1,-0.1544,1.44,-0.44352,0.228,-0.256757,-1.66464,0.132978,-2.08281 +0.49,1,0,0.49,1,-0.13985,1.47,-0.440878,0.30075,-0.273165,-1.61614,0.111771,-2.15773 +0.5,1,0,0.5,1,-0.125,1.5,-0.4375,0.375,-0.289062,-1.5625,0.0898438,-2.22656 +0.51,1,0,0.51,1,-0.10985,1.53,-0.433372,0.45075,-0.304397,-1.50361,0.0672611,-2.28883 +0.52,1,0,0.52,1,-0.0944,1.56,-0.42848,0.528,-0.319117,-1.43936,0.0440907,-2.34405 +0.53,1,0,0.53,1,-0.07865,1.59,-0.422808,0.60675,-0.333166,-1.36965,0.0204052,-2.39175 +0.54,1,0,0.54,1,-0.0626,1.62,-0.41634,0.687,-0.346491,-1.29438,-0.00371754,-2.43142 +0.55,1,0,0.55,1,-0.04625,1.65,-0.409062,0.76875,-0.359035,-1.21344,-0.0281948,-2.46257 +0.56,1,0,0.56,1,-0.0296,1.68,-0.40096,0.852,-0.370741,-1.12672,-0.0529387,-2.48467 +0.57,1,0,0.57,1,-0.01265,1.71,-0.392017,0.93675,-0.38155,-1.03412,-0.0778563,-2.4972 +0.58,1,0,0.58,1,0.0046,1.74,-0.38222,1.023,-0.391403,-0.93554,-0.102849,-2.49963 +0.59,1,0,0.59,1,0.02215,1.77,-0.371552,1.11075,-0.40024,-0.830867,-0.127813,-2.49141 +0.6,1,0,0.6,1,0.04,1.8,-0.36,1.2,-0.408,-0.72,-0.15264,-2.472 +0.61,1,0,0.61,1,0.05815,1.83,-0.347547,1.29075,-0.414619,-0.602833,-0.177214,-2.44083 +0.62,1,0,0.62,1,0.0766,1.86,-0.33418,1.383,-0.420035,-0.47926,-0.201415,-2.39732 +0.63,1,0,0.63,1,0.09535,1.89,-0.319883,1.47675,-0.424183,-0.349178,-0.225117,-2.3409 +0.64,1,0,0.64,1,0.1144,1.92,-0.30464,1.572,-0.426997,-0.21248,-0.248188,-2.27097 +0.65,1,0,0.65,1,0.13375,1.95,-0.288438,1.66875,-0.42841,-0.0690625,-0.27049,-2.18694 +0.66,1,0,0.66,1,0.1534,1.98,-0.27126,1.767,-0.428355,0.08118,-0.291878,-2.0882 +0.67,1,0,0.67,1,0.17335,2.01,-0.253093,1.86675,-0.426763,0.238353,-0.312203,-1.97412 +0.68,1,0,0.68,1,0.1936,2.04,-0.23392,1.968,-0.423565,0.40256,-0.331307,-1.84408 +0.69,1,0,0.69,1,0.21415,2.07,-0.213728,2.07075,-0.418688,0.573907,-0.349029,-1.69745 +0.7,1,0,0.7,1,0.235,2.1,-0.1925,2.175,-0.412062,0.7525,-0.365199,-1.53356 +0.71,1,0,0.71,1,0.25615,2.13,-0.170223,2.28075,-0.403614,0.938443,-0.379641,-1.35178 +0.72,1,0,0.72,1,0.2776,2.16,-0.14688,2.388,-0.393269,1.13184,-0.392172,-1.15142 +0.73,1,0,0.73,1,0.29935,2.19,-0.122457,2.49675,-0.380952,1.3328,-0.402605,-0.931818 +0.74,1,0,0.74,1,0.3214,2.22,-0.09694,2.607,-0.366587,1.54142,-0.410742,-0.692286 +0.75,1,0,0.75,1,0.34375,2.25,-0.0703125,2.71875,-0.350098,1.75781,-0.416382,-0.432129 +0.76,1,0,0.76,1,0.3664,2.28,-0.04256,2.832,-0.331405,1.98208,-0.419314,-0.150643 +0.77,1,0,0.77,1,0.38935,2.31,-0.0136675,2.94675,-0.310429,2.21433,-0.419321,0.152885 +0.78,1,0,0.78,1,0.4126,2.34,0.01638,3.063,-0.287091,2.45466,-0.41618,0.479178 +0.79,1,0,0.79,1,0.43615,2.37,0.0475975,3.18075,-0.261309,2.70318,-0.409659,0.828969 +0.8,1,0,0.8,1,0.46,2.4,0.08,3.3,-0.233,2.96,-0.39952,1.203 +0.81,1,0,0.81,1,0.48415,2.43,0.113603,3.42075,-0.202081,3.22522,-0.385516,1.60202 +0.82,1,0,0.82,1,0.5086,2.46,0.14842,3.543,-0.168467,3.49894,-0.367394,2.02679 +0.83,1,0,0.83,1,0.53335,2.49,0.184468,3.66675,-0.132073,3.78127,-0.344892,2.47809 +0.84,1,0,0.84,1,0.5584,2.52,0.22176,3.792,-0.0928128,4.07232,-0.317741,2.95668 +0.85,1,0,0.85,1,0.58375,2.55,0.260313,3.91875,-0.0505977,4.37219,-0.285664,3.46337 +0.86,1,0,0.86,1,0.6094,2.58,0.30014,4.047,-0.0053393,4.68098,-0.248377,3.99895 +0.87,1,0,0.87,1,0.63535,2.61,0.341258,4.17675,0.043052,4.9988,-0.205586,4.56422 +0.88,1,0,0.88,1,0.6616,2.64,0.38368,4.308,0.0946672,5.32576,-0.156991,5.16 +0.89,1,0,0.89,1,0.68815,2.67,0.427422,4.44075,0.149598,5.66196,-0.102282,5.78713 +0.9,1,0,0.9,1,0.715,2.7,0.4725,4.575,0.207937,6.0075,-0.0411413,6.44644 +0.91,1,0,0.91,1,0.74215,2.73,0.518927,4.71075,0.26978,6.36249,0.0267569,7.13877 +0.92,1,0,0.92,1,0.7696,2.76,0.56672,4.848,0.335219,6.72704,0.101747,7.86497 +0.93,1,0,0.93,1,0.79735,2.79,0.615892,4.98675,0.404353,7.10125,0.184172,8.62592 +0.94,1,0,0.94,1,0.8254,2.82,0.66646,5.127,0.477277,7.48522,0.274384,9.42249 +0.95,1,0,0.95,1,0.85375,2.85,0.718437,5.26875,0.55409,7.87906,0.372744,10.2556 +0.96,1,0,0.96,1,0.8824,2.88,0.77184,5.412,0.634891,8.28288,0.47962,11.126 +0.97,1,0,0.97,1,0.91135,2.91,0.826682,5.55675,0.719781,8.69678,0.595392,12.0348 +0.98,1,0,0.98,1,0.9406,2.94,0.88298,5.703,0.808861,9.12086,0.720446,12.9827 +0.99,1,0,0.99,1,0.97015,2.97,0.940747,5.85075,0.902233,9.55523,0.85518,13.9708 +1,1,0,1,1,1,3,1,6,1,10,1,15 diff --git a/legendre_Ps.png b/legendre_Ps.png new file mode 100644 index 0000000000000000000000000000000000000000..0c4f2d04bde7daf1550783f75fb179a2148abe56 GIT binary patch literal 90127 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 literal 0 HcmV?d00001 diff --git a/legendre_dPs.png b/legendre_dPs.png new file mode 100644 index 0000000000000000000000000000000000000000..83646031554c40401f39ab1757df1e6307704a4e GIT binary patch literal 56085 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 literal 0 HcmV?d00001 diff --git a/linear_error_vs_tau.csv b/linear_error_vs_tau.csv new file mode 100644 index 000000000..6dcb3dfd0 --- /dev/null +++ b/linear_error_vs_tau.csv @@ -0,0 +1,6 @@ +tau,err_euler,err_rk2,err_rk4 +0.02,1.92875e-22,8.88178e-16,3.1012e-22 +0.01,1.92875e-22,3.67972e-21,7.78911e-24 +0.005,1.92772e-22,1.6854e-22,3.87259e-25 +0.0025,1.86518e-22,2.96555e-23,2.17789e-26 +0.00125,1.55116e-22,6.69366e-24,1.29188e-27 diff --git a/linear_error_vs_tau.png b/linear_error_vs_tau.png new file mode 100644 index 0000000000000000000000000000000000000000..724d17c0bc85dfd50484b23ecc1a70d663fbc1f4 GIT binary patch literal 25035 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


i1H*4kRhvD) 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 PK+)Z1pc%XMh{wMGY|NG< literal 0 HcmV?d00001 diff --git a/local_pybind11/bin/pybind11-config b/local_pybind11/bin/pybind11-config new file mode 100755 index 000000000..92a02d5cd --- /dev/null +++ b/local_pybind11/bin/pybind11-config @@ -0,0 +1,7 @@ +#!/opt/venv/bin/python3 +import sys +from pybind11.__main__ import main +if __name__ == '__main__': + if sys.argv[0].endswith('.exe'): + sys.argv[0] = sys.argv[0][:-4] + sys.exit(main()) diff --git a/local_pybind11/pybind11-3.0.1.dist-info/INSTALLER b/local_pybind11/pybind11-3.0.1.dist-info/INSTALLER new file mode 100644 index 000000000..a1b589e38 --- /dev/null +++ b/local_pybind11/pybind11-3.0.1.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/local_pybind11/pybind11-3.0.1.dist-info/METADATA b/local_pybind11/pybind11-3.0.1.dist-info/METADATA new file mode 100644 index 000000000..528884b1c --- /dev/null +++ b/local_pybind11/pybind11-3.0.1.dist-info/METADATA @@ -0,0 +1,252 @@ +Metadata-Version: 2.4 +Name: pybind11 +Version: 3.0.1 +Summary: Seamless operability between C++11 and Python +Keywords: C++11,Python bindings +Author-Email: Wenzel Jakob +License-Expression: BSD-3-Clause +License-File: LICENSE +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Topic :: Utilities +Classifier: Programming Language :: C++ +Classifier: Programming Language :: Python :: 3 :: Only +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 +Classifier: Programming Language :: Python :: 3.14 +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: C++ +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Project-URL: Homepage, https://github.com/pybind/pybind11 +Project-URL: Documentation, https://pybind11.readthedocs.io/ +Project-URL: Bug Tracker, https://github.com/pybind/pybind11/issues +Project-URL: Discussions, https://github.com/pybind/pybind11/discussions +Project-URL: Changelog, https://pybind11.readthedocs.io/en/latest/changelog.html +Project-URL: Chat, https://gitter.im/pybind/Lobby +Requires-Python: >=3.8 +Provides-Extra: global +Requires-Dist: pybind11-global==3.0.1; extra == "global" +Description-Content-Type: text/x-rst + +.. figure:: https://github.com/pybind/pybind11/raw/master/docs/pybind11-logo.png + :alt: pybind11 logo + +**pybind11 (v3) — Seamless interoperability between C++ and Python** + +|Latest Documentation Status| |Stable Documentation Status| |Gitter chat| |GitHub Discussions| + +|CI| |Build status| |SPEC 4 — Using and Creating Nightly Wheels| + +|Repology| |PyPI package| |Conda-forge| |Python Versions| + +`Setuptools example `_ +• `Scikit-build example `_ +• `CMake example `_ + +.. start + + +**pybind11** is a lightweight header-only library that exposes C++ types +in Python and vice versa, mainly to create Python bindings of existing +C++ code. Its goals and syntax are similar to the excellent +`Boost.Python `_ +library by David Abrahams: to minimize boilerplate code in traditional +extension modules by inferring type information using compile-time +introspection. + +The main issue with Boost.Python—and the reason for creating such a +similar project—is Boost. Boost is an enormously large and complex suite +of utility libraries that works with almost every C++ compiler in +existence. This compatibility has its cost: arcane template tricks and +workarounds are necessary to support the oldest and buggiest of compiler +specimens. Now that C++11-compatible compilers are widely available, +this heavy machinery has become an excessively large and unnecessary +dependency. + +Think of this library as a tiny self-contained version of Boost.Python +with everything stripped away that isn't relevant for binding +generation. Without comments, the core header files only require ~4K +lines of code and depend on Python (CPython 3.8+, PyPy, or GraalPy) and the C++ +standard library. This compact implementation was possible thanks to some C++11 +language features (specifically: tuples, lambda functions and variadic +templates). Since its creation, this library has grown beyond Boost.Python in +many ways, leading to dramatically simpler binding code in many common +situations. + +Tutorial and reference documentation is provided at +`pybind11.readthedocs.io `_. +A PDF version of the manual is available +`here `_. +And the source code is always available at +`github.com/pybind/pybind11 `_. + + +Core features +------------- + + +pybind11 can map the following core C++ features to Python: + +- Functions accepting and returning custom data structures per value, + reference, or pointer +- Instance methods and static methods +- Overloaded functions +- Instance attributes and static attributes +- Arbitrary exception types +- Enumerations +- Callbacks +- Iterators and ranges +- Custom operators +- Single and multiple inheritance +- STL data structures +- Smart pointers with reference counting like ``std::shared_ptr`` +- Internal references with correct reference counting +- C++ classes with virtual (and pure virtual) methods can be extended + in Python +- Integrated NumPy support (NumPy 2 requires pybind11 2.12+) + +Goodies +------- + +In addition to the core functionality, pybind11 provides some extra +goodies: + +- CPython 3.8+, PyPy3 7.3.17+, and GraalPy 24.1+ are supported with an + implementation-agnostic interface (see older versions for older CPython + and PyPy versions). + +- It is possible to bind C++11 lambda functions with captured + variables. The lambda capture data is stored inside the resulting + Python function object. + +- pybind11 uses C++11 move constructors and move assignment operators + whenever possible to efficiently transfer custom data types. + +- It's easy to expose the internal storage of custom data types through + Pythons' buffer protocols. This is handy e.g. for fast conversion + between C++ matrix classes like Eigen and NumPy without expensive + copy operations. + +- pybind11 can automatically vectorize functions so that they are + transparently applied to all entries of one or more NumPy array + arguments. + +- Python's slice-based access and assignment operations can be + supported with just a few lines of code. + +- Everything is contained in just a few header files; there is no need + to link against any additional libraries. + +- Binaries are generally smaller by a factor of at least 2 compared to + equivalent bindings generated by Boost.Python. A recent pybind11 + conversion of PyRosetta, an enormous Boost.Python binding project, + `reported `_ + a binary size reduction of **5.4x** and compile time reduction by + **5.8x**. + +- Function signatures are precomputed at compile time (using + ``constexpr``), leading to smaller binaries. + +- With little extra effort, C++ types can be pickled and unpickled + similar to regular Python objects. + +Supported compilers +------------------- + +1. Clang/LLVM 3.3 or newer (for Apple Xcode's clang, this is 5.0.0 or + newer) +2. GCC 4.8 or newer +3. Microsoft Visual Studio 2022 or newer (2019 probably works, but was dropped in CI) +4. Intel classic C++ compiler 18 or newer (ICC 20.2 tested in CI) +5. Cygwin/GCC (previously tested on 2.5.1) +6. NVCC (CUDA 11.0 tested in CI) +7. NVIDIA PGI (20.9 tested in CI) + +Supported Platforms +------------------- + +* Windows, Linux, macOS, and iOS +* CPython 3.8+, Pyodide, PyPy, and GraalPy +* C++11, C++14, C++17, C++20, and C++23 + +About +----- + +This project was created by `Wenzel +Jakob `_. Significant features and/or +improvements to the code were contributed by +Jonas Adler, +Lori A. Burns, +Sylvain Corlay, +Eric Cousineau, +Aaron Gokaslan, +Ralf Grosse-Kunstleve, +Trent Houliston, +Axel Huebl, +@hulucc, +Yannick Jadoul, +Sergey Lyskov, +Johan Mabille, +Tomasz Miąsko, +Dean Moldovan, +Ben Pritchard, +Jason Rhinelander, +Boris Schäling, +Pim Schellart, +Henry Schreiner, +Ivan Smirnov, +Dustin Spicuzza, +Boris Staletic, +Ethan Steinberg, +Patrick Stewart, +Ivor Wanders, +and +Xiaofei Wang. + +We thank Google for a generous financial contribution to the continuous +integration infrastructure used by this project. + + +Contributing +~~~~~~~~~~~~ + +See the `contributing +guide `_ +for information on building and contributing to pybind11. + +License +~~~~~~~ + +pybind11 is provided under a BSD-style license that can be found in the +`LICENSE `_ +file. By using, distributing, or contributing to this project, you agree +to the terms and conditions of this license. + +.. |Latest Documentation Status| image:: https://readthedocs.org/projects/pybind11/badge?version=latest + :target: http://pybind11.readthedocs.org/en/latest +.. |Stable Documentation Status| image:: https://img.shields.io/badge/docs-stable-blue.svg + :target: http://pybind11.readthedocs.org/en/stable +.. |Gitter chat| image:: https://img.shields.io/gitter/room/gitterHQ/gitter.svg + :target: https://gitter.im/pybind/Lobby +.. |CI| image:: https://github.com/pybind/pybind11/workflows/CI/badge.svg + :target: https://github.com/pybind/pybind11/actions +.. |Build status| image:: https://ci.appveyor.com/api/projects/status/riaj54pn4h08xy40?svg=true + :target: https://ci.appveyor.com/project/wjakob/pybind11 +.. |PyPI package| image:: https://img.shields.io/pypi/v/pybind11.svg + :target: https://pypi.org/project/pybind11/ +.. |Conda-forge| image:: https://img.shields.io/conda/vn/conda-forge/pybind11.svg + :target: https://github.com/conda-forge/pybind11-feedstock +.. |Repology| image:: https://repology.org/badge/latest-versions/python:pybind11.svg + :target: https://repology.org/project/python:pybind11/versions +.. |Python Versions| image:: https://img.shields.io/pypi/pyversions/pybind11.svg + :target: https://pypi.org/project/pybind11/ +.. |GitHub Discussions| image:: https://img.shields.io/static/v1?label=Discussions&message=Ask&color=blue&logo=github + :target: https://github.com/pybind/pybind11/discussions +.. |SPEC 4 — Using and Creating Nightly Wheels| image:: https://img.shields.io/badge/SPEC-4-green?labelColor=%23004811&color=%235CA038 + :target: https://scientific-python.org/specs/spec-0004/ diff --git a/local_pybind11/pybind11-3.0.1.dist-info/RECORD b/local_pybind11/pybind11-3.0.1.dist-info/RECORD new file mode 100644 index 000000000..305d3c37f --- /dev/null +++ b/local_pybind11/pybind11-3.0.1.dist-info/RECORD @@ -0,0 +1,84 @@ +../../bin/pybind11-config,sha256=MQQCbAQzcC7SfjebYRmlCz8NhRqh-gwwJWzQj2n1MBs,194 +pybind11-3.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +pybind11-3.0.1.dist-info/METADATA,sha256=NwyJdnf7PoRa1sahxbcAKDhGLm4T9yqfNQ1nsX_XgoY,9972 +pybind11-3.0.1.dist-info/RECORD,, +pybind11-3.0.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pybind11-3.0.1.dist-info/WHEEL,sha256=RvrF-7uxi1luUPlepZTxlP8hTMhuH1uDO6xLazIetwc,96 +pybind11-3.0.1.dist-info/entry_points.txt,sha256=G0kSYXdF_FFpb9vCIdFK_2Z_sKueUB5ZRTh4VW7fRTg,156 +pybind11-3.0.1.dist-info/licenses/LICENSE,sha256=g5ZbhDuY9nDTqFvQQe1LNyyOxQ17SlmVqDrGl7pnXcs,1684 +pybind11/__init__.py,sha256=JAglzfa8wABNM94gpzQSos84wolF_mk1MrvmkLbZxr0,459 +pybind11/__main__.py,sha256=Om1TLSoVHDZcDB0B0M91N-LekUgaBT098Eb48CSW98A,2966 +pybind11/__pycache__/__init__.cpython-313.pyc,, +pybind11/__pycache__/__main__.cpython-313.pyc,, +pybind11/__pycache__/_version.cpython-313.pyc,, +pybind11/__pycache__/commands.cpython-313.pyc,, +pybind11/__pycache__/setup_helpers.cpython-313.pyc,, +pybind11/_version.py,sha256=kMz5J0qOM6W-w5ZrgSqhSg12V6KhYkx5dorVIcuSABE,231 +pybind11/commands.py,sha256=V43hKb7VE_abYZvaO-TpJLOU65n6W3ZrdYHGF3G3qUs,1243 +pybind11/include/pybind11/attr.h,sha256=vebbnaWl9emUIhf2kxjBdVrpQ7dcrSh7TfEsyyPSd9Q,26223 +pybind11/include/pybind11/buffer_info.h,sha256=_FcQisqdpphfWXKeCGNv3Gq5ivy1z-qF3d1Noeteaok,7778 +pybind11/include/pybind11/cast.h,sha256=fTPbBo5s8y-xOEoF8Y91RvaDMSKEwz_-5VRvP4N2xsk,93239 +pybind11/include/pybind11/chrono.h,sha256=sAvp8lFFMjk21UR3z6xqwHljwLhLhmyeRKAVgCgOmuI,8613 +pybind11/include/pybind11/common.h,sha256=ATg9Bt1pwF8qnNuI086fprM4CUTdrZdk_g2HXE1Sf6A,120 +pybind11/include/pybind11/complex.h,sha256=AaDZ-rEmK4tFaue-K9P5y3TxxnaQF6JwZ_6LAzkdLQI,2096 +pybind11/include/pybind11/conduit/README.txt,sha256=iERT5lUz_gCvLUVaTdqpvpxWFSBQaeP6MN8g7fqfqkI,298 +pybind11/include/pybind11/conduit/pybind11_conduit_v1.h,sha256=Ga99mDEHaQoCUOU94CV6svOUyZ0rIEbL8M24RkP_3Pw,4153 +pybind11/include/pybind11/conduit/pybind11_platform_abi_id.h,sha256=VUZW4H7iy9vVUzgLdJ1992wl4NnN6sMCWdtZn1Yxd_Y,3991 +pybind11/include/pybind11/conduit/wrap_include_python_h.h,sha256=uGyR7aUeOB6EEZGfb19TZ8sycP7ebZ2w5xMaIBMibTM,2069 +pybind11/include/pybind11/critical_section.h,sha256=Yly5WXAyGP5y9y-X0DjyGAH2dtEqXuWnI-TrnWMHdYk,1610 +pybind11/include/pybind11/detail/class.h,sha256=VYVUcXMJTgynGn2KR1NS87btNzZs9I2TxQEQP9c2VHM,31236 +pybind11/include/pybind11/detail/common.h,sha256=OMhAeFejhkoaLmFByDfdH51k7MTcTTh6KxEzrY31pgw,59916 +pybind11/include/pybind11/detail/cpp_conduit.h,sha256=JzhMXFgLYUKlYWX-hcyfVQV6RrRQIOaQ5TnNgSDPBMQ,2553 +pybind11/include/pybind11/detail/descr.h,sha256=d308RZ93L0FLE7MKSGfX3JmTrCY8w_OvUhEGhEviGnQ,8061 +pybind11/include/pybind11/detail/dynamic_raw_ptr_cast_if_possible.h,sha256=1qWaNlH6-j9n5VoEF70zCOrNz6JpFLFu6gqdYtNFL34,1176 +pybind11/include/pybind11/detail/exception_translation.h,sha256=MsiLvxqQF6Cs86EWkmA9dU0FSc7SV7VOGPcTmNdHqwc,2593 +pybind11/include/pybind11/detail/function_record_pyobject.h,sha256=P6CKWg2kj4IHc0ZyCBYpN-yhj6ITibakJcS4GvYIJpI,7738 +pybind11/include/pybind11/detail/init.h,sha256=10bs-B1oL9qy49HTwdEaotv9nO_pSLMHheQUHZwZ-B8,23073 +pybind11/include/pybind11/detail/internals.h,sha256=YK6RUWZBdb0ChIQino7mkSXpA_DwJsylAq6o86BHMpo,32201 +pybind11/include/pybind11/detail/native_enum_data.h,sha256=Oz4rQR_JLUw4mmg3oMRjCoX9iGT0BC-RcG4gp9D3ksQ,7633 +pybind11/include/pybind11/detail/pybind11_namespace_macros.h,sha256=HUAuCahRetQ2cadpkUuL4rNpAuzxAWHBgCCCVG8F7eQ,3501 +pybind11/include/pybind11/detail/struct_smart_holder.h,sha256=5Kjp3yxcKYsrTJ7vyvn_4EK59BkSH38ozpFRv1PF8wE,15072 +pybind11/include/pybind11/detail/type_caster_base.h,sha256=I9E5F8FV7zvcovJM19T28rIHdoqMlhU2PtShIxEDwgc,66193 +pybind11/include/pybind11/detail/typeid.h,sha256=jw5pr9m72vkDsloT8vxl9wj17VJGcEdXDyziBlt89Js,1625 +pybind11/include/pybind11/detail/using_smart_holder.h,sha256=sD2hYVl5H4u8UImqmi5ST9oftDQUPkJ6yR3qR3leQkQ,540 +pybind11/include/pybind11/detail/value_and_holder.h,sha256=NFH60tNJk6LqS1WgRagiI8irkoh5ATqoV0EDV2QZeKE,3677 +pybind11/include/pybind11/eigen.h,sha256=-HmSA1kgwCQ-GHUt7PHtTEc-vxqw9xARpF8PHWJip28,316 +pybind11/include/pybind11/eigen/common.h,sha256=dIeqmK7IzW5K4k2larPnA1A863rDp38U9YbNIwiIyYk,378 +pybind11/include/pybind11/eigen/matrix.h,sha256=R3Pp9BwEpPKCQcl6AeOXQBgeRqKJVmQ340D7ggG1DcY,32590 +pybind11/include/pybind11/eigen/tensor.h,sha256=sRlIdsklN1-Xp8Bd4kaAF8e9Wzw13W-JBevvfp6pj4Y,18660 +pybind11/include/pybind11/embed.h,sha256=J58UlVLoyErtlBLhMh1SG3ddQZGHjwr1cUlErigrIQA,12636 +pybind11/include/pybind11/eval.h,sha256=XB81cxFtBgeTuCVbT947IgITQ1fnwrQQVwQHjngiarE,4862 +pybind11/include/pybind11/functional.h,sha256=6RnBoyINKpqT6tPf_Wy0Rg2ijqztgMnmjPvlju1EJUo,5344 +pybind11/include/pybind11/gil.h,sha256=bQbpSuQNafii_9WP9KU675waSFp_uVVPH54gMXzGob0,6743 +pybind11/include/pybind11/gil_safe_call_once.h,sha256=k3tJI8FZ6HAihw545nmMy5RQ1n4NOe6dMK1vpiotk1o,4054 +pybind11/include/pybind11/gil_simple.h,sha256=AuO9mC1devdjTnXOe0aJGsnJuSC3nerWnG17HVQQX9k,1185 +pybind11/include/pybind11/iostream.h,sha256=K5rPXoCYN325r1PptcJCIhPhgtRtTJQjMr7bvUIOwxk,8862 +pybind11/include/pybind11/native_enum.h,sha256=1lygzHNaQg9GIPSu7H72-fc1duWcTRWFYuTKweE_riU,2477 +pybind11/include/pybind11/numpy.h,sha256=-JB0miCYKBkLMcfm2AnHMYGRatOMJO3J_UJr5sfJ2BE,91577 +pybind11/include/pybind11/operators.h,sha256=224RoAXcv1la4NNY9rQ3aD_AeC8S9ZKx3HVK1O8B4MU,9103 +pybind11/include/pybind11/options.h,sha256=qXvmnj--9fZSp56NYefnB3W5V17ppHlY1Srgo3DNBpw,2734 +pybind11/include/pybind11/pybind11.h,sha256=XrPy7iJL_SKH449j6iGfNpFSX2nk19u2cQ3nwsQmwPo,160679 +pybind11/include/pybind11/pytypes.h,sha256=yZHlh8YGKS8MQ8G6tzYBpZ0TxQoiEOc9iy639J1K7aE,102198 +pybind11/include/pybind11/stl.h,sha256=6oO0ogJ7EGM5P5VG4dMsZjDKnr1wIuCRHcAhDkJZyc4,24742 +pybind11/include/pybind11/stl/filesystem.h,sha256=ttMpBWKQ_j6-y_TQ7Q0XdnX_9Peb-jXL4B0tbVJk18w,4073 +pybind11/include/pybind11/stl_bind.h,sha256=ZUNjJLmMTNH_HdgvyLWNpD9lmo6Ry-nJPKD2hh9a0Ks,29646 +pybind11/include/pybind11/subinterpreter.h,sha256=OsnO6BMz1FaC9y3C4WQ9lEjxaNUMJnX21ApoJFWkcOs,11467 +pybind11/include/pybind11/trampoline_self_life_support.h,sha256=-TX9w5TxI1XX3AG255lMLdiCyR-dZkM321wFsedynx8,2673 +pybind11/include/pybind11/type_caster_pyobject_ptr.h,sha256=H7pKBYTvUlibiJQEcKmeAkygSQwoCkuIyukNSDmVq-U,1929 +pybind11/include/pybind11/typing.h,sha256=8gMTwmNvXa-8_BNQ0PaR1K3mZrWJlpFXiVslVRC_Yo4,8891 +pybind11/include/pybind11/warnings.h,sha256=idcBNK5eEXxYBfPeVuycLxcgMrKuvRzQI33BapJ8G4g,2368 +pybind11/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pybind11/setup_helpers.py,sha256=7Igm9dlwT93mQHSYB1Nq07nEJNX2fmhdYAQM0WMOxvU,17488 +pybind11/share/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pybind11/share/__pycache__/__init__.cpython-313.pyc,, +pybind11/share/cmake/pybind11/FindPythonLibsNew.cmake,sha256=xWqtRNU5ppQSNjGSmDY7KgIyKbegz768IkNfGaWx5DM,12772 +pybind11/share/cmake/pybind11/pybind11Common.cmake,sha256=nYcbd5mVglDFkf-RNbkEApL-XPE9Rbp_egI7lyrCY_E,15993 +pybind11/share/cmake/pybind11/pybind11Config.cmake,sha256=LzrsyS4YLDZ3P-5cz3SWEu3DtuW3m3lFij6nt5OfSOI,8376 +pybind11/share/cmake/pybind11/pybind11ConfigVersion.cmake,sha256=kzotpxbMTZxlq6vfVQ826UH0DL-028gE1aI8TInfC4k,1402 +pybind11/share/cmake/pybind11/pybind11GuessPythonExtSuffix.cmake,sha256=-kCn2M0PKzfkqnZLawu1A2_AzkTJxwjuBPb0ELSFBQI,3328 +pybind11/share/cmake/pybind11/pybind11NewTools.cmake,sha256=xj2sgwSkqt-g-2fzsKv9sdpuqjvZCcDxtnDDM7PtFvU,12952 +pybind11/share/cmake/pybind11/pybind11Targets.cmake,sha256=wNKPyP7nBhRwzKUhjngZ1MTwcjYzqqagFmpjLTerDMQ,4271 +pybind11/share/cmake/pybind11/pybind11Tools.cmake,sha256=ZFgc9b-32cODVG5M0zCPzJaxnE36ngtAh-zdh7F7FjA,7906 +pybind11/share/pkgconfig/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pybind11/share/pkgconfig/__pycache__/__init__.cpython-313.pyc,, +pybind11/share/pkgconfig/pybind11.pc,sha256=aE8x6u70o5qEUfzutKq0PeTHz8gC7YM7H_Hp8aDDzTQ,170 diff --git a/local_pybind11/pybind11-3.0.1.dist-info/REQUESTED b/local_pybind11/pybind11-3.0.1.dist-info/REQUESTED new file mode 100644 index 000000000..e69de29bb diff --git a/local_pybind11/pybind11-3.0.1.dist-info/WHEEL b/local_pybind11/pybind11-3.0.1.dist-info/WHEEL new file mode 100644 index 000000000..6f06dbc5c --- /dev/null +++ b/local_pybind11/pybind11-3.0.1.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: scikit-build-core 0.11.5 +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/local_pybind11/pybind11-3.0.1.dist-info/entry_points.txt b/local_pybind11/pybind11-3.0.1.dist-info/entry_points.txt new file mode 100644 index 000000000..f58bb807a --- /dev/null +++ b/local_pybind11/pybind11-3.0.1.dist-info/entry_points.txt @@ -0,0 +1,9 @@ +[pipx.run] +pybind11 = pybind11.__main__:main + +[pkg_config] +pybind11 = pybind11.share.pkgconfig + +[console_scripts] +pybind11-config = pybind11.__main__:main + diff --git a/local_pybind11/pybind11-3.0.1.dist-info/licenses/LICENSE b/local_pybind11/pybind11-3.0.1.dist-info/licenses/LICENSE new file mode 100644 index 000000000..e466b0dfd --- /dev/null +++ b/local_pybind11/pybind11-3.0.1.dist-info/licenses/LICENSE @@ -0,0 +1,29 @@ +Copyright (c) 2016 Wenzel Jakob , All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Please also refer to the file .github/CONTRIBUTING.md, which clarifies licensing of +external contributions to this project including patches, pull requests, etc. diff --git a/local_pybind11/pybind11/__init__.py b/local_pybind11/pybind11/__init__.py new file mode 100644 index 000000000..e9d033c4b --- /dev/null +++ b/local_pybind11/pybind11/__init__.py @@ -0,0 +1,19 @@ +from __future__ import annotations + +import sys + +if sys.version_info < (3, 8): # noqa: UP036 + msg = "pybind11 does not support Python < 3.8. v2.13 was the last release supporting Python 3.7." + raise ImportError(msg) + + +from ._version import __version__, version_info +from .commands import get_cmake_dir, get_include, get_pkgconfig_dir + +__all__ = ( + "version_info", + "__version__", + "get_include", + "get_cmake_dir", + "get_pkgconfig_dir", +) diff --git a/local_pybind11/pybind11/__main__.py b/local_pybind11/pybind11/__main__.py new file mode 100644 index 000000000..21c3cd9ab --- /dev/null +++ b/local_pybind11/pybind11/__main__.py @@ -0,0 +1,97 @@ +# pylint: disable=missing-function-docstring +from __future__ import annotations + +import argparse +import functools +import re +import sys +import sysconfig + +from ._version import __version__ +from .commands import get_cmake_dir, get_include, get_pkgconfig_dir + +# This is the conditional used for os.path being posixpath +if "posix" in sys.builtin_module_names: + from shlex import quote +elif "nt" in sys.builtin_module_names: + # See https://github.com/mesonbuild/meson/blob/db22551ed9d2dd7889abea01cc1c7bba02bf1c75/mesonbuild/utils/universal.py#L1092-L1121 + # and the original documents: + # https://docs.microsoft.com/en-us/cpp/c-language/parsing-c-command-line-arguments and + # https://blogs.msdn.microsoft.com/twistylittlepassagesallalike/2011/04/23/everyone-quotes-command-line-arguments-the-wrong-way/ + UNSAFE = re.compile("[ \t\n\r]") + + def quote(s: str) -> str: + if s and not UNSAFE.search(s): + return s + + # Paths cannot contain a '"' on Windows, so we don't need to worry + # about nuanced counting here. + return f'"{s}\\"' if s.endswith("\\") else f'"{s}"' +else: + + def quote(s: str) -> str: + return s + + +def print_includes() -> None: + dirs = [ + sysconfig.get_path("include"), + sysconfig.get_path("platinclude"), + get_include(), + ] + + # Make unique but preserve order + unique_dirs = [] + for d in dirs: + if d and d not in unique_dirs: + unique_dirs.append(d) + + print(" ".join(quote(f"-I{d}") for d in unique_dirs)) + + +def main() -> None: + make_parser = functools.partial(argparse.ArgumentParser, allow_abbrev=False) + if sys.version_info >= (3, 14): + make_parser = functools.partial(make_parser, color=True, suggest_on_error=True) + parser = make_parser() + parser.add_argument( + "--version", + action="version", + version=__version__, + help="Print the version and exit.", + ) + parser.add_argument( + "--includes", + action="store_true", + help="Include flags for both pybind11 and Python headers.", + ) + parser.add_argument( + "--cmakedir", + action="store_true", + help="Print the CMake module directory, ideal for setting -Dpybind11_ROOT in CMake.", + ) + parser.add_argument( + "--pkgconfigdir", + action="store_true", + help="Print the pkgconfig directory, ideal for setting $PKG_CONFIG_PATH.", + ) + parser.add_argument( + "--extension-suffix", + action="store_true", + help="Print the extension for a Python module", + ) + args = parser.parse_args() + if not sys.argv[1:]: + parser.print_help() + if args.includes: + print_includes() + if args.cmakedir: + print(quote(get_cmake_dir())) + if args.pkgconfigdir: + print(quote(get_pkgconfig_dir())) + if args.extension_suffix: + print(sysconfig.get_config_var("EXT_SUFFIX")) + + +if __name__ == "__main__": + main() diff --git a/local_pybind11/pybind11/__pycache__/__init__.cpython-313.pyc b/local_pybind11/pybind11/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..50fea84fd043d451b93d5664ddd48598be81f8d7 GIT binary patch literal 643 zcmYLFzi-n(6h8YB+p(Jg3Jev)DVv8ngs7sFiX~#ekr2WYQlyg;UtFvHrFZ9|bb|k& z3x5QE3ky{T;3Nc6r)-rnuyU8k;tk)uclW;UzV|l$zKc}!@gVzZAatvXHt;SnHbNzz zQG_C6ib4YnqH}XBVJPiCAP+$=~?qT3cH?3NGK*t9e!?qY+6e z#);}8ys7I71bMp>XH`i~$v8L;$i>rOG$tQnPQ)1_dCUa?ma~|%mXMWc%NYmHg0*(+ zo6@87f&o`wQ!4k`G%J^tk7Yk)f-Z{qoY5o$>FF{n7kQH~c~2MhdAg{|WtQr9zYE$l z*c$ZWp{K!9;P<6V>9P?GFiJrWC^290EkWXfr_y^}=(%12R3M$!)K*M7i>fH%GT}SL zt+tkxHl=Z%Q~CvMREgyAP!#pB&gw%EgEDwHdY+1APLGCpHXqj8m8oO5(;-#EWP;M5 zUP0>pR}R#`{;x8~pf(%RWwix(}}wH}1i= Z&cR;`8Bczr$u*kXbu7>PWWxi+{|7<_tLp#& literal 0 HcmV?d00001 diff --git a/local_pybind11/pybind11/__pycache__/__main__.cpython-313.pyc b/local_pybind11/pybind11/__pycache__/__main__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8a33a739dc05e0d772ee5cde5d0334e640603e90 GIT binary patch literal 3941 zcmahMO>+}Rwr4aWjWm*M$)DH;24e$Ct?W2Juz@87CI+nXM>IG~AyZRhX)I47k3`Ri z7}ciAwN+bjHmTsPg^l;L9QF`$;+Vt!fIT7vE2VKIhineqoPs^PhJ5zB;efEkB-+_AO&UlEFX(JrSlj^WZkmzj_#Ow%btEp52A~jcEi9ntZ7=z zLqb`@(bCKM$A*?MF_G!iw9>g^#vl^8CJ&r z#B`QGN6xmXP6`FA z-Gtj6D%`~2xrlXL0NCTut)d^~;O!5;zV_#9cSoungXNCFT3h?t#VrZ#+yD2gf4lmP zP~96Z?~SiV)<@P4uB&UM2hyqgAKbrwKmA?g{wPeI0UNaAx~Z7#xi*IH^(KZ8oSzD^9%(|9YRP( z3QGB1BGr?mhS}9rp$E9NHN(l3(j6hZP)wXAJ~uw(LJoqf5iFdt!y;6(qci}{0B{ga zr$GQZfy5S<0{QDrg%iW*Xj9r7=#B^ygRQ8FJR=(mZx*KZ%+ zcxOZ3P&c~2esBG~ZxjEs1t9oC?_MtEC4T#+T~7f-Vi`eqmN30@;?)ZUh!-NVLy7QF z-n1a51jr;dk&Bjjy~xsvjrY?-!J9zjhRoreg5nq;!QjZwLAQ$jBSorG&qJwaW2_<# zZZ>DXtw^y=sqKrUBasA)H z1HXtU9DOb!F|c;<){)PTl%u2f5|!v^B{2F}82h#7Q{9;7_d)+=&ri|2Vl7EyW>-@= zl^^3Rl!9bkZ%OvBxwHDHdQScmk|PA+o1$k9sRI0oV-P8GXgm2s%y7xjPOfyOdR1R4 z?5?Yl>K_vn8Z|GY4XCmjR6}E)S5kz5qUE&|tw0fZEkzV4+L{y*SGMiZ%?1|#!mUNO z@h+sct4L@*Etyu94QQU*)m(m{6`!PuZdY?Nj1HDb?QxMicDB1lgSx}OIFC#Ic)U@F z5MKi*_0H1lr8rB5(pXY-E29`IrZYqzYduYi8T>ZzCc=`DE0hB9cq0SbBw#yvY-kQH z8l|I`>UmjN%;{NMS=@f{;8Dmb@$>FkT5@LQvSL~a+dNbX$K%ba zin2eq&Az$*dfo%Gi3{5J%=E;i3)<}2%NK`A(RkcgaSV$Vc5%D7xM;4F4sY{q;+TlK z($KuF2c`*(1m3@LSySgGCN5oxbrSz#(E`=-Ih*(jI(AGwM;Ill?P7!Yp@)hT}^EI0##pE+1IskqT=h{?A%}N zJp8cp@Hg^z#~vgcKzH}r)yHUD(xvtdmc%>HJ|+1r=NYgDRn-Qx|@^Gm&Wa>zsyv^1COLZSgrcH z;eS(t^+)Z4mG;Ax@R3JSjA8n!zCMaEtKmZr!-wwvz7jt6SUSGtLDF9K5EIEQpJM`U zr&jdX4%iACP7z!960AU&PEv$0owtlw2MK7}ViB;0reT_T@Cn+{%t&}_;4wO5{vf%( zeCqBfrSr?nkX~#|{fbpIb$4oCD4IElVXYn>nx!urHWBTmoUy_jk@#S1!OR&Lo*cyd z6;o%S!c$@p1b*}(rck{?lTO!poxzs@LCZh81l^X05mg|*+LJK?f(#XKdt}( literal 0 HcmV?d00001 diff --git a/local_pybind11/pybind11/__pycache__/_version.cpython-313.pyc b/local_pybind11/pybind11/__pycache__/_version.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c2c5f74dbbf50d6c979b86aecdaad64a6da14fe4 GIT binary patch literal 779 zcmZXR&ubGw6vyA}?B@5H{)k#?v1^;l9-3_^#ae0`4}vHbbZLdOuq1X9SJK^OW)f`i zPeg=Y;cUsUc@9u^w8X7fy%@tGi;N zc&RR$RcG32cvUOh5cdKfUDfl~ibcz5xs0RWLbxI0jtCsw%p#_dW}Zj01xE_i`VX=L zJH@B1$NGwr0T10f01i*Wn_q5r$Ndbyp&SPzsYQffXKsGYpnQCzEq^ z*LNR;Y@X?uN80!hnnS$HyIkqLx$yeR^E)qZy(sULG5N_={J1?dj1UWprrKR7DHlw} zm@Ash-%KJElZ@^JeX}6G#<_Fw(wxGxO%n z$NSB*54yWm1f^RVvwoEkdchlh>1ry%!4IH3LK@P91$0v&0_M87AQEv|j0Jr2P8|z% zbYFXgW!N9@)XRZ6q1p0lqG$n4(WF7NDz6G8s0B5d>m&qPm#3*|F%tTnPm2gFtlPHZ z>aOM3bkS%z^IY;HNeBrC!_fN(-S#@Uh>2~rt;AXv(Cz@`cKf)RFxQ%63;)4S+v%|@ zA9I17mHlfuv;*;k9UODbOM>s`z1CiIIM0$WftJJx6cI~AjhSwN*x1dOIIp`I>^e=o zn6&KF>@2oyBU?zBIAsyja2-;d!C!!F#-h-$3_Xj-3e+THs!q~{oN2q*qPSo~Uuqib zb_(b8B2Jo^m^tSgGc}_!rR6dbV4_2r%$H^Is$gsD>?hUqmZL>ys^*~d{gmyhPH{CO94WV+{PFQ(l>GBFp;TFGd> z=w=)ns^;mUhLg*|Ch1JR$iiTqXzh)>0q%nE(Jw))qn9e`AE?C3@yc>}`N#3c#m3p$ z^~Js3zRF~IvNBzs{+`s5SB>6J*BACiMr-kEymqI0=gH#k$fcc; zOW$3t%b));1mXZZBZCXSaPB;Ee+K2WWn(~BzG3nv6x;ZjUQ-GEXLSHX@^g0NDCWwa5)h<*o)aI-6Thf#GcKTVVF?6#o z59}$S&9#lS&HEeo>;3QVDpNbk)bpP4dT@MS)z+`j)+7{Pq)! zoSu?7{&JxF&x}Z~WJE4~bRr}9yJ^F*SFH4*yrYsgVVf+}9xE-J28^~F?7>0$!8t^J zpxytE=##g>;7Ih(@aT8UIRWRuhJW-b2#)|f<|T%E)q7i4w%>X-)fl~2mxqtUe`Z&S z?kLgcJ(Km|G6qfQW>dnn5cTJv*A2UR?_8k#VI?FGmZXeBk;kx^jAO;ZV4~@Lc-9W10X!# Fe*-ql*J}U( literal 0 HcmV?d00001 diff --git a/local_pybind11/pybind11/__pycache__/setup_helpers.cpython-313.pyc b/local_pybind11/pybind11/__pycache__/setup_helpers.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..15e60b4807c5102a1624ef8429e10ec22bd7ab99 GIT binary patch literal 21400 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 j$3ur;-#=%2YN-HkG9L_AczP>@?^l%dZnl2kD int | str: + try: + return int(s) + except ValueError: + return s + + +__version__ = "3.0.1" +version_info = tuple(_to_int(s) for s in __version__.split(".")) diff --git a/local_pybind11/pybind11/commands.py b/local_pybind11/pybind11/commands.py new file mode 100644 index 000000000..d535b6cca --- /dev/null +++ b/local_pybind11/pybind11/commands.py @@ -0,0 +1,39 @@ +from __future__ import annotations + +import os + +DIR = os.path.abspath(os.path.dirname(__file__)) + + +def get_include(user: bool = False) -> str: # noqa: ARG001 + """ + Return the path to the pybind11 include directory. The historical "user" + argument is unused, and may be removed. + """ + installed_path = os.path.join(DIR, "include") + source_path = os.path.join(os.path.dirname(DIR), "include") + return installed_path if os.path.exists(installed_path) else source_path + + +def get_cmake_dir() -> str: + """ + Return the path to the pybind11 CMake module directory. + """ + cmake_installed_path = os.path.join(DIR, "share", "cmake", "pybind11") + if os.path.exists(cmake_installed_path): + return cmake_installed_path + + msg = "pybind11 not installed, installation required to access the CMake files" + raise ImportError(msg) + + +def get_pkgconfig_dir() -> str: + """ + Return the path to the pybind11 pkgconfig directory. + """ + pkgconfig_installed_path = os.path.join(DIR, "share", "pkgconfig") + if os.path.exists(pkgconfig_installed_path): + return pkgconfig_installed_path + + msg = "pybind11 not installed, installation required to access the pkgconfig files" + raise ImportError(msg) diff --git a/local_pybind11/pybind11/include/pybind11/attr.h b/local_pybind11/pybind11/include/pybind11/attr.h new file mode 100644 index 000000000..9b631fa48 --- /dev/null +++ b/local_pybind11/pybind11/include/pybind11/attr.h @@ -0,0 +1,722 @@ +/* + pybind11/attr.h: Infrastructure for processing custom + type and function attributes + + Copyright (c) 2016 Wenzel Jakob + + All rights reserved. Use of this source code is governed by a + BSD-style license that can be found in the LICENSE file. +*/ + +#pragma once + +#include "detail/common.h" +#include "cast.h" +#include "trampoline_self_life_support.h" + +#include + +PYBIND11_NAMESPACE_BEGIN(PYBIND11_NAMESPACE) + +/// \addtogroup annotations +/// @{ + +/// Annotation for methods +struct is_method { + handle class_; + explicit is_method(const handle &c) : class_(c) {} +}; + +/// Annotation for setters +struct is_setter {}; + +/// Annotation for operators +struct is_operator {}; + +/// Annotation for classes that cannot be subclassed +struct is_final {}; + +/// Annotation for parent scope +struct scope { + handle value; + explicit scope(const handle &s) : value(s) {} +}; + +/// Annotation for documentation +struct doc { + const char *value; + explicit doc(const char *value) : value(value) {} +}; + +/// Annotation for function names +struct name { + const char *value; + explicit name(const char *value) : value(value) {} +}; + +/// Annotation indicating that a function is an overload associated with a given "sibling" +struct sibling { + handle value; + explicit sibling(const handle &value) : value(value.ptr()) {} +}; + +/// Annotation indicating that a class derives from another given type +template +struct base { + + PYBIND11_DEPRECATED( + "base() was deprecated in favor of specifying 'T' as a template argument to class_") + base() = default; +}; + +/// Keep patient alive while nurse lives +template +struct keep_alive {}; + +/// Annotation indicating that a class is involved in a multiple inheritance relationship +struct multiple_inheritance {}; + +/// Annotation which enables dynamic attributes, i.e. adds `__dict__` to a class +struct dynamic_attr {}; + +/// Annotation which enables the buffer protocol for a type +struct buffer_protocol {}; + +/// Annotation which enables releasing the GIL before calling the C++ destructor of wrapped +/// instances (pybind/pybind11#1446). +struct release_gil_before_calling_cpp_dtor {}; + +/// Annotation which requests that a special metaclass is created for a type +struct metaclass { + handle value; + + PYBIND11_DEPRECATED("py::metaclass() is no longer required. It's turned on by default now.") + metaclass() = default; + + /// Override pybind11's default metaclass + explicit metaclass(handle value) : value(value) {} +}; + +/// Specifies a custom callback with signature `void (PyHeapTypeObject*)` that +/// may be used to customize the Python type. +/// +/// The callback is invoked immediately before `PyType_Ready`. +/// +/// Note: This is an advanced interface, and uses of it may require changes to +/// work with later versions of pybind11. You may wish to consult the +/// implementation of `make_new_python_type` in `detail/classes.h` to understand +/// the context in which the callback will be run. +struct custom_type_setup { + using callback = std::function; + + explicit custom_type_setup(callback value) : value(std::move(value)) {} + + callback value; +}; + +/// Annotation that marks a class as local to the module: +struct module_local { + const bool value; + constexpr explicit module_local(bool v = true) : value(v) {} +}; + +/// Annotation to mark enums as an arithmetic type +struct arithmetic {}; + +/// Mark a function for addition at the beginning of the existing overload chain instead of the end +struct prepend {}; + +/** \rst + A call policy which places one or more guard variables (``Ts...``) around the function call. + + For example, this definition: + + .. code-block:: cpp + + m.def("foo", foo, py::call_guard()); + + is equivalent to the following pseudocode: + + .. code-block:: cpp + + m.def("foo", [](args...) { + T scope_guard; + return foo(args...); // forwarded arguments + }); + \endrst */ +template +struct call_guard; + +template <> +struct call_guard<> { + using type = detail::void_type; +}; + +template +struct call_guard { + static_assert(std::is_default_constructible::value, + "The guard type must be default constructible"); + + using type = T; +}; + +template +struct call_guard { + struct type { + T guard{}; // Compose multiple guard types with left-to-right default-constructor order + typename call_guard::type next{}; + }; +}; + +/// @} annotations + +PYBIND11_NAMESPACE_BEGIN(detail) +/* Forward declarations */ +enum op_id : int; +enum op_type : int; +struct undefined_t; +template +struct op_; +void keep_alive_impl(size_t Nurse, size_t Patient, function_call &call, handle ret); + +/// Internal data structure which holds metadata about a keyword argument +struct argument_record { + const char *name; ///< Argument name + const char *descr; ///< Human-readable version of the argument value + handle value; ///< Associated Python object + bool convert : 1; ///< True if the argument is allowed to convert when loading + bool none : 1; ///< True if None is allowed when loading + + argument_record(const char *name, const char *descr, handle value, bool convert, bool none) + : name(name), descr(descr), value(value), convert(convert), none(none) {} +}; + +/// Internal data structure which holds metadata about a bound function (signature, overloads, +/// etc.) +#define PYBIND11_DETAIL_FUNCTION_RECORD_ABI_ID "v1" // PLEASE UPDATE if the struct is changed. +struct function_record { + function_record() + : is_constructor(false), is_new_style_constructor(false), is_stateless(false), + is_operator(false), is_method(false), is_setter(false), has_args(false), + has_kwargs(false), prepend(false) {} + + /// Function name + char *name = nullptr; /* why no C++ strings? They generate heavier code.. */ + + // User-specified documentation string + char *doc = nullptr; + + /// Human-readable version of the function signature + char *signature = nullptr; + + /// List of registered keyword arguments + std::vector args; + + /// Pointer to lambda function which converts arguments and performs the actual call + handle (*impl)(function_call &) = nullptr; + + /// Storage for the wrapped function pointer and captured data, if any + void *data[3] = {}; + + /// Pointer to custom destructor for 'data' (if needed) + void (*free_data)(function_record *ptr) = nullptr; + + /// Return value policy associated with this function + return_value_policy policy = return_value_policy::automatic; + + /// True if name == '__init__' + bool is_constructor : 1; + + /// True if this is a new-style `__init__` defined in `detail/init.h` + bool is_new_style_constructor : 1; + + /// True if this is a stateless function pointer + bool is_stateless : 1; + + /// True if this is an operator (__add__), etc. + bool is_operator : 1; + + /// True if this is a method + bool is_method : 1; + + /// True if this is a setter + bool is_setter : 1; + + /// True if the function has a '*args' argument + bool has_args : 1; + + /// True if the function has a '**kwargs' argument + bool has_kwargs : 1; + + /// True if this function is to be inserted at the beginning of the overload resolution chain + bool prepend : 1; + + /// Number of arguments (including py::args and/or py::kwargs, if present) + std::uint16_t nargs; + + /// Number of leading positional arguments, which are terminated by a py::args or py::kwargs + /// argument or by a py::kw_only annotation. + std::uint16_t nargs_pos = 0; + + /// Number of leading arguments (counted in `nargs`) that are positional-only + std::uint16_t nargs_pos_only = 0; + + /// Python method object + PyMethodDef *def = nullptr; + + /// Python handle to the parent scope (a class or a module) + handle scope; + + /// Python handle to the sibling function representing an overload chain + handle sibling; + + /// Pointer to next overload + function_record *next = nullptr; +}; +// The main purpose of this macro is to make it easy to pin-point the critically related code +// sections. +#define PYBIND11_ENSURE_PRECONDITION_FOR_FUNCTIONAL_H_PERFORMANCE_OPTIMIZATIONS(...) \ + static_assert( \ + __VA_ARGS__, \ + "Violation of precondition for pybind11/functional.h performance optimizations!") + +/// Special data structure which (temporarily) holds metadata about a bound class +struct type_record { + PYBIND11_NOINLINE type_record() + : multiple_inheritance(false), dynamic_attr(false), buffer_protocol(false), + module_local(false), is_final(false), release_gil_before_calling_cpp_dtor(false) {} + + /// Handle to the parent scope + handle scope; + + /// Name of the class + const char *name = nullptr; + + // Pointer to RTTI type_info data structure + const std::type_info *type = nullptr; + + /// How large is the underlying C++ type? + size_t type_size = 0; + + /// What is the alignment of the underlying C++ type? + size_t type_align = 0; + + /// How large is the type's holder? + size_t holder_size = 0; + + /// The global operator new can be overridden with a class-specific variant + void *(*operator_new)(size_t) = nullptr; + + /// Function pointer to class_<..>::init_instance + void (*init_instance)(instance *, const void *) = nullptr; + + /// Function pointer to class_<..>::dealloc + void (*dealloc)(detail::value_and_holder &) = nullptr; + + /// Function pointer for casting alias class (aka trampoline) pointer to + /// trampoline_self_life_support pointer. Sidesteps cross-DSO RTTI issues + /// on platforms like macOS (see PR #5728 for details). + get_trampoline_self_life_support_fn get_trampoline_self_life_support + = [](void *) -> trampoline_self_life_support * { return nullptr; }; + + /// List of base classes of the newly created type + list bases; + + /// Optional docstring + const char *doc = nullptr; + + /// Custom metaclass (optional) + handle metaclass; + + /// Custom type setup. + custom_type_setup::callback custom_type_setup_callback; + + /// Multiple inheritance marker + bool multiple_inheritance : 1; + + /// Does the class manage a __dict__? + bool dynamic_attr : 1; + + /// Does the class implement the buffer protocol? + bool buffer_protocol : 1; + + /// Is the class definition local to the module shared object? + bool module_local : 1; + + /// Is the class inheritable from python classes? + bool is_final : 1; + + /// Solves pybind/pybind11#1446 + bool release_gil_before_calling_cpp_dtor : 1; + + holder_enum_t holder_enum_v = holder_enum_t::undefined; + + PYBIND11_NOINLINE void add_base(const std::type_info &base, void *(*caster)(void *) ) { + auto *base_info = detail::get_type_info(base, false); + if (!base_info) { + std::string tname(base.name()); + detail::clean_type_id(tname); + pybind11_fail("generic_type: type \"" + std::string(name) + + "\" referenced unknown base type \"" + tname + "\""); + } + + // SMART_HOLDER_BAKEIN_FOLLOW_ON: Refine holder compatibility checks. + bool this_has_unique_ptr_holder = (holder_enum_v == holder_enum_t::std_unique_ptr); + bool base_has_unique_ptr_holder + = (base_info->holder_enum_v == holder_enum_t::std_unique_ptr); + if (this_has_unique_ptr_holder != base_has_unique_ptr_holder) { + std::string tname(base.name()); + detail::clean_type_id(tname); + pybind11_fail("generic_type: type \"" + std::string(name) + "\" " + + (this_has_unique_ptr_holder ? "does not have" : "has") + + " a non-default holder type while its base \"" + tname + "\" " + + (base_has_unique_ptr_holder ? "does not" : "does")); + } + + bases.append((PyObject *) base_info->type); + +#ifdef PYBIND11_BACKWARD_COMPATIBILITY_TP_DICTOFFSET + dynamic_attr |= base_info->type->tp_dictoffset != 0; +#else + dynamic_attr |= (base_info->type->tp_flags & Py_TPFLAGS_MANAGED_DICT) != 0; +#endif + + if (caster) { + base_info->implicit_casts.emplace_back(type, caster); + } + } +}; + +inline function_call::function_call(const function_record &f, handle p) : func(f), parent(p) { + args.reserve(f.nargs); + args_convert.reserve(f.nargs); +} + +/// Tag for a new-style `__init__` defined in `detail/init.h` +struct is_new_style_constructor {}; + +/** + * Partial template specializations to process custom attributes provided to + * cpp_function_ and class_. These are either used to initialize the respective + * fields in the type_record and function_record data structures or executed at + * runtime to deal with custom call policies (e.g. keep_alive). + */ +template +struct process_attribute; + +template +struct process_attribute_default { + /// Default implementation: do nothing + static void init(const T &, function_record *) {} + static void init(const T &, type_record *) {} + static void precall(function_call &) {} + static void postcall(function_call &, handle) {} +}; + +/// Process an attribute specifying the function's name +template <> +struct process_attribute : process_attribute_default { + static void init(const name &n, function_record *r) { r->name = const_cast(n.value); } +}; + +/// Process an attribute specifying the function's docstring +template <> +struct process_attribute : process_attribute_default { + static void init(const doc &n, function_record *r) { r->doc = const_cast(n.value); } +}; + +/// Process an attribute specifying the function's docstring (provided as a C-style string) +template <> +struct process_attribute : process_attribute_default { + static void init(const char *d, function_record *r) { r->doc = const_cast(d); } + static void init(const char *d, type_record *r) { r->doc = d; } +}; +template <> +struct process_attribute : process_attribute {}; + +/// Process an attribute indicating the function's return value policy +template <> +struct process_attribute : process_attribute_default { + static void init(const return_value_policy &p, function_record *r) { r->policy = p; } +}; + +/// Process an attribute which indicates that this is an overloaded function associated with a +/// given sibling +template <> +struct process_attribute : process_attribute_default { + static void init(const sibling &s, function_record *r) { r->sibling = s.value; } +}; + +/// Process an attribute which indicates that this function is a method +template <> +struct process_attribute : process_attribute_default { + static void init(const is_method &s, function_record *r) { + r->is_method = true; + r->scope = s.class_; + } +}; + +/// Process an attribute which indicates that this function is a setter +template <> +struct process_attribute : process_attribute_default { + static void init(const is_setter &, function_record *r) { r->is_setter = true; } +}; + +/// Process an attribute which indicates the parent scope of a method +template <> +struct process_attribute : process_attribute_default { + static void init(const scope &s, function_record *r) { r->scope = s.value; } +}; + +/// Process an attribute which indicates that this function is an operator +template <> +struct process_attribute : process_attribute_default { + static void init(const is_operator &, function_record *r) { r->is_operator = true; } +}; + +template <> +struct process_attribute + : process_attribute_default { + static void init(const is_new_style_constructor &, function_record *r) { + r->is_new_style_constructor = true; + } +}; + +inline void check_kw_only_arg(const arg &a, function_record *r) { + if (r->args.size() > r->nargs_pos && (!a.name || a.name[0] == '\0')) { + pybind11_fail("arg(): cannot specify an unnamed argument after a kw_only() annotation or " + "args() argument"); + } +} + +inline void append_self_arg_if_needed(function_record *r) { + if (r->is_method && r->args.empty()) { + r->args.emplace_back("self", nullptr, handle(), /*convert=*/true, /*none=*/false); + } +} + +/// Process a keyword argument attribute (*without* a default value) +template <> +struct process_attribute : process_attribute_default { + static void init(const arg &a, function_record *r) { + append_self_arg_if_needed(r); + r->args.emplace_back(a.name, nullptr, handle(), !a.flag_noconvert, a.flag_none); + + check_kw_only_arg(a, r); + } +}; + +/// Process a keyword argument attribute (*with* a default value) +template <> +struct process_attribute : process_attribute_default { + static void init(const arg_v &a, function_record *r) { + if (r->is_method && r->args.empty()) { + r->args.emplace_back( + "self", /*descr=*/nullptr, /*parent=*/handle(), /*convert=*/true, /*none=*/false); + } + + if (!a.value) { +#if defined(PYBIND11_DETAILED_ERROR_MESSAGES) + std::string descr("'"); + if (a.name) { + descr += std::string(a.name) + ": "; + } + descr += a.type + "'"; + if (r->is_method) { + if (r->name) { + descr += " in method '" + (std::string) str(r->scope) + "." + + (std::string) r->name + "'"; + } else { + descr += " in method of '" + (std::string) str(r->scope) + "'"; + } + } else if (r->name) { + descr += " in function '" + (std::string) r->name + "'"; + } + pybind11_fail("arg(): could not convert default argument " + descr + + " into a Python object (type not registered yet?)"); +#else + pybind11_fail("arg(): could not convert default argument " + "into a Python object (type not registered yet?). " + "#define PYBIND11_DETAILED_ERROR_MESSAGES or compile in debug mode for " + "more information."); +#endif + } + r->args.emplace_back(a.name, a.descr, a.value.inc_ref(), !a.flag_noconvert, a.flag_none); + + check_kw_only_arg(a, r); + } +}; + +/// Process a keyword-only-arguments-follow pseudo argument +template <> +struct process_attribute : process_attribute_default { + static void init(const kw_only &, function_record *r) { + append_self_arg_if_needed(r); + if (r->has_args && r->nargs_pos != static_cast(r->args.size())) { + pybind11_fail("Mismatched args() and kw_only(): they must occur at the same relative " + "argument location (or omit kw_only() entirely)"); + } + r->nargs_pos = static_cast(r->args.size()); + } +}; + +/// Process a positional-only-argument maker +template <> +struct process_attribute : process_attribute_default { + static void init(const pos_only &, function_record *r) { + append_self_arg_if_needed(r); + r->nargs_pos_only = static_cast(r->args.size()); + if (r->nargs_pos_only > r->nargs_pos) { + pybind11_fail("pos_only(): cannot follow a py::args() argument"); + } + // It also can't follow a kw_only, but a static_assert in pybind11.h checks that + } +}; + +/// Process a parent class attribute. Single inheritance only (class_ itself already guarantees +/// that) +template +struct process_attribute::value>> + : process_attribute_default { + static void init(const handle &h, type_record *r) { r->bases.append(h); } +}; + +/// Process a parent class attribute (deprecated, does not support multiple inheritance) +template +struct process_attribute> : process_attribute_default> { + static void init(const base &, type_record *r) { r->add_base(typeid(T), nullptr); } +}; + +/// Process a multiple inheritance attribute +template <> +struct process_attribute : process_attribute_default { + static void init(const multiple_inheritance &, type_record *r) { + r->multiple_inheritance = true; + } +}; + +template <> +struct process_attribute : process_attribute_default { + static void init(const dynamic_attr &, type_record *r) { r->dynamic_attr = true; } +}; + +template <> +struct process_attribute { + static void init(const custom_type_setup &value, type_record *r) { + r->custom_type_setup_callback = value.value; + } +}; + +template <> +struct process_attribute : process_attribute_default { + static void init(const is_final &, type_record *r) { r->is_final = true; } +}; + +template <> +struct process_attribute : process_attribute_default { + static void init(const buffer_protocol &, type_record *r) { r->buffer_protocol = true; } +}; + +template <> +struct process_attribute : process_attribute_default { + static void init(const metaclass &m, type_record *r) { r->metaclass = m.value; } +}; + +template <> +struct process_attribute : process_attribute_default { + static void init(const module_local &l, type_record *r) { r->module_local = l.value; } +}; + +template <> +struct process_attribute + : process_attribute_default { + static void init(const release_gil_before_calling_cpp_dtor &, type_record *r) { + r->release_gil_before_calling_cpp_dtor = true; + } +}; + +/// Process a 'prepend' attribute, putting this at the beginning of the overload chain +template <> +struct process_attribute : process_attribute_default { + static void init(const prepend &, function_record *r) { r->prepend = true; } +}; + +/// Process an 'arithmetic' attribute for enums (does nothing here) +template <> +struct process_attribute : process_attribute_default {}; + +template +struct process_attribute> : process_attribute_default> {}; + +/** + * Process a keep_alive call policy -- invokes keep_alive_impl during the + * pre-call handler if both Nurse, Patient != 0 and use the post-call handler + * otherwise + */ +template +struct process_attribute> + : public process_attribute_default> { + template = 0> + static void precall(function_call &call) { + keep_alive_impl(Nurse, Patient, call, handle()); + } + template = 0> + static void postcall(function_call &, handle) {} + template = 0> + static void precall(function_call &) {} + template = 0> + static void postcall(function_call &call, handle ret) { + keep_alive_impl(Nurse, Patient, call, ret); + } +}; + +/// Recursively iterate over variadic template arguments +template +struct process_attributes { + static void init(const Args &...args, function_record *r) { + PYBIND11_WORKAROUND_INCORRECT_MSVC_C4100(r); + PYBIND11_WORKAROUND_INCORRECT_GCC_UNUSED_BUT_SET_PARAMETER(r); + using expander = int[]; + (void) expander{ + 0, ((void) process_attribute::type>::init(args, r), 0)...}; + } + static void init(const Args &...args, type_record *r) { + PYBIND11_WORKAROUND_INCORRECT_MSVC_C4100(r); + PYBIND11_WORKAROUND_INCORRECT_GCC_UNUSED_BUT_SET_PARAMETER(r); + using expander = int[]; + (void) expander{0, + (process_attribute::type>::init(args, r), 0)...}; + } + static void precall(function_call &call) { + PYBIND11_WORKAROUND_INCORRECT_MSVC_C4100(call); + using expander = int[]; + (void) expander{0, + (process_attribute::type>::precall(call), 0)...}; + } + static void postcall(function_call &call, handle fn_ret) { + PYBIND11_WORKAROUND_INCORRECT_MSVC_C4100(call, fn_ret); + PYBIND11_WORKAROUND_INCORRECT_GCC_UNUSED_BUT_SET_PARAMETER(fn_ret); + using expander = int[]; + (void) expander{ + 0, (process_attribute::type>::postcall(call, fn_ret), 0)...}; + } +}; + +template +using is_call_guard = is_instantiation; + +/// Extract the ``type`` from the first `call_guard` in `Extras...` (or `void_type` if none found) +template +using extract_guard_t = typename exactly_one_t, Extra...>::type; + +/// Check the number of named arguments at compile time +template ::value...), + size_t self = constexpr_sum(std::is_same::value...)> +constexpr bool expected_num_args(size_t nargs, bool has_args, bool has_kwargs) { + PYBIND11_WORKAROUND_INCORRECT_MSVC_C4100(nargs, has_args, has_kwargs); + return named == 0 || (self + named + size_t(has_args) + size_t(has_kwargs)) == nargs; +} + +PYBIND11_NAMESPACE_END(detail) +PYBIND11_NAMESPACE_END(PYBIND11_NAMESPACE) diff --git a/local_pybind11/pybind11/include/pybind11/buffer_info.h b/local_pybind11/pybind11/include/pybind11/buffer_info.h new file mode 100644 index 000000000..75aec0ba3 --- /dev/null +++ b/local_pybind11/pybind11/include/pybind11/buffer_info.h @@ -0,0 +1,208 @@ +/* + pybind11/buffer_info.h: Python buffer object interface + + Copyright (c) 2016 Wenzel Jakob + + All rights reserved. Use of this source code is governed by a + BSD-style license that can be found in the LICENSE file. +*/ + +#pragma once + +#include "detail/common.h" + +PYBIND11_NAMESPACE_BEGIN(PYBIND11_NAMESPACE) + +PYBIND11_NAMESPACE_BEGIN(detail) + +// Default, C-style strides +inline std::vector c_strides(const std::vector &shape, ssize_t itemsize) { + auto ndim = shape.size(); + std::vector strides(ndim, itemsize); + if (ndim > 0) { + for (size_t i = ndim - 1; i > 0; --i) { + strides[i - 1] = strides[i] * shape[i]; + } + } + return strides; +} + +// F-style strides; default when constructing an array_t with `ExtraFlags & f_style` +inline std::vector f_strides(const std::vector &shape, ssize_t itemsize) { + auto ndim = shape.size(); + std::vector strides(ndim, itemsize); + for (size_t i = 1; i < ndim; ++i) { + strides[i] = strides[i - 1] * shape[i - 1]; + } + return strides; +} + +template +struct compare_buffer_info; + +PYBIND11_NAMESPACE_END(detail) + +/// Information record describing a Python buffer object +struct buffer_info { + void *ptr = nullptr; // Pointer to the underlying storage + ssize_t itemsize = 0; // Size of individual items in bytes + ssize_t size = 0; // Total number of entries + std::string format; // For homogeneous buffers, this should be set to + // format_descriptor::format() + ssize_t ndim = 0; // Number of dimensions + std::vector shape; // Shape of the tensor (1 entry per dimension) + std::vector strides; // Number of bytes between adjacent entries + // (for each per dimension) + bool readonly = false; // flag to indicate if the underlying storage may be written to + + buffer_info() = default; + + buffer_info(void *ptr, + ssize_t itemsize, + const std::string &format, + ssize_t ndim, + detail::any_container shape_in, + detail::any_container strides_in, + bool readonly = false) + : ptr(ptr), itemsize(itemsize), size(1), format(format), ndim(ndim), + shape(std::move(shape_in)), strides(std::move(strides_in)), readonly(readonly) { + if (ndim != (ssize_t) shape.size() || ndim != (ssize_t) strides.size()) { + pybind11_fail("buffer_info: ndim doesn't match shape and/or strides length"); + } + for (size_t i = 0; i < (size_t) ndim; ++i) { + size *= shape[i]; + } + } + + template + buffer_info(T *ptr, + detail::any_container shape_in, + detail::any_container strides_in, + bool readonly = false) + : buffer_info(private_ctr_tag(), + ptr, + sizeof(T), + format_descriptor::format(), + static_cast(shape_in->size()), + std::move(shape_in), + std::move(strides_in), + readonly) {} + + buffer_info(void *ptr, + ssize_t itemsize, + const std::string &format, + ssize_t size, + bool readonly = false) + : buffer_info(ptr, itemsize, format, 1, {size}, {itemsize}, readonly) {} + + template + buffer_info(T *ptr, ssize_t size, bool readonly = false) + : buffer_info(ptr, sizeof(T), format_descriptor::format(), size, readonly) {} + + template + buffer_info(const T *ptr, ssize_t size, bool readonly = true) + : buffer_info( + const_cast(ptr), sizeof(T), format_descriptor::format(), size, readonly) {} + + explicit buffer_info(Py_buffer *view, bool ownview = true) + : buffer_info( + view->buf, + view->itemsize, + view->format, + view->ndim, + {view->shape, view->shape + view->ndim}, + /* Though buffer::request() requests PyBUF_STRIDES, ctypes objects + * ignore this flag and return a view with NULL strides. + * When strides are NULL, build them manually. */ + view->strides + ? std::vector(view->strides, view->strides + view->ndim) + : detail::c_strides({view->shape, view->shape + view->ndim}, view->itemsize), + (view->readonly != 0)) { + // NOLINTNEXTLINE(cppcoreguidelines-prefer-member-initializer) + this->m_view = view; + // NOLINTNEXTLINE(cppcoreguidelines-prefer-member-initializer) + this->ownview = ownview; + } + + buffer_info(const buffer_info &) = delete; + buffer_info &operator=(const buffer_info &) = delete; + + buffer_info(buffer_info &&other) noexcept { (*this) = std::move(other); } + + buffer_info &operator=(buffer_info &&rhs) noexcept { + ptr = rhs.ptr; + itemsize = rhs.itemsize; + size = rhs.size; + format = std::move(rhs.format); + ndim = rhs.ndim; + shape = std::move(rhs.shape); + strides = std::move(rhs.strides); + std::swap(m_view, rhs.m_view); + std::swap(ownview, rhs.ownview); + readonly = rhs.readonly; + return *this; + } + + ~buffer_info() { + if (m_view && ownview) { + PyBuffer_Release(m_view); + delete m_view; + } + } + + Py_buffer *view() const { return m_view; } + Py_buffer *&view() { return m_view; } + + /* True if the buffer item type is equivalent to `T`. */ + // To define "equivalent" by example: + // `buffer_info::item_type_is_equivalent_to(b)` and + // `buffer_info::item_type_is_equivalent_to(b)` may both be true + // on some platforms, but `int` and `unsigned` will never be equivalent. + // For the ground truth, please inspect `detail::compare_buffer_info<>`. + template + bool item_type_is_equivalent_to() const { + return detail::compare_buffer_info::compare(*this); + } + +private: + struct private_ctr_tag {}; + + buffer_info(private_ctr_tag, + void *ptr, + ssize_t itemsize, + const std::string &format, + ssize_t ndim, + detail::any_container &&shape_in, + detail::any_container &&strides_in, + bool readonly) + : buffer_info( + ptr, itemsize, format, ndim, std::move(shape_in), std::move(strides_in), readonly) {} + + Py_buffer *m_view = nullptr; + bool ownview = false; +}; + +PYBIND11_NAMESPACE_BEGIN(detail) + +template +struct compare_buffer_info { + static bool compare(const buffer_info &b) { + // NOLINTNEXTLINE(bugprone-sizeof-expression) Needed for `PyObject *` + return b.format == format_descriptor::format() && b.itemsize == (ssize_t) sizeof(T); + } +}; + +template +struct compare_buffer_info::value>> { + static bool compare(const buffer_info &b) { + return (size_t) b.itemsize == sizeof(T) + && (b.format == format_descriptor::value + || ((sizeof(T) == sizeof(long)) + && b.format == (std::is_unsigned::value ? "L" : "l")) + || ((sizeof(T) == sizeof(size_t)) + && b.format == (std::is_unsigned::value ? "N" : "n"))); + } +}; + +PYBIND11_NAMESPACE_END(detail) +PYBIND11_NAMESPACE_END(PYBIND11_NAMESPACE) diff --git a/local_pybind11/pybind11/include/pybind11/cast.h b/local_pybind11/pybind11/include/pybind11/cast.h new file mode 100644 index 000000000..c635791fe --- /dev/null +++ b/local_pybind11/pybind11/include/pybind11/cast.h @@ -0,0 +1,2361 @@ +/* + pybind11/cast.h: Partial template specializations to cast between + C++ and Python types + + Copyright (c) 2016 Wenzel Jakob + + All rights reserved. Use of this source code is governed by a + BSD-style license that can be found in the LICENSE file. +*/ + +#pragma once + +#include "detail/common.h" +#include "detail/descr.h" +#include "detail/native_enum_data.h" +#include "detail/type_caster_base.h" +#include "detail/typeid.h" +#include "pytypes.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +PYBIND11_NAMESPACE_BEGIN(PYBIND11_NAMESPACE) + +PYBIND11_WARNING_DISABLE_MSVC(4127) + +PYBIND11_NAMESPACE_BEGIN(detail) + +template +class type_caster : public type_caster_base {}; +template +using make_caster = type_caster>; + +// Shortcut for calling a caster's `cast_op_type` cast operator for casting a type_caster to a T +template +typename make_caster::template cast_op_type cast_op(make_caster &caster) { + using result_t = typename make_caster::template cast_op_type; // See PR #4893 + return caster.operator result_t(); +} +template +typename make_caster::template cast_op_type::type> +cast_op(make_caster &&caster) { + using result_t = typename make_caster::template cast_op_type< + typename std::add_rvalue_reference::type>; // See PR #4893 + return std::move(caster).operator result_t(); +} + +template +class type_caster_enum_type { +private: + using Underlying = typename std::underlying_type::type; + +public: + static constexpr auto name = const_name(); + + template + static handle cast(SrcType &&src, return_value_policy, handle parent) { + handle native_enum + = global_internals_native_enum_type_map_get_item(std::type_index(typeid(EnumType))); + if (native_enum) { + return native_enum(static_cast(src)).release(); + } + return type_caster_base::cast( + std::forward(src), + // Fixes https://github.com/pybind/pybind11/pull/3643#issuecomment-1022987818: + return_value_policy::copy, + parent); + } + + template + static handle cast(SrcType *src, return_value_policy policy, handle parent) { + return cast(*src, policy, parent); + } + + bool load(handle src, bool convert) { + handle native_enum + = global_internals_native_enum_type_map_get_item(std::type_index(typeid(EnumType))); + if (native_enum) { + if (!isinstance(src, native_enum)) { + return false; + } + type_caster underlying_caster; + if (!underlying_caster.load(src.attr("value"), convert)) { + pybind11_fail("native_enum internal consistency failure."); + } + value = static_cast(static_cast(underlying_caster)); + return true; + } + if (!pybind11_enum_) { + pybind11_enum_.reset(new type_caster_base()); + } + return pybind11_enum_->load(src, convert); + } + + template + using cast_op_type = detail::cast_op_type; + + // NOLINTNEXTLINE(google-explicit-constructor) + operator EnumType *() { + if (!pybind11_enum_) { + return &value; + } + return pybind11_enum_->operator EnumType *(); + } + + // NOLINTNEXTLINE(google-explicit-constructor) + operator EnumType &() { + if (!pybind11_enum_) { + return value; + } + return pybind11_enum_->operator EnumType &(); + } + +private: + std::unique_ptr> pybind11_enum_; + EnumType value; +}; + +template +struct type_caster_enum_type_enabled : std::true_type {}; + +template +struct type_uses_type_caster_enum_type { + static constexpr bool value + = std::is_enum::value && type_caster_enum_type_enabled::value; +}; + +template +class type_caster::value>> + : public type_caster_enum_type {}; + +template ::value, int> = 0> +bool isinstance_native_enum_impl(handle obj, const std::type_info &tp) { + handle native_enum = global_internals_native_enum_type_map_get_item(tp); + if (!native_enum) { + return false; + } + return isinstance(obj, native_enum); +} + +template ::value, int> = 0> +bool isinstance_native_enum_impl(handle, const std::type_info &) { + return false; +} + +template +bool isinstance_native_enum(handle obj, const std::type_info &tp) { + return isinstance_native_enum_impl>(obj, tp); +} + +template +class type_caster> { +private: + using caster_t = make_caster; + caster_t subcaster; + using reference_t = type &; + using subcaster_cast_op_type = typename caster_t::template cast_op_type; + + static_assert( + std::is_same::type &, subcaster_cast_op_type>::value + || std::is_same::value, + "std::reference_wrapper caster requires T to have a caster with an " + "`operator T &()` or `operator const T &()`"); + +public: + bool load(handle src, bool convert) { return subcaster.load(src, convert); } + static constexpr auto name = caster_t::name; + static handle + cast(const std::reference_wrapper &src, return_value_policy policy, handle parent) { + // It is definitely wrong to take ownership of this pointer, so mask that rvp + if (policy == return_value_policy::take_ownership + || policy == return_value_policy::automatic) { + policy = return_value_policy::automatic_reference; + } + return caster_t::cast(&src.get(), policy, parent); + } + template + using cast_op_type = std::reference_wrapper; + explicit operator std::reference_wrapper() { return cast_op(subcaster); } +}; + +#define PYBIND11_TYPE_CASTER(type, py_name) \ +protected: \ + type value; \ + \ +public: \ + static constexpr auto name = py_name; \ + template >::value, \ + int> \ + = 0> \ + static ::pybind11::handle cast( \ + T_ *src, ::pybind11::return_value_policy policy, ::pybind11::handle parent) { \ + if (!src) \ + return ::pybind11::none().release(); \ + if (policy == ::pybind11::return_value_policy::take_ownership) { \ + auto h = cast(std::move(*src), policy, parent); \ + delete src; \ + return h; \ + } \ + return cast(*src, policy, parent); \ + } \ + operator type *() { return &value; } /* NOLINT(bugprone-macro-parentheses) */ \ + operator type &() { return value; } /* NOLINT(bugprone-macro-parentheses) */ \ + operator type &&() && { return std::move(value); } /* NOLINT(bugprone-macro-parentheses) */ \ + template \ + using cast_op_type = ::pybind11::detail::movable_cast_op_type + +template +using is_std_char_type = any_of, /* std::string */ +#if defined(PYBIND11_HAS_U8STRING) + std::is_same, /* std::u8string */ +#endif + std::is_same, /* std::u16string */ + std::is_same, /* std::u32string */ + std::is_same /* std::wstring */ + >; + +template +struct type_caster::value && !is_std_char_type::value>> { + using _py_type_0 = conditional_t; + using _py_type_1 = conditional_t::value, + _py_type_0, + typename std::make_unsigned<_py_type_0>::type>; + using py_type = conditional_t::value, double, _py_type_1>; + +public: + bool load(handle src, bool convert) { + py_type py_value; + + if (!src) { + return false; + } + +#if !defined(PYPY_VERSION) + auto index_check = [](PyObject *o) { return PyIndex_Check(o); }; +#else + // In PyPy 7.3.3, `PyIndex_Check` is implemented by calling `__index__`, + // while CPython only considers the existence of `nb_index`/`__index__`. + auto index_check = [](PyObject *o) { return hasattr(o, "__index__"); }; +#endif + + if (std::is_floating_point::value) { + if (convert || PyFloat_Check(src.ptr())) { + py_value = (py_type) PyFloat_AsDouble(src.ptr()); + } else { + return false; + } + } else if (PyFloat_Check(src.ptr()) + || (!convert && !PYBIND11_LONG_CHECK(src.ptr()) && !index_check(src.ptr()))) { + return false; + } else { + handle src_or_index = src; + // PyPy: 7.3.7's 3.8 does not implement PyLong_*'s __index__ calls. +#if defined(PYPY_VERSION) + object index; + if (!PYBIND11_LONG_CHECK(src.ptr())) { // So: index_check(src.ptr()) + index = reinterpret_steal(PyNumber_Index(src.ptr())); + if (!index) { + PyErr_Clear(); + if (!convert) + return false; + } else { + src_or_index = index; + } + } +#endif + if (std::is_unsigned::value) { + py_value = as_unsigned(src_or_index.ptr()); + } else { // signed integer: + py_value = sizeof(T) <= sizeof(long) + ? (py_type) PyLong_AsLong(src_or_index.ptr()) + : (py_type) PYBIND11_LONG_AS_LONGLONG(src_or_index.ptr()); + } + } + + // Python API reported an error + bool py_err = py_value == (py_type) -1 && PyErr_Occurred(); + + // Check to see if the conversion is valid (integers should match exactly) + // Signed/unsigned checks happen elsewhere + if (py_err + || (std::is_integral::value && sizeof(py_type) != sizeof(T) + && py_value != (py_type) (T) py_value)) { + PyErr_Clear(); + if (py_err && convert && (PyNumber_Check(src.ptr()) != 0)) { + auto tmp = reinterpret_steal(std::is_floating_point::value + ? PyNumber_Float(src.ptr()) + : PyNumber_Long(src.ptr())); + PyErr_Clear(); + return load(tmp, false); + } + return false; + } + + value = (T) py_value; + return true; + } + + template + static typename std::enable_if::value, handle>::type + cast(U src, return_value_policy /* policy */, handle /* parent */) { + return PyFloat_FromDouble((double) src); + } + + template + static typename std::enable_if::value && std::is_signed::value + && (sizeof(U) <= sizeof(long)), + handle>::type + cast(U src, return_value_policy /* policy */, handle /* parent */) { + return PYBIND11_LONG_FROM_SIGNED((long) src); + } + + template + static typename std::enable_if::value && std::is_unsigned::value + && (sizeof(U) <= sizeof(unsigned long)), + handle>::type + cast(U src, return_value_policy /* policy */, handle /* parent */) { + return PYBIND11_LONG_FROM_UNSIGNED((unsigned long) src); + } + + template + static typename std::enable_if::value && std::is_signed::value + && (sizeof(U) > sizeof(long)), + handle>::type + cast(U src, return_value_policy /* policy */, handle /* parent */) { + return PyLong_FromLongLong((long long) src); + } + + template + static typename std::enable_if::value && std::is_unsigned::value + && (sizeof(U) > sizeof(unsigned long)), + handle>::type + cast(U src, return_value_policy /* policy */, handle /* parent */) { + return PyLong_FromUnsignedLongLong((unsigned long long) src); + } + + PYBIND11_TYPE_CASTER(T, + io_name::value>( + "typing.SupportsInt", "int", "typing.SupportsFloat", "float")); +}; + +template +struct void_caster { +public: + bool load(handle src, bool) { + if (src && src.is_none()) { + return true; + } + return false; + } + static handle cast(T, return_value_policy /* policy */, handle /* parent */) { + return none().release(); + } + PYBIND11_TYPE_CASTER(T, const_name("None")); +}; + +template <> +class type_caster : public void_caster {}; + +template <> +class type_caster : public type_caster { +public: + using type_caster::cast; + + bool load(handle h, bool) { + if (!h) { + return false; + } + if (h.is_none()) { + value = nullptr; + return true; + } + + /* Check if this is a capsule */ + if (isinstance(h)) { + value = reinterpret_borrow(h); + return true; + } + + /* Check if this is a C++ type */ + const auto &bases = all_type_info((PyTypeObject *) type::handle_of(h).ptr()); + if (bases.size() == 1) { // Only allowing loading from a single-value type + value = values_and_holders(reinterpret_cast(h.ptr())).begin()->value_ptr(); + return true; + } + + /* Fail */ + return false; + } + + static handle cast(const void *ptr, return_value_policy /* policy */, handle /* parent */) { + if (ptr) { + return capsule(ptr).release(); + } + return none().release(); + } + + template + using cast_op_type = void *&; + explicit operator void *&() { return value; } + static constexpr auto name = const_name(PYBIND11_CAPSULE_TYPE_TYPE_HINT); + +private: + void *value = nullptr; +}; + +template <> +class type_caster : public void_caster {}; + +template <> +class type_caster { +public: + bool load(handle src, bool convert) { + if (!src) { + return false; + } + if (src.ptr() == Py_True) { + value = true; + return true; + } + if (src.ptr() == Py_False) { + value = false; + return true; + } + if (convert || is_numpy_bool(src)) { + // (allow non-implicit conversion for numpy booleans), use strncmp + // since NumPy 1.x had an additional trailing underscore. + + Py_ssize_t res = -1; + if (src.is_none()) { + res = 0; // None is implicitly converted to False + } +#if defined(PYPY_VERSION) + // On PyPy, check that "__bool__" attr exists + else if (hasattr(src, PYBIND11_BOOL_ATTR)) { + res = PyObject_IsTrue(src.ptr()); + } +#else + // Alternate approach for CPython: this does the same as the above, but optimized + // using the CPython API so as to avoid an unneeded attribute lookup. + else if (auto *tp_as_number = Py_TYPE(src.ptr())->tp_as_number) { + if (PYBIND11_NB_BOOL(tp_as_number)) { + res = (*PYBIND11_NB_BOOL(tp_as_number))(src.ptr()); + } + } +#endif + if (res == 0 || res == 1) { + value = (res != 0); + return true; + } + PyErr_Clear(); + } + return false; + } + static handle cast(bool src, return_value_policy /* policy */, handle /* parent */) { + return handle(src ? Py_True : Py_False).inc_ref(); + } + PYBIND11_TYPE_CASTER(bool, const_name("bool")); + +private: + // Test if an object is a NumPy boolean (without fetching the type). + static inline bool is_numpy_bool(handle object) { + const char *type_name = Py_TYPE(object.ptr())->tp_name; + // Name changed to `numpy.bool` in NumPy 2, `numpy.bool_` is needed for 1.x support + return std::strcmp("numpy.bool", type_name) == 0 + || std::strcmp("numpy.bool_", type_name) == 0; + } +}; + +// Helper class for UTF-{8,16,32} C++ stl strings: +template +struct string_caster { + using CharT = typename StringType::value_type; + + // Simplify life by being able to assume standard char sizes (the standard only guarantees + // minimums, but Python requires exact sizes) + static_assert(!std::is_same::value || sizeof(CharT) == 1, + "Unsupported char size != 1"); +#if defined(PYBIND11_HAS_U8STRING) + static_assert(!std::is_same::value || sizeof(CharT) == 1, + "Unsupported char8_t size != 1"); +#endif + static_assert(!std::is_same::value || sizeof(CharT) == 2, + "Unsupported char16_t size != 2"); + static_assert(!std::is_same::value || sizeof(CharT) == 4, + "Unsupported char32_t size != 4"); + // wchar_t can be either 16 bits (Windows) or 32 (everywhere else) + static_assert(!std::is_same::value || sizeof(CharT) == 2 || sizeof(CharT) == 4, + "Unsupported wchar_t size != 2/4"); + static constexpr size_t UTF_N = 8 * sizeof(CharT); + + bool load(handle src, bool) { + handle load_src = src; + if (!src) { + return false; + } + if (!PyUnicode_Check(load_src.ptr())) { + return load_raw(load_src); + } + + // For UTF-8 we avoid the need for a temporary `bytes` object by using + // `PyUnicode_AsUTF8AndSize`. + if (UTF_N == 8) { + Py_ssize_t size = -1; + const auto *buffer + = reinterpret_cast(PyUnicode_AsUTF8AndSize(load_src.ptr(), &size)); + if (!buffer) { + PyErr_Clear(); + return false; + } + value = StringType(buffer, static_cast(size)); + return true; + } + + auto utfNbytes + = reinterpret_steal(PyUnicode_AsEncodedString(load_src.ptr(), + UTF_N == 8 ? "utf-8" + : UTF_N == 16 ? "utf-16" + : "utf-32", + nullptr)); + if (!utfNbytes) { + PyErr_Clear(); + return false; + } + + const auto *buffer + = reinterpret_cast(PYBIND11_BYTES_AS_STRING(utfNbytes.ptr())); + size_t length = (size_t) PYBIND11_BYTES_SIZE(utfNbytes.ptr()) / sizeof(CharT); + // Skip BOM for UTF-16/32 + if (UTF_N > 8) { + buffer++; + length--; + } + value = StringType(buffer, length); + + // If we're loading a string_view we need to keep the encoded Python object alive: + if (IsView) { + loader_life_support::add_patient(utfNbytes); + } + + return true; + } + + static handle + cast(const StringType &src, return_value_policy /* policy */, handle /* parent */) { + const char *buffer = reinterpret_cast(src.data()); + auto nbytes = ssize_t(src.size() * sizeof(CharT)); + handle s = decode_utfN(buffer, nbytes); + if (!s) { + throw error_already_set(); + } + return s; + } + + PYBIND11_TYPE_CASTER(StringType, const_name(PYBIND11_STRING_NAME)); + +private: + static handle decode_utfN(const char *buffer, ssize_t nbytes) { +#if !defined(PYPY_VERSION) + return UTF_N == 8 ? PyUnicode_DecodeUTF8(buffer, nbytes, nullptr) + : UTF_N == 16 ? PyUnicode_DecodeUTF16(buffer, nbytes, nullptr, nullptr) + : PyUnicode_DecodeUTF32(buffer, nbytes, nullptr, nullptr); +#else + // PyPy segfaults when on PyUnicode_DecodeUTF16 (and possibly on PyUnicode_DecodeUTF32 as + // well), so bypass the whole thing by just passing the encoding as a string value, which + // works properly: + return PyUnicode_Decode(buffer, + nbytes, + UTF_N == 8 ? "utf-8" + : UTF_N == 16 ? "utf-16" + : "utf-32", + nullptr); +#endif + } + + // When loading into a std::string or char*, accept a bytes/bytearray object as-is (i.e. + // without any encoding/decoding attempt). For other C++ char sizes this is a no-op. + // which supports loading a unicode from a str, doesn't take this path. + template + bool load_raw(enable_if_t::value, handle> src) { + if (PYBIND11_BYTES_CHECK(src.ptr())) { + // We were passed raw bytes; accept it into a std::string or char* + // without any encoding attempt. + const char *bytes = PYBIND11_BYTES_AS_STRING(src.ptr()); + if (!bytes) { + pybind11_fail("Unexpected PYBIND11_BYTES_AS_STRING() failure."); + } + value = StringType(bytes, (size_t) PYBIND11_BYTES_SIZE(src.ptr())); + return true; + } + if (PyByteArray_Check(src.ptr())) { + // We were passed a bytearray; accept it into a std::string or char* + // without any encoding attempt. + const char *bytearray = PyByteArray_AsString(src.ptr()); + if (!bytearray) { + pybind11_fail("Unexpected PyByteArray_AsString() failure."); + } + value = StringType(bytearray, (size_t) PyByteArray_Size(src.ptr())); + return true; + } + + return false; + } + + template + bool load_raw(enable_if_t::value, handle>) { + return false; + } +}; + +template +struct type_caster, + enable_if_t::value>> + : string_caster> {}; + +#ifdef PYBIND11_HAS_STRING_VIEW +template +struct type_caster, + enable_if_t::value>> + : string_caster, true> {}; +#endif + +// Type caster for C-style strings. We basically use a std::string type caster, but also add the +// ability to use None as a nullptr char* (which the string caster doesn't allow). +template +struct type_caster::value>> { + using StringType = std::basic_string; + using StringCaster = make_caster; + StringCaster str_caster; + bool none = false; + CharT one_char = 0; + +public: + bool load(handle src, bool convert) { + if (!src) { + return false; + } + if (src.is_none()) { + // Defer accepting None to other overloads (if we aren't in convert mode): + if (!convert) { + return false; + } + none = true; + return true; + } + return str_caster.load(src, convert); + } + + static handle cast(const CharT *src, return_value_policy policy, handle parent) { + if (src == nullptr) { + return pybind11::none().release(); + } + return StringCaster::cast(StringType(src), policy, parent); + } + + static handle cast(CharT src, return_value_policy policy, handle parent) { + if (std::is_same::value) { + handle s = PyUnicode_DecodeLatin1((const char *) &src, 1, nullptr); + if (!s) { + throw error_already_set(); + } + return s; + } + return StringCaster::cast(StringType(1, src), policy, parent); + } + + explicit operator CharT *() { + return none ? nullptr : const_cast(static_cast(str_caster).c_str()); + } + explicit operator CharT &() { + if (none) { + throw value_error("Cannot convert None to a character"); + } + + auto &value = static_cast(str_caster); + size_t str_len = value.size(); + if (str_len == 0) { + throw value_error("Cannot convert empty string to a character"); + } + + // If we're in UTF-8 mode, we have two possible failures: one for a unicode character that + // is too high, and one for multiple unicode characters (caught later), so we need to + // figure out how long the first encoded character is in bytes to distinguish between these + // two errors. We also allow want to allow unicode characters U+0080 through U+00FF, as + // those can fit into a single char value. + if (StringCaster::UTF_N == 8 && str_len > 1 && str_len <= 4) { + auto v0 = static_cast(value[0]); + // low bits only: 0-127 + // 0b110xxxxx - start of 2-byte sequence + // 0b1110xxxx - start of 3-byte sequence + // 0b11110xxx - start of 4-byte sequence + size_t char0_bytes = (v0 & 0x80) == 0 ? 1 + : (v0 & 0xE0) == 0xC0 ? 2 + : (v0 & 0xF0) == 0xE0 ? 3 + : 4; + + if (char0_bytes == str_len) { + // If we have a 128-255 value, we can decode it into a single char: + if (char0_bytes == 2 && (v0 & 0xFC) == 0xC0) { // 0x110000xx 0x10xxxxxx + one_char = static_cast(((v0 & 3) << 6) + + (static_cast(value[1]) & 0x3F)); + return one_char; + } + // Otherwise we have a single character, but it's > U+00FF + throw value_error("Character code point not in range(0x100)"); + } + } + + // UTF-16 is much easier: we can only have a surrogate pair for values above U+FFFF, thus a + // surrogate pair with total length 2 instantly indicates a range error (but not a "your + // string was too long" error). + else if (StringCaster::UTF_N == 16 && str_len == 2) { + one_char = static_cast(value[0]); + if (one_char >= 0xD800 && one_char < 0xE000) { + throw value_error("Character code point not in range(0x10000)"); + } + } + + if (str_len != 1) { + throw value_error("Expected a character, but multi-character string found"); + } + + one_char = value[0]; + return one_char; + } + + static constexpr auto name = const_name(PYBIND11_STRING_NAME); + template + using cast_op_type = pybind11::detail::cast_op_type<_T>; +}; + +// Base implementation for std::tuple and std::pair +template