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

-- 
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/CABKqA0an%2B_yyeKCyzQfjGhNCqTpS2XGyY1Jvw%3Dj6tu%2BGOL%3Dw_w%40mail.gmail.com.

Reply via email to