luminarycloud.params.simulation

Submodules

Classes

AdaptiveMeshRefinement

Adaptive Mesh Refinement

Adjoint

Settings for adjoint sensitivity analysis.

BodyFrame

Body frame.

EntityRelationships

Relationships between different entities.

General

Basic parameters used by a solution.

MaterialEntity

Material entity.

MonitorPlane

Monitor plane.

MotionData

Motion data.

MultiPhysicsCouplingOptions

Defines coupling solution strategies between different physics.

NonlinearControl

Determine input values such that target output values are met.

Output

Solution output settings.

ParticleGroup

Particle groups.

Physics

Single physics solver entity.

SimulationParam

Simulation configuration that supports multiple physics.

SlidingInterfaces

Defines the two sides that form a sliding interface. The two sides are abutting, possibly in combination with a periodic transformation, and should have the same normal grid velocity. The tangential grid velocity can, and usually will, be different. Each side of the sliding interface can be composed out of an arbitrary number of surfaces.

SurfaceName

Surface name map.

Time

Time parameters used by a transient solution (required if flow_behavior = transient).

VolumeEntity

Volume entity.

Package Contents

class AdaptiveMeshRefinement

Adaptive Mesh Refinement

active_region: list[ActiveRegion] = []

Region(s) within which the mesh is adapted at full resolution. Outside of these regions the mesh is coarsened with increasing distance from the region.

adaptation_sensor: list[luminarycloud.params.enum.AdaptationSensor] = []

Solution fields the mesh is adapted on for this physics. When set, overrides the automatic per-physics sensor selection. When empty, the sensor set is chosen automatically (Mach or velocity for flow, temperature for heat, and Mach/velocity plus temperature for conjugate heat transfer).

all_tet: luminarycloud.params.enum.AllTet

Automatically inserts high aspect ratio mesh elements in the boundary layer and ignores all adaptation boundary layer settings.

boundary_layer_profile: list[BoundaryLayerProfile] = []

Boundary layer meshing parameters to apply to adapted meshes.

meshing_method: luminarycloud.params.enum.MeshingMethod

The method to generate the computational mesh.

per_physics_adaptation: list[PerPhysicsAdaptation] = []

Per-physics adaptation overrides. Each entry overrides the global adaptation config for the named physics.

target_cv_millions: int = 10

User-requested mesh size in millions of control volumes.

user_scaling: LcFloat = 1.0

Scale factor between the geometry and the mesh.

class Adjoint

Settings for adjoint sensitivity analysis.

deformed_coords_id: str = ''

Upload ID of the file containing deformed coordinates for design surfaces. Setting this to ‘template’ instructs the solver to output a file with the current surface coordinates.

output: luminarycloud.params.outputs.Output | None = None

Function to differentiate.

primal_simulation_id: str = ''

ID of the primal simulation to differentiate.

surfaces: list[str] = []
class BodyFrame

Body frame.

body_frame_id: str = ''

ID of the MotionData frame that defined the body orientation.

class EntityRelationships

Relationships between different entities.

volume_material_relationship: list[VolumeMaterialRelationship] = []

Tracks volume entity(1) -> material entity(1) relationship.

volume_physics_relationship: list[VolumePhysicsRelationship] = []

Tracks volume entity(1) -> physics entity(1) relationship.

class General

Basic parameters used by a solution.

gravity: Gravity

Apply an acceleration due to gravity or other body force. Possible types: GravityOff, GravityOn from the gravity module.

simulation_type: luminarycloud.params.enum.FloatType

Type of equations solved for the physics.

time: luminarycloud.params.enum.FlowBehavior

Importance of physical time for the current simulation.

class MaterialEntity

Material entity.

fluid: MaterialFluid | None = None

Configuration for Fluid materials.

material_identifier: EntityIdentifier

Unique identifier for a material entity.

solid: MaterialSolid | None = None

Configuration for Solid materials.

class MonitorPlane

Monitor plane.

box_center: luminarycloud.types.Vector3

Center of the box used to clip the monitor plane.

box_rotation_angles: luminarycloud.types.Vector3

Rotation vector of Euler angles (XYZ order) that transforms the box used to clip the monitor plane.

box_side_lengths: luminarycloud.types.Vector3

Side lengths of the box used to clip the monitor plane.

enable_box_clip: bool = False

Turn on or off the ability to clip a monitor plane using a box.

enable_volume_clip: bool = False

Turn on or off the ability to constrain a monitor plane to specific volumes of the geometry.

id: str = ''
name: str = ''
normal: luminarycloud.types.Vector3

A vector normal to the plane.

point: luminarycloud.types.Vector3

A point on the plane.

