turbo_moc.deprecated.meshing.stator_mesh_3d module#

Swept 3D volume meshes of the app’s stator and rotor rows (axial and radial).

The app’s annular stator (turbo_moc.geometry.annular, flare “pitch_scale”) puts every blade point at theta = -x / r_hub and z = y at EVERY radius: the blade surface is ruled along radial lines, and the section at radius r is the hub section stretched pitchwise by r / r_hub. So the hub 2D mesh (stator_mesh_2d.mesh_sized_stator) mapped onto the cylinder at each span station (stator_mesh_2d.section_coordinates, “cylinder”) is an exact sweep:

  • swept blade faces lie on the exported solid (not only at the stations);

  • each station is an affine image of the hub mesh (per cylinder), so no cell can invert and every station has the same topology;

  • quadrilaterals become hexahedra, triangles prisms, and the periodic translation by one hub pitch becomes a rotation by 2 pi / N about Z.

Spanwise, the hub and shroud endwalls get the blade’s inflation settings (first height from the y+ estimate, number of layers, growth ratio), then cells keep growing at the transition ratio up to a uniform core size. The rotor’s hub mesh (turbo_moc.meshing.rotor_mesh_2d) is built in the same (X pitchwise, Y axial) frame, so it sweeps onto the app’s rotor solid the same way. Volume assembly, checks and CGNS export: turbo_moc.meshing.passage_volume.

class turbo_moc.deprecated.meshing.stator_mesh_3d.SweptAnnulus(num_blades, reference_radius, orientation, pitch_angle)[source]#

Bases: object

The channel interface of passage_volume for the swept stator.

pitch_angle (+-2 pi / N) carries the sense of the periodic rotation: periodic_right is periodic_left rotated by -pitch_angle about Z (passage_volume’s convention).

Methods

rotation

rotation()[source]#
turbo_moc.deprecated.meshing.stator_mesh_3d.load_patch_surfaces(output_dir, names=('blade', 'hub', 'shroud', 'inlet', 'outlet', 'periodic_left', 'periodic_right'), filename='stator_mesh_3d_surfaces.npz')[source]#

Read the compact display patches written by mesh_swept_passage.

turbo_moc.deprecated.meshing.stator_mesh_3d.mesh_radial_passage(mesh_2d, reference, n_blades, depth, span, output_dir, boundary_types=None, max_cells=20000000, name='stator_mesh_3d')[source]#

Radial row: map the 2D mesh with the log-spiral wrap and extrude it through depth (flat endwalls at z = 0 and z = depth, “hub”/”shroud”). Same span settings and outputs as mesh_swept_passage.

turbo_moc.deprecated.meshing.stator_mesh_3d.mesh_swept_passage(mesh_2d, r_hub, r_shroud, n_blades, span, output_dir, boundary_types=None, max_cells=20000000, name='stator_mesh_3d')[source]#

Axial row: sweep the hub 2D mesh from r_hub to r_shroud and export it.

span holds first_height, growth_ratio, num_layers, transition_ratio (endwall layers, normally the blade’s) and core_size [mm]. Writes <name>.msh, <name>.cgns (metres) and <name>_surfaces.npz (compact boundary patches for display) to output_dir. Returns a JSON-friendly summary; its “files” maps msh/cgns/surfaces to those file names.

turbo_moc.deprecated.meshing.stator_mesh_3d.mesh_swept_stator(mesh_2d, r_hub, r_shroud, n_blades, span, output_dir, boundary_types=None, max_cells=20000000, name='stator_mesh_3d')#

Axial row: sweep the hub 2D mesh from r_hub to r_shroud and export it.

span holds first_height, growth_ratio, num_layers, transition_ratio (endwall layers, normally the blade’s) and core_size [mm]. Writes <name>.msh, <name>.cgns (metres) and <name>_surfaces.npz (compact boundary patches for display) to output_dir. Returns a JSON-friendly summary; its “files” maps msh/cgns/surfaces to those file names.

turbo_moc.deprecated.meshing.stator_mesh_3d.radial_length_scale(reference, radius)[source]#

Physical length of one 2D-plane unit at radius (the map’s exact local magnification |a| r, a = ln(r2/r1) / c_axial).

turbo_moc.deprecated.meshing.stator_mesh_3d.radial_map_reference(blade_data, r1, r2, source)[source]#

The log-spiral map of turbo_moc.geometry.radial for this blade, in the mesh frame (X pitchwise; Y = the stator’s own chordwise y, or -x for the rotor, see rotor_mesh_2d): the same (x1, y1, c_axial) the radial wrap derives from the blade’s main contour, so the mesh lands on its solid. The rotor’s wrap mirrors its pitch (wrap_rotor_blade_radial: -y, for the same handedness as the stator), hence pitch_sign = -1 there.

turbo_moc.deprecated.meshing.stator_mesh_3d.radial_section_coordinates(xy, reference, z=0.0)[source]#

Mesh-frame nodes -> (X, Y, z) on the radial annulus (log-spiral map).

turbo_moc.deprecated.meshing.stator_mesh_3d.span_distribution(height, first_height, growth_ratio, num_layers, transition_ratio, core_size)[source]#

Spanwise station heights [mm] from the hub (0) to the shroud (height).

Symmetric about midspan: num_layers geometric layers (first_height * growth_ratio^k) on each endwall, then growth at transition_ratio until core_size, then a uniform core that fills the rest exactly.

turbo_moc.deprecated.meshing.stator_mesh_3d.swept_section(mesh_2d)[source]#

The 2D app mesh (1-based plain lists) as passage_volume’s section dict (0-based arrays; slave = periodic_right nodes, master = periodic_left).