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
@@ -17,7 +17,7 @@ from luminarycloud._proto.base import base_pb2 as proto_dot_base_dot_base__pb2
17
17
  from luminarycloud._proto.options import options_pb2 as proto_dot_options_dot_options__pb2
18
18
 
19
19
 
20
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#proto/output/reference_values.proto\x12\x15luminary.proto.output\x1a\x15proto/base/base.proto\x1a\x1bproto/options/options.proto\"\xd9\x07\n\x0fReferenceValues\x12G\n\x14reference_value_type\x18\x01 \x01(\x0e\x32).luminary.proto.output.ReferenceValueType\x12g\n\x08\x61rea_ref\x18\x02 \x01(\x0b\x32 .luminary.proto.base.AdFloatTypeB3\xb8\xb2\x19\n\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\x00\x00\xf0?\x8a\xb2\x19\t\t\x00\x00\x00\x00\x00\x00\x00\x00\x8a\xb2\x19\t\x11\x00\x00\x00 _\xa0\x02\x42\x8a\xb2\x19\x02\x18\x01\x12j\n\nlength_ref\x18\x03 \x01(\x0b\x32 .luminary.proto.base.AdFloatTypeB4\xb8\xb2\x19\x80P\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\x00\x00\xf0?\x8a\xb2\x19\t\t\x00\x00\x00\x00\x00\x00\x00\x00\x8a\xb2\x19\t\x11\x00\x00\x00 _\xa0\x02\x42\x8a\xb2\x19\x02\x18\x01\x12#\n\x1buse_aero_moment_ref_lengths\x18\x07 \x01(\x08\x12p\n\x10length_ref_pitch\x18\x08 \x01(\x0b\x32 .luminary.proto.base.AdFloatTypeB4\xb8\xb2\x19\x80P\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\x00\x00\xf0?\x8a\xb2\x19\t\t\x00\x00\x00\x00\x00\x00\x00\x00\x8a\xb2\x19\t\x11\x00\x00\x00 _\xa0\x02\x42\x8a\xb2\x19\x02\x18\x01\x12o\n\x0flength_ref_roll\x18\t \x01(\x0b\x32 .luminary.proto.base.AdFloatTypeB4\xb8\xb2\x19\x80P\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\x00\x00\xf0?\x8a\xb2\x19\t\t\x00\x00\x00\x00\x00\x00\x00\x00\x8a\xb2\x19\t\x11\x00\x00\x00 _\xa0\x02\x42\x8a\xb2\x19\x02\x18\x01\x12n\n\x0elength_ref_yaw\x18\n \x01(\x0b\x32 .luminary.proto.base.AdFloatTypeB4\xb8\xb2\x19\x80P\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\x00\x00\xf0?\x8a\xb2\x19\t\t\x00\x00\x00\x00\x00\x00\x00\x00\x8a\xb2\x19\t\x11\x00\x00\x00 _\xa0\x02\x42\x8a\xb2\x19\x02\x18\x01\x12\x64\n\x05p_ref\x18\x04 \x01(\x0b\x32 .luminary.proto.base.AdFloatTypeB3\xb8\xb2\x19\x02\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\xd0\xbc\xf8@\x8a\xb2\x19\t\t\x00\x00\x00\x00\x00\x00\x00\x00\x8a\xb2\x19\t\x11\x00\x00\x00 _\xa0\x02\x42\x8a\xb2\x19\x02\x18\x01\x12\x64\n\x05t_ref\x18\x05 \x01(\x0b\x32 .luminary.proto.base.AdFloatTypeB3\xb8\xb2\x19\x03\x82\xb2\x19\x0b\n\t\tfffff\x02r@\x8a\xb2\x19\t\t\x00\x00\x00\x00\x00\x00\x00\x00\x8a\xb2\x19\t\x11\x00\x00\x00 _\xa0\x02\x42\x8a\xb2\x19\x02\x18\x01\x12\x64\n\x05v_ref\x18\x06 \x01(\x0b\x32 .luminary.proto.base.AdFloatTypeB3\xb8\xb2\x19\x05\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\x00\x00\xf0?\x8a\xb2\x19\t\t\x00\x00\x00\x00\x00\x00\x00\x00\x8a\xb2\x19\t\x11\x00\x00\x00 _\xa0\x02\x42\x8a\xb2\x19\x02\x18\x01*q\n\x12ReferenceValueType\x12\x1c\n\x18REFERENCE_VALUES_INVALID\x10\x00\x12\x1e\n\x1aREFERENCE_PRESCRIBE_VALUES\x10\x01\x12\x1d\n\x19REFERENCE_FARFIELD_VALUES\x10\x02\x42%Z#luminarycloud.com/core/proto/outputb\x06proto3')
20
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#proto/output/reference_values.proto\x12\x15luminary.proto.output\x1a\x15proto/base/base.proto\x1a\x1bproto/options/options.proto\"\xcc\x07\n\x0fReferenceValues\x12G\n\x14reference_value_type\x18\x01 \x01(\x0e\x32).luminary.proto.output.ReferenceValueType\x12g\n\x08\x61rea_ref\x18\x02 \x01(\x0b\x32 .luminary.proto.base.AdFloatTypeB3\xb8\xb2\x19\n\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\x00\x00\xf0?\x8a\xb2\x19\t\t\x00\x00\x00\x00\x00\x00\x00\x00\x8a\xb2\x19\t\x11\x00\x00\x00 _\xa0\x02\x42\x8a\xb2\x19\x02\x18\x01\x12j\n\nlength_ref\x18\x03 \x01(\x0b\x32 .luminary.proto.base.AdFloatTypeB4\xb8\xb2\x19\x80P\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\x00\x00\xf0?\x8a\xb2\x19\t\t\x00\x00\x00\x00\x00\x00\x00\x00\x8a\xb2\x19\t\x11\x00\x00\x00 _\xa0\x02\x42\x8a\xb2\x19\x02\x18\x01\x12#\n\x1buse_aero_moment_ref_lengths\x18\x07 \x01(\x08\x12p\n\x10length_ref_pitch\x18\x08 \x01(\x0b\x32 .luminary.proto.base.AdFloatTypeB4\xb8\xb2\x19\x80P\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\x00\x00\xf0?\x8a\xb2\x19\t\t\x00\x00\x00\x00\x00\x00\x00\x00\x8a\xb2\x19\t\x11\x00\x00\x00 _\xa0\x02\x42\x8a\xb2\x19\x02\x18\x01\x12o\n\x0flength_ref_roll\x18\t \x01(\x0b\x32 .luminary.proto.base.AdFloatTypeB4\xb8\xb2\x19\x80P\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\x00\x00\xf0?\x8a\xb2\x19\t\t\x00\x00\x00\x00\x00\x00\x00\x00\x8a\xb2\x19\t\x11\x00\x00\x00 _\xa0\x02\x42\x8a\xb2\x19\x02\x18\x01\x12n\n\x0elength_ref_yaw\x18\n \x01(\x0b\x32 .luminary.proto.base.AdFloatTypeB4\xb8\xb2\x19\x80P\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\x00\x00\xf0?\x8a\xb2\x19\t\t\x00\x00\x00\x00\x00\x00\x00\x00\x8a\xb2\x19\t\x11\x00\x00\x00 _\xa0\x02\x42\x8a\xb2\x19\x02\x18\x01\x12\x64\n\x05p_ref\x18\x04 \x01(\x0b\x32 .luminary.proto.base.AdFloatTypeB3\xb8\xb2\x19\x02\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\xd0\xbc\xf8@\x8a\xb2\x19\t\t\x00\x00\x00\x00\x00\x00\x00\x00\x8a\xb2\x19\t\x11\x00\x00\x00 _\xa0\x02\x42\x8a\xb2\x19\x02\x18\x01\x12W\n\x05t_ref\x18\x05 \x01(\x0b\x32 .luminary.proto.base.AdFloatTypeB&\xb8\xb2\x19\x03\x82\xb2\x19\x0b\n\t\tfffff\x02r@\x8a\xb2\x19\t\x11\x00\x00\x00 _\xa0\x02\x42\x8a\xb2\x19\x02\x18\x01\x12\x64\n\x05v_ref\x18\x06 \x01(\x0b\x32 .luminary.proto.base.AdFloatTypeB3\xb8\xb2\x19\x05\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\x00\x00\xf0?\x8a\xb2\x19\t\t\x00\x00\x00\x00\x00\x00\x00\x00\x8a\xb2\x19\t\x11\x00\x00\x00 _\xa0\x02\x42\x8a\xb2\x19\x02\x18\x01*q\n\x12ReferenceValueType\x12\x1c\n\x18REFERENCE_VALUES_INVALID\x10\x00\x12\x1e\n\x1aREFERENCE_PRESCRIBE_VALUES\x10\x01\x12\x1d\n\x19REFERENCE_FARFIELD_VALUES\x10\x02\x42%Z#luminarycloud.com/core/proto/outputb\x06proto3')
21
21
 
