luminarycloud 0.16.0__py3-none-any.whl → 0.16.1__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 (40) hide show
  1. luminarycloud/_client/client.py +5 -0
  2. luminarycloud/_helpers/_code_representation.py +5 -3
  3. luminarycloud/_proto/api/v0/luminarycloud/thirdpartyintegration/onshape/onshape_pb2.py +7 -7
  4. luminarycloud/_proto/api/v0/luminarycloud/thirdpartyintegration/onshape/onshape_pb2.pyi +4 -4
  5. luminarycloud/_proto/api/v0/luminarycloud/vis/vis_pb2.py +128 -107
  6. luminarycloud/_proto/api/v0/luminarycloud/vis/vis_pb2.pyi +48 -3
  7. luminarycloud/_proto/client/simulation_pb2.py +348 -350
  8. luminarycloud/_proto/client/simulation_pb2.pyi +95 -95
  9. luminarycloud/_proto/geometry/geometry_pb2.py +68 -68
  10. luminarycloud/_proto/geometry/geometry_pb2.pyi +10 -6
  11. luminarycloud/_proto/hexmesh/hexmesh_pb2.py +40 -15
  12. luminarycloud/_proto/hexmesh/hexmesh_pb2.pyi +58 -1
  13. luminarycloud/_proto/lcstatus/codes_pb2.py +3 -2
  14. luminarycloud/_proto/lcstatus/codes_pb2.pyi +4 -0
  15. luminarycloud/enum/quantity_type.py +4 -0
  16. luminarycloud/enum/tables.py +1 -0
  17. luminarycloud/enum/vis_enums.py +20 -0
  18. luminarycloud/feature_modification.py +6 -7
  19. luminarycloud/geometry.py +24 -0
  20. luminarycloud/geometry_version.py +23 -0
  21. luminarycloud/params/simulation/adjoint_.py +4 -4
  22. luminarycloud/params/simulation/material/material_fluid_.py +1 -1
  23. luminarycloud/params/simulation/material/material_solid_.py +1 -1
  24. luminarycloud/params/simulation/output_.py +1 -1
  25. luminarycloud/params/simulation/physics/fluid/initialization/fluid_existing_solution_.py +28 -0
  26. luminarycloud/params/simulation/simulation_param_.py +6 -0
  27. luminarycloud/project.py +9 -7
  28. luminarycloud/simulation_param.py +29 -15
  29. luminarycloud/simulation_template.py +14 -10
  30. luminarycloud/tables.py +5 -4
  31. luminarycloud/thirdparty/__init__.py +12 -0
  32. luminarycloud/thirdparty/onshape.py +170 -0
  33. luminarycloud/vis/__init__.py +2 -0
  34. luminarycloud/vis/data_extraction.py +40 -1
  35. luminarycloud/vis/filters.py +128 -2
  36. luminarycloud/vis/visualization.py +1 -1
  37. luminarycloud/volume_selection.py +2 -2
  38. {luminarycloud-0.16.0.dist-info → luminarycloud-0.16.1.dist-info}/METADATA +6 -6
  39. {luminarycloud-0.16.0.dist-info → luminarycloud-0.16.1.dist-info}/RECORD +40 -38
  40. {luminarycloud-0.16.0.dist-info → luminarycloud-0.16.1.dist-info}/WHEEL +0 -0
@@ -18,7 +18,7 @@ from luminarycloud._proto.cad import shape_pb2 as proto_dot_cad_dot_shape__pb2
18
18
  from luminarycloud._proto.options import options_pb2 as proto_dot_options_dot_options__pb2
19
19
 
20
20
 
