Skip to content

KB_ODM_Diagnosis_Actions.txt ​

Purpose ​

The KB_ODM_Diagnosis_Actions.txt file encodes knowledge-based corrective actions the Decision Maker (ODM) performs when an imbalance is diagnosed during knowledge-based reasoning (KBR) problem solving. This is the most complex input file in the ADS-IDAC manual and is the only fully implemented diagnosis actions file in a standard simulation.

OAT Diagnosis Actions Not Used

In the current version of ADS-IDAC, all knowledge-based actions are initiated exclusively by the Decision Maker. The KB_OAT_Diagnosis_Actions.txt file for the Action Taker does not affect the simulation. Only this ODM file produces active behavior.

Knowledge-based actions model behavior an operator might perform outside the scope of written emergency procedures, based on their situational assessment. Examples include:

  • Reducing reactor coolant system injection when pressurizer level is high.
  • Decreasing steam dump rate when steam generator pressure is low.

Actions are organized within functional imbalance diagnostic groups aligned with the imbalance events in KB_ODM_Event_Matrix.txt.

Key Properties of Knowledge-Based Actions ​

  • Action rules are organized within functional imbalance diagnostic groups. Each imbalance event can be associated with a list of actions intended to mitigate the associated mass, energy, or momentum imbalance.
  • Each diagnostic group is assigned a priority level reflecting the relative importance of its actions (e.g., actions for inadequate core cooling are sequenced before actions for low single-SG inventory).
  • Each action can be assigned prerequisite conditions that model the heuristic rules an operator uses to activate a specific action. Prerequisites may reference plant parameters, component states, alarms, active procedures, or mental beliefs.
  • Once an action in a diagnostic group is activated, further actions within that group are blocked for a pre-defined dormancy period (the reset delay time), allowing the operator to address other functional areas.

Input File Format ​

text
number_of_diagnoses   number_of_imbalance_diagnoses

diagnosis_name        imbalance_diagnosis_name_1
diagnosis_priority    diagnosis_priority
reset_delay_time      minimum_time  weibull_alpha  weibull_beta
number_of_actions     number_of_actions

action_name           action_name_1
action_priority       action_priority_1
action_type           action_type_1
control_input         [control_input_value_1] or [control_parameter_1]
lower_limit           lower_control_limit_1
upper_limit           upper_control_limit_1
number_of_prerequisites  number_of_prerequisites
  item_name_1
  [parameter_1  parameter_2]
  [verification]
  [minimum_time  weibull_alpha  weibull_beta]
  expected_state
  [relationship  value_1  value_2]
  logic_flag
  .
  .
  item_name_n
  [parameter_1  parameter_2]
  [verification]
  [minimum_time  weibull_alpha  weibull_beta]
  expected_state
  [relationship  value_1  value_2]
  logic_flag

.
.
diagnosis_name        imbalance_diagnosis_name_n
...

Top-Level Parameter ​

ParameterTypeDescriptionExample Value
number_of_diagnosesIntegerTotal number of imbalance diagnostic groups in the file. Must match the actual count of diagnosis entries. Range: > 0.2

Per-Diagnosis Fields ​

ParameterTypeDescriptionExample Value
imbalance_diagnosis_nameStringMust match a valid event_name of type "Imbalance" in KB_ODM_Event_Matrix.txt. Specifies the diagnosis that activates this group of actions.Mass_Imbalance_PZR_Low
diagnosis_priorityIntegerPriority of this diagnostic group. Lower value = higher priority. Range: ≥ 1.2
minimum_timeDoubleMinimum time parameter (u) for the Weibull reset delay distribution. Specifies the dormancy period after an action fires before further actions in this group can be activated. Range: > 0.0.100.0
weibull_alphaDoubleAlpha (scale) parameter of the three-parameter Weibull distribution for the reset delay time. Range: > 0.0.1.0
weibull_betaDoubleBeta (shape) parameter of the three-parameter Weibull distribution for the reset delay time. Range: > 0.0.1.0
number_of_actionsIntegerNumber of knowledge-based actions associated with this diagnosis group. Must match the actual count of action entries.2

Weibull Reset Delay Distribution (Equation 9) ​

The dormancy period after an action fires is drawn from a three-parameter Weibull distribution:

F(t) = 1 - exp(-((t - u) / alpha)^beta)

Where u = minimum_time, alpha = weibull_alpha, beta = weibull_beta.

This same Weibull parameterization is also used to specify the time required to evaluate action prerequisites for each diagnosis group entry.

