//! `results.xy`: one quantity of a solved step against its natural axis — a nodal field per //! frame against the load factor (nonlinear static) or time (explicit, transient heat), a mode //! shape's value or the frequencies against the mode number, and an explicit step's histories //! (energies, momentum, constraint force, history nodes) against time. Read-only; with `path` //! the series is also written as a two-column CSV. use serde_json::{Value, json}; use super::opt; use super::results::{Cell, Table, Want, step_for}; use crate::requirement::Requirement; use crate::results::{Field, Kind, Pick, Quantity, field_values, with_unit}; use crate::schema::ProblemKind; use crate::{CommandKind, CommandSpec, EngineError, Result, Session, StepResult}; pub const XY: CommandSpec = CommandSpec { id: "results.xy", label: "XY Plot", params: r#"{"step": "Load", "y": {"field": "displacement_z", "node": 21}, "x": "auto", "every": 1, "path": "tip.csv"} — a quantity of a solved step against its natural axis: `x` "load_factor" (nonlinear static), "time" (explicit, transient heat), "mode" (frequency and buckling) or "auto" (the step's own, the default). `y` is {"field": , "node":