{
  "object_id": "c13-oxygen-pressure-velocity",
  "title": "Approximate pressure–velocity regions for a restricted dry-oxygen basis",
  "quantities": {
    "pressure": {
      "unit": "bar(g)",
      "reference": "gauge"
    },
    "velocity": {
      "unit": "m/s",
      "meaning": "average at design maximum local actual-volume flow"
    }
  },
  "applicability": {
    "service": "dry gaseous oxygen, −20°C to +150°C, only where this historical restricted criterion is adopted",
    "ordinary_geometry": "straight piping and bends meeting the at-least-5D criterion; bend D and radius convention must be established separately from flow-area Di",
    "carbon_steel_conditions": "exclude water condensation and corrosive contaminants; cleanliness/preservation; particular in-plot operating temperature below90°C remains narrower than chart100°C",
    "materials": "the specified material grades and composition conditions remain required; family label is not a complete specification",
    "critical_alternative": "specified impingement fittings, valve internals and at-least-ten-nominal-diameter control-valve downstream region use selected nickel alloys; within eligible CS/SS chart areas, the same-material alternative halves the established applicable velocity limit",
    "flow_reference": "actual internal area and volume flow at local pressure/temperature; gauge chart pressure is not absolute pressure for gas-property conversion"
  },
  "recovery": {
    "kind": "approximate graphical recovery, not an exact equation or a new acceptance criterion",
    "reporting_resolution_m_s": 1,
    "estimated_reading_intervals": "central ordinate ± listed uncertainty; authored graphical reading allowance, not calibrated confidence, operating tolerance or design margin",
    "uncertainty_basis": "line width, visual central-line selection and rounding on a10m/s grid; ±2m/s at15bar(g) accommodates the steep region, ±1m/s at20–100bar(g); pressure is fixed at named grid/sample locations",
    "between_samples": "piecewise-linear drawing only; numerical interpolation between recovered points remains approximate and has no independently established accuracy beyond these graphical allowances",
    "boundary_caution": "a point on or near a recovered boundary cannot settle eligibility; recover/adopt the controlling criterion with appropriate uncertainty",
    "no_extrapolation": "no extension beyond100bar(g), below the high-pressure branch, or across the10bar(g) transition"
  },
  "samples": [
    {
      "pressure_bar_g": 15,
      "lower_m_s": 29,
      "upper_m_s": 59,
      "estimated_ordinate_uncertainty_m_s": 2
    },
    {
      "pressure_bar_g": 20,
      "lower_m_s": 24,
      "upper_m_s": 47,
      "estimated_ordinate_uncertainty_m_s": 1
    },
    {
      "pressure_bar_g": 25,
      "lower_m_s": 20,
      "upper_m_s": 39,
      "estimated_ordinate_uncertainty_m_s": 1
    },
    {
      "pressure_bar_g": 30,
      "lower_m_s": 17,
      "upper_m_s": 34,
      "estimated_ordinate_uncertainty_m_s": 1
    },
    {
      "pressure_bar_g": 40,
      "lower_m_s": 13,
      "upper_m_s": 25,
      "estimated_ordinate_uncertainty_m_s": 1
    },
    {
      "pressure_bar_g": 50,
      "lower_m_s": 9,
      "upper_m_s": 19,
      "estimated_ordinate_uncertainty_m_s": 1
    },
    {
      "pressure_bar_g": 60,
      "lower_m_s": 7,
      "upper_m_s": 13,
      "estimated_ordinate_uncertainty_m_s": 1
    },
    {
      "pressure_bar_g": 70,
      "lower_m_s": 6,
      "upper_m_s": 10,
      "estimated_ordinate_uncertainty_m_s": 1
    },
    {
      "pressure_bar_g": 80,
      "lower_m_s": 5,
      "upper_m_s": 9,
      "estimated_ordinate_uncertainty_m_s": 1
    },
    {
      "pressure_bar_g": 90,
      "lower_m_s": 5,
      "upper_m_s": 9,
      "estimated_ordinate_uncertainty_m_s": 1
    },
    {
      "pressure_bar_g": 100,
      "lower_m_s": 5,
      "upper_m_s": 8,
      "estimated_ordinate_uncertainty_m_s": 1
    }
  ],
  "drawing_endpoint": {
    "pressure_bar_g": 10,
    "lower_m_s": 40,
    "upper_m_s": 80,
    "role": "right-hand branch corner for geometry only; equality convention at10bar(g) unresolved, not an eligible numerical lookup"
  },
  "regions": [
    {
      "id": "carbon",
      "hatch": "cross",
      "meaning": "carbon steel up to100°C, subject to the other applicable material/location/service conditions",
      "high_pressure": "below lower curve",
      "low_pressure": "left of10bar(g), up to60m/s"
    },
    {
      "id": "stainless",
      "hatch": "rising",
      "meaning": "stainless steel up to150°C with specified grade/service conditions",
      "low_pressure": "left of10bar(g), above60m/s to the separately shown approximate sonic ordinate"
    },
    {
      "id": "conditional",
      "hatch": "falling",
      "meaning": "nickel-based alloy in turbulent or impingement areas; otherwise carbon steel up to100°C AND60m/s, or stainless steel up to150°C",
      "high_pressure": "between lower and upper curves"
    },
    {
      "id": "nickel",
      "hatch": "none",
      "meaning": "selected nickel-based alloy; composition and component conditions remain required",
      "high_pressure": "above upper curve"
    }
  ],
  "discontinuities": {
    "pressure_transition_bar_g": 10,
    "exact_transition_inclusion": "unresolved; neither interpolation nor equality permission supplied",
    "low_pressure_is_categorical": true,
    "ordinary_velocity_axis_m_s": [
      0,
      80
    ],
    "separate_upper_band": {
      "label": "approximately350m/s sonic velocity",
      "value_m_s_approx": 350,
      "role": "categorical low-pressure stainless-region endpoint, not a universal speed or continuous0–350scale"
    },
    "break_between80_and_sonic": true
  },
  "drawing_definition": {
    "viewBox": [
      0,
      0,
      1240,
      1140
    ],
    "ordinary_plot": {
      "x0": 100,
      "x100": 1140,
      "y0": 740,
      "y80": 180,
      "x_map": "100+10.4*p_bar_g",
      "y_map": "740-7*v_m_s"
    },
    "upper_band": {
      "x_range": [
        100,
        204
      ],
      "y_range": [
        100,
        145
      ],
      "sonic_line_y": 100,
      "not_linear_velocity_axis": true
    },
    "curve_construction": "join right-hand corner and ordered samples with straight segments; fills follow these same polylines, never a guessed fitted formula",
    "uncertainty_construction": "central recovered points carry vertical ±uncertainty bars; straight segments are illustrative",
    "renderer": "c13-oxygen-pressure-velocity.draw.py, standard Python only",
    "structured_companion": "c13-oxygen-pressure-velocity.json"
  },
  "teaching_cases": [
    {
      "id": "flow",
      "hypothetical": true,
      "pressure_bar_g": 20,
      "temperature_C": 70,
      "actual_Q_m3_s": 0.08,
      "Di_m": 0.1,
      "area_m2": 0.007853981633974483,
      "average_velocity_m_s": 10.1859163578813,
      "ordinary_lower_read_m_s": 24,
      "reading_interval_m_s": [
        23,
        25
      ],
      "selected_half_limit_m_s": 12,
      "half_reading_interval_m_s": [
        11.5,
        12.5
      ],
      "conclusion": "10.19m/s is below the displayed lower-region comparison and its selected half-limit interval; this is a scoped numerical comparison, not component suitability or approval"
    },
    {
      "id": "conditional-band",
      "hypothetical": true,
      "pressure_bar_g": 20,
      "temperature_C": 70,
      "average_velocity_m_s": 30,
      "lower_interval_m_s": [
        23,
        25
      ],
      "upper_interval_m_s": [
        46,
        48
      ],
      "conclusion": "between curves: distinguish ordinary otherwise-CS100°C-and60m/s orSS150°C legend from critical nickel requirement and conditional same-material half-limit alternative; do not interpret the upper curve as universal stainless permission"
    },
    {
      "id": "near-boundary",
      "hypothetical": true,
      "pressure_bar_g": 20,
      "average_velocity_m_s": 24,
      "conclusion": "on recovered lower boundary with±1m/s reading allowance; numerical recovery cannot settle side/equality or eligibility"
    }
  ]
}
