Class Validator

java.lang.Object
neqsim.mcp.runners.Validator

public class Validator extends Object
Pre-flight validator for NeqSim JSON inputs (flash or process definitions).

Checks the JSON structure and values before running any simulation. Returns a structured JSON response listing all issues found — each with severity, code, message, and remediation hint. This is designed as a "dry-run" MCP tool that catches configuration errors before they cause cryptic simulation failures.

Checks performed:

  • Well-formed JSON
  • Required fields present (components for flash; fluid + process for process)
  • Component names valid (via ComponentQuery)
  • Thermodynamic model recognized
  • Flash type recognized (for flash inputs)
  • Temperature and pressure in physically reasonable ranges
  • Composition sums are reasonable (warn if far from 1.0)
  • Equipment types recognized (for process inputs)
  • Required flash specs present (enthalpy for PH, entropy for PS, volume for TV)
Version:
1.0
Author:
Even Solbraa
  • Field Details

    • GSON

      private static final com.google.gson.Gson GSON
    • MIN_TEMP_K

      private static final double MIN_TEMP_K
      Minimum physically reasonable temperature in Kelvin.
      See Also:
    • MAX_TEMP_K

      private static final double MAX_TEMP_K
      Maximum physically reasonable temperature in Kelvin.
      See Also:
    • MIN_PRESS_BARA

      private static final double MIN_PRESS_BARA
      Minimum physically reasonable pressure in bara.
      See Also:
    • MAX_PRESS_BARA

      private static final double MAX_PRESS_BARA
      Maximum physically reasonable pressure in bara.
      See Also:
    • COMP_SUM_TOLERANCE

      private static final double COMP_SUM_TOLERANCE
      Composition sum tolerance for warnings.
      See Also:
    • KNOWN_MODELS

      private static final Set<String> KNOWN_MODELS
    • KNOWN_FLASH_TYPES

      private static final Set<String> KNOWN_FLASH_TYPES
    • KNOWN_EQUIPMENT_TYPES

      private static final Set<String> KNOWN_EQUIPMENT_TYPES
      Known process equipment types recognized by JsonProcessBuilder and EquipmentFactory.
  • Constructor Details

    • Validator

      private Validator()
      Private constructor — all methods are static.
  • Method Details

    • validate

      public static String validate(String json)
      Validates a JSON input (flash or process definition) without running any simulation.
      Parameters:
      json - the JSON string to validate
      Returns:
      a JSON string with validation results: {"valid": true/false, "issues": [...]}
    • validateFlashDefinition

      private static void validateFlashDefinition(com.google.gson.JsonObject root, List<Validator.Issue> issues)
      Validates a flash definition JSON.
      Parameters:
      root - the parsed JSON
      issues - the issue list to populate
    • validateProcessDefinition

      private static void validateProcessDefinition(com.google.gson.JsonObject root, List<Validator.Issue> issues)
      Validates a process definition JSON.
      Parameters:
      root - the parsed JSON
      issues - the issue list to populate
    • validateFluidBlock

      private static void validateFluidBlock(com.google.gson.JsonObject fluidDef, List<Validator.Issue> issues)
      Validates a fluid block (used in process definitions).
      Parameters:
      fluidDef - the fluid JSON object
      issues - the issue list to populate
    • validateProcessUnit

      private static void validateProcessUnit(com.google.gson.JsonObject unit, int index, Set<String> definedNames, List<Validator.Issue> issues)
      Validates a single process unit definition.
      Parameters:
      unit - the unit JSON object
      index - the unit index in the process array
      definedNames - set of equipment names defined so far
      issues - the issue list to populate
    • validateComponents

      private static void validateComponents(com.google.gson.JsonObject components, List<Validator.Issue> issues)
      Validates a components map — checks names and composition sum.
      Parameters:
      components - the components JSON object
      issues - the issue list to populate
    • validateTemperature

      private static void validateTemperature(com.google.gson.JsonObject root, List<Validator.Issue> issues)
      Validates temperature if present.
      Parameters:
      root - the root JSON
      issues - the issue list to populate
    • validatePressure

      private static void validatePressure(com.google.gson.JsonObject root, List<Validator.Issue> issues)
      Validates pressure if present.
      Parameters:
      root - the root JSON
      issues - the issue list to populate
    • buildResponse

      private static String buildResponse(List<Validator.Issue> issues)
      Builds the JSON response from the list of issues.
      Parameters:
      issues - the collected issues
      Returns:
      JSON string with validation results