luminarycloud 0.14.1__py3-none-any.whl → 0.15.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 +5 -1
- luminarycloud/_client/client.py +5 -0
- luminarycloud/_helpers/__init__.py +1 -0
- luminarycloud/_helpers/_code_representation.py +135 -0
- luminarycloud/_helpers/_simulation_params_from_json.py +5 -1
- luminarycloud/_helpers/upload.py +31 -11
- luminarycloud/_helpers/warnings/deprecated.py +8 -10
- luminarycloud/_helpers/warnings/experimental.py +4 -4
- luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2.py +135 -110
- luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2.pyi +82 -10
- luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2_grpc.py +34 -0
- luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2_grpc.pyi +12 -0
- luminarycloud/_proto/api/v0/luminarycloud/physics_ai/physics_ai_pb2.py +94 -0
- luminarycloud/_proto/api/v0/luminarycloud/physics_ai/physics_ai_pb2.pyi +145 -0
- luminarycloud/_proto/api/v0/luminarycloud/physics_ai/physics_ai_pb2_grpc.py +104 -0
- luminarycloud/_proto/api/v0/luminarycloud/physics_ai/physics_ai_pb2_grpc.pyi +42 -0
- luminarycloud/_proto/api/v0/luminarycloud/simulation_template/simulation_template_pb2.py +25 -25
- luminarycloud/_proto/api/v0/luminarycloud/simulation_template/simulation_template_pb2.pyi +10 -3
- luminarycloud/_proto/api/v0/luminarycloud/thirdpartyintegration/onshape/onshape_pb2.py +162 -0
- luminarycloud/_proto/api/v0/luminarycloud/thirdpartyintegration/onshape/onshape_pb2.pyi +254 -0
- luminarycloud/_proto/api/v0/luminarycloud/thirdpartyintegration/onshape/onshape_pb2_grpc.py +203 -0
- luminarycloud/_proto/api/v0/luminarycloud/thirdpartyintegration/onshape/onshape_pb2_grpc.pyi +74 -0
- luminarycloud/_proto/api/v0/luminarycloud/vis/vis_pb2.py +155 -141
- luminarycloud/_proto/api/v0/luminarycloud/vis/vis_pb2.pyi +24 -2
- luminarycloud/_proto/cad/boolean_pb2.py +8 -8
- luminarycloud/_proto/cad/boolean_pb2.pyi +34 -4
- luminarycloud/_proto/client/simulation_pb2.py +303 -294
- luminarycloud/_proto/client/simulation_pb2.pyi +26 -1
- luminarycloud/_proto/geometry/geometry_pb2.py +58 -58
- luminarycloud/_proto/geometry/geometry_pb2.pyi +58 -11
- luminarycloud/_proto/hexmesh/hexmesh_pb2.py +42 -42
- luminarycloud/_proto/hexmesh/hexmesh_pb2.pyi +2 -2
- luminarycloud/_proto/output/reference_values_pb2.py +5 -5
- luminarycloud/_proto/parametricworker/parametricworker_pb2.py +31 -31
- luminarycloud/_proto/parametricworker/parametricworker_pb2.pyi +6 -4
- luminarycloud/_proto/table/table_pb2.py +9 -8
- luminarycloud/_proto/table/table_pb2.pyi +7 -1
- luminarycloud/enum/__init__.py +2 -0
- luminarycloud/enum/geometry_status.py +28 -0
- luminarycloud/geometry.py +64 -32
- luminarycloud/geometry_version.py +2 -2
- luminarycloud/mesh.py +11 -4
- luminarycloud/meshing/__init__.py +1 -0
- luminarycloud/meshing/metadata/__init__.py +6 -0
- luminarycloud/meshing/metadata/mesh_metadata.py +57 -0
- luminarycloud/outputs/output_definitions.py +11 -10
- luminarycloud/params/enum/_enum_wrappers.py +77 -968
- luminarycloud/params/outputs/output.py +2 -1
- luminarycloud/params/simulation/__init__.py +16 -16
- luminarycloud/params/simulation/_lib.py +1 -67
- luminarycloud/params/simulation/adaptive_mesh_refinement/boundary_layer_profile_.py +3 -2
- luminarycloud/params/simulation/adaptive_mesh_refinement_.py +3 -2
- luminarycloud/params/simulation/adjoint_.py +4 -3
- luminarycloud/params/simulation/basic/gravity/gravity_off_.py +3 -2
- luminarycloud/params/simulation/basic/gravity/gravity_on_.py +3 -2
- luminarycloud/params/simulation/basic/gravity_.py +3 -2
- luminarycloud/params/simulation/body_frame_.py +3 -2
- luminarycloud/params/simulation/entity_relationships/volume_material_relationship_.py +7 -6
- luminarycloud/params/simulation/entity_relationships/volume_physics_relationship_.py +7 -6
- luminarycloud/params/simulation/entity_relationships_.py +3 -2
- luminarycloud/params/simulation/general_.py +4 -3
- luminarycloud/params/simulation/material/fluid/__init__.py +4 -4
- luminarycloud/params/simulation/material/fluid/boussinesq_approximation/boussinesq_off_.py +3 -2
- luminarycloud/params/simulation/material/fluid/boussinesq_approximation/boussinesq_on_.py +3 -2
- luminarycloud/params/simulation/material/fluid/boussinesq_approximation_.py +3 -2
- luminarycloud/params/simulation/material/fluid/material_model/__init__.py +1 -1
- luminarycloud/params/simulation/material/fluid/material_model/ideal_gas_.py +3 -2
- luminarycloud/params/simulation/material/fluid/material_model/incompressible_fluid_.py +3 -2
- luminarycloud/params/simulation/material/fluid/material_model/incompressible_fluid_with_energy_.py +3 -2
- luminarycloud/params/simulation/material/fluid/material_model_.py +3 -2
- luminarycloud/params/simulation/material/fluid/thermal_conductivity_model/__init__.py +2 -2
- luminarycloud/params/simulation/material/fluid/thermal_conductivity_model/prescribed_conductivity_.py +3 -2
- luminarycloud/params/simulation/material/fluid/thermal_conductivity_model/prescribed_prandtl_number_.py +3 -2
- luminarycloud/params/simulation/material/fluid/thermal_conductivity_model/temperature_dependent_conductivity_.py +4 -3
- luminarycloud/params/simulation/material/fluid/thermal_conductivity_model_.py +3 -2
- luminarycloud/params/simulation/material/fluid/viscosity_model/__init__.py +1 -1
- luminarycloud/params/simulation/material/fluid/viscosity_model/prescribed_viscosity_.py +3 -2
- luminarycloud/params/simulation/material/fluid/viscosity_model/sutherland_.py +3 -2
- luminarycloud/params/simulation/material/fluid/viscosity_model/temperature_dependent_viscosity_.py +4 -3
- luminarycloud/params/simulation/material/fluid/viscosity_model_.py +3 -2
- luminarycloud/params/simulation/material/material_fluid_.py +7 -6
- luminarycloud/params/simulation/material/material_solid_.py +4 -3
- luminarycloud/params/simulation/material_entity_.py +9 -8
- luminarycloud/params/simulation/monitor_plane_.py +5 -4
- luminarycloud/params/simulation/motion_data/__init__.py +1 -1
- luminarycloud/params/simulation/motion_data/frame_transforms/__init__.py +1 -1
- luminarycloud/params/simulation/motion_data/frame_transforms/no_transform_.py +5 -4
- luminarycloud/params/simulation/motion_data/frame_transforms/rotational_transform_.py +5 -4
- luminarycloud/params/simulation/motion_data/frame_transforms/translational_transform_.py +5 -4
- luminarycloud/params/simulation/motion_data/frame_transforms_.py +3 -2
- luminarycloud/params/simulation/motion_data/motion_type/__init__.py +1 -1
- luminarycloud/params/simulation/motion_data/motion_type/constant_angular_motion_.py +5 -4
- luminarycloud/params/simulation/motion_data/motion_type/constant_translation_motion_.py +5 -4
- luminarycloud/params/simulation/motion_data/motion_type_.py +3 -2
- luminarycloud/params/simulation/motion_data_.py +6 -5
- luminarycloud/params/simulation/multi_physics_coupling_options_.py +3 -2
- luminarycloud/params/simulation/output_.py +3 -2
- luminarycloud/params/simulation/particle_group/particle_group_type/__init__.py +1 -1
- luminarycloud/params/simulation/particle_group/particle_group_type/actuator_disk/actuator_disk_orientation_selection/actuator_disk_specify_normal_vector_.py +4 -3
- luminarycloud/params/simulation/particle_group/particle_group_type/actuator_disk/actuator_disk_orientation_selection/actuator_disk_specify_rotation_angles_.py +4 -3
- luminarycloud/params/simulation/particle_group/particle_group_type/actuator_disk/actuator_disk_orientation_selection_.py +3 -2
- luminarycloud/params/simulation/particle_group/particle_group_type/actuator_disk_.py +7 -6
- luminarycloud/params/simulation/particle_group/particle_group_type/actuator_line_.py +3 -2
- luminarycloud/params/simulation/particle_group/particle_group_type/probe_points_.py +5 -4
- luminarycloud/params/simulation/particle_group/particle_group_type/source_points_.py +5 -4
- luminarycloud/params/simulation/particle_group/particle_group_type_.py +3 -2
- luminarycloud/params/simulation/particle_group_.py +4 -3
- luminarycloud/params/simulation/physics/__init__.py +3 -3
- luminarycloud/params/simulation/physics/fluid/__init__.py +9 -9
- luminarycloud/params/simulation/physics/fluid/adjoint_controls_fluid_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/basic_fluid_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/__init__.py +5 -5
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/farfield_.py +5 -4
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet/__init__.py +3 -3
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet/fan_curve_inlet_.py +7 -6
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet/mach_inlet_.py +5 -4
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet/mass_flow_inlet_.py +5 -4
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet/total_pressure_inlet_.py +6 -5
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet/velocity_components_inlet_.py +5 -4
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet/velocity_magnitude_inlet_.py +6 -5
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet_.py +8 -7
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/outlet/outlet_strategy/__init__.py +1 -1
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/outlet/outlet_strategy/fan_curve_outlet_.py +5 -4
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/outlet/outlet_strategy/outlet_pressure_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/outlet/outlet_strategy/outlet_target_corrected_mass_flow_rate_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/outlet/outlet_strategy/outlet_target_mass_flow_rate_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/outlet/outlet_strategy_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/outlet_.py +6 -5
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/symmetry_.py +5 -4
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/turbulence_boundary_conditions_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/energy/__init__.py +1 -1
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/energy/prescribed_heat_flux_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/energy/prescribed_temperature_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/momentum/__init__.py +1 -1
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/momentum/no_slip_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/momentum/slip_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/momentum/wall_model_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/wall_energy_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/wall_momentum_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall_.py +7 -6
- luminarycloud/params/simulation/physics/fluid/boundary_conditions_fluid_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/initialization/__init__.py +2 -2
- luminarycloud/params/simulation/physics/fluid/initialization/fluid_existing_solution_.py +5 -4
- luminarycloud/params/simulation/physics/fluid/initialization/fluid_farfield_values_.py +5 -4
- luminarycloud/params/simulation/physics/fluid/initialization/fluid_prescribed_values_.py +5 -4
- luminarycloud/params/simulation/physics/fluid/initialization/turbulence_initialization_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/initialization_fluid_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/physical_behavior/__init__.py +1 -1
- luminarycloud/params/simulation/physics/fluid/physical_behavior/blade_element_airfoil_data_.py +8 -7
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/__init__.py +1 -1
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_disk_model/__init__.py +2 -2
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_disk_model/actuator_disk_blade_element_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_disk_model/actuator_disk_radial_distribution_.py +8 -7
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_disk_model/actuator_disk_uniform_thrust_.py +4 -3
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_disk_model/fan_curve_internal_.py +5 -4
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_disk_model_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_line_model/actuator_line_blade_element_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_line_model_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/blade_element_params_.py +9 -8
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/particle_source_model/general_acceleration_source_.py +4 -3
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/particle_source_model/general_mass_source_.py +4 -3
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/particle_source_model_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/physical_behavior_.py +5 -4
- luminarycloud/params/simulation/physics/fluid/porous_behavior_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/solution_controls/__init__.py +1 -1
- luminarycloud/params/simulation/physics/fluid/solution_controls/fluid_relaxation_method/fluid_explicit_relaxation_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/solution_controls/fluid_relaxation_method/fluid_implicit_relaxation/robust_startup/robust_startup_off_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/solution_controls/fluid_relaxation_method/fluid_implicit_relaxation/robust_startup/robust_startup_on_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/solution_controls/fluid_relaxation_method/fluid_implicit_relaxation/robust_startup_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/solution_controls/fluid_relaxation_method/fluid_implicit_relaxation_.py +7 -6
- luminarycloud/params/simulation/physics/fluid/solution_controls/fluid_relaxation_method_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/solution_controls/pseudo_time_step_method/__init__.py +1 -1
- luminarycloud/params/simulation/physics/fluid/solution_controls/pseudo_time_step_method/cfl_based_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/solution_controls/pseudo_time_step_method/fixed_pseudo_time_step_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/solution_controls/pseudo_time_step_method_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/solution_controls_fluid_.py +5 -4
- luminarycloud/params/simulation/physics/fluid/spatial_discretization/__init__.py +1 -1
- luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme/__init__.py +1 -1
- luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme/ec2_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme/fds_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme/ld2_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme/rhie_chow_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme_order/first_order_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme_order/second_order_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme_order_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/spatial_discretization_fluid_.py +5 -4
- luminarycloud/params/simulation/physics/fluid/turbulence/__init__.py +2 -2
- luminarycloud/params/simulation/physics/fluid/turbulence/des_formulation/__init__.py +1 -1
- luminarycloud/params/simulation/physics/fluid/turbulence/des_formulation/ddes_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/turbulence/des_formulation/ddes_vtm_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/turbulence/des_formulation/iddes_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/turbulence/des_formulation_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/turbulence/komega_sst/constants/custom_komega_sst_constants_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/turbulence/komega_sst/constants/default_komega_sst_constants_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/turbulence/komega_sst/komega_sst_constants_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/turbulence/komega_sst_.py +6 -5
- luminarycloud/params/simulation/physics/fluid/turbulence/spalart_allmaras/constants/custom_spalart_allmaras_constants_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/turbulence/spalart_allmaras/constants/default_spalart_allmaras_constants_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/turbulence/spalart_allmaras/spalart_allmaras_constants_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/turbulence/spalart_allmaras_.py +6 -5
- luminarycloud/params/simulation/physics/fluid/turbulence/sub_grid_scale_model/__init__.py +2 -2
- luminarycloud/params/simulation/physics/fluid/turbulence/sub_grid_scale_model/amd_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/turbulence/sub_grid_scale_model/sigma_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/turbulence/sub_grid_scale_model/smagorinsky_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/turbulence/sub_grid_scale_model/vreman_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/turbulence/sub_grid_scale_model/wale_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/turbulence/sub_grid_scale_model_.py +3 -2
- luminarycloud/params/simulation/physics/fluid/turbulence_.py +6 -5
- luminarycloud/params/simulation/physics/fluid_.py +12 -13
- luminarycloud/params/simulation/physics/heat/__init__.py +4 -4
- luminarycloud/params/simulation/physics/heat/adjoint_controls_heat_.py +3 -2
- luminarycloud/params/simulation/physics/heat/boundary_conditions/__init__.py +2 -2
- luminarycloud/params/simulation/physics/heat/boundary_conditions/heat_bc_convection_.py +5 -4
- luminarycloud/params/simulation/physics/heat/boundary_conditions/heat_bc_heat_flux_.py +5 -4
- luminarycloud/params/simulation/physics/heat/boundary_conditions/heat_bc_integrated_heat_flux_.py +5 -4
- luminarycloud/params/simulation/physics/heat/boundary_conditions/heat_bc_symmetry_.py +5 -4
- luminarycloud/params/simulation/physics/heat/boundary_conditions/heat_bc_temperature_.py +5 -4
- luminarycloud/params/simulation/physics/heat/boundary_conditions_heat_.py +5 -4
- luminarycloud/params/simulation/physics/heat/heat_source/heat_source_type/__init__.py +1 -1
- luminarycloud/params/simulation/physics/heat/heat_source/heat_source_type/heat_source_type_power_.py +3 -2
- luminarycloud/params/simulation/physics/heat/heat_source/heat_source_type/heat_source_type_power_per_unit_of_volume_.py +4 -3
- luminarycloud/params/simulation/physics/heat/heat_source/heat_source_type_.py +3 -2
- luminarycloud/params/simulation/physics/heat/heat_source_.py +6 -5
- luminarycloud/params/simulation/physics/heat/initialization/heat_existing_solution_.py +5 -4
- luminarycloud/params/simulation/physics/heat/initialization/heat_prescribed_values_.py +5 -4
- luminarycloud/params/simulation/physics/heat/initialization_heat_.py +3 -2
- luminarycloud/params/simulation/physics/heat/solution_controls/heat_relaxation_method/heat_implicit_relaxation_.py +4 -3
- luminarycloud/params/simulation/physics/heat/solution_controls/heat_relaxation_method_.py +3 -2
- luminarycloud/params/simulation/physics/heat/solution_controls_heat_.py +4 -3
- luminarycloud/params/simulation/physics/heat/spatial_discretization_heat_.py +3 -2
- luminarycloud/params/simulation/physics/heat_.py +9 -8
- luminarycloud/params/simulation/physics/periodic_pair/periodicity_type/__init__.py +1 -1
- luminarycloud/params/simulation/physics/periodic_pair/periodicity_type/rotational_periodicity_.py +3 -2
- luminarycloud/params/simulation/physics/periodic_pair/periodicity_type/translational_periodicity_.py +3 -2
- luminarycloud/params/simulation/physics/periodic_pair/periodicity_type_.py +3 -2
- luminarycloud/params/simulation/physics/periodic_pair_.py +4 -3
- luminarycloud/params/simulation/physics/solution_controls/linear_solver_type/__init__.py +1 -1
- luminarycloud/params/simulation/physics/solution_controls/linear_solver_type/gauss_seidel_.py +3 -2
- luminarycloud/params/simulation/physics/solution_controls/linear_solver_type/krylov_amg_.py +9 -8
- luminarycloud/params/simulation/physics/solution_controls/linear_solver_type_.py +3 -2
- luminarycloud/params/simulation/physics_.py +7 -6
- luminarycloud/params/simulation/simulation_param_.py +12 -13
- luminarycloud/params/simulation/sliding_interfaces_.py +8 -7
- luminarycloud/params/simulation/surface_name_.py +3 -2
- luminarycloud/params/simulation/time/__init__.py +2 -2
- luminarycloud/params/simulation/time/compute_statistics/__init__.py +1 -1
- luminarycloud/params/simulation/time/compute_statistics/compute_statistics_off_.py +3 -2
- luminarycloud/params/simulation/time/compute_statistics/compute_statistics_on_.py +3 -2
- luminarycloud/params/simulation/time/compute_statistics_.py +3 -2
- luminarycloud/params/simulation/time/time_marching/time_explicit_.py +3 -2
- luminarycloud/params/simulation/time/time_marching/time_implicit_.py +3 -2
- luminarycloud/params/simulation/time/time_marching_.py +3 -2
- luminarycloud/params/simulation/time/time_step_ramp/time_step_ramp_off_.py +3 -2
- luminarycloud/params/simulation/time/time_step_ramp/time_step_ramp_on_.py +3 -2
- luminarycloud/params/simulation/time/time_step_ramp_.py +3 -2
- luminarycloud/params/simulation/time_.py +6 -5
- luminarycloud/params/simulation/volume_entity_.py +5 -4
- luminarycloud/physics_ai/__init__.py +8 -0
- luminarycloud/physics_ai/architectures.py +38 -0
- luminarycloud/physics_ai/models.py +42 -0
- luminarycloud/project.py +39 -19
- luminarycloud/reference_values.py +20 -3
- luminarycloud/simulation.py +8 -3
- luminarycloud/simulation_param.py +50 -27
- luminarycloud/simulation_template.py +84 -13
- luminarycloud/types/ids.py +2 -0
- luminarycloud/vis/__init__.py +0 -3
- luminarycloud/vis/display.py +1 -0
- luminarycloud/vis/interactive_scene.py +12 -3
- luminarycloud/vis/visualization.py +44 -20
- luminarycloud/volume_selection.py +5 -5
- {luminarycloud-0.14.1.dist-info → luminarycloud-0.15.0.dist-info}/METADATA +2 -2
- {luminarycloud-0.14.1.dist-info → luminarycloud-0.15.0.dist-info}/RECORD +276 -261
- {luminarycloud-0.14.1.dist-info → luminarycloud-0.15.0.dist-info}/WHEEL +0 -0
luminarycloud/__init__.py
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
# Copyright 2023-
|
|
1
|
+
# Copyright 2023-2025 Luminary Cloud, Inc. All Rights Reserved.
|
|
2
2
|
import logging as _logging
|
|
3
3
|
|
|
4
4
|
from ._version import __version__
|
|
5
5
|
|
|
6
6
|
from . import (
|
|
7
7
|
_patch as _patch,
|
|
8
|
+
enum as enum,
|
|
8
9
|
exceptions as exceptions,
|
|
9
10
|
meshing as meshing,
|
|
10
11
|
outputs as outputs,
|
|
@@ -22,6 +23,9 @@ from .geometry import (
|
|
|
22
23
|
get_geometry as get_geometry,
|
|
23
24
|
Geometry as Geometry,
|
|
24
25
|
)
|
|
26
|
+
from .geometry_version import (
|
|
27
|
+
GeometryVersion as GeometryVersion,
|
|
28
|
+
)
|
|
25
29
|
from .mesh import (
|
|
26
30
|
get_mesh as get_mesh,
|
|
27
31
|
get_mesh_metadata as get_mesh_metadata,
|
luminarycloud/_client/client.py
CHANGED
|
@@ -28,6 +28,9 @@ from .._proto.api.v0.luminarycloud.simulation_template.simulation_template_pb2_g
|
|
|
28
28
|
from .._proto.api.v0.luminarycloud.named_variable_set.named_variable_set_pb2_grpc import (
|
|
29
29
|
NamedVariableSetServiceStub,
|
|
30
30
|
)
|
|
31
|
+
from .._proto.api.v0.luminarycloud.physics_ai.physics_ai_pb2_grpc import (
|
|
32
|
+
PhysicsAiServiceStub,
|
|
33
|
+
)
|
|
31
34
|
from .._proto.api.v0.luminarycloud.solution.solution_pb2_grpc import SolutionServiceStub
|
|
32
35
|
from .._proto.api.v0.luminarycloud.upload.upload_pb2_grpc import UploadServiceStub
|
|
33
36
|
from .._proto.api.v0.luminarycloud.vis.vis_pb2_grpc import VisAPIServiceStub
|
|
@@ -54,6 +57,7 @@ class Client(
|
|
|
54
57
|
OutputDefinitionServiceStub,
|
|
55
58
|
StoppingConditionServiceStub,
|
|
56
59
|
NamedVariableSetServiceStub,
|
|
60
|
+
PhysicsAiServiceStub,
|
|
57
61
|
):
|
|
58
62
|
"""
|
|
59
63
|
Creates a Luminary API client.
|
|
@@ -197,6 +201,7 @@ class Client(
|
|
|
197
201
|
OutputNodeServiceStub.__init__(self, self._channel)
|
|
198
202
|
OutputDefinitionServiceStub.__init__(self, self._channel)
|
|
199
203
|
StoppingConditionServiceStub.__init__(self, self._channel)
|
|
204
|
+
PhysicsAiServiceStub.__init__(self, self._channel)
|
|
200
205
|
for name, value in self.__dict__.items():
|
|
201
206
|
if isinstance(value, grpc.UnaryUnaryMultiCallable):
|
|
202
207
|
setattr(self, name, rpc_error(value))
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# Copyright 2025 Luminary Cloud, Inc. All Rights Reserved.
|
|
2
|
+
from typing import Any
|
|
3
|
+
from google.protobuf.message import Message as _ProtoMessage
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
# Gives derived classes the ability to generate the code that would set the values of their members.
|
|
7
|
+
# Evidently this is most suited for dataclasses.
|
|
8
|
+
# Note that to allow recursion, the lines generated by this class DO NOT contain the name of the
|
|
9
|
+
# object being generated, e.g. they will be of the form " = Type()", ".field = val".
|
|
10
|
+
# Derived classes can use _to_code_helper to insert an adequate object name.
|
|
11
|
+
class CodeRepr:
|
|
12
|
+
def to_code(self, hide_defaults: bool = True) -> str:
|
|
13
|
+
# Returns the code representation of a value with special cases for enums and classes
|
|
14
|
+
# that also implement "to_code" (thus triggering recursion), otherwise uses the default
|
|
15
|
+
# conversion to string.
|
|
16
|
+
def to_string(val: Any) -> str:
|
|
17
|
+
if "<enum " in str(type(val)):
|
|
18
|
+
str_val = val.__repr__()
|
|
19
|
+
return str_val.split(": ")[0][1:]
|
|
20
|
+
try:
|
|
21
|
+
return val.to_code(hide_defaults)
|
|
22
|
+
except:
|
|
23
|
+
return str(val)
|
|
24
|
+
|
|
25
|
+
# Returns the code to set the value of a given field of the class.
|
|
26
|
+
def generate(field: str, val: Any) -> str:
|
|
27
|
+
str_val = to_string(val)
|
|
28
|
+
code = ""
|
|
29
|
+
if issubclass(type(val), _ProtoMessage):
|
|
30
|
+
# Special case for protos.
|
|
31
|
+
# TODO(pedro): This is not working 100%.
|
|
32
|
+
code += "# NOTE: Google protobuf types are not fully supported yet.\n"
|
|
33
|
+
code += f".{field} = {type(val).__name__}()\n"
|
|
34
|
+
for line in str_val.split("\n"):
|
|
35
|
+
if ":" in line:
|
|
36
|
+
mod_line = line.replace(":", " =")
|
|
37
|
+
code += f".{field}.{mod_line}\n"
|
|
38
|
+
elif str_val.endswith("\n"):
|
|
39
|
+
# Special case for fields with their own "to_code".
|
|
40
|
+
for line in str_val.split("\n"):
|
|
41
|
+
if line.startswith("new_") or line.startswith("#"):
|
|
42
|
+
code += f"{line}\n"
|
|
43
|
+
elif line.startswith(".new_"):
|
|
44
|
+
code += f"{line[1:]}\n"
|
|
45
|
+
elif line:
|
|
46
|
+
code += f".{field}{line}\n"
|
|
47
|
+
elif isinstance(val, str):
|
|
48
|
+
code += f'.{field} = "{str_val}"\n'
|
|
49
|
+
else:
|
|
50
|
+
code += f".{field} = {str_val}\n"
|
|
51
|
+
return code
|
|
52
|
+
|
|
53
|
+
# Returns the code representation of map keys, with special cases for enums and strings.
|
|
54
|
+
def map_key(key: Any) -> str:
|
|
55
|
+
if isinstance(key, str):
|
|
56
|
+
return f'"{key}"'
|
|
57
|
+
if "<enum " in str(type(key)):
|
|
58
|
+
str_key = key.__repr__()
|
|
59
|
+
return str_key.split(": ")[0][1:]
|
|
60
|
+
return str(key)
|
|
61
|
+
|
|
62
|
+
# Helper to generate short names for temporary objects that are built and inserted into
|
|
63
|
+
# containers.
|
|
64
|
+
def short_name(field: str) -> str:
|
|
65
|
+
if not "_" in field:
|
|
66
|
+
return field
|
|
67
|
+
return "".join([word[0] for word in field.split("_")])
|
|
68
|
+
|
|
69
|
+
# Create the top level object (default constructed), we do some manipulation of module paths
|
|
70
|
+
# (extracted from the type info) to make them consistent with the aliased imports in some
|
|
71
|
+
# __init__ files.
|
|
72
|
+
if "luminarycloud" in str(type(self)):
|
|
73
|
+
path = (
|
|
74
|
+
str(type(self))
|
|
75
|
+
.split("'")[1]
|
|
76
|
+
.replace("luminarycloud.params.simulation", "params")
|
|
77
|
+
.replace("luminarycloud.outputs.output_definitions", "outputs")
|
|
78
|
+
)
|
|
79
|
+
names = path.split(".")
|
|
80
|
+
if names[-2].endswith("_"):
|
|
81
|
+
path = path.replace(names[-2] + ".", "")
|
|
82
|
+
code = f" = {path}()\n"
|
|
83
|
+
else:
|
|
84
|
+
code = f" = {type(self).__name__}()\n"
|
|
85
|
+
|
|
86
|
+
default = type(self)()
|
|
87
|
+
for field, val in vars(self).items():
|
|
88
|
+
# Skip default values.
|
|
89
|
+
if hide_defaults and val == vars(default).get(field):
|
|
90
|
+
continue
|
|
91
|
+
field_short_name = short_name(field)
|
|
92
|
+
if isinstance(val, dict):
|
|
93
|
+
code += "# Clear the map and insert new items.\n"
|
|
94
|
+
code += f".{field} = {{}}\n"
|
|
95
|
+
for key, value in val.items():
|
|
96
|
+
# Simplify the code for maps of built-in types by not creating a temporary
|
|
97
|
+
# instance.
|
|
98
|
+
if isinstance(value, (bool, int, float)):
|
|
99
|
+
code += f".{field}[{map_key(key)}] = {value}\n"
|
|
100
|
+
elif isinstance(value, str):
|
|
101
|
+
code += f'.{field}[{map_key(key)}] = "{value}"\n'
|
|
102
|
+
else:
|
|
103
|
+
code += f"# Create a new {type(value).__name__} instance and insert it.\n"
|
|
104
|
+
code += generate(f"new_{field_short_name}", value)
|
|
105
|
+
code += f".{field}[{map_key(key)}] = new_{field_short_name}\n"
|
|
106
|
+
elif isinstance(val, list):
|
|
107
|
+
# Similar to maps, for classes with more complex representations create temporaries
|
|
108
|
+
# and append, otherwise use the default list representation (which also covers
|
|
109
|
+
# empty lists).
|
|
110
|
+
if len(val) > 0 and to_string(val[0]).endswith("\n"):
|
|
111
|
+
code += f"# Clear the list of {type(val[0]).__name__} and append new items.\n"
|
|
112
|
+
code += f".{field} = []\n"
|
|
113
|
+
for value in val:
|
|
114
|
+
code += f"# Create a new {type(value).__name__} instance and append it.\n"
|
|
115
|
+
code += generate(f"new_{field_short_name}", value)
|
|
116
|
+
code += f".{field}.append(new_{field_short_name})\n"
|
|
117
|
+
else:
|
|
118
|
+
code += f".{field} = {to_string(val)}\n"
|
|
119
|
+
else:
|
|
120
|
+
code += generate(field, val)
|
|
121
|
+
return code
|
|
122
|
+
|
|
123
|
+
# See the class description.
|
|
124
|
+
def _to_code_helper(self, obj_name: str = "obj", hide_defaults: bool = True) -> str:
|
|
125
|
+
code = ""
|
|
126
|
+
for line in CodeRepr.to_code(self, hide_defaults).split("\n"):
|
|
127
|
+
if line:
|
|
128
|
+
if line.startswith(".new_"):
|
|
129
|
+
code += f"{line[1:]}\n"
|
|
130
|
+
elif line[0] == "." or line.startswith(" = "):
|
|
131
|
+
code += f"{obj_name}{line}\n"
|
|
132
|
+
else:
|
|
133
|
+
# Handles comments and temporary objects.
|
|
134
|
+
code += f"{line}\n"
|
|
135
|
+
return code
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
from os import PathLike
|
|
3
3
|
from typing import Union
|
|
4
4
|
|
|
5
|
-
from google.protobuf.json_format import Parse
|
|
5
|
+
from google.protobuf.json_format import Parse, ParseDict
|
|
6
6
|
|
|
7
7
|
from .._proto.client.simulation_pb2 import SimulationParam
|
|
8
8
|
|
|
@@ -11,6 +11,10 @@ def simulation_params_from_json(text: Union[str, bytes]) -> SimulationParam:
|
|
|
11
11
|
return Parse(text, SimulationParam(), ignore_unknown_fields=True)
|
|
12
12
|
|
|
13
13
|
|
|
14
|
+
def simulation_params_from_json_dict(data: dict) -> SimulationParam:
|
|
15
|
+
return ParseDict(data, SimulationParam(), ignore_unknown_fields=True)
|
|
16
|
+
|
|
17
|
+
|
|
14
18
|
def simulation_params_from_json_path(json_path: PathLike | str) -> SimulationParam:
|
|
15
19
|
with open(json_path, "rb") as fp:
|
|
16
20
|
json_bytes = fp.read()
|
luminarycloud/_helpers/upload.py
CHANGED
|
@@ -5,6 +5,7 @@ import pathlib
|
|
|
5
5
|
from typing import Mapping
|
|
6
6
|
import requests
|
|
7
7
|
import logging
|
|
8
|
+
import grpc
|
|
8
9
|
|
|
9
10
|
from . import util
|
|
10
11
|
from .._client import Client
|
|
@@ -84,21 +85,40 @@ def upload_file(
|
|
|
84
85
|
upload_id = create_upload_res.upload.id
|
|
85
86
|
logger.debug(f"created upload: {upload_id}")
|
|
86
87
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
88
|
+
try:
|
|
89
|
+
start_res = client.StartUpload(
|
|
90
|
+
uploadpb.StartUploadRequest(upload_id=upload_id, method=uploadpb.METHOD_GCS_RESUMABLE)
|
|
91
|
+
)
|
|
92
|
+
logger.debug("started gcs upload")
|
|
91
93
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
94
|
+
gcs_resumable_upload(
|
|
95
|
+
filepath=pathlib.Path(file_path),
|
|
96
|
+
signed_url=start_res.upload.gcs_resumable.signed_url,
|
|
97
|
+
http_headers=start_res.upload.gcs_resumable.http_headers,
|
|
98
|
+
)
|
|
99
|
+
logger.debug("successfully uploaded gcs data")
|
|
100
|
+
except grpc.RpcError as e:
|
|
101
|
+
if e.code() != grpc.StatusCode.UNIMPLEMENTED:
|
|
102
|
+
raise e
|
|
103
|
+
start_res = client.StartUpload(
|
|
104
|
+
uploadpb.StartUploadRequest(upload_id=upload_id, method=uploadpb.METHOD_SIMPLE)
|
|
105
|
+
)
|
|
106
|
+
logger.debug("started simple upload")
|
|
107
|
+
|
|
108
|
+
# Simple non-chunked upload
|
|
109
|
+
with open(file_path, "rb") as fp:
|
|
110
|
+
client.UploadData(
|
|
111
|
+
uploadpb.UploadDataRequest(
|
|
112
|
+
upload_id=upload_id,
|
|
113
|
+
offset=0,
|
|
114
|
+
data=fp.read(),
|
|
115
|
+
)
|
|
116
|
+
)
|
|
117
|
+
logger.debug("successfully uploaded simple data")
|
|
98
118
|
|
|
99
119
|
finish_res: uploadpb.FinishUploadReply = client.FinishUpload(
|
|
100
120
|
uploadpb.FinishUploadRequest(upload_id=upload_id)
|
|
101
121
|
)
|
|
102
|
-
logger.debug(
|
|
122
|
+
logger.debug("finished upload")
|
|
103
123
|
|
|
104
124
|
return upload_id, finish_res
|
|
@@ -7,7 +7,7 @@ from typing import Callable, TypeVar
|
|
|
7
7
|
C = TypeVar("C")
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
def deprecated(reason: str, version: str) -> Callable[[C], C]:
|
|
10
|
+
def deprecated(reason: str, version: str = "") -> Callable[[C], C]:
|
|
11
11
|
"""
|
|
12
12
|
Mark a class or function as deprecated.
|
|
13
13
|
|
|
@@ -15,26 +15,24 @@ def deprecated(reason: str, version: str) -> Callable[[C], C]:
|
|
|
15
15
|
----------
|
|
16
16
|
reason : str
|
|
17
17
|
The reason for deprecation.
|
|
18
|
-
version : str
|
|
19
|
-
The version in which the class or function was deprecated.
|
|
20
18
|
"""
|
|
21
19
|
|
|
22
|
-
def decorator(f:
|
|
20
|
+
def decorator(f: C) -> C:
|
|
23
21
|
if isinstance(f, type):
|
|
24
|
-
return _deprecated_class(f, reason
|
|
22
|
+
return _deprecated_class(f, reason)
|
|
25
23
|
else:
|
|
26
|
-
return _deprecated_function(f, reason
|
|
24
|
+
return _deprecated_function(f, reason)
|
|
27
25
|
|
|
28
26
|
return decorator
|
|
29
27
|
|
|
30
28
|
|
|
31
|
-
def _deprecated_class(cls: type[C], reason: str
|
|
29
|
+
def _deprecated_class(cls: type[C], reason: str) -> type[C]:
|
|
32
30
|
old_init = cls.__init__
|
|
33
31
|
|
|
34
32
|
@wraps(old_init)
|
|
35
33
|
def new_init(self, *args, **kwargs):
|
|
36
34
|
warnings.warn(
|
|
37
|
-
f"{cls.__name__} is deprecated
|
|
35
|
+
f"{cls.__name__} is deprecated: {reason}",
|
|
38
36
|
category=DeprecationWarning,
|
|
39
37
|
stacklevel=2,
|
|
40
38
|
)
|
|
@@ -44,11 +42,11 @@ def _deprecated_class(cls: type[C], reason: str, version: str) -> type[C]:
|
|
|
44
42
|
return cls
|
|
45
43
|
|
|
46
44
|
|
|
47
|
-
def _deprecated_function(f: Callable, reason: str
|
|
45
|
+
def _deprecated_function(f: Callable, reason: str) -> Callable:
|
|
48
46
|
@wraps(f)
|
|
49
47
|
def new_func(*args, **kwargs):
|
|
50
48
|
warnings.warn(
|
|
51
|
-
f"{f.__name__}() is deprecated
|
|
49
|
+
f"{f.__name__}() is deprecated: {reason}",
|
|
52
50
|
category=DeprecationWarning,
|
|
53
51
|
stacklevel=2,
|
|
54
52
|
)
|
|
@@ -7,12 +7,12 @@ from typing import Callable, TypeVar
|
|
|
7
7
|
C = TypeVar("C")
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
def experimental(f:
|
|
10
|
+
def experimental(f: C) -> C:
|
|
11
11
|
"""Mark a function or class as experimental."""
|
|
12
|
-
if isinstance(f,
|
|
13
|
-
return _experimental_class(f)
|
|
14
|
-
else:
|
|
12
|
+
if isinstance(f, Callable):
|
|
15
13
|
return _experimental_function(f)
|
|
14
|
+
else:
|
|
15
|
+
return _experimental_class(f)
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
def _experimental_class(cls: type[C]) -> type[C]:
|