luminarycloud 0.14.1__py3-none-any.whl → 0.15.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 (276) hide show
  1. luminarycloud/__init__.py +5 -1
  2. luminarycloud/_client/client.py +5 -0
  3. luminarycloud/_helpers/__init__.py +1 -0
  4. luminarycloud/_helpers/_code_representation.py +135 -0
  5. luminarycloud/_helpers/_simulation_params_from_json.py +5 -1
  6. luminarycloud/_helpers/upload.py +31 -11
  7. luminarycloud/_helpers/warnings/deprecated.py +8 -10
  8. luminarycloud/_helpers/warnings/experimental.py +4 -4
  9. luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2.py +135 -110
  10. luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2.pyi +82 -10
  11. luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2_grpc.py +34 -0
  12. luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2_grpc.pyi +12 -0
  13. luminarycloud/_proto/api/v0/luminarycloud/physics_ai/physics_ai_pb2.py +94 -0
  14. luminarycloud/_proto/api/v0/luminarycloud/physics_ai/physics_ai_pb2.pyi +145 -0
  15. luminarycloud/_proto/api/v0/luminarycloud/physics_ai/physics_ai_pb2_grpc.py +104 -0
  16. luminarycloud/_proto/api/v0/luminarycloud/physics_ai/physics_ai_pb2_grpc.pyi +42 -0
  17. luminarycloud/_proto/api/v0/luminarycloud/simulation_template/simulation_template_pb2.py +25 -25
  18. luminarycloud/_proto/api/v0/luminarycloud/simulation_template/simulation_template_pb2.pyi +10 -3
  19. luminarycloud/_proto/api/v0/luminarycloud/thirdpartyintegration/onshape/onshape_pb2.py +162 -0
  20. luminarycloud/_proto/api/v0/luminarycloud/thirdpartyintegration/onshape/onshape_pb2.pyi +254 -0
  21. luminarycloud/_proto/api/v0/luminarycloud/thirdpartyintegration/onshape/onshape_pb2_grpc.py +203 -0
  22. luminarycloud/_proto/api/v0/luminarycloud/thirdpartyintegration/onshape/onshape_pb2_grpc.pyi +74 -0
  23. luminarycloud/_proto/api/v0/luminarycloud/vis/vis_pb2.py +155 -141
  24. luminarycloud/_proto/api/v0/luminarycloud/vis/vis_pb2.pyi +24 -2
  25. luminarycloud/_proto/cad/boolean_pb2.py +8 -8
  26. luminarycloud/_proto/cad/boolean_pb2.pyi +34 -4
  27. luminarycloud/_proto/client/simulation_pb2.py +303 -294
  28. luminarycloud/_proto/client/simulation_pb2.pyi +26 -1
  29. luminarycloud/_proto/geometry/geometry_pb2.py +58 -58
  30. luminarycloud/_proto/geometry/geometry_pb2.pyi +58 -11
  31. luminarycloud/_proto/hexmesh/hexmesh_pb2.py +42 -42
  32. luminarycloud/_proto/hexmesh/hexmesh_pb2.pyi +2 -2
  33. luminarycloud/_proto/output/reference_values_pb2.py +5 -5
  34. luminarycloud/_proto/parametricworker/parametricworker_pb2.py +31 -31
  35. luminarycloud/_proto/parametricworker/parametricworker_pb2.pyi +6 -4
  36. luminarycloud/_proto/table/table_pb2.py +9 -8
  37. luminarycloud/_proto/table/table_pb2.pyi +7 -1
  38. luminarycloud/enum/__init__.py +2 -0
  39. luminarycloud/enum/geometry_status.py +28 -0
  40. luminarycloud/geometry.py +64 -32
  41. luminarycloud/geometry_version.py +2 -2
  42. luminarycloud/mesh.py +11 -4
  43. luminarycloud/meshing/__init__.py +1 -0
  44. luminarycloud/meshing/metadata/__init__.py +6 -0
  45. luminarycloud/meshing/metadata/mesh_metadata.py +57 -0
  46. luminarycloud/outputs/output_definitions.py +11 -10
  47. luminarycloud/params/enum/_enum_wrappers.py +77 -968
  48. luminarycloud/params/outputs/output.py +2 -1
  49. luminarycloud/params/simulation/__init__.py +16 -16
  50. luminarycloud/params/simulation/_lib.py +1 -67
  51. luminarycloud/params/simulation/adaptive_mesh_refinement/boundary_layer_profile_.py +3 -2
  52. luminarycloud/params/simulation/adaptive_mesh_refinement_.py +3 -2
  53. luminarycloud/params/simulation/adjoint_.py +4 -3
  54. luminarycloud/params/simulation/basic/gravity/gravity_off_.py +3 -2
  55. luminarycloud/params/simulation/basic/gravity/gravity_on_.py +3 -2
  56. luminarycloud/params/simulation/basic/gravity_.py +3 -2
  57. luminarycloud/params/simulation/body_frame_.py +3 -2
  58. luminarycloud/params/simulation/entity_relationships/volume_material_relationship_.py +7 -6
  59. luminarycloud/params/simulation/entity_relationships/volume_physics_relationship_.py +7 -6
  60. luminarycloud/params/simulation/entity_relationships_.py +3 -2
  61. luminarycloud/params/simulation/general_.py +4 -3
  62. luminarycloud/params/simulation/material/fluid/__init__.py +4 -4
  63. luminarycloud/params/simulation/material/fluid/boussinesq_approximation/boussinesq_off_.py +3 -2
  64. luminarycloud/params/simulation/material/fluid/boussinesq_approximation/boussinesq_on_.py +3 -2
  65. luminarycloud/params/simulation/material/fluid/boussinesq_approximation_.py +3 -2
  66. luminarycloud/params/simulation/material/fluid/material_model/__init__.py +1 -1
  67. luminarycloud/params/simulation/material/fluid/material_model/ideal_gas_.py +3 -2
  68. luminarycloud/params/simulation/material/fluid/material_model/incompressible_fluid_.py +3 -2
  69. luminarycloud/params/simulation/material/fluid/material_model/incompressible_fluid_with_energy_.py +3 -2
  70. luminarycloud/params/simulation/material/fluid/material_model_.py +3 -2
  71. luminarycloud/params/simulation/material/fluid/thermal_conductivity_model/__init__.py +2 -2
  72. luminarycloud/params/simulation/material/fluid/thermal_conductivity_model/prescribed_conductivity_.py +3 -2
  73. luminarycloud/params/simulation/material/fluid/thermal_conductivity_model/prescribed_prandtl_number_.py +3 -2
  74. luminarycloud/params/simulation/material/fluid/thermal_conductivity_model/temperature_dependent_conductivity_.py +4 -3
  75. luminarycloud/params/simulation/material/fluid/thermal_conductivity_model_.py +3 -2
  76. luminarycloud/params/simulation/material/fluid/viscosity_model/__init__.py +1 -1
  77. luminarycloud/params/simulation/material/fluid/viscosity_model/prescribed_viscosity_.py +3 -2
  78. luminarycloud/params/simulation/material/fluid/viscosity_model/sutherland_.py +3 -2
  79. luminarycloud/params/simulation/material/fluid/viscosity_model/temperature_dependent_viscosity_.py +4 -3
  80. luminarycloud/params/simulation/material/fluid/viscosity_model_.py +3 -2
  81. luminarycloud/params/simulation/material/material_fluid_.py +7 -6
  82. luminarycloud/params/simulation/material/material_solid_.py +4 -3
  83. luminarycloud/params/simulation/material_entity_.py +9 -8
  84. luminarycloud/params/simulation/monitor_plane_.py +5 -4
  85. luminarycloud/params/simulation/motion_data/__init__.py +1 -1
  86. luminarycloud/params/simulation/motion_data/frame_transforms/__init__.py +1 -1
  87. luminarycloud/params/simulation/motion_data/frame_transforms/no_transform_.py +5 -4
  88. luminarycloud/params/simulation/motion_data/frame_transforms/rotational_transform_.py +5 -4
  89. luminarycloud/params/simulation/motion_data/frame_transforms/translational_transform_.py +5 -4
  90. luminarycloud/params/simulation/motion_data/frame_transforms_.py +3 -2
  91. luminarycloud/params/simulation/motion_data/motion_type/__init__.py +1 -1
  92. luminarycloud/params/simulation/motion_data/motion_type/constant_angular_motion_.py +5 -4
  93. luminarycloud/params/simulation/motion_data/motion_type/constant_translation_motion_.py +5 -4
  94. luminarycloud/params/simulation/motion_data/motion_type_.py +3 -2
  95. luminarycloud/params/simulation/motion_data_.py +6 -5
  96. luminarycloud/params/simulation/multi_physics_coupling_options_.py +3 -2
  97. luminarycloud/params/simulation/output_.py +3 -2
  98. luminarycloud/params/simulation/particle_group/particle_group_type/__init__.py +1 -1
  99. luminarycloud/params/simulation/particle_group/particle_group_type/actuator_disk/actuator_disk_orientation_selection/actuator_disk_specify_normal_vector_.py +4 -3
  100. luminarycloud/params/simulation/particle_group/particle_group_type/actuator_disk/actuator_disk_orientation_selection/actuator_disk_specify_rotation_angles_.py +4 -3
  101. luminarycloud/params/simulation/particle_group/particle_group_type/actuator_disk/actuator_disk_orientation_selection_.py +3 -2
  102. luminarycloud/params/simulation/particle_group/particle_group_type/actuator_disk_.py +7 -6
  103. luminarycloud/params/simulation/particle_group/particle_group_type/actuator_line_.py +3 -2
  104. luminarycloud/params/simulation/particle_group/particle_group_type/probe_points_.py +5 -4
  105. luminarycloud/params/simulation/particle_group/particle_group_type/source_points_.py +5 -4
  106. luminarycloud/params/simulation/particle_group/particle_group_type_.py +3 -2
  107. luminarycloud/params/simulation/particle_group_.py +4 -3
  108. luminarycloud/params/simulation/physics/__init__.py +3 -3
  109. luminarycloud/params/simulation/physics/fluid/__init__.py +9 -9
  110. luminarycloud/params/simulation/physics/fluid/adjoint_controls_fluid_.py +3 -2
  111. luminarycloud/params/simulation/physics/fluid/basic_fluid_.py +3 -2
  112. luminarycloud/params/simulation/physics/fluid/boundary_conditions/__init__.py +5 -5
  113. luminarycloud/params/simulation/physics/fluid/boundary_conditions/farfield_.py +5 -4
  114. luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet/__init__.py +3 -3
  115. luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet/fan_curve_inlet_.py +7 -6
  116. luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet/mach_inlet_.py +5 -4
  117. luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet/mass_flow_inlet_.py +5 -4
  118. luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet/total_pressure_inlet_.py +6 -5
  119. luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet/velocity_components_inlet_.py +5 -4
  120. luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet/velocity_magnitude_inlet_.py +6 -5
  121. luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet_.py +8 -7
  122. luminarycloud/params/simulation/physics/fluid/boundary_conditions/outlet/outlet_strategy/__init__.py +1 -1
  123. luminarycloud/params/simulation/physics/fluid/boundary_conditions/outlet/outlet_strategy/fan_curve_outlet_.py +5 -4
  124. luminarycloud/params/simulation/physics/fluid/boundary_conditions/outlet/outlet_strategy/outlet_pressure_.py +3 -2
  125. luminarycloud/params/simulation/physics/fluid/boundary_conditions/outlet/outlet_strategy/outlet_target_corrected_mass_flow_rate_.py +3 -2
  126. luminarycloud/params/simulation/physics/fluid/boundary_conditions/outlet/outlet_strategy/outlet_target_mass_flow_rate_.py +3 -2
  127. luminarycloud/params/simulation/physics/fluid/boundary_conditions/outlet/outlet_strategy_.py +3 -2
  128. luminarycloud/params/simulation/physics/fluid/boundary_conditions/outlet_.py +6 -5
  129. luminarycloud/params/simulation/physics/fluid/boundary_conditions/symmetry_.py +5 -4
  130. luminarycloud/params/simulation/physics/fluid/boundary_conditions/turbulence_boundary_conditions_.py +3 -2
  131. luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/energy/__init__.py +1 -1
  132. luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/energy/prescribed_heat_flux_.py +3 -2
  133. luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/energy/prescribed_temperature_.py +3 -2
  134. luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/momentum/__init__.py +1 -1
  135. luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/momentum/no_slip_.py +3 -2
  136. luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/momentum/slip_.py +3 -2
  137. luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/momentum/wall_model_.py +3 -2
  138. luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/wall_energy_.py +3 -2
  139. luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/wall_momentum_.py +3 -2
  140. luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall_.py +7 -6
  141. luminarycloud/params/simulation/physics/fluid/boundary_conditions_fluid_.py +3 -2
  142. luminarycloud/params/simulation/physics/fluid/initialization/__init__.py +2 -2
  143. luminarycloud/params/simulation/physics/fluid/initialization/fluid_existing_solution_.py +5 -4
  144. luminarycloud/params/simulation/physics/fluid/initialization/fluid_farfield_values_.py +5 -4
  145. luminarycloud/params/simulation/physics/fluid/initialization/fluid_prescribed_values_.py +5 -4
  146. luminarycloud/params/simulation/physics/fluid/initialization/turbulence_initialization_.py +3 -2
  147. luminarycloud/params/simulation/physics/fluid/initialization_fluid_.py +3 -2
  148. luminarycloud/params/simulation/physics/fluid/physical_behavior/__init__.py +1 -1
  149. luminarycloud/params/simulation/physics/fluid/physical_behavior/blade_element_airfoil_data_.py +8 -7
  150. luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/__init__.py +1 -1
  151. luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_disk_model/__init__.py +2 -2
  152. luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_disk_model/actuator_disk_blade_element_.py +3 -2
  153. luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_disk_model/actuator_disk_radial_distribution_.py +8 -7
  154. luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_disk_model/actuator_disk_uniform_thrust_.py +4 -3
  155. luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_disk_model/fan_curve_internal_.py +5 -4
  156. luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_disk_model_.py +3 -2
  157. luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_line_model/actuator_line_blade_element_.py +3 -2
  158. luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_line_model_.py +3 -2
  159. luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/blade_element_params_.py +9 -8
  160. luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/particle_source_model/general_acceleration_source_.py +4 -3
  161. luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/particle_source_model/general_mass_source_.py +4 -3
  162. luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/particle_source_model_.py +3 -2
  163. luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model_.py +3 -2
  164. luminarycloud/params/simulation/physics/fluid/physical_behavior_.py +5 -4
  165. luminarycloud/params/simulation/physics/fluid/porous_behavior_.py +3 -2
  166. luminarycloud/params/simulation/physics/fluid/solution_controls/__init__.py +1 -1
  167. luminarycloud/params/simulation/physics/fluid/solution_controls/fluid_relaxation_method/fluid_explicit_relaxation_.py +3 -2
  168. luminarycloud/params/simulation/physics/fluid/solution_controls/fluid_relaxation_method/fluid_implicit_relaxation/robust_startup/robust_startup_off_.py +3 -2
  169. luminarycloud/params/simulation/physics/fluid/solution_controls/fluid_relaxation_method/fluid_implicit_relaxation/robust_startup/robust_startup_on_.py +3 -2
  170. luminarycloud/params/simulation/physics/fluid/solution_controls/fluid_relaxation_method/fluid_implicit_relaxation/robust_startup_.py +3 -2
  171. luminarycloud/params/simulation/physics/fluid/solution_controls/fluid_relaxation_method/fluid_implicit_relaxation_.py +7 -6
  172. luminarycloud/params/simulation/physics/fluid/solution_controls/fluid_relaxation_method_.py +3 -2
  173. luminarycloud/params/simulation/physics/fluid/solution_controls/pseudo_time_step_method/__init__.py +1 -1
  174. luminarycloud/params/simulation/physics/fluid/solution_controls/pseudo_time_step_method/cfl_based_.py +3 -2
  175. luminarycloud/params/simulation/physics/fluid/solution_controls/pseudo_time_step_method/fixed_pseudo_time_step_.py +3 -2
  176. luminarycloud/params/simulation/physics/fluid/solution_controls/pseudo_time_step_method_.py +3 -2
  177. luminarycloud/params/simulation/physics/fluid/solution_controls_fluid_.py +5 -4
  178. luminarycloud/params/simulation/physics/fluid/spatial_discretization/__init__.py +1 -1
  179. luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme/__init__.py +1 -1
  180. luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme/ec2_.py +3 -2
  181. luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme/fds_.py +3 -2
  182. luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme/ld2_.py +3 -2
  183. luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme/rhie_chow_.py +3 -2
  184. luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme_.py +3 -2
  185. luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme_order/first_order_.py +3 -2
  186. luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme_order/second_order_.py +3 -2
  187. luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme_order_.py +3 -2
  188. luminarycloud/params/simulation/physics/fluid/spatial_discretization_fluid_.py +5 -4
  189. luminarycloud/params/simulation/physics/fluid/turbulence/__init__.py +2 -2
  190. luminarycloud/params/simulation/physics/fluid/turbulence/des_formulation/__init__.py +1 -1
  191. luminarycloud/params/simulation/physics/fluid/turbulence/des_formulation/ddes_.py +3 -2
  192. luminarycloud/params/simulation/physics/fluid/turbulence/des_formulation/ddes_vtm_.py +3 -2
  193. luminarycloud/params/simulation/physics/fluid/turbulence/des_formulation/iddes_.py +3 -2
  194. luminarycloud/params/simulation/physics/fluid/turbulence/des_formulation_.py +3 -2
  195. luminarycloud/params/simulation/physics/fluid/turbulence/komega_sst/constants/custom_komega_sst_constants_.py +3 -2
  196. luminarycloud/params/simulation/physics/fluid/turbulence/komega_sst/constants/default_komega_sst_constants_.py +3 -2
  197. luminarycloud/params/simulation/physics/fluid/turbulence/komega_sst/komega_sst_constants_.py +3 -2
  198. luminarycloud/params/simulation/physics/fluid/turbulence/komega_sst_.py +6 -5
  199. luminarycloud/params/simulation/physics/fluid/turbulence/spalart_allmaras/constants/custom_spalart_allmaras_constants_.py +3 -2
  200. luminarycloud/params/simulation/physics/fluid/turbulence/spalart_allmaras/constants/default_spalart_allmaras_constants_.py +3 -2
  201. luminarycloud/params/simulation/physics/fluid/turbulence/spalart_allmaras/spalart_allmaras_constants_.py +3 -2
  202. luminarycloud/params/simulation/physics/fluid/turbulence/spalart_allmaras_.py +6 -5
  203. luminarycloud/params/simulation/physics/fluid/turbulence/sub_grid_scale_model/__init__.py +2 -2
  204. luminarycloud/params/simulation/physics/fluid/turbulence/sub_grid_scale_model/amd_.py +3 -2
  205. luminarycloud/params/simulation/physics/fluid/turbulence/sub_grid_scale_model/sigma_.py +3 -2
  206. luminarycloud/params/simulation/physics/fluid/turbulence/sub_grid_scale_model/smagorinsky_.py +3 -2
  207. luminarycloud/params/simulation/physics/fluid/turbulence/sub_grid_scale_model/vreman_.py +3 -2
  208. luminarycloud/params/simulation/physics/fluid/turbulence/sub_grid_scale_model/wale_.py +3 -2
  209. luminarycloud/params/simulation/physics/fluid/turbulence/sub_grid_scale_model_.py +3 -2
  210. luminarycloud/params/simulation/physics/fluid/turbulence_.py +6 -5
  211. luminarycloud/params/simulation/physics/fluid_.py +12 -13
  212. luminarycloud/params/simulation/physics/heat/__init__.py +4 -4
  213. luminarycloud/params/simulation/physics/heat/adjoint_controls_heat_.py +3 -2
  214. luminarycloud/params/simulation/physics/heat/boundary_conditions/__init__.py +2 -2
  215. luminarycloud/params/simulation/physics/heat/boundary_conditions/heat_bc_convection_.py +5 -4
  216. luminarycloud/params/simulation/physics/heat/boundary_conditions/heat_bc_heat_flux_.py +5 -4
  217. luminarycloud/params/simulation/physics/heat/boundary_conditions/heat_bc_integrated_heat_flux_.py +5 -4
  218. luminarycloud/params/simulation/physics/heat/boundary_conditions/heat_bc_symmetry_.py +5 -4
  219. luminarycloud/params/simulation/physics/heat/boundary_conditions/heat_bc_temperature_.py +5 -4
  220. luminarycloud/params/simulation/physics/heat/boundary_conditions_heat_.py +5 -4
  221. luminarycloud/params/simulation/physics/heat/heat_source/heat_source_type/__init__.py +1 -1
  222. luminarycloud/params/simulation/physics/heat/heat_source/heat_source_type/heat_source_type_power_.py +3 -2
  223. luminarycloud/params/simulation/physics/heat/heat_source/heat_source_type/heat_source_type_power_per_unit_of_volume_.py +4 -3
  224. luminarycloud/params/simulation/physics/heat/heat_source/heat_source_type_.py +3 -2
  225. luminarycloud/params/simulation/physics/heat/heat_source_.py +6 -5
  226. luminarycloud/params/simulation/physics/heat/initialization/heat_existing_solution_.py +5 -4
  227. luminarycloud/params/simulation/physics/heat/initialization/heat_prescribed_values_.py +5 -4
  228. luminarycloud/params/simulation/physics/heat/initialization_heat_.py +3 -2
  229. luminarycloud/params/simulation/physics/heat/solution_controls/heat_relaxation_method/heat_implicit_relaxation_.py +4 -3
  230. luminarycloud/params/simulation/physics/heat/solution_controls/heat_relaxation_method_.py +3 -2
  231. luminarycloud/params/simulation/physics/heat/solution_controls_heat_.py +4 -3
  232. luminarycloud/params/simulation/physics/heat/spatial_discretization_heat_.py +3 -2
  233. luminarycloud/params/simulation/physics/heat_.py +9 -8
  234. luminarycloud/params/simulation/physics/periodic_pair/periodicity_type/__init__.py +1 -1
  235. luminarycloud/params/simulation/physics/periodic_pair/periodicity_type/rotational_periodicity_.py +3 -2
  236. luminarycloud/params/simulation/physics/periodic_pair/periodicity_type/translational_periodicity_.py +3 -2
  237. luminarycloud/params/simulation/physics/periodic_pair/periodicity_type_.py +3 -2
  238. luminarycloud/params/simulation/physics/periodic_pair_.py +4 -3
  239. luminarycloud/params/simulation/physics/solution_controls/linear_solver_type/__init__.py +1 -1
  240. luminarycloud/params/simulation/physics/solution_controls/linear_solver_type/gauss_seidel_.py +3 -2
  241. luminarycloud/params/simulation/physics/solution_controls/linear_solver_type/krylov_amg_.py +9 -8
  242. luminarycloud/params/simulation/physics/solution_controls/linear_solver_type_.py +3 -2
  243. luminarycloud/params/simulation/physics_.py +7 -6
  244. luminarycloud/params/simulation/simulation_param_.py +12 -13
  245. luminarycloud/params/simulation/sliding_interfaces_.py +8 -7
  246. luminarycloud/params/simulation/surface_name_.py +3 -2
  247. luminarycloud/params/simulation/time/__init__.py +2 -2
  248. luminarycloud/params/simulation/time/compute_statistics/__init__.py +1 -1
  249. luminarycloud/params/simulation/time/compute_statistics/compute_statistics_off_.py +3 -2
  250. luminarycloud/params/simulation/time/compute_statistics/compute_statistics_on_.py +3 -2
  251. luminarycloud/params/simulation/time/compute_statistics_.py +3 -2
  252. luminarycloud/params/simulation/time/time_marching/time_explicit_.py +3 -2
  253. luminarycloud/params/simulation/time/time_marching/time_implicit_.py +3 -2
  254. luminarycloud/params/simulation/time/time_marching_.py +3 -2
  255. luminarycloud/params/simulation/time/time_step_ramp/time_step_ramp_off_.py +3 -2
  256. luminarycloud/params/simulation/time/time_step_ramp/time_step_ramp_on_.py +3 -2
  257. luminarycloud/params/simulation/time/time_step_ramp_.py +3 -2
  258. luminarycloud/params/simulation/time_.py +6 -5
  259. luminarycloud/params/simulation/volume_entity_.py +5 -4
  260. luminarycloud/physics_ai/__init__.py +8 -0
  261. luminarycloud/physics_ai/architectures.py +38 -0
  262. luminarycloud/physics_ai/models.py +42 -0
  263. luminarycloud/project.py +39 -19
  264. luminarycloud/reference_values.py +20 -3
  265. luminarycloud/simulation.py +8 -3
  266. luminarycloud/simulation_param.py +50 -27
  267. luminarycloud/simulation_template.py +84 -13
  268. luminarycloud/types/ids.py +2 -0
  269. luminarycloud/vis/__init__.py +0 -3
  270. luminarycloud/vis/display.py +1 -0
  271. luminarycloud/vis/interactive_scene.py +12 -3
  272. luminarycloud/vis/visualization.py +44 -20
  273. luminarycloud/volume_selection.py +5 -5
  274. {luminarycloud-0.14.1.dist-info → luminarycloud-0.15.0.dist-info}/METADATA +2 -2
  275. {luminarycloud-0.14.1.dist-info → luminarycloud-0.15.0.dist-info}/RECORD +276 -261
  276. {luminarycloud-0.14.1.dist-info → luminarycloud-0.15.0.dist-info}/WHEEL +0 -0
