Roger – new PyChrono conda packages are available at https://anaconda.org/channels/projectchrono/packages/pychrono/files. Look for files ending with “_45”. --Radu
From: [email protected] <[email protected]> On Behalf Of Roger Bergua Sent: Friday, January 9, 2026 8:23 PM To: ProjectChrono <[email protected]> Subject: Re: [chrono] Re: Reaction loads issue 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]<mailto:[email protected]>. To view this discussion visit https://groups.google.com/d/msgid/projectchrono/d0b0424f-f7c3-4e40-a8a7-4ece597a4567n%40googlegroups.com<https://urldefense.com/v3/__https:/groups.google.com/d/msgid/projectchrono/d0b0424f-f7c3-4e40-a8a7-4ece597a4567n*40googlegroups.com?utm_medium=email&utm_source=footer__;JQ!!Mak6IKo!Npl3vRpDcv4_3AxOsBv6jbKPAFFStwzUyaIBO6tq1UNSI8o-snND_rgDW1W6c_qnGp94eFz7xJBjjWZAm5xf$>. -- 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/CH3PPF46CDC2185DD7A8D6827B732FAAA9FA780A%40CH3PPF46CDC2185.namprd06.prod.outlook.com.
