////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      malfBlockageFlag        (--)    Blockage malfunction flag.
/// @param[in]      malfBlockageValue       (--)    Blockage malfunction fractional value (0-1).
/// @param[in]      position                (--)    Fractional position.
/// @param[in]      malfLeakThruFlag        (--)    Leak through rate malfunction flag.
/// @param[in]      malfLeakThruValue       (kg/s)  Leak through rate malfunction value.
/// @param[in]      malfPressureBiasFlag    (--)    Control pressure bias malfunction flag.
/// @param[in]      malfPressureBiasValue   (kPa)   Control pressure bias malfunction value.
/// @param[in]      setPointPressureBias    (kPa)   Set point pressure bias value.
/// @param[in]      wallTemperature         (K)     Tube wall temperature for thermal convection
/// @param[in]      malfValveStuckFlag      (--)    Stuck valve malfunction flag.
/// @param[in]      malfValveConstantFlag   (--)    Constant valve position malfunction flag.
/// @param[in]      malfValveConstantValue  (--)    Constant valve position malfunction value.
///
/// @details        Default constructs this GUNNS Fluid Pressure Relief Valve Link Model input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      that   (--)  Source to copy.
///
/// @details        Copy constructs this GUNNS Fluid Pressure Relief Valve Link Model input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @note           This should be followed by a call to the initialize method before calling an
///                 update method.
///
/// @details        Default constructs this GUNNS Fluid Pressure Relief Valve Link Model.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      configData     (--)  Configuration data.
/// @param[in]      inputData      (--)  Input data.
/// @param[in,out]  links          (--)  Link vector.
/// @param[in]      port0          (--)  Nominal inlet port map index.
/// @param[in]      port1          (--)  Nominal outlet port map index.
/// @param[in]      pressurePort0  (--)  Network pressure port 0.
/// @param[in]      pressurePort1  (--)  Network pressure port 1.
///
/// @return         void
///
/// @throws         TsInitializationException
///
/// @details        Initializes this GUNNS Fluid Pressure Relief Valve Link Model with configuration
///                 and input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @return         void
///
/// @throws         TsInitializationException
///
/// @details        Validates this GUNNS Fluid Pressure Relief Valve Link Model initial state.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @return         void
///
/// @details        Computes the coefficients for the four linear equations for this GUNNS Fluid
///                 Pressure Relief Valve Link Model and sets the initial valve state.
///                 -# The starting point are the two linear equations for valve position as a
///                    function of delta pressure that run from crack pressure to full open pressure
///                    for increasing delta pressure and from full open pressure to reseat pressure
///                    for decreasing delta pressure.
///                 -# For the initial pop segment between 0 and mInitialPop, the starting slope is
///                    scaled up by mPopSlopeScale and for the nominal segment between mInitialPop
///                    and 1 the slope is correspondingly scaled down.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      dt  (s)  Time step.
///
/// @return         void
///
/// @details        Updates this GUNNS Fluid Pressure Relief Valve Link Model state (valve state,
///                 valve position, and effective conductivity).
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @return         void
///
/// @details        Updates this GUNNS Fluid Pressure Relief Valve Link Model valve state.
///                 \verbatim
///                  mControlPressure >                             mControlPressure <
///                  mFullOpenPressure           _______________    mFullOpenPressure
///                 __________________________\ |               | ___________________________
///                |                          / |     Open      |                            |
///                |                            |_______________|                            |
///                |                                                                        \|/
///            _________  ____________________\  _______________  /__________________    __________
///           |         | mControlPressure <  / |               | \ mControlPressure >  |          |
///           | Opening | mPreviousPressure     | Transitioning |   mPreviousPressure   | Closing  |
///           |_________| /____________________ |_______________| ____________________\ |__________|
///               /|\     \ mControlPressure >                    mControlPressure <  /      |
///                |        decPressure                           incPressure                |
///                |                             _______________                             |
///                |___________________________ |               | /__________________________|
///                  mControlPressure >         |    Closed     | \ mControlPressure <
///                  mCrackPressure             |_______________|   mReseatPressure
///                 \endverbatim
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      dt        (s)   Time step.
///
/// @return         void
///
/// @details        Updates this this GUNNS Fluid Pressure Relief Valve Link Model valve position.
///                 -# In CLOSED state, position is 0.0.
///                 -# In OPEN state, position is 1.0.
///                 -# In OPENING state, position is updated from appropriate increasing linear
///                    equation evaluated at current pressure.
///                 -# In CLOSING state, position is updated from appropriate decreasing linear
///                    equation evaluated at current pressure.
///                 -# In TRANSITIONING state the position is held at its previous value.
///                 -# For position < mPopPosition, the pop linear equations are used, otherwise
///                    the nominal linear equations are used.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] name                 (--) Name of object.
/// @param[in] nodes                (--) Pointer to nodes.
/// @param[in] maxConductivity      (m2) Max conductivity.
/// @param[in] expansionScaleFactor (--) Scale factor for isentropic gas cooling.
/// @param[in] thermalLength        (m)  Tube length for thermal convection.
/// @param[in] thermalDiameter      (m)  Tube inner diameter for thermal convection.
/// @param[in] surfaceRoughness     (m)  Tube wall surface roughness for thermal convection.
///
/// @details   Default constructs this GUNNS Simple Quick-Disconnect link model configuration data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] that (--) Source to copy.
///
/// @details  Copy constructs this GUNNS Simple Quick-Disconnect link model configuration data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] malfBlockageFlag  (--) Blockage malfunction flag.
/// @param[in] malfBlockageValue (--) Blockage malfunction fractional value (0-1).
/// @param[in] state             (--) Initial connection state of the QD.
/// @param[in] wallTemperature   (K)  Tube wall temperature for thermal convection.
///
/// @details  Default constructs this GUNNS Simple Quick-Disconnect link model input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] that (--) Source to copy.
///
/// @details  Copy constructs this GUNNS Simple Quick-Disconnect link model input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @note     This should be followed by a call to the initialize method before calling an update
///           method.
///
/// @details  Default constructs this GUNNS Simple Quick-Disconnect link model.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]     configData (--) Configuration data.
/// @param[in]     inputData  (--) Input data.
/// @param[in,out] links      (--) Link vector.
/// @param[in]     port0      (--) Nominal inlet port map index.
/// @param[in]     port1      (--) Nominal outlet port map index.
///
/// @returns  void
///
/// @throws   TsInitializationException
///
/// @details  Initializes this this GUNNS Simple Quick-Disconnect link model with configuration and
///           input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] inputData  (--) Input data.
///
/// @returns  void
///
/// @throws   TsInitializationException
///
/// @details  Validates this this GUNNS Simple Quick-Disconnect link model initial state.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] dt       (s)    Not used.
///
/// @returns  void
///
/// @details  Updates the conductivity of the Simple QD based on the connection state.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] dt       (s)    Not used.
/// @param[in] flowRate (kg/s) Mass flow rate.
///
/// @returns  void
///
/// @details  Updates the internal fluid of this this GUNNS Simple Quick-Disconnect link model.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Sets mLeakConductivity to the value that will create the desired mMalfLeakRateValue at
///           the current port node conditions.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      name                  (--)    Link name.
/// @param[in]      nodes                 (--)    Network nodes array.
/// @param[in]      maxConductivity       (m2)    Maximum possible effective conductivity of the link.
/// @param[in]      expansionScaleFactor  (--)    Scale factor for isentropic cooling across the link (0-1).
/// @param[in]      rateLimit             (1/s)   Valve fractional position rate limit.
/// @param[in]      thermalLength         (m)     Tube length for thermal convection.
/// @param[in]      thermalDiameter       (m)     Tube inner diameter for thermal convection.
/// @param[in]      surfaceRoughness      (m)     Tube wall surface roughness for thermal convection.
/// @param[in]      inletDependencyCoeff0 (--)    0th order coefficient of inlet dependency effect on control pressure.
/// @param[in]      inletDependencyCoeff1 (1/kPa) 1st order coefficient of inlet dependency effect on control pressure.
///
/// @details        Default constructs this GUNNS Fluid Pressure Sensitive Valve Link Model
///                 configuration data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      that  (--)  Input source to copy.
///
/// @details        Copy constructs this GUNNS Fluid Pressure Sensitive Valve Link Model
///                 configuration data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      malfBlockageFlag        (--)    Blockage malfunction flag.
/// @param[in]      malfBlockageValue       (--)    Blockage malfunction fractional value (0-1).
/// @param[in]      position                (--)    Valve position fractional value (0-1).
/// @param[in]      malfLeakThruFlag        (kg/s)  Leak through rate malfunction flag.
/// @param[in]      malfLeakThruValue       (--)    Leak through rate malfunction value.
/// @param[in]      malfPressureBiasFlag    (--)    Control pressure bias malfunction flag.
/// @param[in]      malfPressureBiasValue   (kPa)   Control pressure bias malfunction value.
/// @param[in]      setPointPressureBias    (kPa)   Set point pressure bias value.
/// @param[in]      wallTemperature         (K)     Tube wall temperature for thermal convection
/// @param[in]      malfStuckFlag           (--)    Stuck at current position malfunction flag.
/// @param[in]      malfFailToFlag          (--)    Fail to position position malfunction flag.
/// @param[in]      malfFailToValue         (--)    Fail to position position malfunction value.
///
/// @details        Default constructs this GUNNS Fluid Pressure Sensitive Valve Link Model input
///                 data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      that  (--)  Input source to copy.
///
/// @details        Copy constructs this GUNNS Fluid Pressure Sensitive Valve Link Model input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @note           This should be followed by a call to the initialize method before calling an
///                 update method.
///
/// @details        Default constructs this GUNNS Fluid Pressure Sensitive Valve Link Model.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      configData     (--)  GUNNS Fluid Pressure Sensitive Valve Config Data.
/// @param[in]      inputData      (--)  GUNNS Fluid Pressure Sensitive Valve Input Data.
/// @param[in,out]  networkLinks   (--)  Network links.
/// @param[in]      port0          (--)  Network port 0.
/// @param[in]      port1          (--)  Network port 1.
/// @param[in]      pressurePort0  (--)  Network pressure port 0.
/// @param[in]      pressurePort1  (--)  Network pressure port 1.
///
/// @return         void
///
/// @throws         TsInitializationException
///
/// @details        Initializes this GUNNS Fluid Pressure Sensitive Valve Link Model with
///                 configuration, input and port data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @return         void
///
/// @throws         TsInitializationException
///
/// @details        Validates this GUNNS Fluid Pressure Sensitive Valve Link Model initial state.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      port  (--)  The port to be assigned (not used).
/// @param[in]      node  (--)  The desired node to assign the port to (not used).
///
/// @return         boolean  (--)  Returns true if uniqueness rules checks pass
///
/// @details        Checks this GUNNS Fluid Pressure Sensitive Valve Link Model for unique node
///                 assignments within the two pairs of ports, but both may map to vacuum node.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      dt  (s)  Integration time step.
///
/// @return         void
///
/// @details        Updates the state of this GUNNS Fluid Pressure Sensitive Valve Link Model and
///                 computes a new conductivity.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @return         void
///
/// @details        Builds the admittance matrix for this GUNNS Fluid Pressure Sensitive Valve Link
///                 Model.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      dt  (s)  Time step (unused).
///
/// @return         void
///
/// @details        Computes the flow rate across this GUNNS Fluid Pressure Sensitive Valve Link
///                 Model and updates the fluid state.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      dt  (s)  Time step.
///
/// @return         void
///
/// @details        Updates final flow properties across this GUNNS Fluid Pressure Sensitive Valve
///                 Link and transports fluid from source to sink nodes
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      dt  (s)  Time step (not used).
///
/// @return         void
///
/// @note           Derived classes should call this method at the end of their updateState method.
///
/// @details        Updates the effective conductivity of this GUNNS Fluid Pressure Sensitive Valve
///                 Link Model.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      dt        (s)     Time step (not used).
/// @param[in]      flowRate  (kg/s)  Mass flow rate (not used).
///
/// @returns        void
///
/// @details        Updates the internal fluid of this this GUNNS Fluid Pressure Sensitive Valve
///                 Link Model.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      flowRate  (kg/s)  Desired flow rate to tune the link to.
///
/// @return         void
///
/// @details        Sets the conductivity of this GUNNS Fluid Pressure Sensitive Valve Link Model
///                 such that it will create the specified flow rate at the current network
///                 conditions. The blockage malfunction is reset if it was active, so that it does
///                 not interfere with the desired rate.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] flag  (--)   Malfunction activation flag, true activates
/// @param[in] value (kg/s) Malfunction initial leak thru rate value
///
/// @details  Sets the malf parameters to the given values.  Calling this method with default
///           arguments resets the malfunction.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] flag  (--)   Malfunction activation flag, true activates
/// @param[in] value (kPa)  Control pressure bias malfunction value
///
/// @details  Sets the malf parameters to the given values.  Calling this method with default
///           arguments resets the malfunction.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] flag  (--) Malfunction activation flag, true activates
/// @param[in] value (--) Fail to position position malfunction value
///
/// @details  Sets the malf parameters to the given values.  Calling this method with default
///           arguments resets the malfunction.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      name                 (--)    Name of object.
/// @param[in]      nodes                (--)    Pointer to nodes.
/// @param[in]      maxConductivity      (m2)    Maximum conductivity.
/// @param[in]      expansionScaleFactor (--)    Scale factor for isentropic gas cooling.
/// @param[in]      thermalLength        (m)     Tube length for thermal convection
/// @param[in]      thermalDiameter      (m)     Tube inner diameter for thermal convection
/// @param[in]      surfaceRoughness     (m)     Tube wall surface roughness for thermal convection
///
/// @details        Default constructs this GUNNS Fluid Pipe Link Model configuration data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      that   (--)  Source to copy.
///
/// @details        Copy constructs this GUNNS Fluid Pipe Link Model configuration data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      malfBlockageFlag   (--)   Blockage malfunction flag.
/// @param[in]      malfBlockageValue  (--)   Blockage malfunction fractional value (0-1).
/// @param[in]      wallTemperature    (K)    Tube wall temperature for thermal convection
///
/// @details        Default constructs this GUNNS Fluid Pipe Link Model input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      that  (--)  Source to copy.
///
/// @details        Copy constructs this GUNNS Fluid Pipe Link Model input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @note           This should be followed by a call to the initialize method before calling an
///                 update method.
///
/// @details        Default constructs this GUNNS Fluid Pipe Link Model.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      configData   (--)  Configuration data.
/// @param[in]      inputData    (--)  Input data.
/// @param[in,out]  links        (--)  Link vector.
/// @param[in]      port0        (--)  Nominal inlet port map index.
/// @param[in]      port1        (--)  Nominal outlet port map index.
///
/// @return         void
///
/// @throws         TsInitializationException
///
/// @details        Initializes this this GUNNS Fluid Pipe Link Model with configuration and input
///                 data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      configData   (--)  Configuration data (unused).
/// @param[in]      inputData    (--)  Input data.
///
/// @return         void
///
/// @throws         TsInitializationException
///
/// @details        Validates this this GUNNS Fluid Pipe Link Model initial state.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      dt        (s)     Time step.
/// @param[in]      flowRate  (kg/s)  Mass flow rate.
///
/// @return         void
///
/// @details        Updates the internal fluid of this this GUNNS Fluid Pipe Link Model.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  name             (--)        Name of object.
/// @param[in]  nodes            (--)        Pointer to nodes.
/// @param[in]  maxConductivity  (m2)        Max conductivity.
/// @param[in]  numSegments      (--)        Number of heat exchanger segments.
/// @param[in]  htcCoeff0        (W/K)       Heat transfer 0th order coefficient.
/// @param[in]  htcCoeff1        (W*s/K/kg)  Heat transfer 1st order coefficient.
/// @param[in]  htcExponent      (--)        Heat transfer coefficient exponent.
/// @param[in]  htcLimit         (W/K)       Heat transfer coefficient limit.
///
/// @details  Default constructs this GUNNS Fluid Condensing Heat Exchanger configuration data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  that  (--)  Source to copy.
///
/// @details  Copy constructs this GUNNS Fluid Condensing Heat Exchanger configuration data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  malfBlockageFlag   (--)  Initial blockage malfunction flag.
/// @param[in]  malfBlockageValue  (--)  Initial blockage malfunction fractional value (0-1).
/// @param[in]  wallTemperature    (K)   Initial wall temperature all segments.
///
/// @details  Default constructs this GUNNS Fluid Condensing Heat Exchanger input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  that  (--)  Source to copy.
///
/// @details  Copy constructs this GUNNS Fluid Condensing Heat Exchanger input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @note     This should be followed by a call to the initialize method before calling an update
///           method.
///
/// @details  Default constructs this GUNNS Fluid Condensing Heat Exchanger.
////////////////////////////////////////////////////////////////////////////////////////////////////


