Hey everyone, this is really helpful. Thanks for the info!

June

On Fri, Jun 21, 2024 at 3:11 PM chao peng <[email protected]> wrote:

> Hi,
>
> Just complemented another point. You might also need to Gather and Scatter
> the acceleration and Lagrange multipliers if you want to recover the system
> state exactly as the snapshot investigated.
>
> Something like:
>
>         auto state_der2 =
> chrono_types::make_shared<ChStateDelta>(system.GetNumCoordsVelLevel(),
> &system);
>         system.StateGatherAcceleration(*state_der2);
>
>         auto state_L =
> chrono_types::make_shared<ChVectorDynamic<>>(system.GetNumConstraints());
>         system.StateGatherReactions(*state_L);
>
> and similarly for the Scattering (i.e. loading back into ChSystem).
>
> The complete state of a system includes: X (position and orientation), V
> (velocity), A (acceleration), T (time), L( Lagrange multipliers).
>
> Good luck.
> Chao PENG.
>
> 在2024年6月20日星期四 UTC+2 23:24:31<[email protected]> 写道:
>
> BTW, if you just want to load/save the state of the system, without the
> model itself, you can come up with some easier yet not complete, solution
> of using ChSystem::StateGather and ChSystem::StateScatter.
>
> Something like:
>
>         auto state =
> chrono_types::make_shared<ChState>(system.GetNumCoordsPosLevel(), &system);
>         auto state_der =
> chrono_types::make_shared<ChStateDelta>(system.GetNumCoordsVelLevel(),
> &system);
>         double time;
>         system.StateGather(*state   , *state_der, time_dummy);
>
>
> and similarly for the Scattering (i.e. loading back into ChSystem)
>
> Please notice however that you have to make sure that the model is exactly
> the same and also that can be additional relevant variables (e.g. some
> variable in the timesteppers) that is not retrieved in this way thus making
> a slight difference when you load back the state.
>
>
> Il giorno giovedì 20 giugno 2024 alle 23:18:46 UTC+2 Dario Mangoni ha
> scritto:
>
> Hi,
> yes there is.
>
> You may find more references by searching for the "archive" keyword
> instead of serialization.
> *demo_CH_archive
> <https://github.com/projectchrono/chrono/blob/main/src/demos/core/demo_CH_archive.cpp>*is
> a starting point, but it's probably showing many more features that just
> simply a Chrono system serialization.
> *utest_CH_archive
> <https://github.com/projectchrono/chrono/blob/main/src/tests/unit_tests/core/utest_CH_archive.cpp>*is
> another source of information, while it's meant for testing.
>
> In general you can import|export to JSON, XML and binary format.
>
> In general, for a whole ChSystem, you can simply do something like.
>
> {
>     ChSystemNSC system;
>     ADD THINGS TO YOUR SYSTEM
>     std::ofstream mfileo("ChArchiveJSON_Pendulum.json");
>     ChArchiveOutJSON archive_out(mfileo);
>     archive_out << CHNVP(system);
> }
>
> std::ifstream mfilei("ChArchiveJSON_Pendulum.json");
> ChArchiveInJSON archive_in(mfilei);
>
> ChSystemNSC system;
> archive_in >> CHNVP(system);
>
> Please mind that not all the classes are enabled to serialization (e.g.
> ChVisualShapeFEA are not).
> You may be able to check which are enabled by checking the relative
> ArchiveIn|ArchiveOut methods for each class.
>
> Il giorno giovedì 20 giugno 2024 alle 20:00:49 UTC+2 [email protected]
> ha scritto:
>
> Is there any way to serialize Chrono::Systems so that the system state is
> recoverable from disk? I'd like to be able to save the state of the system
> for debugging at a later date.
>
> --
> 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/ee47e377-6e3b-4f00-9f74-23acb85fff90n%40googlegroups.com
> <https://groups.google.com/d/msgid/projectchrono/ee47e377-6e3b-4f00-9f74-23acb85fff90n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
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/CAC1ZH50eK11ug-r%2BFn0%2B64v88eNze_f0pCfkESaqmt30HdrZ3g%40mail.gmail.com.

Reply via email to