This is a quick-reference guide for PyPrimeMesh. You can jump to a section of your choosing by using these links:
Launching PyPrimeMesh | Read and Write Files | Defining Size Controls | Generate Wrapper Surface Mesh | Generate Surface Mesh | Surface Mesh Analysis | Generate Volume Mesh | Part Summary
Launch PyPrimeMesh Client
To launch and exit a PyPrimeMesh server from Python in gRPC mode.
# Launch PyPrimeMesh Server
from ansys.meshing import prime
with prime.launch_prime(timeout=20) as prime_client:
# The Client class gets the model parameter
model = prime_client.model
# Define Script Here
# Disconnect from server
prime_client.exit()
To launch an instance of PyPrimeMesh at IP127.0.0.1 and port 50055 with number of processes = 4.
with prime.launch_prime(ip="127.0.0.1", port= 50055, n_procs=4) as prime_client:
model = prime_client.model
Read and Write Files
Read or write files of different formats based on file extension. An example for the same can be seen below.
# Import lucid class
from ansys.meshing.prime import lucid
# Define mesher object
mesher=lucid.Mesh(model)
# Read Mesh (*.msh) file
mesh_file_name = r"sample1_mesh.msh"
mesher.read(mesh_file_name, append=False)
# Import CAD (*.step) file
cad_file_name = r"sample2_CAD.stp"
mesher.read(cad_file_name, append=False)
# Write Mesh (*.cdb) file
cdb_file_name = r"sample3_case.cdb"
mesher.write(cdb_file_name)
Defining Size Controls
Sets the global sizing parameters
# Define Global Size Controls
model.set_global_sizing_params(prime.GlobalSizingParams(min=0.5, max=16.0, growth_rate=1.2))
Curvature size control definition.
# Create Curvature Size Control
curvature_control = model.control_data.create_size_control(prime.SizingType.CURVATURE)
control_name = "Curvature_Size_Control"
curvature_control.set_suggested_name(control_name)
# Define Scope
scope = prime.ScopeDefinition(model, evaluation_type=prime.ScopeEvaluationType.LABELS, label_expression="*")
curvature_control.set_scope(scope)
# Define Curvature Control Parameter
curvature_control.set_curvature_sizing_params(prime.CurvatureSizingParams(model, normal_angle=18))
Generate Wrapper Surface Mesh
Generate Wrapper Surface Mesh.
mesher.wrap(
min_size = 0.5,
max_size = 16,
input_parts = "flange,pipe",
use_existing_features = True,
recompute_remesh_sizes = True,
remesh_size_controls = [curvature_control]
)
Generate Surface Mesh
Generate Surface Mesh based on min, max size.
mesher.surface_mesh(min_size = 0.5, max_size = 16, generate_quads = True)
Generate Surface Mesh based on size controls.
control_name = "Curvature_Size_Control"
mesher.surface_mesh_with_size_controls(control_name)
Surface Mesh Analysis
Surface Mesh Diagnostics.
diag = prime.SurfaceSearch(model)
diag_params = prime.SurfaceDiagnosticSummaryParams(
model,
scope = surface_scope,
compute_free_edges = True,
)
diag_res = diag.get_surface_diagnostic_summary(diag_params)
print("Number of free faces: ", diag_res.n_free_edges)
Surface Mesh Quality Metrics.
face_quality_measures = prime.FaceQualityMeasure.SKEWNESS
quality = prime.SurfaceSearch(model)
quality_params = prime.SurfaceQualitySummaryParams(
model = model,
scope = surface_scope,
face_quality_measures = [face_quality_measures],
quality_limit = [0.9],
)
print("Maximum surface skewness: ", qual_summary_res.quality_results[0].max_quality)
Generate Volume Mesh
Generate Volume Mesh.
vol_scope = prime.ScopeDefinition(model, part_expression = "*")
mesher.volume_mesh(volume_fill_type = prime.VolumeFillType.HEXCOREPOLY, scope = vol_scope)
Part Summary
Query for Part Summary.
part = model.get_part_by_name("sample_part")
summary = part.get_summary(prime.PartSummaryParams(model))
print("Total number of cells: ", summary.n_cells)