volumes: list[luminarycloud._proto.client.entity_pb2.EntityIdentifier] = []

List of volumes used to clip the monitor plane.

class MotionData

Motion data.

attached_boundaries: list[str] = []

Surfaces that are attached to this frame.

attached_domains: list[str] = []

Domains that are attached to this frame.

frame_id: str = ''

ID of the Coordinate Frame.

frame_name: str = ''

Name of the Coordinate Frame.

frame_parent: str = ''

ID of the parent frame.

frame_transforms: list[FrameTransforms] = []

Type of the Transformation. Possible types: NoTransform, RotationalTransform, TranslationalTransform from the frame_transforms module.

motion_type: MotionType | None = None

Type of the Motion. Possible types: ConstantTranslationMotion, ConstantAngularMotion from the motion_type module.

class MultiPhysicsCouplingOptions

Defines coupling solution strategies between different physics.

mp_coupling_flow_max_iters: int = 1000

Outer iteration by which the frozen-flow schedule hands off from flow convergence to the coupled energy solve, even if the flow stopping conditions have not been met. Must be less than the overall maximum iteration stopping condition so the energy phase has iterations to run.

mp_coupling_flow_max_iters_enabled: bool = False

Hand off from the flow phase to the coupled energy solve at a fixed outer iteration, whether or not the flow stopping conditions have been met. When off, the handoff is driven solely by the flow convergence metrics.

mp_coupling_interface_conservation: luminarycloud.params.enum.MpCouplingInterfaceConservation

Controls how the residual heat flux imbalance across a non-conformal CHT interface is treated.

mp_coupling_interface_transfer: luminarycloud.params.enum.MpCouplingInterfaceTransfer

Selects how donor data is mapped onto the receiving side of a non-conformal CHT interface.

mp_coupling_iqn_ils_disable_optimizations: bool = False

Bypass IQN-ILS per-iteration optimizations (residual-ratio convergence and overshoot rollback) and always run the full configured sweep budget.

mp_coupling_iqn_ils_filter: luminarycloud.types.LcFloat = 0.05

Linear-dependence filter threshold for IQN-ILS history columns: a column is accepted only if its component orthogonal to the accepted span is at least this fraction of its norm.

mp_coupling_iqn_ils_history: int = 8

Maximum number of IQN-ILS history columns retained in the reduced solve.

mp_coupling_iqn_ils_initial_relax: luminarycloud.types.LcFloat = 0.1

Fixed relaxation factor applied on sweeps where no usable quasi-Newton history is available (first sweep, or when filters reject every column). Once history exists, IQN-ILS uses the standard quasi-Newton update with residual fallback coefficient fixed at 1.0.

mp_coupling_iqn_ils_reuse_window: int = 0

Number of prior time steps whose IQN-ILS history columns are reused in the current step’s quasi-Newton update. 0 wipes history at each new time step.

mp_coupling_iqn_ils_warmup_iters: int = 50

Number of outer iterations to run plain block-Jacobi coupling before activating IQN-ILS. Lets the solution settle before history accumulation begins.

mp_coupling_krylov_deflation_size: int = 0

Number of deflation vectors retained across coupled fluid-solid temperature solves. Zero disables deflation.

mp_coupling_lin_sol_coupling: luminarycloud.params.enum.MpCouplingLinSolCoupling

Selects how coupled physics are solved. Coupled solves the physics together for robustness. Partitioned uses IQN to iteratively couple separate physics solves.

mp_coupling_max_flux_correction: luminarycloud.types.LcFloat = 0.5

Caps the correction as a fraction of the larger side’s flux per unit area.

mp_coupling_n_gs_presweeps: int = 0

Number of Gauss-Seidel presweeps before the coupled solve. Each presweep solves the physics in sequence and exchanges interface data after each, warm-starting the coupled solve. Set to 0 to disable.

mp_coupling_n_intensive_loops: int = 0

Number of fluid-solid interface exchanges (partitioned coupling sweeps) performed per global iteration. Higher values couple the physics more tightly at the cost of more sub-solves per iteration.

mp_coupling_phase_strategy: luminarycloud.params.enum.MpCouplingPhaseStrategy

Selects an optional multi-stage coupling schedule for steady CHT. When set to Frozen Flow Energy, the run first converges the fluid flow field and then freezes the fluid momentum/pressure field and solves the coupled fluid+solid temperature field with the configured monolithic or partitioned coupling method.

class NonlinearControl

Determine input values such that target output values are met.

initial_gradient: LcFloat = 1

Estimate of the gradient of the function with respect to the control input, used for the first update of the Secant method.

method: luminarycloud.params.enum.NonlinearControlMethod

