empyrean.BuiltSystem¶
- class BuiltSystem(force_model=ForceModelTier.STANDARD, frame=Frame.ECLIPTICJ2000, encounter_timescale_divisor=None)[source]
Bases:
objectA reusable pre-built force-model handle.
Construct with
build_system()(or directly). See the module docstring for the identity guard and the cross-thread reuse story.- Parameters:
force_model (
ForceModelTier|str|int) – Force-model tier to freeze. DefaultForceModelTier.STANDARD.frame (
Frame|str|int) – Frame to freeze. DefaultFrame.ECLIPTICJ2000. Forgenerate_ephemeris()the frame must beFrame.ECLIPTICJ2000(the ephemeris integration frame).encounter_timescale_divisor (
float|None) – Encounter-timescale divisor to freeze into the key.None(default) freezes the engine default.
Methods
__init__([force_model, frame, ...])describe()Return a full reproducibility summary of the frozen force model plus the kernel manifest captured at construction.
determine(observations[, initial_orbits, ...])Run the full OD pipeline over every object, through the frozen force model.
evaluate(orbit, observations, *[, config])Evaluate residuals for an orbit against observations, through the frozen force model.
generate_ephemeris(orbits, observers[, config])Generate predicted ephemeris through the frozen force model.
propagate(orbits, epochs[, config, ...])Propagate orbits to target epochs through the frozen force model.
refine(orbit, observations, *[, config])Refine an orbit with new observations using a Bayesian prior, through the frozen force model.
Attributes
encounter_timescale_divisorThe frozen encounter-timescale divisor (engine default resolved).
force_modelThe frozen force-model tier.
frameThe frozen integration/output frame.
- property force_model: ForceModelTier
The frozen force-model tier.
- property frame: Frame
The frozen integration/output frame.
- property encounter_timescale_divisor: float
The frozen encounter-timescale divisor (engine default resolved).
- propagate(orbits, epochs, config=None, *, tagged_covariance=False, thrust_arcs=None)[source]
Propagate orbits to target epochs through the frozen force model.
Identical to
empyrean.propagate()but reuses the pre-built force model. Whenconfigis omitted a default is built from this handle’s frozenforce_model/frameso the call always matches the key. If you pass an explicitconfigwhose force model or frame diverges from the frozen key, the identity guard raises — it never silently rebuilds. The result is bit-identical to the one-shot on the matching key.- Parameters:
orbits (
CartesianOrbits|KeplerianOrbits|CometaryOrbits|SphericalOrbits) – Asempyrean.propagate().configdefaults toPropagationConfig(force_model=self.force_model, frame=self.frame).epochs (
Epochs) – Asempyrean.propagate().configdefaults toPropagationConfig(force_model=self.force_model, frame=self.frame).config (
PropagationConfig|None) – Asempyrean.propagate().configdefaults toPropagationConfig(force_model=self.force_model, frame=self.frame).tagged_covariance (
bool) – Asempyrean.propagate().configdefaults toPropagationConfig(force_model=self.force_model, frame=self.frame).thrust_arcs (
Sequence[ThrustParams|None] |None) – Asempyrean.propagate().configdefaults toPropagationConfig(force_model=self.force_model, frame=self.frame).
- Return type:
PropagationResult- Returns:
PropagationResult
- generate_ephemeris(orbits, observers, config=None)[source]
Generate predicted ephemeris through the frozen force model.
Identical to
empyrean.generate_ephemeris()but reuses the pre-built force model. The ephemeris pipeline integrates in EclipticJ2000, so this handle must be frozen atFrame.ECLIPTICJ2000(the default) and the engine-default divisor; a handle frozen otherwise is rejected loudly by the identity guard rather than served under the wrong dynamics.- Parameters:
orbits (
CartesianOrbits|KeplerianOrbits|CometaryOrbits|SphericalOrbits) – Asempyrean.generate_ephemeris().configdefaults to anEphemerisConfigcarrying this handle’s frozenforce_model/frame.observers (
Observers) – Asempyrean.generate_ephemeris().configdefaults to anEphemerisConfigcarrying this handle’s frozenforce_model/frame.config (
EphemerisConfig|None) – Asempyrean.generate_ephemeris().configdefaults to anEphemerisConfigcarrying this handle’s frozenforce_model/frame.
- Return type:
EphemerisResult- Returns:
EphemerisResult
- determine(observations, initial_orbits=None, *, radar=None, config=None)[source]
Run the full OD pipeline over every object, through the frozen force model.
Identical to
empyrean.determine(), which see for the batch semantics, the seeding rules, and the return shape. Results are bit-identical to that call on a matching handle.
- evaluate(orbit, observations, *, config=None)[source]
Evaluate residuals for an orbit against observations, through the frozen force model.
Identical to
empyrean.evaluate(); no fitting is performed.
- refine(orbit, observations, *, config=None)[source]
Refine an orbit with new observations using a Bayesian prior, through the frozen force model.
Identical to
empyrean.refine(). This is the loop the whole surface exists for: assemble one handle, refine many times through it.
- describe()[source]
Return a full reproducibility summary of the frozen force model plus the kernel manifest captured at construction.
Every field of the returned
SystemDescriptionis populated — nothing is defaulted.- Return type:
SystemDescription