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
@@ -0,0 +1,301 @@
1
+ # Copyright 2025 Luminary Cloud, Inc. All Rights Reserved.
2
+ from dataclasses import dataclass, field
3
+ from datetime import datetime
4
+ from typing import TYPE_CHECKING, List, Optional, Union
5
+
6
+ from google.protobuf.json_format import ParseDict
7
+ from google.protobuf.struct_pb2 import Struct
8
+
9
+ from .._client import get_default_client
10
+ from .._proto.api.v0.luminarycloud.physics_ai import physics_ai_pb2 as physaipb
11
+ from .._wrapper import ProtoWrapper, ProtoWrapperBase
12
+ from ..enum import QuantityType
13
+
14
+ if TYPE_CHECKING:
15
+ from ..solution import Solution
16
+
17
+
18
+ @dataclass
19
+ class ParameterDefinition:
20
+ """
21
+ Defines a parameter in a dataset's parameter schema.
22
+
23
+ .. warning:: This feature is experimental and may change or be removed without notice.
24
+
25
+ Parameters
26
+ ----------
27
+ name : str
28
+ Parameter name (e.g., "stream_velocity", "air_density").
29
+ type : str
30
+ Parameter type: "scalar" for single values, "vector" for multi-dimensional values.
31
+ dimension : int
32
+ Number of dimensions: 1 for scalar, N for N-dimensional vector.
33
+ default_reference : list[float], optional
34
+ Default reference value(s) for normalization. Length must match dimension if provided.
35
+ description : str, optional
36
+ Description of the parameter.
37
+
38
+ Examples
39
+ --------
40
+ >>> # Scalar parameter
41
+ >>> air_density = ParameterDefinition(name="air_density", type="scalar", dimension=1, default_reference=[1.225])
42
+ >>> # Vector parameter (3D velocity)
43
+ >>> velocity = ParameterDefinition(name="inlet_velocity", type="vector", dimension=3, default_reference=[30.0, 0.0, 0.0])
44
+ >>> # 1D velocity (stream velocity magnitude)
45
+ >>> stream_velocity = ParameterDefinition(name="stream_velocity", type="vector", dimension=1, default_reference=[148.28])
46
+ """
47
+
48
+ name: str
49
+ type: str # "scalar" or "vector"
50
+ dimension: int = 1
51
+ default_reference: List[float] = field(default_factory=list)
52
+ description: str = ""
53
+
54
+
55
+ @dataclass(kw_only=True)
56
+ class ExportConfig:
57
+ """
58
+ Configuration for exporting Physics AI dataset cases.
59
+
60
+ .. warning:: This feature is experimental and may change or be removed without notice.
61
+
62
+ Parameters
63
+ ----------
64
+ exclude_surfaces : List[str], optional
65
+ Raw mesh boundary names to exclude from export.
66
+ exclude_tags : List[str], optional
67
+ Geometry tag names to exclude. These are resolved to mesh boundary names
68
+ server-side based on the geometry tags.
69
+ fill_holes : float, optional
70
+ Size threshold for filling holes in the surface mesh. Default is 0 (no filling).
71
+ single_precision : bool, optional
72
+ If True, export floating point fields in single precision. Default is True.
73
+ process_volume : bool, optional
74
+ If True, include volume mesh data in the export. Default is False.
75
+ surface_fields_to_keep : List[QuantityType], optional
76
+ Surface fields to include in the export. If empty, all fields are kept.
77
+ volume_fields_to_keep : List[QuantityType], optional
78
+ Volume fields to include in the export. If empty, all fields are kept.
79
+ """
80
+
81
+ exclude_surfaces: List[str] = field(default_factory=list)
82
+ exclude_tags: List[str] = field(default_factory=list)
83
+ fill_holes: float = 0.0
84
+ single_precision: bool = True
85
+ process_volume: bool = False
86
+ surface_fields_to_keep: List[QuantityType] = field(default_factory=list)
87
+ volume_fields_to_keep: List[QuantityType] = field(default_factory=list)
88
+
89
+
90
+ @dataclass
91
+ class DatasetCaseInput:
92
+ """
93
+ Input for a case in a Physics AI dataset.
94
+
95
+ .. warning:: This feature is experimental and may change or be removed without notice.
96
+
97
+ Parameters
98
+ ----------
99
+ solution : Solution
100
+ The solution to include in the dataset.
101
+ params : dict, optional
102
+ Physics parameters for this case (e.g., {"alpha": 5.0, "stream_velocity": 50.0}).
103
+ These are used as conditioning inputs during training.
104
+ """
105
+
106
+ solution: "Solution"
107
+ params: dict = field(default_factory=dict)
108
+
109
+
110
+ @ProtoWrapper(physaipb.PhysicsAiDatasetCase)
111
+ class PhysicsAiDatasetCase(ProtoWrapperBase):
112
+ """
113
+ Represents a case in a Physics AI dataset.
114
+
115
+ .. warning:: This feature is experimental and may change or be removed without notice.
116
+ """
117
+
118
+ case_id: str
119
+ solution_id: str
120
+ simulation_id: str
121
+ _proto: physaipb.PhysicsAiDatasetCase
122
+
123
+
124
+ @ProtoWrapper(physaipb.PhysicsAiDataset)
125
+ class PhysicsAiDataset(ProtoWrapperBase):
126
+ """
127
+ Represents a Physics AI dataset containing training cases.
128
+
129
+ .. warning:: This feature is experimental and may change or be removed without notice.
130
+ """
131
+
132
+ id: str
133
+ created_by: str
134
+ name: str
135
+ description: str
136
+ is_locked: bool
137
+ creation_time: datetime
138
+ update_time: datetime
139
+ _proto: physaipb.PhysicsAiDataset
140
+
141
+
142
+ def create_dataset(
143
+ name: str,
144
+ cases: List[Union["Solution", DatasetCaseInput]],
145
+ export_config: Optional[ExportConfig] = None,
146
+ description: str = "",
147
+ parameter_schema: Optional[List[ParameterDefinition]] = None,
148
+ ) -> PhysicsAiDataset:
149
+ """
150
+ Create a Physics AI dataset from simulation solutions.
151
+
152
+ .. warning:: This feature is experimental and may change or be removed without notice.
153
+
154
+ Parameters
155
+ ----------
156
+ name : str
157
+ Name of the dataset
158
+ cases : List[Union[Solution, DatasetCaseInput]]
159
+ List of solutions or DatasetCaseInput objects. For simple cases, pass
160
+ Solution objects directly. For cases with physics parameters (e.g., alpha,
161
+ stream_velocity), wrap in DatasetCaseInput.
162
+ export_config : ExportConfig, optional
163
+ Export configuration. If not provided, uses defaults (single_precision=True).
164
+ description : str, optional
165
+ Description of the dataset
166
+ parameter_schema : List[ParameterDefinition], optional
167
+ List of parameter definitions for this dataset. Each parameter defines
168
+ the type, dimension, and optional default reference value.
169
+
170
+ Returns
171
+ -------
172
+ PhysicsAiDataset
173
+ The created dataset
174
+
175
+ Examples
176
+ --------
177
+ Simple usage with solutions (uses default export config):
178
+
179
+ >>> dataset = create_dataset(
180
+ ... name="my-dataset",
181
+ ... cases=[solution1, solution2, solution3],
182
+ ... parameter_schema=[
183
+ ... ParameterDefinition(name="stream_velocity", type="vector", dimension=1),
184
+ ... ],
185
+ ... )
186
+
187
+ With custom export config:
188
+
189
+ >>> dataset = create_dataset(
190
+ ... name="my-dataset",
191
+ ... cases=[solution1, solution2, solution3],
192
+ ... export_config=ExportConfig(
193
+ ... exclude_tags=["Farfield", "Symmetry"],
194
+ ... surface_fields_to_keep=[QuantityType.PRESSURE, QuantityType.WALL_SHEAR_STRESS],
195
+ ... ),
196
+ ... parameter_schema=[
197
+ ... ParameterDefinition(name="stream_velocity", type="vector", dimension=1, default_reference=[148.28]),
198
+ ... ParameterDefinition(name="air_density", type="scalar", dimension=1, default_reference=[0.38]),
199
+ ... ],
200
+ ... )
201
+
202
+ With physics parameters:
203
+
204
+ >>> dataset = create_dataset(
205
+ ... name="parametric-dataset",
206
+ ... cases=[
207
+ ... DatasetCaseInput(solution1, params={"alpha": 5.0}),
208
+ ... DatasetCaseInput(solution2, params={"alpha": 10.0}),
209
+ ... ],
210
+ ... export_config=ExportConfig(process_volume=True),
211
+ ... parameter_schema=[
212
+ ... ParameterDefinition(name="alpha", type="scalar", dimension=1),
213
+ ... ],
214
+ ... )
215
+ """
216
+ # Use default export config if not provided
217
+ if export_config is None:
218
+ export_config = ExportConfig()
219
+
220
+ # Build case inputs
221
+ case_inputs = []
222
+ for case in cases:
223
+ if isinstance(case, DatasetCaseInput):
224
+ solution = case.solution
225
+ params = case.params
226
+ else:
227
+ # It's a Solution object
228
+ solution = case
229
+ params = {}
230
+
231
+ case_input = physaipb.CreatePhysicsAiDatasetCaseInput(
232
+ solution_id=solution.id,
233
+ simulation_id=solution.simulation_id,
234
+ )
235
+ if params:
236
+ case_input.params.CopyFrom(ParseDict(params, Struct()))
237
+ case_inputs.append(case_input)
238
+
239
+ # Build export config proto from dataclass
240
+ export_config_proto = physaipb.GetSolutionDataPhysicsAIRequest(
241
+ exclude_surfaces=export_config.exclude_surfaces,
242
+ exclude_tags=export_config.exclude_tags,
243
+ fill_holes=export_config.fill_holes,
244
+ single_precision=export_config.single_precision,
245
+ process_volume=export_config.process_volume,
246
+ )
247
+ if export_config.surface_fields_to_keep:
248
+ export_config_proto.surface_fields_to_keep.extend(export_config.surface_fields_to_keep)
249
+ if export_config.volume_fields_to_keep:
250
+ export_config_proto.volume_fields_to_keep.extend(export_config.volume_fields_to_keep)
251
+
252
+ # Build parameter schema from list of ParameterDefinition
253
+ param_schema_proto = physaipb.ParameterSchema()
254
+ if parameter_schema:
255
+ for param_def in parameter_schema:
256
+ param_schema_proto.parameters.append(
257
+ physaipb.ParameterDefinition(
258
+ name=param_def.name,
259
+ type=param_def.type,
260
+ dimension=param_def.dimension,
261
+ default_reference=param_def.default_reference,
262
+ description=param_def.description,
263
+ )
264
+ )
265
+
266
+ req = physaipb.CreateDatasetRequest(
267
+ name=name,
268
+ description=description,
269
+ cases=case_inputs,
270
+ parameter_schema=param_schema_proto,
271
+ export_config=export_config_proto,
272
+ )
273
+
274
+ response = get_default_client().CreateDataset(req)
275
+ return PhysicsAiDataset(response.dataset)
276
+
277
+
278
+ def list_datasets() -> List[PhysicsAiDataset]:
279
+ """
280
+ List Physics AI datasets accessible to the current user.
281
+
282
+ Returns datasets created by the current user plus platform-curated datasets.
283
+
284
+ .. warning:: This feature is experimental and may change or be removed without notice.
285
+
286
+ Returns
287
+ -------
288
+ List[PhysicsAiDataset]
289
+ A list of accessible Physics AI datasets, ordered by creation time (newest first).
290
+
291
+ Examples
292
+ --------
293
+ List all datasets:
294
+
295
+ >>> datasets = list_datasets()
296
+ >>> for ds in datasets:
297
+ ... print(f"{ds.name}: {ds.id} (locked={ds.is_locked})")
298
+ """
299
+ req = physaipb.ListDatasetsRequest()
300
+ response = get_default_client().ListDatasets(req)
301
+ return [PhysicsAiDataset(dataset) for dataset in response.datasets]
@@ -1,20 +1,33 @@
1
1
  # Copyright 2025 Luminary Cloud, Inc. All Rights Reserved.
