luminarycloud 0.15.2__py3-none-any.whl → 0.15.4__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.
Files changed (255) hide show
  1. luminarycloud/__init__.py +1 -0
  2. luminarycloud/_helpers/_code_representation.py +44 -19
  3. luminarycloud/_helpers/_create_simulation.py +2 -0
  4. luminarycloud/_helpers/_entity_identifier.py +6 -0
  5. luminarycloud/_helpers/named_variables.py +6 -15
  6. luminarycloud/_helpers/warnings/experimental.py +6 -2
  7. luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2.py +103 -81
  8. luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2.pyi +37 -1
  9. luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2_grpc.py +33 -0
  10. luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2_grpc.pyi +10 -0
  11. luminarycloud/_proto/api/v0/luminarycloud/physics_ai/physics_ai_pb2.py +45 -15
  12. luminarycloud/_proto/api/v0/luminarycloud/physics_ai/physics_ai_pb2.pyi +104 -22
  13. luminarycloud/_proto/api/v0/luminarycloud/simulation/simulation_pb2.py +46 -46
  14. luminarycloud/_proto/api/v0/luminarycloud/simulation/simulation_pb2.pyi +7 -1
  15. luminarycloud/_proto/api/v0/luminarycloud/simulation_template/simulation_template_pb2.py +12 -12
  16. luminarycloud/_proto/api/v0/luminarycloud/simulation_template/simulation_template_pb2.pyi +10 -2
  17. luminarycloud/_proto/api/v0/luminarycloud/vis/vis_pb2.py +221 -143
  18. luminarycloud/_proto/api/v0/luminarycloud/vis/vis_pb2.pyi +154 -7
  19. luminarycloud/_proto/api/v0/luminarycloud/vis/vis_pb2_grpc.py +33 -0
  20. luminarycloud/_proto/api/v0/luminarycloud/vis/vis_pb2_grpc.pyi +10 -0
  21. luminarycloud/_proto/assistant/assistant_pb2.py +92 -71
  22. luminarycloud/_proto/assistant/assistant_pb2.pyi +58 -11
  23. luminarycloud/_proto/assistant/assistant_pb2_grpc.py +47 -13
  24. luminarycloud/_proto/assistant/assistant_pb2_grpc.pyi +18 -6
  25. luminarycloud/_proto/client/simulation_pb2.py +373 -324
  26. luminarycloud/_proto/client/simulation_pb2.pyi +123 -3
  27. luminarycloud/_proto/fvm/solver_results_pb2.py +25 -11
  28. luminarycloud/_proto/fvm/solver_results_pb2.pyi +24 -1
  29. luminarycloud/_proto/geometry/geometry_pb2.py +64 -63
  30. luminarycloud/_proto/geometry/geometry_pb2.pyi +11 -3
  31. luminarycloud/_proto/hexmesh/hexmesh_pb2.py +18 -14
  32. luminarycloud/_proto/hexmesh/hexmesh_pb2.pyi +14 -4
  33. luminarycloud/_proto/named_variable_set/named_variable_set_pb2.py +49 -0
  34. luminarycloud/_proto/named_variable_set/named_variable_set_pb2.pyi +53 -0
  35. luminarycloud/_proto/namedvariableset/namedvariableset_pb2.py +49 -0
  36. luminarycloud/_proto/namedvariableset/namedvariableset_pb2.pyi +53 -0
  37. luminarycloud/_proto/quantity/quantity_pb2.py +8 -5
  38. luminarycloud/_proto/quantity/quantity_pb2.pyi +2 -0
  39. luminarycloud/_wrapper.py +26 -7
  40. luminarycloud/enum/__init__.py +5 -0
  41. luminarycloud/enum/physics_ai_lifecycle_state.py +30 -0
  42. luminarycloud/enum/quantity_type.py +43 -0
  43. luminarycloud/enum/vis_enums.py +6 -2
  44. luminarycloud/geometry.py +46 -2
  45. luminarycloud/meshing/mesh_generation_params.py +6 -5
  46. luminarycloud/meshing/sizing_strategy/sizing_strategies.py +2 -1
  47. luminarycloud/named_variable_set.py +13 -6
  48. luminarycloud/params/enum/_enum_wrappers.py +68 -0
  49. luminarycloud/params/simulation/_lib.py +1 -1
  50. luminarycloud/params/simulation/adaptive_mesh_refinement/boundary_layer_profile_.py +5 -6
  51. luminarycloud/params/simulation/adaptive_mesh_refinement_.py +6 -7
  52. luminarycloud/params/simulation/adjoint_.py +3 -4
  53. luminarycloud/params/simulation/basic/gravity/gravity_off_.py +3 -4
  54. luminarycloud/params/simulation/basic/gravity/gravity_on_.py +3 -4
  55. luminarycloud/params/simulation/basic/gravity_.py +3 -4
  56. luminarycloud/params/simulation/body_frame_.py +3 -4
  57. luminarycloud/params/simulation/entity_relationships/volume_material_relationship_.py +9 -6
  58. luminarycloud/params/simulation/entity_relationships/volume_physics_relationship_.py +9 -6
  59. luminarycloud/params/simulation/entity_relationships_.py +3 -4
  60. luminarycloud/params/simulation/general_.py +3 -4
  61. luminarycloud/params/simulation/material/fluid/boussinesq_approximation/boussinesq_off_.py +3 -4
  62. luminarycloud/params/simulation/material/fluid/boussinesq_approximation/boussinesq_on_.py +5 -6
  63. luminarycloud/params/simulation/material/fluid/boussinesq_approximation_.py +3 -4
  64. luminarycloud/params/simulation/material/fluid/material_model/ideal_gas_.py +5 -6
  65. luminarycloud/params/simulation/material/fluid/material_model/incompressible_fluid_.py +4 -5
  66. luminarycloud/params/simulation/material/fluid/material_model/incompressible_fluid_with_energy_.py +5 -6
  67. luminarycloud/params/simulation/material/fluid/material_model_.py +3 -4
  68. luminarycloud/params/simulation/material/fluid/thermal_conductivity_model/prescribed_conductivity_.py +4 -5
  69. luminarycloud/params/simulation/material/fluid/thermal_conductivity_model/prescribed_prandtl_number_.py +4 -5
  70. luminarycloud/params/simulation/material/fluid/thermal_conductivity_model/temperature_dependent_conductivity_.py +3 -4
  71. luminarycloud/params/simulation/material/fluid/thermal_conductivity_model_.py +3 -4
  72. luminarycloud/params/simulation/material/fluid/viscosity_model/prescribed_viscosity_.py +4 -5
  73. luminarycloud/params/simulation/material/fluid/viscosity_model/sutherland_.py +6 -7
  74. luminarycloud/params/simulation/material/fluid/viscosity_model/temperature_dependent_viscosity_.py +3 -4
  75. luminarycloud/params/simulation/material/fluid/viscosity_model_.py +3 -4
  76. luminarycloud/params/simulation/material/material_fluid_.py +4 -5
  77. luminarycloud/params/simulation/material/material_solid_.py +6 -7
  78. luminarycloud/params/simulation/material_entity_.py +6 -5
  79. luminarycloud/params/simulation/monitor_plane_.py +4 -5
  80. luminarycloud/params/simulation/motion_data/frame_transforms/no_transform_.py +3 -4
  81. luminarycloud/params/simulation/motion_data/frame_transforms/rotational_transform_.py +3 -4
  82. luminarycloud/params/simulation/motion_data/frame_transforms/translational_transform_.py +3 -4
  83. luminarycloud/params/simulation/motion_data/frame_transforms_.py +3 -4
  84. luminarycloud/params/simulation/motion_data/motion_type/constant_angular_motion_.py +3 -4
  85. luminarycloud/params/simulation/motion_data/motion_type/constant_translation_motion_.py +3 -4
  86. luminarycloud/params/simulation/motion_data/motion_type_.py +3 -4
  87. luminarycloud/params/simulation/motion_data_.py +3 -4
  88. luminarycloud/params/simulation/multi_physics_coupling_options_.py +3 -4
  89. luminarycloud/params/simulation/output_.py +3 -4
  90. luminarycloud/params/simulation/particle_group/particle_group_type/actuator_disk/actuator_disk_orientation_selection/actuator_disk_specify_normal_vector_.py +3 -4
  91. luminarycloud/params/simulation/particle_group/particle_group_type/actuator_disk/actuator_disk_orientation_selection/actuator_disk_specify_rotation_angles_.py +3 -4
  92. luminarycloud/params/simulation/particle_group/particle_group_type/actuator_disk/actuator_disk_orientation_selection_.py +3 -4
  93. luminarycloud/params/simulation/particle_group/particle_group_type/actuator_disk_.py +5 -6
  94. luminarycloud/params/simulation/particle_group/particle_group_type/actuator_line_.py +3 -4
  95. luminarycloud/params/simulation/particle_group/particle_group_type/probe_points_.py +3 -4
  96. luminarycloud/params/simulation/particle_group/particle_group_type/source_points_.py +3 -4
  97. luminarycloud/params/simulation/particle_group/particle_group_type_.py +3 -4
  98. luminarycloud/params/simulation/particle_group_.py +3 -4
  99. luminarycloud/params/simulation/physics/fluid/adjoint_controls_fluid_.py +4 -5
  100. luminarycloud/params/simulation/physics/fluid/basic_fluid_.py +3 -4
  101. luminarycloud/params/simulation/physics/fluid/boundary_conditions/farfield_.py +9 -10
  102. luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet/fan_curve_inlet_.py +5 -6
  103. luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet/mach_inlet_.py +5 -6
  104. luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet/mass_flow_inlet_.py +4 -5
  105. luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet/total_pressure_inlet_.py +4 -5
  106. luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet/velocity_components_inlet_.py +4 -5
  107. luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet/velocity_magnitude_inlet_.py +5 -6
  108. luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet_.py +4 -5
  109. luminarycloud/params/simulation/physics/fluid/boundary_conditions/outlet/outlet_strategy/fan_curve_outlet_.py +5 -6
  110. luminarycloud/params/simulation/physics/fluid/boundary_conditions/outlet/outlet_strategy/outlet_pressure_.py +4 -5
  111. luminarycloud/params/simulation/physics/fluid/boundary_conditions/outlet/outlet_strategy/outlet_target_corrected_mass_flow_rate_.py +7 -8
  112. luminarycloud/params/simulation/physics/fluid/boundary_conditions/outlet/outlet_strategy/outlet_target_mass_flow_rate_.py +5 -6
  113. luminarycloud/params/simulation/physics/fluid/boundary_conditions/outlet/outlet_strategy_.py +3 -4
  114. luminarycloud/params/simulation/physics/fluid/boundary_conditions/outlet_.py +3 -4
  115. luminarycloud/params/simulation/physics/fluid/boundary_conditions/symmetry_.py +3 -4
  116. luminarycloud/params/simulation/physics/fluid/boundary_conditions/turbulence_boundary_conditions_.py +9 -10
  117. luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/energy/prescribed_heat_flux_.py +4 -5
  118. luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/energy/prescribed_temperature_.py +4 -5
  119. luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/momentum/no_slip_.py +4 -5
  120. luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/momentum/slip_.py +3 -4
  121. luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/momentum/wall_model_.py +4 -5
  122. luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/wall_energy_.py +3 -4
  123. luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/wall_momentum_.py +3 -4
  124. luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall_.py +3 -4
  125. luminarycloud/params/simulation/physics/fluid/boundary_conditions_fluid_.py +3 -4
  126. luminarycloud/params/simulation/physics/fluid/initialization/fluid_existing_solution_.py +3 -4
  127. luminarycloud/params/simulation/physics/fluid/initialization/fluid_farfield_values_.py +3 -4
  128. luminarycloud/params/simulation/physics/fluid/initialization/fluid_prescribed_values_.py +5 -6
  129. luminarycloud/params/simulation/physics/fluid/initialization/turbulence_initialization_.py +9 -10
  130. luminarycloud/params/simulation/physics/fluid/initialization_fluid_.py +3 -4
  131. luminarycloud/params/simulation/physics/fluid/physical_behavior/blade_element_airfoil_data_.py +4 -5
  132. luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_disk_model/actuator_disk_blade_element_.py +3 -4
  133. luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_disk_model/actuator_disk_radial_distribution_.py +6 -7
  134. luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_disk_model/actuator_disk_uniform_thrust_.py +4 -5
  135. luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_disk_model/fan_curve_internal_.py +4 -5
  136. luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_disk_model_.py +3 -4
  137. luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_line_model/actuator_line_blade_element_.py +3 -4
  138. luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_line_model_.py +3 -4
  139. luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/blade_element_params_.py +5 -6
  140. luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/particle_source_model/general_acceleration_source_.py +3 -4
  141. luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/particle_source_model/general_mass_source_.py +4 -5
  142. luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/particle_source_model_.py +3 -4
  143. luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model_.py +3 -4
  144. luminarycloud/params/simulation/physics/fluid/physical_behavior_.py +3 -4
  145. luminarycloud/params/simulation/physics/fluid/porous_behavior_.py +4 -5
  146. luminarycloud/params/simulation/physics/fluid/solution_controls/fluid_relaxation_method/fluid_explicit_relaxation_.py +3 -4
  147. luminarycloud/params/simulation/physics/fluid/solution_controls/fluid_relaxation_method/fluid_implicit_relaxation/robust_startup/robust_startup_off_.py +3 -4
  148. luminarycloud/params/simulation/physics/fluid/solution_controls/fluid_relaxation_method/fluid_implicit_relaxation/robust_startup/robust_startup_on_.py +4 -5
  149. luminarycloud/params/simulation/physics/fluid/solution_controls/fluid_relaxation_method/fluid_implicit_relaxation/robust_startup_.py +3 -4
  150. luminarycloud/params/simulation/physics/fluid/solution_controls/fluid_relaxation_method/fluid_implicit_relaxation_.py +8 -9
  151. luminarycloud/params/simulation/physics/fluid/solution_controls/fluid_relaxation_method_.py +3 -4
  152. luminarycloud/params/simulation/physics/fluid/solution_controls/pseudo_time_step_method/cfl_based_.py +4 -5
  153. luminarycloud/params/simulation/physics/fluid/solution_controls/pseudo_time_step_method/fixed_pseudo_time_step_.py +4 -5
  154. luminarycloud/params/simulation/physics/fluid/solution_controls/pseudo_time_step_method_.py +3 -4
  155. luminarycloud/params/simulation/physics/fluid/solution_controls_fluid_.py +3 -4
  156. luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme/ec2_.py +3 -4
  157. luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme/fds_.py +5 -6
  158. luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme/ld2_.py +5 -6
  159. luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme/rhie_chow_.py +4 -5
  160. luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme_.py +3 -4
  161. luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme_order/first_order_.py +3 -4
  162. luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme_order/second_order_.py +8 -9
  163. luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme_order_.py +3 -4
  164. luminarycloud/params/simulation/physics/fluid/spatial_discretization_fluid_.py +4 -5
  165. luminarycloud/params/simulation/physics/fluid/turbulence/des_formulation/ddes_.py +3 -4
  166. luminarycloud/params/simulation/physics/fluid/turbulence/des_formulation/ddes_vtm_.py +3 -4
  167. luminarycloud/params/simulation/physics/fluid/turbulence/des_formulation/iddes_.py +3 -4
  168. luminarycloud/params/simulation/physics/fluid/turbulence/des_formulation_.py +3 -4
  169. luminarycloud/params/simulation/physics/fluid/turbulence/komega_sst/constants/custom_komega_sst_constants_.py +16 -17
  170. luminarycloud/params/simulation/physics/fluid/turbulence/komega_sst/constants/default_komega_sst_constants_.py +3 -4
  171. luminarycloud/params/simulation/physics/fluid/turbulence/komega_sst/komega_sst_constants_.py +3 -4
  172. luminarycloud/params/simulation/physics/fluid/turbulence/komega_sst_.py +3 -4
  173. luminarycloud/params/simulation/physics/fluid/turbulence/spalart_allmaras/constants/custom_spalart_allmaras_constants_.py +15 -16
  174. luminarycloud/params/simulation/physics/fluid/turbulence/spalart_allmaras/constants/default_spalart_allmaras_constants_.py +3 -4
  175. luminarycloud/params/simulation/physics/fluid/turbulence/spalart_allmaras/spalart_allmaras_constants_.py +3 -4
  176. luminarycloud/params/simulation/physics/fluid/turbulence/spalart_allmaras_.py +3 -4
  177. luminarycloud/params/simulation/physics/fluid/turbulence/sub_grid_scale_model/amd_.py +4 -5
  178. luminarycloud/params/simulation/physics/fluid/turbulence/sub_grid_scale_model/sigma_.py +4 -5
  179. luminarycloud/params/simulation/physics/fluid/turbulence/sub_grid_scale_model/smagorinsky_.py +4 -5
  180. luminarycloud/params/simulation/physics/fluid/turbulence/sub_grid_scale_model/vreman_.py +4 -5
  181. luminarycloud/params/simulation/physics/fluid/turbulence/sub_grid_scale_model/wale_.py +4 -5
  182. luminarycloud/params/simulation/physics/fluid/turbulence/sub_grid_scale_model_.py +3 -4
  183. luminarycloud/params/simulation/physics/fluid/turbulence_.py +5 -6
  184. luminarycloud/params/simulation/physics/fluid_.py +7 -6
  185. luminarycloud/params/simulation/physics/heat/adjoint_controls_heat_.py +3 -4
  186. luminarycloud/params/simulation/physics/heat/boundary_conditions/heat_bc_convection_.py +5 -6
  187. luminarycloud/params/simulation/physics/heat/boundary_conditions/heat_bc_heat_flux_.py +4 -5
  188. luminarycloud/params/simulation/physics/heat/boundary_conditions/heat_bc_integrated_heat_flux_.py +4 -5
  189. luminarycloud/params/simulation/physics/heat/boundary_conditions/heat_bc_symmetry_.py +3 -4
  190. luminarycloud/params/simulation/physics/heat/boundary_conditions/heat_bc_temperature_.py +4 -5
  191. luminarycloud/params/simulation/physics/heat/boundary_conditions_heat_.py +3 -4
  192. luminarycloud/params/simulation/physics/heat/heat_source/heat_source_type/heat_source_type_power_.py +4 -5
  193. luminarycloud/params/simulation/physics/heat/heat_source/heat_source_type/heat_source_type_power_per_unit_of_volume_.py +4 -5
  194. luminarycloud/params/simulation/physics/heat/heat_source/heat_source_type_.py +3 -4
  195. luminarycloud/params/simulation/physics/heat/heat_source_.py +3 -4
  196. luminarycloud/params/simulation/physics/heat/initialization/heat_existing_solution_.py +3 -4
  197. luminarycloud/params/simulation/physics/heat/initialization/heat_prescribed_values_.py +4 -5
  198. luminarycloud/params/simulation/physics/heat/initialization_heat_.py +3 -4
  199. luminarycloud/params/simulation/physics/heat/solution_controls/heat_relaxation_method/heat_implicit_relaxation_.py +3 -4
  200. luminarycloud/params/simulation/physics/heat/solution_controls/heat_relaxation_method_.py +3 -4
  201. luminarycloud/params/simulation/physics/heat/solution_controls_heat_.py +3 -4
  202. luminarycloud/params/simulation/physics/heat/spatial_discretization_heat_.py +5 -6
  203. luminarycloud/params/simulation/physics/heat_.py +5 -5
  204. luminarycloud/params/simulation/physics/periodic_pair/periodicity_type/rotational_periodicity_.py +3 -4
  205. luminarycloud/params/simulation/physics/periodic_pair/periodicity_type/translational_periodicity_.py +3 -4
  206. luminarycloud/params/simulation/physics/periodic_pair/periodicity_type_.py +3 -4
  207. luminarycloud/params/simulation/physics/periodic_pair_.py +3 -4
  208. luminarycloud/params/simulation/physics/solution_controls/linear_solver_type/gauss_seidel_.py +3 -4
  209. luminarycloud/params/simulation/physics/solution_controls/linear_solver_type/krylov_amg_.py +4 -5
  210. luminarycloud/params/simulation/physics/solution_controls/linear_solver_type_.py +4 -5
  211. luminarycloud/params/simulation/physics_.py +6 -5
  212. luminarycloud/params/simulation/simulation_param_.py +3 -4
  213. luminarycloud/params/simulation/sliding_interfaces_.py +3 -4
  214. luminarycloud/params/simulation/surface_name_.py +3 -4
  215. luminarycloud/params/simulation/time/compute_statistics/compute_statistics_off_.py +3 -4
  216. luminarycloud/params/simulation/time/compute_statistics/compute_statistics_on_.py +3 -4
  217. luminarycloud/params/simulation/time/compute_statistics_.py +3 -4
  218. luminarycloud/params/simulation/time/time_marching/time_explicit_.py +3 -4
  219. luminarycloud/params/simulation/time/time_marching/time_implicit_.py +3 -4
  220. luminarycloud/params/simulation/time/time_marching_.py +3 -4
  221. luminarycloud/params/simulation/time/time_step_ramp/time_step_ramp_off_.py +3 -4
  222. luminarycloud/params/simulation/time/time_step_ramp/time_step_ramp_on_.py +4 -5
  223. luminarycloud/params/simulation/time/time_step_ramp_.py +3 -4
  224. luminarycloud/params/simulation/time_.py +4 -5
  225. luminarycloud/params/simulation/volume_entity_.py +6 -5
  226. luminarycloud/physics_ai/__init__.py +2 -0
  227. luminarycloud/physics_ai/architectures.py +42 -8
  228. luminarycloud/physics_ai/inference.py +0 -2
  229. luminarycloud/physics_ai/models.py +44 -15
  230. luminarycloud/pipeline_util/dictable.py +27 -0
  231. luminarycloud/pipeline_util/yaml.py +55 -0
  232. luminarycloud/pipelines/__init__.py +29 -0
  233. luminarycloud/pipelines/core.py +225 -0
  234. luminarycloud/pipelines/operators.py +197 -0
  235. luminarycloud/pipelines/parameters.py +42 -0
  236. luminarycloud/project.py +60 -9
  237. luminarycloud/simulation.py +35 -4
  238. luminarycloud/simulation_param.py +16 -12
  239. luminarycloud/simulation_template.py +31 -12
  240. luminarycloud/solution.py +1 -1
  241. luminarycloud/types/__init__.py +2 -0
  242. luminarycloud/types/adfloat.py +50 -8
  243. luminarycloud/types/ids.py +2 -0
  244. luminarycloud/types/vector3.py +2 -1
  245. luminarycloud/vis/__init__.py +12 -5
  246. luminarycloud/vis/data_extraction.py +546 -0
  247. luminarycloud/vis/display.py +64 -8
  248. luminarycloud/vis/filters.py +183 -43
  249. luminarycloud/vis/interactive_scene.py +2 -1
  250. luminarycloud/vis/primitives.py +38 -0
  251. luminarycloud/vis/vis_util.py +56 -0
  252. luminarycloud/vis/visualization.py +241 -71
  253. {luminarycloud-0.15.2.dist-info → luminarycloud-0.15.4.dist-info}/METADATA +3 -1
  254. {luminarycloud-0.15.2.dist-info → luminarycloud-0.15.4.dist-info}/RECORD +255 -240
  255. {luminarycloud-0.15.2.dist-info → luminarycloud-0.15.4.dist-info}/WHEEL +0 -0
@@ -308,37 +308,41 @@ class SimulationParam(_SimulationParam):
308
308
  def __repr__(self) -> str:
309
309
  return pformat(vars(self), compact=True, sort_dicts=True)
310
310
 
311
- def to_code(self, hide_defaults: bool = True) -> str:
311
+ def to_code(self, hide_defaults: bool = True, use_tmp_objs: bool = True) -> str:
312
312
  """
313
313
  Returns the python code that generates an identical SimulationParam object.
314
- This is a verbose representation that does not make use of helper functions like
314
+ This is an automatic representation that does not make use of helper functions like
315
315
  assign_material and assign_physics.
316
316
  Parameters with default values are omitted by default, with hide_defaults=False, code will
317
317
  also be generated for those parameters.
318
+ By default the idiom used to populate lists and maps is to create a temporary object and
319
+ then append or insert, respectively. The alternative, using [] to access items, is used if
320
+ use_tmp_objs=False.
318
321
  """
319
- code = """## NOTE: This is a verbose representation of a SimulationParam object as the
320
- ## code that creates an identical object. The verbosity is intended to facilitate
321
- ## the discovery of available parameters.
322
+ code = """## NOTE: This is an automatic representation of a SimulationParam object as the
323
+ ## code that creates (from scratch) an identical object. As such, some parts do
324
+ ## not match 1 to 1 with hand-written examples.
322
325
  import luminarycloud
323
- from luminarycloud import *
324
326
  from luminarycloud.types import Vector3
327
+ from luminarycloud.tables import RectilinearTable
325
328
  from luminarycloud.enum import *
326
329
  from luminarycloud.params.enum import *
327
- from luminarycloud.params import simulation as params
330
+ from luminarycloud.params import simulation as sim_params
331
+ from luminarycloud import outputs, SimulationParam, EntityIdentifier
328
332
 
329
333
 
330
334
  """
331
- return code + self._to_code_helper("obj", hide_defaults).replace(
335
+ return code + self._to_code_helper("obj", hide_defaults, use_tmp_objs).replace(
332
336
  "luminarycloud.simulation_param.SimulationParam()", "SimulationParam()", 1
333
337
  )
334
338
 
335
339
  def find_parameter(self, parameter: str) -> None:
336
340
  """
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.
341
+ Searches the full output of "to_code(False, False)" for occurrences of "parameter" and prints
342
+ the lines with matches. This is a helper function to assist users in finding, for example,
343
+ how to change farfield conditions, material properties, etc.
340
344
  """
341
- for i, line in enumerate(self.to_code(False).split("\n")):
345
+ for i, line in enumerate(self.to_code(False, False).split("\n")):
342
346
  if parameter.lower() in line.lower():
343
347
  print(f"line {i}: {line}")
344
348
 
@@ -2,7 +2,7 @@
2
2
  from datetime import datetime
3
3
  from os import PathLike
4
4
  from copy import deepcopy
5
- from typing import Optional, Union, overload
5
+ from typing import Optional, overload
6
6
  from difflib import Differ
7
7
 
8
8
  from .enum import (
@@ -76,6 +76,7 @@ class SimulationTemplate(ProtoWrapperBase):
76
76
  *,
77
77
  name: Optional[str] = None,
78
78
  parameters: Optional[SimulationParam | PathLike] = None,
79
+ copy_from: "Optional[SimulationTemplate | SimulationTemplateID | str]" = None,
79
80
  ) -> None:
80
81
  """