22
22
  _REFERENCEVALUETYPE = DESCRIPTOR.enum_types_by_name['ReferenceValueType']
23
23
  ReferenceValueType = enum_type_wrapper.EnumTypeWrapper(_REFERENCEVALUETYPE)
@@ -51,11 +51,11 @@ if _descriptor._USE_C_DESCRIPTORS == False:
51
51
  _REFERENCEVALUES.fields_by_name['p_ref']._options = None
52
52
  _REFERENCEVALUES.fields_by_name['p_ref']._serialized_options = b'\270\262\031\002\202\262\031\013\n\t\t\000\000\000\000\320\274\370@\212\262\031\t\t\000\000\000\000\000\000\000\000\212\262\031\t\021\000\000\000 _\240\002B\212\262\031\002\030\001'
53
53
  _REFERENCEVALUES.fields_by_name['t_ref']._options = None
54
- _REFERENCEVALUES.fields_by_name['t_ref']._serialized_options = b'\270\262\031\003\202\262\031\013\n\t\tfffff\002r@\212\262\031\t\t\000\000\000\000\000\000\000\000\212\262\031\t\021\000\000\000 _\240\002B\212\262\031\002\030\001'
54
+ _REFERENCEVALUES.fields_by_name['t_ref']._serialized_options = b'\270\262\031\003\202\262\031\013\n\t\tfffff\002r@\212\262\031\t\021\000\000\000 _\240\002B\212\262\031\002\030\001'
55
55
  _REFERENCEVALUES.fields_by_name['v_ref']._options = None
56
56
  _REFERENCEVALUES.fields_by_name['v_ref']._serialized_options = b'\270\262\031\005\202\262\031\013\n\t\t\000\000\000\000\000\000\360?\212\262\031\t\t\000\000\000\000\000\000\000\000\212\262\031\t\021\000\000\000 _\240\002B\212\262\031\002\030\001'
57
- _REFERENCEVALUETYPE._serialized_start=1102
58
- _REFERENCEVALUETYPE._serialized_end=1215
57
+ _REFERENCEVALUETYPE._serialized_start=1089
58
+ _REFERENCEVALUETYPE._serialized_end=1202
59
59
  _REFERENCEVALUES._serialized_start=115
60
- _REFERENCEVALUES._serialized_end=1100
60
+ _REFERENCEVALUES._serialized_end=1087
61
61
  # @@protoc_insertion_point(module_scope)
@@ -15,12 +15,12 @@ _sym_db = _symbol_database.Default()
15
15
  from luminarycloud._proto.base import base_pb2 as proto_dot_base_dot_base__pb2
16
16
 
17
17
 
18
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n-proto/parametricworker/parametricworker.proto\x12\x1fluminary.proto.parametricworker\x1a\x15proto/base/base.proto\"\x9c\x02\n\tParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x12\n\x05owner\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x41\n\x05\x66loat\x18\x04 \x01(\x0b\x32\x30.luminary.proto.parametricworker.Parameter.FloatH\x00\x1an\n\x05\x46loat\x12\x31\n\x07\x61\x64_type\x18\x01 \x01(\x0b\x32 .luminary.proto.base.AdFloatType\x12\x10\n\x03min\x18\x02 \x01(\x01H\x00\x88\x01\x01\x12\x10\n\x03max\x18\x03 \x01(\x01H\x01\x88\x01\x01\x42\x06\n\x04_minB\x06\n\x04_maxB\x06\n\x04typeB\x08\n\x06_ownerB\x0e\n\x0c_description\"\x1b\n\x0bOpenRequest\x12\x0c\n\x04path\x18\x01 \x01(\t\"\x0b\n\tOpenReply\"\x16\n\x14GetParametersRequest\"T\n\x12GetParametersReply\x12>\n\nparameters\x18\x01 \x03(\x0b\x32*.luminary.proto.parametricworker.Parameter\"Y\n\x17UpdateParametersRequest\x12>\n\nparameters\x18\x01 \x03(\x0b\x32*.luminary.proto.parametricworker.Parameter\"\x17\n\x15UpdateParametersReply\"\x1c\n\rExportRequest\x12\x0b\n\x03\x64ir\x18\x01 \x01(\t\"\x1b\n\x0b\x45xportReply\x12\x0c\n\x04path\x18\x01 \x01(\t\"\x11\n\x0fShutdownRequest\"\x0f\n\rShutdownReply2\xce\x04\n\x10ParametricWorker\x12`\n\x04Open\x12,.luminary.proto.parametricworker.OpenRequest\x1a*.luminary.proto.parametricworker.OpenReply\x12{\n\rGetParameters\x12\x35.luminary.proto.parametricworker.GetParametersRequest\x1a\x33.luminary.proto.parametricworker.GetParametersReply\x12\x84\x01\n\x10UpdateParameters\x12\x38.luminary.proto.parametricworker.UpdateParametersRequest\x1a\x36.luminary.proto.parametricworker.UpdateParametersReply\x12\x66\n\x06\x45xport\x12..luminary.proto.parametricworker.ExportRequest\x1a,.luminary.proto.parametricworker.ExportReply\x12l\n\x08Shutdown\x12\x30.luminary.proto.parametricworker.ShutdownRequest\x1a..luminary.proto.parametricworker.ShutdownReplyB/Z-luminarycloud.com/core/proto/parametricworkerb\x06proto3')
18
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n-proto/parametricworker/parametricworker.proto\x12\x1fluminary.proto.parametricworker\x1a\x15proto/base/base.proto\"\xa4\x02\n\tParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x12\n\x05owner\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x45\n\x05\x66loat\x18\x04 \x01(\x0b\x32\x34.luminary.proto.parametricworker.Parameter.FloatTypeH\x00\x1ar\n\tFloatType\x12\x31\n\x07\x61\x64_type\x18\x01 \x01(\x0b\x32 .luminary.proto.base.AdFloatType\x12\x10\n\x03min\x18\x02 \x01(\x01H\x00\x88\x01\x01\x12\x10\n\x03max\x18\x03 \x01(\x01H\x01\x88\x01\x01\x42\x06\n\x04_minB\x06\n\x04_maxB\x06\n\x04typeB\x08\n\x06_ownerB\x0e\n\x0c_description\"\x1b\n\x0bOpenRequest\x12\x0c\n\x04path\x18\x01 \x01(\t\"\x0b\n\tOpenReply\"\x16\n\x14GetParametersRequest\"T\n\x12GetParametersReply\x12>\n\nparameters\x18\x01 \x03(\x0b\x32*.luminary.proto.parametricworker.Parameter\"Y\n\x17UpdateParametersRequest\x12>\n\nparameters\x18\x01 \x03(\x0b\x32*.luminary.proto.parametricworker.Parameter\"\x17\n\x15UpdateParametersReply\"\x1c\n\rExportRequest\x12\x0b\n\x03\x64ir\x18\x01 \x01(\t\"\x1b\n\x0b\x45xportReply\x12\x0c\n\x04path\x18\x01 \x01(\t\"\x11\n\x0fShutdownRequest\"\x0f\n\rShutdownReply2\xce\x04\n\x10ParametricWorker\x12`\n\x04Open\x12,.luminary.proto.parametricworker.OpenRequest\x1a*.luminary.proto.parametricworker.OpenReply\x12{\n\rGetParameters\x12\x35.luminary.proto.parametricworker.GetParametersRequest\x1a\x33.luminary.proto.parametricworker.GetParametersReply\x12\x84\x01\n\x10UpdateParameters\x12\x38.luminary.proto.parametricworker.UpdateParametersRequest\x1a\x36.luminary.proto.parametricworker.UpdateParametersReply\x12\x66\n\x06\x45xport\x12..luminary.proto.parametricworker.ExportRequest\x1a,.luminary.proto.parametricworker.ExportReply\x12l\n\x08Shutdown\x12\x30.luminary.proto.parametricworker.ShutdownRequest\x1a..luminary.proto.parametricworker.ShutdownReplyB/Z-luminarycloud.com/core/proto/parametricworkerb\x06proto3')
19
19
 
20
20
 
21
21
 
22
22
  _PARAMETER = DESCRIPTOR.message_types_by_name['Parameter']
23
- _PARAMETER_FLOAT = _PARAMETER.nested_types_by_name['Float']
23
+ _PARAMETER_FLOATTYPE = _PARAMETER.nested_types_by_name['FloatType']
24
24
  _OPENREQUEST = DESCRIPTOR.message_types_by_name['OpenRequest']
25
25
  _OPENREPLY = DESCRIPTOR.message_types_by_name['OpenReply']
26
26
  _GETPARAMETERSREQUEST = DESCRIPTOR.message_types_by_name['GetParametersRequest']
@@ -33,10 +33,10 @@ _SHUTDOWNREQUEST = DESCRIPTOR.message_types_by_name['ShutdownRequest']
33
33
  _SHUTDOWNREPLY = DESCRIPTOR.message_types_by_name['ShutdownReply']