2
- from typing import List, Optional
2
+ from typing import List
3
3
  from datetime import datetime
4
4
 
5
5
  from .._client import get_default_client
6
6
  from .._proto.api.v0.luminarycloud.physics_ai import physics_ai_pb2 as physaipb
7
7
  from .._proto.base import base_pb2 as basepb
8
8
  from .._wrapper import ProtoWrapper, ProtoWrapperBase
9
- from ..types.ids import PhysicsAiArchitectureVersionID
9
+ from ..types.ids import PhysicsAiArchitectureVersionID, PhysicsAiTrainingJobID
10
+
11
+
12
+ def get_training_job(training_job_id: PhysicsAiTrainingJobID) -> "PhysicsAiTrainingJob":
13
+ """
14
+ Get a Physics AI training job by ID.
15
+
16
+ Args:
17
+ training_job_id: The ID of the training job to retrieve.
18
+
19
+ Returns:
20
+ The training job.
21
+ """
22
+ req = physaipb.GetTrainingJobRequest(training_job_id=training_job_id)
23
+ resp = get_default_client().GetTrainingJob(req)
24
+ return PhysicsAiTrainingJob(resp.training_job)
10
25
 
11
26
 
12
27
  @ProtoWrapper(physaipb.PhysicsAiTrainingJob)
