luminarycloud 0.22.2__py3-none-any.whl → 0.23.0__py3-none-any.whl

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