Tutorials

**Dynamic objects of classes with fixed-size vectorizable Eigen object members**

  • Many of the Chrono classes now have members that are fixed-size vectorizable Eigen types. These classes overload their `operator new` to generate 16-byte-aligned pointers (using an Eigen-provided macro).

  • This takes care of situations where one must dynamically create objects of such classes; for more details, see the [Eigen documentation](https://eigen.tuxfamily.org/dox/group__TopicStructHavingEigenMembers.html).

  • If you need to create STL containers of such classes, you should use a custom allocator that always allocates aligned memory (such as the Eigen-provided `Eigen:aligned_allocator`); for more details, see the [Eigen documentation](https://eigen.tuxfamily.org/dox/group__TopicStlContainers.html).

  • Finally, this requirement for aligned memory allocation has implications on creation of shared pointers. Indeed, `std::make_shared` uses `placement new` instead of `operator new`. To address this issue and preserve encapsulation (as much as possible), Chrono provides custom replacement functions for `make_shared`, available in the `chrono_types` namespace. These functions will automatically infer if they can safely fallback on `std::make_shared` or else create a shared pointer with an alternative mechanism that ensures use of aligned memory. As such, user code should **always** use `chrono_types::make_shared` as in ~~~{.cpp} auto my_body = chrono_types::make_shared(); ~~~

Chrono modules

  • @subpage tutorial_table_of_content_chrono

    Examples of the core features and capabilities of the Chrono library.

  • @subpage tutorial_table_of_content_chrono_irrlicht

    Examples using run-time visualization with the Irrlicht module.

  • @subpage tutorial_table_of_content_chrono_mbs

    Examples of MBS dynamics in Chrono.

  • @subpage tutorial_table_of_content_chrono_fea

    Examples of FEA in Chrono.

  • @subpage tutorial_table_of_content_chrono_vehicle

    Examples of modeling and simulating ground vehicles in Chrono.

  • @subpage tutorial_table_of_content_chrono_fsi

    Examples of fluid-solid interaction problems using the FSI module.

  • @subpage tutorial_table_of_content_chrono_postprocess

    Examples of producing postprocessing data (e.g. POVray or GNUplot output).

  • @subpage tutorial_table_of_content_chrono_multicore

    Examples of using the Multicore module.

  • @subpage tutorial_table_of_content_chrono_gpu

    Examples of granular dynamics problems using the GPU module.

  • @subpage tutorial_table_of_content_chrono_python

    Examples of parsing Python programs.

  • @subpage tutorial_table_of_content_chrono_matlab

    Examples of Matlab inter-operation.

  • @subpage tutorial_table_of_content_chrono_cosimulation

    Examples of cosimulation with Simulink.

  • @subpage tutorial_table_of_content_chrono_cascade

    Examples of loading CAD models.

  • @subpage tutorial_table_of_content_chrono_sensor

    Examples of modeling and simulating sensor for robots and autonomous vehicles in Chrono.

  • @subpage tutorial_table_of_content_chrono_synchrono

    Examples of distributed simulation of autonomous vehicles and robots.

  • @subpage tutorial_table_of_content_chrono_fmi

    Examples of generating (exporting) and using (importing) Chrono FMUs.

  • @subpage tutorial_table_of_content_chrono_ros

    Examples of integrating an external ROS-based autonomy stack in Chrono.

Other tools

  • @subpage tutorial_table_of_content_pychrono

    Learn how to use [PyChrono](@ref pychrono_introduction)

  • @subpage tutorial_table_of_content_chrono_solidworks

    Learn how to use [Chrono::SolidWorks](@ref manual_chrono_solidworks)

Chrono training materials

  • [Tutorial slides](@ref tutorial_slides_300)

    Set of tutorial slides for Chrono release 3.0.0

Documentation guides

  • @subpage tutorial_table_of_content_documentation

    Guidelines on writing technical documentation for Chrono (for developers of new modules/features).

Last updated