Thanks very much Peter - that worked On Monday, 4 April 2022 at 14:33:22 UTC+1 [email protected] wrote:
> In addition, you probably have a typo in this: > > P1.set_ang_vel(A, omega1 * A.z) > P2.set_ang_vel(P1, omega*1* * P1.z) > > It should probably be > > P2.set_ang_vel(P1, omega*2* * P1.z) > > With this change, it would calculate some rhs, like: > > rhs = kanes.rhs() > > Peter > > > On Mon 4. Apr 2022 at 15:25 Peter Stahlecker <[email protected]> > wrote: > >> Your loads were incorrect: >> >> Try this: >> >> loads = [ (p1, F_grav_1), (p2, F_grav_2) ] >> >> When I changed this in your program, it worked, or at least there was no >> error. >> >> You have to give the points where the forces ‚attack‘, as tuples. >> Otherwise, hwo would sympy.physics.mechanics ‚know‘, where the forces act? >> >> Peter >> >> On Mon 4. Apr 2022 at 14:57 n doherty <[email protected]> wrote: >> >>> Thanks very much Peter. >>> >>> I hope I'm not making an error but would welcome you finding one if I >>> am. I'm getting the same error in tutorial examples so suspect it's an >>> error with a new version of sympy or python, or something specific to my >>> setup. I'm using python 3.8 and sympy 1.8. I get the same error on 2 >>> different machines although the same versions of sympy/python. >>> >>> Code is below. It's when executing the final line that the error comes >>> up - everything else is fine. Thanks again. >>> _____________________________________ >>> import sympy as sm >>> import sympy.physics.mechanics as me >>> >>> ## REFERENCE FRAMES >>> >>> A = me.ReferenceFrame("A") # earth reference frame >>> P1 = me.ReferenceFrame("P1") # 1st pendulum arm reference frame >>> P2 = me.ReferenceFrame("P2") # 2nd pendulum arm reference frame >>> >>> ## ORIENTATION >>> >>> theta1, theta2 = me.dynamicsymbols("theta1 theta2") # generalised >>> coordinates >>> >>> P1.orient(A, "Axis", (theta1, A.z)) >>> P2.orient(P1, "Axis", (theta2, P1.z)) >>> >>> ## KINEMATICS >>> ### Points and Locations >>> >>> m1, m2, L1, L2 = sm.symbols("m1 m2 L1 L2") >>> >>> O = me.Point("O") >>> p1 = me.Point("p1") >>> p2 = me.Point("p2") >>> >>> p1.set_pos(O, L1 * P1.x) >>> p2.set_pos(p1, L2 * P2.x) >>> >>> >>> ### Kinematical Differential Equations >>> >>> omega1, omega2 = me.dynamicsymbols("omega1 omega2") >>> >>> kinematical_differential_equations = [omega1 - theta1.diff(), >>> omega2 - theta2.diff()] >>> >>> >>> ### Angular Velocities >>> >>> P1.set_ang_vel(A, omega1 * A.z) >>> P2.set_ang_vel(P1, omega1 * P1.z) >>> >>> >>> >>> ### Linear Velocities >>> >>> O.set_vel(A, 0) # point O has zero velocity >>> >>> p1.v2pt_theory(O, A, P1) >>> p2.v2pt_theory(p1, A, P2) >>> >>> >>> ## KINETICS >>> >>> g = sm.symbols("g") >>> >>> F_grav_1 = m1 * g * A.x >>> F_grav_2 = m2 * g * A.x >>> >>> B1 = me.Particle("B1", p1, m1) >>> B2 = me.Particle("B2", p2, m2) >>> >>> >>> ## EQUATIONS OF MOTION >>> >>> coordinates = [theta1, theta2] >>> speeds = [omega1, omega2] >>> loads = [F_grav_1, F_grav_2] >>> bodies = [B1, B2] >>> >>> >>> ### Kane's Method >>> >>> kane = me.KanesMethod(A, coordinates, speeds, >>> kinematical_differential_equations) >>> >>> fr, frstar = kane.kanes_equations(loads, bodies) >>> >>> _________________________________________ >>> >>> On Monday, 4 April 2022 at 12:12:29 UTC+1 [email protected] wrote: >>> >>>> I have done all sorts of pendulae, single, double, triple..... >>>> If you could send your code, maybe I could find a mistake. >>>> Peter >>>> >>>> On Mon 4. Apr 2022 at 13:00, n doherty <[email protected]> wrote: >>>> >>>>> Hi, >>>>> Looking for some help if possible. I was recently trying to get the >>>>> equations of motion of a double pendulum via SymPy. When I used >>>>> "kanes_equations" to obtain Fr and Fr* I got the above TypeError message. >>>>> >>>>> I have the loads and the bodies contained in lists which are input >>>>> into the kanes_equation method, which I think is causing the problem >>>>> here? >>>>> If I apply the method for a single pendulum with a single body (not >>>>> contained in a list or array) kanes_equations works fine. >>>>> >>>>> I suspect it's a newer version of sympy or python which is causing the >>>>> issue. If I try to perform the same method on the human standing >>>>> tutorial >>>>> I get the same error but for the bodies being RigidBody instead of >>>>> Particle. I've run this tutorial and numerous other examples in the past >>>>> without this error occurring. >>>>> >>>>> Is there a known workaround to this issue? >>>>> >>>>> Thanks, >>>>> Nick >>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "sympy" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to [email protected]. >>>>> To view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/sympy/0a4cea0a-8050-4765-873f-7a0a0857b606n%40googlegroups.com >>>>> >>>>> <https://groups.google.com/d/msgid/sympy/0a4cea0a-8050-4765-873f-7a0a0857b606n%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>> . >>>>> >>>> -- >>>> Best regards, >>>> >>>> Peter Stahlecker >>>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "sympy" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/sympy/15ac5e54-8a4f-4ffc-83c7-24d6c21c94f3n%40googlegroups.com >>> >>> <https://groups.google.com/d/msgid/sympy/15ac5e54-8a4f-4ffc-83c7-24d6c21c94f3n%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- >> Best regards, >> >> Peter Stahlecker >> > -- > Best regards, > > Peter Stahlecker > -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/baac9f4b-fd32-4335-a692-6b12b84c9e85n%40googlegroups.com.