21
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1bproto/hexmesh/hexmesh.proto\x12\x16luminary.proto.hexmesh\x1a\x15proto/base/base.proto\x1a\x15proto/cad/shape.proto\x1a\x1bproto/options/options.proto\"{\n\x0fRefinementLevel\x12&\n\x08\x64istance\x18\x01 \x01(\x01\x42\x0f\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\x00\x00\x00\x00H\x00\x88\x01\x01\x12#\n\x05level\x18\x03 \x01(\x05\x42\x0f\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\x00\x00\x00@H\x01\x88\x01\x01\x42\x0b\n\t_distanceB\x08\n\x06_levelJ\x04\x08\x02\x10\x03\"\x8e\x01\n\x0eRefinementSpec\x12\x42\n\x11refinement_levels\x18\x01 \x03(\x0b\x32\'.luminary.proto.hexmesh.RefinementLevel\x12\x38\n\x04mode\x18\x02 \x01(\x0e\x32*.luminary.proto.hexmesh.RefinementSpecMode\"\'\n\nOutputInfo\x12\x19\n\x11output_lcmesh_url\x18\x01 \x01(\t\"j\n\x0e\x42\x61\x63kgroundMesh\x12(\n\x04\x63ube\x18\x01 \x01(\x0b\x32\x18.luminary.proto.cad.CubeH\x00\x12\x0b\n\x03n_x\x18\x08 \x01(\x05\x12\x0b\n\x03n_y\x18\t \x01(\x05\x12\x0b\n\x03n_z\x18\n \x01(\x05\x42\x07\n\x05shape\"\xa8\x01\n\x12RefinementSurfaces\x12)\n\x14refinement_min_level\x18\x03 \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\x02H\x00\x88\x01\x01\x12)\n\x14refinement_max_level\x18\x04 \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\x02H\x01\x88\x01\x01\x42\x17\n\x15_refinement_min_levelB\x17\n\x15_refinement_max_levelJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03\"\x89\x05\n\x17\x43\x61stellatedMeshControls\x12)\n\x10max_global_cells\x18\x01 \x01(\x05\x42\n\x82\xb2\x19\x06\x30\x80\x88\xde\xbe\x01H\x00\x88\x01\x01\x12)\n\x14min_refinement_cells\x18\x02 \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\x64H\x01\x88\x01\x01\x12+\n\x16n_cells_between_levels\x18\x03 \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\x03H\x02\x88\x01\x01\x12\x33\n\x15resolve_feature_angle\x18\x04 \x01(\x01\x42\x0f\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\x00\x00N@H\x03\x88\x01\x01\x12\x36\n\x10location_in_mesh\x18\x05 \x01(\x0b\x32\x1c.luminary.proto.base.Vector3\x12N\n\x1aglobal_refinement_surfaces\x18\x06 \x01(\x0b\x32*.luminary.proto.hexmesh.RefinementSurfaces\x12\x64\n\x13refinement_surfaces\x18\t \x03(\x0b\x32G.luminary.proto.hexmesh.CastellatedMeshControls.RefinementSurfacesEntry\x1a\x65\n\x17RefinementSurfacesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x39\n\x05value\x18\x02 \x01(\x0b\x32*.luminary.proto.hexmesh.RefinementSurfaces:\x02\x38\x01\x42\x13\n\x11_max_global_cellsB\x17\n\x15_min_refinement_cellsB\x19\n\x17_n_cells_between_levelsB\x18\n\x16_resolve_feature_angle\"\x8e\x01\n\x0c\x46\x65\x61tureEdges\x12+\n\rfeature_angle\x18\x01 \x01(\x01\x42\x0f\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\x00\x00>@H\x00\x88\x01\x01\x12?\n\x0frefinement_spec\x18\x02 \x01(\x0b\x32&.luminary.proto.hexmesh.RefinementSpecB\x10\n\x0e_feature_angle\"\xa7\x02\n\x0cSnapControls\x12#\n\x0en_smooth_patch\x18\x01 \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\x03H\x00\x88\x01\x01\x12\'\n\ttolerance\x18\x02 \x01(\x01\x42\x0f\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\x00\x00\x10@H\x01\x88\x01\x01\x12!\n\x0cn_solve_iter\x18\x03 \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\x1eH\x02\x88\x01\x01\x12!\n\x0cn_relax_iter\x18\x04 \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\x05H\x03\x88\x01\x01\x12(\n\x13n_feature_snap_iter\x18\x05 \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\nH\x04\x88\x01\x01\x42\x11\n\x0f_n_smooth_patchB\x0c\n\n_toleranceB\x0f\n\r_n_solve_iterB\x0f\n\r_n_relax_iterB\x16\n\x14_n_feature_snap_iter\"\xdb\n\n\x11\x41\x64\x64LayersControls\x12#\n\x0erelative_sizes\x18\x01 \x01(\x08\x42\x06\x82\xb2\x19\x02(\x01H\x00\x88\x01\x01\x12-\n\x0f\x65xpansion_ratio\x18\x02 \x01(\x01\x42\x0f\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\x00\x00\xf4?H\x01\x88\x01\x01\x12\x33\n\x15\x66inal_layer_thickness\x18\x03 \x01(\x01\x42\x0f\x82\xb2\x19\x0b\n\t\t333333\xd3?H\x02\x88\x01\x01\x12+\n\rmin_thickness\x18\x04 \x01(\x01\x42\x0f\x82\xb2\x19\x0b\n\t\t\x9a\x99\x99\x99\x99\x99\xb9?H\x03\x88\x01\x01\x12\x1b\n\x06n_grow\x18\x05 \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\x00H\x04\x88\x01\x01\x12+\n\rfeature_angle\x18\x06 \x01(\x01\x42\x0f\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\x00\x00N@H\x05\x88\x01\x01\x12\x30\n\x12slip_feature_angle\x18\x07 \x01(\x01\x42\x0f\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\x00\x00N@H\x06\x88\x01\x01\x12!\n\x0cn_relax_iter\x18\x08 \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\x03H\x07\x88\x01\x01\x12-\n\x18n_smooth_surface_normals\x18\t \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\x01H\x08\x88\x01\x01\x12%\n\x10n_smooth_normals\x18\n \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\x03H\t\x88\x01\x01\x12\'\n\x12n_smooth_thickness\x18\x0b \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\nH\n\x88\x01\x01\x12\x36\n\x18max_face_thickness_ratio\x18\x0c \x01(\x01\x42\x0f\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\x00\x00\xe0?H\x0b\x88\x01\x01\x12;\n\x1dmax_thickness_to_medial_ratio\x18\r \x01(\x01\x42\x0f\x82\xb2\x19\x0b\n\t\t333333\xd3?H\x0c\x88\x01\x01\x12\x33\n\x15min_medial_axis_angle\x18\x0e \x01(\x01\x42\x0f\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\x00\x80V@H\r\x88\x01\x01\x12.\n\x19n_buffer_cells_no_extrude\x18\x0f \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\x00H\x0e\x88\x01\x01\x12!\n\x0cn_layer_iter\x18\x10 \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\x1eH\x0f\x88\x01\x01\x12,\n\x17global_n_surface_layers\x18\x11 \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\nH\x10\x88\x01\x01\x12W\n\x10n_surface_layers\x18\x12 \x03(\x0b\x32=.luminary.proto.hexmesh.AddLayersControls.NSurfaceLayersEntry\x12!\n\x0cn_outer_iter\x18\x13 \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\x01H\x11\x88\x01\x01\x1a\x35\n\x13NSurfaceLayersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x42\x11\n\x0f_relative_sizesB\x12\n\x10_expansion_ratioB\x18\n\x16_final_layer_thicknessB\x10\n\x0e_min_thicknessB\t\n\x07_n_growB\x10\n\x0e_feature_angleB\x15\n\x13_slip_feature_angleB\x0f\n\r_n_relax_iterB\x1b\n\x19_n_smooth_surface_normalsB\x13\n\x11_n_smooth_normalsB\x15\n\x13_n_smooth_thicknessB\x1b\n\x19_max_face_thickness_ratioB \n\x1e_max_thickness_to_medial_ratioB\x18\n\x16_min_medial_axis_angleB\x1c\n\x1a_n_buffer_cells_no_extrudeB\x0f\n\r_n_layer_iterB\x1a\n\x18_global_n_surface_layersB\x0f\n\r_n_outer_iter\"\xa6\x01\n\x16RefinementRegionParams\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12(\n\x04\x63ube\x18\x03 \x01(\x0b\x32\x18.luminary.proto.cad.CubeH\x00\x12?\n\x0frefinement_spec\x18\x04 \x01(\x0b\x32&.luminary.proto.hexmesh.RefinementSpecB\x07\n\x05shape\"\xdc\x04\n\x15OpenfoamMeshShmConfig\x12G\n\x14global_feature_edges\x18\x01 \x01(\x0b\x32$.luminary.proto.hexmesh.FeatureEdgesH\x00\x88\x01\x01\x12V\n\rfeature_edges\x18\x05 \x03(\x0b\x32?.luminary.proto.hexmesh.OpenfoamMeshShmConfig.FeatureEdgesEntry\x12W\n\x19\x63\x61stellated_mesh_controls\x18\x02 \x01(\x0b\x32/.luminary.proto.hexmesh.CastellatedMeshControlsH\x01\x88\x01\x01\x12@\n\rsnap_controls\x18\x03 \x01(\x0b\x32$.luminary.proto.hexmesh.SnapControlsH\x02\x88\x01\x01\x12K\n\x13\x61\x64\x64_layers_controls\x18\x04 \x01(\x0b\x32).luminary.proto.hexmesh.AddLayersControlsH\x03\x88\x01\x01\x1aY\n\x11\x46\x65\x61tureEdgesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x33\n\x05value\x18\x02 \x01(\x0b\x32$.luminary.proto.hexmesh.FeatureEdges:\x02\x38\x01\x42\x17\n\x15_global_feature_edgesB\x1c\n\x1a_castellated_mesh_controlsB\x10\n\x0e_snap_controlsB\x16\n\x14_add_layers_controls\"\xf5\x05\n\x12OpenfoamMeshConfig\x12\x44\n\x0f\x62\x61\x63kground_mesh\x18\x02 \x01(\x0b\x32&.luminary.proto.hexmesh.BackgroundMeshH\x01\x88\x01\x01\x12J\n\x12refinement_regions\x18\x03 \x03(\x0b\x32..luminary.proto.hexmesh.RefinementRegionParams\x12o\n\x1crefinement_regions_from_stls\x18\x08 \x03(\x0b\x32I.luminary.proto.hexmesh.OpenfoamMeshConfig.RefinementRegionsFromStlsEntry\x12\x43\n\nshm_config\x18\x04 \x01(\x0b\x32-.luminary.proto.hexmesh.OpenfoamMeshShmConfigH\x00\x12\x37\n\x0boutput_info\x18\x05 \x01(\x0b\x32\".luminary.proto.hexmesh.OutputInfo\x12\x0f\n\x07mesh_id\x18\x06 \x01(\t\x12[\n\x12names_to_file_urls\x18\x07 \x03(\x0b\x32?.luminary.proto.hexmesh.OpenfoamMeshConfig.NamesToFileUrlsEntry\x12\x1d\n\x08use_wrap\x18\t \x01(\x08\x42\x06\x82\xb2\x19\x02(\x00H\x02\x88\x01\x01\x1ah\n\x1eRefinementRegionsFromStlsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x35\n\x05value\x18\x02 \x01(\x0b\x32&.luminary.proto.hexmesh.RefinementSpec:\x02\x38\x01\x1a\x36\n\x14NamesToFileUrlsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x08\n\x06\x63onfigB\x12\n\x10_background_meshB\x0b\n\t_use_wrapJ\x04\x08\x01\x10\x02\"\xa4\x05\n\x0bHexMeshSpec\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x44\n\x0f\x62\x61\x63kground_mesh\x18\x03 \x01(\x0b\x32&.luminary.proto.hexmesh.BackgroundMeshH\x01\x88\x01\x01\x12J\n\x12refinement_regions\x18\x04 \x03(\x0b\x32..luminary.proto.hexmesh.RefinementRegionParams\x12h\n\x1crefinement_regions_from_stls\x18\x07 \x03(\x0b\x32\x42.luminary.proto.hexmesh.HexMeshSpec.RefinementRegionsFromStlsEntry\x12\x43\n\nshm_config\x18\x05 \x01(\x0b\x32-.luminary.proto.hexmesh.OpenfoamMeshShmConfigH\x00\x12T\n\x12names_to_file_urls\x18\x06 \x03(\x0b\x32\x38.luminary.proto.hexmesh.HexMeshSpec.NamesToFileUrlsEntry\x12\x1d\n\x08use_wrap\x18\x08 \x01(\x08\x42\x06\x82\xb2\x19\x02(\x00H\x02\x88\x01\x01\x1ah\n\x1eRefinementRegionsFromStlsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x35\n\x05value\x18\x02 \x01(\x0b\x32&.luminary.proto.hexmesh.RefinementSpec:\x02\x38\x01\x1a\x36\n\x14NamesToFileUrlsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x08\n\x06\x63onfigB\x12\n\x10_background_meshB\x0b\n\t_use_wrapJ\x04\x08\x01\x10\x02*~\n\x12RefinementSpecMode\x12$\n REFINEMENT_SPEC_MODE_UNSPECIFIED\x10\x00\x12\x1f\n\x1bREFINEMENT_SPEC_MODE_INSIDE\x10\x01\x12!\n\x1dREFINEMENT_SPEC_MODE_DISTANCE\x10\x02\x42&Z$luminarycloud.com/core/proto/hexmeshb\x06proto3')
21
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1bproto/hexmesh/hexmesh.proto\x12\x16luminary.proto.hexmesh\x1a\x15proto/base/base.proto\x1a\x15proto/cad/shape.proto\x1a\x1bproto/options/options.proto\"{\n\x0fRefinementLevel\x12&\n\x08\x64istance\x18\x01 \x01(\x01\x42\x0f\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\x00\x00\x00\x00H\x00\x88\x01\x01\x12#\n\x05level\x18\x03 \x01(\x05\x42\x0f\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\x00\x00\x00@H\x01\x88\x01\x01\x42\x0b\n\t_distanceB\x08\n\x06_levelJ\x04\x08\x02\x10\x03\"\x8e\x01\n\x0eRefinementSpec\x12\x42\n\x11refinement_levels\x18\x01 \x03(\x0b\x32\'.luminary.proto.hexmesh.RefinementLevel\x12\x38\n\x04mode\x18\x02 \x01(\x0e\x32*.luminary.proto.hexmesh.RefinementSpecMode\"\'\n\nOutputInfo\x12\x19\n\x11output_lcmesh_url\x18\x01 \x01(\t\"j\n\x0e\x42\x61\x63kgroundMesh\x12(\n\x04\x63ube\x18\x01 \x01(\x0b\x32\x18.luminary.proto.cad.CubeH\x00\x12\x0b\n\x03n_x\x18\x08 \x01(\x05\x12\x0b\n\x03n_y\x18\t \x01(\x05\x12\x0b\n\x03n_z\x18\n \x01(\x05\x42\x07\n\x05shape\"\xa8\x01\n\x12RefinementSurfaces\x12)\n\x14refinement_min_level\x18\x03 \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\x02H\x00\x88\x01\x01\x12)\n\x14refinement_max_level\x18\x04 \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\x02H\x01\x88\x01\x01\x42\x17\n\x15_refinement_min_levelB\x17\n\x15_refinement_max_levelJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03\"\x89\x05\n\x17\x43\x61stellatedMeshControls\x12)\n\x10max_global_cells\x18\x01 \x01(\x05\x42\n\x82\xb2\x19\x06\x30\x80\x88\xde\xbe\x01H\x00\x88\x01\x01\x12)\n\x14min_refinement_cells\x18\x02 \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\x64H\x01\x88\x01\x01\x12+\n\x16n_cells_between_levels\x18\x03 \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\x03H\x02\x88\x01\x01\x12\x33\n\x15resolve_feature_angle\x18\x04 \x01(\x01\x42\x0f\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\x00\x00N@H\x03\x88\x01\x01\x12\x36\n\x10location_in_mesh\x18\x05 \x01(\x0b\x32\x1c.luminary.proto.base.Vector3\x12N\n\x1aglobal_refinement_surfaces\x18\x06 \x01(\x0b\x32*.luminary.proto.hexmesh.RefinementSurfaces\x12\x64\n\x13refinement_surfaces\x18\t \x03(\x0b\x32G.luminary.proto.hexmesh.CastellatedMeshControls.RefinementSurfacesEntry\x1a\x65\n\x17RefinementSurfacesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x39\n\x05value\x18\x02 \x01(\x0b\x32*.luminary.proto.hexmesh.RefinementSurfaces:\x02\x38\x01\x42\x13\n\x11_max_global_cellsB\x17\n\x15_min_refinement_cellsB\x19\n\x17_n_cells_between_levelsB\x18\n\x16_resolve_feature_angle\"\x8e\x01\n\x0c\x46\x65\x61tureEdges\x12+\n\rfeature_angle\x18\x01 \x01(\x01\x42\x0f\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\x00\x00>@H\x00\x88\x01\x01\x12?\n\x0frefinement_spec\x18\x02 \x01(\x0b\x32&.luminary.proto.hexmesh.RefinementSpecB\x10\n\x0e_feature_angle\"\xa7\x02\n\x0cSnapControls\x12#\n\x0en_smooth_patch\x18\x01 \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\x03H\x00\x88\x01\x01\x12\'\n\ttolerance\x18\x02 \x01(\x01\x42\x0f\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\x00\x00\x10@H\x01\x88\x01\x01\x12!\n\x0cn_solve_iter\x18\x03 \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\x1eH\x02\x88\x01\x01\x12!\n\x0cn_relax_iter\x18\x04 \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\x05H\x03\x88\x01\x01\x12(\n\x13n_feature_snap_iter\x18\x05 \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\nH\x04\x88\x01\x01\x42\x11\n\x0f_n_smooth_patchB\x0c\n\n_toleranceB\x0f\n\r_n_solve_iterB\x0f\n\r_n_relax_iterB\x16\n\x14_n_feature_snap_iter\"\xdb\n\n\x11\x41\x64\x64LayersControls\x12#\n\x0erelative_sizes\x18\x01 \x01(\x08\x42\x06\x82\xb2\x19\x02(\x01H\x00\x88\x01\x01\x12-\n\x0f\x65xpansion_ratio\x18\x02 \x01(\x01\x42\x0f\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\x00\x00\xf4?H\x01\x88\x01\x01\x12\x33\n\x15\x66inal_layer_thickness\x18\x03 \x01(\x01\x42\x0f\x82\xb2\x19\x0b\n\t\t333333\xd3?H\x02\x88\x01\x01\x12+\n\rmin_thickness\x18\x04 \x01(\x01\x42\x0f\x82\xb2\x19\x0b\n\t\t\x9a\x99\x99\x99\x99\x99\xb9?H\x03\x88\x01\x01\x12\x1b\n\x06n_grow\x18\x05 \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\x00H\x04\x88\x01\x01\x12+\n\rfeature_angle\x18\x06 \x01(\x01\x42\x0f\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\x00\x00N@H\x05\x88\x01\x01\x12\x30\n\x12slip_feature_angle\x18\x07 \x01(\x01\x42\x0f\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\x00\x00N@H\x06\x88\x01\x01\x12!\n\x0cn_relax_iter\x18\x08 \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\x03H\x07\x88\x01\x01\x12-\n\x18n_smooth_surface_normals\x18\t \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\x01H\x08\x88\x01\x01\x12%\n\x10n_smooth_normals\x18\n \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\x03H\t\x88\x01\x01\x12\'\n\x12n_smooth_thickness\x18\x0b \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\nH\n\x88\x01\x01\x12\x36\n\x18max_face_thickness_ratio\x18\x0c \x01(\x01\x42\x0f\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\x00\x00\xe0?H\x0b\x88\x01\x01\x12;\n\x1dmax_thickness_to_medial_ratio\x18\r \x01(\x01\x42\x0f\x82\xb2\x19\x0b\n\t\t333333\xd3?H\x0c\x88\x01\x01\x12\x33\n\x15min_medial_axis_angle\x18\x0e \x01(\x01\x42\x0f\x82\xb2\x19\x0b\n\t\t\x00\x00\x00\x00\x00\x80V@H\r\x88\x01\x01\x12.\n\x19n_buffer_cells_no_extrude\x18\x0f \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\x00H\x0e\x88\x01\x01\x12!\n\x0cn_layer_iter\x18\x10 \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\x1eH\x0f\x88\x01\x01\x12,\n\x17global_n_surface_layers\x18\x11 \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\nH\x10\x88\x01\x01\x12W\n\x10n_surface_layers\x18\x12 \x03(\x0b\x32=.luminary.proto.hexmesh.AddLayersControls.NSurfaceLayersEntry\x12!\n\x0cn_outer_iter\x18\x13 \x01(\x05\x42\x06\x82\xb2\x19\x02\x30\x01H\x11\x88\x01\x01\x1a\x35\n\x13NSurfaceLayersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x42\x11\n\x0f_relative_sizesB\x12\n\x10_expansion_ratioB\x18\n\x16_final_layer_thicknessB\x10\n\x0e_min_thicknessB\t\n\x07_n_growB\x10\n\x0e_feature_angleB\x15\n\x13_slip_feature_angleB\x0f\n\r_n_relax_iterB\x1b\n\x19_n_smooth_surface_normalsB\x13\n\x11_n_smooth_normalsB\x15\n\x13_n_smooth_thicknessB\x1b\n\x19_max_face_thickness_ratioB \n\x1e_max_thickness_to_medial_ratioB\x18\n\x16_min_medial_axis_angleB\x1c\n\x1a_n_buffer_cells_no_extrudeB\x0f\n\r_n_layer_iterB\x1a\n\x18_global_n_surface_layersB\x0f\n\r_n_outer_iter\"\xa6\x01\n\x16RefinementRegionParams\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12(\n\x04\x63ube\x18\x03 \x01(\x0b\x32\x18.luminary.proto.cad.CubeH\x00\x12?\n\x0frefinement_spec\x18\x04 \x01(\x0b\x32&.luminary.proto.hexmesh.RefinementSpecB\x07\n\x05shape\"\xdc\x04\n\x15OpenfoamMeshShmConfig\x12G\n\x14global_feature_edges\x18\x01 \x01(\x0b\x32$.luminary.proto.hexmesh.FeatureEdgesH\x00\x88\x01\x01\x12V\n\rfeature_edges\x18\x05 \x03(\x0b\x32?.luminary.proto.hexmesh.OpenfoamMeshShmConfig.FeatureEdgesEntry\x12W\n\x19\x63\x61stellated_mesh_controls\x18\x02 \x01(\x0b\x32/.luminary.proto.hexmesh.CastellatedMeshControlsH\x01\x88\x01\x01\x12@\n\rsnap_controls\x18\x03 \x01(\x0b\x32$.luminary.proto.hexmesh.SnapControlsH\x02\x88\x01\x01\x12K\n\x13\x61\x64\x64_layers_controls\x18\x04 \x01(\x0b\x32).luminary.proto.hexmesh.AddLayersControlsH\x03\x88\x01\x01\x1aY\n\x11\x46\x65\x61tureEdgesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x33\n\x05value\x18\x02 \x01(\x0b\x32$.luminary.proto.hexmesh.FeatureEdges:\x02\x38\x01\x42\x17\n\x15_global_feature_edgesB\x1c\n\x1a_castellated_mesh_controlsB\x10\n\x0e_snap_controlsB\x16\n\x14_add_layers_controls\"\xaa\x02\n\x11TransformationStl\x12\x36\n\x0btranslation\x18\x01 \x01(\x0b\x32\x1c.luminary.proto.base.Vector3H\x00\x88\x01\x01\x12\x38\n\rrotation_axis\x18\x02 \x01(\x0b\x32\x1c.luminary.proto.base.Vector3H\x01\x88\x01\x01\x12\x12\n\x05\x61ngle\x18\x03 \x01(\x01H\x02\x88\x01\x01\x12Y\n\x05scale\x18\x04 \x01(\x0b\x32\x1c.luminary.proto.base.Vector3B\'\x82\xb2\x19#\x12!\n\t\t\x00\x00\x00\x00\x00\x00\xf0?\x12\t\t\x00\x00\x00\x00\x00\x00\xf0?\x1a\t\t\x00\x00\x00\x00\x00\x00\xf0?H\x03\x88\x01\x01\x42\x0e\n\x0c_translationB\x10\n\x0e_rotation_axisB\x08\n\x06_angleB\x08\n\x06_scale\"\xba\x07\n\x12OpenfoamMeshConfig\x12\x44\n\x0f\x62\x61\x63kground_mesh\x18\x02 \x01(\x0b\x32&.luminary.proto.hexmesh.BackgroundMeshH\x01\x88\x01\x01\x12J\n\x12refinement_regions\x18\x03 \x03(\x0b\x32..luminary.proto.hexmesh.RefinementRegionParams\x12o\n\x1crefinement_regions_from_stls\x18\x08 \x03(\x0b\x32I.luminary.proto.hexmesh.OpenfoamMeshConfig.RefinementRegionsFromStlsEntry\x12\x43\n\nshm_config\x18\x04 \x01(\x0b\x32-.luminary.proto.hexmesh.OpenfoamMeshShmConfigH\x00\x12\x37\n\x0boutput_info\x18\x05 \x01(\x0b\x32\".luminary.proto.hexmesh.OutputInfo\x12\x0f\n\x07mesh_id\x18\x06 \x01(\t\x12[\n\x12names_to_file_urls\x18\x07 \x03(\x0b\x32?.luminary.proto.hexmesh.OpenfoamMeshConfig.NamesToFileUrlsEntry\x12\x1d\n\x08use_wrap\x18\t \x01(\x08\x42\x06\x82\xb2\x19\x02(\x00H\x02\x88\x01\x01\x12^\n\x13transforms_for_stls\x18\n \x03(\x0b\x32\x41.luminary.proto.hexmesh.OpenfoamMeshConfig.TransformsForStlsEntry\x1ah\n\x1eRefinementRegionsFromStlsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x35\n\x05value\x18\x02 \x01(\x0b\x32&.luminary.proto.hexmesh.RefinementSpec:\x02\x38\x01\x1a\x36\n\x14NamesToFileUrlsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x63\n\x16TransformsForStlsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x38\n\x05value\x18\x02 \x01(\x0b\x32).luminary.proto.hexmesh.TransformationStl:\x02\x38\x01\x42\x08\n\x06\x63onfigB\x12\n\x10_background_meshB\x0b\n\t_use_wrapJ\x04\x08\x01\x10\x02\"\xa4\x05\n\x0bHexMeshSpec\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x44\n\x0f\x62\x61\x63kground_mesh\x18\x03 \x01(\x0b\x32&.luminary.proto.hexmesh.BackgroundMeshH\x01\x88\x01\x01\x12J\n\x12refinement_regions\x18\x04 \x03(\x0b\x32..luminary.proto.hexmesh.RefinementRegionParams\x12h\n\x1crefinement_regions_from_stls\x18\x07 \x03(\x0b\x32\x42.luminary.proto.hexmesh.HexMeshSpec.RefinementRegionsFromStlsEntry\x12\x43\n\nshm_config\x18\x05 \x01(\x0b\x32-.luminary.proto.hexmesh.OpenfoamMeshShmConfigH\x00\x12T\n\x12names_to_file_urls\x18\x06 \x03(\x0b\x32\x38.luminary.proto.hexmesh.HexMeshSpec.NamesToFileUrlsEntry\x12\x1d\n\x08use_wrap\x18\x08 \x01(\x08\x42\x06\x82\xb2\x19\x02(\x00H\x02\x88\x01\x01\x1ah\n\x1eRefinementRegionsFromStlsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x35\n\x05value\x18\x02 \x01(\x0b\x32&.luminary.proto.hexmesh.RefinementSpec:\x02\x38\x01\x1a\x36\n\x14NamesToFileUrlsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x08\n\x06\x63onfigB\x12\n\x10_background_meshB\x0b\n\t_use_wrapJ\x04\x08\x01\x10\x02*~\n\x12RefinementSpecMode\x12$\n REFINEMENT_SPEC_MODE_UNSPECIFIED\x10\x00\x12\x1f\n\x1bREFINEMENT_SPEC_MODE_INSIDE\x10\x01\x12!\n\x1dREFINEMENT_SPEC_MODE_DISTANCE\x10\x02\x42&Z$luminarycloud.com/core/proto/hexmeshb\x06proto3')
22
22
 