Per-Action Fields ​

ParameterTypeDescriptionExample Value
action_nameStringMust match a valid controller listed in ControlPanel.txt. Specifies the controller manipulated by this action.X_PZR_PORV
action_priorityIntegerPriority of this action within the diagnosis group. Lower value = higher priority. Higher priority actions are performed first. Range: ≥ 1.2
action_typeIntegerInteger code for the type of control manipulation. See table below.3074
control_input_valueDoubleRequired when action_type is 3074 (VACTION) or 3112 (VADDITIVE). Target controller position or incremental change.0.0
control_parameterStringRequired when action_type is 3139 (VPARAMETER_CONTROL). Must match a parameter in ControlPanel.txt. Controller is set to the operator's perceived value of this parameter.PZR_Pressure
lower_control_limitDoubleLower bound of the controller. Actions that would drive the controller below this value are not performed.0.0
upper_control_limitDoubleUpper bound of the controller. Actions that would drive the controller above this value are not performed.1.0
number_of_prerequisitesIntegerNumber of prerequisite units (AND-connected conditions) for this action. OR-connected conditions within a unit count as a single unit. Must exactly match the count of prerequisite units in the file.3

Action Type Codes ​

Integer CodeNameDescription
3074VACTIONSimple controller manipulation. The action_name controller is positioned to the value specified by control_input_value.
3112VADDITIVEIncremental control. The action_name controller is incremented by the amount in control_input_value.
3139VPARAMETER_CONTROLParameter-tracked control. The action_name controller is set to the operator's currently perceived value of control_parameter. If the parameter has not been perceived, no action is performed.

Per-Prerequisite Fields ​

Prerequisites model the heuristic rules an operator uses to verify that an action is appropriate before executing it.

ParameterTypeDescriptionExample Value
item_nameStringMust match a parameter_name, component_name, or alarm_name in ControlPanel.txt, or be the reserved word Mental_Belief or Parameter_Difference.PZR_Level
parameter_1StringRequired only when item_name is Mental_Belief (specifies the mental belief name from KB_ODM_HardWired_Diagnosis.txt) or Parameter_Difference (specifies the first parameter for the difference calculation).Safety_Injection
parameter_2StringRequired only when item_name is Parameter_Difference. Specifies the second parameter for the difference calculation.—
verificationIntegerCode controlling whether the operator re-verifies the indicator even if previously perceived. 3002 (VYES) = force re-verification; 3003 (VNO) or 3045 (VNONE) = use memorized value if available.3045
minimum_timeDoubleMinimum time (Weibull u parameter) for prerequisite evaluation timing. Not used when item_name is Mental_Belief.0.0
weibull_alphaDoubleWeibull alpha for prerequisite evaluation timing.1.0
weibull_betaDoubleWeibull beta for prerequisite evaluation timing.2.0
expected_stateIntegerRequired when item_name is a component, alarm, or Mental_Belief. See expected state codes below.3023
relationshipIntegerRequired when item_name is a parameter or Parameter_Difference. Comparison operator. See relationship codes below.3009
value_1DoubleThreshold value for the relationship comparison.2290.0
value_2DoubleSecond threshold value; required (as a dummy) for all relationships; actively used only for 3032 (VBETWEEN).0.0
logic_flagIntegerBoolean connector to the next prerequisite. 3002 (VYES) = OR (merges with next into one unit); 3003 (VNO) or 3045 (VNONE) = AND (counts as a separate unit).3003

Expected State Codes ​

Integer CodeNameApplies To
3022VONComponent or Alarm — item is in the ON or actuated state
3023VOFFComponent or Alarm — item is in the OFF or cleared state
3098VOPENComponent — item is open
3099VCLOSEComponent — item is closed
3021VSUCCEEDMental Belief — belief has been successfully established
3045VNONEMental Belief — belief is in initial unset state (all beliefs initialize to VNONE)

Relationship Codes (for Parameter Comparisons) ​

Integer CodeNameCondition Satisfied When
3006VGTitem_name parameter > value_1
3007VGEitem_name parameter >= value_1
3008VEQitem_name parameter == value_1
3009VLEitem_name parameter <= value_1
3010VLTitem_name parameter < value_1
3032VBETWEENvalue_1 <= item_name parameter <= value_2 (value_1 must be less than value_2)

Prerequisite Logic Tree ​

Prerequisites form an AND/OR logic tree (Figure 17 in the manual):

