luminarycloud 0.14.0__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 +8 -1
- luminarycloud/_client/client.py +9 -0
- luminarycloud/_client/logging_interceptor.py +25 -0
- luminarycloud/_client/tracing.py +13 -8
- luminarycloud/_helpers/__init__.py +2 -0
- luminarycloud/_helpers/_code_representation.py +135 -0
- luminarycloud/_helpers/_simulation_params_from_json.py +5 -1
- luminarycloud/_helpers/download.py +16 -0
- luminarycloud/_helpers/named_variables.py +25 -0
- 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/mesh/mesh_pb2.py +40 -40
- luminarycloud/_proto/api/v0/luminarycloud/mesh/mesh_pb2.pyi +8 -2
- luminarycloud/_proto/api/v0/luminarycloud/named_variable_set/named_variable_set_pb2.py +182 -0
- luminarycloud/_proto/api/v0/luminarycloud/named_variable_set/named_variable_set_pb2.pyi +260 -0
- luminarycloud/_proto/api/v0/luminarycloud/named_variable_set/named_variable_set_pb2_grpc.py +204 -0
- luminarycloud/_proto/api/v0/luminarycloud/named_variable_set/named_variable_set_pb2_grpc.pyi +75 -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/solution/solution_pb2.py +25 -3
- luminarycloud/_proto/api/v0/luminarycloud/solution/solution_pb2.pyi +32 -0
- luminarycloud/_proto/api/v0/luminarycloud/solution/solution_pb2_grpc.py +34 -0
- luminarycloud/_proto/api/v0/luminarycloud/solution/solution_pb2_grpc.pyi +12 -0
- 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 +157 -141
- luminarycloud/_proto/api/v0/luminarycloud/vis/vis_pb2.pyi +32 -4
- luminarycloud/_proto/cad/boolean_pb2.py +8 -8
- luminarycloud/_proto/cad/boolean_pb2.pyi +34 -4
- luminarycloud/_proto/client/simulation_pb2.py +304 -294
- luminarycloud/_proto/client/simulation_pb2.pyi +30 -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/quantity/quantity_pb2.py +4 -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/named_variable_set.py +121 -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 +73 -21
- luminarycloud/reference_values.py +20 -3
- luminarycloud/simulation.py +8 -3
- luminarycloud/simulation_param.py +136 -29
- luminarycloud/simulation_template.py +84 -13
- luminarycloud/solution.py +17 -2
- luminarycloud/types/__init__.py +1 -0
- luminarycloud/types/adfloat.py +49 -19
- luminarycloud/types/ids.py +3 -0
- luminarycloud/vis/__init__.py +0 -3
- luminarycloud/vis/display.py +1 -0
- luminarycloud/vis/interactive_scene.py +47 -1
- luminarycloud/vis/visualization.py +57 -23
- luminarycloud/volume_selection.py +31 -19
- {luminarycloud-0.14.0.dist-info → luminarycloud-0.15.0.dist-info}/METADATA +2 -2
- {luminarycloud-0.14.0.dist-info → luminarycloud-0.15.0.dist-info}/RECORD +295 -274
- {luminarycloud-0.14.0.dist-info → luminarycloud-0.15.0.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Copyright 2023-2024 Luminary Cloud, Inc. All Rights Reserved.
|
|
2
|
+
from enum import IntEnum
|
|
3
|
+
from .._proto.api.v0.luminarycloud.geometry import geometry_pb2
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class GeometryStatus(IntEnum):
|
|
7
|
+
"""
|
|
8
|
+
Represents the status of a geometry.
|
|
9
|
+
|
|
10
|
+
Attributes
|
|
11
|
+
----------
|
|
12
|
+
UNKNOWN
|
|
13
|
+
Status is unknown.
|
|
14
|
+
IMPORTING
|
|
15
|
+
Geometry is still being processed.
|
|
16
|
+
NEEDS_CHECK
|
|
17
|
+
Geometry was created but has not yet been checked.
|
|
18
|
+
FAILED_CHECK
|
|
19
|
+
Geometry is not well-formed and cannot be used.
|
|
20
|
+
READY
|
|
21
|
+
Geometry is ready to use.
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
UNKNOWN = geometry_pb2.Geometry.UNKNOWN
|
|
25
|
+
IMPORTING = geometry_pb2.Geometry.IMPORTING
|
|
26
|
+
NEEDS_CHECK = geometry_pb2.Geometry.NEEDS_CHECK
|
|
27
|
+
FAILED_CHECK = geometry_pb2.Geometry.FAILED_CHECK
|
|
28
|
+
READY = geometry_pb2.Geometry.READY
|
luminarycloud/geometry.py
CHANGED
|
@@ -5,8 +5,9 @@ from datetime import datetime
|
|
|
5
5
|
import random
|
|
6
6
|
from uuid import uuid4
|
|
7
7
|
import time
|
|
8
|
+
from typing import Sequence
|
|
8
9
|
|
|
9
|
-
from typing_extensions import TYPE_CHECKING
|
|
10
|
+
from typing_extensions import TYPE_CHECKING
|
|
10
11
|
|
|
11
12
|
import luminarycloud as lc
|
|
12
13
|
|
|
@@ -14,7 +15,7 @@ from ._client import get_default_client
|
|
|
14
15
|
from ._helpers._timestamp_to_datetime import timestamp_to_datetime
|
|
15
16
|
from ._proto.api.v0.luminarycloud.geometry import geometry_pb2 as geometrypb
|
|
16
17
|
from ._proto.geometry import geometry_pb2 as gpb
|
|
17
|
-
|
|
18
|
+
from .enum import GeometryStatus
|
|
18
19
|
from .params.geometry import Surface, Volume
|
|
19
20
|
from .tag import Tag
|
|
20
21
|
from ._wrapper import ProtoWrapper, ProtoWrapperBase
|
|
@@ -37,6 +38,8 @@ class Geometry(ProtoWrapperBase):
|
|
|
37
38
|
"Geometry ID."
|
|
38
39
|
name: str
|
|
39
40
|
"Geometry name."
|
|
41
|
+
status: GeometryStatus
|
|
42
|
+
"The status of the geometry."
|
|
40
43
|
|
|
41
44
|
_proto: geometrypb.Geometry
|
|
42
45
|
|
|
@@ -47,29 +50,18 @@ class Geometry(ProtoWrapperBase):
|
|
|
47
50
|
"""
|
|
48
51
|
return timestamp_to_datetime(self._proto.create_time)
|
|
49
52
|
|
|
50
|
-
|
|
53
|
+
@property
|
|
54
|
+
def update_time(self) -> datetime:
|
|
51
55
|
"""
|
|
52
|
-
|
|
56
|
+
The time the geometry was last updated.
|
|
53
57
|
"""
|
|
54
|
-
return
|
|
58
|
+
return timestamp_to_datetime(self._proto.update_time)
|
|
55
59
|
|
|
56
|
-
def
|
|
60
|
+
def project(self) -> "Project":
|
|
57
61
|
"""
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
Parameters
|
|
61
|
-
----------
|
|
62
|
-
modification : Modification
|
|
63
|
-
The modification to apply to the geometry. If the modification type is
|
|
64
|
-
`MODIFICATION_TYPE_CREATE_FEATURE`, and the feature is a `farfield`, the
|
|
65
|
-
geometry will be automatically subtracted from the farfield.
|
|
62
|
+
Get the project this geometry belongs to.
|
|
66
63
|
"""
|
|
67
|
-
|
|
68
|
-
geometry_id=self.id,
|
|
69
|
-
modification=modification,
|
|
70
|
-
request_id=str(uuid4()),
|
|
71
|
-
)
|
|
72
|
-
get_default_client().ModifyGeometry(req)
|
|
64
|
+
return lc.get_project(ProjectID(self._proto.project_id))
|
|
73
65
|
|
|
74
66
|
def copy(self, name: str = "") -> "Geometry":
|
|
75
67
|
"""
|
|
@@ -136,7 +128,7 @@ class Geometry(ProtoWrapperBase):
|
|
|
136
128
|
create_proto.half_sphere.CopyFrom(shape._to_proto()) # type: ignore
|
|
137
129
|
else:
|
|
138
130
|
raise TypeError(f"Unsupported shape for farfield: {type(shape)}")
|
|
139
|
-
self.
|
|
131
|
+
self._modify(
|
|
140
132
|
modification=gpb.Modification(
|
|
141
133
|
mod_type=gpb.Modification.MODIFICATION_TYPE_CREATE_FEATURE,
|
|
142
134
|
feature=gpb.Feature(
|
|
@@ -153,8 +145,21 @@ class Geometry(ProtoWrapperBase):
|
|
|
153
145
|
def undo(self) -> None:
|
|
154
146
|
"""
|
|
155
147
|
Undo the last modification to the geometry.
|
|
156
|
-
|
|
157
|
-
|
|
148
|
+
|
|
149
|
+
Examples
|
|
150
|
+
--------
|
|
151
|
+
>>> # Initialize create a farfield
|
|
152
|
+
>>> geometry.add_farfield(
|
|
153
|
+
... lc.params.geometry.shapes.Sphere(radius=2.0, center=Vector3(0.0, 0.0, 0.0))
|
|
154
|
+
... )
|
|
155
|
+
>>> # Undo the last modification
|
|
156
|
+
>>> geometry.undo()
|
|
157
|
+
>>> # Re-create a bigger farfield with a different center
|
|
158
|
+
>>> geometry.add_farfield(
|
|
159
|
+
... lc.params.geometry.shapes.Sphere(radius=3.0, center=Vector3(1.0, 1.0, 1.0))
|
|
160
|
+
... )
|
|
161
|
+
"""
|
|
162
|
+
self._modify(
|
|
158
163
|
modification=gpb.Modification(
|
|
159
164
|
mod_type=gpb.Modification.MODIFICATION_TYPE_UNDO,
|
|
160
165
|
)
|
|
@@ -164,7 +169,7 @@ class Geometry(ProtoWrapperBase):
|
|
|
164
169
|
"""
|
|
165
170
|
Redo the last modification to the geometry.
|
|
166
171
|
"""
|
|
167
|
-
self.
|
|
172
|
+
self._modify(
|
|
168
173
|
modification=gpb.Modification(
|
|
169
174
|
mod_type=gpb.Modification.MODIFICATION_TYPE_REDO,
|
|
170
175
|
)
|
|
@@ -181,7 +186,7 @@ class Geometry(ProtoWrapperBase):
|
|
|
181
186
|
new_name : str
|
|
182
187
|
The new name for the feature.
|
|
183
188
|
"""
|
|
184
|
-
self.
|
|
189
|
+
self._modify(
|
|
185
190
|
modification=gpb.Modification(
|
|
186
191
|
mod_type=gpb.Modification.MODIFICATION_TYPE_RENAME_FEATURE,
|
|
187
192
|
feature=gpb.Feature(
|
|
@@ -200,7 +205,7 @@ class Geometry(ProtoWrapperBase):
|
|
|
200
205
|
feature_id : str
|
|
201
206
|
The ID of the feature to delete.
|
|
202
207
|
"""
|
|
203
|
-
self.
|
|
208
|
+
self._modify(
|
|
204
209
|
modification=gpb.Modification(
|
|
205
210
|
mod_type=gpb.Modification.MODIFICATION_TYPE_DELETE_FEATURE,
|
|
206
211
|
feature=gpb.Feature(
|
|
@@ -218,7 +223,7 @@ class Geometry(ProtoWrapperBase):
|
|
|
218
223
|
tag_names : list[str]
|
|
219
224
|
The names of the tags to delete.
|
|
220
225
|
"""
|
|
221
|
-
self.
|
|
226
|
+
self._modify(
|
|
222
227
|
modification=gpb.Modification(
|
|
223
228
|
mod_type=gpb.Modification.MODIFICATION_TYPE_DELETE_TAGS,
|
|
224
229
|
delete_tags=gpb.DeleteTags(
|
|
@@ -265,6 +270,7 @@ class Geometry(ProtoWrapperBase):
|
|
|
265
270
|
)
|
|
266
271
|
)
|
|
267
272
|
if res.finished:
|
|
273
|
+
self.refresh()
|
|
268
274
|
return res.ok, list(res.issues)
|
|
269
275
|
jitter = random.uniform(0.5, 1.5)
|
|
270
276
|
time.sleep(2 + jitter)
|
|
@@ -314,7 +320,7 @@ class Geometry(ProtoWrapperBase):
|
|
|
314
320
|
new_name : str
|
|
315
321
|
The new name for the tag.
|
|
316
322
|
"""
|
|
317
|
-
self.
|
|
323
|
+
self._modify(
|
|
318
324
|
modification=gpb.Modification(
|
|
319
325
|
mod_type=gpb.Modification.MODIFICATION_TYPE_RENAME_TAG,
|
|
320
326
|
rename_tag=gpb.RenameTag(
|
|
@@ -346,7 +352,7 @@ class Geometry(ProtoWrapperBase):
|
|
|
346
352
|
else:
|
|
347
353
|
raise TypeError("entities must be of type Volume or Surface")
|
|
348
354
|
|
|
349
|
-
self.
|
|
355
|
+
self._modify(
|
|
350
356
|
modification=gpb.Modification(
|
|
351
357
|
mod_type=gpb.Modification.MODIFICATION_TYPE_DELETE_TAG,
|
|
352
358
|
delete_tag=gpb.DeleteTag(
|
|
@@ -377,7 +383,7 @@ class Geometry(ProtoWrapperBase):
|
|
|
377
383
|
else:
|
|
378
384
|
raise TypeError("entities must be of type Volume or Surface")
|
|
379
385
|
|
|
380
|
-
self.
|
|
386
|
+
self._modify(
|
|
381
387
|
modification=gpb.Modification(
|
|
382
388
|
mod_type=gpb.Modification.MODIFICATION_TYPE_UPDATE_TAG,
|
|
383
389
|
create_or_update_tag=gpb.CreateOrUpdateTag(
|
|
@@ -439,7 +445,25 @@ class Geometry(ProtoWrapperBase):
|
|
|
439
445
|
]
|
|
440
446
|
return surfaces, volumes
|
|
441
447
|
|
|
442
|
-
def
|
|
448
|
+
def _modify(self, modification: gpb.Modification) -> None:
|
|
449
|
+
"""
|
|
450
|
+
Apply a modification to the geometry.
|
|
451
|
+
|
|
452
|
+
Parameters
|
|
453
|
+
----------
|
|
454
|
+
modification : Modification
|
|
455
|
+
The modification to apply to the geometry. If the modification type is
|
|
456
|
+
`MODIFICATION_TYPE_CREATE_FEATURE`, and the feature is a `farfield`, the
|
|
457
|
+
geometry will be automatically subtracted from the farfield.
|
|
458
|
+
"""
|
|
459
|
+
req = geometrypb.ModifyGeometryRequest(
|
|
460
|
+
geometry_id=self.id,
|
|
461
|
+
modification=modification,
|
|
462
|
+
request_id=str(uuid4()),
|
|
463
|
+
)
|
|
464
|
+
get_default_client().ModifyGeometry(req)
|
|
465
|
+
|
|
466
|
+
def _list_features(
|
|
443
467
|
self,
|
|
444
468
|
) -> list[gpb.Feature]:
|
|
445
469
|
"""
|
|
@@ -458,7 +482,7 @@ class Geometry(ProtoWrapperBase):
|
|
|
458
482
|
)
|
|
459
483
|
return list(res.features)
|
|
460
484
|
|
|
461
|
-
def
|
|
485
|
+
def _list_feature_issues(
|
|
462
486
|
self,
|
|
463
487
|
) -> list[gpb.FeatureIssues]:
|
|
464
488
|
"""
|
|
@@ -478,6 +502,14 @@ class Geometry(ProtoWrapperBase):
|
|
|
478
502
|
)
|
|
479
503
|
return list(res.features_issues)
|
|
480
504
|
|
|
505
|
+
def refresh(self) -> None:
|
|
506
|
+
"""
|
|
507
|
+
Refresh the geometry status.
|
|
508
|
+
"""
|
|
509
|
+
req = geometrypb.GetGeometryRequest(geometry_id=self.id)
|
|
510
|
+
res: geometrypb.GetGeometryResponse = get_default_client().GetGeometry(req)
|
|
511
|
+
self._proto = res.geometry
|
|
512
|
+
|
|
481
513
|
|
|
482
514
|
def get_geometry(id: str) -> Geometry:
|
|
483
515
|
"""
|
|
@@ -87,7 +87,7 @@ class GeometryVersion(ProtoWrapperBase):
|
|
|
87
87
|
]
|
|
88
88
|
return surfaces, volumes
|
|
89
89
|
|
|
90
|
-
def
|
|
90
|
+
def _list_features(
|
|
91
91
|
self,
|
|
92
92
|
) -> list[gpb.Feature]:
|
|
93
93
|
"""
|
|
@@ -106,7 +106,7 @@ class GeometryVersion(ProtoWrapperBase):
|
|
|
106
106
|
)
|
|
107
107
|
return list(res.features)
|
|
108
108
|
|
|
109
|
-
def
|
|
109
|
+
def _list_feature_issues(
|
|
110
110
|
self,
|
|
111
111
|
) -> list[gpb.FeatureIssues]:
|
|
112
112
|
"""
|
luminarycloud/mesh.py
CHANGED
|
@@ -11,8 +11,9 @@ from ._helpers._wait_for_mesh import wait_for_mesh
|
|
|
11
11
|
from ._proto.api.v0.luminarycloud.mesh import mesh_pb2 as meshpb
|
|
12
12
|
from ._wrapper import ProtoWrapper, ProtoWrapperBase
|
|
13
13
|
from .enum import MeshStatus
|
|
14
|
-
from .types import MeshID, ProjectID
|
|
15
14
|
from .geometry_version import GeometryVersion, get_geometry_version
|
|
15
|
+
from .meshing.metadata import MeshMetadata
|
|
16
|
+
from .types import MeshID, ProjectID
|
|
16
17
|
|
|
17
18
|
if TYPE_CHECKING:
|
|
18
19
|
from .project import Project
|
|
@@ -122,6 +123,12 @@ class Mesh(ProtoWrapperBase):
|
|
|
122
123
|
)
|
|
123
124
|
get_default_client().DeleteMesh(req)
|
|
124
125
|
|
|
126
|
+
def get_metadata(self) -> MeshMetadata:
|
|
127
|
+
"""
|
|
128
|
+
Get the metadata for this mesh.
|
|
129
|
+
"""
|
|
130
|
+
return get_mesh_metadata(self.id)
|
|
131
|
+
|
|
125
132
|
|
|
126
133
|
def get_mesh(id: MeshID) -> Mesh:
|
|
127
134
|
"""
|
|
@@ -137,9 +144,9 @@ def get_mesh(id: MeshID) -> Mesh:
|
|
|
137
144
|
return Mesh(res.mesh)
|
|
138
145
|
|
|
139
146
|
|
|
140
|
-
def get_mesh_metadata(id: MeshID) ->
|
|
147
|
+
def get_mesh_metadata(id: MeshID) -> MeshMetadata:
|
|
141
148
|
"""
|
|
142
|
-
Returns the mesh metadata
|
|
149
|
+
Returns the mesh metadata for the mesh with the given ID.
|
|
143
150
|
|
|
144
151
|
Parameters
|
|
145
152
|
----------
|
|
@@ -149,4 +156,4 @@ def get_mesh_metadata(id: MeshID) -> meshpb.MeshMetadata:
|
|
|
149
156
|
res: meshpb.GetMeshMetadataResponse = get_default_client().GetMeshMetadata(
|
|
150
157
|
meshpb.GetMeshMetadataRequest(id=id)
|
|
151
158
|
)
|
|
152
|
-
return res.mesh_metadata
|
|
159
|
+
return MeshMetadata(res.mesh_metadata)
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
from ..._proto.api.v0.luminarycloud.mesh import mesh_pb2 as meshpb
|
|
2
|
+
from ..._wrapper import ProtoWrapper, ProtoWrapperBase
|
|
3
|
+
from ...types import Vector3
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@ProtoWrapper(meshpb.MeshMetadata.MeshStats)
|
|
7
|
+
class MeshStats(ProtoWrapperBase):
|
|
8
|
+
"""Contains stats about a part of a mesh."""
|
|
9
|
+
|
|
10
|
+
n_points: int
|
|
11
|
+
"The number of points."
|
|
12
|
+
n_faces: int
|
|
13
|
+
"The number of faces."
|
|
14
|
+
n_cvs: int
|
|
15
|
+
"The number of control volumes."
|
|
16
|
+
min_coord: Vector3
|
|
17
|
+
"The minimum coordinate."
|
|
18
|
+
max_coord: Vector3
|
|
19
|
+
"The maximum coordinate."
|
|
20
|
+
|
|
21
|
+
_proto: meshpb.MeshMetadata.MeshStats
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
@ProtoWrapper(meshpb.MeshMetadata.Boundary)
|
|
25
|
+
class BoundaryMetadata(ProtoWrapperBase):
|
|
26
|
+
"""Represents a Mesh object."""
|
|
27
|
+
|
|
28
|
+
name: str
|
|
29
|
+
"The name of this mesh boundary."
|
|
30
|
+
stats: MeshStats
|
|
31
|
+
"The stats for this mesh boundary."
|
|
32
|
+
|
|
33
|
+
_proto: meshpb.MeshMetadata.Boundary
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
@ProtoWrapper(meshpb.MeshMetadata.Zone)
|
|
37
|
+
class ZoneMetadata(ProtoWrapperBase):
|
|
38
|
+
"""Contains info about a zone in a mesh."""
|
|
39
|
+
|
|
40
|
+
name: str
|
|
41
|
+
"The name of this mesh zone."
|
|
42
|
+
stats: MeshStats
|
|
43
|
+
"The stats for this mesh zone."
|
|
44
|
+
boundaries: list[BoundaryMetadata]
|
|
45
|
+
"The boundaries in this mesh zone."
|
|
46
|
+
|
|
47
|
+
_proto: meshpb.MeshMetadata.Zone
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
@ProtoWrapper(meshpb.MeshMetadata)
|
|
51
|
+
class MeshMetadata(ProtoWrapperBase):
|
|
52
|
+
"""Contains info about a Mesh."""
|
|
53
|
+
|
|
54
|
+
zones: list[ZoneMetadata]
|
|
55
|
+
"The zones in this mesh."
|
|
56
|
+
|
|
57
|
+
_proto: meshpb.MeshMetadata
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# Copyright 2023-2024 Luminary Cloud, Inc. All Rights Reserved.
|
|
2
|
+
from datetime import datetime
|
|
3
|
+
|
|
4
|
+
from ._client import get_default_client
|
|
5
|
+
from ._helpers._timestamp_to_datetime import timestamp_to_datetime
|
|
6
|
+
from ._helpers.named_variables import _named_variables_from_proto
|
|
7
|
+
from ._helpers.warnings import experimental
|
|
8
|
+
from ._proto.api.v0.luminarycloud.named_variable_set import (
|
|
9
|
+
named_variable_set_pb2 as namedvariablepb,
|
|
10
|
+
)
|
|
11
|
+
from ._wrapper import ProtoWrapper, ProtoWrapperBase
|
|
12
|
+
from .types import ProjectID, NamedVariableSetID
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@experimental
|
|
16
|
+
@ProtoWrapper(namedvariablepb.NamedVariableSet)
|
|
17
|
+
class NamedVariableSet(ProtoWrapperBase):
|
|
18
|
+
"""
|
|
19
|
+
Represents a named variable set object.
|
|
20
|
+
|
|
21
|
+
Note: This class is experimental and may change in the future.
|
|
22
|
+
|
|
23
|
+
Attributes
|
|
24
|
+
----------
|
|
25
|
+
id : NamedVariableSetID
|
|
26
|
+
Named variable set ID.
|
|
27
|
+
project_id : ProjectID
|
|
28
|
+
ID of the project containing this named variable set.
|
|
29
|
+
name : str
|
|
30
|
+
Name of the named variable set.
|
|
31
|
+
create_time : datetime
|
|
32
|
+
Time the named variable set was created.
|
|
33
|
+
update_time : datetime
|
|
34
|
+
Time the named variable set was last updated.
|
|
35
|
+
|
|
36
|
+
Examples
|
|
37
|
+
--------
|
|
38
|
+
>>> named_variable_set = lc.get_named_variable_set(NamedVariableSetID("123"))
|
|
39
|
+
>>> named_variable_set.name = "My Named Variable Set"
|
|
40
|
+
>>> named_variable_set["x"] = 1.0
|
|
41
|
+
>>> named_variable_set["custom_expression"] = "x + 1"
|
|
42
|
+
>>> named_variable_set.save()
|
|
43
|
+
"""
|
|
44
|
+
|
|
45
|
+
id: NamedVariableSetID
|
|
46
|
+
"Named variable set ID."
|
|
47
|
+
project_id: ProjectID
|
|
48
|
+
"ID of the project containing this simulation."
|
|
49
|
+
|
|
50
|
+
_proto: namedvariablepb.NamedVariableSet
|
|
51
|
+
|
|
52
|
+
@property
|
|
53
|
+
def name(self) -> str:
|
|
54
|
+
"""Name of the named variable set."""
|
|
55
|
+
return self._proto.name
|
|
56
|
+
|
|
57
|
+
@name.setter
|
|
58
|
+
def name(self, value: str) -> None:
|
|
59
|
+
self._proto.name = value
|
|
60
|
+
|
|
61
|
+
@property
|
|
62
|
+
def create_time(self) -> datetime:
|
|
63
|
+
return timestamp_to_datetime(self._proto.create_time)
|
|
64
|
+
|
|
65
|
+
@property
|
|
66
|
+
def update_time(self) -> datetime:
|
|
67
|
+
return timestamp_to_datetime(self._proto.update_time)
|
|
68
|
+
|
|
69
|
+
def save(self) -> None:
|
|
70
|
+
"""Save the named variable set."""
|
|
71
|
+
req = namedvariablepb.UpdateNamedVariableSetRequest(
|
|
72
|
+
id=self.id,
|
|
73
|
+
name=self._proto.name,
|
|
74
|
+
named_variables=self._get_named_variables(),
|
|
75
|
+
)
|
|
76
|
+
res: namedvariablepb.UpdateNamedVariableSetResponse = (
|
|
77
|
+
get_default_client().UpdateNamedVariableSet(req)
|
|
78
|
+
)
|
|
79
|
+
self._proto = res.named_variable_set
|
|
80
|
+
self._named_variables = None
|
|
81
|
+
|
|
82
|
+
def refresh(self) -> None:
|
|
83
|
+
"""Refresh the named variable set."""
|
|
84
|
+
self._proto = get_named_variable_set(self.id)._proto
|
|
85
|
+
self._named_variables = None
|
|
86
|
+
|
|
87
|
+
def delete(self) -> None:
|
|
88
|
+
"""Delete the named variable set. This is irreversible."""
|
|
89
|
+
req = namedvariablepb.DeleteNamedVariableSetRequest(id=self.id)
|
|
90
|
+
get_default_client().DeleteNamedVariableSet(req)
|
|
91
|
+
|
|
92
|
+
def __getitem__(self, key: str) -> float | str:
|
|
93
|
+
return self._get_named_variables()[key]
|
|
94
|
+
|
|
95
|
+
def __setitem__(self, key: str, value: float | str) -> None:
|
|
96
|
+
self._get_named_variables()[key] = value
|
|
97
|
+
|
|
98
|
+
def __delitem__(self, key: str) -> None:
|
|
99
|
+
del self._get_named_variables()[key]
|
|
100
|
+
|
|
101
|
+
def __contains__(self, key: str) -> bool:
|
|
102
|
+
return key in self._get_named_variables()
|
|
103
|
+
|
|
104
|
+
def _get_named_variables(self) -> dict[str, float | str]:
|
|
105
|
+
if self._named_variables is None:
|
|
106
|
+
self._named_variables = _named_variables_from_proto(self._proto.named_variables)
|
|
107
|
+
return self._named_variables
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
def get_named_variable_set(id: NamedVariableSetID) -> NamedVariableSet:
|
|
111
|
+
"""
|
|
112
|
+
Retrieve a specific named variable set by ID.
|
|
113
|
+
|
|
114
|
+
Parameters
|
|
115
|
+
----------
|
|
116
|
+
id : str
|
|
117
|
+
Named variable set ID.
|
|
118
|
+
"""
|
|
119
|
+
req = namedvariablepb.GetNamedVariableSetRequest(id=id)
|
|
120
|
+
res: namedvariablepb.GetNamedVariableSetResponse = get_default_client().GetNamedVariableSet(req)
|
|
121
|
+
return NamedVariableSet(res.named_variable_set)
|
|
@@ -16,6 +16,7 @@ from ..enum import (
|
|
|
16
16
|
Vector3Component,
|
|
17
17
|
VolumeReductionType,
|
|
18
18
|
)
|
|
19
|
+
from .._helpers import CodeRepr
|
|
19
20
|
|
|
20
21
|
|
|
21
22
|
# CalculationType enum comes from the simulation protobuf, but that's just a copy-paste of the
|
|
@@ -29,7 +30,7 @@ def _proto_calc_type(calc_type: CalculationType) -> feoutputpb.CalculationType.V
|
|
|
29
30
|
|
|
30
31
|
|
|
31
32
|
@dataclass
|
|
32
|
-
class TrailingAverageConfig:
|
|
33
|
+
class TrailingAverageConfig(CodeRepr):
|
|
33
34
|
"""Configuration for a trailing average calculation of an OutputDefinition."""
|
|
34
35
|
|
|
35
36
|
averaging_iterations: int = 0
|
|
@@ -37,7 +38,7 @@ class TrailingAverageConfig:
|
|
|
37
38
|
|
|
38
39
|
|
|
39
40
|
@dataclass
|
|
40
|
-
class ConvergenceMonitoringConfig:
|
|
41
|
+
class ConvergenceMonitoringConfig(CodeRepr):
|
|
41
42
|
"""Configuration for a convergence monitoring calculation of an OutputDefinition."""
|
|
42
43
|
|
|
43
44
|
averaging_iterations: int = 0
|
|
@@ -47,7 +48,7 @@ class ConvergenceMonitoringConfig:
|
|
|
47
48
|
|
|
48
49
|
|
|
49
50
|
@dataclass
|
|
50
|
-
class OutputDefinitionInclusions:
|
|
51
|
+
class OutputDefinitionInclusions(CodeRepr):
|
|
51
52
|
"""Specifies which values should be calculated for an OutputDefinition."""
|
|
52
53
|
|
|
53
54
|
base_value: bool = True
|
|
@@ -101,7 +102,7 @@ class OutputDefinitionInclusions:
|
|
|
101
102
|
|
|
102
103
|
|
|
103
104
|
@dataclass
|
|
104
|
-
class SurfaceAverageOutputDefinition:
|
|
105
|
+
class SurfaceAverageOutputDefinition(CodeRepr):
|
|
105
106
|
"""An output that is calculated as an average over surfaces."""
|
|
106
107
|
|
|
107
108
|
id: str = ""
|
|
@@ -161,7 +162,7 @@ class SurfaceAverageOutputDefinition:
|
|
|
161
162
|
|
|
162
163
|
|
|
163
164
|
@dataclass
|
|
164
|
-
class ForceOutputDefinition:
|
|
165
|
+
class ForceOutputDefinition(CodeRepr):
|
|
165
166
|
"""A force or moment output."""
|
|
166
167
|
|
|
167
168
|
id: str = ""
|
|
@@ -223,7 +224,7 @@ class ForceOutputDefinition:
|
|
|
223
224
|
|
|
224
225
|
|
|
225
226
|
@dataclass
|
|
226
|
-
class ResidualOutputDefinition:
|
|
227
|
+
class ResidualOutputDefinition(CodeRepr):
|
|
227
228
|
"""Configuration of simulation residuals."""
|
|
228
229
|
|
|
229
230
|
id: str = ""
|
|
@@ -262,7 +263,7 @@ class ResidualOutputDefinition:
|
|
|
262
263
|
|
|
263
264
|
|
|
264
265
|
@dataclass
|
|
265
|
-
class InnerIterationOutputDefinition:
|
|
266
|
+
class InnerIterationOutputDefinition(CodeRepr):
|
|
266
267
|
"""The presence of this definition enables reporting of inner iteration counts for transient simulations."""
|
|
267
268
|
|
|
268
269
|
id: str = ""
|
|
@@ -289,7 +290,7 @@ class InnerIterationOutputDefinition:
|
|
|
289
290
|
|
|
290
291
|
|
|
291
292
|
@dataclass
|
|
292
|
-
class PointProbeOutputDefinition:
|
|
293
|
+
class PointProbeOutputDefinition(CodeRepr):
|
|
293
294
|
"""An output that is calculated at specific points in the domain."""
|
|
294
295
|
|
|
295
296
|
id: str = ""
|
|
@@ -332,7 +333,7 @@ class PointProbeOutputDefinition:
|
|
|
332
333
|
|
|
333
334
|
|
|
334
335
|
@dataclass
|
|
335
|
-
class VolumeReductionOutputDefinition:
|
|
336
|
+
class VolumeReductionOutputDefinition(CodeRepr):
|
|
336
337
|
"""An output that is calculated as an aggregation over volumes."""
|
|
337
338
|
|
|
338
339
|
id: str = ""
|
|
@@ -384,7 +385,7 @@ class VolumeReductionOutputDefinition:
|
|
|
384
385
|
|
|
385
386
|
|
|
386
387
|
@dataclass
|
|
387
|
-
class DerivedOutputDefinition:
|
|
388
|
+
class DerivedOutputDefinition(CodeRepr):
|
|
388
389
|
"""An output that is expressed as a function of other output definitions."""
|
|
389
390
|
|
|
390
391
|
@dataclass
|