From 8e18bce49aca5211206a110359a69db3804d2c5f Mon Sep 17 00:00:00 2001 From: "Jason K. Moore" Date: Thu, 29 Aug 2024 08:26:40 +0200 Subject: [PATCH 1/2] Solve only the dynamical differential equations. --- examples/run.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/examples/run.py b/examples/run.py index 4248fb6..696f989 100644 --- a/examples/run.py +++ b/examples/run.py @@ -7,6 +7,7 @@ import os import numpy as np +import sympy as sm from scipy.integrate import odeint from pydy.codegen.ode_function_generators import generate_ode_function from pydy.viz import Scene @@ -21,18 +22,18 @@ 'data/example_constants.yml')) rhs = generate_ode_function( - forcing_vector, + kane.forcing, coordinates, speeds, constants=list(constant_values.keys()), - mass_matrix=mass_matrix, + mass_matrix=kane.mass_matrix, + coordinate_derivatives=sm.Matrix(list(kane.kindiffdict().values())), specifieds=specified, generator='cython', constants_arg_type='array', specifieds_arg_type='array', ) - args = (np.zeros(len(specified)), np.array(list(constant_values.values()))) time_vector = np.linspace(0.0, 10.0, num=1000) From 3d1cedd07ae7c9a38fba13a863ccde32ec5bfd36 Mon Sep 17 00:00:00 2001 From: "Jason K. Moore" Date: Thu, 29 Aug 2024 08:51:12 +0200 Subject: [PATCH 2/2] Solve equations of motion symbolically. --- examples/run.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/examples/run.py b/examples/run.py index 696f989..6186905 100644 --- a/examples/run.py +++ b/examples/run.py @@ -17,17 +17,19 @@ (mass_matrix, forcing_vector, kane, constants, coordinates, speeds, specified, visualization_frames, ground, origin) = derive.derive_equations_of_motion() +sym_kin_rhs = sm.Matrix(list(kane.kindiffdict().values())) +sym_dyn_rhs = kane.mass_matrix.cramer_solve(kane.forcing) +sym_rhs = sym_kin_rhs.col_join(sym_dyn_rhs) + constant_values = simulate.load_constants( constants, os.path.join(os.path.dirname(__file__), '..', 'data/example_constants.yml')) rhs = generate_ode_function( - kane.forcing, + sym_rhs, coordinates, speeds, constants=list(constant_values.keys()), - mass_matrix=kane.mass_matrix, - coordinate_derivatives=sm.Matrix(list(kane.kindiffdict().values())), specifieds=specified, generator='cython', constants_arg_type='array',