23
23
  _REFINEMENTSPECMODE = DESCRIPTOR.enum_types_by_name['RefinementSpecMode']
24
24
  RefinementSpecMode = enum_type_wrapper.EnumTypeWrapper(_REFINEMENTSPECMODE)
@@ -41,9 +41,11 @@ _ADDLAYERSCONTROLS_NSURFACELAYERSENTRY = _ADDLAYERSCONTROLS.nested_types_by_name
41
41
  _REFINEMENTREGIONPARAMS = DESCRIPTOR.message_types_by_name['RefinementRegionParams']
42
42
  _OPENFOAMMESHSHMCONFIG = DESCRIPTOR.message_types_by_name['OpenfoamMeshShmConfig']
43
43
  _OPENFOAMMESHSHMCONFIG_FEATUREEDGESENTRY = _OPENFOAMMESHSHMCONFIG.nested_types_by_name['FeatureEdgesEntry']
44
+ _TRANSFORMATIONSTL = DESCRIPTOR.message_types_by_name['TransformationStl']
44
45
  _OPENFOAMMESHCONFIG = DESCRIPTOR.message_types_by_name['OpenfoamMeshConfig']
45
46
  _OPENFOAMMESHCONFIG_REFINEMENTREGIONSFROMSTLSENTRY = _OPENFOAMMESHCONFIG.nested_types_by_name['RefinementRegionsFromStlsEntry']