The method used to determine ‘input’ such that ‘output’(‘input’) = ‘target’.

start_iteration: int = 1000

Start the nonlinear controller after N iterations.

system: list[NonlinearControlSystem] = []

Outputs, inputs, and target values that define the control problem.

update_interval: int = 500

Update the input every N iterations.

update_relaxation: LcFloat = 0.5

Under-relaxation factor applied to the Secant method updates of the input variables.

class Output

Solution output settings.

include_residuals: bool = False

Include the residuals for each equation in the volume solution.

iters_per_output: int = 0

Number of (pseudo) timesteps between successive full solution output. If ≤0, only the final solution is written.

class ParticleGroup

Particle groups.

id: str = ''
name: str = ''
particle_group_behavior_model_ref: str = ''
particle_group_type: ParticleGroupType

Defines the behavior of the particles. Possible types: ActuatorDisk, ActuatorLine, SourcePoints, ProbePoints from the particle_group_type module.

class Physics

Single physics solver entity.

fluid: Fluid | None = None

Configuration for a fluid flow physics solver - simulates the flow of liquids and gases.

heat: Heat | None = None

Configuration for a heat transfer physics solver - simulates heat transfer in solid media.

physics_identifier: EntityIdentifier

Unique identifier for a physics entity.

class SimulationParam

Simulation configuration that supports multiple physics.

adaptive_mesh_refinement: AdaptiveMeshRefinement

Adaptive Mesh Refinement.

adjoint: Adjoint

Settings for adjoint sensitivity analysis.

basic: General

Basic parameters used by a solution.

body_frame: BodyFrame

Body frame.

entity_relationships: EntityRelationships

Relationships between different entities.

interfaces: list[SlidingInterfaces] = []

Defines the two sides that form a sliding interface. The two sides are abutting, possibly in combination with a periodic transformation, and should have the same normal grid velocity. The tangential grid velocity can, and usually will, be different. Each side of the sliding interface can be composed out of an arbitrary number of surfaces.

materials: list[MaterialEntity] = []

Material entity.

monitor_plane: list[MonitorPlane] = []

Monitor plane.

motion_data: list[MotionData] = []

Motion data.

mp_coupling_options: MultiPhysicsCouplingOptions | None

Defines coupling solution strategies between different physics.

nonlinear_control: NonlinearControl

Determine input values such that target output values are met.

output: Output

Solution output settings.

particle_group: list[ParticleGroup] = []

Particle groups.

physics: list[Physics] = []

Single physics solver entity.

surface_name: dict[str, SurfaceName]

Surface name map.

time: Time

Time parameters used by a transient solution (required if flow_behavior = transient).

volume_entity: list[VolumeEntity] = []

Volume entity.

class SlidingInterfaces

Defines the two sides that form a sliding interface. The two sides are abutting, possibly in combination with a periodic transformation, and should have the same normal grid velocity. The tangential grid velocity can, and usually will, be different. Each side of the sliding interface can be composed out of an arbitrary number of surfaces.

id: str = ''

ID of the sliding interface.

interface_type: luminarycloud.params.enum.InterfaceType

Type of interface treatment.

name: str = ''

Name of the sliding interface.

surfaces_side_a: list[str] = []

Names of the surfaces of side A of the sliding interface.

surfaces_side_b: list[str] = []

Names of the surfaces of side B of the sliding interface.

tim_conductivity: luminarycloud.types.LcFloat = 5

Thermal conductivity of the thermal interface material (TIM).

tim_thickness: luminarycloud.types.LcFloat = 0

Thickness of the thermal interface material (TIM). Zero thickness implies perfect contact.

class SurfaceName

Surface name map.

surface_name: str = ''
class Time

Time parameters used by a transient solution (required if flow_behavior = transient).

compute_statistics: ComputeStatistics

Compute time-averaged values of flow variables (e.g. Velocity). Possible types: ComputeStatisticsOff, ComputeStatisticsOn from the compute_statistics module.

time_marching: TimeMarching

Scheme for time-accurate integration. Possible types: TimeImplicit, TimeExplicit from the time_marching module.

time_step: LcFloat = 0.0001

The fixed physical time step.

time_step_ramp: TimeStepRamp

Use a larger time step value during the initial transients of a simulation and then ramp linearly towards the target value, to accelerate statistical convergence. Only applicable to transient problems with time implicit integration (dual time stepping). Possible types: TimeStepRampOff, TimeStepRampOn from the time_step_ramp module.

class VolumeEntity

Volume entity.

volume_identifier: luminarycloud._proto.client.entity_pb2.EntityIdentifier

Unique identifier for a volume entity.