This is great, thank you very much!
Simon

On Monday, April 24, 2023 at 5:22:19 PM UTC+2 [email protected] wrote:

> I forgot to paste the commit:
>
> please refer to [6a36465] on 24th April:
> Add demos to show the capacity of the static solver 
> ChStaticNonlinearRigidMotion() for a pendulum and a mooring line. These two 
> demos also indicates the importantce of the tangent stiffness matrix (Kc) 
> of constraint in the static and eigenvalue problems. However, these two 
> demos need to improve further, expecially the 3D visualization.
>
> Best regards,
> PENG Chao
> 在2023年4月24日星期一 UTC+2 17:18:11<chao peng> 写道:
>
>> Hello Simon,
>>
>> A pendulum is simple, just when you look at it in the first second.
>>
>> By default, the tangent stiffness matrix of constraint (Kc= 
>> \frac{\partial{C_q}\lambda}{\partial{q}}) is not implemented in the 
>> system matrix. The system stiffness matrix of a pendulum is zero. Thus, the 
>> Newton-Raphson iteration in the ChStaticSolver() don't know what's the 
>> potential correct direction to search for the equilibrium status.
>>
>> I just pushed several commits, in which the tangent stiffness matrix (Kc) 
>> of ChLinkMateGeneric() and its children classes are implemented, another 
>> static solver ChStaticNonlinearRigidMotion() is also implemented to deal 
>> with the static problem for the systems including rigid motion DOFs. And 
>> two demos, pendulum and mooring line, are also given to show the 
>> application of the static solver ChStaticNonlinearRigidMotion(), and to 
>> demonstrate the importance of Kc in the static and eigenvalue problem.
>>
>> I need more time to improve the 3D visualization of the demos.
>>
>> Have fun with the demos if you like. 
>>
>> Best regards,
>> PENG Chao
>> 在2023年3月20日星期一 UTC+1 17:48:21<Simon> 写道:
>>
>>> Hi, 
>>>
>>> in the example below I modelled a simple pendulum. To my understanding, 
>>> nonlinear static analysis should place the pendulum in the 'down' position, 
>>> i.e. aligned with the gravity vector. However, the static analysis seems to 
>>> blow up even for a small deviation from the static equilibrium position 
>>> (see output below). 
>>> Should the nonlinear static analysis work in this example case?
>>>
>>> Thank you, 
>>> Simon
>>>
>>> *Code: *
>>> ChSystemNSC system{};
>>>
>>> auto fixed_body{chrono_types::make_shared<ChBody>()};
>>> fixed_body->SetBodyFixed(true);
>>> auto pendulum_mass{chrono_types::make_shared<ChBody>()};
>>> pendulum_mass->SetPos({1.0, 0.01, 0.0});
>>>
>>> system.Set_G_acc({10.0, 0.0, 0.0});
>>>
>>> auto rotation_link{chrono_types::make_shared<ChLinkLockRevolute>()};
>>> rotation_link->Initialize(pendulum_mass, fixed_body, {});
>>>
>>> system.Add(fixed_body);
>>> system.Add(pendulum_mass);
>>> system.Add(rotation_link);
>>>
>>> system.DoStaticNonlinear(10, true);
>>>
>>>
>>> *Output: *
>>> Nonlinear statics
>>>    max iterations:     10
>>>    incremental steps:  6
>>>    stopping test:      correction
>>>       relative tol:    0.0001
>>>       absolute tol:    1e-08
>>>
>>> --- Nonlinear statics iteration 0  |Dx|_wrms = 12864.8
>>> --- Nonlinear statics iteration 1  |Dx|_wrms = 9543.48
>>> --- Nonlinear statics iteration 2  |Dx|_wrms = 6371.51
>>> --- Nonlinear statics iteration 3  |Dx|_wrms = 10438.1
>>> --- Nonlinear statics iteration 4  |Dx|_wrms = 6571.89
>>> --- Nonlinear statics iteration 5  |Dx|_wrms = 6797.78
>>> --- Nonlinear statics iteration 6  |Dx|_wrms = 6870.05
>>> --- Nonlinear statics iteration 7  |Dx|_wrms = 16263.7
>>> --- Nonlinear statics iteration 8  |Dx|_wrms = 9692.65
>>> --- Nonlinear statics iteration 9  |Dx|_wrms = 29415.4
>>>
>>

-- 
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 on the web visit 
https://groups.google.com/d/msgid/projectchrono/7c4b7201-c53f-4667-bb8e-e8b1579733bfn%40googlegroups.com.

Reply via email to