/// <summary> /// Constructor method to initialize flags /// </summary> public IslandingAnalyzer() { m_islandingFlag = IslandingFlag.NoIslandingConditionExists; m_locationFlag = LocationFlag.NoIslandingCondition; m_severityFlag = SeverityFlag.LowSeverity; m_stabilityFlag = StabilityFlag.Stable; }
/// <summary> /// Islanding Detection and Location Judgement /// /// Decision Tree Splitting Points Data /// /// DT_1 Islanding Judgement: Full loop DVP /// /// DT_1 Location: Yorktown /// /// DT_1 Location: Chesterfield /// /// DT_1 Location: Chesapeake /// </summary> /// <param name="data"> /// A column matrix of processed data /// prepared for the decision tree /// </param> public void islandingJudgment(double[] data) { if ((data[50] <= 1.052513 && data[8] > 1.027590 && data[84] > -0.503139 && (data[52] <= 1.052598 || (data[52] > 1.052598 && data[4] > 1.057792))) || (data[50] > 1.052513 && ((data[4] <= 1.058394 && data[63] <= 0.062944) || (data[4] > 1.058394 && data[0] <= 1.047624)))) { m_islandingFlag = IslandingFlag.IslandingConditionExists; if (m_islandingFlag == IslandingFlag.IslandingConditionExists) { /// Location determination if (data[55] > -0.169610 && data[84] <= 0.547558 && ((data[70] <= -4.106833 && data[0] > 1.045549 && (data[69] > -0.801558 || (data[69] <= -0.801558 && data[0] <= 1.045994))) || (data[70] > -4.106833 && data[61] > 0.03 && data[63] <= 0.462647 && data[70] <= -3.876851))) { /// Yorktown m_locationFlag = LocationFlag.Yorktown; } else if (data[55] <= -0.17 && data[8] <= 1.04) { /// Chesterfield m_locationFlag = LocationFlag.Chesterfield; } else if (data[55] > -0.169010 && (data[84] > 0.547558 || (data[84] <= 0.547558 && data[70] > -4.106833 && data[61] > 0.032730 && data[63] > 0.462647 && data[0] <= 1.044399))) { /// Chesapeake m_locationFlag = LocationFlag.Chesapeake; } else { /// Undetermined m_locationFlag = LocationFlag.Undetermined; } } } else { m_islandingFlag = IslandingFlag.NoIslandingConditionExists; m_locationFlag = LocationFlag.NoIslandingCondition; } }