Prerequisites Met
       |
      AND
    /     \
  OR      Prerequisite 2   AND   Prerequisite 3
  / \
1a  1b

In this example, the action is executed only if: (1) either 1a or 1b is true, AND (2) Prerequisite 2 is true, AND (3) Prerequisite 3 is true.

  • Prerequisites connected by logic_flag = 3002 (VYES) are OR-connected and count as one prerequisite unit.
  • Prerequisites connected by logic_flag = 3003 (VNO) or 3045 (VNONE) are AND-connected and count as separate prerequisite units.
  • The number_of_prerequisites field counts only AND-connected units.

Sample Input ​

The following example defines two imbalance diagnosis groups.

text
number_of_diagnoses

2

diagnosis_name       Mass_Imbalance_PZR_Low
diagnosis_priority   2
reset_delay_time     100.0  1.0  1.0
number_of_actions    2

action_name          X_PZR_PORV
action_priority      2
action_type          3074
control_input        0.0
lower_limit          0.0
upper_limit          1.0
number_of_prerequisites   1
PZR_Pressure  3045  0.0  1.0  2.0  3009  2290.0  0.0  3045

action_name          X_SIAS
action_priority      3
action_type          3074
control_input        1.0
lower_limit          0.0
upper_limit          1.0
number_of_prerequisites   3
PZR_Level     3045  0.0  1.0  2.0  3009  0.20  0.0  3003
PZR_Pressure  3045  0.0  1.0  2.0  3009  2150.0  0.0  3003
Safety_Injection  3045  0.0  1.0  2.0  3023  3045

diagnosis_name       Mass_Imbalance_PZR_High
diagnosis_priority   5
reset_delay_time     200.0  1.0  1.0
number_of_actions    2

action_name          X_HPI_Pump_A
action_priority      2
action_type          3074
control_input        0.0
lower_limit          0.0
upper_limit          1.0
number_of_prerequisites   3
A_HPI_Pump_On   3045  1.0  3.0  3.0  3022  3045  3003
Min_Sub_Cooling  3045  1.0  2.0  2.0  3007  10.0  0.0  3003
PZR_Level  3045  0.0  2.0  2.0  3007  0.20  0.0  3045

action_name          X_HPI_Pump_B
action_priority      3
action_type          3074
control_input        0.0
lower_limit          0.0
upper_limit          1.0
number_of_prerequisites   3
B_HPI_Pump_On   3045  1.0  3.0  3.0  3022  3045  3003
Min_Sub_Cooling  3045  1.0  3.0  3.0  3007  10.0  0.0  3003
PZR_Level  3045  0.0  1.0  2.0  3007  0.20  0.0  3045

Sample Explanation ​

Mass_Imbalance_PZR_Low (Low Pressurizer Water Inventory) ​

Priority 2 (higher priority than the high-inventory case). Reset delay: Weibull(100.0, 1.0, 1.0) seconds. Two actions:

Action 1 — Close X_PZR_PORV (priority 2)

  • Set X_PZR_PORV controller to 0.0 (closed).
  • Prerequisite: PZR_Pressure <= 2290 psia (prevent closing PORV if pressure is at or above setpoint).

Action 2 — Actuate X_SIAS (priority 3)

  • Set X_SIAS controller to 1.0 (actuate safety injection).
  • Prerequisites (AND-connected):
    1. PZR_Level <= 0.20 (20%)
    2. PZR_Pressure <= 2150 psia
    3. Safety_Injection component state is VOFF (3023) — safety injection has not already been actuated.

Mass_Imbalance_PZR_High (High Pressurizer Water Inventory) ​

Priority 5 (lower priority). Reset delay: Weibull(200.0, 1.0, 1.0) seconds. Two actions:

Action 1 — Stop X_HPI_Pump_A (priority 2)

  • Set X_HPI_Pump_A controller to 0.0 (stop).
  • Prerequisites (AND-connected):
    1. A_HPI_Pump_On component state is VON (3022) — pump A is currently running.
    2. Min_Sub_Cooling >= 10.0 °F — adequate subcooling margin exists.
    3. PZR_Level >= 0.20 (20%) — pressurizer level is adequately high.

Action 2 — Stop X_HPI_Pump_B (priority 3)

  • Set X_HPI_Pump_B controller to 0.0 (stop).
  • Same three prerequisites as Action 1, substituting B_HPI_Pump_On for A_HPI_Pump_On.

ADS-IDAC Engine Documentation