///////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Default destructs this GUNNS Fluid Condensing Heat Exchanger.
///////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Calculates the nominal heat transfer coefficient of each segment.  The overall
///           coefficient is divided equally among the segments, and is limited from going negative.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Applies a degradation scale factor malfunction to the heat transfer coefficient.  This
///           malf can be used to raise or lower the effective HTC.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  dt        (s)     Time step (unused).
///
/// @details  Models heat transfer and water condensation in the heat exchanger segments.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  forcedOutflow  (--)  Not used.
/// @param[in]  fromPort       (--)  Not used.
/// @param[in]  toPort         (--)  Not used.
///
/// @details  This overrides the GunnsFluidLink implementation.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] flag  (--) Malfunction activation flag, true activates
/// @param[in] value (--) HX heat transfer degradation malfunction value
///
/// @details  Sets the malf parameters to given the values.  Calling this method with default
///           arguments resets the malfunction.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  name                  (--)   Name of object.
/// @param[in]  nodes                 (--)   Pointer to nodes.
/// @param[in]  maxConductivity       (m2)   Max conductivity.
/// @param[in]  expansionScaleFactor  (--)   Scale factor for isentropic gas cooling.
///
/// @details  Default constructs this GUNNS Fluid Sensor link model configuration data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  that   --  Source to copy.
///
/// @details  Copy constructs this GUNNS Fluid Sensor link model configuration data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  malfBlockageFlag   (--)      Blockage malfunction flag.
/// @param[in]  malfBlockageValue  (--)      Blockage malfunction fractional value (0-1).
///
/// @details  Default constructs this GUNNS Fluid Sensor link model input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  that   (--)  Source to copy.
///
/// @details  Copy constructs this GUNNS Fluid Sensor link model input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @note     This should be followed by a call to the initialize method before calling an update
///           method.
///
/// @details  Default constructs this GUNNS Fluid Sensor link model.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      configData   (--)  Configuration data.
/// @param[in]      inputData    (--)  Input data.
/// @param[in,out]  links        (--)  Link vector.
/// @param[in]      port0        (--)  Nominal inlet port map index.
/// @param[in]      port1        (--)  Nominal outlet port map index.
///
/// @return   void
///
/// @throws   TsInitializationException
///
/// @details  Initializes this GUNNS Fluid Sensor link model with configuration and input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  dt  (s)  Integration time step.
///
/// @details  Calls the base class implementation for normal fluid conductor transport, then calls
///           the final sensed output values to be updated.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details   Updates this GUNNS Fluid Sensor link model temperature, pressure, delta pressure and
///            mass flow rate sensor truth values.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] name                   (--)  Link name.
/// @param[in] nodes                  (--)  Network nodes array.
/// @param[in] positionPathB          (--)  Valve position is relative to flow path B (false = A).
/// @param[in] maxConductivityA;      (m2)  Path A maximum flow conductivity.
/// @param[in] maxConductivityB;      (m2)  Path B maximum flow conductivity.
/// @param[in] expansionScaleFactorA; (--)  Path A thermal expansion scale factor.
/// @param[in] expansionScaleFactorB; (--)  Path B thermal expansion scale factor.
/// @param[in] thermalLengthA;        (m)   Path A thermal convection length.
/// @param[in] thermalLengthB;        (m)   Path B thermal convection length.
/// @param[in] thermalDiameterA;      (m)   Path A thermal convection diameter.
/// @param[in] thermalDiameterB;      (m)   Path B thermal convection diameter.
/// @param[in] surfaceRoughnessA;     (m)   Path A thermal surface roughness.
/// @param[in] rateLimit              (1/s) Valve position rate limit.
/// @param[in] openPressureA          (kPa) Delta pressure at which path A is fully opened.
/// @param[in] openPressureB          (kPa) Delta pressure at which path B is fully opened.
/// @param[in] minPressureDiff        (kPa) Delta pressure range at which valve is half opened.
///
/// @details  Default GUNNS Three Way Check Valve Config Data Constructor
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] that (--) Input source to copy.
///
/// @details  Copy constructs this Gunns Three Way Check Valve configuration data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] position         (--) (0-1) Valve position relative to config data path.
/// @param[in] wallTemperatureA (K)  Path A wall temperature for thermal convection.
/// @param[in] wallTemperatureB (K)  Path B wall temperature for thermal convection.
/// @param[in] malfStuckFlag    (--) Malfunction flag indicating valve is stuck at current position.
/// @param[in] malfFailToFlag   (--) Malfunction flag indicating valve will fail to malfFailToValue.
/// @param[in] malfFailToValue  (--) Value to fail position to.
///
/// @details  Default GUNNS Three Way Check Valve Input Data Constructor.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] that (--) Input source to copy.
///
/// @details  Copy constructs this Three Way Check Valve input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Default Gunns Three Way Check Valve Constructor
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]     configData   (--) GUNNS Three Way Check Valve Config Data
/// @param[in]     inputData    (--) GUNNS Three Way Check Valve Input Data
/// @param[in,out] networkLinks (--) Network links
/// @param[in]     port0        (--) Network port 0
/// @param[in]     port1        (--) Network port 1
/// @param[in]     port2        (--) Network port 2
///
/// @throws   TsInitializationException
///
/// @details  This method initializes this Three Way Check Valve with configuration and input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @throws   TsInitializationException
///
/// @details  Validates this GUNNS Three Way Check Valve initial state.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] dt (s) Integration time step (not used)
///
/// @details  Updates the state of the Three Way Check Valve
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @returns    double (--) Calculated valve position.
///
/// @details    Calculates valve position based on potential drop across path A and B.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]     name                 (--)             Name of object.
/// @param[in,out] nodes                (--)             Pointer to nodes.
/// @param[in]     maxConductivity      (m2)             Max conductivity.
/// @param[in]     expansionScaleFactor (--)             Scale factor for isentropic gas cooling.
/// @param[in]     referenceTemp        (K)              Reference fluid temperature for corrected mass flow
/// @param[in]     referencePress       (--)             Reference fluid pressure for corrected mass flow
/// @param[in]     maxFlowLowSpeed      (kg/s)           Low Speed maximum corrected flow rate
/// @param[in]     maxFlowHighSpeed     (kg/s)           High Speed maximum corrected flow rate
/// @param[in]     coeffLowSpeed1       (--)             Low speed 1st curve fit coefficient
/// @param[in]     coeffHighSpeed1      (--)             High speed 1st curve fit coefficient
/// @param[in]     coeffLowSpeed2       (--)             Low speed 2nd curve fit coefficient
/// @param[in]     coeffHighSpeed2      (--)             High speed 2nd curve fit coefficient
/// @param[in]     efficiencyCoeffLow0  (--)             Low Speed Reference efficiency curve 0th-order coefficient
/// @param[in]     efficiencyCoeffLow1  (--)             Low Speed Reference efficiency curve 1st-order coefficient
/// @param[in]     efficiencyCoeffLow2  (--)             Low Speed Reference efficiency curve 2nd-order coefficient
/// @param[in]     efficiencyCoeffLow3  (--)             Low Speed Reference efficiency curve 3rd-order coefficient
/// @param[in]     efficiencyCoeffLow4  (--)             Low Speed Reference efficiency curve 4th-order coefficient
/// @param[in]     efficiencyCoeffLow5  (--)             Low Speed Reference efficiency curve 5th-order coefficient
/// @param[in]     efficiencyCoeffHigh0 (--)             High Speed Reference efficiency curve 0th-order coefficient
/// @param[in]     efficiencyCoeffHigh1 (--)             High Speed Reference efficiency curve 1st-order coefficient
/// @param[in]     efficiencyCoeffHigh2 (--)             High Speed Reference efficiency curve 2nd-order coefficient
/// @param[in]     efficiencyCoeffHigh3 (--)             High Speed Reference efficiency curve 3rd-order coefficient
/// @param[in]     efficiencyCoeffHigh4 (--)             High Speed Reference efficiency curve 4th-order coefficient
/// @param[in]     efficiencyCoeffHigh5 (--)             High Speed Reference efficiency curve 5th-order coefficient
/// @param[in]     minEffLimitLowSpeed  (--)             Min PR that the low speed efficiency curve can be evaluated at
/// @param[in]     minEffLimitHighSpeed (--)             Min PR that the high speed efficiency curve can be evaluated at
/// @param[in]     maxEffLimitLowSpeed  (--)             Max PR that the low speed efficiency curve can be evaluated at
/// @param[in]     maxEffLimitHighSpeed (--)             Max PR that the high speed efficiency curve can be evaluated at
/// @param[in]     correctedSpeedLow    (revolution/min) Lowest corrected speed on turbine map.
/// @param[in]     correctedSpeedHigh   (revolution/min) Highest corrected speed on turbine map.
/// @param[in]     filterGain           (--)             Low pass filter gain to ensure stability.
/// @param[in]     driveRatio           (--)             Gear ratio of motor to impeller speed.
/// @param[in]     thermalLength        (m)              Impeller length for thermal convection.
/// @param[in]     thermalDiameter      (m)              Impeller inner diameter for thermal convection.
/// @param[in]     surfaceRoughness     (m)              Impeller wall surface roughness for convection.
///
/// @details  Default constructs this GUNNS Gas Turbine link model configuration data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] that (--) Source object to copy.
///
/// @details  Copy constructs this GUNNS Gas Turbine link model configuration data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] malfBlockageFlag  (--)             Blockage malfunction flag.
/// @param[in] malfBlockageValue (--)             Blockage malfunction fractional value (0-1).
/// @param[in] motorSpeed        (revolution/min) Initial speed of the motor.
/// @param[in] wallTemperature   (K)              Initial impeller wall temperature.
///
/// @details  Default constructs this GUNNS Gas Turbine link model input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] that (--) Source object to copy.
///
/// @details  Copy constructs this GUNNS Gas Turbine link model input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @note     This should be followed by a call to the initialize method before calling an update
///           method.
///
/// @details  Default constructs this GUNNS Gas Turbine link model.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]     configData (--) Configuration data.
/// @param[in]     inputData  (--) Input data.
/// @param[in,out] links      (--) Link vector.
/// @param[in]     port0      (--) Nominal inlet port map index.
/// @param[in]     port1      (--) Nominal outlet port map index.
///
/// @throws   TsInitializationException
///
/// @details  Initializes this GUNNS Gas Turbine link model with configuration and input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @throws   TsInitializationException
///
/// @details  Validates this GUNNS Gas Turbine Model link model initial state.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] dt (s)  Time step (not used).
///
/// @details  Updates this GUNNS Gas Turbine link model effective conductivity.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] dt       (s)    Time step (not used).
/// @param[in] flowRate (kg/s) Mass flow rate.
///
/// @return   void
///
/// @details  Updates this GUNNS Gas Turbine link model internal fluid thermal state and fluid
///           outputs to the motor.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @return   void
///
/// @details  Calculates the flow rate across the impeller. It uses the current motor speed to
///           select the appropriate performance curve, then uses the previous pressure drop to
///           predict the flow rate.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      name                  (--)    Name of object.
/// @param[in]      nodes                 (--)    Pointer to nodes.
/// @param[in]      maxConductivity       (m2)    Max conductivity.
/// @param[in]      expansionScaleFactor  (--)    Scale factor for isentropic gas cooling.
/// @param[in]      rateLimit             (1/s)   Valve position rate limit.
/// @param[in]      thermalLength         (m)     Tube length for thermal convection.
/// @param[in]      thermalDiameter       (m)     Tube inner diameter for thermal convection.
/// @param[in]      surfaceRoughness      (m)     Tube wall surface roughness for thermal convection.
/// @param[in]      reseatPressure        (kPa)   Valve reseat pressure.
/// @param[in]      crackPressure         (kPa)   Valve crack pressure.
/// @param[in]      fullOpenPressure      (kPa)   Valve full open pressure.
/// @param[in]      popPosition           (--)    Valve pop position.
/// @param[in]      popSlopeScale         (kPa)   Valve pop slope scale factor.
/// @param[in]      inletDependencyCoeff0 (--)    0th order coefficient of inlet dependency effect on control pressure.
/// @param[in]      inletDependencyCoeff1 (1/kPa) 1st order coefficient of inlet dependency effect on control pressure.
//
/// @details      Default constructs this GUNNS Fluid Pressure Regulator Valve Link Model
///               configuration data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      that  (--)  Source to copy.
///
/// @details        Copy constructs this GUNNS Fluid Pressure Regulator Valve Link Model
///                 configuration data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      malfBlockageFlag        (--)    Blockage malfunction flag.
/// @param[in]      malfBlockageValue       (--)    Blockage malfunction fractional value (0-1).
/// @param[in]      position                (--)    Fractional position.
/// @param[in]      malfLeakThruFlag        (--)    Leak through rate malfunction flag.
/// @param[in]      malfLeakThruValue       (kg/s)  Leak through rate malfunction value.
/// @param[in]      malfPressureBiasFlag    (--)    Control pressure bias malfunction flag.
/// @param[in]      malfPressureBiasValue   (kPa)   Control pressure bias malfunction value.
/// @param[in]      setPointPressureBias    (kPa)   Set point pressure bias value.
/// @param[in]      wallTemperature         (K)     Tube wall temperature for thermal convection
/// @param[in]      malfValveStuckFlag      (--)    Stuck valve malfunction flag.
/// @param[in]      malfValveConstantFlag   (--)    Constant valve position malfunction flag.
/// @param[in]      malfValveConstantValue  (--)    Constant valve position malfunction value.
///
/// @details        Default constructs this GUNNS Fluid Pressure Regulator Valve Link Model input
///                 data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      that   (--)  Source to copy.
///
/// @details        Copy constructs this GUNNS Fluid Pressure Regulator Valve Link Model input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @note           This should be followed by a call to the initialize method before calling an
///                 update method.
///
/// @details        Default constructs this GUNNS Fluid Pressure Regulator Valve Link Model.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      configData     (--)  Configuration data.
/// @param[in]      inputData      (--)  Input data.
/// @param[in,out]  links          (--)  Link vector.
/// @param[in]      port0          (--)  Nominal inlet port map index.
/// @param[in]      port1          (--)  Nominal outlet port map index.
/// @param[in]      pressurePort0  (--)  Network pressure port 0.
/// @param[in]      pressurePort1  (--)  Network pressure port 1.
///
/// @return         void
///
/// @throws         TsInitializationException
///
/// @details        Initializes this GUNNS Fluid Pressure Regulator Valve Link Model with
///                 configuration and input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @return         void
///
/// @throws         TsInitializationException
///
/// @details        Validates this GUNNS Fluid Pressure Regulator Valve Link Model initial state.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @return         void
///
/// @details        Computes the coefficients for the four linear equations for this GUNNS Fluid
///                 Pressure Regulator Valve Link Model and sets the initial valve state.
///                 -# The starting point are the two linear equations for valve position as a
///                    function of outlet pressure that run from crack pressure to full open pressure
///                    for decreasing outlet pressure and from full open pressure to reseat pressure
///                    for increasing outlet pressure.
///                 -# For the initial pop segments between 0 and mInitialPop, the slope is scaled
///                    up by mPopSlopeScale and for the nominal segment between mInitialPop and 1
///                    the slope is correspondingly scaled down.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      dt  (s)  Time step.
///
/// @return         void
///
/// @details        Updates this GUNNS Fluid Pressure Regulator Valve Link Model state (valve state,
///                 valve position, and effective conductivity).
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @return         void
///
/// @details        Updates this GUNNS Fluid Pressure Regulator Valve Link Model valve state.
///                 \verbatim
///                  mControlPressure <                             mControlPressure >
///                  mFullOpenPressure           _______________    mFullOpenPressure
///                 __________________________\ |               | ___________________________
///                |                          / |     Open      |                            |
///                |                            |_______________|                            |
///                |                                                                        \|/
///            _________  ____________________\  _______________  /__________________    __________
///           |         | mControlPressure >  / |               | \ mControlPressure <  |          |
///           | Opening | mPreviousPressure     | Transitioning |   mPreviousPressure   | Closing  |
///           |_________| /____________________ |_______________| ____________________\ |__________|
///               /|\     \ mControlPressure <                    mControlPressure >  /      |
///                |        decPressure                           incPressure                |
///                |                             _______________                             |
///                |___________________________ |               | /__________________________|
///                  mControlPressure <         |    Closed     | \ mControlPressure >
///                  mCrackPressure             |_______________|   mReseatPressure
///                 \endverbatim
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      dt  (s)   Time step.
///
/// @return         void
///
/// @details        Updates this GUNNS Fluid Pressure Regulator Valve Link Model valve position.
///                 -# In CLOSED state, position is 0.0.
///                 -# In OPEN state, position is 1.0.
///                 -# In OPENING state, position is updated from appropriate increasing linear
///                    equation evaluated at control pressure.
///                 -# In CLOSING state, position is updated from appropriate decreasing linear
///                    equation evaluated at control pressure.
///                 -# In TRANSITIONING state the position is held at its previous value.
///                 -# For position < mPopPosition, the pop linear equations are used, otherwise
///                    the nominal linear equations are used.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  name                  (--)  Name of object.
/// @param[in]  nodes                 (--)  Pointer to nodes.
/// @param[in]  maxConductivity       (m2)  Max conductivity.
/// @param[in]  expansionScaleFactor  (--)  Scale factor for isentropic gas cooling.
/// @param[in]  numSegs               (--)  Number of segments.
///
/// @details  Default constructs this GUNNS Fluid Heat Exchanger link model configuration data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  that  (--)  Source to copy.
///
/// @details  Copy constructs this GUNNS Fluid Heat Exchanger link model configuration data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  malfBlockageFlag           (--)   Blockage malfunction flag.
/// @param[in]  malfBlockageValue          (--)   Blockage malfunction fractional value (0-1).
/// @param[in]  heatTransferCoefficient    (W/K)  Default heat transfer coefficient (W/K).
/// @param[in]  initialSegmentTemperature  (K)    Initial value for segment temperatures.
///
/// @details  Default constructs this GUNNS Fluid Heat Exchanger link model input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  that  (--)  Source to copy.
///
/// @details  Copy constructs this GUNNS Fluid Heat Exchanger link model input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @note     This should be followed by a call to the initialize method before calling an update
///           method.
///
/// @details  Default constructs this GUNNS Fluid Heat Exchanger link model.
////////////////////////////////////////////////////////////////////////////////////////////////////


