{
  "capability": "ansys.mechanical.static_structural@v2",
  "display_name": "ANSYS Mechanical 线性静力分析",
  "default_enrollment": false,
  "output_namespace": "ansys",
  "input_policy": {
    "suffixes": [".step", ".stp", ".x_t", ".x_b", ".iges", ".igs"],
    "max_count": 1,
    "max_bytes": 536870912,
    "max_total_bytes": 536870912
  },
  "outputs": {
    "project": {
      "filename": "project.mechdat",
      "media_type": "application/octet-stream",
      "relative_path": "project.mechdat",
      "publish": true,
      "required": false
    },
    "summary": {
      "filename": "summary.json",
      "media_type": "application/json",
      "relative_path": "summary.json",
      "publish": true,
      "required": true
    },
    "result_table": {
      "filename": "result-table.csv",
      "media_type": "text/csv",
      "relative_path": "result-table.csv",
      "publish": true,
      "required": true
    },
    "selection_preview": {
      "filename": "selection-preview.png",
      "media_type": "image/png",
      "relative_path": "selection-preview.png",
      "publish": true,
      "required": true
    },
    "stress_image": {
      "filename": "equivalent-stress.png",
      "media_type": "image/png",
      "relative_path": "equivalent-stress.png",
      "publish": true,
      "required": false
    },
    "deformation_image": {
      "filename": "total-deformation.png",
      "media_type": "image/png",
      "relative_path": "total-deformation.png",
      "publish": true,
      "required": false
    },
    "solver_log": {
      "filename": "solver-output.txt",
      "media_type": "text/plain",
      "relative_path": "solver-output.txt",
      "publish": true,
      "required": false
    },
    "analysis_spec": {
      "filename": "analysis-spec.json",
      "media_type": "application/json",
      "relative_path": ".meta/analysis-spec.json",
      "publish": false,
      "required": true
    },
    "provenance": {
      "filename": "provenance.json",
      "media_type": "application/json",
      "relative_path": ".meta/provenance.json",
      "publish": false,
      "required": true
    }
  },
  "feature_path": ["operation", "analysis", "type"],
  "features": {
    "static_structural": "0.3.0"
  },
  "summary": {
    "title_path": ["operation", "analysis", "title"]
  },
  "legacy_runtime": null,
  "workspace": null,
  "request_schema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "x-maxBytes": 131072,
    "required": ["schema_version", "inputs", "operation", "outputs"],
    "additionalProperties": false,
    "properties": {
      "schema_version": {"const": 2},
      "inputs": {
        "type": "array",
        "minItems": 1,
        "maxItems": 1,
        "items": {
          "type": "object",
          "required": ["key", "artifact_id"],
          "additionalProperties": false,
          "properties": {
            "key": {"const": "geometry"},
            "artifact_id": {"type": "string", "format": "uuid"}
          }
        }
      },
      "operation": {
        "type": "object",
        "required": ["analysis"],
        "additionalProperties": false,
        "properties": {
          "analysis": {
            "type": "object",
            "required": [
              "type", "title", "unit_system", "geometry", "material", "mesh",
              "boundary_conditions", "loads", "results"
            ],
            "additionalProperties": false,
            "properties": {
              "type": {"const": "static_structural"},
              "title": {"type": "string", "minLength": 1, "maxLength": 160},
              "unit_system": {"enum": ["m_kg_s", "mm_kg_s"]},
              "geometry": {
                "type": "object",
                "required": ["input"],
                "additionalProperties": false,
                "properties": {"input": {"const": "geometry"}}
              },
              "material": {"const": "structural_steel"},
              "mesh": {
                "type": "object",
                "required": ["global_size"],
                "additionalProperties": false,
                "properties": {
                  "global_size": {"type": "number", "exclusiveMinimum": 0, "maximum": 1000000}
                }
              },
              "boundary_conditions": {
                "type": "array",
                "minItems": 1,
                "maxItems": 32,
                "items": {"$ref": "#/$defs/fixed_support"}
              },
              "loads": {
                "type": "array",
                "minItems": 1,
                "maxItems": 32,
                "items": {
                  "oneOf": [
                    {"$ref": "#/$defs/force"},
                    {"$ref": "#/$defs/pressure"}
                  ]
                }
              },
              "results": {
                "type": "array",
                "minItems": 1,
                "maxItems": 3,
                "uniqueItems": true,
                "items": {
                  "enum": ["total_deformation", "equivalent_stress", "reaction_force"]
                }
              }
            }
          }
        }
      },
      "outputs": {
        "type": "array",
        "minItems": 0,
        "maxItems": 4,
        "uniqueItems": true,
        "items": {
          "oneOf": [
            {"$ref": "#/$defs/project_output"},
            {"$ref": "#/$defs/stress_image_output"},
            {"$ref": "#/$defs/deformation_image_output"},
            {"$ref": "#/$defs/solver_log_output"}
          ]
        }
      }
    },
    "$defs": {
      "condition_name": {
        "type": "string",
        "minLength": 1,
        "maxLength": 64,
        "pattern": "^[A-Za-z][A-Za-z0-9_-]*$",
        "description": "Stable name used in the Mechanical tree and result provenance."
      },
      "expected_count": {
        "type": "integer",
        "minimum": 1,
        "maximum": 128,
        "description": "Optional assertion for the exact number of selected faces."
      },
      "named_selection_scope": {
        "type": "object",
        "required": ["type", "name"],
        "additionalProperties": false,
        "properties": {
          "type": {"const": "named_selection"},
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "pattern": "^[^/\\\\:*?\"<>|]+$",
            "description": "Name of an existing Named Selection imported from the geometry."
          },
          "expected_count": {"$ref": "#/$defs/expected_count"}
        }
      },
      "extreme_face_scope": {
        "type": "object",
        "required": ["type", "axis", "side"],
        "additionalProperties": false,
        "properties": {
          "type": {"const": "extreme_face"},
          "axis": {"enum": ["x", "y", "z"]},
          "side": {"enum": ["min", "max"]},
          "tolerance": {"type": "number", "minimum": 0, "maximum": 1000000},
          "angle_tolerance_degrees": {
            "type": "number", "minimum": 0, "maximum": 15, "default": 5
          },
          "expected_count": {"$ref": "#/$defs/expected_count"}
        },
        "description": "Select planar faces at the minimum or maximum extent along a global axis."
      },
      "planar_faces_scope": {
        "type": "object",
        "required": ["type", "normal", "offset", "tolerance"],
        "additionalProperties": false,
        "properties": {
          "type": {"const": "planar_faces"},
          "normal": {"$ref": "#/$defs/vector3"},
          "offset": {"type": "number", "minimum": -1000000, "maximum": 1000000},
          "tolerance": {"type": "number", "exclusiveMinimum": 0, "maximum": 1000000},
          "angle_tolerance_degrees": {
            "type": "number", "minimum": 0, "maximum": 15, "default": 5
          },
          "expected_count": {"$ref": "#/$defs/expected_count"}
        },
        "description": "Select planar faces whose centroid lies on n dot x = offset. Length values use analysis.unit_system."
      },
      "scope": {
        "oneOf": [
          {"$ref": "#/$defs/named_selection_scope"},
          {"$ref": "#/$defs/extreme_face_scope"},
          {"$ref": "#/$defs/planar_faces_scope"}
        ]
      },
      "vector3": {
        "type": "array",
        "minItems": 3,
        "maxItems": 3,
        "items": {"type": "number", "minimum": -1000000000000, "maximum": 1000000000000}
      },
      "fixed_support": {
        "type": "object",
        "required": ["type", "name", "scope"],
        "additionalProperties": false,
        "properties": {
          "type": {"const": "fixed_support"},
          "name": {"$ref": "#/$defs/condition_name"},
          "scope": {"$ref": "#/$defs/scope"}
        }
      },
      "force": {
        "type": "object",
        "required": ["type", "name", "scope", "components"],
        "additionalProperties": false,
        "properties": {
          "type": {"const": "force"},
          "name": {"$ref": "#/$defs/condition_name"},
          "scope": {"$ref": "#/$defs/scope"},
          "components": {"$ref": "#/$defs/vector3"}
        }
      },
      "pressure": {
        "type": "object",
        "required": ["type", "name", "scope", "magnitude"],
        "additionalProperties": false,
        "properties": {
          "type": {"const": "pressure"},
          "name": {"$ref": "#/$defs/condition_name"},
          "scope": {"$ref": "#/$defs/scope"},
          "magnitude": {"type": "number", "minimum": -1000000000000, "maximum": 1000000000000}
        }
      },
      "project_output": {
        "type": "object",
        "required": ["key", "format"],
        "additionalProperties": false,
        "properties": {"key": {"const": "project"}, "format": {"const": "mechdat"}}
      },
      "stress_image_output": {
        "type": "object",
        "required": ["key", "format"],
        "additionalProperties": false,
        "properties": {"key": {"const": "stress_image"}, "format": {"const": "png"}}
      },
      "deformation_image_output": {
        "type": "object",
        "required": ["key", "format"],
        "additionalProperties": false,
        "properties": {"key": {"const": "deformation_image"}, "format": {"const": "png"}}
      },
      "solver_log_output": {
        "type": "object",
        "required": ["key", "format"],
        "additionalProperties": false,
        "properties": {"key": {"const": "solver_log"}, "format": {"const": "txt"}}
      }
    }
  }
}
