Hi Radu,

Thank you very much for the feedback! 

I use the PyChrono conda package. But I can wait. One relatively easy work 
around to get the proper load is to run a dynamic simulation till reaching 
the equilibrium of the system and look at the loads at that instant. No 
worries.

Roger 

On Friday, January 9, 2026 at 5:54:58 AM UTC-7 Radu Serban wrote:

> Hi Roger,
>
>  
>
> This appears to be a bug in the nonlinear static analysis.
>
>  
>
> I didn’t implement this, so I’m not exactly sure what the thought process 
> was but it’s certainly flawed. There is a static analysis -- so-called 
> “incremental” -- where the external load is applied incrementally (over a 
> given number of iterations, by default 6). However, this load scaling was 
> also used for ChStaticNonLinearAnalysis (which is what you end up running 
> when you call sys.DoStaticNonlinear).  But that is incorrect: indeed, the 
> scaling goes to 1.0 after the specified number of “incremental steps” but, 
> if the nonlinear solver converges in fewer iterations than that, you end up 
> with a solution corresponding to the incorrect load.  
>
>  
>
> I pushed a fix where I removed this “incremental scaling” from all static 
> analysis algorithms, except the one that is meant to use it.
>
> With that, your code generates the expected results.
>
> By the way, you can explicitly create an analysis object so that you can 
> optionally modify various parameters and options. Instead of:
>
> system.DoStaticNonlinear()
>
> use:
>
> static_analysis = ChStaticNonLinearAnalysis()
>
> static_analysis.SetMaxIterations(20)
>
> static_analysis.SetCorrectionTolerance(1e-4, 1e-8)  # test on correction 
> vector
>
> #static_analysis.SetResidualTolerance(1e-8)          # test on residual 
> vector
>
> static_analysis.SetVerbose(True)
>
> system.DoStaticAnalysis(static_analysis)
>
>  
>
> If I recall correctly, you are using a PyChrono conda package. It will 
> take a little bit longer until we build and upload new conda packages. You 
> can wait for those, or else build PyChrono from sources yourself.
>
>  
>
> --Radu
>
>  
>
>  
>
> *From:* [email protected] <[email protected]> *On 
> Behalf Of *Roger Bergua
> *Sent:* Thursday, January 8, 2026 1:52 AM
> *To:* ProjectChrono <[email protected]>
> *Subject:* [chrono] Re: Reaction loads issue
>
>  
>
> Attaching the pyChrono file in *.txt format.
>
> On Wednesday, January 7, 2026 at 4:23:20 PM UTC-7 Roger Bergua wrote:
>
> Hi all,
>
>  
>
> I'm modeling a very easy cantilever beam in the vertical direction. The 
> system has just one cylindrical hollow beam (Euler-Bernoulli) and a clamp 
> condition (ChBody + ChLinkMateGeneric).
>
>  
>
> The beam has the next properties:
>
> Length: = 2 m 
>
> Outer diameter: Do = 0.2 m
>
> Inne diameter: Di = 0.15 m
>
> Density: rho = 7,860 kg/m^3
>
>  
>
> The mass of the beam is:
>
> m = pi*((Do/2)^2-(Di/2)^2)*L*rho = 216.06 kg
>
>  
>
> By applying one acceleration of 10 m/s^2 along x in the radial direction 
> of the beam, the expected applied loads at the clamp side would be:
>
> Fx = 216.06*10 = 2160.6 N
>
> Fy = 0 N
>
> Fz = 0 N
>
> Mx = 0 Nm
>
> My = 216.06*10*(L/2) = 2160.6 Nm
>
> Mz = 0 Nm
>
>  
>
> I can reproduce this values perfectly in pyChrono.
>
>  
>
> However, by applying the -10 m/s^2 acceleration along the z direction 
> (i.e., along the beam longitudinal axis) I should get:
>
> Fx = 0 N
>
> Fy = 0 N
>
> Fz = 216.06*(-10) = -2160.6 N
>
> Mx = 0 Nm
>
> My = 0 Nm
>
> Mz = 0 Nm
>
>  
>
> Instead of this, pyChrono returns Fz = -617.3 N
>
>  
>
> I'm unable to understand how this value is computed. Maybe there is a 
> better/recommended way to get the loads at the clamp side or the beam 
> itself?
>
>  
>
> Attached you can find the model in pyChrono to reproduce the above results.
>
>  
>
> Thanks for the support!
>
>  
>
>  
>
>  
>
>  
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "ProjectChrono" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To view this discussion visit 
> https://groups.google.com/d/msgid/projectchrono/4f0211fc-e642-4e2f-89d4-583c1e267f13n%40googlegroups.com
>  
> <https://urldefense.com/v3/__https:/groups.google.com/d/msgid/projectchrono/4f0211fc-e642-4e2f-89d4-583c1e267f13n*40googlegroups.com?utm_medium=email&utm_source=footer__;JQ!!Mak6IKo!P5mHf3HR6o_LrvlV9n36DehcgjZNWrs4MfcjsbHHpwCjHfcOhD9VCYcma4-AyU845XL2lcqg2sfwisBFS4SC$>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"ProjectChrono" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/projectchrono/d0b0424f-f7c3-4e40-a8a7-4ece597a4567n%40googlegroups.com.

Reply via email to