| name | system_create |
| description | Create and configure a PyChrono ChSystem, gravity, contact method, and solver. |
| compatibility | pychrono >= 8.0 |
| metadata | {"domain":"mbs"} |
Skill: MBS System Creation
Purpose
Create and configure a PyChrono multi-body simulation system (ChSystem), set gravity, choose contact method, and configure the solver.
When to Use
Use at the top of every MBS simulation script, before creating any bodies or links.
Key Concepts
ChSystemNSC vs ChSystemSMC
- ChSystemNSC (Non-Smooth Contact): rigid/impulsive impacts, fast, best for rigid-body scenes with discrete collisions
- ChSystemSMC (Smooth Contact Method): penalty-based, soft contacts, best for granular or compliant-contact scenarios
Gravity
sys.SetGravityY()
sys.SetGravitationalAcceleration(chrono.ChVector3d(0, -9.81, 0))
sys.SetGravitationalAcceleration(chrono.ChVector3d(0, 0, 0))
Collision System
Call only when bodies have collision shapes and contact is needed. For pure MBS (joints and motors only, no contact), omit — it adds overhead and can cause instability.
sys.SetCollisionSystemType(chrono.ChCollisionSystem.Type_BULLET)
NSC Solver (tune for collision-heavy NSC scenes)
solver_max_iter = int
sys.SetSolverType(chrono.ChSolver.Type_PSOR)
sys.GetSolver().AsIterative().SetMaxIterations(solver_max_iter)
solver = chrono.ChSolverPSOR()
solver.SetMaxIterations(solver_max_iter)
sys.SetSolver(solver)
Minimal Example
import pychrono.core as chrono
import pychrono.irrlicht as chronoirr
solver_max_iter = int
sys = chrono.ChSystemNSC()
sys.SetGravityY()
sys.SetCollisionSystemType(chrono.ChCollisionSystem.Type_BULLET)
sys.SetSolverType(chrono.ChSolver.Type_PSOR)
sys.GetSolver().AsIterative().SetMaxIterations(solver_max_iter)
sys = chrono.ChSystemNSC()
sys.SetGravitationalAcceleration(chrono.ChVector3d(0, 0, 0))