///////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Default destructs this GUNNS Fluid Heat Exchanger link model.
///////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  dt        (s)     Time step.
/// @param[in]  flowRate  (kg/s)  Mass flow rate.
///
/// @return   void
///
/// @details  Updates the internal fluid of this this GUNNS Fluid Pipe link model.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  dt        (s)     Time step.
/// @param[in]  flowRate  (kg/s)  Mass flow rate.
///
/// @return   void
///
/// @details  Updates the fluid temperature and stores the computed segment energy gain.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Applies the override temperature value (if it is above absolute zero) to the link's
///           internal fluid.  If the override temperature value is zero, nothing is done.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @return   void
///
/// @details  Calculates the segment heat transfer coefficients. This method is virtual and can be
///           overridden by derived classes.  Degrade malfunctions scale the nominal coefficient.
///           The segment degrade malfunction takes precedence over the overall degrade in each
///           segment.  The degraded coefficient is limited between zero and its default value.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] segment (--) The segment number to apply the malfunction to
/// @param[in] flag    (--) Malfunction activation flag, true activates
/// @param[in] value   (--) HX heat transfer degradation malfunction value
///
/// @details  Sets the malf parameters to given the values.  Calling this method with default
///           arguments resets the malfunction.  A valid segment number must be supplied.  If the
///           segment number is not valid then the method issues a H&S warning and ignores the
///           request.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] coeff0   (W/K)      0th order coefficient.
/// @param[in] coeff1   (W*s/K/kg) 1st order coefficient.
/// @param[in] exponent (--)       Mass flow rate exponent.
/// @param[in] limit    (W/K)      Upper limit.
///
/// @details  Default constructs this Heat Exchanger Segment Dynamic Heat Transfer Coefficient.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] that (--) Object to be copied from.
///
/// @details  Copy constructs this Heat Exchanger Segment Dynamic Heat Transfer Coefficient.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] mdot        (kg/s) Mass flow rate.
/// @param[in] degradation (--)   Degradation scalar.
///
/// @returns  double (W/K) Heat transfer coefficient at given conditions.
///
/// @details  Computes and returns a new value of the heat transfer coefficient.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] name                 (--)       Name of object.
/// @param[in] nodes                (--)       Pointer to nodes.
/// @param[in] maxConductivity      (m2)       Max conductivity.
/// @param[in] expansionScaleFactor (--)       Scale factor for isentropic gas cooling.
/// @param[in] numSegs              (--)       Number of segments.
/// @param[in] htcCoeff0            (W/K)      Overall HTC 0th order coefficient.
/// @param[in] htcCoeff1            (W*s/K/kg) Overall HTC 1st order coefficient.
/// @param[in] htcExponent          (--)       HTC mass flow rate exponent.
/// @param[in] htcLimit             (W/K)      Overall HTC upper limit.
///
/// @details Default constructs this GUNNS Fluid Heat Exchanger With Dynamic HTC configuration data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  that  (--)  Source to copy.
///
/// @details  Copy constructs this GUNNS Fluid Heat Exchanger With Dynamic HTC configuration data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] coeff0   (W/K)      0th order coefficient.
/// @param[in] coeff1   (W*s/K/kg) 1st order coefficient.
/// @param[in] exponent (--)       Mass flow rate exponent.
/// @param[in] limit    (W/K)      Upper limit.
///
/// @details  Pushes a new heat transfer coefficient object onto the vector with the given values.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  malfBlockageFlag           (--)   Blockage malfunction flag.
/// @param[in]  malfBlockageValue          (--)   Blockage malfunction fractional value (0-1).
/// @param[in]  initialSegmentTemperature  (K)    Initial value for segment temperatures.
///
/// @details  Default constructs this GUNNS Fluid Heat Exchanger With Dynamic HTC input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  that  (--)  Source to copy.
///
/// @details  Copy constructs this GUNNS Fluid Heat Exchanger With Dynamic HTC input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @note     This should be followed by a call to the initialize method before calling an update
///           method.
///
/// @details  Default constructs this GUNNS Fluid Heat Exchanger With Dynamic HTC.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      configData  (--)  Configuration data.
/// @param[in]      inputData   (--)  Input data.
/// @param[in,out]  links       (--)  Link vector.
/// @param[in]      port0       (--)  Nominal inlet port map index.
/// @param[in]      port1       (--)  Nominal outlet port map index.
///
/// @throws   TsInitializationException
///
/// @details  Initializes this GUNNS Fluid Heat Exchanger With Dynamic HTC with configuration and
///           input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  configData  (--)  Configuration data.
///
/// @throws   TsInitializationException
///
/// @details  Validates this this GUNNS Fluid Heat Exchanger With Dynamic HTC initial state.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Calculates the segment heat transfer coefficients. This method is virtual and can be
///           overridden by derived classes.  Degrade malfunctions scale the nominal coefficient.
///           The segment degrade malfunction takes precedence over the overall degrade in each
///           segment.  The degraded coefficient is limited between zero and its default value.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] name              (--)       Link name.
/// @param[in] nodes             (--)       Network nodes array.
/// @param[in] exitPressureDroop (kPa*s/kg) Exit pressure droop per unit exit mass flow.
///
/// @details  Default constructs this Balanced Pressure Reducing Valve configuration data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] that (--) Input source to copy.
///
/// @details  Copy constructs this Balanced Pressure Reducing Valve configuration data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] malfBlockageFlag      (--)  Initial activation flag for blockage malfunction.
/// @param[in] malfBlockageValue     (--)  Initial fraction value (0-1) for Blockage malfunction.
/// @param[in] malfPressureBiasFlag  (--)  Initial activation flag for pressure setpoint bias malfunction.
/// @param[in] malfPressureBiasValue (kPa) Initial value for pressure setpoint bias malfunction.
/// @param[in] pressureSetpoint      (kPa) Initial regulated pressure setpoint.
///
/// @details  Default constructs this Balanced Pressure Reducing Valve input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] that (--) Input source to copy.
///
/// @details  Copy constructs this Balanced Pressure Reducing Valve input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Default constructs this Balanced Pressure Reducing Valve.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]     configData   (--) Fluid Balanced Pressure Reducing Valve Config Data.
/// @param[in]     inputData    (--) Fluid Balanced Pressure Reducing Valve Input Data.
/// @param[in,out] networkLinks (--) Network links.
/// @param[in]     port0        (--) Inlet node.
/// @param[in]     port1        (--) Outlet node.
/// @param[in]     port2        (--) Reference pressure node.
///
/// @throws   TsInitializationException
///
/// @details  Initializes this Balanced Pressure Reducing Valve with configuration and input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @throws   TsInitializationException
///
/// @details  Validates this Balanced Pressure Reducing Valve initial state.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] dt (s) Integration time step.
///
/// @details  Updates this link's contributions to the network system of equations.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Builds the link's admittance matrix contributions to the network.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Builds the link's source vector contributions to the network.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] dt (s) Integration time step (unused).
///
/// @details  Computes the flow rates across this link and transports fluid flows between nodes.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] dt (s) Integration time step.
///
/// @details   Updates final flow properties and transports fluid from source to sink nodes.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] port (--) The port to be assigned.
/// @param[in] node (--) The desired node to assign the port to.
///
/// @return   bool  (--) Returns true if all rules checks pass.
///
/// @details  Checks the requested port & node arguments for validity against rules that apply to
///           this specific class.  These are:
///           - A GunnsFluidBalancedPrv cannot map port 0 to the Ground node.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] flag  (--)  Malfunction activation flag, true activates.
/// @param[in] value (kPa) Bias value to add to the pressure setpoint.
///
/// @details  Sets the malf parameters to the given values.  Calling this method with default
///           arguments resets the malfunction.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  name            (--)  Instance name for self-identification in messages.
/// @param[in]  preStepCounter  (--)  Initial counter to support unit tests.
///
/// @details  Default constructs this GUNNS Drive Shaft Network Spotter configuration data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  postStepCounter  (--)  Initial counter to support unit tests.
///
/// @details  Default constructs this GUNNS Drive Shaft Network Spotter input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details Default constructs this GUNNS Drive Shaft Network Spotter.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  configData  (--)  Instance configuration data.
/// @param[in]  inputData   (--)  Instance input data.
///
/// @throws   TsInitializationException
///
/// @details  Initializes this GUNNS Drive Shaft Network Spotter with its configuration and
///           input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  configData  (--)  Instance configuration data.
///
/// @returns  GunnsDriveShaftSpotterConfigData  (--)  Type-casted and validated config data pointer.
///
/// @throws   TsInitializationException
///
/// @details  Type-casts the base config data class pointer to this spotter's config data type,
///           checks for valid type-cast and validates contained data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  inputData  (--)  Instance input data.
///
/// @returns  GunnsDriveShaftSpotterInputData  (--)  Type-casted and validated input data pointer.
///
/// @throws   TsInitializationException
///
/// @details  Type-casts the base input data class pointer to this spotter's input data type,
///           checks for valid type-cast and validates contained data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  dt  (s)  Execution time step.
///
/// @details Calculates the change in motor speed based on last past total external torque. Torque
///          due to dynamic friction is also accounted for. A specific motor speed can be forced
///          using the override malfunction.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  dt  (s)  Execution time step (unused).
///
/// @details  Sums the external loads of all fans and turbines. The jam malfunction applies an
///           additional torque opposing the net torque. If the drive shaft is 100% jammed, the net
///           torque will be zero.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  object  (--)  Object to be referenced by drive shaft.
///
/// @throws   TsInitializationException
///
/// @details  Tells the drive shaft what fans and turbines it is attached to.
///
/// @note     This method must be called from the Trick input file, for every object attached to the
///           drive shaft.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  name                (--)              Name of object.
/// @param[in]  nodes               (--)              Pointer to nodes.
/// @param[in]  maxConductivity     (m2)              Max conductivity.
/// @param[in]  hxNumSegments       (--)              Number of heat exchanger segments.
/// @param[in]  hxDryHtc            (W/K)             Heat exchanger dry heat transfer coefficient.
/// @param[in]  hxWetHtcFactor      (1/kg)            Contribution of condensate to HX heat coefficient.
/// @param[in]  hxWetFlowFactor     (1/kg)            Contribution of condensate to HX link conductivity.
/// @param[in]  hxEvaporationCoeff  (kg/s/kPa)        Heat exchanger evaporation coefficient.
/// @param[in]  slurperFlowMassDry  (kg)              HX condensate to begin slurper flow from PAUSED_DRY.
/// @param[in]  slurperFlowMassWet  (kg)              HX condensate to begin slurper flow from PAUSED_WET.
/// @param[in]  slurperFlowRateRef  (kg/s)            Slurper condensate flow rate at WS reference speed.
/// @param[in]  wsMassExponent      (--)              Water separator mass factor exponent.
/// @param[in]  wsMaxCondensate     (kg)              Water separator maximum liquid mass capacity.
/// @param[in]  wsReferenceSpeed    (revolution/min)  Water separator reference speed.
/// @param[in]  wsReferencePressure (kPa)             Water separator pressure heat at reference speed.
/// @param[in]  wsReferenceTorque   (N*m)             Water separator motor torque at reference speed.
/// @param[in]  wsDriveRatio        (--)              Water separator gear ratio of motor to drum speed.
/// @param[in]  wsEvaporationCoeff  (kg/s/kPa)        Water separator evaporation coefficient.
///
/// @details  Default constructs this GUNNS Fluid Condensing Heat Exchanger & Separator config data.
///
/// @note     To avoid impacts to legacy users, the new base class GunnsFluidCondensingHxConfigData
///           terms for the heat transfer coefficient are defaulted so that this original link's
///           performance is kept, i.e. only the base 0th order HTC coefficient is used, and the
///           higher-order terms are defaulted to have no effect.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  that  (--)  Source to copy.
///
/// @details  Copy constructs this GUNNS Fluid Condensing Heat Exchanger & Separator config data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  malfBlockageFlag    (--)              Blockage malfunction flag.
/// @param[in]  malfBlockageValue   (--)              Blockage malfunction fractional value (0-1).
/// @param[in]  wallTemperature     (K)               Initial default wall temperature all segments.
/// @param[in]  wsMotorSpeed        (revolution/min)  Initial speed of the water separator motor.
/// @param[in]  wsCondensateMass    (kg)              Initial mass of condensate in separator.
/// @param[in]  hxCondensateMass    (kg)              Initial mass of condensate in heat exchanger.
/// @param[in]  transferFlowRate    (kg/s)            Initial mass flow rate to liquid network.
/// @param[in]  slurperState        (--)              Initial Slurper/HX flow state.
///
/// @details  Default constructs this GUNNS Fluid Condensing Heat Exchanger & Separator input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  that  (--)  Source to copy.
///
/// @details  Copy constructs this GUNNS Fluid Condensing Heat Exchanger & Separator input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @note     This should be followed by a call to the initialize method before calling an update
///           method.
///
/// @details  Default constructs this GUNNS Fluid Condensing Heat Exchanger & Separator.
////////////////////////////////////////////////////////////////////////////////////////////////////