34
34
  Parameter = _reflection.GeneratedProtocolMessageType('Parameter', (_message.Message,), {
35
35
 
36
- 'Float' : _reflection.GeneratedProtocolMessageType('Float', (_message.Message,), {
37
- 'DESCRIPTOR' : _PARAMETER_FLOAT,
36
+ 'FloatType' : _reflection.GeneratedProtocolMessageType('FloatType', (_message.Message,), {
37
+ 'DESCRIPTOR' : _PARAMETER_FLOATTYPE,
38
38
  '__module__' : 'proto.parametricworker.parametricworker_pb2'
39
- # @@protoc_insertion_point(class_scope:luminary.proto.parametricworker.Parameter.Float)
39
+ # @@protoc_insertion_point(class_scope:luminary.proto.parametricworker.Parameter.FloatType)
40
40
  })
41
41
  ,
42
42
  'DESCRIPTOR' : _PARAMETER,
@@ -44,7 +44,7 @@ Parameter = _reflection.GeneratedProtocolMessageType('Parameter', (_message.Mess
44
44
  # @@protoc_insertion_point(class_scope:luminary.proto.parametricworker.Parameter)
45
45
  })
46
46
  _sym_db.RegisterMessage(Parameter)
47
- _sym_db.RegisterMessage(Parameter.Float)
47
+ _sym_db.RegisterMessage(Parameter.FloatType)
48
48
 
49
49
  OpenRequest = _reflection.GeneratedProtocolMessageType('OpenRequest', (_message.Message,), {
50
50
  'DESCRIPTOR' : _OPENREQUEST,
@@ -122,29 +122,29 @@ if _descriptor._USE_C_DESCRIPTORS == False:
122
122
  DESCRIPTOR._options = None
123
123
  DESCRIPTOR._serialized_options = b'Z-luminarycloud.com/core/proto/parametricworker'
124
124
  _PARAMETER._serialized_start=106
125
- _PARAMETER._serialized_end=390
126
- _PARAMETER_FLOAT._serialized_start=246
127
- _PARAMETER_FLOAT._serialized_end=356
128
- _OPENREQUEST._serialized_start=392
129
- _OPENREQUEST._serialized_end=419
130
- _OPENREPLY._serialized_start=421
131
- _OPENREPLY._serialized_end=432
132
- _GETPARAMETERSREQUEST._serialized_start=434
133
- _GETPARAMETERSREQUEST._serialized_end=456
134
- _GETPARAMETERSREPLY._serialized_start=458
135
- _GETPARAMETERSREPLY._serialized_end=542
136
- _UPDATEPARAMETERSREQUEST._serialized_start=544
137
- _UPDATEPARAMETERSREQUEST._serialized_end=633
138
- _UPDATEPARAMETERSREPLY._serialized_start=635
139
- _UPDATEPARAMETERSREPLY._serialized_end=658
140
- _EXPORTREQUEST._serialized_start=660
141
- _EXPORTREQUEST._serialized_end=688
142
- _EXPORTREPLY._serialized_start=690
143
- _EXPORTREPLY._serialized_end=717
144
- _SHUTDOWNREQUEST._serialized_start=719
145
- _SHUTDOWNREQUEST._serialized_end=736
146
- _SHUTDOWNREPLY._serialized_start=738
147
- _SHUTDOWNREPLY._serialized_end=753
148
- _PARAMETRICWORKER._serialized_start=756
149
- _PARAMETRICWORKER._serialized_end=1346
125
+ _PARAMETER._serialized_end=398
126
+ _PARAMETER_FLOATTYPE._serialized_start=250
127
+ _PARAMETER_FLOATTYPE._serialized_end=364
128
+ _OPENREQUEST._serialized_start=400
129
+ _OPENREQUEST._serialized_end=427
130
+ _OPENREPLY._serialized_start=429
131
+ _OPENREPLY._serialized_end=440
132
+ _GETPARAMETERSREQUEST._serialized_start=442
133
+ _GETPARAMETERSREQUEST._serialized_end=464
134
+ _GETPARAMETERSREPLY._serialized_start=466
135
+ _GETPARAMETERSREPLY._serialized_end=550
136
+ _UPDATEPARAMETERSREQUEST._serialized_start=552
137
+ _UPDATEPARAMETERSREQUEST._serialized_end=641
138
+ _UPDATEPARAMETERSREPLY._serialized_start=643
139
+ _UPDATEPARAMETERSREPLY._serialized_end=666
140
+ _EXPORTREQUEST._serialized_start=668
141
+ _EXPORTREQUEST._serialized_end=696
142
+ _EXPORTREPLY._serialized_start=698
143
+ _EXPORTREPLY._serialized_end=725
144
+ _SHUTDOWNREQUEST._serialized_start=727
145
+ _SHUTDOWNREQUEST._serialized_end=744
146
+ _SHUTDOWNREPLY._serialized_start=746
147
+ _SHUTDOWNREPLY._serialized_end=761
148
+ _PARAMETRICWORKER._serialized_start=764
149
+ _PARAMETRICWORKER._serialized_end=1354
150
150
  # @@protoc_insertion_point(module_scope)
@@ -23,7 +23,7 @@ class Parameter(google.protobuf.message.Message):
23
23
 
24
24
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
25
25
 
26
- class Float(google.protobuf.message.Message):
26
+ class FloatType(google.protobuf.message.Message):
27
27
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
28
28
 
29
29
  AD_TYPE_FIELD_NUMBER: builtins.int
@@ -54,18 +54,20 @@ class Parameter(google.protobuf.message.Message):
54
54
  name: builtins.str
55
55
  """Name of the parameter."""
56
56
  owner: builtins.str
57
- """Owner of the parameter, e.g., object/mesh in Blender."""
57
+ """Owner of the parameter, e.g., object/mesh in Blender.
58
+ Required for Blender.
59
+ """
58
60
  description: builtins.str
59
61
  """Description of the parameter."""
60
62
  @property
61
- def float(self) -> global___Parameter.Float: ...
63
+ def float(self) -> global___Parameter.FloatType: ...
62
64
  def __init__(
63
65
  self,
64
66
  *,
65
67
  name: builtins.str = ...,
66
68
  owner: builtins.str | None = ...,
67
69
  description: builtins.str | None = ...,
68
- float: global___Parameter.Float | None = ...,
70
+ float: global___Parameter.FloatType | None = ...,
69
71
  ) -> None: ...
70
72
  def HasField(self, field_name: typing_extensions.Literal["_description", b"_description", "_owner", b"_owner", "description", b"description", "float", b"float", "owner", b"owner", "type", b"type"]) -> builtins.bool: ...
71
73
  def ClearField(self, field_name: typing_extensions.Literal["_description", b"_description", "_owner", b"_owner", "description", b"description", "float", b"float", "name", b"name", "owner", b"owner", "type", b"type"]) -> None: ...
@@ -17,7 +17,7 @@ from luminarycloud._proto.base import base_pb2 as proto_dot_base_dot_base__pb2
17
17
  from luminarycloud._proto.quantity import quantity_pb2 as proto_dot_quantity_dot_quantity__pb2
18
18
 
19
19
 
20
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17proto/table/table.proto\x12\x14luminary.proto.table\x1a\x15proto/base/base.proto\x1a\x1dproto/quantity/quantity.proto\"\xca\x01\n\x10RectilinearTable\x12\x30\n\x08metadata\x18\x01 \x01(\x0b\x32\x1e.luminary.proto.table.Metadata\x12,\n\x06header\x18\x02 \x01(\x0b\x32\x1c.luminary.proto.table.Header\x12(\n\x04\x61xis\x18\x03 \x03(\x0b\x32\x1a.luminary.proto.table.Axis\x12,\n\x06record\x18\x04 \x03(\x0b\x32\x1c.luminary.proto.table.Record\"\x8c\x01\n\x04\x41xis\x12\x39\n\ncoordinate\x18\x01 \x03(\x0b\x32%.luminary.proto.table.Axis.Coordinate\x1aI\n\nCoordinate\x12\x33\n\x07\x61\x64\x66loat\x18\x01 \x01(\x0b\x32 .luminary.proto.base.AdFloatTypeH\x00\x42\x06\n\x04type\"\xd8\x01\n\x06Record\x12\x31\n\x05\x65ntry\x18\x01 \x03(\x0b\x32\".luminary.proto.table.Record.Entry\x1a\x9a\x01\n\x05\x45ntry\x12\x33\n\x07\x61\x64\x66loat\x18\x01 \x01(\x0b\x32 .luminary.proto.base.AdFloatTypeH\x00\x12\x10\n\x06string\x18\x02 \x01(\tH\x00\x12\x39\n\x05\x65mpty\x18\x03 \x01(\x0b\x32(.luminary.proto.table.Record.Entry.EmptyH\x00\x1a\x07\n\x05\x45mptyB\x06\n\x04type\"\xf5\x01\n\x06Header\x12\x36\n\naxis_label\x18\x01 \x03(\x0b\x32\".luminary.proto.table.Header.Label\x12\x38\n\x0crecord_label\x18\x02 \x03(\x0b\x32\".luminary.proto.table.Header.Label\x12\x1d\n\x15\x61llow_missing_entries\x18\x04 \x01(\x08\x1aZ\n\x05Label\x12\x39\n\x08quantity\x18\x01 \x01(\x0e\x32%.luminary.proto.quantity.QuantityTypeH\x00\x12\x0e\n\x04name\x18\x02 \x01(\tH\x00\x42\x06\n\x04type\"g\n\x08Metadata\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x33\n\ntable_type\x18\x02 \x01(\x0e\x32\x1f.luminary.proto.table.TableType\x12\x19\n\x11uploaded_filename\x18\x03 \x01(\t*\xba\x01\n\tTableType\x12\x0b\n\x07INVALID\x10\x00\x12\x12\n\x0eMONITOR_POINTS\x10\x01\x12\x17\n\x13RADIAL_DISTRIBUTION\x10\x02\x12\x12\n\x0e\x42LADE_GEOMETRY\x10\x03\x12\x17\n\x13\x41IRFOIL_PERFORMANCE\x10\x04\x12\x0e\n\nPROFILE_BC\x10\x05\x12\r\n\tFAN_CURVE\x10\x06\x12\x15\n\x11\x43USTOM_SAMPLE_DOE\x10\x07\x12\x10\n\x0cTEMP_VARYING\x10\x08\x42$Z\"luminarycloud.com/core/proto/tableb\x06proto3')
20
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17proto/table/table.proto\x12\x14luminary.proto.table\x1a\x15proto/base/base.proto\x1a\x1dproto/quantity/quantity.proto\"\xca\x01\n\x10RectilinearTable\x12\x30\n\x08metadata\x18\x01 \x01(\x0b\x32\x1e.luminary.proto.table.Metadata\x12,\n\x06header\x18\x02 \x01(\x0b\x32\x1c.luminary.proto.table.Header\x12(\n\x04\x61xis\x18\x03 \x03(\x0b\x32\x1a.luminary.proto.table.Axis\x12,\n\x06record\x18\x04 \x03(\x0b\x32\x1c.luminary.proto.table.Record\"\x8c\x01\n\x04\x41xis\x12\x39\n\ncoordinate\x18\x01 \x03(\x0b\x32%.luminary.proto.table.Axis.Coordinate\x1aI\n\nCoordinate\x12\x33\n\x07\x61\x64\x66loat\x18\x01 \x01(\x0b\x32 .luminary.proto.base.AdFloatTypeH\x00\x42\x06\n\x04type\"\xd8\x01\n\x06Record\x12\x31\n\x05\x65ntry\x18\x01 \x03(\x0b\x32\".luminary.proto.table.Record.Entry\x1a\x9a\x01\n\x05\x45ntry\x12\x33\n\x07\x61\x64\x66loat\x18\x01 \x01(\x0b\x32 .luminary.proto.base.AdFloatTypeH\x00\x12\x10\n\x06string\x18\x02 \x01(\tH\x00\x12\x39\n\x05\x65mpty\x18\x03 \x01(\x0b\x32(.luminary.proto.table.Record.Entry.EmptyH\x00\x1a\x07\n\x05\x45mptyB\x06\n\x04type\"\x95\x02\n\x06Header\x12\x36\n\naxis_label\x18\x01 \x03(\x0b\x32\".luminary.proto.table.Header.Label\x12\x38\n\x0crecord_label\x18\x02 \x03(\x0b\x32\".luminary.proto.table.Header.Label\x12\x1d\n\x15\x61llow_missing_entries\x18\x04 \x01(\x08\x12\x1e\n\x16skip_header_validation\x18\x05 \x01(\x08\x1aZ\n\x05Label\x12\x39\n\x08quantity\x18\x01 \x01(\x0e\x32%.luminary.proto.quantity.QuantityTypeH\x00\x12\x0e\n\x04name\x18\x02 \x01(\tH\x00\x42\x06\n\x04type\"g\n\x08Metadata\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x33\n\ntable_type\x18\x02 \x01(\x0e\x32\x1f.luminary.proto.table.TableType\x12\x19\n\x11uploaded_filename\x18\x03 \x01(\t*\xcd\x01\n\tTableType\x12\x0b\n\x07INVALID\x10\x00\x12\x12\n\x0eMONITOR_POINTS\x10\x01\x12\x17\n\x13RADIAL_DISTRIBUTION\x10\x02\x12\x12\n\x0e\x42LADE_GEOMETRY\x10\x03\x12\x17\n\x13\x41IRFOIL_PERFORMANCE\x10\x04\x12\x0e\n\nPROFILE_BC\x10\x05\x12\r\n\tFAN_CURVE\x10\x06\x12\x15\n\x11\x43USTOM_SAMPLE_DOE\x10\x07\x12\x10\n\x0cTEMP_VARYING\x10\x08\x12\x11\n\rPROFILE_BC_2D\x10\tB$Z\"luminarycloud.com/core/proto/tableb\x06proto3')
21
21
 
22
22
  _TABLETYPE = DESCRIPTOR.enum_types_by_name['TableType']
23
23
  TableType = enum_type_wrapper.EnumTypeWrapper(_TABLETYPE)
@@ -30,6 +30,7 @@ PROFILE_BC = 5
30
30
  FAN_CURVE = 6
31
31
  CUSTOM_SAMPLE_DOE = 7
32
32
  TEMP_VARYING = 8
33
+ PROFILE_BC_2D = 9
33
34
 
34
35
 
35
36
  _RECTILINEARTABLE = DESCRIPTOR.message_types_by_name['RectilinearTable']
@@ -112,8 +113,8 @@ if _descriptor._USE_C_DESCRIPTORS == False:
112
113
 
113
114
  DESCRIPTOR._options = None
114
115
  DESCRIPTOR._serialized_options = b'Z\"luminarycloud.com/core/proto/table'
115
- _TABLETYPE._serialized_start=1024
116
- _TABLETYPE._serialized_end=1210
116
+ _TABLETYPE._serialized_start=1056
117
+ _TABLETYPE._serialized_end=1261
117
118
  _RECTILINEARTABLE._serialized_start=104
118
119
  _RECTILINEARTABLE._serialized_end=306
119
120
  _AXIS._serialized_start=309
@@ -127,9 +128,9 @@ if _descriptor._USE_C_DESCRIPTORS == False:
127
128
  _RECORD_ENTRY_EMPTY._serialized_start=653
128
129
  _RECORD_ENTRY_EMPTY._serialized_end=660
129
130
  _HEADER._serialized_start=671
130
- _HEADER._serialized_end=916
131
- _HEADER_LABEL._serialized_start=826
132
- _HEADER_LABEL._serialized_end=916
133
- _METADATA._serialized_start=918
134
- _METADATA._serialized_end=1021
131
+ _HEADER._serialized_end=948
132
+ _HEADER_LABEL._serialized_start=858
133
+ _HEADER_LABEL._serialized_end=948
134
+ _METADATA._serialized_start=950
135
+ _METADATA._serialized_end=1053
135
136
  # @@protoc_insertion_point(module_scope)
@@ -35,6 +35,7 @@ class _TableTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._Enum
35
35
  FAN_CURVE: _TableType.ValueType # 6
36
36
  CUSTOM_SAMPLE_DOE: _TableType.ValueType # 7
37
37
  TEMP_VARYING: _TableType.ValueType # 8
38
+ PROFILE_BC_2D: _TableType.ValueType # 9
38
39
 
39
40
  class TableType(_TableType, metaclass=_TableTypeEnumTypeWrapper):
40
41
  """These table types are written to gcs by the frontend.
@@ -50,6 +51,7 @@ PROFILE_BC: TableType.ValueType # 5
50
51
  FAN_CURVE: TableType.ValueType # 6
51
52
  CUSTOM_SAMPLE_DOE: TableType.ValueType # 7
52
53
  TEMP_VARYING: TableType.ValueType # 8
54
+ PROFILE_BC_2D: TableType.ValueType # 9
53
55
  global___TableType = TableType
54
56
 
55
57
  class RectilinearTable(google.protobuf.message.Message):
@@ -198,19 +200,23 @@ class Header(google.protobuf.message.Message):
198
200
  AXIS_LABEL_FIELD_NUMBER: builtins.int
199
201
  RECORD_LABEL_FIELD_NUMBER: builtins.int
200
202
  ALLOW_MISSING_ENTRIES_FIELD_NUMBER: builtins.int
203
+ SKIP_HEADER_VALIDATION_FIELD_NUMBER: builtins.int
201
204
  @property
202
205
  def axis_label(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Header.Label]: ...
203
206
  @property
204
207
  def record_label(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Header.Label]: ...
205
208
  allow_missing_entries: builtins.bool
209
+ skip_header_validation: builtins.bool
210
+ """If true, skips validation of the header (in c++)."""
206
211
  def __init__(
207
212
  self,
208
213
  *,
209
214
  axis_label: collections.abc.Iterable[global___Header.Label] | None = ...,
210
215
  record_label: collections.abc.Iterable[global___Header.Label] | None = ...,
211
216
  allow_missing_entries: builtins.bool = ...,
217
+ skip_header_validation: builtins.bool = ...,
212
218
  ) -> None: ...
213
- def ClearField(self, field_name: typing_extensions.Literal["allow_missing_entries", b"allow_missing_entries", "axis_label", b"axis_label", "record_label", b"record_label"]) -> None: ...
219
+ def ClearField(self, field_name: typing_extensions.Literal["allow_missing_entries", b"allow_missing_entries", "axis_label", b"axis_label", "record_label", b"record_label", "skip_header_validation", b"skip_header_validation"]) -> None: ...
214
220
 
215
221
  global___Header = Header
216
222
 
@@ -2,6 +2,7 @@
2
2
  from .averaging_type import AveragingType
3
3
  from .calculation_type import CalculationType
4
4
  from .force_direction_type import ForceDirectionType
5
+ from .geometry_status import GeometryStatus
5
6
  from .gpu_type import GPUType
6
7
  from .mesh_status import MeshStatus
7
8
  from .mesh_type import MeshType
@@ -24,5 +25,6 @@ from .vis_enums import (
24
25
  RenderStatusType,
25
26
  Representation,
26
27
  VisQuantity,
28
+ SurfaceStreamlineMode,
27
29
  )
28
30
  from .volume_reduction_type import VolumeReductionType
@@ -0,0 +1,28 @@
1
+ # Copyright 2023-2024 Luminary Cloud, Inc. All Rights Reserved.
2
+ from enum import IntEnum
3
+ from .._proto.api.v0.luminarycloud.geometry import geometry_pb2
4
+
5
+
6
+ class GeometryStatus(IntEnum):
7
+ """
8
+ Represents the status of a geometry.
9
+
10
+ Attributes
11
+ ----------
12
+ UNKNOWN
13
+ Status is unknown.
14
+ IMPORTING
15
+ Geometry is still being processed.
16
+ NEEDS_CHECK
17
+ Geometry was created but has not yet been checked.
18
+ FAILED_CHECK
19
+ Geometry is not well-formed and cannot be used.
20
+ READY
21
+ Geometry is ready to use.
22
+ """
23
+
24
+ UNKNOWN = geometry_pb2.Geometry.UNKNOWN
25
+ IMPORTING = geometry_pb2.Geometry.IMPORTING
26
+ NEEDS_CHECK = geometry_pb2.Geometry.NEEDS_CHECK
27
+ FAILED_CHECK = geometry_pb2.Geometry.FAILED_CHECK
28
+ READY = geometry_pb2.Geometry.READY
luminarycloud/geometry.py CHANGED
@@ -5,8 +5,9 @@ from datetime import datetime
5
5
  import random
6
6
  from uuid import uuid4
7
7
  import time
8
+ from typing import Sequence
8
9
 
9
- from typing_extensions import TYPE_CHECKING, Sequence
10
+ from typing_extensions import TYPE_CHECKING
10
11
 
11
12
  import luminarycloud as lc
12
13
 
@@ -14,7 +15,7 @@ from ._client import get_default_client
14
15
  from ._helpers._timestamp_to_datetime import timestamp_to_datetime
15
16
  from ._proto.api.v0.luminarycloud.geometry import geometry_pb2 as geometrypb
16
17
  from ._proto.geometry import geometry_pb2 as gpb
17
-
18
+ from .enum import GeometryStatus
18
19
  from .params.geometry import Surface, Volume
19
20
  from .tag import Tag
20
21
  from ._wrapper import ProtoWrapper, ProtoWrapperBase
@@ -37,6 +38,8 @@ class Geometry(ProtoWrapperBase):
37
38
  "Geometry ID."
38
39
  name: str
39
40
  "Geometry name."
41
+ status: GeometryStatus
42
+ "The status of the geometry."
40
43
 
41
44
  _proto: geometrypb.Geometry
42
45
 
@@ -47,29 +50,18 @@ class Geometry(ProtoWrapperBase):
47
50
  """
48
51
  return timestamp_to_datetime(self._proto.create_time)
49
52
 
50
- def project(self) -> "Project":
53
+ @property
54
+ def update_time(self) -> datetime:
51
55
  """
52
- Get the project this geometry belongs to.
56
+ The time the geometry was last updated.
53
57
  """
54
- return lc.get_project(ProjectID(self._proto.project_id))
58
+ return timestamp_to_datetime(self._proto.update_time)
55
59
 
56
- def modify(self, modification: gpb.Modification) -> None:
60
+ def project(self) -> "Project":
57
61
  """
58
- Apply a modification to the geometry.
59
-
60
- Parameters
61
- ----------
62
- modification : Modification
63
- The modification to apply to the geometry. If the modification type is
64
- `MODIFICATION_TYPE_CREATE_FEATURE`, and the feature is a `farfield`, the
65
- geometry will be automatically subtracted from the farfield.
62
+ Get the project this geometry belongs to.
66
63
  """
67
- req = geometrypb.ModifyGeometryRequest(
68
- geometry_id=self.id,
69
- modification=modification,
70
- request_id=str(uuid4()),
71
- )
72
- get_default_client().ModifyGeometry(req)
64
+ return lc.get_project(ProjectID(self._proto.project_id))
73
65
 
74
66
  def copy(self, name: str = "") -> "Geometry":
75
67
  """
@@ -136,7 +128,7 @@ class Geometry(ProtoWrapperBase):
136
128
  create_proto.half_sphere.CopyFrom(shape._to_proto()) # type: ignore
137
129
  else:
138
130
  raise TypeError(f"Unsupported shape for farfield: {type(shape)}")
139
- self.modify(
131
+ self._modify(
140
132
  modification=gpb.Modification(
141
133
  mod_type=gpb.Modification.MODIFICATION_TYPE_CREATE_FEATURE,
142
134
  feature=gpb.Feature(
@@ -153,8 +145,21 @@ class Geometry(ProtoWrapperBase):
153
145
  def undo(self) -> None:
154
146
  """
155
147
  Undo the last modification to the geometry.
156
- """
157
- self.modify(
148
+
149
+ Examples
150
+ --------
151
+ >>> # Initialize create a farfield
152
+ >>> geometry.add_farfield(
153
+ ... lc.params.geometry.shapes.Sphere(radius=2.0, center=Vector3(0.0, 0.0, 0.0))
154
+ ... )
155
+ >>> # Undo the last modification
156
+ >>> geometry.undo()
157
+ >>> # Re-create a bigger farfield with a different center
158
+ >>> geometry.add_farfield(
159
+ ... lc.params.geometry.shapes.Sphere(radius=3.0, center=Vector3(1.0, 1.0, 1.0))
160
+ ... )
161
+ """
162
+ self._modify(
158
163
  modification=gpb.Modification(
159
164
  mod_type=gpb.Modification.MODIFICATION_TYPE_UNDO,
160
165
  )
@@ -164,7 +169,7 @@ class Geometry(ProtoWrapperBase):
164
169
  """
165
170
  Redo the last modification to the geometry.
166
171
  """
167
- self.modify(
172
+ self._modify(
168
173
  modification=gpb.Modification(
169
174
  mod_type=gpb.Modification.MODIFICATION_TYPE_REDO,
170
175
  )
@@ -181,7 +186,7 @@ class Geometry(ProtoWrapperBase):
181
186
  new_name : str
182
187
  The new name for the feature.
183
188
  """
184
- self.modify(
189
+ self._modify(
185
190
  modification=gpb.Modification(
186
191
  mod_type=gpb.Modification.MODIFICATION_TYPE_RENAME_FEATURE,
187
192
  feature=gpb.Feature(
@@ -200,7 +205,7 @@ class Geometry(ProtoWrapperBase):
200
205
  feature_id : str
201
206
  The ID of the feature to delete.
202
207
  """
203
- self.modify(
208
+ self._modify(
204
209
  modification=gpb.Modification(
205
210
  mod_type=gpb.Modification.MODIFICATION_TYPE_DELETE_FEATURE,
206
211
  feature=gpb.Feature(
@@ -218,7 +223,7 @@ class Geometry(ProtoWrapperBase):
218
223
  tag_names : list[str]
219
224
  The names of the tags to delete.
220
225
  """
221
- self.modify(
226
+ self._modify(
222
227
  modification=gpb.Modification(
223
228
  mod_type=gpb.Modification.MODIFICATION_TYPE_DELETE_TAGS,
224
229
  delete_tags=gpb.DeleteTags(
@@ -265,6 +270,7 @@ class Geometry(ProtoWrapperBase):
265
270
  )
266
271
  )
267
272
  if res.finished:
273
+ self.refresh()
268
274
  return res.ok, list(res.issues)
269
275
  jitter = random.uniform(0.5, 1.5)
270
276
  time.sleep(2 + jitter)
@@ -314,7 +320,7 @@ class Geometry(ProtoWrapperBase):
314
320
  new_name : str
315
321
  The new name for the tag.
316
322
  """
317
- self.modify(
323
+ self._modify(
318
324
  modification=gpb.Modification(
319
325
  mod_type=gpb.Modification.MODIFICATION_TYPE_RENAME_TAG,
320
326
  rename_tag=gpb.RenameTag(
@@ -346,7 +352,7 @@ class Geometry(ProtoWrapperBase):
346
352
  else:
347
353
  raise TypeError("entities must be of type Volume or Surface")
348
354
 
349
- self.modify(
355
+ self._modify(
350
356
  modification=gpb.Modification(
351
357
  mod_type=gpb.Modification.MODIFICATION_TYPE_DELETE_TAG,
352
358
  delete_tag=gpb.DeleteTag(
@@ -377,7 +383,7 @@ class Geometry(ProtoWrapperBase):
377
383
  else:
378
384
  raise TypeError("entities must be of type Volume or Surface")
379
385
 
380
- self.modify(
386
+ self._modify(
381
387
  modification=gpb.Modification(
382
388
  mod_type=gpb.Modification.MODIFICATION_TYPE_UPDATE_TAG,
383
389
  create_or_update_tag=gpb.CreateOrUpdateTag(
@@ -439,7 +445,25 @@ class Geometry(ProtoWrapperBase):
439
445
  ]
440
446
  return surfaces, volumes
441
447
 
442
- def list_features(
448
+ def _modify(self, modification: gpb.Modification) -> None:
449
+ """
450
+ Apply a modification to the geometry.
451
+
452
+ Parameters
453
+ ----------
454
+ modification : Modification
455
+ The modification to apply to the geometry. If the modification type is
456
+ `MODIFICATION_TYPE_CREATE_FEATURE`, and the feature is a `farfield`, the
457
+ geometry will be automatically subtracted from the farfield.
458
+ """
459
+ req = geometrypb.ModifyGeometryRequest(
460
+ geometry_id=self.id,
461
+ modification=modification,
462
+ request_id=str(uuid4()),
463
+ )
464
+ get_default_client().ModifyGeometry(req)
465
+
466
+ def _list_features(
443
467
  self,
444
468
  ) -> list[gpb.Feature]:
445
469
  """
@@ -458,7 +482,7 @@ class Geometry(ProtoWrapperBase):
458
482
  )
459
483
  return list(res.features)
460
484
 
461
- def list_feature_issues(
485
+ def _list_feature_issues(
462
486
  self,
463
487
  ) -> list[gpb.FeatureIssues]:
464
488
  """
@@ -478,6 +502,14 @@ class Geometry(ProtoWrapperBase):
478
502
  )
479
503
  return list(res.features_issues)
480
504
 
505
+ def refresh(self) -> None:
506
+ """
507
+ Refresh the geometry status.
508
+ """
509
+ req = geometrypb.GetGeometryRequest(geometry_id=self.id)
510
+ res: geometrypb.GetGeometryResponse = get_default_client().GetGeometry(req)
511
+ self._proto = res.geometry
512
+
481
513
 
482
514
  def get_geometry(id: str) -> Geometry:
483
515
  """
@@ -87,7 +87,7 @@ class GeometryVersion(ProtoWrapperBase):
87
87
  ]
88
88
  return surfaces, volumes
89
89
 
90
- def list_features(
90
+ def _list_features(
91
91
  self,
92
92
  ) -> list[gpb.Feature]:
93
93
  """
@@ -106,7 +106,7 @@ class GeometryVersion(ProtoWrapperBase):
106
106
  )
107
107
  return list(res.features)
108
108
 
109
- def list_feature_issues(
109
+ def _list_feature_issues(
110
110
  self,
111
111
  ) -> list[gpb.FeatureIssues]:
112
112
  """
luminarycloud/mesh.py CHANGED
@@ -11,8 +11,9 @@ from ._helpers._wait_for_mesh import wait_for_mesh
11
11
  from ._proto.api.v0.luminarycloud.mesh import mesh_pb2 as meshpb
12
12
  from ._wrapper import ProtoWrapper, ProtoWrapperBase
13
13
  from .enum import MeshStatus
14
- from .types import MeshID, ProjectID
15
14
  from .geometry_version import GeometryVersion, get_geometry_version
15
+ from .meshing.metadata import MeshMetadata
16
+ from .types import MeshID, ProjectID
16
17
 
17
18
  if TYPE_CHECKING:
18
19
  from .project import Project
@@ -122,6 +123,12 @@ class Mesh(ProtoWrapperBase):
122
123
  )
123
124
  get_default_client().DeleteMesh(req)
124
125
 
126
+ def get_metadata(self) -> MeshMetadata:
127
+ """
128
+ Get the metadata for this mesh.
129
+ """
130
+ return get_mesh_metadata(self.id)
131
+
125
132
 
126
133
  def get_mesh(id: MeshID) -> Mesh:
127
134
  """
@@ -137,9 +144,9 @@ def get_mesh(id: MeshID) -> Mesh:
137
144
  return Mesh(res.mesh)
138
145
 
139
146
 
140
- def get_mesh_metadata(id: MeshID) -> meshpb.MeshMetadata:
147
+ def get_mesh_metadata(id: MeshID) -> MeshMetadata:
141
148
  """
142
- Returns the mesh metadata of a specific mesh with the given ID.
149
+ Returns the mesh metadata for the mesh with the given ID.
143
150
 
144
151
  Parameters
145
152
  ----------
@@ -149,4 +156,4 @@ def get_mesh_metadata(id: MeshID) -> meshpb.MeshMetadata:
149
156
  res: meshpb.GetMeshMetadataResponse = get_default_client().GetMeshMetadata(
150
157
  meshpb.GetMeshMetadataRequest(id=id)
151
158
  )
152
- return res.mesh_metadata
159
+ return MeshMetadata(res.mesh_metadata)
@@ -1,3 +1,4 @@
1
+ from . import metadata as metadata
1
2
  from . import sizing_strategy as sizing_strategy
2
3
 
3
4
  from .mesh_generation_params import (
@@ -0,0 +1,6 @@
1
+ from .mesh_metadata import (
2
+ BoundaryMetadata as BoundaryMetadata,
3
+ MeshMetadata as MeshMetadata,
4
+ MeshStats as MeshStats,
5
+ ZoneMetadata as ZoneMetadata,
6
+ )
@@ -0,0 +1,57 @@
1
+ from ..._proto.api.v0.luminarycloud.mesh import mesh_pb2 as meshpb
2
+ from ..._wrapper import ProtoWrapper, ProtoWrapperBase
3
+ from ...types import Vector3
4
+
5
+
6
+ @ProtoWrapper(meshpb.MeshMetadata.MeshStats)
7
+ class MeshStats(ProtoWrapperBase):
8
+ """Contains stats about a part of a mesh."""
9
+
10
+ n_points: int
11
+ "The number of points."
12
+ n_faces: int
13
+ "The number of faces."
14
+ n_cvs: int
15
+ "The number of control volumes."
16
+ min_coord: Vector3
17
+ "The minimum coordinate."
18
+ max_coord: Vector3
19
+ "The maximum coordinate."
20
+
21
+ _proto: meshpb.MeshMetadata.MeshStats
22
+
23
+
24
+ @ProtoWrapper(meshpb.MeshMetadata.Boundary)
25
+ class BoundaryMetadata(ProtoWrapperBase):
26
+ """Represents a Mesh object."""
27
+
28
+ name: str
29
+ "The name of this mesh boundary."
30
+ stats: MeshStats
31
+ "The stats for this mesh boundary."
32
+
33
+ _proto: meshpb.MeshMetadata.Boundary
34
+
35
+
36
+ @ProtoWrapper(meshpb.MeshMetadata.Zone)
37
+ class ZoneMetadata(ProtoWrapperBase):
38
+ """Contains info about a zone in a mesh."""
39
+
40
+ name: str
41
+ "The name of this mesh zone."
42
+ stats: MeshStats
43
+ "The stats for this mesh zone."
44
+ boundaries: list[BoundaryMetadata]
45
+ "The boundaries in this mesh zone."
46
+
47
+ _proto: meshpb.MeshMetadata.Zone
48
+
49
+
50
+ @ProtoWrapper(meshpb.MeshMetadata)
51
+ class MeshMetadata(ProtoWrapperBase):
52
+ """Contains info about a Mesh."""
53
+
54
+ zones: list[ZoneMetadata]
55
+ "The zones in this mesh."
56
+
57
+ _proto: meshpb.MeshMetadata