81
82
  Update simulation template.
@@ -84,19 +85,23 @@ class SimulationTemplate(ProtoWrapperBase):
84
85
  ----------
85
86
  name : str, optional
86
87
  New project name.
87
- parameters : SimulationParam or PathLike
88
+ parameters : SimulationParam or PathLike, optional
88
89
  New complete simulation parameters object or path to local JSON file containing
89
90
  simulation parameters. In the former case, the input argument is modified to reflect
90
91
  changes applied by the backend (server), for example due to presets. Any differences
91
92
  between input and result are printed on screen.
93
+ copy_from : SimulationTemplate or SimulationTemplateID or str, optional
94
+ Simulation template to copy. If provided, it will be deep-copied into this simulation
95
+ template. Can pass a SimulationTemplate object or an ID of the template to copy.
92
96
  """
93
- return self._update(name=name, parameters=parameters)
97
+ return self._update(name=name, parameters=parameters, copy_from=copy_from)
94
98
 
95
99
  def _update(
96
100
  self,
97
101
  *,
98
102
  name: Optional[str] = None,
99
103
  parameters: Optional[SimulationParam | clientpb.SimulationParam | PathLike] = None,
104
+ copy_from: "Optional[SimulationTemplate | SimulationTemplateID | str]" = None,
100
105
  ) -> None:
101
106
  """
