Skip to content

Support hyperboloidal, ellipsoidal and paraboloidal optical surfaces in front_surface and back_surface #302

Description

@munechika-koyo

Motivation

We are developing the machine description of the Divertor Impurity Monitor (DIM) using the spectrometer_visible IDS.

To reconstruct optical geometry for ray tracing, we need to describe hyperboloidal, ellipsoidal, and paraboloidal surfaces in:

  • channel/optical_element/front_surface
  • channel/optical_element/back_surface

The current curvature identifiers cover planar, cylindrical, spherical, and toroidal surfaces. They do not explicitly represent these additional conic surfaces.

Requested change

Extend the shared curved_surface structure to support rotationally symmetric hyperboloidal, ellipsoidal, and paraboloidal surfaces, including the parameters needed to reconstruct their positioned analytic supports.

We suggest:

  1. Extending curvature_type with identifiers for these surface types, while preserving existing identifier values.
  2. Adding a conic description containing:
    • Vertex position.
    • Symmetry-axis unit vector.
    • Signed radius of curvature at the vertex, R [m].
    • Conic constant, K [dimensionless].
  3. Defining the relationship between these parameters and the existing optical_element/geometry reference frame.

One possible representation is:

  • conic/vertex: global cylindrical coordinates (R, phi, Z).
  • conic/axis: global Cartesian unit-vector components.
  • conic/vertex_radius: signed vertex radius [m].
  • conic/conic_constant: dimensionless conic constant.

The field names and organization are suggestions for discussion.

Mathematical definition

In local coordinates with the origin at the vertex and z along the symmetry axis, the surface can be defined by:

x² + y² + (1 + K) z² - 2 R z = 0

This gives:

  • K < -1: hyperboloid of revolution.
  • K = -1: paraboloid of revolution.
  • K > -1, K != 0: ellipsoid of revolution.
  • K = 0: the existing spherical case.

The documentation should specify the radius sign convention, surface branch selection, and normal orientation. It should also clarify whether the existing geometry/centre denotes the optical vertex or a separate reference point.

Scope and compatibility

The same representation should apply to front_surface and back_surface, retaining the existing convention that mirrors use the front surface and lenses may use both.

This request concerns analytic conic supports. Address exact trimming boundaries and general NURBS surfaces separately. An off-axis aperture must not be assumed to be centered on the parent conic's vertex.

Existing fields and identifier values should remain valid. A B-spline CAD representation alone should not be treated as evidence that the surface is a particular conic.

Expected validation

  • Populate and validate each new surface type using IMAS-Python.
  • Preserve its parameters through a netCDF round trip.
  • Reconstruct synthetic surfaces and verify their positions and normals.
  • Check the spherical limit and compatibility with existing data.

Would extending curved_surface in this way be appropriate, or is there an existing geometry structure that should be reused?

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions