luminarycloud 0.22.2__py3-none-any.whl → 0.23.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- luminarycloud/__init__.py +9 -3
- luminarycloud/_client/client.py +1 -1
- luminarycloud/_client/retry_interceptor.py +13 -2
- luminarycloud/_helpers/_code_representation.py +1 -0
- luminarycloud/_helpers/_create_simulation.py +5 -1
- luminarycloud/_helpers/proto_decorator.py +46 -38
- luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2.py +214 -137
- luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2.pyi +152 -0
- luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2_grpc.py +103 -0
- luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2_grpc.pyi +40 -0
- luminarycloud/_proto/api/v0/luminarycloud/named_variable_set/named_variable_set_pb2.py +25 -3
- luminarycloud/_proto/api/v0/luminarycloud/named_variable_set/named_variable_set_pb2.pyi +30 -0
- luminarycloud/_proto/api/v0/luminarycloud/named_variable_set/named_variable_set_pb2_grpc.py +34 -0
- luminarycloud/_proto/api/v0/luminarycloud/named_variable_set/named_variable_set_pb2_grpc.pyi +12 -0
- luminarycloud/_proto/api/v0/luminarycloud/physics_ai/physics_ai_pb2.py +155 -59
- luminarycloud/_proto/api/v0/luminarycloud/physics_ai/physics_ai_pb2.pyi +252 -22
- luminarycloud/_proto/api/v0/luminarycloud/physics_ai/physics_ai_pb2_grpc.py +102 -0
- luminarycloud/_proto/api/v0/luminarycloud/physics_ai/physics_ai_pb2_grpc.pyi +36 -0
- luminarycloud/_proto/api/v0/luminarycloud/simulation/simulation_pb2.py +94 -71
- luminarycloud/_proto/api/v0/luminarycloud/simulation/simulation_pb2.pyi +46 -0
- luminarycloud/_proto/api/v0/luminarycloud/simulation/simulation_pb2_grpc.py +35 -0
- luminarycloud/_proto/api/v0/luminarycloud/simulation/simulation_pb2_grpc.pyi +16 -0
- luminarycloud/_proto/api/v0/luminarycloud/simulation_template/simulation_template_pb2.py +25 -3
- luminarycloud/_proto/api/v0/luminarycloud/simulation_template/simulation_template_pb2.pyi +32 -0
- luminarycloud/_proto/api/v0/luminarycloud/simulation_template/simulation_template_pb2_grpc.py +34 -0
- luminarycloud/_proto/api/v0/luminarycloud/simulation_template/simulation_template_pb2_grpc.pyi +12 -0
- luminarycloud/_proto/api/v0/luminarycloud/vis/vis_pb2.py +68 -21
- luminarycloud/_proto/api/v0/luminarycloud/vis/vis_pb2.pyi +119 -0
- luminarycloud/_proto/api/v0/luminarycloud/vis/vis_pb2_grpc.py +33 -0
- luminarycloud/_proto/api/v0/luminarycloud/vis/vis_pb2_grpc.pyi +10 -0
- luminarycloud/_proto/client/simulation_pb2.py +405 -346
- luminarycloud/_proto/client/simulation_pb2.pyi +175 -21
- luminarycloud/_proto/clusterconfig/clusterconfig_pb2.py +273 -0
- luminarycloud/_proto/clusterconfig/clusterconfig_pb2.pyi +808 -0
- luminarycloud/_proto/geometry/geometry_pb2.pyi +1 -1
- luminarycloud/_proto/lcstatus/details/geometry/geometry_pb2.py +256 -0
- luminarycloud/_proto/lcstatus/details/geometry/geometry_pb2.pyi +472 -0
- luminarycloud/_proto/physicsaitrainingservice/physicsaitrainingservice_pb2.py +2 -2
- luminarycloud/_proto/physicsaitrainingservice/physicsaitrainingservice_pb2_grpc.py +102 -0
- luminarycloud/_proto/physicsaitrainingservice/physicsaitrainingservice_pb2_grpc.pyi +36 -0
- luminarycloud/_proto/quantity/quantity_pb2.pyi +1 -1
- luminarycloud/enum/__init__.py +1 -0
- luminarycloud/enum/gpu_type.py +42 -7
- luminarycloud/enum/vis_enums.py +18 -0
- luminarycloud/geometry.py +81 -0
- luminarycloud/geometry_contacts.py +222 -0
- luminarycloud/meshing/mesh_generation_params.py +4 -4
- luminarycloud/meshing/sizing_strategy/__init__.py +0 -1
- luminarycloud/meshing/sizing_strategy/sizing_strategies.py +0 -20
- luminarycloud/params/geometry/shapes.py +137 -31
- luminarycloud/params/outputs/__init__.py +0 -2
- luminarycloud/params/outputs/output.py +17 -5
- luminarycloud/params/simulation/__init__.py +2 -0
- luminarycloud/params/simulation/adaptive_mesh_refinement/active_region_.py +1 -1
- luminarycloud/params/simulation/adaptive_mesh_refinement/boundary_layer_profile_.py +1 -1
- luminarycloud/params/simulation/adaptive_mesh_refinement_.py +1 -1
- luminarycloud/params/simulation/adjoint_.py +8 -5
- luminarycloud/params/simulation/basic/gravity/gravity_off_.py +1 -1
- luminarycloud/params/simulation/basic/gravity/gravity_on_.py +1 -1
- luminarycloud/params/simulation/basic/gravity_.py +1 -1
- luminarycloud/params/simulation/body_frame_.py +1 -1
- luminarycloud/params/simulation/entity_relationships/volume_material_relationship_.py +1 -1
- luminarycloud/params/simulation/entity_relationships/volume_physics_relationship_.py +1 -1
- luminarycloud/params/simulation/entity_relationships_.py +1 -1
- luminarycloud/params/simulation/general_.py +1 -1
- luminarycloud/params/simulation/material/fluid/boussinesq_approximation/boussinesq_off_.py +1 -1
- luminarycloud/params/simulation/material/fluid/boussinesq_approximation/boussinesq_on_.py +1 -1
- luminarycloud/params/simulation/material/fluid/boussinesq_approximation_.py +1 -1
- luminarycloud/params/simulation/material/fluid/material_model/__init__.py +2 -0
- luminarycloud/params/simulation/material/fluid/material_model/ideal_gas_.py +1 -1
- luminarycloud/params/simulation/material/fluid/material_model/incompressible_fluid_.py +1 -1
- luminarycloud/params/simulation/material/fluid/material_model/incompressible_fluid_with_energy_.py +1 -1
- luminarycloud/params/simulation/material/fluid/material_model/real_gas_backend/__init__.py +2 -0
- luminarycloud/params/simulation/material/fluid/material_model/real_gas_backend/real_gas_coolprop_.py +43 -0
- luminarycloud/params/simulation/material/fluid/material_model/real_gas_backend/real_gas_polynomial_.py +53 -0
- luminarycloud/params/simulation/material/fluid/material_model/real_gas_backend_.py +29 -0
- luminarycloud/params/simulation/material/fluid/material_model_.py +1 -1
- luminarycloud/params/simulation/material/fluid/thermal_conductivity_model/prescribed_conductivity_.py +1 -1
- luminarycloud/params/simulation/material/fluid/thermal_conductivity_model/prescribed_prandtl_number_.py +1 -1
- luminarycloud/params/simulation/material/fluid/thermal_conductivity_model/temperature_dependent_conductivity_.py +1 -1
- luminarycloud/params/simulation/material/fluid/thermal_conductivity_model_.py +1 -1
- luminarycloud/params/simulation/material/fluid/viscosity_model/prescribed_viscosity_.py +1 -1
- luminarycloud/params/simulation/material/fluid/viscosity_model/sutherland_.py +1 -1
- luminarycloud/params/simulation/material/fluid/viscosity_model/temperature_dependent_viscosity_.py +1 -1
- luminarycloud/params/simulation/material/fluid/viscosity_model_.py +1 -1
- luminarycloud/params/simulation/material/material_fluid_.py +78 -2
- luminarycloud/params/simulation/material/material_solid_.py +1 -1
- luminarycloud/params/simulation/material_entity_.py +1 -1
- luminarycloud/params/simulation/monitor_plane_.py +1 -1
- luminarycloud/params/simulation/motion_data/frame_transforms/no_transform_.py +1 -1
- luminarycloud/params/simulation/motion_data/frame_transforms/rotational_transform_.py +1 -1
- luminarycloud/params/simulation/motion_data/frame_transforms/translational_transform_.py +1 -1
- luminarycloud/params/simulation/motion_data/frame_transforms_.py +1 -1
- luminarycloud/params/simulation/motion_data/motion_type/constant_angular_motion_.py +1 -1
- luminarycloud/params/simulation/motion_data/motion_type/constant_translation_motion_.py +1 -1
- luminarycloud/params/simulation/motion_data/motion_type_.py +1 -1
- luminarycloud/params/simulation/motion_data_.py +1 -1
- luminarycloud/params/simulation/multi_physics_coupling_options_.py +1 -1
- luminarycloud/params/simulation/nonlinear_control/__init__.py +1 -0
- luminarycloud/params/simulation/nonlinear_control/nonlinear_control_system_.py +48 -0
- luminarycloud/params/simulation/nonlinear_control_.py +61 -0
- luminarycloud/params/simulation/output_.py +1 -1
- luminarycloud/params/simulation/particle_group/particle_group_type/actuator_disk/actuator_disk_orientation_selection/actuator_disk_specify_normal_vector_.py +1 -1
- luminarycloud/params/simulation/particle_group/particle_group_type/actuator_disk/actuator_disk_orientation_selection/actuator_disk_specify_rotation_angles_.py +1 -1
- luminarycloud/params/simulation/particle_group/particle_group_type/actuator_disk/actuator_disk_orientation_selection_.py +1 -1
- luminarycloud/params/simulation/particle_group/particle_group_type/actuator_disk_.py +1 -1
- luminarycloud/params/simulation/particle_group/particle_group_type/actuator_line_.py +1 -1
- luminarycloud/params/simulation/particle_group/particle_group_type/probe_points_.py +1 -1
- luminarycloud/params/simulation/particle_group/particle_group_type/source_points_.py +1 -1
- luminarycloud/params/simulation/particle_group/particle_group_type_.py +1 -1
- luminarycloud/params/simulation/particle_group_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/adjoint_controls_fluid_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/basic_fluid_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/farfield_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet/fan_curve_inlet_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet/mach_inlet_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet/mass_flow_inlet_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet/total_pressure_inlet_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet/velocity_components_inlet_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet/velocity_magnitude_inlet_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/outlet/outlet_strategy/fan_curve_outlet_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/outlet/outlet_strategy/outlet_pressure_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/outlet/outlet_strategy/outlet_target_corrected_mass_flow_rate_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/outlet/outlet_strategy/outlet_target_mass_flow_rate_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/outlet/outlet_strategy_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/outlet_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/symmetry_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/turbulence_boundary_conditions_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/energy/prescribed_heat_flux_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/energy/prescribed_temperature_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/momentum/no_slip_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/momentum/slip_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/momentum/wall_model_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/wall_energy_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/wall_momentum_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/boundary_conditions_fluid_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/initialization/__init__.py +1 -0
- luminarycloud/params/simulation/physics/fluid/initialization/fluid_existing_solution_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/initialization/fluid_farfield_values_.py +14 -1
- luminarycloud/params/simulation/physics/fluid/initialization/fluid_initialization_per_zone_.py +48 -0
- luminarycloud/params/simulation/physics/fluid/initialization/fluid_prescribed_values_.py +14 -1
- luminarycloud/params/simulation/physics/fluid/initialization/turbulence_initialization_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/initialization_fluid_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/physical_behavior/blade_element_airfoil_data_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_disk_model/actuator_disk_blade_element_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_disk_model/actuator_disk_radial_distribution_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_disk_model/actuator_disk_uniform_thrust_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_disk_model/fan_curve_internal_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_disk_model_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_line_model/actuator_line_blade_element_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_line_model_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/blade_element_params_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/particle_source_model/general_acceleration_source_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/particle_source_model/general_mass_source_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/particle_source_model_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/physical_behavior_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/porous_behavior_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/solution_controls/fluid_relaxation_method/fluid_explicit_relaxation_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/solution_controls/fluid_relaxation_method/fluid_implicit_relaxation/robust_startup/robust_startup_auto_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/solution_controls/fluid_relaxation_method/fluid_implicit_relaxation/robust_startup/robust_startup_off_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/solution_controls/fluid_relaxation_method/fluid_implicit_relaxation/robust_startup/robust_startup_on_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/solution_controls/fluid_relaxation_method/fluid_implicit_relaxation/robust_startup_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/solution_controls/fluid_relaxation_method/fluid_implicit_relaxation_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/solution_controls/fluid_relaxation_method_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/solution_controls/pseudo_time_step_method/cfl_based_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/solution_controls/pseudo_time_step_method/fixed_pseudo_time_step_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/solution_controls/pseudo_time_step_method_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/solution_controls_fluid_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme/ec2_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme/fds_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme/ld2_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme/rhie_chow_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme_order/first_order_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme_order/second_order_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme_order_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/spatial_discretization_fluid_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/turbulence/des_formulation/ddes_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/turbulence/des_formulation/ddes_vtm_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/turbulence/des_formulation/iddes_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/turbulence/des_formulation_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/turbulence/komega_sst/constants/custom_komega_sst_constants_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/turbulence/komega_sst/constants/default_komega_sst_constants_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/turbulence/komega_sst/komega_sst_constants_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/turbulence/komega_sst_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/turbulence/spalart_allmaras/constants/custom_spalart_allmaras_constants_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/turbulence/spalart_allmaras/constants/default_spalart_allmaras_constants_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/turbulence/spalart_allmaras/spalart_allmaras_constants_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/turbulence/spalart_allmaras_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/turbulence/sub_grid_scale_model/amd_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/turbulence/sub_grid_scale_model/sigma_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/turbulence/sub_grid_scale_model/smagorinsky_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/turbulence/sub_grid_scale_model/vreman_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/turbulence/sub_grid_scale_model/wale_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/turbulence/sub_grid_scale_model_.py +1 -1
- luminarycloud/params/simulation/physics/fluid/turbulence_.py +1 -1
- luminarycloud/params/simulation/physics/fluid_.py +1 -1
- luminarycloud/params/simulation/physics/heat/adjoint_controls_heat_.py +1 -1
- luminarycloud/params/simulation/physics/heat/boundary_conditions/heat_bc_convection_.py +1 -1
- luminarycloud/params/simulation/physics/heat/boundary_conditions/heat_bc_heat_flux_.py +1 -1
- luminarycloud/params/simulation/physics/heat/boundary_conditions/heat_bc_integrated_heat_flux_.py +1 -1
- luminarycloud/params/simulation/physics/heat/boundary_conditions/heat_bc_symmetry_.py +1 -1
- luminarycloud/params/simulation/physics/heat/boundary_conditions/heat_bc_temperature_.py +1 -1
- luminarycloud/params/simulation/physics/heat/boundary_conditions_heat_.py +1 -1
- luminarycloud/params/simulation/physics/heat/heat_source/heat_source_type/heat_source_type_power_.py +1 -1
- luminarycloud/params/simulation/physics/heat/heat_source/heat_source_type/heat_source_type_power_per_unit_of_volume_.py +1 -1
- luminarycloud/params/simulation/physics/heat/heat_source/heat_source_type_.py +1 -1
- luminarycloud/params/simulation/physics/heat/heat_source_.py +1 -1
- luminarycloud/params/simulation/physics/heat/initialization/__init__.py +1 -0
- luminarycloud/params/simulation/physics/heat/initialization/heat_existing_solution_.py +1 -1
- luminarycloud/params/simulation/physics/heat/initialization/heat_prescribed_values/__init__.py +1 -0
- luminarycloud/params/simulation/physics/heat/initialization/heat_prescribed_values/heat_initialization_per_zone_.py +40 -0
- luminarycloud/params/simulation/physics/heat/initialization/heat_prescribed_values_.py +14 -1
- luminarycloud/params/simulation/physics/heat/initialization_heat_.py +1 -1
- luminarycloud/params/simulation/physics/heat/solution_controls/heat_relaxation_method/heat_implicit_relaxation_.py +1 -1
- luminarycloud/params/simulation/physics/heat/solution_controls/heat_relaxation_method_.py +1 -1
- luminarycloud/params/simulation/physics/heat/solution_controls_heat_.py +1 -1
- luminarycloud/params/simulation/physics/heat/spatial_discretization_heat_.py +1 -1
- luminarycloud/params/simulation/physics/heat_.py +1 -1
- luminarycloud/params/simulation/physics/periodic_pair_.py +5 -1
- luminarycloud/params/simulation/physics/solution_controls/linear_solver_type/gauss_seidel_.py +1 -1
- luminarycloud/params/simulation/physics/solution_controls/linear_solver_type/krylov_amg_.py +1 -1
- luminarycloud/params/simulation/physics/solution_controls/linear_solver_type_.py +1 -1
- luminarycloud/params/simulation/physics_.py +1 -1
- luminarycloud/params/simulation/simulation_param_.py +8 -1
- luminarycloud/params/simulation/sliding_interfaces_.py +1 -1
- luminarycloud/params/simulation/surface_name_.py +1 -1
- luminarycloud/params/simulation/time/compute_statistics/compute_statistics_off_.py +1 -1
- luminarycloud/params/simulation/time/compute_statistics/compute_statistics_on_.py +1 -1
- luminarycloud/params/simulation/time/compute_statistics_.py +1 -1
- luminarycloud/params/simulation/time/time_marching/time_explicit_.py +1 -1
- luminarycloud/params/simulation/time/time_marching/time_implicit_.py +1 -1
- luminarycloud/params/simulation/time/time_marching_.py +1 -1
- luminarycloud/params/simulation/time/time_step_ramp/time_step_ramp_off_.py +1 -1
- luminarycloud/params/simulation/time/time_step_ramp/time_step_ramp_on_.py +1 -1
- luminarycloud/params/simulation/time/time_step_ramp_.py +1 -1
- luminarycloud/params/simulation/time_.py +1 -1
- luminarycloud/params/simulation/volume_entity_.py +1 -1
- luminarycloud/physics_ai/__init__.py +17 -0
- luminarycloud/physics_ai/architectures.py +130 -18
- luminarycloud/physics_ai/datasets.py +301 -0
- luminarycloud/physics_ai/training_jobs.py +50 -4
- luminarycloud/pipelines/__init__.py +16 -4
- luminarycloud/pipelines/api.py +192 -17
- luminarycloud/pipelines/arguments.py +8 -3
- luminarycloud/pipelines/core.py +296 -45
- luminarycloud/pipelines/flowables.py +138 -0
- luminarycloud/pipelines/stages.py +34 -55
- luminarycloud/pipelines/user_code_validation.py +122 -0
- luminarycloud/project.py +0 -14
- luminarycloud/simulation.py +42 -11
- luminarycloud/simulation_param.py +0 -62
- luminarycloud/simulation_template.py +1 -11
- luminarycloud/types/adfloat.py +48 -4
- luminarycloud/types/matrix3.py +9 -9
- luminarycloud/types/vector3.py +52 -23
- luminarycloud/vis/__init__.py +3 -0
- luminarycloud/vis/visualization.py +88 -0
- luminarycloud/volume_selection.py +29 -17
- {luminarycloud-0.22.2.dist-info → luminarycloud-0.23.0.dist-info}/METADATA +1 -1
- {luminarycloud-0.22.2.dist-info → luminarycloud-0.23.0.dist-info}/RECORD +266 -249
- luminarycloud/params/outputs/residual_output.py +0 -24
- /luminarycloud/params/{simulation/_lib.py → _lib.py} +0 -0
- {luminarycloud-0.22.2.dist-info → luminarycloud-0.23.0.dist-info}/WHEEL +0 -0
luminarycloud/types/vector3.py
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
# Copyright 2023-2024 Luminary Cloud, Inc. All Rights Reserved.
|
|
2
|
+
from collections.abc import Iterator
|
|
2
3
|
from dataclasses import dataclass
|
|
3
|
-
from typing import TypeAlias
|
|
4
|
+
from typing import TypeAlias
|
|
5
|
+
|
|
6
|
+
from luminarycloud.types import LcFloat
|
|
4
7
|
|
|
5
8
|
from .._proto.api.v0.luminarycloud.common import common_pb2 as commonpb
|
|
6
|
-
from .._proto.base
|
|
7
|
-
from .adfloat import
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
)
|
|
9
|
+
from .._proto.base import base_pb2 as basepb
|
|
10
|
+
from .adfloat import Expression, _lcfloat_to_float
|
|
11
|
+
from .adfloat import _from_ad_proto as _float_from_ad_proto
|
|
12
|
+
from .adfloat import _to_ad_proto as _float_to_ad_proto
|
|
11
13
|
|
|
12
14
|
|
|
13
15
|
@dataclass
|
|
@@ -30,43 +32,64 @@ class Vector3:
|
|
|
30
32
|
array([1., 2., 3.])
|
|
31
33
|
"""
|
|
32
34
|
|
|
33
|
-
x:
|
|
34
|
-
y:
|
|
35
|
-
z:
|
|
35
|
+
x: LcFloat = 0.0
|
|
36
|
+
y: LcFloat = 0.0
|
|
37
|
+
z: LcFloat = 0.0
|
|
36
38
|
|
|
37
39
|
def _to_proto(self) -> commonpb.Vector3:
|
|
38
|
-
|
|
40
|
+
# TODO(LC-26796) evaluate expressions to do this conversion
|
|
41
|
+
if any(isinstance(c, Expression) for c in (self.x, self.y, self.z)):
|
|
42
|
+
raise ValueError(
|
|
43
|
+
"Cannot convert Vector3 with Expression components to commonpb.Vector3"
|
|
44
|
+
)
|
|
45
|
+
return commonpb.Vector3(
|
|
46
|
+
x=_lcfloat_to_float(self.x),
|
|
47
|
+
y=_lcfloat_to_float(self.y),
|
|
48
|
+
z=_lcfloat_to_float(self.z),
|
|
49
|
+
)
|
|
39
50
|
|
|
40
51
|
def _from_proto(self, proto: commonpb.Vector3) -> None:
|
|
41
52
|
self.x = proto.x
|
|
42
53
|
self.y = proto.y
|
|
43
54
|
self.z = proto.z
|
|
44
55
|
|
|
45
|
-
def _to_ad_proto(self) -> AdVector3:
|
|
46
|
-
advector = AdVector3()
|
|
56
|
+
def _to_ad_proto(self) -> basepb.AdVector3:
|
|
57
|
+
advector = basepb.AdVector3()
|
|
47
58
|
advector.x.CopyFrom(_float_to_ad_proto(self.x))
|
|
48
59
|
advector.y.CopyFrom(_float_to_ad_proto(self.y))
|
|
49
60
|
advector.z.CopyFrom(_float_to_ad_proto(self.z))
|
|
50
61
|
return advector
|
|
51
62
|
|
|
52
|
-
def
|
|
53
|
-
return Vector3Proto(x=self.x, y=self.y, z=self.z)
|
|
54
|
-
|
|
55
|
-
def _from_ad_proto(self, proto: AdVector3) -> None:
|
|
63
|
+
def _from_ad_proto(self, proto: basepb.AdVector3) -> None:
|
|
56
64
|
self.x = _float_from_ad_proto(proto.x)
|
|
57
65
|
self.y = _float_from_ad_proto(proto.y)
|
|
58
66
|
self.z = _float_from_ad_proto(proto.z)
|
|
59
67
|
|
|
60
68
|
@classmethod
|
|
61
|
-
def from_ad_proto(cls, proto: AdVector3) -> "Vector3":
|
|
69
|
+
def from_ad_proto(cls, proto: basepb.AdVector3) -> "Vector3":
|
|
62
70
|
vector = cls()
|
|
63
71
|
vector._from_ad_proto(proto)
|
|
64
72
|
return vector
|
|
65
73
|
|
|
66
|
-
def
|
|
74
|
+
def _to_base_proto(self) -> basepb.Vector3:
|
|
75
|
+
# TODO(LC-26796) evaluate expressions to do this conversion
|
|
76
|
+
if any(isinstance(c, Expression) for c in (self.x, self.y, self.z)):
|
|
77
|
+
raise ValueError("Cannot convert Vector3 with Expression components to basepb.Vector3")
|
|
78
|
+
return basepb.Vector3(
|
|
79
|
+
x=_lcfloat_to_float(self.x),
|
|
80
|
+
y=_lcfloat_to_float(self.y),
|
|
81
|
+
z=_lcfloat_to_float(self.z),
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
def _from_base_proto(self, proto: basepb.Vector3) -> None:
|
|
85
|
+
self.x = proto.x
|
|
86
|
+
self.y = proto.y
|
|
87
|
+
self.z = proto.z
|
|
88
|
+
|
|
89
|
+
def __getitem__(self, index: int) -> LcFloat:
|
|
67
90
|
return [self.x, self.y, self.z][index]
|
|
68
91
|
|
|
69
|
-
def __setitem__(self, index: int, value:
|
|
92
|
+
def __setitem__(self, index: int, value: LcFloat) -> None:
|
|
70
93
|
if index == 0:
|
|
71
94
|
self.x = value
|
|
72
95
|
elif index == 1:
|
|
@@ -76,7 +99,7 @@ class Vector3:
|
|
|
76
99
|
else:
|
|
77
100
|
raise IndexError(f"Index {index} out of bounds for Vector3")
|
|
78
101
|
|
|
79
|
-
def __iter__(self) -> Iterator[
|
|
102
|
+
def __iter__(self) -> Iterator[LcFloat]:
|
|
80
103
|
"""Enable iteration over the vector components."""
|
|
81
104
|
yield self.x
|
|
82
105
|
yield self.y
|
|
@@ -90,10 +113,12 @@ class Vector3:
|
|
|
90
113
|
Vector3Like: TypeAlias = Vector3 | list[float] | tuple[float, float, float] # type: ignore
|
|
91
114
|
|
|
92
115
|
|
|
93
|
-
def _to_vector3(value: Vector3Like) -> Vector3:
|
|
116
|
+
def _to_vector3(value: Vector3Like | None) -> Vector3:
|
|
117
|
+
if value is None:
|
|
118
|
+
return Vector3()
|
|
94
119
|
if isinstance(value, Vector3):
|
|
95
120
|
return value
|
|
96
|
-
elif isinstance(value, list
|
|
121
|
+
elif isinstance(value, (list, tuple)):
|
|
97
122
|
assert len(value) == 3
|
|
98
123
|
return Vector3(value[0], value[1], value[2])
|
|
99
124
|
else:
|
|
@@ -104,5 +129,9 @@ def _to_vector3_proto(value: Vector3Like) -> commonpb.Vector3:
|
|
|
104
129
|
return _to_vector3(value)._to_proto()
|
|
105
130
|
|
|
106
131
|
|
|
107
|
-
def
|
|
132
|
+
def _to_vector3_base_proto(value: Vector3Like) -> basepb.Vector3:
|
|
133
|
+
return _to_vector3(value)._to_base_proto()
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
def _to_vector3_ad_proto(value: Vector3Like) -> basepb.AdVector3:
|
|
108
137
|
return _to_vector3(value)._to_ad_proto()
|
luminarycloud/vis/__init__.py
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
from .display import Field as Field
|
|
1
2
|
from .visualization import (
|
|
2
3
|
RenderOutput as RenderOutput,
|
|
3
4
|
Scene as Scene,
|
|
@@ -8,6 +9,8 @@ from .visualization import (
|
|
|
8
9
|
list_cameras as list_cameras,
|
|
9
10
|
RangeResult as RangeResult,
|
|
10
11
|
range_query as range_query,
|
|
12
|
+
ExtremaResult as ExtremaResult,
|
|
13
|
+
extrema_query as extrema_query,
|
|
11
14
|
get_camera as get_camera,
|
|
12
15
|
DirectionalCamera as DirectionalCamera,
|
|
13
16
|
LookAtCamera as LookAtCamera,
|
|
@@ -25,6 +25,7 @@ from luminarycloud.enum import (
|
|
|
25
25
|
VisQuantity,
|
|
26
26
|
QuantityType,
|
|
27
27
|
FieldAssociation,
|
|
28
|
+
ExtremaType,
|
|
28
29
|
)
|
|
29
30
|
from ..exceptions import NotFoundError
|
|
30
31
|
from ..geometry import Geometry, get_geometry
|
|
@@ -1109,6 +1110,28 @@ class RangeResult:
|
|
|
1109
1110
|
""" Name of the field. """
|
|
1110
1111
|
|
|
1111
1112
|
|
|
1113
|
+
@dc.dataclass
|
|
1114
|
+
class ExtremaResult:
|
|
1115
|
+
"""
|
|
1116
|
+
Result from an extrema query containing information about a single extremum value.
|
|
1117
|
+
|
|
1118
|
+
.. warning:: This feature is experimental and may change or be removed in the future.
|
|
1119
|
+
"""
|
|
1120
|
+
|
|
1121
|
+
value: float
|
|
1122
|
+
""" The extremum value. """
|
|
1123
|
+
local_cell_id: int
|
|
1124
|
+
""" Local cell id in the volume specified by the volume name. """
|
|
1125
|
+
approx_cell_center: Vector3
|
|
1126
|
+
""" Approximate cell center in global coordinates. """
|
|
1127
|
+
volume_id: str
|
|
1128
|
+
""" Id of the volume. """
|
|
1129
|
+
global_face_ids: List[int]
|
|
1130
|
+
""" Cell's global face ids. """
|
|
1131
|
+
connected_bounds_ids: List[str]
|
|
1132
|
+
""" Ids of any connected surfaces. """
|
|
1133
|
+
|
|
1134
|
+
|
|
1112
1135
|
def range_query(solution: Solution, field_association: FieldAssociation) -> List[RangeResult]:
|
|
1113
1136
|
"""
|
|
1114
1137
|
The range query returns the min/max values for all fields in a solution. Two
|
|
@@ -1155,6 +1178,71 @@ def range_query(solution: Solution, field_association: FieldAssociation) -> List
|
|
|
1155
1178
|
return result
|
|
1156
1179
|
|
|
1157
1180
|
|
|
1181
|
+
def extrema_query(
|
|
1182
|
+
solution: Solution,
|
|
1183
|
+
field: Field,
|
|
1184
|
+
extrema_type: ExtremaType,
|
|
1185
|
+
num_values: int = 10,
|
|
1186
|
+
) -> List[ExtremaResult]:
|
|
1187
|
+
"""
|
|
1188
|
+
The extrema query returns the top N minimum or maximum values for a specific
|
|
1189
|
+
field/component in a solution. This is useful for finding hotspots, peak values,
|
|
1190
|
+
or other extreme conditions in your simulation results.
|
|
1191
|
+
|
|
1192
|
+
.. warning:: This feature is experimental and may change or be removed in the future.
|
|
1193
|
+
|
|
1194
|
+
Parameters
|
|
1195
|
+
----------
|
|
1196
|
+
solution: Solution
|
|
1197
|
+
The solution object to query.
|
|
1198
|
+
field: Field
|
|
1199
|
+
The field (quantity and component) to query for extrema values.
|
|
1200
|
+
extrema_type: ExtremaType
|
|
1201
|
+
Whether to find minimum or maximum values.
|
|
1202
|
+
num_values: int
|
|
1203
|
+
How many extrema values to return. Default: 10
|
|
1204
|
+
|
|
1205
|
+
Returns
|
|
1206
|
+
-------
|
|
1207
|
+
List[ExtremaResult]
|
|
1208
|
+
A list of extrema results, each containing the value, location, and connectivity information.
|
|
1209
|
+
"""
|
|
1210
|
+
|
|
1211
|
+
if num_values <= 0:
|
|
1212
|
+
raise ValueError(f"num_values must be positive, got {num_values}")
|
|
1213
|
+
|
|
1214
|
+
if field.quantity == VisQuantity.NONE:
|
|
1215
|
+
raise ValueError("Field quantity cannot be NONE")
|
|
1216
|
+
|
|
1217
|
+
sim = get_simulation(solution.simulation_id)
|
|
1218
|
+
req = vis_pb2.ExtremaQueryRequest()
|
|
1219
|
+
req.entity.simulation.id = solution.simulation_id
|
|
1220
|
+
req.entity.simulation.solution_id = solution.id
|
|
1221
|
+
req.project_id = sim.project_id
|
|
1222
|
+
|
|
1223
|
+
# Use the Field's _to_proto method to properly set field with quantity and component
|
|
1224
|
+
req.field.CopyFrom(field._to_proto())
|
|
1225
|
+
|
|
1226
|
+
req.num_values = num_values
|
|
1227
|
+
req.extrema_type = extrema_type
|
|
1228
|
+
|
|
1229
|
+
res: vis_pb2.ExtremaQueryReply = get_default_client().ExtremaQuery(req)
|
|
1230
|
+
result: List[ExtremaResult] = []
|
|
1231
|
+
for e in res.extrema:
|
|
1232
|
+
extrema_result = ExtremaResult(
|
|
1233
|
+
value=e.value,
|
|
1234
|
+
local_cell_id=e.local_cell_id,
|
|
1235
|
+
approx_cell_center=Vector3(
|
|
1236
|
+
x=e.approx_cell_center.x, y=e.approx_cell_center.y, z=e.approx_cell_center.z
|
|
1237
|
+
),
|
|
1238
|
+
volume_id=e.volume_id,
|
|
1239
|
+
global_face_ids=list(e.global_face_ids),
|
|
1240
|
+
connected_bounds_ids=list(e.connected_bounds_ids),
|
|
1241
|
+
)
|
|
1242
|
+
result.append(extrema_result)
|
|
1243
|
+
return result
|
|
1244
|
+
|
|
1245
|
+
|
|
1158
1246
|
def list_renders(entity: Geometry | Mesh | Solution) -> List[RenderOutput]:
|
|
1159
1247
|
"""
|
|
1160
1248
|
Lists all previously created renders associated with a project and an entity.
|
|
@@ -12,7 +12,7 @@ from luminarycloud._proto.api.v0.luminarycloud.geometry import (
|
|
|
12
12
|
geometry_pb2 as geometrypb,
|
|
13
13
|
)
|
|
14
14
|
from luminarycloud._proto.upload import upload_pb2 as uploadpb
|
|
15
|
-
from luminarycloud.types.adfloat import _from_ad_proto, _to_ad_proto
|
|
15
|
+
from luminarycloud.types.adfloat import LcFloat, _from_ad_proto, _to_ad_proto
|
|
16
16
|
|
|
17
17
|
from ._client import get_default_client
|
|
18
18
|
from ._proto.base import base_pb2 as basepb
|
|
@@ -122,9 +122,9 @@ class VolumeSelection:
|
|
|
122
122
|
|
|
123
123
|
def import_cad(
|
|
124
124
|
self,
|
|
125
|
-
cad_file_path: PathLike,
|
|
125
|
+
cad_file_path: PathLike | str,
|
|
126
126
|
*,
|
|
127
|
-
scaling:
|
|
127
|
+
scaling: LcFloat = 1.0,
|
|
128
128
|
feature_name: str = "Import CAD",
|
|
129
129
|
) -> None:
|
|
130
130
|
"""
|
|
@@ -134,7 +134,7 @@ class VolumeSelection:
|
|
|
134
134
|
----------
|
|
135
135
|
cad_file_path : PathLike
|
|
136
136
|
The path to the CAD file to import.
|
|
137
|
-
scaling :
|
|
137
|
+
scaling : LcFloat
|
|
138
138
|
The scaling factor to apply to the CAD file.
|
|
139
139
|
feature_name : str
|
|
140
140
|
The name of the feature. This is not a tag name.
|
|
@@ -347,7 +347,7 @@ class VolumeSelection:
|
|
|
347
347
|
|
|
348
348
|
def rotate(
|
|
349
349
|
self,
|
|
350
|
-
angle:
|
|
350
|
+
angle: LcFloat,
|
|
351
351
|
axis: Vector3Like,
|
|
352
352
|
origin: Vector3Like,
|
|
353
353
|
*,
|
|
@@ -359,7 +359,7 @@ class VolumeSelection:
|
|
|
359
359
|
|
|
360
360
|
Parameters
|
|
361
361
|
----------
|
|
362
|
-
angle :
|
|
362
|
+
angle : LcFloat
|
|
363
363
|
The angle to rotate the selected volumes by, in degrees.
|
|
364
364
|
axis : Vector3Like
|
|
365
365
|
The axis to rotate the selected volumes around.
|
|
@@ -389,7 +389,7 @@ class VolumeSelection:
|
|
|
389
389
|
|
|
390
390
|
def scale(
|
|
391
391
|
self,
|
|
392
|
-
factor:
|
|
392
|
+
factor: LcFloat,
|
|
393
393
|
origin: Vector3Like,
|
|
394
394
|
*,
|
|
395
395
|
keep: bool = False,
|
|
@@ -400,7 +400,7 @@ class VolumeSelection:
|
|
|
400
400
|
|
|
401
401
|
Parameters
|
|
402
402
|
----------
|
|
403
|
-
factor :
|
|
403
|
+
factor : LcFloat
|
|
404
404
|
The scaling factor.
|
|
405
405
|
origin : Vector3Like
|
|
406
406
|
The origin to scale the selected volumes from.
|
|
@@ -620,7 +620,7 @@ class VolumeSelection:
|
|
|
620
620
|
def linear_pattern_with_vector_magnitude(
|
|
621
621
|
self,
|
|
622
622
|
vector: Vector3Like,
|
|
623
|
-
magnitude:
|
|
623
|
+
magnitude: LcFloat,
|
|
624
624
|
quantity: int,
|
|
625
625
|
symmetric: bool = False,
|
|
626
626
|
*,
|
|
@@ -634,7 +634,7 @@ class VolumeSelection:
|
|
|
634
634
|
----------
|
|
635
635
|
vector : Vector3Like
|
|
636
636
|
Direction of the vector to repeat the selected volumes along. It will be normalized.
|
|
637
|
-
magnitude :
|
|
637
|
+
magnitude : LcFloat
|
|
638
638
|
The magnitude of the vector.
|
|
639
639
|
quantity : int
|
|
640
640
|
The number of times to repeat the selected volumes.
|
|
@@ -643,16 +643,28 @@ class VolumeSelection:
|
|
|
643
643
|
feature_name : str
|
|
644
644
|
The name of the feature.
|
|
645
645
|
"""
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
646
|
+
self.__create_feature(
|
|
647
|
+
gpb.Feature(
|
|
648
|
+
feature_name=feature_name,
|
|
649
|
+
pattern=gpb.Pattern(
|
|
650
|
+
body=self.__volume_ids,
|
|
651
|
+
direction=gpb.Pattern.Direction(
|
|
652
|
+
linear_spacing=transformationpb.Translation(
|
|
653
|
+
magnitude_vector=transformationpb.MagnitudeAdVector3(
|
|
654
|
+
direction=_to_vector3_ad_proto(vector),
|
|
655
|
+
magnitude=_to_ad_proto(magnitude),
|
|
656
|
+
),
|
|
657
|
+
),
|
|
658
|
+
quantity=quantity,
|
|
659
|
+
symmetric=symmetric,
|
|
660
|
+
),
|
|
661
|
+
),
|
|
662
|
+
)
|
|
651
663
|
)
|
|
652
664
|
|
|
653
665
|
def circular_pattern(
|
|
654
666
|
self,
|
|
655
|
-
angle:
|
|
667
|
+
angle: LcFloat,
|
|
656
668
|
axis: Vector3Like,
|
|
657
669
|
origin: Vector3Like,
|
|
658
670
|
quantity: int,
|
|
@@ -666,7 +678,7 @@ class VolumeSelection:
|
|
|
666
678
|
|
|
667
679
|
Parameters
|
|
668
680
|
----------
|
|
669
|
-
angle :
|
|
681
|
+
angle : LcFloat
|
|
670
682
|
The angle of the circular arc, in degrees.
|
|
671
683
|
axis : Vector3Like
|
|
672
684
|
The axis of the circular arc.
|