13
28
  class PhysicsAiTrainingJob(ProtoWrapperBase):
14
29
  """
15
30
  Represents a Physics AI training job.
16
-
17
- .. warning:: This feature is experimental and may change or be removed without notice.
18
31
  """
19
32
 
20
33
  id: str
@@ -24,6 +37,7 @@ class PhysicsAiTrainingJob(ProtoWrapperBase):
24
37
  training_data_source_type: physaipb.TrainingDataSourceType
25
38
  training_description: str
26
39
  external_dataset_uri: str
40
+ dataset_id: str
27
41
  initialization_type: physaipb.ModelInitializationType
28
42
  base_model_version_id: str
29
43
  status: basepb.JobStatus
@@ -35,3 +49,35 @@ class PhysicsAiTrainingJob(ProtoWrapperBase):
35
49
 
36
50
  def get_status(self) -> str:
37
51
  return basepb.JobStatusType.Name(self.status.typ)
52
+
53
+ def cancel(self) -> None:
54
+ """
55
+ Cancel this training job.
56
+
57
+ This method requests cancellation of the training job. If the job is already
58
+ suspended or suspending, this is a no-op.
59
+ """
60
+ req = physaipb.CancelTrainingJobRequest(training_job_id=self.id)
61
+ get_default_client().CancelTrainingJob(req)
62
+
63
+
64
+ def list_training_jobs() -> List[PhysicsAiTrainingJob]:
65
+ """
66
+ List Physics AI training jobs for the current user.
67
+
68
+ Returns
69
+ -------
70
+ List[PhysicsAiTrainingJob]
71
+ A list of training jobs, ordered by creation time (newest first).
72
+
73
+ Examples
74
+ --------
75
+ List all training jobs:
76
+
77
+ >>> jobs = list_training_jobs()
78
+ >>> for job in jobs:
79
+ ... print(f"{job.id}: {job.get_status()}")
80
+ """
81
+ req = physaipb.ListTrainingJobsRequest()
82
+ response = get_default_client().ListTrainingJobs(req)
83
+ return [PhysicsAiTrainingJob(job) for job in response.training_jobs]
@@ -2,8 +2,12 @@
2
2
  from .core import (
3
3
  Pipeline as Pipeline,
4
4
  PipelineParameter as PipelineParameter,
5
+ stage as stage,
5
6
  # Stage base class, mainly exported for testing
6
7
  Stage as Stage,
8
+ # RunScript stage lives in core because it's a special snowflake
9
+ RunScript as RunScript,
10
+ StopRun as StopRun,
7
11
  )
8
12
 
9
13
  from .parameters import (
@@ -23,28 +27,36 @@ from .stages import (
23
27
  ReadGeometryOutputs as ReadGeometryOutputs,
24
28
  ReadMesh as ReadMesh,
25
29
  ReadMeshOutputs as ReadMeshOutputs,
26
- ModifyGeometry as ModifyGeometry,
27
- ModifyGeometryOutputs as ModifyGeometryOutputs,
28
30
  Mesh as Mesh,
29
31
  MeshOutputs as MeshOutputs,
32
+ WaitForMesh as WaitForMesh,
33
+ WaitForMeshOutputs as WaitForMeshOutputs,
30
34
  Simulate as Simulate,
31
35
  SimulateOutputs as SimulateOutputs,
32
36
  )
33
37
 
34
38
  from .arguments import (
35
39
  PipelineArgs as PipelineArgs,
40
+ PP_NAMED_VARIABLE_SET_ID as PP_NAMED_VARIABLE_SET_ID,
36
41
  ArgNamedVariableSet as ArgNamedVariableSet,
37
42
  )
38
43
 
44
+ from .flowables import (
45
+ FlowableType as FlowableType,
46
+ FlowableIOSchema as FlowableIOSchema,
47
+ )
48
+
39
49
  from .api import (
40
50
  create_pipeline as create_pipeline,
41
- list_pipelines as list_pipelines,
51
+ iterate_pipelines as iterate_pipelines,
42
52
  get_pipeline as get_pipeline,
43
53
  create_pipeline_job as create_pipeline_job,
44
54
  get_pipeline_job as get_pipeline_job,
45
- list_pipeline_jobs as list_pipeline_jobs,
55
+ iterate_pipeline_jobs as iterate_pipeline_jobs,
46
56
  PipelineJobRecord as PipelineJobRecord,
47
57
  PipelineRecord as PipelineRecord,
48
58
  PipelineJobRunRecord as PipelineJobRunRecord,
59
+ PipelineTaskRecord as PipelineTaskRecord,
60
+ StageDefinition as StageDefinition,
49
61
  LogLine as LogLine,
50
62
  )