102
107
  Update simulation template. See `update()` for more details.
@@ -124,21 +129,31 @@ class SimulationTemplate(ProtoWrapperBase):
124
129
 
125
130
  req.parameters.CopyFrom(param_proto)
126
131
 
132
+ if copy_from is not None:
133
+ if isinstance(copy_from, SimulationTemplate):
134
+ req.copy_from = copy_from.id
135
+ elif isinstance(copy_from, str):
136
+ req.copy_from = copy_from
137
+ else:
138
+ raise ValueError(f"Invalid copy_from argument: {copy_from}")
139
+
127
140
  res: simtemplatepb.UpdateSimulationTemplateResponse = (
128
141
  get_default_client().UpdateSimulationTemplate(req)
129
142
  )
130
143
  self._proto = res.simulation_template
131
144
 
132
145
  def print_diff(
133
- old: Union[clientpb.SimulationParam, SimulationParam],
134
- new: Union[clientpb.SimulationParam, SimulationParam],
146
+ old: clientpb.SimulationParam | SimulationParam,
147
+ new: clientpb.SimulationParam | SimulationParam,
135
148
  ) -> None:
136
149
  diffs = list(Differ().compare(str(old).split("\n"), str(new).split("\n")))
137
150
  has_diffs = False
138
151
  for diff in diffs:
