empyrean.build_system

build_system(force_model=ForceModelTier.STANDARD, frame=Frame.ECLIPTICJ2000, encounter_timescale_divisor=None)[source]

Assemble a reusable BuiltSystem force-model handle.

Builds the force model once for (force_model, frame) and freezes encounter_timescale_divisor into its key, then reuse the returned handle across many propagate() / generate_ephemeris() calls. Rebuild the handle after any empyrean.initialize() / data (re)load — a stale handle is rejected loudly by every forward-model call, never silently reused.

Parameters:
  • force_model (ForceModelTier | str | int) – Force-model tier to freeze. Default ForceModelTier.STANDARD.

  • frame (Frame | str | int) – Frame to freeze. Default Frame.ECLIPTICJ2000.

  • encounter_timescale_divisor (float | None) – Encounter-timescale divisor to freeze. None (default) freezes the engine default.

Return type:

BuiltSystem

Returns:

BuiltSystem

Examples

>>> system = empyrean.build_system(force_model="standard", frame="icrf")
>>> result = system.propagate(orbits, epochs)  # reuses the force model
>>> desc = system.describe()  # provenance: tier, GR, perturbers, kernels