{
  "initialisation": {
    "powerfactoryApiPath": "",
    "username": "",
    "outputDir": "",
    "problemType": "brute_force",
    "studyType": "dynamic_rms",
    "codingStyle": "python_file",
    "tstop": "10"
  },
  "inputVariables": [
    {
      "name": "fault_clearing_time",
      "object_query": "Switch Event.EvtSwitch",
      "variable": "e:time",
      "lower": "0.1",
      "upper": "1",
      "step": "0.1",
      "dtype": "float"
    }
  ],
  "outputVariables": [
    {
      "id": "ov-0",
      "type": "timeseries",
      "name": "G2_rotor_angle_max",
      "object_query": "G2.ElmSym",
      "variable": "c:firel",
      "metric": "maximum",
      "threshold": "",
      "settle_band": "",
      "settle_hold_time": "",
      "settle_reference_value": "",
      "customFn": "",
      "output_graph": true,
      "output_raw_csv": false
    },
    {
      "id": "ov-1",
      "type": "timeseries",
      "name": "G2_rotor_angle_min",
      "object_query": "G2.ElmSym",
      "variable": "c:firel",
      "metric": "minimum",
      "threshold": "",
      "settle_band": "",
      "settle_hold_time": "",
      "settle_reference_value": "",
      "customFn": "",
      "output_graph": false,
      "output_raw_csv": false
    },
    {
      "id": "ov-2",
      "type": "timeseries",
      "name": "G3_rotor_angle_max",
      "object_query": "G3.ElmSym",
      "variable": "c:firel",
      "metric": "maximum",
      "threshold": "",
      "settle_band": "",
      "settle_hold_time": "",
      "settle_reference_value": "",
      "customFn": "",
      "output_graph": true,
      "output_raw_csv": false
    },
    {
      "id": "ov-3",
      "type": "timeseries",
      "name": "G3_rotor_angle_min",
      "object_query": "G3.ElmSym",
      "variable": "c:firel",
      "metric": "minimum",
      "threshold": "",
      "settle_band": "",
      "settle_hold_time": "",
      "settle_reference_value": "",
      "customFn": "",
      "output_graph": false,
      "output_raw_csv": false
    },
    {
      "id": "ov-4",
      "type": "custom_calculation",
      "name": "stability_verdict",
      "object_query": "",
      "variable": "",
      "metric": "maximum",
      "threshold": "",
      "settle_band": "",
      "settle_hold_time": "",
      "settle_reference_value": "",
      "customFn": "def stability_verdict(G2_rotor_angle_max, G2_rotor_angle_min, G3_rotor_angle_max, G3_rotor_angle_min):\n    g2_lost = G2_rotor_angle_max > 170 and G2_rotor_angle_min < -170\n    g3_lost = G3_rotor_angle_max > 170 and G3_rotor_angle_min < -170\n    return \"Not Stable\" if (g2_lost or g3_lost) else \"Stable\"",
      "output_graph": false,
      "output_raw_csv": false
    }
  ],
  "optimisation": {
    "sense": "minimise",
    "objectiveOutputName": "",
    "algorithm": "placeholder",
    "maxIterations": 50,
    "constraints": []
  },
  "customMode": {
    "scenarioFilePath": ""
  },
  "contingencyMode": {
    "elementTypes": [
      {
        "query": "",
        "filterAttr": "",
        "filterOp": ">=",
        "filterVal": ""
      }
    ],
    "contingencyN": "1",
    "combineTypes": false
  },
  "additionalConfig": {
    "iterateStudyCases": false,
    "iterateOperatingScenarios": false,
    "useProgressBar": true,
    "openPowerFactoryWindow": false,
    "saveIntermediateEnabled": false,
    "saveIntermediateMinutes": 30
  }
}
