Skip to content

Python API

The NovaPhy Python package is imported as:

import novaphy

The partner-facing public API is the set of names exported from novaphy.__all__ plus solver classes and configuration objects under novaphy.solvers. Solver classes intentionally live in the novaphy.solvers namespace instead of the top level, mirroring newton.solvers.

This reference is organized by topic in the same shape as newton's API Reference. Where Newton uses real subpackages (for example newton.geometry, newton.math), NovaPhy still exposes many of those symbols at the top level; the category pages below group them by topic so that the documentation reads as a 1-to-1 mirror. Real Python subpackages such as novaphy.solvers, novaphy.ik, novaphy.sensors, and novaphy.actuators are called out explicitly.

Index

Category Description
novaphy Top-level scene, runtime buffers, joints, and core types.
novaphy.actuators Actuator framework: PD controller and effort writer.
novaphy.geometry Collision shapes, broadphase, narrowphase, AABB, and contact data.
novaphy.ik Inverse-kinematics solvers, Jacobian helpers, end-effector queries.
novaphy.io URDF / USD / MJCF importers, scene builder, exporter, recorder.
novaphy.math Spatial algebra, axis conversion, and angle helpers.
novaphy.sensors Sensor framework: IMU, contact, frame transform readers.
novaphy.solvers Solver classes, configuration objects, and solver metadata.
novaphy.utils Profiling, device descriptors, version, scaffold helpers.

Quick Start

For a guided walkthrough including setup, public API surface, the runtime contract, integration notes, and runnable demos, see the Quick Start guide.

Compatibility with newton

NovaPhy aligns with Newton's solver-primary architecture:

  • solver.step(state_in, state_out, control, contacts, dt) is the canonical forward-dynamics entry point on every SolverBase subclass.
  • Model is immutable, runtime buffers (SimState, Control, Contacts) are caller-owned. Allocate state/control via model.state() / model.control(), and allocate collision-sized contact buffers via CollisionPipeline(model).contacts().
  • Solver classes live exclusively in novaphy.solvers.*; there is no novaphy.SolverXXX top-level shortcut.

NovaPhy currently differs from Newton in the following ways (only the major items are listed; see each category page for symbol-level differences):

  • Some Newton subpackages (newton.geometry, newton.math, newton.utils, newton.usd, newton.selection, newton.viewer) are not yet split out in NovaPhy; their symbols live at the top level.
  • Newton math helpers built around Warp (safe_div, smooth_min/max, quat_*, vec_*, transform_twist/wrench) are not provided.
  • NovaPhy's implemented IK path is function-style (solve_ik, solve_ik_pose, Jacobian helpers, end-effector queries). The class-style IK symbols (IKSolver, IKObjective, optimizer classes) are documented as scaffold placeholders until their full Newton-compatible layer lands.
  • VBD is exposed as novaphy.solvers.SolverVBD, a Newton-aligned SolverBase subclass. There is no top-level novaphy.VBDWorld container.
  • NovaPhy adds fluids (SolverPBF, SolverSPH), IPC (SolverIPC), and LBM (SolverLBM) backends not present upstream.