139
152
  if diff.startswith("-") or diff.startswith("+"):
140
153
  if not has_diffs:
141
- print("The input parameters have been modified:\n")
154
+ print(
155
+ "The given parameters have been modified, both in memory and server-side, due to presets. The modifications:\n"
156
+ )
142
157
  has_diffs = True
143
158
  print(diff)
144
159
 
@@ -159,7 +174,10 @@ class SimulationTemplate(ProtoWrapperBase):
159
174
  get_default_client().DeleteSimulationTemplate(req)
160
175
 
161
176
  def get_parameters(self) -> SimulationParam:
162
- return self.get_simulation_param()
177
+ """
178
+ Returns a copy of the simulation parameters associated with this template.
179
+ """
180
+ return SimulationParam.from_proto(self._proto.parameters)
163
181
 
164
182
  @deprecated(
165
183
  "Use get_parameters() instead. This method will be removed in a future release.",
@@ -168,7 +186,7 @@ class SimulationTemplate(ProtoWrapperBase):
168
186
  """
169
187
  Returns a copy of the simulation parameters associated with this template.
170
188
  """
171
- return SimulationParam.from_proto(self._proto.parameters)
189
+ return self.get_parameters()
172
190
 
173
191
  def list_tables(
174
192
  self,
@@ -460,20 +478,21 @@ class SimulationTemplate(ProtoWrapperBase):
460
478
 
461
479
  def to_code(self, hide_defaults: bool = True) -> str:
462
480
  """
463
- Returns the python code that generates an identical SimulationTemplate object.
481
+ Returns the python code that generates (from scratch) an identical SimulationTemplate object.
464
482
  By default parameters with default values are omitted, this change be changed with
465
483
  hide_defaults=False.
466
484
  """
467
- param_code = self.get_simulation_param().to_code(hide_defaults)
485
+ param_code = self.get_parameters().to_code(hide_defaults)
468
486
  code, param_code = param_code.split("\n\n\n")
469
487
 
470
488
  # Modify the header note included by SimulationParam.to_code.
471
489
  code = code.replace("SimulationParam", "SimulationTemplate")
472
490
  code += "\n\n\n"
473
- code += '# Create a new simulation template or modify the "Setup" template.\n'
491
+ code += '# Create a new simulation template or modify the one that is synced with the UI "Setup" tab.\n'
492
+ code += "# TODO(USER): Replace ... with project ID, or create a project.\n"
474
493
  code += 'project = get_project("...")\n'
475
494
  code += f"# template = project.create_simulation_template(name={self.name})\n"
476
- code += "template = project.list_simulation_templates()[0]\n\n"
495
+ code += "template = project.list_simulation_templates()[0] # Setup template\n\n"
477
496
 
478
497
  code += "# Define the simulation parameters.\n"
479
498
  code += param_code
luminarycloud/solution.py CHANGED
@@ -38,7 +38,7 @@ class Solution(ProtoWrapperBase):
38
38
  "Solution ID."
39
39
  simulation_id: SimulationID
40
40
  "Simulation ID of parent"
41
- iteration: str
41
+ iteration: int
42
42
  "Iteration index of the solution."
43
43
  physical_time: float
44
44
  "The physical time, in seconds, of the solution iteration (for transient simulations)."
@@ -12,6 +12,8 @@ from .ids import (
12
12
  from .adfloat import (
13
13
  FirstOrderAdFloat as FirstOrderAdFloat,
14
14
  SecondOrderAdFloat as SecondOrderAdFloat,
15
+ Expression as Expression,
16
+ LcFloat as LcFloat,
15
17
  )
16
18
  from .vector3 import (
17
19
  Vector3 as Vector3,
@@ -1,10 +1,10 @@
1
1
  from abc import ABCMeta
2
- from typing import Any
3
- from .._proto.base.base_pb2 import AdFloatType, FirstOrderAdType, SecondOrderAdType
2
+ from typing import Any, Union
3
+ from .._proto.base.base_pb2 import AdFloatType, ExpressionType, FirstOrderAdType, SecondOrderAdType
4
4
 
5
5
 
6
6
  class AdFloat(float, metaclass=ABCMeta):
7
- """An immutable float with adjoints/tangents"""
7
+ """An immutable float with adjoints/tangents or an expression"""
8
8
 
9
9
  pass
10
10
 
@@ -110,8 +110,47 @@ class SecondOrderAdFloat(AdFloat):
110
110
  )
111
111
 
112
112
 
113
- def _to_ad_proto(value: float) -> AdFloatType:
114
- """Convert a float to an AdFloatType proto."""
113
+ class Expression:
114
+ """An expression or value that can be evaluated or used in evaluations."""
115
+
116
+ _value: float
117
+ _expression: str
118
+
119
+ def __init__(self, expression: str):
120
+ if not expression:
121
+ raise ValueError("Expression cannot be empty")
122
+ self._value = 0.0
123
+ self._expression = expression
124
+
125
+ @property
126
+ def expression(self) -> str:
127
+ return self._expression
128
+
129
+ @property
130
+ def value(self) -> float:
131
+ return self._value
132
+
133
+ def _to_proto(self) -> AdFloatType:
134
+ return AdFloatType(variable=ExpressionType(value=self.value, expression=self.expression))
135
+
136
+ @staticmethod
137
+ def _from_proto(proto: AdFloatType) -> "Expression":
138
+ expr = object.__new__(Expression) # Create a new instance without calling __init__
139
+ expr._value = proto.variable.value
140
+ expr._expression = proto.variable.expression
141
+ return expr
142
+
143
+ def __eq__(self, other: Any) -> bool:
144
+ if not isinstance(other, Expression):
145
+ return False
146
+ return self._value == other._value and self._expression == other._expression
147
+
148
+
149
+ LcFloat = Union[float, FirstOrderAdFloat, SecondOrderAdFloat, Expression]
150
+
151
+
152
+ def _to_ad_proto(value: LcFloat) -> AdFloatType:
153
+ """Convert an LcFloat to an AdFloatType proto."""
115
154
  if isinstance(value, FirstOrderAdFloat):
116
155
  return AdFloatType(
117
156
  first_order=FirstOrderAdType(
@@ -128,18 +167,21 @@ def _to_ad_proto(value: float) -> AdFloatType:
128
167
  adjoint=[_to_ad_proto(a).first_order for a in value.adjoint],
129
168
  )
130
169
  )
170
+ elif isinstance(value, Expression):
171
+ return value._to_proto()
131
172
  return AdFloatType(value=float(value))
132
173
 
133
174
 
134
- def _from_ad_proto(proto: AdFloatType) -> float:
135
- """Convert an AdFloatType proto to a float."""
175
+ def _from_ad_proto(proto: AdFloatType) -> LcFloat:
176
+ """Convert an AdFloatType proto to an LcFloat."""
136
177
  if proto.HasField("first_order"):
137
178
  return FirstOrderAdFloat._from_proto(proto.first_order)
138
179
  elif proto.HasField("second_order"):
139
180
  return SecondOrderAdFloat._from_proto(proto.second_order)
140
181
  elif proto.HasField("value"):
141
182
  return float(proto.value)
142
-
183
+ elif proto.HasField("variable"):
184
+ return Expression._from_proto(proto)
143
185
  # An empty proto evaluates to 0.0
144
186
  if not proto.ListFields():
145
187
  return 0.0
@@ -10,4 +10,6 @@ SimulationTemplateID = NewType("SimulationTemplateID", str)
10
10
  GeometryFeatureID = NewType("GeometryFeatureID", str)
11
11
  NamedVariableSetID = NewType("NamedVariableSetID", str)
12
12
  PhysicsAiArchitectureID = NewType("PhysicsAiArchitectureID", str)
13
+ PhysicsAiArchitectureVersionID = NewType("PhysicsAiArchitectureVersionID", str)
13
14
  PhysicsAiModelID = NewType("PhysicsAiModelID", str)
15
+ PhysicsAiModelVersionID = NewType("PhysicsAiModelVersionID", str)
@@ -8,10 +8,11 @@ from .adfloat import (
8
8
  _to_ad_proto as _float_to_ad_proto,
9
9
  _from_ad_proto as _float_from_ad_proto,
10
10
  )
11
+ from ..pipeline_util.dictable import PipelineDictable
11
12
 
12
13
 
13
14
  @dataclass
14
- class Vector3:
15
+ class Vector3(PipelineDictable):
15
16
  """Represents a 3-dimensional vector.
16
17
 
17
18
  Supports direct component access, indexing, iteration, and conversion to numpy arrays.
@@ -1,7 +1,6 @@
1
1
  from .visualization import (
2
2
  RenderOutput as RenderOutput,
3
3
  Scene as Scene,
4
- ColorMapPreset as ColorMapPreset,
5
4
  EntityType as EntityType,
6
5
  list_renders as list_renders,
7
6
  list_quantities as list_quantities,
@@ -9,12 +8,15 @@ from .visualization import (
9
8
  LookAtCamera as LookAtCamera,
10
9
  )
11
10
 
11
+ from .primitives import (
12
+ Plane as Plane,
13
+ Box as Box,
14
+ )
15
+
12
16
  from .filters import (
13
17
  Slice as Slice,
14
18
  PlaneClip as PlaneClip,
15
19
  BoxClip as BoxClip,
16
- Plane as Plane,
17
- Box as Box,
18
20
  FixedSizeVectorGlyphs as FixedSizeVectorGlyphs,
19
21
  ScaledVectorGlyphs as ScaledVectorGlyphs,
20
22
  RakeStreamlines as RakeStreamlines,
@@ -24,13 +26,18 @@ from .filters import (
24
26
  Isosurface as Isosurface,
25
27
  )
26
28
 
29
+ from .data_extraction import (
30
+ IntersectionCurve as IntersectionCurve,
31
+ DataExtractor as DataExtractor,
32
+ ExtractOutput as ExtractOutput,
33
+ list_data_extracts as list_data_extracts,
34
+ )
35
+
27
36
  from .display import (
28
37
  Field as Field,
29
38
  DataRange as DataRange,
30
39
  ColorMap as ColorMap,
31
40
  ColorMapAppearance as ColorMapAppearance,
32
- Representation as Representation,
33
- FieldComponent as FieldComponent,
34
41
  DisplayAttributes as DisplayAttributes,
35
42
  )
36
43