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
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from abc import ABC, ABCMeta
|
|
4
4
|
from dataclasses import dataclass, field
|
|
5
|
-
from typing import Any
|
|
5
|
+
from typing import Any
|
|
6
6
|
from uuid import uuid4
|
|
7
7
|
|
|
8
8
|
from luminarycloud.tables import RectilinearTable, _param_name_to_table_type
|
|
@@ -13,9 +13,10 @@ from luminarycloud.types import Vector3
|
|
|
13
13
|
from luminarycloud.types.adfloat import _to_ad_proto, _from_ad_proto
|
|
14
14
|
from luminarycloud._proto.client import simulation_pb2 as clientpb
|
|
15
15
|
from luminarycloud._proto.client.entity_pb2 import EntityIdentifier
|
|
16
|
+
from luminarycloud._helpers import CodeRepr
|
|
16
17
|
import luminarycloud.params.enum._enum_wrappers as enum
|
|
17
18
|
|
|
18
|
-
from luminarycloud.params.simulation._lib import ParamGroupWrapper,
|
|
19
|
+
from luminarycloud.params.simulation._lib import ParamGroupWrapper, create_unique_id
|
|
19
20
|
|
|
20
21
|
from luminarycloud.params.simulation.time.compute_statistics_ import ComputeStatistics
|
|
21
22
|
from luminarycloud.params.simulation.time.compute_statistics_ import *
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from abc import ABC, ABCMeta
|
|
4
4
|
from dataclasses import dataclass, field
|
|
5
|
-
from typing import Any
|
|
5
|
+
from typing import Any
|
|
6
6
|
from uuid import uuid4
|
|
7
7
|
|
|
8
8
|
from luminarycloud.tables import RectilinearTable, _param_name_to_table_type
|
|
@@ -13,9 +13,10 @@ from luminarycloud.types import Vector3
|
|
|
13
13
|
from luminarycloud.types.adfloat import _to_ad_proto, _from_ad_proto
|
|
14
14
|
from luminarycloud._proto.client import simulation_pb2 as clientpb
|
|
15
15
|
from luminarycloud._proto.client.entity_pb2 import EntityIdentifier
|
|
16
|
+
from luminarycloud._helpers import CodeRepr
|
|
16
17
|
import luminarycloud.params.enum._enum_wrappers as enum
|
|
17
18
|
|
|
18
|
-
from luminarycloud.params.simulation._lib import ParamGroupWrapper,
|
|
19
|
+
from luminarycloud.params.simulation._lib import ParamGroupWrapper, create_unique_id
|
|
19
20
|
|
|
20
21
|
|
|
21
22
|
@dataclass(kw_only=True)
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from abc import ABC, ABCMeta
|
|
4
4
|
from dataclasses import dataclass, field
|
|
5
|
-
from typing import Any
|
|
5
|
+
from typing import Any
|
|
6
6
|
from uuid import uuid4
|
|
7
7
|
|
|
8
8
|
from luminarycloud.tables import RectilinearTable, _param_name_to_table_type
|
|
@@ -13,9 +13,10 @@ from luminarycloud.types import Vector3
|
|
|
13
13
|
from luminarycloud.types.adfloat import _to_ad_proto, _from_ad_proto
|
|
14
14
|
from luminarycloud._proto.client import simulation_pb2 as clientpb
|
|
15
15
|
from luminarycloud._proto.client.entity_pb2 import EntityIdentifier
|
|
16
|
+
from luminarycloud._helpers import CodeRepr
|
|
16
17
|
import luminarycloud.params.enum._enum_wrappers as enum
|
|
17
18
|
|
|
18
|
-
from luminarycloud.params.simulation._lib import ParamGroupWrapper,
|
|
19
|
+
from luminarycloud.params.simulation._lib import ParamGroupWrapper, create_unique_id
|
|
19
20
|
|
|
20
21
|
from luminarycloud.params.simulation.time.time_marching_ import TimeMarching
|
|
21
22
|
from luminarycloud.params.simulation.time.time_marching_ import *
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from abc import ABC, ABCMeta
|
|
4
4
|
from dataclasses import dataclass, field
|
|
5
|
-
from typing import Any
|
|
5
|
+
from typing import Any
|
|
6
6
|
from uuid import uuid4
|
|
7
7
|
|
|
8
8
|
from luminarycloud.tables import RectilinearTable, _param_name_to_table_type
|
|
@@ -13,9 +13,10 @@ from luminarycloud.types import Vector3
|
|
|
13
13
|
from luminarycloud.types.adfloat import _to_ad_proto, _from_ad_proto
|
|
14
14
|
from luminarycloud._proto.client import simulation_pb2 as clientpb
|
|
15
15
|
from luminarycloud._proto.client.entity_pb2 import EntityIdentifier
|
|
16
|
+
from luminarycloud._helpers import CodeRepr
|
|
16
17
|
import luminarycloud.params.enum._enum_wrappers as enum
|
|
17
18
|
|
|
18
|
-
from luminarycloud.params.simulation._lib import ParamGroupWrapper,
|
|
19
|
+
from luminarycloud.params.simulation._lib import ParamGroupWrapper, create_unique_id
|
|
19
20
|
|
|
20
21
|
from luminarycloud.params.simulation.time.time_marching_ import TimeMarching
|
|
21
22
|
from luminarycloud.params.simulation.time.time_marching_ import *
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from abc import ABC, ABCMeta
|
|
4
4
|
from dataclasses import dataclass, field
|
|
5
|
-
from typing import Any
|
|
5
|
+
from typing import Any
|
|
6
6
|
from uuid import uuid4
|
|
7
7
|
|
|
8
8
|
from luminarycloud.tables import RectilinearTable, _param_name_to_table_type
|
|
@@ -13,9 +13,10 @@ from luminarycloud.types import Vector3
|
|
|
13
13
|
from luminarycloud.types.adfloat import _to_ad_proto, _from_ad_proto
|
|
14
14
|
from luminarycloud._proto.client import simulation_pb2 as clientpb
|
|
15
15
|
from luminarycloud._proto.client.entity_pb2 import EntityIdentifier
|
|
16
|
+
from luminarycloud._helpers import CodeRepr
|
|
16
17
|
import luminarycloud.params.enum._enum_wrappers as enum
|
|
17
18
|
|
|
18
|
-
from luminarycloud.params.simulation._lib import ParamGroupWrapper,
|
|
19
|
+
from luminarycloud.params.simulation._lib import ParamGroupWrapper, create_unique_id
|
|
19
20
|
|
|
20
21
|
|
|
21
22
|
@dataclass(kw_only=True)
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from abc import ABC, ABCMeta
|
|
4
4
|
from dataclasses import dataclass, field
|
|
5
|
-
from typing import Any
|
|
5
|
+
from typing import Any
|
|
6
6
|
from uuid import uuid4
|
|
7
7
|
|
|
8
8
|
from luminarycloud.tables import RectilinearTable, _param_name_to_table_type
|
|
@@ -13,9 +13,10 @@ from luminarycloud.types import Vector3
|
|
|
13
13
|
from luminarycloud.types.adfloat import _to_ad_proto, _from_ad_proto
|
|
14
14
|
from luminarycloud._proto.client import simulation_pb2 as clientpb
|
|
15
15
|
from luminarycloud._proto.client.entity_pb2 import EntityIdentifier
|
|
16
|
+
from luminarycloud._helpers import CodeRepr
|
|
16
17
|
import luminarycloud.params.enum._enum_wrappers as enum
|
|
17
18
|
|
|
18
|
-
from luminarycloud.params.simulation._lib import ParamGroupWrapper,
|
|
19
|
+
from luminarycloud.params.simulation._lib import ParamGroupWrapper, create_unique_id
|
|
19
20
|
|
|
20
21
|
from luminarycloud.params.simulation.time.time_step_ramp_ import TimeStepRamp
|
|
21
22
|
from luminarycloud.params.simulation.time.time_step_ramp_ import *
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from abc import ABC, ABCMeta
|
|
4
4
|
from dataclasses import dataclass, field
|
|
5
|
-
from typing import Any
|
|
5
|
+
from typing import Any
|
|
6
6
|
from uuid import uuid4
|
|
7
7
|
|
|
8
8
|
from luminarycloud.tables import RectilinearTable, _param_name_to_table_type
|
|
@@ -13,9 +13,10 @@ from luminarycloud.types import Vector3
|
|
|
13
13
|
from luminarycloud.types.adfloat import _to_ad_proto, _from_ad_proto
|
|
14
14
|
from luminarycloud._proto.client import simulation_pb2 as clientpb
|
|
15
15
|
from luminarycloud._proto.client.entity_pb2 import EntityIdentifier
|
|
16
|
+
from luminarycloud._helpers import CodeRepr
|
|
16
17
|
import luminarycloud.params.enum._enum_wrappers as enum
|
|
17
18
|
|
|
18
|
-
from luminarycloud.params.simulation._lib import ParamGroupWrapper,
|
|
19
|
+
from luminarycloud.params.simulation._lib import ParamGroupWrapper, create_unique_id
|
|
19
20
|
|
|
20
21
|
from luminarycloud.params.simulation.time.time_step_ramp_ import TimeStepRamp
|
|
21
22
|
from luminarycloud.params.simulation.time.time_step_ramp_ import *
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from abc import ABC, ABCMeta
|
|
4
4
|
from dataclasses import dataclass, field
|
|
5
|
-
from typing import Any
|
|
5
|
+
from typing import Any
|
|
6
6
|
from uuid import uuid4
|
|
7
7
|
|
|
8
8
|
from luminarycloud.tables import RectilinearTable, _param_name_to_table_type
|
|
@@ -13,9 +13,10 @@ from luminarycloud.types import Vector3
|
|
|
13
13
|
from luminarycloud.types.adfloat import _to_ad_proto, _from_ad_proto
|
|
14
14
|
from luminarycloud._proto.client import simulation_pb2 as clientpb
|
|
15
15
|
from luminarycloud._proto.client.entity_pb2 import EntityIdentifier
|
|
16
|
+
from luminarycloud._helpers import CodeRepr
|
|
16
17
|
import luminarycloud.params.enum._enum_wrappers as enum
|
|
17
18
|
|
|
18
|
-
from luminarycloud.params.simulation._lib import ParamGroupWrapper,
|
|
19
|
+
from luminarycloud.params.simulation._lib import ParamGroupWrapper, create_unique_id
|
|
19
20
|
|
|
20
21
|
|
|
21
22
|
@dataclass(kw_only=True)
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from abc import ABC, ABCMeta
|
|
4
4
|
from dataclasses import dataclass, field
|
|
5
|
-
from typing import Any
|
|
5
|
+
from typing import Any
|
|
6
6
|
from uuid import uuid4
|
|
7
7
|
|
|
8
8
|
from luminarycloud.tables import RectilinearTable, _param_name_to_table_type
|
|
@@ -13,9 +13,10 @@ from luminarycloud.types import Vector3
|
|
|
13
13
|
from luminarycloud.types.adfloat import _to_ad_proto, _from_ad_proto
|
|
14
14
|
from luminarycloud._proto.client import simulation_pb2 as clientpb
|
|
15
15
|
from luminarycloud._proto.client.entity_pb2 import EntityIdentifier
|
|
16
|
+
from luminarycloud._helpers import CodeRepr
|
|
16
17
|
import luminarycloud.params.enum._enum_wrappers as enum
|
|
17
18
|
|
|
18
|
-
from luminarycloud.params.simulation._lib import ParamGroupWrapper,
|
|
19
|
+
from luminarycloud.params.simulation._lib import ParamGroupWrapper, create_unique_id
|
|
19
20
|
|
|
20
21
|
from luminarycloud.params.simulation.time.compute_statistics_ import ComputeStatistics
|
|
21
22
|
from luminarycloud.params.simulation.time.compute_statistics_ import *
|
|
@@ -46,13 +47,13 @@ class Time(CodeRepr, ParamGroupWrapper[clientpb.Time]):
|
|
|
46
47
|
"""Time parameters used by a transient solution (required if flow_behavior = transient)."""
|
|
47
48
|
|
|
48
49
|
time_marching: TimeMarching = field(default_factory=TimeImplicit)
|
|
49
|
-
"Scheme for time-accurate integration."
|
|
50
|
+
"Scheme for time-accurate integration. Possible types: ``TimeImplicit``, ``TimeExplicit`` from the ``time_marching`` module."
|
|
50
51
|
time_step: float = 0.0001
|
|
51
52
|
"The fixed physical time step."
|
|
52
53
|
time_step_ramp: TimeStepRamp = field(default_factory=TimeStepRampOff)
|
|
53
|
-
"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)."
|
|
54
|
+
"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."
|
|
54
55
|
compute_statistics: ComputeStatistics = field(default_factory=ComputeStatisticsOff)
|
|
55
|
-
"Compute time-averaged values of flow variables (e.g. Velocity)."
|
|
56
|
+
"Compute time-averaged values of flow variables (e.g. Velocity). Possible types: ``ComputeStatisticsOff``, ``ComputeStatisticsOn`` from the ``compute_statistics`` module."
|
|
56
57
|
|
|
57
58
|
def _to_proto(self) -> clientpb.Time:
|
|
58
59
|
_proto = clientpb.Time()
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from abc import ABC, ABCMeta
|
|
4
4
|
from dataclasses import dataclass, field
|
|
5
|
-
from typing import Any
|
|
5
|
+
from typing import Any
|
|
6
6
|
from uuid import uuid4
|
|
7
7
|
|
|
8
8
|
from luminarycloud.tables import RectilinearTable, _param_name_to_table_type
|
|
@@ -13,17 +13,18 @@ from luminarycloud.types import Vector3
|
|
|
13
13
|
from luminarycloud.types.adfloat import _to_ad_proto, _from_ad_proto
|
|
14
14
|
from luminarycloud._proto.client import simulation_pb2 as clientpb
|
|
15
15
|
from luminarycloud._proto.client.entity_pb2 import EntityIdentifier
|
|
16
|
+
from luminarycloud._helpers import CodeRepr
|
|
16
17
|
import luminarycloud.params.enum._enum_wrappers as enum
|
|
17
18
|
|
|
18
|
-
from luminarycloud.params.simulation._lib import ParamGroupWrapper,
|
|
19
|
+
from luminarycloud.params.simulation._lib import ParamGroupWrapper, create_unique_id
|
|
19
20
|
|
|
20
21
|
|
|
21
22
|
@dataclass(kw_only=True)
|
|
22
23
|
class VolumeEntity(CodeRepr, ParamGroupWrapper[clientpb.VolumeEntity]):
|
|
23
24
|
"""Volume entity."""
|
|
24
25
|
|
|
25
|
-
volume_identifier:
|
|
26
|
-
"Unique identifier for a volume entity"
|
|
26
|
+
volume_identifier: EntityIdentifier | None = None
|
|
27
|
+
"Unique identifier for a volume entity."
|
|
27
28
|
|
|
28
29
|
def _to_proto(self) -> clientpb.VolumeEntity:
|
|
29
30
|
_proto = clientpb.VolumeEntity()
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Copyright 2025 Luminary Cloud, Inc. All Rights Reserved.
|
|
2
|
+
from __future__ import annotations
|
|
3
|
+
|
|
4
|
+
from typing import List
|
|
5
|
+
|
|
6
|
+
from .._client import get_default_client
|
|
7
|
+
from .._proto.api.v0.luminarycloud.physics_ai import physics_ai_pb2 as physaipb
|
|
8
|
+
from .._wrapper import ProtoWrapper, ProtoWrapperBase
|
|
9
|
+
from .._helpers.warnings import experimental
|
|
10
|
+
from ..types.ids import PhysicsAiArchitectureID
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@experimental
|
|
14
|
+
@ProtoWrapper(physaipb.PhysicsAiArchitecture)
|
|
15
|
+
class PhysicsAiArchitecture(ProtoWrapperBase):
|
|
16
|
+
"""
|
|
17
|
+
Represents a Physics AI architecture.
|
|
18
|
+
|
|
19
|
+
warning:: This feature is experimental and may change or be removed without notice.
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
id: PhysicsAiArchitectureID
|
|
23
|
+
name: str
|
|
24
|
+
description: str
|
|
25
|
+
version: str
|
|
26
|
+
_proto: physaipb.PhysicsAiArchitecture
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
@experimental
|
|
30
|
+
def list_architectures() -> List[PhysicsAiArchitecture]:
|
|
31
|
+
"""
|
|
32
|
+
List available Physics AI architectures for model training.
|
|
33
|
+
|
|
34
|
+
warning:: This feature is experimental and may change or be removed without notice.
|
|
35
|
+
"""
|
|
36
|
+
req = physaipb.ListArchitecturesRequest()
|
|
37
|
+
res = get_default_client().ListArchitectures(req)
|
|
38
|
+
return [PhysicsAiArchitecture(arch) for arch in res.architectures]
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Copyright 2025 Luminary Cloud, Inc. All Rights Reserved.
|
|
2
|
+
from __future__ import annotations
|
|
3
|
+
|
|
4
|
+
from datetime import datetime
|
|
5
|
+
from typing import List
|
|
6
|
+
|
|
7
|
+
from .._client import get_default_client
|
|
8
|
+
from .._helpers._timestamp_to_datetime import timestamp_to_datetime
|
|
9
|
+
from .._proto.api.v0.luminarycloud.physics_ai import physics_ai_pb2 as physaipb
|
|
10
|
+
from .._wrapper import ProtoWrapper, ProtoWrapperBase
|
|
11
|
+
from .._helpers.warnings import experimental
|
|
12
|
+
from ..types.ids import PhysicsAiModelID
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@experimental
|
|
16
|
+
@ProtoWrapper(physaipb.PhysicsAiModel)
|
|
17
|
+
class PhysicsAiModel(ProtoWrapperBase):
|
|
18
|
+
"""Represents a Physics AI model."""
|
|
19
|
+
|
|
20
|
+
id: PhysicsAiModelID
|
|
21
|
+
name: str
|
|
22
|
+
version: str
|
|
23
|
+
|
|
24
|
+
_proto: physaipb.PhysicsAiModel
|
|
25
|
+
|
|
26
|
+
@property
|
|
27
|
+
def create_time(self) -> datetime:
|
|
28
|
+
return timestamp_to_datetime(self._proto.create_time)
|
|
29
|
+
|
|
30
|
+
@property
|
|
31
|
+
def update_time(self) -> datetime:
|
|
32
|
+
return timestamp_to_datetime(self._proto.update_time)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
@experimental
|
|
36
|
+
def list_pretrained_models() -> List[PhysicsAiModel]:
|
|
37
|
+
"""
|
|
38
|
+
List available pretrained Physics AI models.
|
|
39
|
+
"""
|
|
40
|
+
req = physaipb.ListPretrainedModelsRequest()
|
|
41
|
+
res = get_default_client().ListPretrainedModels(req)
|
|
42
|
+
return [PhysicsAiModel(model) for model in res.models]
|
luminarycloud/project.py
CHANGED
|
@@ -45,7 +45,7 @@ from .enum import GPUType, MeshType, TableType
|
|
|
45
45
|
from .meshing import MeshAdaptationParams, MeshGenerationParams
|
|
46
46
|
from .simulation_param import SimulationParam
|
|
47
47
|
from .tables import RectilinearTable, create_rectilinear_table
|
|
48
|
-
from .types import MeshID, ProjectID
|
|
48
|
+
from .types import MeshID, ProjectID, SimulationTemplateID
|
|
49
49
|
|
|
50
50
|
if TYPE_CHECKING:
|
|
51
51
|
from .geometry import Geometry
|
|
@@ -109,6 +109,10 @@ class Project(ProtoWrapperBase):
|
|
|
109
109
|
)
|
|
110
110
|
get_default_client().DeleteProject(req)
|
|
111
111
|
|
|
112
|
+
@property
|
|
113
|
+
def url(self) -> str:
|
|
114
|
+
return f"https://{get_default_client().primary_domain}/project/{self.id}"
|
|
115
|
+
|
|
112
116
|
def create_geometry(
|
|
113
117
|
self,
|
|
114
118
|
cad_file_path: PathLike | str,
|
|
@@ -257,7 +261,7 @@ class Project(ProtoWrapperBase):
|
|
|
257
261
|
@deprecated("Use create_or_get_mesh() instead", "0.10.0")
|
|
258
262
|
def create_mesh(
|
|
259
263
|
self,
|
|
260
|
-
params:
|
|
264
|
+
params: MeshAdaptationParams | MeshGenerationParams,
|
|
261
265
|
*,
|
|
262
266
|
name: str,
|
|
263
267
|
) -> "Mesh":
|
|
@@ -312,7 +316,7 @@ class Project(ProtoWrapperBase):
|
|
|
312
316
|
|
|
313
317
|
def create_or_get_mesh(
|
|
314
318
|
self,
|
|
315
|
-
params:
|
|
319
|
+
params: MeshAdaptationParams | MeshGenerationParams,
|
|
316
320
|
*,
|
|
317
321
|
name: str,
|
|
318
322
|
) -> "Mesh":
|
|
@@ -344,7 +348,7 @@ class Project(ProtoWrapperBase):
|
|
|
344
348
|
return lc.Mesh(res.mesh)
|
|
345
349
|
raise
|
|
346
350
|
|
|
347
|
-
def
|
|
351
|
+
def _create_hex_mesh(
|
|
348
352
|
self,
|
|
349
353
|
names_to_file_paths: Dict[str, Union[PathLike[Any], str]],
|
|
350
354
|
params: hexmeshpb.HexMeshSpec,
|
|
@@ -432,12 +436,11 @@ class Project(ProtoWrapperBase):
|
|
|
432
436
|
raise RuntimeError("The table upload failed.")
|
|
433
437
|
|
|
434
438
|
# Update the simulation template with the new table reference.
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
)
|
|
439
|
+
params: clientpb.SimulationParam = simulation_template._proto.parameters
|
|
440
|
+
params.table_references[name].url = url
|
|
441
|
+
params.table_references[name].table_type = table_type.value
|
|
442
|
+
params.table_references[name].uploaded_filename = uploaded_filename
|
|
443
|
+
simulation_template._update(name=simulation_template.name, parameters=params)
|
|
441
444
|
|
|
442
445
|
return RectilinearTable(id=name, name=uploaded_filename, table_type=table_type)
|
|
443
446
|
|
|
@@ -543,8 +546,9 @@ class Project(ProtoWrapperBase):
|
|
|
543
546
|
self,
|
|
544
547
|
name: str,
|
|
545
548
|
*,
|
|
546
|
-
parameters: Optional[
|
|
549
|
+
parameters: Optional[SimulationParam] = None,
|
|
547
550
|
params_json_path: Optional[PathLike | str] = None,
|
|
551
|
+
copy_from: Optional["SimulationTemplate" | SimulationTemplateID | str] = None,
|
|
548
552
|
) -> "SimulationTemplate":
|
|
549
553
|
"""
|
|
550
554
|
Create a new simulation template object.
|
|
@@ -561,19 +565,35 @@ class Project(ProtoWrapperBase):
|
|
|
561
565
|
Complete simulation parameters. Ignored if `params_json_path` is set.
|
|
562
566
|
params_json_path : PathLike or str, optional
|
|
563
567
|
Path to local JSON file containing simulation params.
|
|
564
|
-
|
|
568
|
+
copy_from : SimulationTemplate or str, optional
|
|
569
|
+
Simulation template to copy. If provided, the new template will be a copy of this one.
|
|
570
|
+
Can pass a SimulationTemplate object or an ID of the template to copy.
|
|
571
|
+
"""
|
|
572
|
+
if (
|
|
573
|
+
int(params_json_path is not None)
|
|
574
|
+
+ int(parameters is not None)
|
|
575
|
+
+ int(copy_from is not None)
|
|
576
|
+
!= 1
|
|
577
|
+
):
|
|
578
|
+
raise ValueError(
|
|
579
|
+
"Exactly one of parameters, params_json_path, or copy_from must be set"
|
|
580
|
+
)
|
|
581
|
+
|
|
582
|
+
param_proto: clientpb.SimulationParam | None = None
|
|
583
|
+
copy_from_id: str | None = None
|
|
584
|
+
|
|
565
585
|
if params_json_path is not None:
|
|
566
586
|
param_proto = simulation_params_from_json_path(params_json_path)
|
|
567
587
|
elif parameters is not None:
|
|
568
|
-
|
|
569
|
-
|
|
588
|
+
param_proto = parameters._to_proto()
|
|
589
|
+
elif copy_from is not None:
|
|
590
|
+
if isinstance(copy_from, lc.SimulationTemplate):
|
|
591
|
+
copy_from_id = copy_from.id
|
|
570
592
|
else:
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
else:
|
|
574
|
-
raise Exception("Either parameters or params_json_path must be set")
|
|
593
|
+
copy_from_id = copy_from
|
|
594
|
+
|
|
575
595
|
req = simtemplatepb.CreateSimulationTemplateRequest(
|
|
576
|
-
project_id=self.id, name=name, parameters=param_proto
|
|
596
|
+
project_id=self.id, name=name, parameters=param_proto, copy_from=copy_from_id
|
|
577
597
|
)
|
|
578
598
|
res = get_default_client().CreateSimulationTemplate(req)
|
|
579
599
|
return lc.SimulationTemplate(res.simulation_template)
|
|
@@ -3,10 +3,10 @@ from dataclasses import dataclass
|
|
|
3
3
|
from typing import Any
|
|
4
4
|
from ._proto.base.base_pb2 import AdFloatType
|
|
5
5
|
from ._proto.output import reference_values_pb2 as refvalpb
|
|
6
|
+
from ._proto.client import simulation_pb2 as clientpb
|
|
7
|
+
from ._helpers import CodeRepr
|
|
6
8
|
from .enum import ReferenceValuesType
|
|
7
9
|
|
|
8
|
-
from .params.simulation._lib import CodeRepr
|
|
9
|
-
|
|
10
10
|
|
|
11
11
|
@dataclass(kw_only=True)
|
|
12
12
|
class ReferenceValues(CodeRepr):
|
|
@@ -75,7 +75,24 @@ class ReferenceValues(CodeRepr):
|
|
|
75
75
|
self._to_proto_common(proto)
|
|
76
76
|
return proto
|
|
77
77
|
|
|
78
|
-
def
|
|
78
|
+
def _to_client_proto(self) -> clientpb.ReferenceValues:
|
|
79
|
+
proto = clientpb.ReferenceValues()
|
|
80
|
+
if self.reference_value_type == ReferenceValuesType.PRESCRIBE_VALUES:
|
|
81
|
+
proto.reference_type = clientpb.PRESCRIBE_VALUES
|
|
82
|
+
elif self.reference_value_type == ReferenceValuesType.FARFIELD_VALUES:
|
|
83
|
+
proto.reference_type = clientpb.REFERENCE_FARFIELD_VALUES
|
|
84
|
+
else:
|
|
85
|
+
proto.reference_type = clientpb.INVALID_REFERENCE_TYPE
|
|
86
|
+
self._to_proto_common(proto)
|
|
87
|
+
return proto
|
|
88
|
+
|
|
89
|
+
def _from_client_proto(self, proto: clientpb.ReferenceValues) -> None:
|
|
90
|
+
if proto.reference_type == clientpb.PRESCRIBE_VALUES:
|
|
91
|
+
self.reference_value_type = ReferenceValuesType.PRESCRIBE_VALUES
|
|
92
|
+
elif proto.reference_type == clientpb.REFERENCE_FARFIELD_VALUES:
|
|
93
|
+
self.reference_value_type = ReferenceValuesType.FARFIELD_VALUES
|
|
94
|
+
else:
|
|
95
|
+
self.reference_value_type = ReferenceValuesType.UNSPECIFIED
|
|
79
96
|
self.area_ref = proto.area_ref.value
|
|
80
97
|
self.length_ref = proto.length_ref.value
|
|
81
98
|
self.use_aero_moment_ref_lengths = proto.use_aero_moment_ref_lengths
|
luminarycloud/simulation.py
CHANGED
|
@@ -6,6 +6,7 @@ from typing import Optional
|
|
|
6
6
|
from ._client import get_default_client
|
|
7
7
|
from ._helpers._timestamp_to_datetime import timestamp_to_datetime
|
|
8
8
|
from ._helpers._wait_for_simulation import wait_for_simulation
|
|
9
|
+
from ._helpers.warnings import deprecated
|
|
9
10
|
from ._proto.api.v0.luminarycloud.common import common_pb2 as commonpb
|
|
10
11
|
from ._proto.api.v0.luminarycloud.simulation import simulation_pb2 as simulationpb
|
|
11
12
|
from ._proto.api.v0.luminarycloud.solution import solution_pb2 as solutionpb
|
|
@@ -22,6 +23,7 @@ from .enum import (
|
|
|
22
23
|
)
|
|
23
24
|
from .simulation_param import SimulationParam
|
|
24
25
|
from .reference_values import ReferenceValues
|
|
26
|
+
from .simulation_param import SimulationParam
|
|
25
27
|
from .solution import Solution
|
|
26
28
|
from .types import MeshID, ProjectID, SimulationID, Vector3Like
|
|
27
29
|
from .types.vector3 import _to_vector3_proto
|
|
@@ -288,16 +290,19 @@ class Simulation(ProtoWrapperBase):
|
|
|
288
290
|
res = get_default_client().ListSolutions(req)
|
|
289
291
|
return [Solution(s) for s in res.solutions]
|
|
290
292
|
|
|
291
|
-
def get_parameters(self) ->
|
|
293
|
+
def get_parameters(self) -> SimulationParam:
|
|
292
294
|
req = simulationpb.GetSimulationParametersRequest(id=self.id)
|
|
293
|
-
return get_default_client().GetSimulationParameters(req)
|
|
295
|
+
return SimulationParam.from_proto(get_default_client().GetSimulationParameters(req))
|
|
294
296
|
|
|
297
|
+
@deprecated(
|
|
298
|
+
"Use get_parameters() instead. This method will be removed in a future release.",
|
|
299
|
+
)
|
|
295
300
|
def get_simulation_param(self) -> SimulationParam:
|
|
296
301
|
"""
|
|
297
302
|
Returns the simulation parameters associated with this template to allow customization of
|
|
298
303
|
the parameters.
|
|
299
304
|
"""
|
|
300
|
-
return
|
|
305
|
+
return self.get_parameters()
|
|
301
306
|
|
|
302
307
|
|
|
303
308
|
def get_simulation(id: SimulationID) -> Simulation:
|
|
@@ -9,6 +9,7 @@ from typing import Optional, TypeVar, cast
|
|
|
9
9
|
import luminarycloud.params.enum._enum_wrappers as enum
|
|
10
10
|
from luminarycloud._helpers._simulation_params_from_json import (
|
|
11
11
|
simulation_params_from_json_path,
|
|
12
|
+
simulation_params_from_json_dict,
|
|
12
13
|
)
|
|
13
14
|
from luminarycloud._helpers.warnings import experimental
|
|
14
15
|
from luminarycloud._proto.client import simulation_pb2 as clientpb
|
|
@@ -46,7 +47,29 @@ logger = getLogger(__name__)
|
|
|
46
47
|
|
|
47
48
|
@dataclass(kw_only=True, repr=False)
|
|
48
49
|
class SimulationParam(_SimulationParam):
|
|
49
|
-
"""
|
|
50
|
+
"""
|
|
51
|
+
Solver configuration parameters that support multi-physics simulations.
|
|
52
|
+
|
|
53
|
+
The structure of these parameters is related to the decision tree of selecting different models,
|
|
54
|
+
boundary conditions, etc. for the simulation.
|
|
55
|
+
Most of these choices are made by picking one class for a given field over a number of
|
|
56
|
+
alternatives. For example:
|
|
57
|
+
|
|
58
|
+
>>> import luminarycloud.params.simulation as sim_params
|
|
59
|
+
>>> params = SimulationParam()
|
|
60
|
+
>>> params.physics[0].fluid.turbulence = sim_params.physics.fluid.turbulence.KomegaSst()
|
|
61
|
+
>>> params.physics[0].fluid.turbulence = sim_params.physics.fluid.turbulence.SpalartAllmaras()
|
|
62
|
+
|
|
63
|
+
The alternatives are listed in the documentation of each field (turbulence in this case), and
|
|
64
|
+
the (sub)module that provides them is always named after the field.
|
|
65
|
+
Therefore, even without consulting the documentation, it is possible to list the alternatives
|
|
66
|
+
using Python's ``dir`` function, in this case:
|
|
67
|
+
|
|
68
|
+
>>> dir(sim_params.physics.fluid.turbulence)
|
|
69
|
+
|
|
70
|
+
The alternative classes have different fields, which may again have their own alternative
|
|
71
|
+
classes thereby repeating the pattern and creating the tree structure.
|
|
72
|
+
"""
|
|
50
73
|
|
|
51
74
|
reference_values: ReferenceValues = field(default_factory=ReferenceValues)
|
|
52
75
|
"Reference values for outputs and stopping conditions."
|
|
@@ -56,26 +79,21 @@ class SimulationParam(_SimulationParam):
|
|
|
56
79
|
|
|
57
80
|
def _to_proto(self) -> clientpb.SimulationParam:
|
|
58
81
|
_proto = super()._to_proto()
|
|
59
|
-
|
|
60
|
-
if self.reference_values.reference_value_type == ReferenceValuesType.FARFIELD_VALUES:
|
|
61
|
-
raise ValueError(
|
|
62
|
-
"ReferenceValuesType.FARFIELD_VALUES cannot be used in SimulationParam yet."
|
|
63
|
-
)
|
|
64
|
-
self.reference_values._to_proto_common(_proto.reference_values)
|
|
82
|
+
_proto.reference_values.CopyFrom(self.reference_values._to_client_proto())
|
|
65
83
|
return _proto
|
|
66
84
|
|
|
67
85
|
@classmethod
|
|
68
86
|
def from_proto(self, proto: clientpb.SimulationParam) -> "SimulationParam":
|
|
69
87
|
_wrapper = cast(SimulationParam, super().from_proto(proto))
|
|
70
|
-
|
|
71
|
-
_wrapper.basic is not None and _wrapper.basic.time == enum.FlowBehavior.TRANSIENT
|
|
72
|
-
)
|
|
73
|
-
_wrapper.reference_values._from_proto_common(proto.reference_values)
|
|
88
|
+
_wrapper.reference_values._from_client_proto(proto.reference_values)
|
|
74
89
|
return _wrapper
|
|
75
90
|
|
|
76
91
|
@classmethod
|
|
77
|
-
def from_json(cls,
|
|
78
|
-
|
|
92
|
+
def from_json(cls, source: PathLike | dict) -> "SimulationParam":
|
|
93
|
+
if isinstance(source, PathLike):
|
|
94
|
+
return cls.from_proto(simulation_params_from_json_path(source))
|
|
95
|
+
else:
|
|
96
|
+
return cls.from_proto(simulation_params_from_json_dict(source))
|
|
79
97
|
|
|
80
98
|
def assign_material(self, material: MaterialEntity, volume: Volume | str) -> None:
|
|
81
99
|
"""
|
|
@@ -290,16 +308,17 @@ class SimulationParam(_SimulationParam):
|
|
|
290
308
|
def __repr__(self) -> str:
|
|
291
309
|
return pformat(vars(self), compact=True, sort_dicts=True)
|
|
292
310
|
|
|
293
|
-
def to_code(self) -> str:
|
|
311
|
+
def to_code(self, hide_defaults: bool = True) -> str:
|
|
294
312
|
"""
|
|
295
313
|
Returns the python code that generates an identical SimulationParam object.
|
|
296
|
-
This is a verbose representation
|
|
297
|
-
|
|
314
|
+
This is a verbose representation that does not make use of helper functions like
|
|
315
|
+
assign_material and assign_physics.
|
|
316
|
+
Parameters with default values are omitted by default, with hide_defaults=False, code will
|
|
317
|
+
also be generated for those parameters.
|
|
298
318
|
"""
|
|
299
319
|
code = """## NOTE: This is a verbose representation of a SimulationParam object as the
|
|
300
320
|
## code that creates an identical object. The verbosity is intended to facilitate
|
|
301
|
-
## the discovery of available parameters.
|
|
302
|
-
## (e.g. for material properties) some lines of this representation become redundant.
|
|
321
|
+
## the discovery of available parameters.
|
|
303
322
|
import luminarycloud
|
|
304
323
|
from luminarycloud import *
|
|
305
324
|
from luminarycloud.types import Vector3
|
|
@@ -308,16 +327,20 @@ from luminarycloud.params.enum import *
|
|
|
308
327
|
from luminarycloud.params import simulation as params
|
|
309
328
|
|
|
310
329
|
|
|
311
|
-
obj = SimulationParam()
|
|
312
330
|
"""
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
331
|
+
return code + self._to_code_helper("obj", hide_defaults).replace(
|
|
332
|
+
"luminarycloud.simulation_param.SimulationParam()", "SimulationParam()", 1
|
|
333
|
+
)
|
|
334
|
+
|
|
335
|
+
def find_parameter(self, parameter: str) -> None:
|
|
336
|
+
"""
|
|
337
|
+
Searches the full output of "to_code()" for occurrences of "parameter" and prints the lines
|
|
338
|
+
with matches. This is a helper function to assist users in finding, for example, how to
|
|
339
|
+
change farfield conditions, material properties, etc.
|
|
340
|
+
"""
|
|
341
|
+
for i, line in enumerate(self.to_code(False).split("\n")):
|
|
342
|
+
if parameter.lower() in line.lower():
|
|
343
|
+
print(f"line {i}: {line}")
|
|
321
344
|
|
|
322
345
|
|
|
323
346
|
T = TypeVar("T")
|