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
@@ -15,7 +15,7 @@ from luminarycloud._proto.client.entity_pb2 import EntityIdentifier
15
15
  from luminarycloud._helpers import CodeRepr
16
16
  import luminarycloud.params.enum._enum_wrappers as enum
17
17
 
18
- from luminarycloud.params.simulation._lib import ParamGroupWrapper, create_unique_id
18
+ from luminarycloud.params._lib import ParamGroupWrapper, create_unique_id
19
19
 
20
20
  from luminarycloud.params.simulation.physics.solution_controls.linear_solver_type_ import (
21
21
  LinearSolverType,
@@ -15,7 +15,7 @@ from luminarycloud._proto.client.entity_pb2 import EntityIdentifier
15
15
  from luminarycloud._helpers import CodeRepr
16
16
  import luminarycloud.params.enum._enum_wrappers as enum
17
17
 
18
- from luminarycloud.params.simulation._lib import ParamGroupWrapper, create_unique_id
18
+ from luminarycloud.params._lib import ParamGroupWrapper, create_unique_id
19
19
 
20
20
 
21
21
  @dataclass(kw_only=True)
@@ -15,7 +15,7 @@ from luminarycloud._proto.client.entity_pb2 import EntityIdentifier
15
15
  from luminarycloud._helpers import CodeRepr
16
16
  import luminarycloud.params.enum._enum_wrappers as enum
17
17
 
18
- from luminarycloud.params.simulation._lib import ParamGroupWrapper, create_unique_id
18
+ from luminarycloud.params._lib import ParamGroupWrapper, create_unique_id
19
19
 
20
20
  from luminarycloud.params.simulation.physics.fluid_ import Fluid
21
21
  from luminarycloud.params.simulation.physics.fluid_ import *
@@ -15,7 +15,7 @@ from luminarycloud._proto.client.entity_pb2 import EntityIdentifier
15
15
  from luminarycloud._helpers import CodeRepr
16
16
  import luminarycloud.params.enum._enum_wrappers as enum
17
17
 
18
- from luminarycloud.params.simulation._lib import ParamGroupWrapper, create_unique_id
18
+ from luminarycloud.params._lib import ParamGroupWrapper, create_unique_id
19
19
 
20
20
  from luminarycloud.params.simulation.adaptive_mesh_refinement_ import AdaptiveMeshRefinement
21
21
  from luminarycloud.params.simulation.adaptive_mesh_refinement_ import *
@@ -37,6 +37,8 @@ from luminarycloud.params.simulation.multi_physics_coupling_options_ import (
37
37
  MultiPhysicsCouplingOptions,
38
38
  )
39
39
  from luminarycloud.params.simulation.multi_physics_coupling_options_ import *
40
+ from luminarycloud.params.simulation.nonlinear_control_ import NonlinearControl
41
+ from luminarycloud.params.simulation.nonlinear_control_ import *
40
42
  from luminarycloud.params.simulation.output_ import Output
41
43
  from luminarycloud.params.simulation.output_ import *
42
44
  from luminarycloud.params.simulation.particle_group_ import ParticleGroup
@@ -65,6 +67,8 @@ class SimulationParam(CodeRepr, ParamGroupWrapper[clientpb.SimulationParam]):
65
67
  "Basic parameters used by a solution."
66
68
  adjoint: Adjoint = field(default_factory=Adjoint)
67
69
  "Settings for adjoint sensitivity analysis."
70
+ nonlinear_control: NonlinearControl = field(default_factory=NonlinearControl)
71
+ "Determine input values such that target output values are met."
68
72
  time: Time = field(default_factory=Time)
69
73
  "Time parameters used by a transient solution (required if flow_behavior = transient)."
70
74
  motion_data: list[MotionData] = field(default_factory=list)
@@ -104,6 +108,8 @@ class SimulationParam(CodeRepr, ParamGroupWrapper[clientpb.SimulationParam]):
104
108
  _proto.general.CopyFrom(self.basic._to_proto())
105
109
  if self.adjoint is not None:
106
110
  _proto.adjoint.CopyFrom(self.adjoint._to_proto())
111
+ if self.nonlinear_control is not None:
112
+ _proto.nonlinear_control.CopyFrom(self.nonlinear_control._to_proto())
107
113
  if self.time is not None:
108
114
  _proto.time.CopyFrom(self.time._to_proto())
109
115
  if self.motion_data is not None:
@@ -139,6 +145,7 @@ class SimulationParam(CodeRepr, ParamGroupWrapper[clientpb.SimulationParam]):
139
145
  self.volume_entity = [VolumeEntity.from_proto(v) for v in proto.volume_entity]
140
146
  self.basic = General.from_proto(proto.general)
141
147
  self.adjoint = Adjoint.from_proto(proto.adjoint)
148
+ self.nonlinear_control = NonlinearControl.from_proto(proto.nonlinear_control)
142
149
  self.time = Time.from_proto(proto.time)
143
150
  self.motion_data = [MotionData.from_proto(v) for v in proto.motion_data]
144
151
  self.particle_group = [ParticleGroup.from_proto(v) for v in proto.particle_group]
@@ -15,7 +15,7 @@ from luminarycloud._proto.client.entity_pb2 import EntityIdentifier
15
15
  from luminarycloud._helpers import CodeRepr
16
16
  import luminarycloud.params.enum._enum_wrappers as enum
17
17
 
18
- from luminarycloud.params.simulation._lib import ParamGroupWrapper, create_unique_id
18
+ from luminarycloud.params._lib import ParamGroupWrapper, create_unique_id
19
19
 
20
20
 
21
21
  @dataclass(kw_only=True)
@@ -15,7 +15,7 @@ from luminarycloud._proto.client.entity_pb2 import EntityIdentifier
15
15
  from luminarycloud._helpers import CodeRepr
16
16
  import luminarycloud.params.enum._enum_wrappers as enum
17
17
 
18
- from luminarycloud.params.simulation._lib import ParamGroupWrapper, create_unique_id
18
+ from luminarycloud.params._lib import ParamGroupWrapper, create_unique_id
19
19
 
20
20
 
21
21
  @dataclass(kw_only=True)
@@ -15,7 +15,7 @@ from luminarycloud._proto.client.entity_pb2 import EntityIdentifier
15
15
  from luminarycloud._helpers import CodeRepr
16
16
  import luminarycloud.params.enum._enum_wrappers as enum
17
17
 
18
- from luminarycloud.params.simulation._lib import ParamGroupWrapper, create_unique_id
18
+ from luminarycloud.params._lib import ParamGroupWrapper, create_unique_id
19
19
 
20
20
  from luminarycloud.params.simulation.time.compute_statistics_ import ComputeStatistics
21
21
  from luminarycloud.params.simulation.time.compute_statistics_ import *
@@ -15,7 +15,7 @@ from luminarycloud._proto.client.entity_pb2 import EntityIdentifier
15
15
  from luminarycloud._helpers import CodeRepr
16
16
  import luminarycloud.params.enum._enum_wrappers as enum
17
17
 
18
- from luminarycloud.params.simulation._lib import ParamGroupWrapper, create_unique_id
18
+ from luminarycloud.params._lib import ParamGroupWrapper, create_unique_id
19
19
 
20
20
  from luminarycloud.params.simulation.time.compute_statistics_ import ComputeStatistics
21
21
  from luminarycloud.params.simulation.time.compute_statistics_ import *
@@ -15,7 +15,7 @@ from luminarycloud._proto.client.entity_pb2 import EntityIdentifier
15
15
  from luminarycloud._helpers import CodeRepr
16
16
  import luminarycloud.params.enum._enum_wrappers as enum
17
17
 
18
- from luminarycloud.params.simulation._lib import ParamGroupWrapper, create_unique_id
18
+ from luminarycloud.params._lib import ParamGroupWrapper, create_unique_id
19
19
 
20
20
 
21
21
  @dataclass(kw_only=True)
@@ -15,7 +15,7 @@ from luminarycloud._proto.client.entity_pb2 import EntityIdentifier
15
15
  from luminarycloud._helpers import CodeRepr
16
16
  import luminarycloud.params.enum._enum_wrappers as enum
17
17
 
18
- from luminarycloud.params.simulation._lib import ParamGroupWrapper, create_unique_id
18
+ from luminarycloud.params._lib import ParamGroupWrapper, create_unique_id
19
19
 
20
20
  from luminarycloud.params.simulation.time.time_marching_ import TimeMarching
21
21
  from luminarycloud.params.simulation.time.time_marching_ import *
@@ -15,7 +15,7 @@ from luminarycloud._proto.client.entity_pb2 import EntityIdentifier
15
15
  from luminarycloud._helpers import CodeRepr
16
16
  import luminarycloud.params.enum._enum_wrappers as enum
17
17
 
18
- from luminarycloud.params.simulation._lib import ParamGroupWrapper, create_unique_id
18
+ from luminarycloud.params._lib import ParamGroupWrapper, create_unique_id
19
19
 
20
20
  from luminarycloud.params.simulation.time.time_marching_ import TimeMarching
21
21
  from luminarycloud.params.simulation.time.time_marching_ import *
@@ -15,7 +15,7 @@ from luminarycloud._proto.client.entity_pb2 import EntityIdentifier
15
15
  from luminarycloud._helpers import CodeRepr
16
16
  import luminarycloud.params.enum._enum_wrappers as enum
17
17
 
18
- from luminarycloud.params.simulation._lib import ParamGroupWrapper, create_unique_id
18
+ from luminarycloud.params._lib import ParamGroupWrapper, create_unique_id
19
19
 
20
20
 
21
21
  @dataclass(kw_only=True)
@@ -15,7 +15,7 @@ from luminarycloud._proto.client.entity_pb2 import EntityIdentifier
15
15
  from luminarycloud._helpers import CodeRepr
16
16
  import luminarycloud.params.enum._enum_wrappers as enum
17
17
 
18
- from luminarycloud.params.simulation._lib import ParamGroupWrapper, create_unique_id
18
+ from luminarycloud.params._lib import ParamGroupWrapper, create_unique_id
19
19
 
20
20
  from luminarycloud.params.simulation.time.time_step_ramp_ import TimeStepRamp
21
21
  from luminarycloud.params.simulation.time.time_step_ramp_ import *
@@ -15,7 +15,7 @@ from luminarycloud._proto.client.entity_pb2 import EntityIdentifier
15
15
  from luminarycloud._helpers import CodeRepr
16
16
  import luminarycloud.params.enum._enum_wrappers as enum
17
17
 
18
- from luminarycloud.params.simulation._lib import ParamGroupWrapper, create_unique_id
18
+ from luminarycloud.params._lib import ParamGroupWrapper, create_unique_id
19
19
 
20
20
  from luminarycloud.params.simulation.time.time_step_ramp_ import TimeStepRamp
21
21
  from luminarycloud.params.simulation.time.time_step_ramp_ import *
@@ -15,7 +15,7 @@ from luminarycloud._proto.client.entity_pb2 import EntityIdentifier
15
15
  from luminarycloud._helpers import CodeRepr
16
16
  import luminarycloud.params.enum._enum_wrappers as enum
17
17
 
18
- from luminarycloud.params.simulation._lib import ParamGroupWrapper, create_unique_id
18
+ from luminarycloud.params._lib import ParamGroupWrapper, create_unique_id
19
19
 
20
20
 
21
21
  @dataclass(kw_only=True)
@@ -15,7 +15,7 @@ from luminarycloud._proto.client.entity_pb2 import EntityIdentifier
15
15
  from luminarycloud._helpers import CodeRepr
16
16
  import luminarycloud.params.enum._enum_wrappers as enum
17
17
 
18
- from luminarycloud.params.simulation._lib import ParamGroupWrapper, create_unique_id
18
+ from luminarycloud.params._lib import ParamGroupWrapper, create_unique_id
19
19
 
20
20
  from luminarycloud.params.simulation.time.compute_statistics_ import ComputeStatistics
21
21
  from luminarycloud.params.simulation.time.compute_statistics_ import *
@@ -15,7 +15,7 @@ from luminarycloud._proto.client.entity_pb2 import EntityIdentifier
15
15
  from luminarycloud._helpers import CodeRepr
16
16
  import luminarycloud.params.enum._enum_wrappers as enum
17
17
 
18
- from luminarycloud.params.simulation._lib import ParamGroupWrapper, create_unique_id
18
+ from luminarycloud.params._lib import ParamGroupWrapper, create_unique_id
19
19
 
20
20
 
21
21
  @dataclass(kw_only=True)
@@ -2,6 +2,8 @@ from .architectures import (
2
2
  list_architectures as list_architectures,
3
3
  PhysicsAiArchitecture as PhysicsAiArchitecture,
4
4
  PhysicsAiArchitectureVersion as PhysicsAiArchitectureVersion,
5
+ ModelOutputs as ModelOutputs,
6
+ InputParameter as InputParameter,
5
7
  )
6
8
  from .models import (
7
9
  list_pretrained_models as list_pretrained_models,
@@ -19,3 +21,18 @@ from .inference import (
19
21
  VisualizationExport as VisualizationExport,
20
22
  NumericResult as NumericResult,
21
23
  )
24
+
25
+ from .datasets import (
26
+ create_dataset as create_dataset,
27
+ list_datasets as list_datasets,
28
+ DatasetCaseInput as DatasetCaseInput,
29
+ ExportConfig as ExportConfig,
30
+ PhysicsAiDataset as PhysicsAiDataset,
31
+ ParameterDefinition as ParameterDefinition,
32
+ )
33
+
34
+ from .training_jobs import (
35
+ get_training_job as get_training_job,
36
+ list_training_jobs as list_training_jobs,
37
+ PhysicsAiTrainingJob as PhysicsAiTrainingJob,
38
+ )
@@ -1,16 +1,68 @@
1
1
  # Copyright 2025 Luminary Cloud, Inc. All Rights Reserved.
2
- from typing import List, Optional
2
+ import copy
3
+ from dataclasses import dataclass, field
3
4
  import json
4
5
 
5
6
  from .._client import get_default_client
6
7
  from .._proto.api.v0.luminarycloud.physics_ai import physics_ai_pb2 as physaipb
8
+ from .._proto.quantity import quantity_pb2 as quantitypb
7
9
  from .._wrapper import ProtoWrapper, ProtoWrapperBase
8
10
  from ..types.ids import PhysicsAiArchitectureID, PhysicsAiArchitectureVersionID
9
11
  from ..enum.physics_ai_lifecycle_state import PhysicsAiLifecycleState
12
+ from ..enum.quantity_type import QuantityType
10
13
 
11
14
  from .training_jobs import PhysicsAiTrainingJob
12
15
 
13
16
 
17
+ @dataclass
18
+ class ModelOutputs:
19
+ """
20
+ Defines the output variables for the model.
21
+
22
+ Parameters
23
+ ----------
24
+ surface : list[QuantityType], optional
25
+ Surface outputs to predict (e.g., PRESSURE, WALL_SHEAR_STRESS)
26
+ volume : list[QuantityType], optional
27
+ Volume outputs to predict (e.g., VELOCITY, PRESSURE)
28
+ """
29
+
30
+ surface: list[QuantityType] | None = None
31
+ volume: list[QuantityType] | None = None
32
+
33
+
34
+ @dataclass
35
+ class InputParameter:
36
+ """
37
+ Defines an input parameter for the model with reference values for normalization.
38
+
39
+ Type is inherited from the dataset's ParameterSchema, so only the name and
40
+ optional reference values need to be specified here.
41
+
42
+ Parameters
43
+ ----------
44
+ name : str
45
+ Parameter name (must exist in the dataset's ParameterSchema)
46
+ reference : list[float], optional
47
+ Reference value(s) for normalization. If not provided, falls back to
48
+ the default_reference from the dataset's ParameterSchema. For scalars,
49
+ a single-element list. For vectors, the number of elements must match
50
+ the dimension from the schema.
51
+
52
+ Examples
53
+ --------
54
+ >>> # Use schema defaults (no reference specified)
55
+ >>> air_density = InputParameter(name="air_density")
56
+ >>> # Override with custom reference values
57
+ >>> velocity = InputParameter(name="inlet_velocity", reference=[30.0, 0.0, 0.0])
58
+ >>> # Scalar parameter with explicit reference
59
+ >>> stream_velocity = InputParameter(name="stream_velocity", reference=[148.28])
60
+ """
61
+
62
+ name: str
63
+ reference: list[float] = field(default_factory=list)
64
+
65
+
14
66
  @ProtoWrapper(physaipb.PhysicsAiArchitectureVersion)
15
67
  class PhysicsAiArchitectureVersion(ProtoWrapperBase):
16
68
  """
@@ -26,34 +78,91 @@ class PhysicsAiArchitectureVersion(ProtoWrapperBase):
26
78
  lifecycle_state: PhysicsAiLifecycleState
27
79
  _proto: physaipb.PhysicsAiArchitectureVersion
28
80
 
29
- def get_training_description(self, config: dict) -> str:
30
- if config.get("description"):
31
- return config["description"]
81
+ def get_training_description(self, _internal: dict | None) -> str:
82
+ if _internal and _internal.get("description"):
83
+ return _internal["description"]
32
84
 
33
85
  desc = f"Training job for architecture {self.name}"
34
- if config.get("custom_args"):
35
- desc += f" with custom args: {config['custom_args']}"
86
+ if _internal and _internal.get("custom_args"):
87
+ desc += f" with custom args: {_internal['custom_args']}"
36
88
  return desc
37
89
 
38
- def train(self, config: dict) -> PhysicsAiTrainingJob:
90
+ def train(
91
+ self,
92
+ dataset_id: str | None = None,
93
+ outputs: ModelOutputs | None = None,
94
+ inputs: list[InputParameter] | None = None,
95
+ _internal: dict | None = None,
96
+ ) -> PhysicsAiTrainingJob:
39
97
  """
40
98
  Submit a training job for this architecture version.
41
99
 
42
100
  Parameters
43
101
  ----------
44
- config : dict, optional
45
- Training configuration dictionary
102
+ dataset_id : str, optional
103
+ ID of a managed dataset to train on. If provided, uses session-based
104
+ GCS authentication.
105
+ outputs : ModelOutputs, optional
106
+ Output variables for the model (surface and/or volume quantities).
107
+ inputs : list[InputParameter], optional
108
+ Input parameters for the model with reference values for normalization.
109
+ Parameter names must exist in the dataset's ParameterSchema.
110
+ _internal : dict, optional
111
+ Internal configuration (resources, priority_class, custom_args, etc.).
112
+ This is for internal use only and may change without notice.
46
113
 
47
114
  Returns
48
115
  -------
49
116
  PhysicsAiTrainingJob
50
117
  The submitted training job object
51
- """
52
118
 
119
+ Examples
120
+ --------
121
+ >>> from luminarycloud.enum.quantity_type import QuantityType
122
+ >>> from luminarycloud.physics_ai.architectures import ModelOutputs, InputParameter
123
+ >>>
124
+ >>> job = arch_version.train(
125
+ ... dataset_id="dataset-abc123",
126
+ ... outputs=ModelOutputs(
127
+ ... surface=[QuantityType.PRESSURE_TIME_AVERAGE, QuantityType.WALL_SHEAR_STRESS_TIME_AVERAGE],
128
+ ... volume=[QuantityType.VELOCITY_TIME_AVERAGE],
129
+ ... ),
130
+ ... inputs=[
131
+ ... InputParameter(name="stream_velocity", reference=[148.28]),
132
+ ... InputParameter(name="air_density", reference=[0.38]),
133
+ ... ],
134
+ ... )
135
+ """
136
+ # Build typed proto fields for outputs
137
+ surface_outputs: list[quantitypb.QuantityType] = []
138
+ volume_outputs: list[quantitypb.QuantityType] = []
139
+
140
+ if outputs:
141
+ if outputs.surface:
142
+ surface_outputs = [quantitypb.QuantityType.Value(q.name) for q in outputs.surface]
143
+ if outputs.volume:
144
+ volume_outputs = [quantitypb.QuantityType.Value(q.name) for q in outputs.volume]
145
+
146
+ # Build typed proto fields for input parameters
147
+ # Type is inherited from the dataset's ParameterSchema at HydraConfig generation time
148
+ input_parameters: list[physaipb.TrainingInputParameter] = []
149
+ if inputs:
150
+ for param in inputs:
151
+ input_parameters.append(
152
+ physaipb.TrainingInputParameter(
153
+ name=param.name,
154
+ reference=param.reference,
155
+ )
156
+ )
157
+
158
+ # Build training_config JSON for internal fields only (resources, priority_class, etc.)
159
+ config: dict = copy.deepcopy(_internal) if _internal else {}
160
+
161
+ # Apply defaults for _internal fields
53
162
  if "custom_args" not in config:
54
163
  config["custom_args"] = ""
55
164
  if "priority_class" not in config:
56
- config["priority_class"] = "prod-batch-priority"
165
+ config["priority_class"] = "internal-training-job-priority"
57
166
  if "resources" not in config:
58
167
  config["resources"] = {}
59
168
  if "process_cpus" not in config["resources"]:
@@ -66,14 +175,17 @@ class PhysicsAiArchitectureVersion(ProtoWrapperBase):
66
175
  config["mode"] = "full"
67
176
 
68
177
  training_config_json = json.dumps(config, indent=2)
69
- external_dataset_uri = f"gs://training-data/architecture-{self.id}"
178
+
70
179
  req = physaipb.SubmitTrainingJobRequest(
71
180
  architecture_version_id=self.id,
72
- training_description=self.get_training_description(config),
73
- external_dataset_uri=external_dataset_uri,
181
+ training_description=self.get_training_description(_internal),
74
182
  training_config=training_config_json,
75
183
  initialization_type=physaipb.MODEL_INITIALIZATION_TYPE_RANDOM,
76
184
  base_model_version_id="",
185
+ dataset_id=dataset_id if dataset_id else "",
186
+ surface_outputs=surface_outputs,
187
+ volume_outputs=volume_outputs,
188
+ input_parameters=input_parameters,
77
189
  )
78
190
 
79
191
  response = get_default_client().SubmitTrainingJob(req)
@@ -92,10 +204,10 @@ class PhysicsAiArchitecture(ProtoWrapperBase):
92
204
  id: PhysicsAiArchitectureID
93
205
  name: str
94
206
  description: str
95
- versions: List[PhysicsAiArchitectureVersion]
207
+ versions: list[PhysicsAiArchitectureVersion]
96
208
  _proto: physaipb.PhysicsAiArchitecture
97
209
 
98
- def get_latest_version(self) -> Optional[PhysicsAiArchitectureVersion]:
210
+ def get_latest_version(self) -> PhysicsAiArchitectureVersion | None:
99
211
  """
100
212
  Get the latest version of this architecture based on name.
101
213
 
@@ -107,10 +219,10 @@ class PhysicsAiArchitecture(ProtoWrapperBase):
107
219
  """
108
220
  if not self.versions:
109
221
  return None
110
- return self.versions[0] if self.versions else None
222
+ return self.versions[0]
111
223
 
112
224
 
113
- def list_architectures() -> List[PhysicsAiArchitecture]:
225
+ def list_architectures() -> list[PhysicsAiArchitecture]:
114
226
  """
115
227
  List available Physics AI architectures for model training.
116
228