///////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Default destructs this GUNNS Fluid Condensing Heat Exchanger & Separator.
///////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      configData   (--)  Configuration data.
/// @param[in]      inputData    (--)  Input data.
/// @param[in,out]  links        (--)  Link vector.
/// @param[in]      port0        (--)  Nominal inlet port map index.
/// @param[in]      port1        (--)  Nominal outlet port map index.
///
/// @callgraph
///
/// @throws   TsInitializationException
///
/// @details  Initializes this GUNNS Fluid Condensing Heat Exchanger & Separator with config and
///           input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  configData  (--)  Configuration data.
/// @param[in]  inputData   (--)  Input data.
///
/// @throws   TsInitializationException
///
/// @details  Validates this GUNNS Fluid Condensing Heat Exchanger & Separator initial state.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  dt        (s)     Time step.
///
/// @details  Updates the effective conductivity of the link and the water separator drum speed.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  dt        (s)     Time step.
/// @param[in]  flowRate  (kg/s)  Mass flow rate.
///
/// @callgraph
///
/// @details  Calls the base class updateFluid moethid, then calls models for the slurper bar and
///           phase separator.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Calls the base class to compute the nominal heat transfer coefficient, then multiplies
///           it by the effect of the pooled condensate mass on the fins.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  dt        (s)     Time step.
///
/// @details  Calls the base class method to model the bulk air heat transfer and condensation, then
///           keeps track of the pooled condensate mass on the fins.  Models evaporation from the
///           pool back to the bulk air flow when there is no condensation.  Condensation adds to
///           the pool, and evaporation and outflow to the slurper bar reduce the pool.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Determines whether the heat exchanger is flowing condensate through the slurper to the
///           water separator.  Before flow can begin, the surface area of the HX fins, slurper bars
///           & slurper drain pipe take time to become wetted with condensate.  Starting from a
///           completely dry state (mSlurperState = PAUSED_DRY), the wetted mass must reach a
///           certain amount (mSlurperFlowMassDry) before flow begins.  Once flow starts, liquid
///           surface tension and the HX surface's hydrophilic coating keeps all new condensation
///           flowing until the total condensate mass reaches zero.  At this point, if condensation
///           is still occurring (state = PAUSED_WET), flow will resume at a smaller pooled mass
///           (mSlurperFlowMassWet).
///
///           This is a simplified model of HX surface flow, but it suffices to give the general
///           signature of initial flow from a dry state taking a long time to begin, followed by
///           occasional but shorter pauses, depending on the relative condensation & WS flow rates.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  dt        (s)     Time step.
///
/// @details  Stores condensate and models pressure head created in the spinning WS drum and
///           handshakes with the external liquid system for pumping condensate out of the WS.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Prepares outputs to the liquid separator aspect.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] flag  (--) Malfunction activation flag, true activates
/// @param[in] value (--) HX condensation pool rate override malfunction value
///
/// @details  Sets the malf parameters to given the values.  Calling this method with default
///           arguments resets the malfunction.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  name             (--)  Name of object.
/// @param[in]  nodes            (--)  Pointer to nodes.
/// @param[in]  maxConductivity  (m2)  Max conductivity.
/// @param[in]  fluidTypesPort0  (--)  Fluid types to be converted at the port 0 node.
/// @param[in]  fluidTypesPort1  (--)  Fluid types to be converted at the port 1 node.
///
/// @details  Default constructs this GUNNS Fluid Type Change Conductor link configuration data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  that  (--)  Source to copy.
///
/// @details  Copy constructs this GUNNS Fluid Type Change Conductor link configuration data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] malfBlockageFlag  (--) Blockage malfunction flag
/// @param[in] malfBlockageValue (--) Blockage malfunction fractional value (0-1)
///
/// @details  Default constructs this GUNNS Fluid Type Change Conductor link input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  that  (--)  Source to copy.
///
/// @details  Copy constructs this GUNNS Fluid Type Change Conductor link input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @note     This should be followed by a call to the initialize method before calling an update
///           method.
///
/// @details  Default constructs this GUNNS Fluid Type Change Conductor link.
////////////////////////////////////////////////////////////////////////////////////////////////////


