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
@@ -107,6 +107,56 @@ MODEL_INITIALIZATION_TYPE_CHECKPOINT: ModelInitializationType.ValueType # 3
107
107
  """Initialize from checkpoint."""
108
108
  global___ModelInitializationType = ModelInitializationType
109
109
 
110
+ class ParameterDefinition(google.protobuf.message.Message):
111
+ """Structured definition of a parameter in a dataset's parameter schema."""
112
+
113
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
114
+
115
+ NAME_FIELD_NUMBER: builtins.int
116
+ TYPE_FIELD_NUMBER: builtins.int
117
+ DIMENSION_FIELD_NUMBER: builtins.int
118
+ DEFAULT_REFERENCE_FIELD_NUMBER: builtins.int
119
+ DESCRIPTION_FIELD_NUMBER: builtins.int
120
+ name: builtins.str
121
+ type: builtins.str
122
+ """"scalar" or "vector" """
123
+ dimension: builtins.int
124
+ """1 for scalar, N for N-dimensional vector"""
125
+ @property
126
+ def default_reference(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]:
127
+ """optional default normalization reference"""
128
+ description: builtins.str
129
+ """optional description"""
130
+ def __init__(
131
+ self,
132
+ *,
133
+ name: builtins.str = ...,
134
+ type: builtins.str = ...,
135
+ dimension: builtins.int = ...,
136
+ default_reference: collections.abc.Iterable[builtins.float] | None = ...,
137
+ description: builtins.str = ...,
138
+ ) -> None: ...
139
+ def ClearField(self, field_name: typing_extensions.Literal["default_reference", b"default_reference", "description", b"description", "dimension", b"dimension", "name", b"name", "type", b"type"]) -> None: ...
140
+
141
+ global___ParameterDefinition = ParameterDefinition
142
+
143
+ class ParameterSchema(google.protobuf.message.Message):
144
+ """Container for parameter definitions."""
145
+
146
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
147
+
148
+ PARAMETERS_FIELD_NUMBER: builtins.int
149
+ @property
150
+ def parameters(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ParameterDefinition]: ...
151
+ def __init__(
152
+ self,
153
+ *,
154
+ parameters: collections.abc.Iterable[global___ParameterDefinition] | None = ...,
155
+ ) -> None: ...
156
+ def ClearField(self, field_name: typing_extensions.Literal["parameters", b"parameters"]) -> None: ...
157
+
158
+ global___ParameterSchema = ParameterSchema
159
+
110
160
  class PhysicsAiArchitectureVersion(google.protobuf.message.Message):
111
161
  """A physics ai architecture version."""
112
162
 
@@ -304,7 +354,11 @@ class SurfaceGroup(google.protobuf.message.Message):
304
354
  global___SurfaceGroup = SurfaceGroup
305
355
 
306
356
  class GetSolutionDataPhysicsAIRequest(google.protobuf.message.Message):
307
- """Request message for download and process solutions for physics ai"""
357
+ """Request message for download and process solutions for physics ai.
358
+
359
+ Surfaces from exclude_tags are merged with exclude_surfaces to form the final
360
+ list of excluded surfaces.
361
+ """
308
362
 
309
363
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
310
364
 
@@ -332,11 +386,15 @@ class GetSolutionDataPhysicsAIRequest(google.protobuf.message.Message):
332
386
  SINGLE_PRECISION_FIELD_NUMBER: builtins.int
333
387
  INTERNAL_OPTIONS_FIELD_NUMBER: builtins.int
334
388
  EXPORT_SURFACE_GROUPS_FIELD_NUMBER: builtins.int
389
+ SKIP_TAR_CREATION_FIELD_NUMBER: builtins.int
390
+ EXCLUDE_TAGS_FIELD_NUMBER: builtins.int
335
391
  solution_id: builtins.str
336
392
  """Required. The globally unique identifier for the solution."""
337
393
  @property
338
394
  def exclude_surfaces(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
339
- """List of surfaces to exclude from surface solution during physics AI processing"""
395
+ """List of mesh boundary names to exclude from surface solution during physics AI processing.
396
+ See message-level comment for how this interacts with exclude_tags.
397
+ """
340
398
  fill_holes: builtins.float
341
399
  """Size threshold for filling holes in the surface mesh (0 or negative value means no filling)"""
342
400
  @property
@@ -354,7 +412,21 @@ class GetSolutionDataPhysicsAIRequest(google.protobuf.message.Message):
354
412
  """Internal options for physics AI processing only available for staff users."""
355
413
  @property
356
414
  def export_surface_groups(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SurfaceGroup]:
357
- """List of surface groups to export as individual STL files"""
415
+ """List of surface groups to export as individual STL files
416
+ Excluded surfaces will not appear in surface groups.
417
+ """
418
+ skip_tar_creation: builtins.bool
419
+ """If true, skip tar.gz creation and only produce folder output with individual files.
420
+ Internal use only - for dataset export where tar.gz is not needed.
421
+ """
422
+ @property
423
+ def exclude_tags(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
424
+ """List of geometry tag names (e.g., "Farfield") to exclude from surface solution.
425
+ Tags are resolved to mesh boundary names server-side. Returns an error if
426
+ exclude_tags is used on a simulation without geometry tags. Individual tags
427
+ that are not found are skipped gracefully to support heterogeneous datasets.
428
+ See message-level comment for how this interacts with exclude_surfaces.
429
+ """
358
430
  def __init__(
359
431
  self,
360
432
  *,
@@ -367,8 +439,10 @@ class GetSolutionDataPhysicsAIRequest(google.protobuf.message.Message):
367
439
  single_precision: builtins.bool = ...,
368
440
  internal_options: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
369
441
  export_surface_groups: collections.abc.Iterable[global___SurfaceGroup] | None = ...,
442
+ skip_tar_creation: builtins.bool = ...,
443
+ exclude_tags: collections.abc.Iterable[builtins.str] | None = ...,
370
444
  ) -> None: ...
371
- def ClearField(self, field_name: typing_extensions.Literal["exclude_surfaces", b"exclude_surfaces", "export_surface_groups", b"export_surface_groups", "fill_holes", b"fill_holes", "internal_options", b"internal_options", "process_volume", b"process_volume", "single_precision", b"single_precision", "solution_id", b"solution_id", "surface_fields_to_keep", b"surface_fields_to_keep", "volume_fields_to_keep", b"volume_fields_to_keep"]) -> None: ...
445
+ def ClearField(self, field_name: typing_extensions.Literal["exclude_surfaces", b"exclude_surfaces", "exclude_tags", b"exclude_tags", "export_surface_groups", b"export_surface_groups", "fill_holes", b"fill_holes", "internal_options", b"internal_options", "process_volume", b"process_volume", "single_precision", b"single_precision", "skip_tar_creation", b"skip_tar_creation", "solution_id", b"solution_id", "surface_fields_to_keep", b"surface_fields_to_keep", "volume_fields_to_keep", b"volume_fields_to_keep"]) -> None: ...
372
446
 
373
447
  global___GetSolutionDataPhysicsAIRequest = GetSolutionDataPhysicsAIRequest
374
448
 
@@ -378,16 +452,35 @@ class GetSolutionDataPhysicsAIResponse(google.protobuf.message.Message):
378
452
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
379
453
 
380
454
  FILE_FIELD_NUMBER: builtins.int
455
+ PHYSICS_AI_FILES_FIELD_NUMBER: builtins.int
456
+ PHYSICS_AI_FOLDER_URL_FIELD_NUMBER: builtins.int
381
457
  @property
382
458
  def file(self) -> luminarycloud._proto.api.v0.luminarycloud.common.common_pb2.File:
383
459
  """The processed solution data. Either a signed URL or a file ID."""
460
+ @property
461
+ def physics_ai_files(self) -> global___PhysicsAiDatasetCaseFiles:
462
+ """TODO: Need to implement operations/operation IDs for long-running processes.
463
+ Users should be able to poll for progress and then request the files/their location
464
+ rather than having synchronous blocking calls for potentially long-running exports.
465
+
466
+ Physics AI processed files. Contains individual files (merged_surfaces.vtp,
467
+ merged_surfaces.stl, etc.) that were generated during processing.
468
+ Internal use only - for server-side file operations.
469
+ """
470
+ physics_ai_folder_url: builtins.str
471
+ """GCS folder URL containing the physics AI processed files (e.g., "gs://bucket/path/").
472
+ Internal use only - for server-side file operations. Use with physics_ai_files
473
+ to construct full file paths: folder_url + file.name + "." + file.file_type
474
+ """
384
475
  def __init__(
385
476
  self,
386
477
  *,
387
478
  file: luminarycloud._proto.api.v0.luminarycloud.common.common_pb2.File | None = ...,
479
+ physics_ai_files: global___PhysicsAiDatasetCaseFiles | None = ...,
480
+ physics_ai_folder_url: builtins.str = ...,
388
481
  ) -> None: ...
389
- def HasField(self, field_name: typing_extensions.Literal["file", b"file"]) -> builtins.bool: ...
390
- def ClearField(self, field_name: typing_extensions.Literal["file", b"file"]) -> None: ...
482
+ def HasField(self, field_name: typing_extensions.Literal["file", b"file", "physics_ai_files", b"physics_ai_files"]) -> builtins.bool: ...
483
+ def ClearField(self, field_name: typing_extensions.Literal["file", b"file", "physics_ai_files", b"physics_ai_files", "physics_ai_folder_url", b"physics_ai_folder_url"]) -> None: ...
391
484
 
392
485
  global___GetSolutionDataPhysicsAIResponse = GetSolutionDataPhysicsAIResponse
393
486
 
@@ -494,6 +587,30 @@ class PhysicsAiTrainingJob(google.protobuf.message.Message):
494
587
 
495
588
  global___PhysicsAiTrainingJob = PhysicsAiTrainingJob
496
589
 
590
+ class TrainingInputParameter(google.protobuf.message.Message):
591
+ """Input parameter specification for training with reference values for normalization.
592
+ Type is inherited from the dataset's ParameterSchema.
593
+ """
594
+
595
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
596
+
597
+ NAME_FIELD_NUMBER: builtins.int
598
+ REFERENCE_FIELD_NUMBER: builtins.int
599
+ name: builtins.str
600
+ """Parameter name (must exist in dataset's ParameterSchema)"""
601
+ @property
602
+ def reference(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]:
603
+ """Reference value(s) for normalization (optional, falls back to schema default)"""
604
+ def __init__(
605
+ self,
606
+ *,
607
+ name: builtins.str = ...,
608
+ reference: collections.abc.Iterable[builtins.float] | None = ...,
609
+ ) -> None: ...
610
+ def ClearField(self, field_name: typing_extensions.Literal["name", b"name", "reference", b"reference"]) -> None: ...
611
+
612
+ global___TrainingInputParameter = TrainingInputParameter
613
+
497
614
  class SubmitTrainingJobRequest(google.protobuf.message.Message):
498
615
  """Request message for submitting a training job"""
499
616
 
@@ -507,6 +624,9 @@ class SubmitTrainingJobRequest(google.protobuf.message.Message):
507
624
  INITIALIZATION_TYPE_FIELD_NUMBER: builtins.int
508
625
  BASE_MODEL_VERSION_ID_FIELD_NUMBER: builtins.int
509
626
  DATASET_ID_FIELD_NUMBER: builtins.int
627
+ SURFACE_OUTPUTS_FIELD_NUMBER: builtins.int
628
+ VOLUME_OUTPUTS_FIELD_NUMBER: builtins.int
629
+ INPUT_PARAMETERS_FIELD_NUMBER: builtins.int
510
630
  architecture_version_id: builtins.str
511
631
  """Architecture version ID to train."""
512
632
  training_description: builtins.str
@@ -517,13 +637,29 @@ class SubmitTrainingJobRequest(google.protobuf.message.Message):
517
637
  def training_solutions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___TrainingSolution]:
518
638
  """Training solutions"""
519
639
  training_config: builtins.str
520
- """Training configuration in JSON format."""
640
+ """Training configuration in JSON format. Used for internal/advanced config
641
+ (resources, priority_class, mode, custom_args). For model I/O configuration,
642
+ prefer the typed fields below.
643
+ """
521
644
  initialization_type: global___ModelInitializationType.ValueType
522
645
  """Model initialization type."""
523
646
  base_model_version_id: builtins.str
524
647
  """Base model version ID (if initializing from existing model)."""
525
648
  dataset_id: builtins.str
526
649
  """Dataset ID to use for training (if using dataset-based training)."""
650
+ @property
651
+ def surface_outputs(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[luminarycloud._proto.quantity.quantity_pb2.QuantityType.ValueType]:
652
+ """Model output configuration (typed fields, preferred over JSON training_config).
653
+ Surface quantities to predict (e.g., PRESSURE_TIME_AVERAGE, WALL_SHEAR_STRESS_TIME_AVERAGE).
654
+ """
655
+ @property
656
+ def volume_outputs(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[luminarycloud._proto.quantity.quantity_pb2.QuantityType.ValueType]:
657
+ """Volume quantities to predict (e.g., VELOCITY_TIME_AVERAGE, PRESSURE_TIME_AVERAGE)."""
658
+ @property
659
+ def input_parameters(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___TrainingInputParameter]:
660
+ """Input parameters for the model with reference values for normalization.
661
+ Parameter names must exist in the dataset's ParameterSchema.
662
+ """
527
663
  def __init__(
528
664
  self,
529
665
  *,
@@ -535,8 +671,11 @@ class SubmitTrainingJobRequest(google.protobuf.message.Message):
535
671
  initialization_type: global___ModelInitializationType.ValueType = ...,
536
672
  base_model_version_id: builtins.str = ...,
537
673
  dataset_id: builtins.str = ...,
674
+ surface_outputs: collections.abc.Iterable[luminarycloud._proto.quantity.quantity_pb2.QuantityType.ValueType] | None = ...,
675
+ volume_outputs: collections.abc.Iterable[luminarycloud._proto.quantity.quantity_pb2.QuantityType.ValueType] | None = ...,
676
+ input_parameters: collections.abc.Iterable[global___TrainingInputParameter] | None = ...,
538
677
  ) -> None: ...
539
- def ClearField(self, field_name: typing_extensions.Literal["architecture_version_id", b"architecture_version_id", "base_model_version_id", b"base_model_version_id", "dataset_id", b"dataset_id", "external_dataset_uri", b"external_dataset_uri", "initialization_type", b"initialization_type", "training_config", b"training_config", "training_description", b"training_description", "training_solutions", b"training_solutions"]) -> None: ...
678
+ def ClearField(self, field_name: typing_extensions.Literal["architecture_version_id", b"architecture_version_id", "base_model_version_id", b"base_model_version_id", "dataset_id", b"dataset_id", "external_dataset_uri", b"external_dataset_uri", "initialization_type", b"initialization_type", "input_parameters", b"input_parameters", "surface_outputs", b"surface_outputs", "training_config", b"training_config", "training_description", b"training_description", "training_solutions", b"training_solutions", "volume_outputs", b"volume_outputs"]) -> None: ...
540
679
 
541
680
  global___SubmitTrainingJobRequest = SubmitTrainingJobRequest
542
681
 
@@ -587,6 +726,42 @@ class CancelTrainingJobResponse(google.protobuf.message.Message):
587
726
 
588
727
  global___CancelTrainingJobResponse = CancelTrainingJobResponse
589
728
 
729
+ class GetTrainingJobRequest(google.protobuf.message.Message):
730
+ """Request message for getting a training job by ID."""
731
+
732
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
733
+
734
+ TRAINING_JOB_ID_FIELD_NUMBER: builtins.int
735
+ training_job_id: builtins.str
736
+ """Training job ID to retrieve."""
737
+ def __init__(
738
+ self,
739
+ *,
740
+ training_job_id: builtins.str = ...,
741
+ ) -> None: ...
742
+ def ClearField(self, field_name: typing_extensions.Literal["training_job_id", b"training_job_id"]) -> None: ...
743
+
744
+ global___GetTrainingJobRequest = GetTrainingJobRequest
745
+
746
+ class GetTrainingJobResponse(google.protobuf.message.Message):
747
+ """Response message for getting a training job."""
748
+
749
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
750
+
751
+ TRAINING_JOB_FIELD_NUMBER: builtins.int
752
+ @property
753
+ def training_job(self) -> global___PhysicsAiTrainingJob:
754
+ """The training job."""
755
+ def __init__(
756
+ self,
757
+ *,
758
+ training_job: global___PhysicsAiTrainingJob | None = ...,
759
+ ) -> None: ...
760
+ def HasField(self, field_name: typing_extensions.Literal["training_job", b"training_job"]) -> builtins.bool: ...
761
+ def ClearField(self, field_name: typing_extensions.Literal["training_job", b"training_job"]) -> None: ...
762
+
763
+ global___GetTrainingJobResponse = GetTrainingJobResponse
764
+
590
765
  class PhysicsAiDataset(google.protobuf.message.Message):
591
766
  """A Physics AI dataset"""
592
767
 
@@ -600,12 +775,11 @@ class PhysicsAiDataset(google.protobuf.message.Message):
600
775
  CREATION_TIME_FIELD_NUMBER: builtins.int
601
776
  UPDATE_TIME_FIELD_NUMBER: builtins.int
602
777
  LOCKED_AT_FIELD_NUMBER: builtins.int
603
- CASES_FIELD_NUMBER: builtins.int
604
778
  EXPORT_CONFIG_FIELD_NUMBER: builtins.int
605
779
  id: builtins.str
606
780
  """Unique identifier for the dataset."""
607
781
  created_by: builtins.str
608
- """User ID who created the dataset (empty for platform-curated datasets)."""
782
+ """User ID who created the dataset (unset for platform-curated datasets)."""
609
783
  name: builtins.str
610
784
  """Name of the dataset."""
611
785
  description: builtins.str
@@ -622,9 +796,6 @@ class PhysicsAiDataset(google.protobuf.message.Message):
622
796
  def locked_at(self) -> google.protobuf.timestamp_pb2.Timestamp:
623
797
  """Dataset locked time (if locked)."""
624
798
  @property
625
- def cases(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___PhysicsAiDatasetCase]:
626
- """Cases in this dataset."""
627
- @property
628
799
  def export_config(self) -> global___GetSolutionDataPhysicsAIRequest:
629
800
  """Export configuration for extracting solution data for cases. The field
630
801
  solution_id is ignored.
@@ -633,18 +804,21 @@ class PhysicsAiDataset(google.protobuf.message.Message):
633
804
  self,
634
805
  *,
635
806
  id: builtins.str = ...,
636
- created_by: builtins.str = ...,
807
+ created_by: builtins.str | None = ...,
637
808
  name: builtins.str = ...,
638
- description: builtins.str = ...,
809
+ description: builtins.str | None = ...,
639
810
  is_locked: builtins.bool = ...,
640
811
  creation_time: google.protobuf.timestamp_pb2.Timestamp | None = ...,
641
812
  update_time: google.protobuf.timestamp_pb2.Timestamp | None = ...,
642
813
  locked_at: google.protobuf.timestamp_pb2.Timestamp | None = ...,
643
- cases: collections.abc.Iterable[global___PhysicsAiDatasetCase] | None = ...,
644
814
  export_config: global___GetSolutionDataPhysicsAIRequest | None = ...,
645
815
  ) -> None: ...
646
- def HasField(self, field_name: typing_extensions.Literal["creation_time", b"creation_time", "export_config", b"export_config", "locked_at", b"locked_at", "update_time", b"update_time"]) -> builtins.bool: ...
647
- def ClearField(self, field_name: typing_extensions.Literal["cases", b"cases", "created_by", b"created_by", "creation_time", b"creation_time", "description", b"description", "export_config", b"export_config", "id", b"id", "is_locked", b"is_locked", "locked_at", b"locked_at", "name", b"name", "update_time", b"update_time"]) -> None: ...
816
+ def HasField(self, field_name: typing_extensions.Literal["_created_by", b"_created_by", "_description", b"_description", "created_by", b"created_by", "creation_time", b"creation_time", "description", b"description", "export_config", b"export_config", "locked_at", b"locked_at", "update_time", b"update_time"]) -> builtins.bool: ...
817
+ def ClearField(self, field_name: typing_extensions.Literal["_created_by", b"_created_by", "_description", b"_description", "created_by", b"created_by", "creation_time", b"creation_time", "description", b"description", "export_config", b"export_config", "id", b"id", "is_locked", b"is_locked", "locked_at", b"locked_at", "name", b"name", "update_time", b"update_time"]) -> None: ...
818
+ @typing.overload
819
+ def WhichOneof(self, oneof_group: typing_extensions.Literal["_created_by", b"_created_by"]) -> typing_extensions.Literal["created_by"] | None: ...
820
+ @typing.overload
821
+ def WhichOneof(self, oneof_group: typing_extensions.Literal["_description", b"_description"]) -> typing_extensions.Literal["description"] | None: ...
648
822
 
649
823
  global___PhysicsAiDataset = PhysicsAiDataset
650
824
 
@@ -782,11 +956,11 @@ class CreateDatasetRequest(google.protobuf.message.Message):
782
956
  def cases(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___CreatePhysicsAiDatasetCaseInput]:
783
957
  """Cases to add to the dataset (case_id will be server-generated)."""
784
958
  @property
785
- def parameter_schema(self) -> google.protobuf.struct_pb2.Struct:
786
- """JSON schema defining allowed parameters for cases in this dataset."""
959
+ def parameter_schema(self) -> global___ParameterSchema:
960
+ """Structured parameter schema defining allowed parameters for cases in this dataset."""
787
961
  @property
788
962
  def export_config(self) -> global___GetSolutionDataPhysicsAIRequest:
789
- """Export configuration for extracting solution data forthe cases. The
963
+ """Export configuration for extracting solution data for the cases. The
790
964
  solution_id field is ignored.
791
965
  """
792
966
  def __init__(
@@ -795,7 +969,7 @@ class CreateDatasetRequest(google.protobuf.message.Message):
795
969
  name: builtins.str = ...,
796
970
  description: builtins.str = ...,
797
971
  cases: collections.abc.Iterable[global___CreatePhysicsAiDatasetCaseInput] | None = ...,
798
- parameter_schema: google.protobuf.struct_pb2.Struct | None = ...,
972
+ parameter_schema: global___ParameterSchema | None = ...,
799
973
  export_config: global___GetSolutionDataPhysicsAIRequest | None = ...,
800
974
  ) -> None: ...
801
975
  def HasField(self, field_name: typing_extensions.Literal["export_config", b"export_config", "parameter_schema", b"parameter_schema"]) -> builtins.bool: ...
@@ -821,3 +995,59 @@ class CreateDatasetResponse(google.protobuf.message.Message):
821
995
  def ClearField(self, field_name: typing_extensions.Literal["dataset", b"dataset"]) -> None: ...
822
996
 
823
997
  global___CreateDatasetResponse = CreateDatasetResponse
998
+
999
+ class ListDatasetsRequest(google.protobuf.message.Message):
1000
+ """Request message for listing datasets for the current user"""
1001
+
1002
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
1003
+
1004
+ def __init__(
1005
+ self,
1006
+ ) -> None: ...
1007
+
1008
+ global___ListDatasetsRequest = ListDatasetsRequest
1009
+
1010
+ class ListDatasetsResponse(google.protobuf.message.Message):
1011
+ """Response message for listing datasets"""
1012
+
1013
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
1014
+
1015
+ DATASETS_FIELD_NUMBER: builtins.int
1016
+ @property
1017
+ def datasets(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___PhysicsAiDataset]: ...
1018
+ def __init__(
1019
+ self,
1020
+ *,
1021
+ datasets: collections.abc.Iterable[global___PhysicsAiDataset] | None = ...,
1022
+ ) -> None: ...
1023
+ def ClearField(self, field_name: typing_extensions.Literal["datasets", b"datasets"]) -> None: ...
1024
+
1025
+ global___ListDatasetsResponse = ListDatasetsResponse
1026
+
1027
+ class ListTrainingJobsRequest(google.protobuf.message.Message):
1028
+ """Request message for listing training jobs for the current user"""
1029
+
1030
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
1031
+
1032
+ def __init__(
1033
+ self,
1034
+ ) -> None: ...
1035
+
1036
+ global___ListTrainingJobsRequest = ListTrainingJobsRequest
1037
+
1038
+ class ListTrainingJobsResponse(google.protobuf.message.Message):
1039
+ """Response message for listing training jobs"""
1040
+
1041
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
1042
+
1043
+ TRAINING_JOBS_FIELD_NUMBER: builtins.int
1044
+ @property
1045
+ def training_jobs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___PhysicsAiTrainingJob]: ...
1046
+ def __init__(
1047
+ self,
1048
+ *,
1049
+ training_jobs: collections.abc.Iterable[global___PhysicsAiTrainingJob] | None = ...,
1050
+ ) -> None: ...
1051
+ def ClearField(self, field_name: typing_extensions.Literal["training_jobs", b"training_jobs"]) -> None: ...
1052
+
1053
+ global___ListTrainingJobsResponse = ListTrainingJobsResponse
@@ -35,11 +35,26 @@ class PhysicsAiServiceStub(object):
35
35
  request_serializer=proto_dot_api_dot_v0_dot_luminarycloud_dot_physics__ai_dot_physics__ai__pb2.SubmitTrainingJobRequest.SerializeToString,
36
36
  response_deserializer=proto_dot_api_dot_v0_dot_luminarycloud_dot_physics__ai_dot_physics__ai__pb2.SubmitTrainingJobResponse.FromString,
37
37
  )
38
+ self.CancelTrainingJob = channel.unary_unary(
39
+ '/luminary.proto.api.v0.luminarycloud.physics_ai.PhysicsAiService/CancelTrainingJob',
40
+ request_serializer=proto_dot_api_dot_v0_dot_luminarycloud_dot_physics__ai_dot_physics__ai__pb2.CancelTrainingJobRequest.SerializeToString,
41
+ response_deserializer=proto_dot_api_dot_v0_dot_luminarycloud_dot_physics__ai_dot_physics__ai__pb2.CancelTrainingJobResponse.FromString,
42
+ )
43
+ self.GetTrainingJob = channel.unary_unary(
44
+ '/luminary.proto.api.v0.luminarycloud.physics_ai.PhysicsAiService/GetTrainingJob',
45
+ request_serializer=proto_dot_api_dot_v0_dot_luminarycloud_dot_physics__ai_dot_physics__ai__pb2.GetTrainingJobRequest.SerializeToString,
46
+ response_deserializer=proto_dot_api_dot_v0_dot_luminarycloud_dot_physics__ai_dot_physics__ai__pb2.GetTrainingJobResponse.FromString,
47
+ )
38
48
  self.CreateDataset = channel.unary_unary(
39
49
  '/luminary.proto.api.v0.luminarycloud.physics_ai.PhysicsAiService/CreateDataset',
40
50
  request_serializer=proto_dot_api_dot_v0_dot_luminarycloud_dot_physics__ai_dot_physics__ai__pb2.CreateDatasetRequest.SerializeToString,
41
51
  response_deserializer=proto_dot_api_dot_v0_dot_luminarycloud_dot_physics__ai_dot_physics__ai__pb2.CreateDatasetResponse.FromString,
42
52
  )
53
+ self.ListDatasets = channel.unary_unary(
54
+ '/luminary.proto.api.v0.luminarycloud.physics_ai.PhysicsAiService/ListDatasets',
55
+ request_serializer=proto_dot_api_dot_v0_dot_luminarycloud_dot_physics__ai_dot_physics__ai__pb2.ListDatasetsRequest.SerializeToString,
56
+ response_deserializer=proto_dot_api_dot_v0_dot_luminarycloud_dot_physics__ai_dot_physics__ai__pb2.ListDatasetsResponse.FromString,
57
+ )
43
58
 
44
59
 
45
60
  class PhysicsAiServiceServicer(object):
@@ -74,6 +89,20 @@ class PhysicsAiServiceServicer(object):
74
89
  context.set_details('Method not implemented!')
75
90
  raise NotImplementedError('Method not implemented!')
76
91
 
92
+ def CancelTrainingJob(self, request, context):
93
+ """Cancels a Physics AI training job
94
+ """
95
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
96
+ context.set_details('Method not implemented!')
97
+ raise NotImplementedError('Method not implemented!')
98
+
99
+ def GetTrainingJob(self, request, context):
100
+ """Gets a Physics AI training job by ID
101
+ """
102
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
103
+ context.set_details('Method not implemented!')
104
+ raise NotImplementedError('Method not implemented!')
105
+
77
106
  def CreateDataset(self, request, context):
78
107
  """Creates a new Physics AI dataset
79
108
  """
@@ -81,6 +110,13 @@ class PhysicsAiServiceServicer(object):
81
110
  context.set_details('Method not implemented!')
82
111
  raise NotImplementedError('Method not implemented!')
83
112
 
113
+ def ListDatasets(self, request, context):
114
+ """Lists datasets for the current user
115
+ """
116
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
117
+ context.set_details('Method not implemented!')
118
+ raise NotImplementedError('Method not implemented!')
119
+
84
120
 
85
121
  def add_PhysicsAiServiceServicer_to_server(servicer, server):
86
122
  rpc_method_handlers = {
@@ -104,11 +140,26 @@ def add_PhysicsAiServiceServicer_to_server(servicer, server):
104
140
  request_deserializer=proto_dot_api_dot_v0_dot_luminarycloud_dot_physics__ai_dot_physics__ai__pb2.SubmitTrainingJobRequest.FromString,
105
141
  response_serializer=proto_dot_api_dot_v0_dot_luminarycloud_dot_physics__ai_dot_physics__ai__pb2.SubmitTrainingJobResponse.SerializeToString,
106
142
  ),
143
+ 'CancelTrainingJob': grpc.unary_unary_rpc_method_handler(
144
+ servicer.CancelTrainingJob,
145
+ request_deserializer=proto_dot_api_dot_v0_dot_luminarycloud_dot_physics__ai_dot_physics__ai__pb2.CancelTrainingJobRequest.FromString,
146
+ response_serializer=proto_dot_api_dot_v0_dot_luminarycloud_dot_physics__ai_dot_physics__ai__pb2.CancelTrainingJobResponse.SerializeToString,
147
+ ),
148
+ 'GetTrainingJob': grpc.unary_unary_rpc_method_handler(
149
+ servicer.GetTrainingJob,
150
+ request_deserializer=proto_dot_api_dot_v0_dot_luminarycloud_dot_physics__ai_dot_physics__ai__pb2.GetTrainingJobRequest.FromString,
151
+ response_serializer=proto_dot_api_dot_v0_dot_luminarycloud_dot_physics__ai_dot_physics__ai__pb2.GetTrainingJobResponse.SerializeToString,
152
+ ),
107
153
  'CreateDataset': grpc.unary_unary_rpc_method_handler(
108
154
  servicer.CreateDataset,
109
155
  request_deserializer=proto_dot_api_dot_v0_dot_luminarycloud_dot_physics__ai_dot_physics__ai__pb2.CreateDatasetRequest.FromString,
110
156
  response_serializer=proto_dot_api_dot_v0_dot_luminarycloud_dot_physics__ai_dot_physics__ai__pb2.CreateDatasetResponse.SerializeToString,
111
157
  ),
158
+ 'ListDatasets': grpc.unary_unary_rpc_method_handler(
159
+ servicer.ListDatasets,
160
+ request_deserializer=proto_dot_api_dot_v0_dot_luminarycloud_dot_physics__ai_dot_physics__ai__pb2.ListDatasetsRequest.FromString,
161
+ response_serializer=proto_dot_api_dot_v0_dot_luminarycloud_dot_physics__ai_dot_physics__ai__pb2.ListDatasetsResponse.SerializeToString,
162
+ ),
112
163
  }