46
47
  _OPENFOAMMESHCONFIG_NAMESTOFILEURLSENTRY = _OPENFOAMMESHCONFIG.nested_types_by_name['NamesToFileUrlsEntry']
48
+ _OPENFOAMMESHCONFIG_TRANSFORMSFORSTLSENTRY = _OPENFOAMMESHCONFIG.nested_types_by_name['TransformsForStlsEntry']
47
49
  _HEXMESHSPEC = DESCRIPTOR.message_types_by_name['HexMeshSpec']
48
50
  _HEXMESHSPEC_REFINEMENTREGIONSFROMSTLSENTRY = _HEXMESHSPEC.nested_types_by_name['RefinementRegionsFromStlsEntry']
49
51
  _HEXMESHSPEC_NAMESTOFILEURLSENTRY = _HEXMESHSPEC.nested_types_by_name['NamesToFileUrlsEntry']
@@ -148,6 +150,13 @@ OpenfoamMeshShmConfig = _reflection.GeneratedProtocolMessageType('OpenfoamMeshSh
148
150
  _sym_db.RegisterMessage(OpenfoamMeshShmConfig)
149
151
  _sym_db.RegisterMessage(OpenfoamMeshShmConfig.FeatureEdgesEntry)
150
152
 
153
+ TransformationStl = _reflection.GeneratedProtocolMessageType('TransformationStl', (_message.Message,), {
154
+ 'DESCRIPTOR' : _TRANSFORMATIONSTL,
155
+ '__module__' : 'proto.hexmesh.hexmesh_pb2'
156
+ # @@protoc_insertion_point(class_scope:luminary.proto.hexmesh.TransformationStl)
157
+ })
158
+ _sym_db.RegisterMessage(TransformationStl)
159
+
151
160
  OpenfoamMeshConfig = _reflection.GeneratedProtocolMessageType('OpenfoamMeshConfig', (_message.Message,), {
152
161
 
153
162
  'RefinementRegionsFromStlsEntry' : _reflection.GeneratedProtocolMessageType('RefinementRegionsFromStlsEntry', (_message.Message,), {
@@ -163,6 +172,13 @@ OpenfoamMeshConfig = _reflection.GeneratedProtocolMessageType('OpenfoamMeshConfi
163
172
  # @@protoc_insertion_point(class_scope:luminary.proto.hexmesh.OpenfoamMeshConfig.NamesToFileUrlsEntry)
164
173
  })
165
174
  ,
175
+
176
+ 'TransformsForStlsEntry' : _reflection.GeneratedProtocolMessageType('TransformsForStlsEntry', (_message.Message,), {
177
+ 'DESCRIPTOR' : _OPENFOAMMESHCONFIG_TRANSFORMSFORSTLSENTRY,
178
+ '__module__' : 'proto.hexmesh.hexmesh_pb2'
179
+ # @@protoc_insertion_point(class_scope:luminary.proto.hexmesh.OpenfoamMeshConfig.TransformsForStlsEntry)
180
+ })
181
+ ,
166
182
  'DESCRIPTOR' : _OPENFOAMMESHCONFIG,
167
183
  '__module__' : 'proto.hexmesh.hexmesh_pb2'
168
184
  # @@protoc_insertion_point(class_scope:luminary.proto.hexmesh.OpenfoamMeshConfig)
@@ -170,6 +186,7 @@ OpenfoamMeshConfig = _reflection.GeneratedProtocolMessageType('OpenfoamMeshConfi
170
186
  _sym_db.RegisterMessage(OpenfoamMeshConfig)
171
187
  _sym_db.RegisterMessage(OpenfoamMeshConfig.RefinementRegionsFromStlsEntry)
172
188
  _sym_db.RegisterMessage(OpenfoamMeshConfig.NamesToFileUrlsEntry)
189
+ _sym_db.RegisterMessage(OpenfoamMeshConfig.TransformsForStlsEntry)
173
190
 
174
191
  HexMeshSpec = _reflection.GeneratedProtocolMessageType('HexMeshSpec', (_message.Message,), {
175
192
 
@@ -268,10 +285,14 @@ if _descriptor._USE_C_DESCRIPTORS == False:
268
285
  _ADDLAYERSCONTROLS.fields_by_name['n_outer_iter']._serialized_options = b'\202\262\031\0020\001'
269
286
  _OPENFOAMMESHSHMCONFIG_FEATUREEDGESENTRY._options = None
270
287
  _OPENFOAMMESHSHMCONFIG_FEATUREEDGESENTRY._serialized_options = b'8\001'
288
+ _TRANSFORMATIONSTL.fields_by_name['scale']._options = None
289
+ _TRANSFORMATIONSTL.fields_by_name['scale']._serialized_options = b'\202\262\031#\022!\n\t\t\000\000\000\000\000\000\360?\022\t\t\000\000\000\000\000\000\360?\032\t\t\000\000\000\000\000\000\360?'
271
290
  _OPENFOAMMESHCONFIG_REFINEMENTREGIONSFROMSTLSENTRY._options = None
272
291
  _OPENFOAMMESHCONFIG_REFINEMENTREGIONSFROMSTLSENTRY._serialized_options = b'8\001'
273
292
  _OPENFOAMMESHCONFIG_NAMESTOFILEURLSENTRY._options = None
274
293
  _OPENFOAMMESHCONFIG_NAMESTOFILEURLSENTRY._serialized_options = b'8\001'
294
+ _OPENFOAMMESHCONFIG_TRANSFORMSFORSTLSENTRY._options = None
295
+ _OPENFOAMMESHCONFIG_TRANSFORMSFORSTLSENTRY._serialized_options = b'8\001'
275
296
  _OPENFOAMMESHCONFIG.fields_by_name['use_wrap']._options = None
276
297
  _OPENFOAMMESHCONFIG.fields_by_name['use_wrap']._serialized_options = b'\202\262\031\002(\000'
277
298
  _HEXMESHSPEC_REFINEMENTREGIONSFROMSTLSENTRY._options = None
@@ -280,8 +301,8 @@ if _descriptor._USE_C_DESCRIPTORS == False:
280
301
  _HEXMESHSPEC_NAMESTOFILEURLSENTRY._serialized_options = b'8\001'
281
302
  _HEXMESHSPEC.fields_by_name['use_wrap']._options = None
282
303
  _HEXMESHSPEC.fields_by_name['use_wrap']._serialized_options = b'\202\262\031\002(\000'
283
- _REFINEMENTSPECMODE._serialized_start=5404
284
- _REFINEMENTSPECMODE._serialized_end=5530
304
+ _REFINEMENTSPECMODE._serialized_start=5902
305
+ _REFINEMENTSPECMODE._serialized_end=6028
285
306
  _REFINEMENTLEVEL._serialized_start=130
286
307
  _REFINEMENTLEVEL._serialized_end=253
287
308
  _REFINEMENTSPEC._serialized_start=256
@@ -310,16 +331,20 @@ if _descriptor._USE_C_DESCRIPTORS == False:
310
331
  _OPENFOAMMESHSHMCONFIG._serialized_end=3963
311
332
  _OPENFOAMMESHSHMCONFIG_FEATUREEDGESENTRY._serialized_start=3777
312
333
  _OPENFOAMMESHSHMCONFIG_FEATUREEDGESENTRY._serialized_end=3866
313
- _OPENFOAMMESHCONFIG._serialized_start=3966
314
- _OPENFOAMMESHCONFIG._serialized_end=4723
315
- _OPENFOAMMESHCONFIG_REFINEMENTREGIONSFROMSTLSENTRY._serialized_start=4514
316
- _OPENFOAMMESHCONFIG_REFINEMENTREGIONSFROMSTLSENTRY._serialized_end=4618
317
- _OPENFOAMMESHCONFIG_NAMESTOFILEURLSENTRY._serialized_start=4620
318
- _OPENFOAMMESHCONFIG_NAMESTOFILEURLSENTRY._serialized_end=4674
319
- _HEXMESHSPEC._serialized_start=4726
320
- _HEXMESHSPEC._serialized_end=5402
321
- _HEXMESHSPEC_REFINEMENTREGIONSFROMSTLSENTRY._serialized_start=4514
322
- _HEXMESHSPEC_REFINEMENTREGIONSFROMSTLSENTRY._serialized_end=4618
323
- _HEXMESHSPEC_NAMESTOFILEURLSENTRY._serialized_start=4620
324
- _HEXMESHSPEC_NAMESTOFILEURLSENTRY._serialized_end=4674
334
+ _TRANSFORMATIONSTL._serialized_start=3966
335
+ _TRANSFORMATIONSTL._serialized_end=4264
336
+ _OPENFOAMMESHCONFIG._serialized_start=4267
337
+ _OPENFOAMMESHCONFIG._serialized_end=5221
338
+ _OPENFOAMMESHCONFIG_REFINEMENTREGIONSFROMSTLSENTRY._serialized_start=4911
339
+ _OPENFOAMMESHCONFIG_REFINEMENTREGIONSFROMSTLSENTRY._serialized_end=5015
340
+ _OPENFOAMMESHCONFIG_NAMESTOFILEURLSENTRY._serialized_start=5017
341
+ _OPENFOAMMESHCONFIG_NAMESTOFILEURLSENTRY._serialized_end=5071
342
+ _OPENFOAMMESHCONFIG_TRANSFORMSFORSTLSENTRY._serialized_start=5073
343
+ _OPENFOAMMESHCONFIG_TRANSFORMSFORSTLSENTRY._serialized_end=5172
344
+ _HEXMESHSPEC._serialized_start=5224
345
+ _HEXMESHSPEC._serialized_end=5900
346
+ _HEXMESHSPEC_REFINEMENTREGIONSFROMSTLSENTRY._serialized_start=4911
347
+ _HEXMESHSPEC_REFINEMENTREGIONSFROMSTLSENTRY._serialized_end=5015
348
+ _HEXMESHSPEC_NAMESTOFILEURLSENTRY._serialized_start=5017
349
+ _HEXMESHSPEC_NAMESTOFILEURLSENTRY._serialized_end=5071
325
350
  # @@protoc_insertion_point(module_scope)
@@ -491,6 +491,42 @@ class OpenfoamMeshShmConfig(google.protobuf.message.Message):
491
491
 
492
492
  global___OpenfoamMeshShmConfig = OpenfoamMeshShmConfig
493
493
 
494
+ class TransformationStl(google.protobuf.message.Message):
495
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
496
+
497
+ TRANSLATION_FIELD_NUMBER: builtins.int
498
+ ROTATION_AXIS_FIELD_NUMBER: builtins.int
499
+ ANGLE_FIELD_NUMBER: builtins.int
500
+ SCALE_FIELD_NUMBER: builtins.int
501
+ @property
502
+ def translation(self) -> luminarycloud._proto.base.base_pb2.Vector3: ...
503
+ @property
504
+ def rotation_axis(self) -> luminarycloud._proto.base.base_pb2.Vector3: ...
505
+ angle: builtins.float
506
+ """The rotation is specified in degrees."""
507
+ @property
508
+ def scale(self) -> luminarycloud._proto.base.base_pb2.Vector3: ...
509
+ def __init__(
510
+ self,
511
+ *,
512
+ translation: luminarycloud._proto.base.base_pb2.Vector3 | None = ...,
513
+ rotation_axis: luminarycloud._proto.base.base_pb2.Vector3 | None = ...,
514
+ angle: builtins.float | None = ...,
515
+ scale: luminarycloud._proto.base.base_pb2.Vector3 | None = ...,
516
+ ) -> None: ...
517
+ def HasField(self, field_name: typing_extensions.Literal["_angle", b"_angle", "_rotation_axis", b"_rotation_axis", "_scale", b"_scale", "_translation", b"_translation", "angle", b"angle", "rotation_axis", b"rotation_axis", "scale", b"scale", "translation", b"translation"]) -> builtins.bool: ...
518
+ def ClearField(self, field_name: typing_extensions.Literal["_angle", b"_angle", "_rotation_axis", b"_rotation_axis", "_scale", b"_scale", "_translation", b"_translation", "angle", b"angle", "rotation_axis", b"rotation_axis", "scale", b"scale", "translation", b"translation"]) -> None: ...
519
+ @typing.overload
520
+ def WhichOneof(self, oneof_group: typing_extensions.Literal["_angle", b"_angle"]) -> typing_extensions.Literal["angle"] | None: ...
521
+ @typing.overload
522
+ def WhichOneof(self, oneof_group: typing_extensions.Literal["_rotation_axis", b"_rotation_axis"]) -> typing_extensions.Literal["rotation_axis"] | None: ...
523
+ @typing.overload
524
+ def WhichOneof(self, oneof_group: typing_extensions.Literal["_scale", b"_scale"]) -> typing_extensions.Literal["scale"] | None: ...
525
+ @typing.overload
526
+ def WhichOneof(self, oneof_group: typing_extensions.Literal["_translation", b"_translation"]) -> typing_extensions.Literal["translation"] | None: ...
527
+
528
+ global___TransformationStl = TransformationStl
529
+
494
530
  class OpenfoamMeshConfig(google.protobuf.message.Message):
495
531
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
496
532
 
@@ -526,6 +562,23 @@ class OpenfoamMeshConfig(google.protobuf.message.Message):
526
562
  ) -> None: ...
527
563
  def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ...
528
564
 
565
+ class TransformsForStlsEntry(google.protobuf.message.Message):
566
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
567
+
568
+ KEY_FIELD_NUMBER: builtins.int
569
+ VALUE_FIELD_NUMBER: builtins.int
570
+ key: builtins.str
571
+ @property
572
+ def value(self) -> global___TransformationStl: ...
573
+ def __init__(
574
+ self,
575
+ *,
576
+ key: builtins.str = ...,
577
+ value: global___TransformationStl | None = ...,
578
+ ) -> None: ...
579
+ def HasField(self, field_name: typing_extensions.Literal["value", b"value"]) -> builtins.bool: ...
580
+ def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ...
581
+
529
582
  BACKGROUND_MESH_FIELD_NUMBER: builtins.int
530
583
  REFINEMENT_REGIONS_FIELD_NUMBER: builtins.int
531
584
  REFINEMENT_REGIONS_FROM_STLS_FIELD_NUMBER: builtins.int
@@ -534,6 +587,7 @@ class OpenfoamMeshConfig(google.protobuf.message.Message):
534
587
  MESH_ID_FIELD_NUMBER: builtins.int
535
588
  NAMES_TO_FILE_URLS_FIELD_NUMBER: builtins.int
536
589
  USE_WRAP_FIELD_NUMBER: builtins.int
590
+ TRANSFORMS_FOR_STLS_FIELD_NUMBER: builtins.int
537
591
  @property
538
592
  def background_mesh(self) -> global___BackgroundMesh:
539
593
  """string input_url = 1;"""
@@ -555,6 +609,8 @@ class OpenfoamMeshConfig(google.protobuf.message.Message):
555
609
  def names_to_file_urls(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]:
556
610
  """Map of names to STL files guaranteeing unique names."""
557
611
  use_wrap: builtins.bool
612
+ @property
613
+ def transforms_for_stls(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___TransformationStl]: ...
558
614
  def __init__(
559
615
  self,
560
616
  *,
@@ -566,9 +622,10 @@ class OpenfoamMeshConfig(google.protobuf.message.Message):
566
622
  mesh_id: builtins.str = ...,
567
623
  names_to_file_urls: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
568
624
  use_wrap: builtins.bool | None = ...,
625
+ transforms_for_stls: collections.abc.Mapping[builtins.str, global___TransformationStl] | None = ...,
569
626
  ) -> None: ...
570
627
  def HasField(self, field_name: typing_extensions.Literal["_background_mesh", b"_background_mesh", "_use_wrap", b"_use_wrap", "background_mesh", b"background_mesh", "config", b"config", "output_info", b"output_info", "shm_config", b"shm_config", "use_wrap", b"use_wrap"]) -> builtins.bool: ...
571
- def ClearField(self, field_name: typing_extensions.Literal["_background_mesh", b"_background_mesh", "_use_wrap", b"_use_wrap", "background_mesh", b"background_mesh", "config", b"config", "mesh_id", b"mesh_id", "names_to_file_urls", b"names_to_file_urls", "output_info", b"output_info", "refinement_regions", b"refinement_regions", "refinement_regions_from_stls", b"refinement_regions_from_stls", "shm_config", b"shm_config", "use_wrap", b"use_wrap"]) -> None: ...
628
+ def ClearField(self, field_name: typing_extensions.Literal["_background_mesh", b"_background_mesh", "_use_wrap", b"_use_wrap", "background_mesh", b"background_mesh", "config", b"config", "mesh_id", b"mesh_id", "names_to_file_urls", b"names_to_file_urls", "output_info", b"output_info", "refinement_regions", b"refinement_regions", "refinement_regions_from_stls", b"refinement_regions_from_stls", "shm_config", b"shm_config", "transforms_for_stls", b"transforms_for_stls", "use_wrap", b"use_wrap"]) -> None: ...
572
629
  @typing.overload
573
630
  def WhichOneof(self, oneof_group: typing_extensions.Literal["_background_mesh", b"_background_mesh"]) -> typing_extensions.Literal["background_mesh"] | None: ...
574
631
  @typing.overload
@@ -15,7 +15,7 @@ _sym_db = _symbol_database.Default()
15
15
 
16
16
 
17
17
 
18
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1aproto/lcstatus/codes.proto\x12\x17luminary.proto.lcstatus*\xf3\x06\n\x04\x43ode\x12\t\n\x05LC_OK\x10\x00\x12\x10\n\x0bLC_INTERNAL\x10\xe8\x07\x12\x19\n\x14GEO_VERTEX_DUPLICATE\x10\xfb.\x12\x18\n\x13GEO_EDGE_UNMESHABLE\x10\xdf/\x12\x18\n\x13GEO_EDGE_NOT_SMOOTH\x10\xe0/\x12\x1d\n\x18GEO_EDGE_LARGE_TOLERANCE\x10\xe1/\x12\x18\n\x13GEO_FACE_UNMESHABLE\x10\xc3\x30\x12\x1d\n\x18GEO_FACE_EDGES_TOO_CLOSE\x10\xc4\x30\x12\x1c\n\x17GEO_FACE_EDGE_TOO_SMALL\x10\xc5\x30\x12\x1f\n\x1aGEO_FACE_FACE_INTERSECTION\x10\xc6\x30\x12\x1f\n\x1aGEO_FACE_SELF_INTERSECTION\x10\xc7\x30\x12\x18\n\x13GEO_FACE_NOT_SMOOTH\x10\xc8\x30\x12\x1d\n\x18GEO_FACE_LARGE_TOLERANCE\x10\xc9\x30\x12\x18\n\x13GEO_FACE_EDGE_CROSS\x10\xca\x30\x12\x1b\n\x16GEO_FACE_NEEDS_IMPRINT\x10\xcb\x30\x12\x1e\n\x19GEO_CONTACT_NEEDS_IMPRINT\x10\xcc\x30\x12\x19\n\x14GEO_FACE_POOR_APPROX\x10\xcd\x30\x12\x14\n\x0fGEO_VOLUME_OPEN\x10\xa7\x31\x12\x1c\n\x17GEO_VOLUME_NON_MANIFOLD\x10\xa8\x31\x12\x1a\n\x15GEO_VOLUME_UNMESHABLE\x10\xa9\x31\x12%\n SOLVER_PARAM_EXCEEDS_LOWER_BOUND\x10\xd9\x36\x12%\n SOLVER_PARAM_EXCEEDS_UPPER_BOUND\x10\xda\x36\x12\x1c\n\x17SOLVER_INTERFACE_ISSUES\x10\xe2\x36\x12\x1e\n\x19GEO_FEATURE_UNKNOWN_ERROR\x10\x91N\x12\x18\n\x13GEO_INVALID_REQUEST\x10\x92N\x12\x1d\n\x18\x41NALYZER_FIELD_NOT_FOUND\x10\xf9U\x12\x1e\n\x19\x41NALYZER_DEPENDENCY_ERROR\x10\xfaU\x12 \n\x1b\x41NALYZER_INVALID_EXPRESSION\x10\xfbU\x12\x1e\n\x19\x41NALYZER_ENTITY_NOT_FOUND\x10\xfcU\x12%\n ANALYZER_NO_DATA_FOR_ENTITY_TYPE\x10\xfdUB\'Z%luminarycloud.com/core/proto/lcstatusb\x06proto3')
18
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1aproto/lcstatus/codes.proto\x12\x17luminary.proto.lcstatus*\x95\x07\n\x04\x43ode\x12\t\n\x05LC_OK\x10\x00\x12\x10\n\x0bLC_INTERNAL\x10\xe8\x07\x12\x19\n\x14GEO_VERTEX_DUPLICATE\x10\xfb.\x12\x18\n\x13GEO_EDGE_UNMESHABLE\x10\xdf/\x12\x18\n\x13GEO_EDGE_NOT_SMOOTH\x10\xe0/\x12\x1d\n\x18GEO_EDGE_LARGE_TOLERANCE\x10\xe1/\x12\x18\n\x13GEO_FACE_UNMESHABLE\x10\xc3\x30\x12\x1d\n\x18GEO_FACE_EDGES_TOO_CLOSE\x10\xc4\x30\x12\x1c\n\x17GEO_FACE_EDGE_TOO_SMALL\x10\xc5\x30\x12\x1f\n\x1aGEO_FACE_FACE_INTERSECTION\x10\xc6\x30\x12\x1f\n\x1aGEO_FACE_SELF_INTERSECTION\x10\xc7\x30\x12\x18\n\x13GEO_FACE_NOT_SMOOTH\x10\xc8\x30\x12\x1d\n\x18GEO_FACE_LARGE_TOLERANCE\x10\xc9\x30\x12\x18\n\x13GEO_FACE_EDGE_CROSS\x10\xca\x30\x12\x1b\n\x16GEO_FACE_NEEDS_IMPRINT\x10\xcb\x30\x12\x1e\n\x19GEO_CONTACT_NEEDS_IMPRINT\x10\xcc\x30\x12\x19\n\x14GEO_FACE_POOR_APPROX\x10\xcd\x30\x12\x14\n\x0fGEO_VOLUME_OPEN\x10\xa7\x31\x12\x1c\n\x17GEO_VOLUME_NON_MANIFOLD\x10\xa8\x31\x12\x1a\n\x15GEO_VOLUME_UNMESHABLE\x10\xa9\x31\x12%\n SOLVER_PARAM_EXCEEDS_LOWER_BOUND\x10\xd9\x36\x12%\n SOLVER_PARAM_EXCEEDS_UPPER_BOUND\x10\xda\x36\x12\x1c\n\x17SOLVER_INTERFACE_ISSUES\x10\xe2\x36\x12\x1e\n\x19GEO_FEATURE_UNKNOWN_ERROR\x10\x91N\x12\x18\n\x13GEO_INVALID_REQUEST\x10\x92N\x12 \n\x1bGEO_FEATURE_ONSHAPE_WARNING\x10\x93N\x12\x1d\n\x18\x41NALYZER_FIELD_NOT_FOUND\x10\xf9U\x12\x1e\n\x19\x41NALYZER_DEPENDENCY_ERROR\x10\xfaU\x12 \n\x1b\x41NALYZER_INVALID_EXPRESSION\x10\xfbU\x12\x1e\n\x19\x41NALYZER_ENTITY_NOT_FOUND\x10\xfcU\x12%\n ANALYZER_NO_DATA_FOR_ENTITY_TYPE\x10\xfdUB\'Z%luminarycloud.com/core/proto/lcstatusb\x06proto3')
19
19
 
20
20
  _CODE = DESCRIPTOR.enum_types_by_name['Code']
21
21
  Code = enum_type_wrapper.EnumTypeWrapper(_CODE)
@@ -44,6 +44,7 @@ SOLVER_PARAM_EXCEEDS_UPPER_BOUND = 7002
44
44
  SOLVER_INTERFACE_ISSUES = 7010
45
45
  GEO_FEATURE_UNKNOWN_ERROR = 10001
46
46
  GEO_INVALID_REQUEST = 10002
47
+ GEO_FEATURE_ONSHAPE_WARNING = 10003
47
48
  ANALYZER_FIELD_NOT_FOUND = 11001
48
49
  ANALYZER_DEPENDENCY_ERROR = 11002
49
50
  ANALYZER_INVALID_EXPRESSION = 11003
@@ -56,5 +57,5 @@ if _descriptor._USE_C_DESCRIPTORS == False:
56
57
  DESCRIPTOR._options = None
57
58
  DESCRIPTOR._serialized_options = b'Z%luminarycloud.com/core/proto/lcstatus'
58
59
  _CODE._serialized_start=56
59
- _CODE._serialized_end=939
60
+ _CODE._serialized_end=973
60
61
  # @@protoc_insertion_point(module_scope)
@@ -125,6 +125,8 @@ class _CodeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeW
125
125
  """Geometry worker feature request is invalid (i.e. invalid shape for
126
126
  example).
127
127
  """
128
+ GEO_FEATURE_ONSHAPE_WARNING: _Code.ValueType # 10003
129
+ """Geometry worker detected potential problems in the Onshape file"""
128
130
  ANALYZER_FIELD_NOT_FOUND: _Code.ValueType # 11001
129
131
  """
130
132
  Analyzer Codes - [11XXX]
@@ -251,6 +253,8 @@ GEO_INVALID_REQUEST: Code.ValueType # 10002
251
253
  """Geometry worker feature request is invalid (i.e. invalid shape for
252
254
  example).
253
255
  """
256
+ GEO_FEATURE_ONSHAPE_WARNING: Code.ValueType # 10003
257
+ """Geometry worker detected potential problems in the Onshape file"""
254
258
  ANALYZER_FIELD_NOT_FOUND: Code.ValueType # 11001
255
259
  """
256
260
  Analyzer Codes - [11XXX]
@@ -182,6 +182,10 @@ class QuantityType(IntEnum):
182
182
  def _is_force(cls, quantity: "QuantityType") -> bool:
183
183
  return quantity._has_tag(quantityoptspb.TAG_ANALYZER_FORCES)
184
184
 
185
+ @classmethod
186
+ def _is_coefficient(cls, quantity: "QuantityType") -> bool:
187
+ return quantity._has_tag(quantityoptspb.TAG_COEFFICIENT)
188
+
185
189
  @classmethod
186
190
  def _from_string(cls, quantity: str) -> "QuantityType":
187
191
  return cls[quantity.upper()]
@@ -31,6 +31,7 @@ class TableType(_IntEnum):
31
31
  Material property (e.g. conductivity) vs temperature.
32
32
  """
33
33
 
34
+ INVALID = _tablepb.INVALID
34
35
  MONITOR_POINTS = _tablepb.MONITOR_POINTS
35
36
  RADIAL_DISTRIBUTION = _tablepb.RADIAL_DISTRIBUTION
36
37
  BLADE_GEOMETRY = _tablepb.BLADE_GEOMETRY
@@ -52,6 +52,25 @@ class VisQuantity(IntEnum):
52
52
  SENSITIVITY = quantitypb.SENSITIVITY
53
53
  NORMAL_SENSITIVITY = quantitypb.NORMAL_SENSITIVITY
54
54
  SMOOTHED_NORMAL_SENSITIVITY = quantitypb.SMOOTHED_NORMAL_SENSITIVITY
55
+ # Time averaged
56
+ MACH_TIME_AVERAGE = quantitypb.MACH_TIME_AVERAGE
57
+ VELOCITY_TIME_AVERAGE = quantitypb.VELOCITY_TIME_AVERAGE
58
+ TEMPERATURE_TIME_AVERAGE = quantitypb.TEMPERATURE_TIME_AVERAGE
59
+ DENSITY_TIME_AVERAGE = quantitypb.DENSITY_TIME_AVERAGE
60
+ PRESSURE_TIME_AVERAGE = quantitypb.PRESSURE_TIME_AVERAGE
61
+ RELATIVE_VELOCITY_TIME_AVERAGE = quantitypb.RELATIVE_VELOCITY_TIME_AVERAGE
62
+ VELOCITY_MAGNITUDE_TIME_AVERAGE = quantitypb.VELOCITY_MAGNITUDE_TIME_AVERAGE
63
+ EDDY_VISCOSITY_TIME_AVERAGE = quantitypb.EDDY_VISCOSITY_TIME_AVERAGE
64
+ VISCOSITY_TIME_AVERAGE = quantitypb.VISCOSITY_TIME_AVERAGE
65
+ WALL_SHEAR_STRESS_TIME_AVERAGE = quantitypb.WALL_SHEAR_STRESS_TIME_AVERAGE
66
+ Y_PLUS_TIME_AVERAGE = quantitypb.Y_PLUS_TIME_AVERAGE
67
+ SA_VARIABLE_TIME_AVERAGE = quantitypb.SA_VARIABLE_TIME_AVERAGE
68
+ PRESSURE_COEFFICIENT_TIME_AVERAGE = quantitypb.PRESSURE_COEFFICIENT_TIME_AVERAGE
69
+ TOTAL_PRESSURE_TIME_AVERAGE = quantitypb.TOTAL_PRESSURE_TIME_AVERAGE
70
+ TOTAL_TEMPERATURE_TIME_AVERAGE = quantitypb.TOTAL_TEMPERATURE_TIME_AVERAGE
71
+ MASS_FLUX_TIME_AVERAGE = quantitypb.MASS_FLUX_TIME_AVERAGE
72
+ Q_CRITERION_TIME_AVERAGE = quantitypb.Q_CRITERION_TIME_AVERAGE
73
+ HEAT_FLUX_TIME_AVERAGE = quantitypb.HEAT_FLUX_TIME_AVERAGE
55
74
 
56
75
 
57
76
  # Return the text name for the VisQuantity including the units, as it appears in the UI
@@ -122,6 +141,7 @@ class ColorMapPreset(IntEnum):
122
141
  WAVE = vis_pb2.ColorMapName.COLOR_MAP_NAME_WAVE
123
142
  COOL_TO_WARM = vis_pb2.ColorMapName.COLOR_MAP_NAME_COOL_TO_WARM
124
143
  XRAY = vis_pb2.ColorMapName.COLOR_MAP_NAME_XRAY
144
+ PLASMA = vis_pb2.ColorMapName.COLOR_MAP_NAME_PLASMA
125
145
 
126
146
 
127
147
  class CameraProjection(IntEnum):
@@ -12,7 +12,7 @@ from google.protobuf.internal.containers import RepeatedScalarFieldContainer
12
12
  class FeatureOperationType(Enum):
13
13
  """Enum representing the type of operation in a Feature."""
14
14
 
15
- IMPORT = auto()
15
+ IMPORT_GEOMETRY = auto()
16
16
  CREATE = auto()
17
17
  DELETE = auto()
18
18
  UNION = auto()
@@ -73,7 +73,7 @@ def get_operation_type(feature: gpb.Feature) -> FeatureOperationType:
73
73
 
74
74
  # Base operation map for simple one-to-one mappings
75
75
  base_operation_map = {
76
- "import": FeatureOperationType.IMPORT,
76
+ "import_geometry": FeatureOperationType.IMPORT_GEOMETRY,
77
77
  "create": FeatureOperationType.CREATE,
78
78
  "delete": FeatureOperationType.DELETE,
79
79
  "imprint": FeatureOperationType.IMPRINT,
@@ -165,21 +165,20 @@ def modify_import(
165
165
  Returns:
166
166
  A gpb.Modification object
167
167
  """
168
- if get_operation_type(feature) != FeatureOperationType.IMPORT:
168
+ if get_operation_type(feature) != FeatureOperationType.IMPORT_GEOMETRY:
169
169
  raise ValueError("Feature is not an import operation")
170
170
 
171
171
  feature_copy = deepcopy(feature)
172
- import_op = getattr(feature_copy, "import")
173
172
 
174
173
  if geometry_url is not None:
175
174
  # TODO(chiodi): Handle upload of file here.
176
- import_op.geometry_url = geometry_url
175
+ feature_copy.import_geometry.geometry_url = geometry_url
177
176
 
178
177
  if scaling is not None:
179
- import_op.scaling = scaling
178
+ feature_copy.import_geometry.scaling = scaling
180
179
 
181
180
  if force_discrete is not None:
182
- import_op.force_discrete = force_discrete
181
+ feature_copy.import_geometry.force_discrete = force_discrete
183
182
 
184
183
  return gpb.Modification(
185
184
  mod_type=gpb.Modification.ModificationType.MODIFICATION_TYPE_UPDATE_FEATURE,
luminarycloud/geometry.py CHANGED
@@ -554,6 +554,30 @@ class Geometry(ProtoWrapperBase):
554
554
  res: geometrypb.GetGeometryResponse = get_default_client().GetGeometry(req)
555
555
  self._proto = res.geometry
556
556
 
557
+ def to_code(self) -> str:
558
+ """
559
+ Returns the python code that creates (from scratch) an identical geometry.
560
+ If the geometry has been modified, the code will be generated for the latest version of the
561
+ geometry.
562
+
563
+ Returns
564
+ -------
565
+ str
566
+ The SDK code that can be used to recreate this geometry.
567
+
568
+ Examples
569
+ --------
570
+ >>> geometry = lc.get_geometry("geometry-id")
571
+ >>> python_code = geometry.to_code()
572
+ >>> print(python_code)
573
+ """
574
+ req = geometrypb.GetSdkCodeRequest(
575
+ geometry_id=self.id,
576
+ geometry_version_id="", # Use the latest version of the geometry by default
577
+ )
578
+ res: geometrypb.GetSdkCodeResponse = get_default_client().GetSdkCode(req)
579
+ return res.sdk_code
580
+
557
581
 
558
582
  def get_geometry(id: str) -> Geometry:
559
583
  """
@@ -126,6 +126,29 @@ class GeometryVersion(ProtoWrapperBase):
126
126
  )
127
127
  return list(res.features_issues)
128
128
 
129
+ def to_code(self) -> str:
130
+ """
131
+ Returns the Python code that creates (from scratch) an identical geometry of
132
+ this particular version.
133
+
134
+ Returns
135
+ -------
136
+ str
137
+ The SDK code that can be used to recreate this specific geometry version.
138
+
139
+ Examples
140
+ --------
141
+ >>> geometry_version = lc.get_geometry_version("version-id")
142
+ >>> python_code = geometry_version.to_code()
143
+ >>> print(python_code)
144
+ """
145
+ req = geometrypb.GetSdkCodeRequest(
146
+ geometry_id=self.geometry_id,
147
+ geometry_version_id=self.id,
148
+ )
149
+ res: geometrypb.GetSdkCodeResponse = get_default_client().GetSdkCode(req)
150
+ return res.sdk_code
151
+
129
152
 
130
153
  def get_geometry_version(id: str) -> GeometryVersion:
131
154
  """
@@ -22,7 +22,7 @@ from luminarycloud.params.simulation._lib import ParamGroupWrapper, create_uniqu
22
22
  class Adjoint(CodeRepr, ParamGroupWrapper[clientpb.Adjoint]):
23
23
  """Settings for adjoint sensitivity analysis."""
24
24
 
25
- output: Any | None = None
25
+ _output: Any | None = None
26
26
  "Function to differentiate."
27
27
  surfaces: list[str] = field(default_factory=list)
28
28
  ""
@@ -33,8 +33,8 @@ class Adjoint(CodeRepr, ParamGroupWrapper[clientpb.Adjoint]):
33
33
 
34
34
  def _to_proto(self) -> clientpb.Adjoint:
35
35
  _proto = clientpb.Adjoint()
36
- if self.output is not None:
37
- _proto.adjoint_output.CopyFrom(self.output)
36
+ if self._output is not None:
37
+ _proto.adjoint_output.CopyFrom(self._output)
38
38
  if self.surfaces is not None:
39
39
  _proto.surfaces.extend(self.surfaces)
40
40
  if self.deformed_coords_id is not None:
@@ -44,7 +44,7 @@ class Adjoint(CodeRepr, ParamGroupWrapper[clientpb.Adjoint]):
44
44
  return _proto
45
45
 
46
46
  def _from_proto(self, proto: clientpb.Adjoint) -> None:
47
- self.output = proto.adjoint_output
47
+ self._output = proto.adjoint_output
48
48
  self.surfaces.extend(proto.surfaces)
49
49
  self.deformed_coords_id = proto.deformed_coords_id
50
50
  self.primal_simulation_id = proto.primal_simulation_id
@@ -85,7 +85,7 @@ class MaterialFluid(CodeRepr, ParamGroupWrapper[clientpb.MaterialFluid]):
85
85
  "Model for the laminar thermal conductivity of a fluid. Possible types: ``PrescribedPrandtlNumber``, ``PrescribedConductivity``, ``TemperatureDependentConductivity`` from the ``thermal_conductivity_model`` module."
86
86
  boussinesq_approximation: BoussinesqApproximation = field(default_factory=BoussinesqOn)
87
87
  "Introduce a body force due to thermal expansion without modifying the material density. Possible types: ``BoussinesqOff``, ``BoussinesqOn`` from the ``boussinesq_approximation`` module."
88
- preset: enum.MaterialFluidPreset = enum.MaterialFluidPreset.CUSTOM_MATERIAL_FLUID
88
+ preset: enum.MaterialFluidPreset = enum.MaterialFluidPreset.STANDARD_AIR
89
89
  "Select a predefined set of material properties or allow a custom set of properties."
90
90
  viscosity_model: ViscosityModel = field(default_factory=Sutherland)
91
91
  "Models available for the dynamic viscosity of the fluid. Possible types: ``Sutherland``, ``PrescribedViscosity``, ``TemperatureDependentViscosity`` from the ``viscosity_model`` module."
@@ -30,7 +30,7 @@ class MaterialSolid(CodeRepr, ParamGroupWrapper[clientpb.MaterialSolid]):
30
30
  "The thermal conductivity of the material."
31
31
  thermal_conductivity_table: RectilinearTable | None = None
32
32
  "Correlation between thermal conductivity and temperature."
33
- preset: enum.MaterialSolidPreset = enum.MaterialSolidPreset.CUSTOM_MATERIAL_SOLID
33
+ preset: enum.MaterialSolidPreset = enum.MaterialSolidPreset.ALUMINUM
34
34
  "Select a predefined set of material properties or allow a custom set of properties."
35
35
 
36
36
  def _to_proto(self) -> clientpb.MaterialSolid:
@@ -22,7 +22,7 @@ from luminarycloud.params.simulation._lib import ParamGroupWrapper, create_uniqu
22
22
  class Output(CodeRepr, ParamGroupWrapper[clientpb.Output]):
23
23
  """Solution output settings."""
24
24
 
25
- iters_per_output: int = 1000
25
+ iters_per_output: int = 0
26
26
  "Number of (pseudo) timesteps between successive full solution output. If ≤0, only the final solution is written."
27
27
  include_residuals: bool = False
28
28
  "Include the residuals for each equation in the volume solution."
@@ -19,6 +19,10 @@ from luminarycloud.params.simulation._lib import ParamGroupWrapper, create_uniqu
19
19
 
20
20
  from luminarycloud.params.simulation.physics.fluid.initialization_fluid_ import InitializationFluid
21
21
  from luminarycloud.params.simulation.physics.fluid.initialization_fluid_ import *
22
+ from luminarycloud.params.simulation.physics.fluid.initialization.turbulence_initialization_ import (
23
+ TurbulenceInitialization,
24
+ )
25
+ from luminarycloud.params.simulation.physics.fluid.initialization.turbulence_initialization_ import *
22
26
 
23
27
 
24
28
  @dataclass(kw_only=True)
@@ -27,16 +31,40 @@ class FluidExistingSolution(InitializationFluid):
27
31
 
28
32
  solution_id: str = ""
29
33
  "ID for the existing solution to use for initialization."
34
+ turbulence: TurbulenceInitialization = field(default_factory=TurbulenceInitialization)
35
+ ""
30
36
 
31
37
  def _to_proto(self) -> clientpb.InitializationFluid:
32
38
  _proto = super()._to_proto()
33
39
  _proto.initialization_type = clientpb.InitializationType.EXISTING_SOLUTION
34
40
  if self.solution_id is not None:
35
41
  _proto.existing_solution_id = self.solution_id
42
+ _proto.turbulent_variable_initialization_type_sa = self.turbulence.spalart_allmaras.value
43
+ _proto.turbulent_variable_initialization_type_komega = self.turbulence.komega.value
44
+ _proto.init_turbulent_viscosity_ratio.CopyFrom(
45
+ _to_ad_proto(self.turbulence.viscosity_ratio)
46
+ )
47
+ _proto.init_turbulent_viscosity.CopyFrom(_to_ad_proto(self.turbulence.viscosity))
48
+ _proto.init_turbulence_intensity.CopyFrom(_to_ad_proto(self.turbulence.intensity))
49
+ _proto.uniform_nu_tilde.CopyFrom(_to_ad_proto(self.turbulence.sa_variable))
50
+ _proto.uniform_tke.CopyFrom(_to_ad_proto(self.turbulence.tke))
51
+ _proto.uniform_omega.CopyFrom(_to_ad_proto(self.turbulence.omega))
36
52
  return _proto
37
53
 
38
54
  def _from_proto(self, proto: clientpb.InitializationFluid) -> None:
39
55
  super()._from_proto(proto)
40
56
  assert proto.initialization_type == clientpb.InitializationType.EXISTING_SOLUTION
41
57
  self.solution_id = proto.existing_solution_id
58
+ self.turbulence.spalart_allmaras = enum.TurbulentVariableInitializationTypeSa(
59
+ proto.turbulent_variable_initialization_type_sa
60
+ )
61
+ self.turbulence.komega = enum.TurbulentVariableInitializationTypeKomega(
62
+ proto.turbulent_variable_initialization_type_komega
63
+ )
64
+ self.turbulence.viscosity_ratio = _from_ad_proto(proto.init_turbulent_viscosity_ratio)
65
+ self.turbulence.viscosity = _from_ad_proto(proto.init_turbulent_viscosity)
66
+ self.turbulence.intensity = _from_ad_proto(proto.init_turbulence_intensity)
67
+ self.turbulence.sa_variable = _from_ad_proto(proto.uniform_nu_tilde)
68
+ self.turbulence.tke = _from_ad_proto(proto.uniform_tke)
69
+ self.turbulence.omega = _from_ad_proto(proto.uniform_omega)
42
70
  return None
@@ -77,6 +77,8 @@ class SimulationParam(CodeRepr, ParamGroupWrapper[clientpb.SimulationParam]):
77
77
  "Body frame."
78
78
  surface_name: dict[str, SurfaceName] = field(default_factory=dict)
79
79
  "Surface name map."
80
+ _table_references: dict[str, Any] = field(default_factory=dict)
81
+ "Solution inputs - metadata for general n-dimensional rectilinear grid data (Monitor points, radial distribution, blade geometry, airfoil performance)."
80
82
  output: Output = field(default_factory=Output)
81
83
  "Solution output settings."
82
84
  entity_relationships: EntityRelationships = field(default_factory=EntityRelationships)
@@ -115,6 +117,9 @@ class SimulationParam(CodeRepr, ParamGroupWrapper[clientpb.SimulationParam]):
115
117
  if self.surface_name is not None:
116
118
  for k, v in self.surface_name.items():
117
119
  _proto.surface_name[k].CopyFrom(v._to_proto())
120
+ if self._table_references is not None:
121
+ for k, v in self._table_references.items():
122
+ _proto.table_references[k].CopyFrom(v)
118
123
  if self.output is not None:
119
124
  _proto.output.CopyFrom(self.output._to_proto())
120
125
  if self.entity_relationships is not None:
@@ -140,6 +145,7 @@ class SimulationParam(CodeRepr, ParamGroupWrapper[clientpb.SimulationParam]):
140
145
  self.monitor_plane = [MonitorPlane.from_proto(v) for v in proto.monitor_plane]
141
146
  self.body_frame = BodyFrame.from_proto(proto.body_frame)
142
147
  self.surface_name = {k: SurfaceName.from_proto(v) for k, v in proto.surface_name.items()}
148
+ self._table_references.update(proto.table_references)
143
149
  self.output = Output.from_proto(proto.output)
144
150
  self.entity_relationships = EntityRelationships.from_proto(proto.entity_relationships)
145
151
  self.adaptive_mesh_refinement = AdaptiveMeshRefinement.from_proto(
luminarycloud/project.py CHANGED
@@ -39,6 +39,7 @@ from ._proto.api.v0.luminarycloud.simulation_template import (
39
39
  simulation_template_pb2 as simtemplatepb,
40
40
  )
41
41
  from ._proto.client import simulation_pb2 as clientpb
42
+ from ._proto.table import table_pb2 as tablepb
42
43
  from ._proto.hexmesh import hexmesh_pb2 as hexmeshpb
43
44
  from ._proto.upload import upload_pb2 as uploadpb
44
45
  from ._wrapper import ProtoWrapper, ProtoWrapperBase
@@ -440,13 +441,14 @@ class Project(ProtoWrapperBase):
440
441
  raise RuntimeError("The table upload failed.")
441
442
 
442
443
  # Update the simulation template with the new table reference.
443
- params: clientpb.SimulationParam = simulation_template._proto.parameters
444
- params.table_references[name].url = url
445
- params.table_references[name].table_type = table_type.value
446
- params.table_references[name].uploaded_filename = uploaded_filename
447
- simulation_template._update(name=simulation_template.name, parameters=params)
448
-
449
- return RectilinearTable(id=name, name=uploaded_filename, table_type=table_type)
444
+ params: SimulationParam = simulation_template.get_parameters()
445
+ params._table_references[name] = tablepb.Metadata()
446
+ params._table_references[name].url = url
447
+ params._table_references[name].table_type = table_type.value
448
+ params._table_references[name].uploaded_filename = uploaded_filename
449
+ simulation_template.update(parameters=params)
450
+ # The name is lost in to/from proto conversions so make it equal to the id for consistency.
451
+ return RectilinearTable(id=name, name=name, table_type=table_type)
450
452
 
451
453
  @experimental
452
454
  def set_surface_deformation(