mcdc.Surface

class mcdc.Surface(type_, name, boundary_condition)

Geometric surface primitive with optional boundary condition and motion.

Surfaces are registered non-singletons and receive a stable ID. Factory constructors (PlaneX(), CylinderZ(), etc.) set the quadric coefficients (A..J) and linearity flag. Motion segments can be defined with move().

Parameters

type_int

One of SURFACE_* constants (e.g., SURFACE_PLANE_X).

namestr

Optional label for reporting.

boundary_conditionstr

Boundary behavior at the surface ("none", "vacuum", or "reflective").

Attributes

IDint

Index in the global registry (assigned on construction).

type_int

Surface type code (SURFACE_*).

namestr

User label.

boundary_conditionint

One of BC_NONE, BC_VACUUM, BC_REFLECTIVE.

A,B,C,D,E,F,G,H,I,Jfloat

Quadric coefficients defining the implicit surface.

linearbool

True for linear (plane) surfaces.

quadricbool

True for quadric (e.g.,cylinder) surfaces.

quarticbool

True for quartic (e.g., torus) surfaces.

nx, ny, nzfloat

Outward normal components for linear planes.

movingbool

True if move() has been called.

N_moveint

Number of motion segments plus the final static segment.

move_velocities(N_move, 3) ndarray

Per-segment velocity vectors.

move_durations(N_move,) ndarray

Per-segment durations (s).

move_time_grid(N_move+1,) ndarray

Cumulative time breakpoints.

move_translations(N_move+1, 3) ndarray

Cumulative translations at each breakpoint.

See Also

Region

Use unary + / - to form half-spaces: +surface or -surface.

decode_type

Human-readable surface type.

decode_BC_type

Human-readable boundary condition name.