FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
Model development

Model development means implementing the SimObject interface and composing those SimObjects into complete simulation models.

A SimObject can be stateful (ODE-based) or stateless, and typically defines:

  • parameters,
  • input ports,
  • output ports,
  • optional state variables,
  • optional visualization callbacks.

Choose your path

Goal Start here
Set up your development environment Setup developer environment
Understand SimObject design concepts SimObject modeling concept
Create your first SimObject Create a new SimObject
Package objects into a library Create a new SimObject library
Use implicit integration (stiff systems) Implicit Integration with Analytical Jacobians
Understand how the engine assembles the Jacobian How analytical Jacobians are assembled
Choose a Jacobian format, linear solver or method order SUNDIALS and linear-solver configuration
Find out why a Jacobian is wrong Jacobian diagnostics and troubleshooting
Share computations between objects Common computations
Write automated tests Testing

Recommended reading path

If you are new to FhSim model development, follow these pages in order:

  1. Setup developer environment — Compiler, Conan, and CMake setup.
  2. SimObject modeling concept — Core design concepts and SimObject anatomy.
  3. Create a new SimObject — Step-by-step: create, register, build.
  4. Create a new SimObject library — Package objects for distribution.
  5. Running a compiled SimObject — Load and run your library.
  6. Testing — Unit and integration testing.
  7. Test Tools Library — Test utilities reference.
  8. Common computations — Shared computations between objects.
  9. Implicit Integration with Analytical Jacobians — Analytical Jacobians for stiff systems. Its own subpages cover How analytical Jacobians are assembled, SUNDIALS and linear-solver configuration and Jacobian diagnostics and troubleshooting.
  10. SimObject methods — Complete method reference.
  11. SimObject construction methods — Construction-time API reference.