v0.27.0¶
Release date: 2026-09-23
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 extends field comparison renders to Physics AI inference results, lets a simulation template be validated against a geometry version before meshing, adds a frozen-flow schedule for steady conjugate heat transfer, and fixes several clip filter inconsistencies.
Breaking Changes¶
In
Project.validate_simulation_template(),mesh_idis now an optional keyword-only argument, andsimulation_template_idis the first positional argument. A call that passes the mesh ID positionally, such asproject.validate_simulation_template(mesh_id, template_id), must now pass it by keyword.
Features¶
vis.Scene.compare()accepts anInferenceJob, so an inference result can be compared against a simulation solution or against another inference job in the same project. To compare a simulation with an inference job, build the scene on theSolutionand pass the inference job tocompare(); the reverse is rejected, because only a simulation-based scene can hide the far field withhide_far_field(). Fields are matched by name and compared as-is, with no unit conversion, and derived fields such as the pressure coefficient don’t exist on an inference job. Because inference jobs only carry surface data, filters that need volume data, such as volumetric streamlines, are rejected when an inference job is on either side of the comparison.Project.validate_simulation_template()acceptsgeometry_version_idas an alternative tomesh_id, so a template can be checked before mesh generation completes. Exactly one of the two must be given.MultiPhysicsCouplingOptionsadds an optional two-phase schedule for steady conjugate heat transfer. Settingmp_coupling_phase_strategytoMpCouplingPhaseStrategy.MP_COUPLING_PHASE_STRATEGY_FROZEN_FLOW_ENERGYfirst converges the fluid flow, then freezes it and solves the coupled fluid and solid temperature field. The handoff happens when the flow stopping conditions are met, or atmp_coupling_flow_max_iterswhenmp_coupling_flow_max_iters_enabledis set. The schedule requires steady, constant-density flow without buoyancy.mp_coupling_krylov_deflation_sizeenables Krylov deflation for the coupled temperature solve. All new options default to the existing behavior.vis.PlaneClipandvis.BoxCliphave asmoothflag. WhenTrue, cells that straddle the clip boundary are cut by it rather than passed through whole.
Deprecations¶
None.
Bug Fixes / Improvements¶
Smooth and non-smooth clips now keep the same side for a given
invertedvalue, so settinginvertedalways selects exactly the opposite region. They previously kept opposite sides.Points lying exactly on a clip plane or box boundary are no longer discarded. Previously, for example, a plane clip applied to a slice with the same origin and normal produced no geometry whatever the value of
inverted.vis.Thresholdlikewise no longer drops values exactly at the ends of its range.vis.PlaneClip.invertedis no longer ignored when rendering.
Migration Guide¶
If you call
Project.validate_simulation_template()
with the mesh ID as the first positional argument, pass it by keyword instead:
- project.validate_simulation_template(mesh_id, template_id)
+ project.validate_simulation_template(template_id, mesh_id=mesh_id)