///////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Default destructs this GUNNS Fluid Type Change Conductor link model.
///////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] port (--) The port to be assigned.
/// @param[in] node (--) The desired node to assign the port to.
///
/// @return   bool  (--) Returns true if all rules checks pass.
///
/// @details  Checks the requested port & node arguments for validity against rules that apply to
///           this specific class.  These are:
///           - A GunnsFluidTypeChangeConductor cannot map a port to a non-Ground node whose fluid
///             phase differs from any of the conversion types for this port.
///
/// @note  This won't check during initialization because the conversion types haven't been
///        initialized from config data yet.  So this kind of conflict must also be checked in the
///        validate method.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @return    void
///
/// @details  Computes the molar flux rate through this GUNNS Fluid Pressure Sensitive Valve Link Model.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @return    void
///
/// @details  Computes the hydraulic power in this GUNNS Fluid Pressure Sensitive Valve Link Model.  .
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  name                 (--)    Name of object.
/// @param[in]  nodes                (--)    Pointer to nodes.
/// @param[in]  maxConductivity      (m2)    Maximum conductivity.
/// @param[in]  expansionScaleFactor (--)    Scale factor for isentropic gas cooling.
/// @param[in]  thermalLength        (m)     Tube length for thermal convection
/// @param[in]  thermalDiameter      (m)     Tube inner diameter for thermal convection
/// @param[in]  surfaceRoughness     (m)     Tube wall surface roughness for thermal convection
///
/// @details  Default constructs this GUNNS Fluid Valve link model configuration data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  that   (--)  Source to copy.
///
/// @details  Copy constructs this GUNNS Fluid Valve link model configuration data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  malfBlockageFlag   (--)    Blockage malfunction flag.
/// @param[in]  malfBlockageValue  (--)    Blockage malfunction fractional value (0-1).
/// @param[in]  position           (--)    Fractional position.
/// @param[in]  malfLeakThruFlag   (--)    Leak through rate malfunction flag.
/// @param[in]  malfLeakThruValue  (kg/s)  Leak through rate malfunction value.
/// @param[in]  wallTemperature    (K)     Tube wall temperature for thermal convection
///
/// @details  Default constructs this GUNNS Fluid Valve link model input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  that   --  Source to copy.
///
/// @details  Copy constructs this GUNNS Fluid Valve link model input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @note     This should be followed by a call to the initialize method before calling an update
///           method.
///
/// @details  Default constructs this GUNNS Fluid Valve link model.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      configData   --  Configuration data.
/// @param[in]      inputData    --  Input data.
/// @param[in,out]  links        --  Link vector.
/// @param[in]      port0        --  Nominal inlet port map index.
/// @param[in]      port1        --  Nominal outlet port map index.
///
/// @return   void
///
/// @throws   TsInitializationException
///
/// @details  Initializes this GUNNS Fluid Valve link model with configuration and input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] inputData  (--) Input data.
///
/// @return   void
///
/// @throws   TsInitializationException
///
/// @details  Validates this GUNNS Fluid Valve link model initial state.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] dt (s)  Time step (not used).
///
/// @return   void
///
/// @note     Derived classes should call this method at the end of their updateState method.
///
/// @details  Processes any malfunctions and updates this GUNNS Fluid Valve link model state.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] dt       (s)    Not used.
/// @param[in] flowRate (kg/s) Mass flow rate.
///
/// @returns  void
///
/// @details  Updates the internal fluid of this this GUNNS Fluid Valve link model.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] flag   (--)    Malfunction activation flag.
/// @param[in] value  (kg/s)  Desired initial leak mass flow rate.
///
/// @returns  void
///
/// @details  Arguments are defaulted to deactivate the malfunction, so you can conveniently turn
///           it off by calling setMalfLeakThru().
////////////////////////////////////////////////////////////////////////////////////////////////////