From cb7e710ca9810156ac99abb3dc5ac2a25d320287 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 29 Sep 2026 14:59:13 +0000 Subject: [PATCH] feat: a device template, with vessel layers and conductors as shapes A template for a machine: the vacuum vessel, the wall, the passive conductors, the PF coils and the central solenoid, and the conductor of the TF coils, in the poloidal plane; with the currents of the coils and the passive conductors and the vacuum toroidal field when the source has them. "-T autofrd" is this template: autofrd, in tbd-fusion, writes a machine it drew as these IDSs. Two kinds of shapes are new, general to the Data Dictionary: - The layers of a vessel (wall/description_2d/vessel/unit/annular), filled between their inner and outer contours, or around their centreline as thick as their thickness (per segment or one for all, mitred at corners). Open contours make the band between them. - Conductors made of line segments, arcs of circle through an intermediate point and full circles (e.g. tf/coil/conductor/elements). Their points are in three dimensions (r, phi, z); they are drawn at their distance from the axis and their height, so a line across toroidal angles curves in R and a ring around the axis is a point. An arc without its intermediate point goes the shorter way about its centre. Elements that do not meet are drawn apart. A member of a path with wildcards whose levels all have one element is named after the last level that has a name: the coil "TF" rather than its conductor. The demo machine gains a vacuum vessel, two passive plates with induced currents, and 16 TF coils drawn as a D of lines and arcs, with their current and vacuum field. The IDS browser lists a vessel layer and a conductor as shapes. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_018aVekYzCRLPE71Mm6UH8Zp --- README.md | 17 ++- docs/template-device.png | Bin 0 -> 164347 bytes src/idscope/data/extract.py | 234 ++++++++++++++++++++++++++++-- src/idscope/demo.py | 114 ++++++++++++++- src/idscope/gui/panel.py | 4 +- src/idscope/templates/__init__.py | 1 + src/idscope/templates/device.yaml | 62 ++++++++ tests/test_browse.py | 15 ++ tests/test_cli.py | 4 +- tests/test_extract.py | 137 ++++++++++++++++- tests/test_templates.py | 123 +++++++++++++++- 11 files changed, 688 insertions(+), 23 deletions(-) create mode 100644 docs/template-device.png create mode 100644 src/idscope/templates/device.yaml diff --git a/README.md b/README.md index 3c36865..c9f76be 100644 --- a/README.md +++ b/README.md @@ -68,12 +68,14 @@ Templates are ready-made configurations for common IDSs, and for the results of some kinds of codes. Start from one with `idscope -T NAME SOURCE ...` or File → New from template; `idscope --list-templates` prints their names. Templates for the results of a kind of code also go by the names of such codes: `-T nubdec` (NuBDeC) -is `nbi`, and `-T sonamu` and `-T freegs` (SONAMU, FreeGS) are `free_boundary`. +is `nbi`, `-T sonamu` and `-T freegs` (SONAMU, FreeGS) are `free_boundary`, and +`-T autofrd` (autofrd, which draws a machine) is `device`. | template | shows | |---|---| | `core_profiles` | Ip, central Te/Ti/ne, loop voltage, li and beta over time; Te/Ti, ne/ni, q, current densities and Zeff profiles; Te and ne against (t, x) | | `core_sources` | for every source (beams, waves, ohmic, ...): profiles of electron and ion heating, current density, particles and torque density; power, driven current and torque over time; the power at the selected time, as bars | +| `device` (`autofrd`) | the machine in the poloidal plane: the vacuum vessel (its layers, between their inner and outer contours), the wall (including parts only at some toroidal angles, such as ports), the passive conductors, the PF coils and the central solenoid, and the conductor of the TF coils; the currents of the coils and passive conductors, and the vacuum toroidal field, when the source has them | | `equilibrium` | profiles: q, pressure, current densities (j_phi, j_parallel), dp/dpsi, FF', elongation and triangularities | | `free_boundary` (`sonamu`, `freegs`) | the poloidal plane: flux surfaces, plasma boundary, X-points and those the solver was asked to hold, magnetic axis, coils and wall; the coil currents, as bars; p', FF', q and pressure against psi_n | | `nbi` (`nubdec`) | what the beams give the plasma: profiles of electron and ion heating, driven current and torque densities; fast ion density and pressures; where the ions of the beams are born (markers) and where the neutrons are (a map per reaction), in the poloidal plane; the neutron rates over time, D-D beam-thermal and thermal apart | @@ -87,7 +89,9 @@ voltages of a pf_active written by an equilibrium code, which only has currents, the totals of a core_sources written by a beam deposition code, which only has profiles. The output of a beam code has no equilibrium and no wall: to draw the births over the flux surfaces, give the data entry the code was run on as a second -source. +source. A machine description has the geometry and no currents; given the outputs +of several runs of autofrd, the `device` template draws each machine with a line +style of its own. A template saved with File → Save as becomes a configuration that can be edited. ![equilibrium template on the ITER 134173/106 training data](docs/template-equilibrium.png) @@ -100,6 +104,8 @@ A template saved with File → Save as becomes a configuration that can be edite ![free_boundary template comparing two synthetic sources](docs/template-free_boundary.png) +![device template comparing two synthetic sources](docs/template-device.png) + ## Using the scope | jScope | idscope | @@ -265,7 +271,12 @@ distribution_sources/source[:]/ggd/particles[0]/values a map per source, on a maps: the 2D geometry of coils and passive loops (outline, rectangle, parallelogram, arcs of circle, annulus or thick line), `r`/`z` outlines, `r`/`z` points, and the markers of a particle distribution, as dots (the columns - of their `positions` that their `coordinate_identifier` says are R and Z). The IDS + of their `positions` that their `coordinate_identifier` says are R and Z). Also + the layers of a vessel (`wall/description_2d[0]/vessel/unit[:]/annular`), filled + between their inner and outer contours, or around their centreline as thick as + their `thickness`; and conductors made of line segments, arcs of circle and full + circles (`tf/coil[:]/conductor[:]/elements`), drawn at their distance from the + axis and their height, since their points are in three dimensions. The IDS browser lists them as *shape*. - The `values` of a GGD quantity on a structured grid (grid identifier `structured_spaces`: two spaces of one dimension, e.g. R and Z) are a map, on the diff --git a/docs/template-device.png b/docs/template-device.png new file mode 100644 index 0000000000000000000000000000000000000000..fecd625eb154d12ce5e76c2c28833c804021d434 GIT binary patch literal 164347 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 GfBRoExv?z( literal 0 HcmV?d00001 diff --git a/src/idscope/data/extract.py b/src/idscope/data/extract.py index 291ae19..c5e872a 100644 --- a/src/idscope/data/extract.py +++ b/src/idscope/data/extract.py @@ -13,6 +13,8 @@ ``map`` (z vs x1, x2) ``equilibrium/time_slice/profiles_2d[0]/psi`` ``shape`` (in R, Z) ``pf_active/coil[:]/element[:]/geometry``, ``wall/description_2d[0]/limiter/unit[:]/outline``, + ``wall/description_2d[0]/vessel/unit[:]/annular``, + ``tf/coil[:]/conductor[:]/elements``, ``equilibrium/time_slice/boundary/x_point[:]`` ======================== ========================================================= @@ -47,6 +49,9 @@ GEOMETRY, OUTLINE, POINT, MARKERS = "geometry", "outline", "point", "markers" """Kinds of shapes: closed cross-sections, curves, points and the markers of a particle distribution (e.g. where the ions of a neutral beam are born).""" +ANNULAR, CONDUCTOR = "annular", "conductor" +"""Also kinds of shapes: a layer of a vessel between two contours, and a conductor +made of line segments and arcs of circle (e.g. a toroidal field coil).""" _R_INDEX, _Z_INDEX = 4, 3 """Indices of R and Z in the Data Dictionary's coordinate identifiers.""" @@ -369,8 +374,9 @@ def is_time_aos(meta) -> bool: def shape_kind(meta) -> Optional[str]: """The kind of shape a structure (or the elements of an array of structures) - describes: a Data Dictionary 2D geometry, an (r, z) curve, an (r, z) point or - the markers of a particle distribution.""" + describes: a Data Dictionary 2D geometry, an (r, z) curve, an (r, z) point, + the markers of a particle distribution, a layer of a vessel or the elements of + a conductor.""" if meta.data_type not in (IDSDataType.STRUCTURE, IDSDataType.STRUCT_ARRAY): return None children = {child.name: child for child in meta} @@ -378,6 +384,10 @@ def shape_kind(meta) -> Optional[str]: return GEOMETRY if {"positions", "coordinate_identifier"} <= set(children): return MARKERS + if {"outline_inner", "outline_outer"} <= set(children): + return ANNULAR + if {"types", "start_points", "end_points"} <= set(children): + return CONDUCTOR r, z = children.get("r"), children.get("z") if r is None or z is None: return None @@ -673,10 +683,16 @@ def walk(node, pos, key, labels): walk(ids, 0, (), ()) members = [] seen: Dict[str, int] = {} + steps = [plan.steps[pos].name for pos in plan.channels] for key in sorted(found): labels = found[key] - # Levels with a single element (e.g. coils of one element) add nothing - shown = [name for name, count in labels if count > 1] or [labels[-1][0]] + # Levels with a single element (e.g. coils of one element) add nothing; when + # all have one, the last level with a name tells the member (the coil "TF" + # rather than its one conductor, "conductor[0]") + named = [name for (name, _), step in zip(labels, steps) + if not name.startswith(f"{step}[")] + shown = [name for name, count in labels if count > 1] or \ + (named[-1:] or [labels[-1][0]]) name = "/".join(shown) # Elements can share a name, e.g. two core_sources both "nbi": nbi, nbi#2 seen[name] = seen.get(name, 0) + 1 @@ -1127,6 +1143,10 @@ def read_shape(node, shape: str) -> Optional[np.ndarray]: return geometry_outline(node) if shape == MARKERS: return marker_positions(node) + if shape == ANNULAR: + return annular_outline(node) + if shape == CONDUCTOR: + return conductor_line(node) r, z = _leaf_array(node.r), _leaf_array(node.z) if shape == POINT: if not (np.isfinite(r) and np.isfinite(z)): @@ -1157,14 +1177,17 @@ def marker_positions(markers) -> Optional[np.ndarray]: def _is_closed(outline, points: np.ndarray) -> bool: - """Whether a curve is closed: as its ``closed`` flag says (e.g. limiter units + """Whether a curve is closed: as its ``closed`` flag says, or that of the + structure around it (e.g. the contours of a vessel layer and the limiter units of DD 3), else when its ends are about one segment apart.""" - try: - from imas.util import get_parent + flag = getattr(outline, "closed", None) + if not (isinstance(flag, IDSPrimitive) and flag.has_value): + try: + from imas.util import get_parent - flag = getattr(get_parent(outline), "closed", None) - except Exception: # pragma: no cover - depends on the imas-python version - flag = None + flag = getattr(get_parent(outline), "closed", None) + except Exception: # pragma: no cover - depends on the imas-python version + flag = None if isinstance(flag, IDSPrimitive) and flag.has_value: return int(flag.value) == 1 finite = points[np.all(np.isfinite(points), axis=1)] @@ -1285,6 +1308,197 @@ def geometry_outline(geometry) -> Optional[np.ndarray]: return None +def _curve(node) -> Optional[Tuple[np.ndarray, bool]]: + """The finite (R, Z) points of an (r, z) curve, and whether it is closed; None + when it is not filled.""" + r, z = _leaf_array(node.r).ravel(), _leaf_array(node.z).ravel() + if r.size == 0 or r.shape != z.shape: + return None + points = np.column_stack([r, z]) + points = points[np.all(np.isfinite(points), axis=1)] + if len(points) < 2: + return None + return points, _is_closed(node, points) + + +def _widened(points: np.ndarray, thickness: np.ndarray, closed: bool): + """The two sides of a band around a curve: ``thickness`` is its width across + each segment (from point i to i + 1), or one width for all. None when it does + not fit the curve.""" + segments = (np.roll(points, -1, axis=0) - points) if closed else np.diff(points, axis=0) + thickness = thickness[np.isfinite(thickness)] + if thickness.size == 1: + thickness = np.full(len(segments), float(thickness[0])) + if thickness.size < len(segments): + return None + thickness = thickness[: len(segments)] + lengths = np.hypot(*segments.T) + lengths[lengths == 0] = 1.0 + normals = np.column_stack([-segments[:, 1], segments[:, 0]]) / lengths[:, None] + # At a point, between the segments on either side of it (the ends of an open + # curve have one), mitred at corners + if closed: + before, after = np.roll(normals, 1, axis=0), normals + widths = (np.roll(thickness, 1) + thickness) / 2.0 + else: + before, after = np.vstack([normals[:1], normals]), np.vstack([normals, normals[-1:]]) + widths = (np.concatenate([thickness[:1], thickness]) + + np.concatenate([thickness, thickness[-1:]])) / 2.0 + total = before + after + norms = np.hypot(*total.T) + norms[norms == 0] = 1.0 + mitre = np.minimum(2.0 / norms, 4.0) # 1 / cos of half the turn at the point + offset = total / norms[:, None] * (widths / 2.0 * mitre)[:, None] + return points + offset, points - offset + + +def annular_outline(annular) -> Optional[np.ndarray]: + """The contours of a layer of a vessel (``annular``): its inner and outer + outlines, else its centreline widened by its thickness. Closed contours are + separated by a row of NaN, so that the ring between them can be filled; open + ones make the band between them, as one closed outline. None when it is not + filled.""" + inner, outer = _curve(annular.outline_inner), _curve(annular.outline_outer) + if inner is not None and outer is not None: + (inner, closed), (outer, _) = inner, outer + else: + centre = _curve(annular.centreline) + if centre is None: + return None + points, closed = centre + sides = _widened(points, _leaf_array(annular.thickness).ravel(), closed) + if sides is None: + return None + inner, outer = sides + if closed: + return np.vstack([_closed(inner), np.full((1, 2), np.nan), _closed(outer)]) + # The band: along one side and back along the other + if np.hypot(*(inner[-1] - outer[-1])) < np.hypot(*(inner[-1] - outer[0])): + outer = outer[::-1] + return _closed(np.vstack([inner, outer])) + + +_TURN_POINTS = 64 +"""Points on a full circle; arcs have as many for the angle they turn by.""" + + +def conductor_line(elements) -> Optional[np.ndarray]: + """(R, Z) along the elements of a conductor, e.g. of a toroidal field coil: + line segments, arcs of circle through an intermediate point, and full circles + about a centre. The elements are in three dimensions (r, phi, z); in the + poloidal plane they are drawn at their distance from the axis and their height. + Rows of NaN separate elements that do not meet. None when it is not filled.""" + types = _leaf_array(elements.types).ravel() + count = types.size + if count == 0: + return None + + def points(node) -> np.ndarray: + """(x, y, z) of the point of every element; NaN where it is not given.""" + r, z = _leaf_array(node.r).ravel(), _leaf_array(node.z).ravel() + if r.size != count or z.size != count: + return np.full((count, 3), np.nan) + phi = _leaf_array(node.phi).ravel() if hasattr(node, "phi") else np.empty(0) + phi = np.where(np.isfinite(phi), phi, 0.0) if phi.size == count \ + else np.zeros(count) + return np.column_stack([r * np.cos(phi), r * np.sin(phi), z]) + + start, middle, end, centre = ( + points(getattr(elements, name)) + for name in ("start_points", "intermediate_points", "end_points", "centres") + ) + parts: List[np.ndarray] = [] + last = None + for i, kind in enumerate(types): + if kind == 1: + drawn = _segment(start[i], end[i]) + elif kind == 2: + drawn = _arc_through(start[i], middle[i], end[i], centre[i]) + elif kind == 3: + drawn = _full_circle(centre[i], start[i], middle[i]) + else: + drawn = None + if drawn is None: + continue + if last is not None and not np.allclose(drawn[0], last, rtol=0.0, atol=1e-6): + parts.append(np.full((1, 3), np.nan)) + parts.append(drawn) + last = drawn[-1] + if not parts: + return None + xyz = np.vstack(parts) + return np.column_stack([np.hypot(xyz[:, 0], xyz[:, 1]), xyz[:, 2]]) + + +def _finite(*points) -> bool: + return all(bool(np.all(np.isfinite(point))) for point in points) + + +def _segment(a: np.ndarray, b: np.ndarray) -> Optional[np.ndarray]: + """Points along a line segment: its ends, and points between them when it + crosses toroidal angles (it then curves in R).""" + if not _finite(a, b): + return None + across = abs(a[0] * b[1] - a[1] * b[0]) > 1e-9 * (1.0 + a[:2] @ a[:2] + b[:2] @ b[:2]) + t = np.linspace(0.0, 1.0, 17 if across else 2)[:, None] + return a + t * (b - a) + + +def _on_circle(centre, u, v, radius: float, sweep: float) -> np.ndarray: + n = max(2, int(np.ceil(abs(sweep) / (2.0 * np.pi) * _TURN_POINTS))) + 1 + angles = np.linspace(0.0, sweep, n)[:, None] + return centre + radius * (np.cos(angles) * u + np.sin(angles) * v) + + +def _arc_through(a, middle, b, centre) -> Optional[np.ndarray]: + """Points along the arc of circle from ``a`` through ``middle`` to ``b``; without + the intermediate point, about the ``centre`` the shorter way.""" + if not _finite(a, b): + return None + if not _finite(middle): + if not _finite(centre): + return _segment(a, b) + mean = (a - centre) + (b - centre) + if np.linalg.norm(mean) == 0: # half a circle, either way + return None + middle = centre + np.linalg.norm(a - centre) * mean / np.linalg.norm(mean) + ab, ac = middle - a, b - a + normal = np.cross(ab, ac) + area = normal @ normal + if area <= 1e-24 * (ab @ ab) * (ac @ ac) or area == 0: # on a line + return _segment(a, b) + # The centre of the circle through the three points + circle = a + (np.cross(normal, ab) * (ac @ ac) + np.cross(ac, normal) * (ab @ ab)) \ + / (2.0 * area) + radius = float(np.linalg.norm(a - circle)) + u = (a - circle) / radius + v = np.cross(normal / np.sqrt(area), u) + # About the normal of a, middle, b, going from a the positive way passes the + # intermediate point before b + sweep = np.arctan2((b - circle) @ v, (b - circle) @ u) % (2.0 * np.pi) + return _on_circle(circle, u, v, radius, sweep) + + +def _full_circle(centre, a, middle) -> Optional[np.ndarray]: + """Points around a full circle about ``centre`` through ``a``, in the plane of + ``middle`` (else in the poloidal plane of ``a``).""" + if not _finite(centre, a): + return None + radius = float(np.linalg.norm(a - centre)) + if radius == 0: + return None + u = (a - centre) / radius + normal = np.cross(a - centre, middle - centre) if _finite(middle) else np.zeros(3) + if np.linalg.norm(normal) <= 1e-12 * radius**2: + phi = np.arctan2(a[1], a[0]) + normal = np.array([-np.sin(phi), np.cos(phi), 0.0]) # toroidal direction + normal = normal / np.linalg.norm(normal) + v = np.cross(normal, u) + if np.linalg.norm(v) == 0: + return None + return _on_circle(centre, u, v / np.linalg.norm(v), radius, 2.0 * np.pi) + + def apply_x(data: SignalData, x_data: SignalData) -> SignalData: """Use the values of ``x_data`` as x coordinate of the profiles in ``data``. diff --git a/src/idscope/demo.py b/src/idscope/demo.py index 52fc6a2..4b36785 100644 --- a/src/idscope/demo.py +++ b/src/idscope/demo.py @@ -472,8 +472,15 @@ def process(source, name: str, energy: Optional[str] = None) -> None: return ds +def _d_shape(a: float, b: float, theta: np.ndarray): + """(R, Z) of a D-shaped contour of the demo machine: half-width ``a``, half-height + ``b``, centred on R = 1.8 m.""" + return 1.8 + a * np.cos(theta + 0.35 * np.sin(theta)), b * np.sin(theta) + + def wall(factory): - """wall: a D-shaped first wall around the plasma, as one limiter unit.""" + """wall: a D-shaped first wall around the plasma, as one limiter unit, and the + vacuum vessel around it, as one annular unit (its inner and outer contours).""" from imas.ids_defs import IDS_TIME_MODE_INDEPENDENT w = factory.wall() @@ -483,11 +490,107 @@ def wall(factory): unit = w.description_2d[0].limiter.unit[0] unit.name = "first wall" theta = np.linspace(0.0, 2.0 * np.pi, 121)[:-1] # closed: the first point is not repeated - unit.outline.r = 1.8 + 0.72 * np.cos(theta + 0.35 * np.sin(theta)) - unit.outline.z = 1.15 * np.sin(theta) + unit.outline.r, unit.outline.z = _d_shape(0.72, 1.15, theta) + w.description_2d[0].vessel.unit.resize(1) + vessel = w.description_2d[0].vessel.unit[0] + vessel.name = "vacuum vessel" + for contour, (a, b) in ((vessel.annular.outline_inner, (0.8, 1.25)), + (vessel.annular.outline_outer, (0.85, 1.32))): + contour.r, contour.z = _d_shape(a, b, theta) + if hasattr(contour, "closed"): # Data Dictionary 3 + contour.closed = 1 return w +def pf_passive(factory, scale: float = 1.0, n_time: int = N_TIME): + """pf_passive: two stabilizing plates inside the vessel, above and below the + midplane on the outboard side, with the currents induced in them: by the ramp-up + of the plasma current, and, in opposite directions, by the plasma moving up and + down.""" + from imas.ids_defs import IDS_TIME_MODE_HOMOGENEOUS + + pf = factory.pf_passive() + pf.ids_properties.homogeneous_time = IDS_TIME_MODE_HOMOGENEOUS + t = np.linspace(0.0, 10.0, n_time) + pf.time = t + pf.loop.resize(2) + for loop, name, sign in zip(pf.loop, ("upper plate", "lower plate"), (1.0, -1.0)): + loop.name = name + loop.element.resize(1) + geometry = loop.element[0].geometry + geometry.geometry_type = 1 # an outline: the plate follows the wall + theta = sign * np.linspace(0.3, 0.8, 11) + inner, outer = _d_shape(0.745, 1.19, theta), _d_shape(0.775, 1.22, theta) + geometry.outline.r = np.concatenate([inner[0], outer[0][::-1]]) + geometry.outline.z = np.concatenate([inner[1], outer[1][::-1]]) + loop.element[0].turns_with_sign = 1.0 + loop.current = scale * (-25.0e3 * np.exp(-(((t - 1.0) / 0.6) ** 2)) + + sign * 3.0e3 * np.sin(3.7 * t)) + return pf + + +TF_COILS = 16 +_S = np.sqrt(0.5) +TF_CONDUCTOR = [ + # name, type (1: line, 2: arc), start, intermediate, end, centre (R, Z) [m] + ("inner leg", 1, (0.9, -1.5), None, (0.9, 1.5), None), + ("upper inner arc", 2, (0.9, 1.5), (1.33 - 0.43 * _S, 1.5 + 0.43 * _S), (1.33, 1.93), + (1.33, 1.5)), + ("top", 1, (1.33, 1.93), None, (2.3, 1.93), None), + ("upper outer arc", 2, (2.3, 1.93), (2.3 + 0.83 * _S, 1.1 + 0.83 * _S), (3.13, 1.1), + (2.3, 1.1)), + ("outer leg", 1, (3.13, 1.1), None, (3.13, -1.1), None), + ("lower outer arc", 2, (3.13, -1.1), (2.3 + 0.83 * _S, -1.1 - 0.83 * _S), (2.3, -1.93), + (2.3, -1.1)), + ("bottom", 1, (2.3, -1.93), None, (1.33, -1.93), None), + ("lower inner arc", 2, (1.33, -1.93), (1.33 - 0.43 * _S, -1.5 - 0.43 * _S), (0.9, -1.5), + (1.33, -1.5)), +] +"""The center line of the conductor of a toroidal field coil of the demo machine: +a D of straight legs and arcs, around the vessel and the PF coils.""" + + +def tf(factory, scale: float = 1.0, n_time: int = N_TIME): + """tf: the toroidal field coils (one standing for all, :data:`TF_COILS` of + them), their current and the vacuum field they make.""" + from imas.ids_defs import EMPTY_FLOAT, IDS_TIME_MODE_HOMOGENEOUS + + coils = factory.tf() + coils.ids_properties.homogeneous_time = IDS_TIME_MODE_HOMOGENEOUS + t = np.linspace(0.0, 10.0, n_time) + coils.time = t + coils.r0 = 1.8 + coils.is_periodic = 1 + coils.coils_n = TF_COILS + # R B_phi = mu0 N I / (2 pi), for N I of all the coils together + current = scale * 11.25e3 * np.ones(len(t)) # per turn, of 100 turns + field = 2.0e-7 * TF_COILS * 100 * current + vacuum = (coils.b_field_phi_vacuum_r if hasattr(coils, "b_field_phi_vacuum_r") + else coils.b_field_tor_vacuum_r) # Data Dictionary 4, 3 + vacuum.data = field + coils.coil.resize(1) + coil = coils.coil[0] + coil.name = "TF" + coil.turns = 100.0 + coil.current.data = current + coil.conductor.resize(1) + elements = coil.conductor[0].elements + if hasattr(elements, "names"): # not in every version of the Data Dictionary + elements.names = [name for name, *_ in TF_CONDUCTOR] + elements.types = np.array([kind for _, kind, *_ in TF_CONDUCTOR], dtype=np.int32) + + def column(points, k): + return np.array([EMPTY_FLOAT if p is None else p[k] for p in points]) + + for name, index in (("start_points", 2), ("intermediate_points", 3), + ("end_points", 4), ("centres", 5)): + points = [row[index] for row in TF_CONDUCTOR] + node = getattr(elements, name) + node.r, node.z = column(points, 0), column(points, 1) + node.phi = np.array([EMPTY_FLOAT if p is None else 0.0 for p in points]) + return coils + + def summary(factory, scale: float = 1.0, n_time: int = N_TIME, time: Optional[float] = None): """summary: the plasma current and the neutron rates (``time``: write this @@ -526,8 +629,9 @@ def write_entry(uri: str, scale: float = 1.0, dd_version: Optional[str] = None, for ids in (core_profiles(factory, scale, rho_tor_norm=rho_tor_norm), equilibrium(factory, scale, rho_tor_norm=rho_tor_norm), magnetics(factory, scale), summary(factory, scale), - pf_active(factory, scale), wall(factory), - core_sources(factory, scale), distribution_sources(factory, scale)): + pf_active(factory, scale), wall(factory), pf_passive(factory, scale), + tf(factory, scale), core_sources(factory, scale), + distribution_sources(factory, scale)): entry.put(ids) diff --git a/src/idscope/gui/panel.py b/src/idscope/gui/panel.py index 602a69f..c63f7e8 100644 --- a/src/idscope/gui/panel.py +++ b/src/idscope/gui/panel.py @@ -12,7 +12,7 @@ from idscope.config import PanelConfig, SignalConfig from idscope.data import MAP, PROFILE, SHAPE, TRACE, Channels, MapSeries, ProfileSeries from idscope.data import Shapes, SignalData, parse_alternatives -from idscope.data.extract import GEOMETRY, MARKERS, POINT +from idscope.data.extract import ANNULAR, GEOMETRY, MARKERS, POINT from idscope.data.sources import DataSource from idscope.errors import IdscopeError, NoDataError from idscope.gui import style @@ -715,7 +715,7 @@ def _make_shape_item(self, data: Shapes, pen, source_index: int): elif data.shape == MARKERS: # often thousands: small dots, no outline item = pg.PlotDataItem(pen=None, symbol="o", symbolSize=3, symbolPen=None, symbolBrush=pg.mkBrush(pen.color())) - elif data.shape == GEOMETRY: + elif data.shape in (GEOMETRY, ANNULAR): # filled (a vessel layer: its ring) fill = QtGui.QColor(pen.color()) fill.setAlpha(60) item = pg.PlotDataItem(pen=pen, connect="finite", fillLevel="enclosed", diff --git a/src/idscope/templates/__init__.py b/src/idscope/templates/__init__.py index 67ce72e..3d3b266 100644 --- a/src/idscope/templates/__init__.py +++ b/src/idscope/templates/__init__.py @@ -20,6 +20,7 @@ "nubdec": "nbi", "sonamu": "free_boundary", "freegs": "free_boundary", + "autofrd": "device", } """Other names of templates: codes whose results they show (e.g. in tbd-fusion).""" diff --git a/src/idscope/templates/device.yaml b/src/idscope/templates/device.yaml new file mode 100644 index 0000000..65daaf8 --- /dev/null +++ b/src/idscope/templates/device.yaml @@ -0,0 +1,62 @@ +# idscope template: a machine: its wall and vacuum vessel, its coils and passive +# conductors (autofrd in tbd-fusion writes these: "-T autofrd" is this template). +# +# idscope -T device SOURCE [SOURCE ...] +# +# The poloidal cross-section shows the vacuum vessel (the layers between the inner and +# outer contours of its annular units, or its block elements), the plasma-facing +# components (the limiter units of the wall; one that is only at some toroidal angles, +# such as a port, is drawn like the others), the passive conductors (pf_passive), the +# PF coils and the central solenoid (pf_active), and the center line of the conductor +# of the toroidal field coils (tf). The currents and the vacuum field of the TF coils +# are shown when the source has them: a machine description alone has the geometry, +# and the other panels then note that these are not filled. Given several sources, +# e.g. the runs of autofrd for two placements of the coils, the line style tells them +# apart. +title: device +columns: + - width: 1.5 + panels: + - title: Poloidal cross-section + kind: map + equal_aspect: true + x_label: R [m] + y_label: Z [m] + signals: + - path: wall/description_2d[0]/vessel/unit[:]/annular | wall/description_2d[0]/vessel/unit[:]/element[:]/outline + label: vessel + color: "#a0a0a0" + - path: wall/description_2d[0]/limiter/unit[:]/outline + label: wall + color: "#4c4c4c" + - path: pf_passive/loop[:]/element[:]/geometry + label: passive + color: "#8c564b" + - path: pf_active/coil[:]/element[:]/geometry | pf_active/coil[:]/geometry + label: coils + color: "#1f77b4" + - path: tf/coil[:]/conductor[:]/elements + label: TF coil + color: "#d62728" + - panels: + - title: Coil currents + kind: profile + signals: + - path: pf_active/coil[:]/current/data + scale: 1.0e-3 + y_label: I [kA] + - title: Passive currents + kind: profile + signals: + - path: pf_passive/loop[:]/current + scale: 1.0e-3 + y_label: I [kA] + - title: TF coil current + signals: + - path: tf/coil[:]/current/data + scale: 1.0e-3 + y_label: I [kA] + - title: Vacuum toroidal field + signals: + - path: tf/b_field_phi_vacuum_r/data | tf/b_field_tor_vacuum_r/data + y_label: R B_phi [T m] diff --git a/tests/test_browse.py b/tests/test_browse.py index 0dbb456..80df3f4 100644 --- a/tests/test_browse.py +++ b/tests/test_browse.py @@ -39,3 +39,18 @@ def test_shape_items(source_a): assert find_item(eq, "time_slice/global_quantities/magnetic_axis").kind == "shape" wall = find_item(list_signals(source_a, "wall"), "description_2d/limiter/unit/outline") assert wall.signal_path == "wall/description_2d[:]/limiter/unit[:]/outline" + + +def test_machine_shape_items(source_a): + """A layer of the vessel and the conductor of a coil are shapes as a whole, not + their contours or points one by one.""" + wall = list_signals(source_a, "wall") + vessel = find_item(wall, "description_2d/vessel/unit/annular") + assert vessel.kind == "shape" + assert vessel.signal_path == "wall/description_2d[:]/vessel/unit[:]/annular" + assert find_item(wall, "description_2d/vessel/unit/annular/outline_inner") is None + tf = list_signals(source_a, "tf") + conductor = find_item(tf, "coil/conductor/elements") + assert conductor.kind == "shape" and not conductor.time_dependent + assert conductor.signal_path == "tf/coil[:]/conductor[:]/elements" + assert find_item(tf, "coil/conductor/elements/start_points") is None diff --git a/tests/test_cli.py b/tests/test_cli.py index 7dac4c3..5b34e15 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -21,9 +21,11 @@ def test_list_templates(capsys): assert main(["--list-templates"]) == 0 lines = capsys.readouterr().out.splitlines() assert [line.split()[0] for line in lines] == [ - "core_profiles", "core_sources", "equilibrium", "free_boundary", "nbi", "pf_active" + "core_profiles", "core_sources", "device", "equilibrium", "free_boundary", "nbi", + "pf_active", ] # and the codes whose results they show + assert "device also: autofrd" in lines assert "free_boundary also: freegs, sonamu" in lines assert "nbi also: nubdec" in lines diff --git a/tests/test_extract.py b/tests/test_extract.py index 7c4c074..ed777b7 100644 --- a/tests/test_extract.py +++ b/tests/test_extract.py @@ -9,7 +9,14 @@ Trace, parse_signal_path, ) -from idscope.data.extract import geometry_outline, marker_positions, normalize, plan_path +from idscope.data.extract import ( + annular_outline, + conductor_line, + geometry_outline, + marker_positions, + normalize, + plan_path, +) from idscope.data.sources import DataSource, parse_source from idscope.errors import NoDataError, PathError @@ -454,6 +461,134 @@ def test_geometry_types(): assert np.all(geometry_outline(geometry)[1:16, 1] > 0) +def test_machine_shapes(source_a): + """The vessel between its two contours, the passive loops and the conductor of + the toroidal field coils, as the demo machine has them.""" + from idscope.demo import TF_CONDUCTOR + + vessel = get(source_a, "wall/description_2d[0]/vessel/unit[:]/annular") + assert vessel.shape == "annular" and vessel.names == ["vacuum vessel"] + (ring,), _ = vessel.at(None) + gap = np.flatnonzero(np.isnan(ring[:, 0])) + assert len(gap) == 1 # between the inner and the outer contour, both closed + inner, outer = ring[: gap[0]], ring[gap[0] + 1:] + np.testing.assert_allclose([inner[0], outer[0]], [inner[-1], outer[-1]]) + assert inner[:, 0].min() == pytest.approx(1.0) and outer[:, 0].max() == pytest.approx(2.65) + plates = get(source_a, "pf_passive/loop[:]/element[:]/geometry") + assert plates.shape == "geometry" and plates.names == ["upper plate", "lower plate"] + currents = get(source_a, "pf_passive/loop[:]/current") + assert isinstance(currents, Channels) and currents.names == plates.names + tf = get(source_a, "tf/coil[:]/conductor[:]/elements") + assert tf.shape == "conductor" and tf.names == ["TF"] # the coil, not its conductor + (line,), _ = tf.at(None) + assert not np.isnan(line).any() # the elements meet, all the way round + np.testing.assert_allclose(line[0], line[-1]) + np.testing.assert_allclose([line[:, 0].min(), line[:, 0].max(), line[:, 1].max()], + [0.9, 3.13, 1.93]) + # the arcs are on their circles + for _, kind, start, _, end, centre in TF_CONDUCTOR: + if kind != 2: + continue + radius = np.hypot(*np.subtract(start, centre)) + on_arc = np.isclose(np.hypot(line[:, 0] - centre[0], line[:, 1] - centre[1]), radius) + between = ((line[:, 0] - min(start[0], end[0]) >= -1e-9) + & (line[:, 0] - max(start[0], end[0]) <= 1e-9) + & (line[:, 1] - min(start[1], end[1]) >= -1e-9) + & (line[:, 1] - max(start[1], end[1]) <= 1e-9)) + assert on_arc[between].sum() >= 16 + field = get(source_a, "tf/b_field_phi_vacuum_r/data") + np.testing.assert_allclose(field.values, 3.6) + + +def test_conductor_elements(): + import imas + + tf = imas.IDSFactory().tf() + tf.coil.resize(1) + tf.coil[0].conductor.resize(1) + elements = tf.coil[0].conductor[0].elements + assert conductor_line(elements) is None # nothing filled + nan = np.nan + + def fill(types, start, middle, end, centre, phi=None): + if hasattr(elements, "names"): + elements.names = [f"element {i}" for i in range(len(types))] + elements.types = np.array(types, dtype=np.int32) + for node, points in ((elements.start_points, start), + (elements.intermediate_points, middle), + (elements.end_points, end), (elements.centres, centre)): + node.r = [p[0] for p in points] + node.z = [p[1] for p in points] + node.phi = phi if phi is not None else [0.0] * len(points) + + # a line, then an arc the long way round, through its intermediate point, and a + # full circle about its centre that starts elsewhere + s = np.sqrt(0.5) + fill([1, 2, 3], start=[(1, 0), (2, 0), (3, 3)], middle=[(nan, nan), (1 - s, -s), (nan, nan)], + end=[(2, 0), (1, 1), (nan, nan)], centre=[(nan, nan), (1, 0), (2.5, 3)]) + line = conductor_line(elements) + gaps = np.flatnonzero(np.isnan(line[:, 0])) + assert len(gaps) == 1 # before the circle, which does not start where the arc ends + np.testing.assert_allclose(line[0], [1, 0]) + arc = line[1: gaps[0]] + np.testing.assert_allclose(np.hypot(arc[:, 0] - 1, arc[:, 1]), 1.0) + assert arc[:, 1].min() == pytest.approx(-1.0) # three quarters, past the bottom + np.testing.assert_allclose(arc[-1], [1, 1]) + circle = line[gaps[0] + 1:] + np.testing.assert_allclose(np.hypot(circle[:, 0] - 2.5, circle[:, 1] - 3), 0.5) + np.testing.assert_allclose(circle[0], circle[-1]) + # an arc without its intermediate point goes the shorter way about its centre; + # types that are not known are left out + fill([2, 7], start=[(2, 0), (0, 0)], middle=[(nan, nan)] * 2, end=[(1, 1), (1, 1)], + centre=[(1, 0), (nan, nan)]) + line = conductor_line(elements) + assert not np.isnan(line).any() and line[:, 1].min() >= -1e-12 + # in three dimensions: a ring around the axis is one point in (R, Z); a straight + # line between two toroidal angles comes closer to the axis in between + fill([3], start=[(2, 1)], middle=[(2, 1)], end=[(nan, nan)], centre=[(0, 1)], + phi=[0.0]) + elements.intermediate_points.phi = [np.pi / 2] + np.testing.assert_allclose(conductor_line(elements), [[2, 1]] * 65, atol=1e-12) + fill([1], start=[(2, 0)], middle=[(nan, nan)], end=[(2, 0)], centre=[(nan, nan)]) + elements.end_points.phi = [np.pi / 2] + chord = conductor_line(elements) + assert len(chord) == 17 and chord[:, 0].min() == pytest.approx(np.sqrt(2)) + + +def test_annular_layers(): + import imas + + wall = imas.IDSFactory().wall() + wall.description_2d.resize(1) + wall.description_2d[0].vessel.unit.resize(1) + annular = wall.description_2d[0].vessel.unit[0].annular + assert annular_outline(annular) is None # nothing filled + # a centreline and a thickness per segment: a closed square, 0.2 thick + annular.centreline.r = [0.0, 1.0, 1.0, 0.0] + annular.centreline.z = [0.0, 0.0, 1.0, 1.0] + annular.thickness = [0.2] * 4 + ring = annular_outline(annular) + gap = np.flatnonzero(np.isnan(ring[:, 0]))[0] + np.testing.assert_allclose(ring[:gap], [[0.1, 0.1], [0.9, 0.1], [0.9, 0.9], [0.1, 0.9], + [0.1, 0.1]]) + np.testing.assert_allclose(ring[gap + 1:][:4], [[-0.1, -0.1], [1.1, -0.1], [1.1, 1.1], + [-0.1, 1.1]]) + annular.thickness = [0.2] # one for all + np.testing.assert_allclose(annular_outline(annular), ring) + annular.thickness = [0.2, 0.3] # too few for the segments + assert annular_outline(annular) is None + # open contours: the band between them, one way along one and back the other + z = np.linspace(-1.0, 1.0, 5) + annular.outline_inner.r, annular.outline_inner.z = np.full(5, 1.0), z + annular.outline_outer.r, annular.outline_outer.z = np.full(5, 1.2), z[::-1] + band = annular_outline(annular) + np.testing.assert_allclose(band[:5], np.column_stack([np.full(5, 1.0), z])) + np.testing.assert_allclose(band[5:], [[1.2, 1.0], [1.2, 0.5], [1.2, 0.0], [1.2, -0.5], + [1.2, -1.0], [1.0, -1.0]]) + annular.outline_outer.z = z # the same way along both: still the band + np.testing.assert_allclose(annular_outline(annular), band) + + @pytest.fixture(scope="module") def two_beams(tmp_path_factory): """Two core sources with the same identifier, on grids of different lengths.""" diff --git a/tests/test_templates.py b/tests/test_templates.py index f0fa2ac..37cba74 100644 --- a/tests/test_templates.py +++ b/tests/test_templates.py @@ -8,7 +8,8 @@ def test_template_names(): assert template_names() == [ - "core_profiles", "core_sources", "equilibrium", "free_boundary", "nbi", "pf_active" + "core_profiles", "core_sources", "device", "equilibrium", "free_boundary", "nbi", + "pf_active", ] @@ -17,6 +18,7 @@ def test_template_aliases(): assert set(ALIASES.values()) <= set(template_names()) assert aliases_of("nbi") == ["nubdec"] assert aliases_of("free_boundary") == ["freegs", "sonamu"] + assert aliases_of("device") == ["autofrd"] assert aliases_of("equilibrium") == [] assert load_template("nubdec").title == "nbi" assert load_template("SONAMU").title == "free_boundary" # in any case @@ -445,3 +447,122 @@ def test_free_boundary_template_on_demo_data(template_window, data_dir): assert x_points.data.path.text == "equilibrium/time_slice/contour_tree/node[1:]" np.testing.assert_allclose(np.ravel(x_points.item.getData()), [1.8 + 0.03 * np.sin(5.0) - 0.15, -0.8]) + + +@pytest.fixture(scope="module") +def machine_description(tmp_path_factory): + """What autofrd writes (through tbd-fusion) for a reactor it drew, in Data + Dictionary 3.39.0: the solenoid and the PF coils as rectangles of one turn and + no current, a part of the TF coil as a passive loop, the vessel as an annular + unit and the blanket and a port as limiter units, and the TF coil as the center + line of its conductor. No time base anywhere.""" + import imas + from imas.ids_defs import EMPTY_FLOAT + + path = tmp_path_factory.mktemp("autofrd") / "reactor.nc" + factory = imas.IDSFactory("3.39.0") + + def rectangle(element, r, z, width, height): + element.turns_with_sign = 1.0 + element.geometry.geometry_type = 2 + box = element.geometry.rectangle + box.r, box.z, box.width, box.height = r, z, width, height + + pf = factory.pf_active() + pf.ids_properties.homogeneous_time = 1 + pf.time = [0.0] + boxes = [(f"OH {k + 1}", 0.5, -1.2 + 0.8 * k + 0.4, 0.2, 0.8) for k in range(3)] + boxes += [("PF 1", 1.2, 1.9, 0.3, 0.3), ("PF 2", 2.8, 1.0, 0.3, 0.3), + ("PF 3", 2.8, -1.0, 0.3, 0.3), ("PF 4", 1.2, -1.9, 0.3, 0.3)] + pf.coil.resize(len(boxes)) + for coil, (name, *box) in zip(pf.coil, boxes): + coil.name = name + coil.element.resize(1) + rectangle(coil.element[0], *box) + + passive = factory.pf_passive() + passive.ids_properties.homogeneous_time = 1 + passive.loop.resize(1) + passive.loop[0].name = "TF_2" + passive.loop[0].element.resize(1) + rectangle(passive.loop[0].element[0], 0.7, 0.0, 0.05, 2.4) + + wall = factory.wall() + wall.ids_properties.homogeneous_time = 2 + wall.description_2d.resize(1) + drawing = wall.description_2d[0] + theta = np.linspace(0.0, 2.0 * np.pi, 73)[:-1] + drawing.vessel.unit.resize(1) + drawing.vessel.unit[0].name = "VV" + for contour, (a, b) in ((drawing.vessel.unit[0].annular.outline_inner, (0.9, 1.4)), + (drawing.vessel.unit[0].annular.outline_outer, (1.0, 1.5))): + contour.r, contour.z = 1.8 + a * np.cos(theta), b * np.sin(theta) + drawing.limiter.unit.resize(2) + blanket, port = drawing.limiter.unit + blanket.name, blanket.closed = "Blanket", 1 + blanket.outline.r, blanket.outline.z = 1.8 + 0.8 * np.cos(theta), 1.3 * np.sin(theta) + port.name, port.closed = "Port_E_array", 1 + port.outline.r, port.outline.z = [2.7, 3.3, 3.3, 2.7], [-0.2, -0.2, 0.2, 0.2] + port.phi_extensions = [[0.0, np.pi / 2], [0.3, 0.3]] + + tf = factory.tf() + tf.ids_properties.homogeneous_time = 2 + tf.is_periodic, tf.coils_n = 1, 16 + tf.coil.resize(1) + tf.coil[0].name = tf.coil[0].identifier = "TF" + tf.coil[0].conductor.resize(1) + elements = tf.coil[0].conductor[0].elements + # a D: the inner leg, and an arc of radius 1.4 about (0.75, 0) for the rest, + # through the outboard midplane + elements.names = ["inner leg", "outer arc"] + elements.types = np.array([1, 2], dtype=np.int32) + empty = float(EMPTY_FLOAT) # what autofrd writes where a point does not apply + for node, points in ( + (elements.start_points, [(0.75, -1.4), (0.75, 1.4)]), + (elements.intermediate_points, [(empty, empty), (0.75 + 1.4, 0.0)]), + (elements.end_points, [(0.75, 1.4), (0.75, -1.4)]), + (elements.centres, [(empty, empty), (0.75, 0.0)])): + node.r = [p[0] for p in points] + node.z = [p[1] for p in points] + node.phi = [empty if p[0] == empty else 0.0 for p in points] + with imas.DBEntry(str(path), "w", dd_version="3.39.0") as entry: + for ids in (pf, passive, wall, tf): + entry.put(ids) + return path + + +def test_device_template_on_a_machine_description(template_window, machine_description): + window = template_window("autofrd", [machine_description]) + section, coils, passive, tf_current, field = window.panels + labels = [label.text for _, label in section.legend.items] + assert labels == ["vessel", "wall", "passive", "coils", "TF coil"] + shapes = {c.label: c for c in section.curves} + assert shapes["wall"].data.names == ["Blanket", "Port_E_array"] + assert shapes["coils"].data.names[:4] == ["OH 1", "OH 2", "OH 3", "PF 1"] + assert shapes["passive"].data.names == ["TF_2"] + x, y = shapes["TF coil"].item.getData() + assert shapes["TF coil"].data.names == ["TF"] + np.testing.assert_allclose([np.nanmin(x), np.nanmax(x), np.nanmin(y), np.nanmax(y)], + [0.75, 2.15, -1.4, 1.4]) + # the ring of the vessel is filled + assert shapes["vessel"].item.opts["fillLevel"] == "enclosed" + # The machine description has no currents: noted, not errors + assert not any(panel.errors for panel in window.panels) + assert set(errors_by_panel(window)) == {"Coil currents", "Passive currents", + "TF coil current", "Vacuum toroidal field"} + assert "not filled" in coils.notes[0] + + +def test_device_template_on_demo_data(template_window, data_dir): + window = template_window("device", [data_dir / "a.nc", data_dir / "b.nc"]) + window.set_time(1.0) + section, coils, passive, tf_current, field = window.panels + assert errors_by_panel(window) == {} + assert passive._categories == ["upper plate", "lower plate"] + heights = passive._bars[0].item.opts["height"] + assert heights[0] < -20 and heights[1] < -20 # kA, induced by the ramp-up + # two sources: a line style each, the same color for a kind of shape + tf_lines = [c for c in section.curves if c.label == "TF coil"] + assert len(tf_lines) == 2 + pens = [c.item.opts["pen"] for c in tf_lines] + assert pens[0].color() == pens[1].color() and pens[0].style() != pens[1].style()