113
164
  generic_handler = grpc.method_handlers_generic_handler(
114
165
  'luminary.proto.api.v0.luminarycloud.physics_ai.PhysicsAiService', rpc_method_handlers)
@@ -188,6 +239,40 @@ class PhysicsAiService(object):
188
239
  options, channel_credentials,
189
240
  insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
190
241
 
242
+ @staticmethod
243
+ def CancelTrainingJob(request,
244
+ target,
245
+ options=(),
246
+ channel_credentials=None,
247
+ call_credentials=None,
248
+ insecure=False,
249
+ compression=None,
250
+ wait_for_ready=None,
251
+ timeout=None,
252
+ metadata=None):
253
+ return grpc.experimental.unary_unary(request, target, '/luminary.proto.api.v0.luminarycloud.physics_ai.PhysicsAiService/CancelTrainingJob',
254
+ proto_dot_api_dot_v0_dot_luminarycloud_dot_physics__ai_dot_physics__ai__pb2.CancelTrainingJobRequest.SerializeToString,
255
+ proto_dot_api_dot_v0_dot_luminarycloud_dot_physics__ai_dot_physics__ai__pb2.CancelTrainingJobResponse.FromString,
256
+ options, channel_credentials,
257
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
258
+
259
+ @staticmethod
260
+ def GetTrainingJob(request,
261
+ target,
262
+ options=(),
263
+ channel_credentials=None,
264
+ call_credentials=None,
265
+ insecure=False,
266
+ compression=None,
267
+ wait_for_ready=None,
268
+ timeout=None,
269
+ metadata=None):
270
+ return grpc.experimental.unary_unary(request, target, '/luminary.proto.api.v0.luminarycloud.physics_ai.PhysicsAiService/GetTrainingJob',
271
+ proto_dot_api_dot_v0_dot_luminarycloud_dot_physics__ai_dot_physics__ai__pb2.GetTrainingJobRequest.SerializeToString,
272
+ proto_dot_api_dot_v0_dot_luminarycloud_dot_physics__ai_dot_physics__ai__pb2.GetTrainingJobResponse.FromString,
273
+ options, channel_credentials,
274
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
275
+
191
276
  @staticmethod
192
277
  def CreateDataset(request,
193
278
  target,
@@ -204,3 +289,20 @@ class PhysicsAiService(object):
204
289
  proto_dot_api_dot_v0_dot_luminarycloud_dot_physics__ai_dot_physics__ai__pb2.CreateDatasetResponse.FromString,
205
290
  options, channel_credentials,
206
291
  insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
292
+
293
+ @staticmethod
294
+ def ListDatasets(request,
295
+ target,
296
+ options=(),
297
+ channel_credentials=None,
298
+ call_credentials=None,
299
+ insecure=False,
300
+ compression=None,
301
+ wait_for_ready=None,
302
+ timeout=None,
303
+ metadata=None):
304
+ return grpc.experimental.unary_unary(request, target, '/luminary.proto.api.v0.luminarycloud.physics_ai.PhysicsAiService/ListDatasets',
305
+ proto_dot_api_dot_v0_dot_luminarycloud_dot_physics__ai_dot_physics__ai__pb2.ListDatasetsRequest.SerializeToString,
306
+ proto_dot_api_dot_v0_dot_luminarycloud_dot_physics__ai_dot_physics__ai__pb2.ListDatasetsResponse.FromString,
307
+ options, channel_credentials,
308
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -30,11 +30,26 @@ class PhysicsAiServiceStub:
30
30
  luminarycloud._proto.api.v0.luminarycloud.physics_ai.physics_ai_pb2.SubmitTrainingJobResponse,
31
31
  ]
32
32
  """Submits a training job for a Physics AI architecture"""
33
+ CancelTrainingJob: grpc.UnaryUnaryMultiCallable[
34
+ luminarycloud._proto.api.v0.luminarycloud.physics_ai.physics_ai_pb2.CancelTrainingJobRequest,
35
+ luminarycloud._proto.api.v0.luminarycloud.physics_ai.physics_ai_pb2.CancelTrainingJobResponse,
36
+ ]
37
+ """Cancels a Physics AI training job"""
38
+ GetTrainingJob: grpc.UnaryUnaryMultiCallable[
39
+ luminarycloud._proto.api.v0.luminarycloud.physics_ai.physics_ai_pb2.GetTrainingJobRequest,
40
+ luminarycloud._proto.api.v0.luminarycloud.physics_ai.physics_ai_pb2.GetTrainingJobResponse,
41
+ ]
42
+ """Gets a Physics AI training job by ID"""
33
43
  CreateDataset: grpc.UnaryUnaryMultiCallable[
34
44
  luminarycloud._proto.api.v0.luminarycloud.physics_ai.physics_ai_pb2.CreateDatasetRequest,
35
45
  luminarycloud._proto.api.v0.luminarycloud.physics_ai.physics_ai_pb2.CreateDatasetResponse,
36
46
  ]
37
47
  """Creates a new Physics AI dataset"""
48
+ ListDatasets: grpc.UnaryUnaryMultiCallable[
49
+ luminarycloud._proto.api.v0.luminarycloud.physics_ai.physics_ai_pb2.ListDatasetsRequest,
50
+ luminarycloud._proto.api.v0.luminarycloud.physics_ai.physics_ai_pb2.ListDatasetsResponse,
51
+ ]
52
+ """Lists datasets for the current user"""
38
53
 
39
54
  class PhysicsAiServiceServicer(metaclass=abc.ABCMeta):
40
55
  """Manages physics ai architectures."""
@@ -68,11 +83,32 @@ class PhysicsAiServiceServicer(metaclass=abc.ABCMeta):
68
83
  ) -> luminarycloud._proto.api.v0.luminarycloud.physics_ai.physics_ai_pb2.SubmitTrainingJobResponse:
69
84
  """Submits a training job for a Physics AI architecture"""
70
85
  @abc.abstractmethod
86
+ def CancelTrainingJob(
87
+ self,
88
+ request: luminarycloud._proto.api.v0.luminarycloud.physics_ai.physics_ai_pb2.CancelTrainingJobRequest,
89
+ context: grpc.ServicerContext,
90
+ ) -> luminarycloud._proto.api.v0.luminarycloud.physics_ai.physics_ai_pb2.CancelTrainingJobResponse:
91
+ """Cancels a Physics AI training job"""
92
+ @abc.abstractmethod
93
+ def GetTrainingJob(
94
+ self,
95
+ request: luminarycloud._proto.api.v0.luminarycloud.physics_ai.physics_ai_pb2.GetTrainingJobRequest,
96
+ context: grpc.ServicerContext,
97
+ ) -> luminarycloud._proto.api.v0.luminarycloud.physics_ai.physics_ai_pb2.GetTrainingJobResponse:
98
+ """Gets a Physics AI training job by ID"""
99
+ @abc.abstractmethod
71
100
  def CreateDataset(
72
101
  self,
73
102
  request: luminarycloud._proto.api.v0.luminarycloud.physics_ai.physics_ai_pb2.CreateDatasetRequest,
74
103
  context: grpc.ServicerContext,
75
104
  ) -> luminarycloud._proto.api.v0.luminarycloud.physics_ai.physics_ai_pb2.CreateDatasetResponse:
76
105
  """Creates a new Physics AI dataset"""
106
+ @abc.abstractmethod
107
+ def ListDatasets(
108
+ self,
109
+ request: luminarycloud._proto.api.v0.luminarycloud.physics_ai.physics_ai_pb2.ListDatasetsRequest,
110
+ context: grpc.ServicerContext,
111
+ ) -> luminarycloud._proto.api.v0.luminarycloud.physics_ai.physics_ai_pb2.ListDatasetsResponse:
112
+ """Lists datasets for the current user"""
77
113
 
78
114
  def add_PhysicsAiServiceServicer_to_server(servicer: PhysicsAiServiceServicer, server: grpc.Server) -> None: ...