luminarycloud/__init__.py CHANGED
@@ -1,10 +1,11 @@
1
- # Copyright 2023-2024 Luminary Cloud, Inc. All Rights Reserved.
1
+ # Copyright 2023-2025 Luminary Cloud, Inc. All Rights Reserved.
2
2
  import logging as _logging
3
3
 
4
4
  from ._version import __version__
5
5
 
6
6
  from . import (
7
7
  _patch as _patch,
8
+ enum as enum,
8
9
  exceptions as exceptions,
9
10
  meshing as meshing,
10
11
  outputs as outputs,
@@ -22,6 +23,9 @@ from .geometry import (
22
23
  get_geometry as get_geometry,
23
24
  Geometry as Geometry,
24
25
  )
26
+ from .geometry_version import (
27
+ GeometryVersion as GeometryVersion,
28
+ )
25
29
  from .mesh import (
26
30
  get_mesh as get_mesh,
27
31
  get_mesh_metadata as get_mesh_metadata,
@@ -28,6 +28,9 @@ from .._proto.api.v0.luminarycloud.simulation_template.simulation_template_pb2_g
28
28
  from .._proto.api.v0.luminarycloud.named_variable_set.named_variable_set_pb2_grpc import (
29
29
  NamedVariableSetServiceStub,
30
30
  )
31
+ from .._proto.api.v0.luminarycloud.physics_ai.physics_ai_pb2_grpc import (
32
+ PhysicsAiServiceStub,
33
+ )
31
34
  from .._proto.api.v0.luminarycloud.solution.solution_pb2_grpc import SolutionServiceStub
32
35
  from .._proto.api.v0.luminarycloud.upload.upload_pb2_grpc import UploadServiceStub
33
36
  from .._proto.api.v0.luminarycloud.vis.vis_pb2_grpc import VisAPIServiceStub
@@ -54,6 +57,7 @@ class Client(
54
57
  OutputDefinitionServiceStub,
55
58
  StoppingConditionServiceStub,
56
59
  NamedVariableSetServiceStub,
60
+ PhysicsAiServiceStub,
57
61
  ):
58
62
  """
59
63
  Creates a Luminary API client.
@@ -197,6 +201,7 @@ class Client(
197
201
  OutputNodeServiceStub.__init__(self, self._channel)
198
202
  OutputDefinitionServiceStub.__init__(self, self._channel)
199
203
  StoppingConditionServiceStub.__init__(self, self._channel)
204
+ PhysicsAiServiceStub.__init__(self, self._channel)
200
205
  for name, value in self.__dict__.items():
201
206
  if isinstance(value, grpc.UnaryUnaryMultiCallable):
202
207
  setattr(self, name, rpc_error(value))
@@ -38,3 +38,4 @@ from ._upload_table import (
38
38
  from ._wait_for_simulation import (
39
39
  wait_for_simulation as wait_for_simulation,
40
40
  )
41
+ from ._code_representation import CodeRepr as CodeRepr
@@ -0,0 +1,135 @@
1
+ # Copyright 2025 Luminary Cloud, Inc. All Rights Reserved.
2
+ from typing import Any
3
+ from google.protobuf.message import Message as _ProtoMessage
4
+
5
+
6
+ # Gives derived classes the ability to generate the code that would set the values of their members.
7
+ # Evidently this is most suited for dataclasses.
8
+ # Note that to allow recursion, the lines generated by this class DO NOT contain the name of the
9
+ # object being generated, e.g. they will be of the form " = Type()", ".field = val".
10
+ # Derived classes can use _to_code_helper to insert an adequate object name.
11
+ class CodeRepr:
12
+ def to_code(self, hide_defaults: bool = True) -> str:
13
+ # Returns the code representation of a value with special cases for enums and classes
14
+ # that also implement "to_code" (thus triggering recursion), otherwise uses the default
15
+ # conversion to string.
16
+ def to_string(val: Any) -> str:
17
+ if "<enum " in str(type(val)):
18
+ str_val = val.__repr__()
19
+ return str_val.split(": ")[0][1:]
20
+ try:
21
+ return val.to_code(hide_defaults)
22
+ except:
23
+ return str(val)
24
+
25
+ # Returns the code to set the value of a given field of the class.
26
+ def generate(field: str, val: Any) -> str:
27
+ str_val = to_string(val)
28
+ code = ""
29
+ if issubclass(type(val), _ProtoMessage):
30
+ # Special case for protos.
31
+ # TODO(pedro): This is not working 100%.
32
+ code += "# NOTE: Google protobuf types are not fully supported yet.\n"
33
+ code += f".{field} = {type(val).__name__}()\n"
34
+ for line in str_val.split("\n"):
35
+ if ":" in line:
36
+ mod_line = line.replace(":", " =")
37
+ code += f".{field}.{mod_line}\n"
38
+ elif str_val.endswith("\n"):
39
+ # Special case for fields with their own "to_code".
40
+ for line in str_val.split("\n"):
41
+ if line.startswith("new_") or line.startswith("#"):
42
+ code += f"{line}\n"
43
+ elif line.startswith(".new_"):
44
+ code += f"{line[1:]}\n"
45
+ elif line:
46
+ code += f".{field}{line}\n"
47
+ elif isinstance(val, str):
48
+ code += f'.{field} = "{str_val}"\n'
49
+ else:
50
+ code += f".{field} = {str_val}\n"
51
+ return code
52
+
53
+ # Returns the code representation of map keys, with special cases for enums and strings.
54
+ def map_key(key: Any) -> str:
55
+ if isinstance(key, str):
56
+ return f'"{key}"'
57
+ if "<enum " in str(type(key)):
58
+ str_key = key.__repr__()
59
+ return str_key.split(": ")[0][1:]
60
+ return str(key)
61
+
62
+ # Helper to generate short names for temporary objects that are built and inserted into
63
+ # containers.
64
+ def short_name(field: str) -> str:
65
+ if not "_" in field:
66
+ return field
67
+ return "".join([word[0] for word in field.split("_")])
68
+
69
+ # Create the top level object (default constructed), we do some manipulation of module paths
70
+ # (extracted from the type info) to make them consistent with the aliased imports in some
71
+ # __init__ files.
72
+ if "luminarycloud" in str(type(self)):
73
+ path = (
74
+ str(type(self))
75
+ .split("'")[1]
76
+ .replace("luminarycloud.params.simulation", "params")
77
+ .replace("luminarycloud.outputs.output_definitions", "outputs")
78
+ )
79
+ names = path.split(".")
80
+ if names[-2].endswith("_"):
81
+ path = path.replace(names[-2] + ".", "")
82
+ code = f" = {path}()\n"
83
+ else:
84
+ code = f" = {type(self).__name__}()\n"
85
+
86
+ default = type(self)()
87
+ for field, val in vars(self).items():
88
+ # Skip default values.
89
+ if hide_defaults and val == vars(default).get(field):
90
+ continue
91
+ field_short_name = short_name(field)
92
+ if isinstance(val, dict):
93
+ code += "# Clear the map and insert new items.\n"
94
+ code += f".{field} = {{}}\n"
95
+ for key, value in val.items():
96
+ # Simplify the code for maps of built-in types by not creating a temporary
97
+ # instance.
98
+ if isinstance(value, (bool, int, float)):
99
+ code += f".{field}[{map_key(key)}] = {value}\n"
100
+ elif isinstance(value, str):
101
+ code += f'.{field}[{map_key(key)}] = "{value}"\n'
102
+ else:
103
+ code += f"# Create a new {type(value).__name__} instance and insert it.\n"
104
+ code += generate(f"new_{field_short_name}", value)
105
+ code += f".{field}[{map_key(key)}] = new_{field_short_name}\n"
106
+ elif isinstance(val, list):
107
+ # Similar to maps, for classes with more complex representations create temporaries
108
+ # and append, otherwise use the default list representation (which also covers
109
+ # empty lists).
110
+ if len(val) > 0 and to_string(val[0]).endswith("\n"):
111
+ code += f"# Clear the list of {type(val[0]).__name__} and append new items.\n"
112
+ code += f".{field} = []\n"
113
+ for value in val:
114
+ code += f"# Create a new {type(value).__name__} instance and append it.\n"
115
+ code += generate(f"new_{field_short_name}", value)
116
+ code += f".{field}.append(new_{field_short_name})\n"
117
+ else:
118
+ code += f".{field} = {to_string(val)}\n"
119
+ else:
120
+ code += generate(field, val)
121
+ return code
122
+
123
+ # See the class description.
124
+ def _to_code_helper(self, obj_name: str = "obj", hide_defaults: bool = True) -> str:
125
+ code = ""
126
+ for line in CodeRepr.to_code(self, hide_defaults).split("\n"):
127
+ if line:
128
+ if line.startswith(".new_"):
129
+ code += f"{line[1:]}\n"
130
+ elif line[0] == "." or line.startswith(" = "):
131
+ code += f"{obj_name}{line}\n"
132
+ else:
133
+ # Handles comments and temporary objects.
134
+ code += f"{line}\n"
135
+ return code
@@ -2,7 +2,7 @@
2
2
  from os import PathLike
3
3
  from typing import Union
4
4
 
5
- from google.protobuf.json_format import Parse
5
+ from google.protobuf.json_format import Parse, ParseDict
6
6
 
7
7
  from .._proto.client.simulation_pb2 import SimulationParam
8
8
 
@@ -11,6 +11,10 @@ def simulation_params_from_json(text: Union[str, bytes]) -> SimulationParam:
11
11
  return Parse(text, SimulationParam(), ignore_unknown_fields=True)
12
12
 
13
13
 
14
+ def simulation_params_from_json_dict(data: dict) -> SimulationParam:
15
+ return ParseDict(data, SimulationParam(), ignore_unknown_fields=True)
16
+
17
+
14
18
  def simulation_params_from_json_path(json_path: PathLike | str) -> SimulationParam:
15
19
  with open(json_path, "rb") as fp:
16
20
  json_bytes = fp.read()
@@ -5,6 +5,7 @@ import pathlib
5
5
  from typing import Mapping
6
6
  import requests
7
7
  import logging
8
+ import grpc
8
9
 
9
10
  from . import util
10
11
  from .._client import Client
@@ -84,21 +85,40 @@ def upload_file(
84
85
  upload_id = create_upload_res.upload.id
85
86
  logger.debug(f"created upload: {upload_id}")
86
87
 
87
- start_res: uploadpb.StartUploadReply = client.StartUpload(
88
- uploadpb.StartUploadRequest(upload_id=upload_id, method=uploadpb.METHOD_GCS_RESUMABLE)
89
- )
90
- logger.debug(f"started upload")
88
+ try:
89
+ start_res = client.StartUpload(
90
+ uploadpb.StartUploadRequest(upload_id=upload_id, method=uploadpb.METHOD_GCS_RESUMABLE)
91
+ )
92
+ logger.debug("started gcs upload")
91
93
 
92
- gcs_resumable_upload(
93
- filepath=pathlib.Path(file_path),
94
- signed_url=start_res.upload.gcs_resumable.signed_url,
95
- http_headers=start_res.upload.gcs_resumable.http_headers,
96
- )
97
- logger.debug(f"successfully uploaded data")
94
+ gcs_resumable_upload(
95
+ filepath=pathlib.Path(file_path),
96
+ signed_url=start_res.upload.gcs_resumable.signed_url,
97
+ http_headers=start_res.upload.gcs_resumable.http_headers,
98
+ )
99
+ logger.debug("successfully uploaded gcs data")
100
+ except grpc.RpcError as e:
101
+ if e.code() != grpc.StatusCode.UNIMPLEMENTED:
102
+ raise e
103
+ start_res = client.StartUpload(
104
+ uploadpb.StartUploadRequest(upload_id=upload_id, method=uploadpb.METHOD_SIMPLE)
105
+ )
106
+ logger.debug("started simple upload")
107
+
108
+ # Simple non-chunked upload
109
+ with open(file_path, "rb") as fp:
110
+ client.UploadData(
111
+ uploadpb.UploadDataRequest(
112
+ upload_id=upload_id,
113
+ offset=0,
114
+ data=fp.read(),
115
+ )
116
+ )
117
+ logger.debug("successfully uploaded simple data")
98
118
 
99
119
  finish_res: uploadpb.FinishUploadReply = client.FinishUpload(
100
120
  uploadpb.FinishUploadRequest(upload_id=upload_id)
101
121
  )
102
- logger.debug(f"finished upload")
122
+ logger.debug("finished upload")
103
123
 
104
124
  return upload_id, finish_res
@@ -7,7 +7,7 @@ from typing import Callable, TypeVar
7
7
  C = TypeVar("C")
8
8
 
9
9
 
10
- def deprecated(reason: str, version: str) -> Callable[[C], C]:
10
+ def deprecated(reason: str, version: str = "") -> Callable[[C], C]:
11
11
  """
12
12
  Mark a class or function as deprecated.
13
13
 
@@ -15,26 +15,24 @@ def deprecated(reason: str, version: str) -> Callable[[C], C]:
15
15
  ----------
16
16
  reason : str
17
17
  The reason for deprecation.
18
- version : str
19
- The version in which the class or function was deprecated.
20
18
  """
21
19
 
22
- def decorator(f: Callable | type[C]) -> Callable | type[C]:
20
+ def decorator(f: C) -> C:
23
21
  if isinstance(f, type):
24
- return _deprecated_class(f, reason, version)
22
+ return _deprecated_class(f, reason)
25
23
  else:
26
- return _deprecated_function(f, reason, version)
24
+ return _deprecated_function(f, reason)
27
25
 
28
26
  return decorator
29
27
 
30
28
 
31
- def _deprecated_class(cls: type[C], reason: str, version: str) -> type[C]:
29
+ def _deprecated_class(cls: type[C], reason: str) -> type[C]:
32
30
  old_init = cls.__init__
33
31
 
34
32
  @wraps(old_init)
35
33
  def new_init(self, *args, **kwargs):
36
34
  warnings.warn(
37
- f"{cls.__name__} is deprecated after version {version}: {reason}",
35
+ f"{cls.__name__} is deprecated: {reason}",
38
36
  category=DeprecationWarning,
39
37
  stacklevel=2,
40
38
  )
@@ -44,11 +42,11 @@ def _deprecated_class(cls: type[C], reason: str, version: str) -> type[C]:
44
42
  return cls
45
43
 
46
44
 
47
- def _deprecated_function(f: Callable, reason: str, version: str) -> Callable:
45
+ def _deprecated_function(f: Callable, reason: str) -> Callable:
48
46
  @wraps(f)
49
47
  def new_func(*args, **kwargs):
50
48
  warnings.warn(
51
- f"{f.__name__}() is deprecated after version {version}: {reason}",
49
+ f"{f.__name__}() is deprecated: {reason}",
52
50
  category=DeprecationWarning,
53
51
  stacklevel=2,
54
52
  )
@@ -7,12 +7,12 @@ from typing import Callable, TypeVar
7
7
  C = TypeVar("C")
8
8
 
9
9
 
10
- def experimental(f: Callable | type[C]) -> Callable | type[C]:
10
+ def experimental(f: C) -> C:
11
11
  """Mark a function or class as experimental."""
12
- if isinstance(f, type):
13
- return _experimental_class(f)
14
- else:
12
+ if isinstance(f, Callable):
15
13
  return _experimental_function(f)
14
+ else:
15
+ return _experimental_class(f)
16
16
 
17
17
 
18
18
  def _experimental_class(cls: type[C]) -> type[C]: