v0.23.0

Release date: 2026-02-04

Early Access

The Luminary Cloud API and Python SDK are Early Access features that are still under development. View the Luminary Cloud Early Access Terms. The interface may change, and you may need to migrate or discard scripts and configuration files multiple times before v1.0.0 is released. In the future, migrations may also be necessary when upgrading to new major versions of the SDK (e.g. v2.0.0).

Release Notes

This release expands SDK coverage for geometry and outputs, adds extrema querying, and adds several new solver parameter capabilities. It also removes a few long-deprecated APIs.

Breaking Changes

  • Several long-deprecated APIs have been removed:

    • lc.list_projects() (use lc.iterate_projects() instead, wrapped in a list() if you need to eagerly load all of them).

    • Simulation.get_simulation_param() (use Simulation.get_parameters() instead).

    • SimulationTemplate.get_simulation_param() (use SimulationTemplate.get_parameters() instead).

    • lc.meshing.sizing_strategy.MinimalCount (use lc.meshing.sizing_strategy.Minimal instead).

Features

  • Added geometry contacts support via Geometry.compute_contacts(), Geometry.get_contacts(), lc.get_geometry_contacts(), and lc.wait_for_geometry_contacts().

  • Geometry modifications on a VolumeSelection (create_shape() and transformations) now support the Expression type, allowing you to use named variables as input.

  • Added Simulation.download_output_from_definition() to download surface outputs using an existing OutputDefinition.

  • Added luminarycloud.vis.extrema_query() for top-N min/max queries of a field in the dataset. This is useful for debugging failed simulations where cell values become non-physical. The extrema query returns cell values, connected surfaces (if any), global face IDs, local cell IDs, and approximate cell centers.

  • Exposed solver parameters for nonlinear control. That is, defining additional scalar equations that are solved as the solver iterates. This can be used to run fixed-CL simulations, where the angle of attack is varied automatically to achieve the target lift.

  • Added periodic_automatic_deduction to solver params, which deduces translation/rotation sign and magnitude automatically.

  • Added per-volume initialization for fluid and heat physics via FluidPrescribedValues.initialization_per_zone, FluidFarfieldValues.initialization_per_zone, and heat equivalents.

Deprecations

  • The experimental configure_adjoint_surface_output is deprecated. Use an OutputDefinition ID instead (e.g., SimulationParam.adjoint.output.output_definition_id = ...).

Bug Fixes / Improvements

All Shape classes under luminarycloud.params.geometry now accept Vector3Like (tuples/lists) in their constructor for any of their Vector3 attributes. For example, in addition to this:

import luminarycloud as lc
from luminarycloud.params.geometry import Sphere

sphere = Sphere(center=lc.types.Vector3(3, 4, 5), radius=10)

you can now alternatively do this:

sphere = Sphere(center=(3, 4, 5), radius=10)
# or:
sphere = Sphere(center=[3, 4, 5], radius=10)

Migration Guide

  • If you use any of the removed deprecated functions, update to the replacements listed under Breaking Changes.

  • If you relied on configure_adjoint_surface_output, migrate to OutputDefinition IDs on SimulationParam.adjoint.output.