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
@@ -8,7 +8,7 @@ from difflib import Differ
8
8
  from .enum import (
9
9
  TableType,
10
10
  )
11
- from ._helpers.warnings import experimental
11
+ from ._helpers.warnings import experimental, deprecated
12
12
  from ._client import get_default_client
13
13
  from ._helpers._simulation_params_from_json import simulation_params_from_json_path
14
14
  from ._helpers._timestamp_to_datetime import timestamp_to_datetime
@@ -60,8 +60,6 @@ class SimulationTemplate(ProtoWrapperBase):
60
60
  "Simulation template ID."
61
61
  name: str
62
62
  "Simulation name."
63
- parameters: clientpb.SimulationParam
64
- "Simulation description."
65
63
 
66
64
  _proto: simtemplatepb.SimulationTemplate
67
65
 
@@ -77,7 +75,7 @@ class SimulationTemplate(ProtoWrapperBase):
77
75
  self,
78
76
  *,
79
77
  name: Optional[str] = None,
80
- parameters: Optional[Union[clientpb.SimulationParam, SimulationParam, PathLike]] = None,
78
+ parameters: Optional[SimulationParam | PathLike] = None,
81
79
  ) -> None:
82
80
  """
83
81
  Update simulation template.
@@ -92,6 +90,17 @@ class SimulationTemplate(ProtoWrapperBase):
92
90
  changes applied by the backend (server), for example due to presets. Any differences
93
91
  between input and result are printed on screen.
94
92
  """
93
+ return self._update(name=name, parameters=parameters)
94
+
95
+ def _update(
96
+ self,
97
+ *,
98
+ name: Optional[str] = None,
99
+ parameters: Optional[SimulationParam | clientpb.SimulationParam | PathLike] = None,
100
+ ) -> None:
101
+ """
102
+ Update simulation template. See `update()` for more details.
103
+ """
95
104
  req = simtemplatepb.UpdateSimulationTemplateRequest(id=self.id)
96
105
 
97
106
  if name is not None:
@@ -110,12 +119,14 @@ class SimulationTemplate(ProtoWrapperBase):
110
119
  # Table references are manipulated via the simulation template, hence we need to persist
111
120
  # them when we update the parameters.
112
121
  param_proto.table_references.clear()
113
- for k, v in self.parameters.table_references.items():
122
+ for k, v in self._proto.parameters.table_references.items():
114
123
  param_proto.table_references[k].CopyFrom(v)
115
124
 
116
125
  req.parameters.CopyFrom(param_proto)
117
126
 
118
- res = get_default_client().UpdateSimulationTemplate(req)
127
+ res: simtemplatepb.UpdateSimulationTemplateResponse = (
128
+ get_default_client().UpdateSimulationTemplate(req)
129
+ )
119
130
  self._proto = res.simulation_template
120
131
 
121
132
  def print_diff(
@@ -134,11 +145,11 @@ class SimulationTemplate(ProtoWrapperBase):
134
145
  # Show any inconsistency after the update and update the input argument.
135
146
  if isinstance(parameters, SimulationParam):
136
147
  old_param = deepcopy(parameters)
137
- parameters._from_proto(self.parameters)
148
+ parameters._from_proto(self._proto.parameters)
138
149
  print_diff(old_param, parameters)
139
150
  elif isinstance(parameters, clientpb.SimulationParam):
140
- print_diff(parameters, self.parameters)
141
- parameters.CopyFrom(self.parameters)
151
+ print_diff(parameters, self._proto.parameters)
152
+ parameters.CopyFrom(self._proto.parameters)
142
153
 
143
154
  def delete(self) -> None:
144
155
  """
@@ -147,12 +158,17 @@ class SimulationTemplate(ProtoWrapperBase):
147
158
  req = simtemplatepb.DeleteSimulationTemplateRequest(id=self.id)
148
159
  get_default_client().DeleteSimulationTemplate(req)
149
160
 
161
+ def get_parameters(self) -> SimulationParam:
162
+ return self.get_simulation_param()
163
+
164
+ @deprecated(
165
+ "Use get_parameters() instead. This method will be removed in a future release.",
166
+ )
150
167
  def get_simulation_param(self) -> SimulationParam:
151
168
  """
152
- Returns the simulation parameters associated with this template to allow customization of
153
- the parameters.
169
+ Returns a copy of the simulation parameters associated with this template.
154
170
  """
155
- return SimulationParam.from_proto(self.parameters)
171
+ return SimulationParam.from_proto(self._proto.parameters)
156
172
 
157
173
  def list_tables(
158
174
  self,
@@ -172,7 +188,7 @@ class SimulationTemplate(ProtoWrapperBase):
172
188
  List of tables.
173
189
  """
174
190
  res: list[RectilinearTable] = []
175
- for id, metadata in self.parameters.table_references.items():
191
+ for id, metadata in self._proto.parameters.table_references.items():
176
192
  if table_type is None or table_type.value == metadata.table_type:
177
193
  res.append(
178
194
  RectilinearTable(
@@ -442,6 +458,61 @@ class SimulationTemplate(ProtoWrapperBase):
442
458
  self.id, max_iterations, max_physical_time, max_inner_iterations, stop_on_any
443
459
  )
444
460
 
461
+ def to_code(self, hide_defaults: bool = True) -> str:
462
+ """
463
+ Returns the python code that generates an identical SimulationTemplate object.
464
+ By default parameters with default values are omitted, this change be changed with
465
+ hide_defaults=False.
466
+ """
467
+ param_code = self.get_simulation_param().to_code(hide_defaults)
468
+ code, param_code = param_code.split("\n\n\n")
469
+
470
+ # Modify the header note included by SimulationParam.to_code.
471
+ code = code.replace("SimulationParam", "SimulationTemplate")
472
+ code += "\n\n\n"
473
+ code += '# Create a new simulation template or modify the "Setup" template.\n'
474
+ code += 'project = get_project("...")\n'
475
+ code += f"# template = project.create_simulation_template(name={self.name})\n"
476
+ code += "template = project.list_simulation_templates()[0]\n\n"
477
+
478
+ code += "# Define the simulation parameters.\n"
479
+ code += param_code
480
+ code += "\n# Update the simulation template with the parameters.\n"
481
+ code += "template.update(parameters=obj)\n\n"
482
+
483
+ code += "# Define the outputs for monitoring simulations.\n"
484
+ code += "# This assumes the outputs do not exist yet, to modify an exiting output use\n"
485
+ code += "# update_output_definition instead of create_output_definition, the former\n"
486
+ code += "# requires the definition ID, that is obtained from list_output_definitions.\n"
487
+ output_definitions = self.list_output_definitions()
488
+ for i, definition in enumerate(output_definitions):
489
+ if i == 0:
490
+ code += "outputs = []\n"
491
+ output_code = definition._to_code_helper("new_output", hide_defaults)
492
+ for line in output_code.split("\n"):
493
+ # Omit ID because we are generating for create_output_definition.
494
+ if line and not line.startswith("new_output.id"):
495
+ code += f"{line}\n"
496
+ code += "outputs.append(template.create_output_definition(new_output))\n\n"
497
+
498
+ code += "# Define the basic and output-based stopping conditions.\n"
499
+ gsc = self.get_general_stopping_conditions()
500
+ code += f"template.update_general_stopping_conditions({gsc.max_iterations}, "
501
+ code += f"{gsc.max_physical_time}, {gsc.max_inner_iterations}, {gsc.stop_on_any})\n"
502
+
503
+ for i, sc in enumerate(self.list_stopping_conditions()):
504
+ if i == 0:
505
+ code += "\n# Output-based conditions require the ID of the associated output.\n"
506
+ # Find the old output to use the new ID created by create_output_definition.
507
+ for j, od in enumerate(output_definitions):
508
+ if sc.output_definition_id == od.id:
509
+ code += f"template.create_or_update_stopping_condition(outputs[{j}].id, "
510
+ code += f"{sc.threshold}, {sc.start_at_iteration}, {sc.averaging_iterations}, "
511
+ code += f"{sc.iterations_to_consider})\n"
512
+ break
513
+
514
+ return code
515
+
445
516
 
446
517
  def get_simulation_template(id: SimulationTemplateID) -> SimulationTemplate:
447
518
  """
@@ -9,3 +9,5 @@ SolutionID = NewType("SolutionID", str)
9
9
  SimulationTemplateID = NewType("SimulationTemplateID", str)
10
10
  GeometryFeatureID = NewType("GeometryFeatureID", str)
11
11
  NamedVariableSetID = NewType("NamedVariableSetID", str)
12
+ PhysicsAiArchitectureID = NewType("PhysicsAiArchitectureID", str)
13
+ PhysicsAiModelID = NewType("PhysicsAiModelID", str)
@@ -37,6 +37,3 @@ from .display import (
37
37
  from .interactive_scene import (
38
38
  InteractiveScene as InteractiveScene,
39
39
  )
40
-
41
- from ..enum.vis_enums import *
42
- from ..types.vector3 import Vector3, Vector3Like
@@ -185,4 +185,5 @@ class ColorMap:
185
185
  res.height = self.appearance.height
186
186
  res.lower_left_anchor_location.x = self.appearance.lower_left_x
187
187
  res.lower_left_anchor_location.y = self.appearance.lower_left_y
188
+ res.text_size = self.appearance.text_size
188
189
  return res
@@ -1,5 +1,5 @@
1
1
  from .display import DisplayAttributes
2
- from .filters import SurfaceStreamlines, Filter
2
+ from .filters import SurfaceStreamlines, Filter, SurfaceLIC
3
3
  from .._client import get_default_client
4
4
  from ..enum.vis_enums import EntityType, SceneMode
5
5
  from typing import TYPE_CHECKING, cast
@@ -73,6 +73,12 @@ class InteractiveScene:
73
73
  bad_ids = scene._validate_surfaces_and_tags(streamlines._surface_names)
74
74
  if len(bad_ids) != 0:
75
75
  raise ValueError(f"SurfaceStreamlines has invalid surfaces: {bad_ids}")
76
+ if isinstance(filter, SurfaceLIC):
77
+ # Validate surfaces names
78
+ lic = cast(SurfaceLIC, filter)
79
+ bad_ids = scene._validate_surfaces_and_tags(lic._surface_names)
80
+ if len(bad_ids) != 0:
81
+ raise ValueError(f"SurfaceStreamlines has invalid surfaces: {bad_ids}")
76
82
 
77
83
  if isinstance(filter, Filter):
78
84
  vis_filter: vis_pb2.Filter = filter._to_proto()
@@ -125,8 +131,7 @@ class InteractiveScene:
125
131
  self.widget.reset_camera()
126
132
 
127
133
  def set_camera(self, camera: "LookAtCamera") -> None:
128
- # Clear the camera pan, we should add this to the SDK later
129
- self.widget.camera_pan = [0, 0]
134
+ self.widget.camera_pan = [camera.pan_x, camera.pan_y]
130
135
  self.widget.camera_position = [camera.position[0], camera.position[1], camera.position[2]]
131
136
  self.widget.camera_look_at = [camera.look_at[0], camera.look_at[1], camera.look_at[2]]
132
137
  self.widget.camera_up = [camera.up[0], camera.up[1], camera.up[2]]
@@ -139,6 +144,10 @@ class InteractiveScene:
139
144
  camera.position = self.widget.camera_position
140
145
  camera.look_at = self.widget.camera_look_at
141
146
  camera.up = self.widget.camera_up
147
+ # Immediately after creation, the widget's camera_pan is empty, so avoid going out of bounds
148
+ # and report 0 which is what it would be anyway
149
+ camera.pan_x = self.widget.camera_pan[0] if self.widget.camera_pan else 0
150
+ camera.pan_y = self.widget.camera_pan[1] if self.widget.camera_pan else 0
142
151
  return camera
143
152
 
144
153
  def set_triad_visible(self, visible: bool) -> None:
@@ -1,27 +1,28 @@
1
- from .._proto.api.v0.luminarycloud.vis import vis_pb2
1
+ import dataclasses as dc
2
+ import io
3
+ import json
4
+ import logging
5
+ from time import sleep, time
6
+ from typing import Dict, List, Tuple, cast
7
+
2
8
  import luminarycloud._proto.api.v0.luminarycloud.common.common_pb2 as common_pb2
9
+ import requests
10
+ from luminarycloud.params.simulation.physics.fluid.boundary_conditions import Farfield
11
+ from luminarycloud.types import Vector3, Vector3Like
12
+
3
13
  from .._client import get_default_client
4
- from ..solution import Solution
5
- from ..mesh import get_mesh_metadata, Mesh, get_mesh
6
- from ..geometry import Geometry, get_geometry, Tag
14
+ from .._helpers._get_project_id import _get_project_id
15
+ from .._proto.api.v0.luminarycloud.vis import vis_pb2
7
16
  from ..enum.vis_enums import *
8
- from ..enum.quantity_type import QuantityType
17
+ from ..exceptions import NotFoundError
18
+ from ..geometry import Geometry, get_geometry
19
+ from ..mesh import Mesh, get_mesh, get_mesh_metadata
9
20
  from ..simulation import get_simulation
10
- from .display import DisplayAttributes, ColorMap, Field, ColorMapAppearance
11
- from .filters import Filter, PlaneClip, Slice, BoxClip, SurfaceStreamlines
12
- from luminarycloud.types import Vector3, Vector3Like
21
+ from ..solution import Solution
13
22
  from ..types.vector3 import _to_vector3
14
- from .._helpers._get_project_id import _get_project_id
15
- from ..exceptions import NotFoundError
23
+ from .display import ColorMap, ColorMapAppearance, DisplayAttributes, Field
24
+ from .filters import BoxClip, Filter, PlaneClip, Slice, SurfaceStreamlines, SurfaceLIC
16
25
  from .interactive_scene import InteractiveScene
17
- import io
18
- import json
19
- from luminarycloud._proto.client import simulation_pb2 as clientpb
20
- from typing import List, Tuple, cast, Union, Dict
21
- import requests
22
- from time import time, sleep
23
- import logging
24
- import dataclasses as dc
25
26
 
26
27
  logger = logging.getLogger(__name__)
27
28
 
@@ -87,6 +88,20 @@ class LookAtCamera:
87
88
  """ The width of the output image in pixels. Default: 1024 """
88
89
  height: int = 1024
89
90
  """ The height of the output image in pixels. Default: 1024 """
91
+ pan_x: float = 0
92
+ """
93
+ Pan the camera in the x direction (right). This is a world space value defined in
94
+ the camera coordinate system. Pan is not typically directly set by the user,
95
+ but pan is useful for reproducing camera parameters from an interactive
96
+ scene where pan is used (i.e., control + middle mouse).
97
+ """
98
+ pan_y: float = 0
99
+ """
100
+ Pan the camera in the y direction (up). This is a world space value defined in
101
+ the camera coordinate system. Pan is not typically directly set by the user,
102
+ but pan is useful for reproducing camera parameters from an interactive
103
+ scene where pan is used (i.e., control + middle mouse).
104
+ """
90
105
 
91
106
 
92
107
  class _InternalToken:
@@ -414,8 +429,8 @@ class Scene:
414
429
  params = simulation.get_parameters()
415
430
  for physics in params.physics:
416
431
  if physics.fluid:
417
- for bc in physics.fluid.boundary_conditions_fluid:
418
- if bc.physical_boundary == clientpb.PhysicalBoundary.FARFIELD:
432
+ for bc in physics.fluid.boundary_conditions:
433
+ if isinstance(bc, Farfield):
419
434
  for bc_surface in bc.surfaces:
420
435
  self._far_field_boundary_ids.append(bc_surface)
421
436
 
@@ -547,6 +562,8 @@ class Scene:
547
562
  out_camera.look_at.position.CopyFrom(_to_vector3(lookat.position)._to_proto())
548
563
  out_camera.look_at.up.CopyFrom(_to_vector3(lookat.up)._to_proto())
549
564
  out_camera.look_at.look_at.CopyFrom(_to_vector3(lookat.look_at)._to_proto())
565
+ out_camera.look_at.pan.x = lookat.pan_x
566
+ out_camera.look_at.pan.y = lookat.pan_y
550
567
  elif isinstance(camera, DirectionalCamera):
551
568
  out_camera.direction = camera.direction.value
552
569
  if camera.zoom_in <= 0 or camera.zoom_in > 1:
@@ -589,6 +606,12 @@ class Scene:
589
606
  bad_ids = self._validate_surfaces_and_tags(streamlines._surface_names)
590
607
  if len(bad_ids) != 0:
591
608
  raise ValueError(f"SurfaceStreamlines has invalid surfaces: {bad_ids}")
609
+ if isinstance(filter, SurfaceLIC):
610
+ # Validate surfaces names
611
+ lic = cast(SurfaceLIC, filter)
612
+ bad_ids = self._validate_surfaces_and_tags(lic._surface_names)
613
+ if len(bad_ids) != 0:
614
+ raise ValueError(f"SurfaceLIC has invalid surfaces: {bad_ids}")
592
615
 
593
616
  if isinstance(filter, Filter):
594
617
  vis_filter: vis_pb2.Filter = filter._to_proto()
@@ -633,6 +656,7 @@ class Scene:
633
656
  # processing them above
634
657
  cmap.appearance = ColorMapAppearance()
635
658
  auto_cmaps.append(cmap)
659
+
636
660
  if len(auto_cmaps) != 0:
637
661
  # These are all default contructed, so they all have the same dimentions.
638
662
  # All the coordinates are in normalized device space.
@@ -209,7 +209,7 @@ class VolumeSelection:
209
209
 
210
210
  def subtract(
211
211
  self,
212
- tool_volumes: list[Volume],
212
+ tool_volumes: Iterable[Volume],
213
213
  *,
214
214
  propagate_tags: bool = False,
215
215
  feature_name: str = "Subtract",
@@ -221,7 +221,7 @@ class VolumeSelection:
221
221
 
222
222
  Parameters
223
223
  ----------
224
- tool_volumes : list[Volume]
224
+ tool_volumes : Iterable[Volume]
225
225
  The volumes to subtract from the selected volumes.
226
226
  propagate_tags : bool
227
227
  Whether to propagate the tool volume tags to the surfaces created by the subtraction.
@@ -265,7 +265,7 @@ class VolumeSelection:
265
265
 
266
266
  def chop(
267
267
  self,
268
- tool_volumes: list[Volume],
268
+ tool_volumes: Iterable[Volume],
269
269
  *,
270
270
  propagate_tags: bool = False,
271
271
  feature_name: str = "Chop",
@@ -278,7 +278,7 @@ class VolumeSelection:
278
278
 
279
279
  Parameters
280
280
  ----------
281
- tool_volumes : list[Volume]
281
+ tool_volumes : Iterable[Volume]
282
282
  The volumes to chop the selected volumes with.
283
283
  propagate_tags : bool
284
284
  Whether to propagate the tool volume tags to the surfaces created by the chop.
@@ -460,7 +460,7 @@ class VolumeSelection:
460
460
  self,
461
461
  resolution_min: Optional[float] = None,
462
462
  resolution_max: Optional[float] = None,
463
- tool: Optional[Iterator[VolumeSelection]] = None,
463
+ tool: Optional[Iterable[Volume]] = None,
464
464
  *,
465
465
  feature_name: str = "Shrinkwrap",
466
466
  ) -> None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: luminarycloud
3
- Version: 0.14.1
3
+ Version: 0.15.0
4
4
  Summary: Luminary Cloud SDK
5
5
  Project-URL: Homepage, https://www.luminarycloud.com/
6
6
  Project-URL: Documentation, https://app.luminarycloud.com/docs/api/
@@ -45,6 +45,6 @@ and functionality may change significantly).
45
45
  import luminarycloud as lc
46
46
  project = lc.create_project("NACA 0012", "My first SDK project.")
47
47
  mesh = project.upload_mesh("./airfoil.lcmesh")
48
- sim_template = project.create_simulation_template("test template", "./simulation_template.json")
48
+ sim_template = project.create_simulation_template("test template", params_json_path="./simulation_template.json")
49
49
  sim = project.create_simulation(mesh.id, "My simulation", sim_template.id)
50
50
  ```