////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] dt (s) Integration time step.
///
/// @details Method to update the link during a time step. For a fluid capacitor, like a Tank or
///          any volume, we define the actual capacitive node to be Nodes[0], and Nodes[1] is set
///          as a zero potential node.  Make sure to always map Nodes[0] as the volume object node.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details A lower bound on actual inflatability is applied in run-time since it is used as a
///          divisor elsewhere.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] dt       (s)    Integration time step.
/// @param[in] flowrate (kg/s) Link mass flow rate.
///
/// @details Updates the node volume & balloon inflation terms based on new pressure solution, and
///          calls the tank update for fluid edits.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @returns double  (m3)  Internal balloon volume with limits applied.
///
/// @details Computes & returns the new balloon internal volume based on the balloon inflatability
///          and current pressures, and applies min & max volume limits.  Updates the inflation
///          states.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details Process a volume edit and synchronizes with pressure edits, since pressure and volume
///          are coupled.  A volume edit activates a simultaneous coordinated pressure edit, and
///          vice-versa.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] dt (s) Integration time step.
///
/// @details At this point, mInternalFluid and mFlowRate contain the gas flows for partial pressure
///          rate edits from GunnsFluidTank, assuming constant volume.  Once we know the inflatable
///          capacitance, we must adjust mInternalFluid and mFlowRate to account for the changing
///          volume.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @returns double (kPa) Adjusted node pressure correction for state error.
///
/// @details Computes and returns an adjusted node pressure correction for state error to account
///          for the volume change this correction will cause due to the balloon inflatability.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] dt (s) Integration time step.
///
/// @details  This method builds the link's molar capacitance, thermal capacitance, and fluid edit
///           flow source effects into the link source vector.  The compression effect from
///           GunnsFluidCapacitor is not included because we've already accounted for it.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] port (--) The port to be assigned.
/// @param[in] node (--) The desired node to assign the port to.
///
/// @returns  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 GunnsFluidBalloon must map port 0 to a non-Ground gas-phase node.
///
///           This overrides GunnsFluidCapacitor to allow connecting port 1 to a non-Ground node.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @verbatim
///    <----->                           minChamberVolPercent                                <--->
///    <----->                           Minimum chamber volume for stability                <--->
///    <----------------->               minChamberVolDeadBandPercent              <------------->
///           <---------->               Dead band range                           <-------->
///    <-------------------------------- Total volume ------------------------------------------->
///    <-------------------------------- Accum volume(real world) -------------------------->
///    <-------------------------------- Maximum chamber volume ---------------------------->
///           <------------------------- Bellows movement range (0 - 100%) ----------------->
///     __________________________________________________________________________________________
///    |     |            |                                                       |          |    |
///    |     |            |                                                       |          |    |
///    |_____|____ _______|_______________________________________________________|__________|____|
///
///
///    minChamberVolPercent is multiplied to the accum volume and then added to it to create
///    a slightly larger accumulator total volume. This is for stability at the bellows limits.
///    minChamberVolPercent does not reduce the usable volume of the accumulator.
///
///    minChamberVolDeadBandPercent is multiplied to the accum volume. IT IS GREATER THAN
///    mMinChamberVolPercent and is part of the accum volume. It is used to compute the dead band
///    range. The dead band range is used to ramp down the liquid effective conductivity when the
///    bellows is nearing one of the limits.
///
/// @endverbatim
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  name                             (--)     Link name
/// @param[in]  nodeList                         (--)     Network nodes array
/// @param[in]  maxConductivity                  (m2)     Maximum possible eff cond of the link
/// @param[in]  minConductivityScale             (--)     Min scale to crack open liquid side at bellows limit
/// @param[in]  accumVolume                      (m3)     Documented accumulator volume
/// @param[in]  minChamberVolPercent             (--)     Percent accum volume added for min chamber vol
/// @param[in]  minChamberVolDeadBandPercent     (--)     Percent accum volume for dead band
/// @param[in]  forceBellowsMaxRate              (--)     Fraction/sec. Max rate to force bellows
/// @param[in]  editHoldTime                     (s)      Hold time after edit for system stability
/// @param[in]  minTemperature                   (K)      Min temperature - all applicable chambers
/// @param[in]  maxTemperature                   (K)      Max temperature - all applicable chambers
/// @param[in]  maxPressure                      (kPa)    Max Pressure computed by accumulator.
/// @param[in]  springCoeff0;                    (kPa)    Spring pressure at bellows zero position, spring coefficient 0
/// @param[in]  springCoeff1;                    (--)     Spring coefficient 1, or spring constant, k (kPa/bellows position), in a linear spring system
/// @param[in]  springCoeff2;                    (--)     Spring coefficient 2 (kPa/bellows position squared)
/// @param[in]  fillModePressureThreshold;       (kPa)    Threshold for computing Fill Mode. Non-zero activates "one way" mEffConductivityScale ramping
/// @param[in]  effCondScaleRate;                (--)     Rate for "one way" mEffConductivityScale ramping (0-1)/sec
///
/// @details Default constructs this accumulator model configuration data.
////////////////////////////////////////////////////////////////////////////////////////////////////


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


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  malfBlockageFlag          (--)     Blockage malfunction flag
/// @param[in]  malfBlockageValue         (--)     Blockage malfunction fractional value (0-1)
/// @param[in]  initialBellowsPosition    (--)     Fraction of liquid chamber that is filled (0-1)
/// @param[in]  liquidFluidInputData      (--)     Input data for liquid fluid
///
/// @details Default constructs this accumulator model input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


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


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @note     This should be followed by a call to the initialize method before calling the step
///           and computeFlows methods.
///
/// @details  Default constructs this accumulator model with purposely invalid data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @return     void
///
/// @details    Updates the admittance matrix for this Gunns object. The normal admittance indices
///             (1,2) are zeroed out, because there is never flow between the two nodes. Instead,
///             flow to and from the accumulator is computed via the "virtual" paths to ground
///             that are inherant to the link, but normally ignored. For the node at port 1,
///             mAdmittanceMatrix[3] represents the path to ground. The accumulator model
///             acts as a GunnsFluidPotential, controlling the flow through this path.
///             mAdmittanceMatrix[0] is for the gas side (if used). Here, the admittance is zeroed.
///             If the derived class is a spring pressurizer, nothing is to be done except to
///             connect port 0 to vacuum. If a gas pressurizer is used, then port 0 must connect
///             to a gas node, and mAdmittanceMatrix[0] must be computed in the derived class
///             after this function has executed.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]    port  (--)  The port to be assigned.
/// @param[in]    node  (--)  The desired node to assign the port to.
///
/// @returns  (--) True if all rules checks pass.
///
/// @details  Checks the requested port & node arguments for validity against rules that apply to
///           Gunns Fluid Accumulator link model.  These are:
///           - The node at port 0 must contain gas phase OR be the network's vacuum boundary node.
///           - The node at port 1 cannot be the network's vacuum boundary node.
///           - The node at port 1 must contain liquid phase.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  capacitance           (kg*mol/kPa) Fluid capacitance of the chamber.
/// @param[in]  maxConductivity       (m2)         Max conductivity limit.
/// @param[in]  currentConductivity   (m2)         Current conductivity.
/// @param[in]  minConductivity       (m2)         Min conductivity limit.
/// @param[in]  dt                    (s)          Delta time.
///
/// @return     (m2) Conductivity
///
/// @details    Computes conductivity from capacitance and delta time. Limits the returned value
///             based on min and max limits. Will eventually be moved to Gunns Utils.
///             Can also be used by derived class.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  flux            (kg*mol/s) Molar flow rate into the chamber.
/// @param[in]  associatedNode  (--)       Pointer to the node to compute flow for.
/// @param[in]  accumFluid      (m2)       Pointer to the internal fluid in the chamber.
///
/// @return     (kg/s) Flow rate
///
/// @details    Compute mass flow rate from molar flow rate and fluid properties.
///             Positive flow is into the accumulator. Negative flow is out of the accumulator.
///             Can also be used by derived class.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  admittance      (kg*mol/kPa) Fluid admittance of the chamber.
/// @param[in]  associatedNode  (--)         Pointer to the node to compute flow for.
/// @param[in]  accumFluid      (m2)         Pointer to the internal fluid in the chamber.
///
/// @return     (kg*mol/s) Molar flow rate
///
/// @details    Compute molar flow rate from admittance and delta pressure.
///             Positive flow is into the accumulator. Negative flow is out of the accumulator.
///             Can also be used by derived class.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  flowRate       (kg/s)  Mass flow rate.
/// @param[in]  sourceNode     (--)    Pointer to node at inlet port.
/// @param[in]  internalFluid  (--)    Pointer to internal fluid.
///
/// @return     (kg/s) Flow rate
///
/// @details    Compute the volumetric flow rate from the mass flow rate and density.
///             Can also be used by derived class.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  dt  (s)  Time step (not used).
///
/// @details    Compute the molar flow rate to/from the nodes as a result of the network solution,
///             schedules outflows from the nodes, and sets port direction flags for the flow
///             orchestrator.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  dt           (s)      Delta time.
/// @param[in]  flowRate     (kg/s)   Flow rate.
/// @param[in]  currentMass  (kg)     Current mass.
///
/// @return   (kg)    New mass.
///
/// @details  Computes new mass from flow rate, delta time, and current mass.
///           Can also be used by derived class.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  dt                  (s)    Delta time.
/// @param[in]  flowRate            (kg/s) Flow rate.
/// @param[in]  inSpecificEnthalpy  (J/kg) Specific enthalpy of incoming flow.
/// @param[in]  accumFluid          (--)   Applicable fluid.
/// @param[in]  accumHousingQ       (J)    Heat input from accumulator housing.
///
/// @return     (K) Temperature of fluid in chamber.
///
/// @details    Compute temperature for the applicable accumulator chamber.
///             Can also be used by derived class.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @return   void
///
/// @details  Computes and updates chamber volumes after initialize or when accumulator state is
///           forced.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  dt           (s)      Delta time.
///
/// @return   void
///
/// @details  Calls forceLiqChamber with quantity edit terms. Releases edit when forced movement
///           is complete and timer is expired.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      volume       (m3) Chamber volume.
/// @param[in,out]  accumFluid   (--) Chamber fluid.
///
/// @return         Void
///
/// @details        Force accumulator temperature, based on temperature edit terms.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  dt       (s) Delta time.
///
/// @return     Void
///
/// @details    Calls forceLiqChamber with Malfunction terms. Sets mBellowsStuck flag where
///             applicable.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      dt                    (s)  Delta time.
/// @param[in,out]  forcedBellowsPos      (--) Desired bellows position.
/// @param[in,out]  forceBellowsRate      (--)  Desired bellows travel rate (percent/sec).
/// @param[in]      updateTemperature     (--)  Update temperature flag.
///
/// @return         (--)  Force liquid chamber complete bool.
///
/// @details        Forces bellows position based on either edit or malfunction.
///                 Desired value and rate are limited within "rampValue".
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @return         double
///
/// @details        Returns the pressure from the pressurizer. Place holder for derived class.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]     configData   (--) Config Data
/// @param[in]     inputData    (--) Input Data
/// @param[in,out] networkLinks (--) Gunns network links
/// @param[in]     port0        (--) Gunns network port 0
/// @param[in]     port1        (--) Gunns network port 1
///
/// @return     void
///
/// @throws     TsInitializationException
///
/// @details    Initializes this accumulator model.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  dt           (s)      Delta time.
/// @param[in]  timer        (s)      Current timer value.
/// @param[in]  timerLimit  (kg)      Timer limit.
///
/// @return   (bool)  Timer expired.
///
/// @details  Processes a timer (passed in by reference) for an accumulator edit.
///           Can also be used by derived class.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      dt                (s)  Delta time.
/// @param[in,out]  currentValue      (--) Current value to be ramped.
/// @param[in,out]  targetValue       (--) Target value to ramp to.
/// @param[in,out]  rate              (--) Ramping rate.
/// @param[in]      targetLowerLimit  (--) Lower limit for target.
/// @param[in]      targetUpperLimit  (--) Upper limit for target.
/// @param[in]      rateLowerLimit    (--) Lower limit for rate.
/// @param[in]      rateUpperLimit    (--) Upper limit for rate.
///
/// @return         (--) Ramp complete bool.
///
/// @details        Ramps the current value towards the target value. Target value and rate are
///                 limited to the upper and lower limits. Parameters are modified to alert the
///                 user that these values have been limited. Works with any units. Can also
///                 be used by derived class.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @return         Void
///
/// @details        Sets all edit flags to false and all timers to 0.0. Call reset for possible
///                 derived class.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] flag  (--) Malfunction activation flag, true activates
/// @param[in] value (--) Malfunction position value to move to and stick there
/// @param[in] rate  (--) Fraction/sec, Rate for bellows movement
///
/// @details  Sets the stick the bellows to the given position malf flag to given state.
///           Calling this method with default arguments resets the malfunction.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  dt (s)  Delta time.
///
/// @return     Void
///
/// @details    Step through a frame. Update capacitance, effective conductivity, and call update
///             state.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      flowRate       (kd/s)  Flow rate.
/// @param[in,out]  associatedNode (--)    Node associated with given chamber.
/// @param[in]      AccumFluid     (s)     Accumulator chamber fluid.
///
/// @return     Void
///
/// @details  This function adds the accumulators flow to the node's collection terms.
///           Positive flow is into the accumulator. Negative flow is out of the accumulator.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @return     Void
///
/// @details    Update capacitance of the liquid chamber. Should be overridden in derived class.
///             If no derived class, capacitance = spring capacitance.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
///
/// @return     Void
///
/// @details    Update effective conductivity scale for liquid side. This is used to close off the
///             link when the bellows position is approaching a limit. When the bellows is at 0%
///             or 100% and pressure is such that the bellows will not move, the pressurizer
///             pressure can no longer affect the liquid side. This is represented by a zero
///             effective conductivity. In this state, the link is closed off, and liquid pressure
///             diverges from pressurizer pressure. In order to provide a smooth transition,
///             the conductivity is closed off gradually once the liquid or pressurizer volume
///             is between the mMinDeadBandVol and the mMinChamberVol. This also provides the
///             additional benefit of simulating the stiffening of the bellows mechanism as it
///             approaches a limit.
///
///             Liquid chamber pressure is always equal to pressurizer pressure(spring and gas if
///             present), but the mLiquidPressureReading (sensor truth value) is equal to the
///             port 1 node pressure. When the conductivity is closed off, liquid chamber pressure
///             will still equal pressurizer pressure, but the liquid pressure reading will show
///             the proper effect.
///
///
///             Note about mFillModePressureThreshold and mEffCondScaleOneWayRate:
///
///             In some applications it is desirable to have little to no resistance when filling
///             an empty accumulator or emptying a full one. In these cases, scaling the conductivity
///             while trying to move the bellows away from a hard stop gives a sluggish signature.
///
///             If mFillModePressureThreshold > 0, then the accumulator will compute the effective
///             conductivity scale differently depending on whether the bellows position is
///             approaching a hard stop or leaving a hard stop.
///
///             When approaching, it will decrease the effective conductivity scale based on how close
///             the bellows position is to the hard stop (original logic). But when moving away from a
///             hard stop, the effective conductivity scale will be ramped up to 1.0 using a time-based rate.
///             The intent is that the scale be increased to 1.0 much quicker than it would be using bellows
///             position, while at the same time not being slammed to 1.0, which can cause instabilities.
///             the first application for this feature was in ISS EVAS for the water bags. The
///             mEffCondScaleOneWayRate used for that case was 2.0 (fraction/sec). At 10hz, this meant that
///             the conductivity scale increased from 0.0 to 1.0 is 0.5 seconds. This was fast enough to avoid
///             a sluggish signature but also slow enough to avoid instability. This case involved 3 accumulators
///             open to each other along with several pressure sensitive valves and a pump - across 3 GUNNS
///             networks through supply/demand interfaces.
///
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  dt               (s)           Delta time.
///
/// @return     Void
///
/// @details    Update effective conductivity of liquid side, based on liquid capacitance and
///             conductivity scale. By dynamically adjusting the conductivity, stability is
///             provided given changing volumes.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  dt           (s) Delta time.
///
/// @return     Void
///
/// @details    Update accumulator fluid state. Solve volumes, bellows position, mass, temperature.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  dt    (s)  Delta time.
///
/// @return     Void
///
/// @details    Update liquid chamber during nominal conditions. Update temperature, mass, chamber
///             volumes, and bellows position.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  dt (s)  Delta time.
///
/// @return     Void
///
/// @details    Update pressure of liquid chamber. Combine spring force and gas chamber
///             pressure if present.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @return     Void
///
/// @details    Update pressurizer volume. This exists to eliminate a round off issue that occurs
///             when the liquid volume is at max and min. The pressurizer volume is just under
///             the corresponding volume, which causes erroneous behavior.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  dt (s)  Delta time.
///
/// @return     Void
///
/// @details    Update accumulator state. Solve link admittance, conductance, and potential.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  configData  (--)  Configuration data.
/// @param[in]  inputData   (--)  Input data.
///
/// @return     void
///
/// @throws     TsInitializationException
///
/// @details    Validates accumulator configuration and input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  name                             (--)     Link name
/// @param[in]  nodeList                         (--)     Network nodes array
/// @param[in]  maxConductivity                  (m2)     Maximum possible eff cond of the link
/// @param[in]  minConductivityScale             (--)     Min scale to crack open liquid side at bellows limit
/// @param[in]  accumVolume                      (m3)     Documented accumulator volume
/// @param[in]  minChamberVolPercent             (--)     Percent accum volume added for min chamber vol
/// @param[in]  minChamberVolDeadBandPercent     (--)     Percent accum volume for dead band
/// @param[in]  forceBellowsMaxRate              (--)     Fraction/sec. Max rate to force bellows
/// @param[in]  editHoldTime                     (s)      Hold time after edit for system stability
/// @param[in]  minTemperature                   (K)      Min temperature - all applicable chambers
/// @param[in]  maxTemperature                   (K)      Max temperature - all applicable chambers
/// @param[in]  maxPressure                      (kPa)    Max Pressure computed by accumulator.
/// @param[in]  springCoeff0;                    (kPa)    Spring pressure at bellows zero position, spring coefficient 0
/// @param[in]  springCoeff1;                    (--)     Spring coefficient 1, or spring constant, k (kPa/bellows position), in a linear spring system
/// @param[in]  springCoeff2;                    (--)     Spring coefficient 2 (kPa/bellows position squared)
/// @param[in]  gasMaxConductivity               (--)     Maximum possible effective conductivity of the gas link
/// @param[in]  gasMinConductivity               (--)     Minimum possible effective conductivity of the gas link
/// @param[in]  maxForcePressureRate             (kPa/s)  Max rate for overriding pressure.
/// @param[in]  fillModePressureThreshold;       (kPa)    Threshold for computing Fill Mode. Non-zero activates "one way" mEffConductivityScale ramping
/// @param[in]  effCondScaleRate;                (--)     Rate for "one way" mEffConductivityScale ramping (0-1)/sec
///
/// @details Default constructs this gas accumulator model configuration data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  that   (--)  Source to copy.
///
/// @details  Copy constructs this gas accumulator model configuration data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  malfBlockageFlag          (--)     Blockage malfunction flag
/// @param[in]  malfBlockageValue         (--)     Blockage malfunction fractional value (0-1)
/// @param[in]  initialBellowsPosition    (--)     Fraction of liquid chamber that is filled (0-1)
/// @param[in]  liquidFluidInputData      (--)     Input data for liquid fluid
/// @param[in]  gasFluidInputData         (--)     Input data for gas fluid
///
/// @details Default constructs this gas accumulator model input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  that   (--)  Source to copy.
///
/// @details  Copy constructs this gas accumulator model input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @note     This should be followed by a call to the initialize method before calling the step
///           and computeFlows methods.
///
/// @details  Default constructs this gas accumulator model with purposely invalid data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @return     void
///
/// @details    Updates the admittance matrix for this Gunns object.  For the node at port 0
///             (gas port), mAdmittanceMatrix[0] represents the path to ground. The  accumulator
///             model acts as a GunnsFluidPotential, controlling the flow through this path. Refer
///             to buildConductance inside the GunnsFluidAccum class.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  dt  (s)  Time step.
///
/// @details    Compute the molar flow rate to/from the nodes as a result of the network solution,
///             schedules outflows from the nodes, and sets port direction flags for the flow
///             orchestrator.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      dt                    (s)     Delta time.
/// @param[in,out]  forcedPressure        (kPa/s) Desired pressure.
/// @param[in,out]  forcedPressureRate    (kPa/s) Desired pressure change rate.
/// @param[in]      updateTemperature     (--)    Update temperature flag.
///
/// @return         (--)  Force gas chamber complete bool.
///
/// @details        Forces pressure based on either edit or malfunction.
///                 Desired value and rate are limited within "rampValue".
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]     configData   (--) Config Data
/// @param[in]     inputData    (--) Input Data
/// @param[in,out] networkLinks (--) Gunns network links
/// @param[in]     port0        (--) Gunns network port 0
/// @param[in]     port1        (--) Gunns network port 1
///
/// @return     void
///
/// @throws     TsInitializationException
///
/// @details    Initializes this gas accumulator model.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  dt (s)  Delta time.
///
/// @return     Bool
///
/// @details    Override bellows position of the base class. Return boolean to indicate whether
///             override is taking place.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @return         Void
///
/// @details        Sets all edit flags to false and all timers to 0.0.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] flag      (--)    Malfunction activation flag, true activates
/// @param[in] pos       (--)    Fraction, Forced bellows position value
/// @param[in] posRate   (--)    Fraction/sec, Rate for bellows movement
/// @param[in] press     (kPa)   Forced pressure for base class bellows rupture malfunction
/// @param[in] pressRate (kPa/s) Forced pressure rate for base class bellows rupture malfunction
///
/// @details  Sets the bellows rupture malfunction parameters to the given values.
///           Calling this method with default arguments resets the malfunction.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @return     Void
///
/// @details    Update capacitance of the liquid and gas chambers.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  dt    (s)  Delta time.
///
/// @return     Void
///
/// @details    Update gas chamber during nominal conditions. Update mass, pressure and
///             temperature.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  dt               (s)           Delta time.
///
/// @return     Void
///
/// @details    Update effective conductivity of gas side. By dynamically adjusting the
///             conductivity, stability is provided given changing volumes.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  dt           (s) Delta time.
///
/// @return     Void
///
/// @details    Update gas fluid state. Solve mass, temperature, pressure.
///             Note: Temperature edit is called separately from the accumulator base class.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  dt (s)  Delta time.
///
/// @return     Void
///
/// @details    Update gas chamber state. Solve link admittance, conductance, and potential.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  configData  (--)  Configuration data.
/// @param[in]  inputData   (--)  Input data.
///
/// @return     void
///
/// @throws     TsInitializationException
///
/// @details    Validates gas accumulator configuration and input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] flag  (--) Malfunction activation flag, true activates.
/// @param[in] value (--) Malfunction scale factor value.
///
/// @details Sets the inflatability scale malf to the given state.  Calling this method with default
///          arguments resets the malfunction.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] pressure (kPa) Gas pressure inside the balloon.
///
/// @returns double (m3) Computed balloon internal volume.
///
/// @details Compute & returns what the internal balloon volume must be at the given internal
///          pressure, based on its inflatability and exterior pressure.  The returned value is
///          limited between the minimum & maximum volumes of this balloon.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @return     void
///
/// @details    Updates source vector for the accumulator gas chamber. Source vector [0]
///             is for port 0, which is the gas side. Refer to buildPotential inside the
///             GunnsFluidAccum class..
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Default constructs this GUNNS Fluid Balloon link model unit test.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Tests for construction of GUNNS Fluid Balloon link model configuration and input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Tests for GUNNS Fluid Balloon link model default construction.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Tests for GUNNS Fluid Balloon link model nominal initialization without exceptions.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Tests for GUNNS Fluid Balloon link model initialization exceptions.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Tests for GUNNS Fluid Balloon link model restart method.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Tests for GUNNS Fluid Balloon link model step method.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Tests for GUNNS Fluid Balloon link model updateFluid method.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Tests for GUNNS Fluid Balloon link model volume edit.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Tests for GUNNS Fluid Balloon link model temperature and pressure edits.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Tests for GUNNS Fluid Balloon link model edit partial pressure rate and update state.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Tests the computePressureCorrection method with a positively-signed correction.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Tests the computePressureCorrection method with a negatively-signed correction.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Tests the testSpecificPortRules method.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Default constructs this GUNNS Fluid Tank link model unit test.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Tests for construction of GUNNS Fluid Tank link model configuration and input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Tests for GUNNS Fluid Tank link model default construction.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Tests for GUNNS Fluid Tank link model nominal initialization without exceptions.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Tests for GUNNS Fluid Tank link model accessors.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Tests for GUNNS Fluid Tank link model edit temperature and update fluid.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Tests for GUNNS Fluid Tank link model edit temperature and pressure and update fluid.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Tests for GUNNS Fluid Tank link model edit temperature and partial pressure and update
///           fluid.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Tests for GUNNS Fluid Tank link model edit partial pressure rate and update state.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Tests for GUNNS Fluid Tank link model initialization exceptions.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Tests the processing of output data after the GUNNS network has updated.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Tests the dP/dt filter.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Sets up the test article to own its own heat flux, and sets up a default shell
///           temperature.  Verifies the calculation of the heat flux from the shell.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Tests for GUNNS Fluid Tank link model modifiers.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  This is the default constructor for the UtGunnsFluidAccum class.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Test for nominal initialization
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Test for initialization exceptions
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Test for step method
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Test for Compute Flows - incoming flow
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Test for Compute Flows - outgoing flow
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Test for effective conductivity - bellows 100%
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Test for effective conductivity - bellows 0%
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Test for effective conductivity - bellows nominal position
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Test for effective conductivity - bellows within the conductivity scale deadband
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Test for effective conductivity - bellows within the conductivity scale deadband
///           mFillModePressureThreshold > 0.0.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Test for effective conductivity - bellows stuck due to malf
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Test for effective conductivity - bad volumes
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Test compute conductivity - max conductivity == 0 and dt == 0.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Test for Temperature - in flow
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Test for Temperature - out flow
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Test for Temperature - thermal interface
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Test for Bellows edit
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Test for temperature edit
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Test for malfunction = stick bellows
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Test for malfunction = stick bellows to percent
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Test for pressurizer bellows override
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Test for hold accumulator
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Test for testCheckSpecificPortRules
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Test getters and setters
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Test restart method.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  This is the default constructor for the UtGunnsFluidAccumGas class.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Test for step method with changing bellows positions to verify liquid capacitance
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Test for step method with gas-side conductivity limits exceeded.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Test for Compute Flows - Outgoing flow
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Test for pressure edit
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Test for malfunction = bellows rupture
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Test for Liquid side bellows edit - should not affect pressure or temperature.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Zeroes individual fluid constituent rates.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  indexFluid  (--)    Index of the compound in the network fluids.
/// @param[in]  indexTc     (--)    Index of the compound in the network trace compounds.
/// @param[in]  crew        (--)    Number of crew to apply the given rate to.
/// @param[in]  rate        (kg/s)  Compound production rate per crew.
///
/// @returns  double  (kg/s)  Total compound production rate from all crew.
///
/// @details  Checks if the given fluid or trace compound is in the network, and if so, returns the
///           the product of the given number of crew and the compound's rate per crew, otherwise
///           returns zero.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  tc     (--)    Pointer to the internal fluid's trace compounds object.
/// @param[in]  index  (--)    Index of the compound in the trace compounds object.
/// @param[in]  rate   (kg/s)  Produced flow rate of the compound.
///
/// @details  Sets the mass flow rate of the given trace compound index into the given trace
///           compound object.
///
/// @note     The tc pointer must not be NULL, as this method doesn't check it.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]     name                (--)      Name of object
/// @param[in,out] nodes               (--)      Pointer to nodes.
///
/// @details  Default constructs this GUNNS Fluid Metabolic link model configuration data with
///           arguments and obviously invalid default values.
////////////////////////////////////////////////////////////////////////////////////////////////////


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


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]    malfBlockageFlag   (--)    Blockage malfunction flag.
/// @param[in]    malfBlockageValue  (--)    Blockage malfunction fractional value (0-1).
/// @param[in]    flowDemand         (kg/s)  Initial demanded mass flow rate of the link.
/// @param[in]    nNominal           (--)    Number of crew members in NOMINAL state.
/// @param[in]    nSleep             (--)    Number of crew members in SLEEP state.
/// @param[in]    nRecovery0         (--)    Number of crew members in RECOVERY_0 state.
/// @param[in]    nRecovery1         (--)    Number of crew members in RECOVERY_1 state.
/// @param[in]    nRecovery2         (--)    Number of crew members in RECOVERY_2 state.
/// @param[in]    nRecovery3         (--)    Number of crew members in RECOVERY_3 state.
/// @param[in]    nExercise0         (--)    Number of crew members in EXERCISE_0 state.
/// @param[in]    nExercise1         (--)    Number of crew members in EXERCISE_1 state.
///
/// @details  Default constructs this GUNNS Fluid Metabolic link model input data with arguments
///           and obviously invalid default values.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]    that  (--)   Source to copy from.
///
/// @details  Copy constructs this GUNNS Fluid Metabolic 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 Metabolic link model with obviously invalid data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @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 Metabolic link model with configuration and input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      inputData    (--)  Input data.
///
/// @return   void
///
/// @throws   TsInitializationException
///
/// @details  Validates the initialization of this GUNNS Fluid Metabolic link model.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      configData   (--)  Configuration data.
/// @param[in]      inputData    (--)  Input data.
///
/// @throws   TsOutOfBoundsException
///
/// @details  Initializes the derived attributes of this GUNNS Fluid Metabolic link model.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  type  (--)  Fluid constituent type to find the index of.
///
/// @return   int (--) Index of the constituent type in this network's fluid config.
///
/// @details  Finds and returns the index of the given fluid constituent in this network's fluid
///           config, or -1 if the constituent is not in this network.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  type  (--)  Trace compound type to find the index of.
///
/// @return   int (--) Index of the compound type in this network's trace compounds config.
///
/// @details  Finds and returns the index of the given compound in this network's trace compounds
///           config, or -1 if the trace compound is not in this network.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]    dt    (s)    Time step.
///
/// @return   void
///
/// @details  Updates the flow demand for this GUNNS Fluid Metabolic link model.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]    dt         (s)    Time step.
/// @param[in]    flowrate   (kg/s) Mass flow rate (not used).
///
/// @return   void
///
/// @details  Updates the atmosphere for the consumed O2 and produced CO2, H20 and heat based on
///           the number of crew members in each metabolic state.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Updates the internal fluid's trace compounds object with all produced trace compounds
///           for transport to the node.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]    number     (--)  Number of crew members (> 0) to transition.
/// @param[in]    fromState  (--)  Initial metabolic state.
/// @param[in]    toState    (--)  Final metabolic state.
///
/// @return   void
///
/// @details  Transitions the specified crew members from one metabolic state to another, subject
///           to the constraint that the number of crew members in any state must be non-negative.
///           NO_METABOLIC in the fromState or toState arguments can be used to increase or decrease
///           the total # of crew.  If NO_METABOLIC is given as the fromState, then the total # of
///           crew is increased by number, all in the toState.  Likewise, if NO_METABOLIC is given
///           as the toState, then the total # of crew are decreased by number, all from the
///           fromState.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]    port  (--)  The port to be assigned.
/// @param[in]    node  (--)  The desired node to assign the port to.
///
/// @returns  bool (--) True if all rules checks pass
///
/// @details  Checks the requested port & node arguments for validity against rules that apply to
///           a Gunns Fluid Metabolic link model.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] flag  (--) Malfunction activation flag, true activates.
/// @param[in] value (--) (0-1) Malfunction value to override the efficiency.
///
/// @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,out]  nodes                 (--)    Pointer to nodes.
/// @param[in]      maxConductivity       (m2)    Maximum conductivity.
/// @param[in]      expansionScaleFactor  (--)    Scale factor for isentropic gas cooling.
/// @param[in]      gasType               (--)    Fluid type of constituent gas being sorbed.
/// @param[in]      efficiency            (--)    Efficiency of gas adsorbtion from atmosphere.
/// @param[in]      maxAdsorbtionRate     (kg/s)  Maximum mass rate at which gas can be adsorbed from atmosphere.
/// @param[in]      maxAdsorbedMass       (kg)    Maximum amount of adsorbed mass.
/// @param[in]      desorbtionRate        (kg/s)  Mass rate at which gas can be desorbed to atmosphere.
/// @param[in]      efficiencyBias        (1/K)   Bias for the dependency of efficiency on temperature.
/// @param[in]      efficiencyScaleFactor (--)    Scale factor for the dependency of efficiency on temperature.
/// @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 Hot Adsorber link model configuration data.
////////////////////////////////////////////////////////////////////////////////////////////////////


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


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  malfBlockageFlag     (--)  Blockage malfunction flag.
/// @param[in]  malfBlockageValue    (--)  Blockage malfunction fractional value (0-1).
/// @param[in]  desorbtionCycle      (--)  Desorbtion cycle flag.
/// @param[in]  adsorbedMass         (--)  Adsorbed mass in the adsorber.
/// @param[in]  wallTemperature      (K)   Tube wall temperature for thermal convection.
/// @param[in]  tcEfficiency         (--)  Adsorption/desorption efficiency for trace compounds.
/// @param[in]  tcMaxAdsorbedMass    (kg)  Maximum amount of adsorbed mass of trace compounds.
/// @param[in]  tcAdsorbedMass       (kg)  Initial amount of adsorbed mass of trace compounds.
/// @param[in]  malfEfficiencyFlag   (--)  Initial efficiency malfunction flag.
/// @param[in]  malfEfficiencyValue  (--)  Initial efficiency malfunction value.
///
/// @details  Default constructs this GUNNS Fluid Hot Adsorber link model input data with arguments
///           and obviously invalid default values.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      that  (--)  Source to copy from.
///
/// @details  Copy constructs this GUNNS Fluid Hot Adsorber 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 Hot Adsorber link model with obviously invalid data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @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 Hot Adsorber link model with configuration and input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @return   (--)  Efficiency of the sorbtion (-1 to 1).
///
/// @details  Computes and returns the efficiency of the specified sorbtion linearly dependent on
///           temperature.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]     name           (--) Name of object.
/// @param[in,out] nodes          (--) Pointer to network nodes list.
/// @param[in]     maxConductance (m2) Max conductance of the flow-thru path.
/// @param[in]     fluidTypes     (--) Fluid types to be separated.
/// @param[in]     fluidPorts     (--) Port assignments for each separated fluid.
/// @param[in]     tcTypes        (--) Trace compound types to be separated.
/// @param[in]     tcPorts        (--) Port assignments for each separated trace compound.
///
/// @details  Default constructs this GUNNS Fluid Multi-Separator link model configuration data with
///           arguments and obviously invalid default values.
////////////////////////////////////////////////////////////////////////////////////////////////////


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


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] malfBlockageFlag  (--) Blockage malfunction flag.
/// @param[in] malfBlockageValue (--) Blockage malfunction fractional value (0-1).
/// @param[in] fluidFractions    (--) For each separated fluid type, initial thru-flow fraction that is removed.
/// @param[in] tcFractions       (--) For each separated trace compound, initial thru-flow fraction that is removed.
///
/// @details  Default constructs this GUNNS Fluid Multi-Separator link model input data with
///           arguments and obviously invalid default values.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] that (--) Source object to copy.
///
/// @details  Copy constructs this GUNNS Fluid Multi-Separator 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 Multi-Separator link model with obviously invalid
///           data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Deletes dynamic memory allocations.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]     configData   (--) Configuration data.
/// @param[in]     inputData    (--) Input data.
/// @param[in,out] networkLinks (--) Network links vector.
/// @param[in]     portsVector  (--) Vector of node numbers the link ports connect to.
///
/// @throws   TsInitializationException
///
/// @details  Initializes this GUNNS Fluid Multi-Separator link model with configuration and input
///           data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  configData   (--) Configuration data.
/// @param[in]  inputData    (--) Input data.
///
/// @throws   TsInitializationException
///
/// @details  Validates the initialization of this GUNNS Fluid Multi-Separator link model for
///           paramters not associated with the separated fluids.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  configData   (--) Configuration data.
/// @param[in]  inputData    (--) Input data.
///
/// @throws   TsInitializationException
///
/// @details  Validates the initialization of this GUNNS Fluid Multi-Separator link model for
///           paramters associated with the separated bulk fluids.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]  configData   (--) Configuration data.
/// @param[in]  inputData    (--) Input data.
///
/// @throws   TsInitializationException
///
/// @details  Validates the initialization of this GUNNS Fluid Multi-Separator link model for
///           paramters associated with the separated trace compounds.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @returns  double  (kg*mol/kPa/s)  Linearized molar conductance.
///
/// @details  Applies a linearization of the fluid momentum equation to create the non-linear
///           relationship between flow and pressure over multiple network steps.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] dt (--) Not used.
///
/// @details  Computes flow rates from the network solution, including bulk through-flow and the
///           separated fluid rates.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Computes the molar flux rate of the bulk flow into the link before any fluids are
///           separated.  This is the same as GunndFluidConductor.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] dt (--) Not used.
///
/// @details  Transports flows to and from the nodes.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @returns  int (--) Index of the fluid type in the separated fluid types array.
///
/// @throws   TsOutOfBoundsException
///
/// @details  Returns the index of the given fluid type in our separated types.  Note this is not
///           the same as the index in the network's fluid types.  Throws exception if the given
///           type is not in the network or not one of our separated types.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @returns  int (--) Index of the type in the separated trace compound types array.
///
/// @throws   TsOutOfBoundsException
///
/// @details  Returns the index of the given trace compound type in our separated types.  Note this
///           is not the same as the index in the network's trace compound types.  Throws exception
///           if the given type is not in the network or not one of our separated types.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]     name                 (--) Name of object.
/// @param[in,out] 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 Multiple Constituent Adsorber link config data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] type                  (--)       The compound that is sorbed.
/// @param[in] maxAdsorbedMass       (kg)       Maximum mass that can be adsorbed.
/// @param[in] efficiencyCoeff0      (--)       Sorption efficiency.
/// @param[in] efficiencyCoeff1      (1/K)      Sorption efficiency temperature coefficient.
/// @param[in] desorbPartialPressure (kPa)      Partial pressure at switch between adsorption and desorption.
/// @param[in] desorbRateFactor      (kg/s/kPa) Desorption rate dependence on pressure.
/// @param[in] heatOfAdsorptio;      (kJ/kg)    Enthalpy change of reaction in adsorption direction.
/// @param[in] taperOffFlag          (--)       Whether sorption rate diminishes as adsorbed mass approaches limits.
/// @param[in] dependentType         (--)       Optional other compound on which this compound's sorption depends.
/// @param[in] malfEfficiencyFlag    (--)       Initial efficiency malfunction flag.
/// @param[in] malfEfficiencyValue   (--)       Initial efficiency malfunction value.
/// @param[in] adsorbedMass          (kg)       Initial adsorbed mass of this compound in the adsorber.
/// @param[in] breakthroughExp       (--)       Exponent value for breakthrough adsorption.
///
/// @details  Adds a new compound with the given properties to the compounds container in this
///           GUNNS Fluid Multiple Constituent Adsorber link config 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 Multiple Constituent Adsorber 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 Multiple Constituent Adsorber link model.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @details  Default destructs this GUNNS Fluid Multiple Constituent Adsorber 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 Multiple Constituent Adsorber link model with configuration and input data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] configData (--) Configuration data.
/// @param[in] inputData  (--) Input data.
///
/// @throws    TsInitializationException
///
/// @details   Validates the initialization of this GUNNS Fluid Multiple Constituent Adsorber link.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]   dt         (s)     Time step.
/// @param[in]   flowRate   (kg/s)  Mass flow rate (not used).
///
/// @return      void
///
/// @details     Update the internal fluids for constituent mass removed by adsorbtion or added by desorbtion.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] port (--) The port to be assigned
/// @param[in] node (--) The desired node to assign the port to
///
/// @returns  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 GunnsFluidMultiAdsorber must not map either port to a liquid node.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]     name             (--) Name of object.
/// @param[in,out] nodes            (--) Pointer to network nodes.
/// @param[in]     cycleVolume      (--) Volume of fluid displaced per cycle.
/// @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 Displacement Pump link model configuration data with
///           arguments.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] that (--) Object to copy.
///
/// @details  Copy constructs this GUNNS Gas Displacement Pump link model configuration data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] malfBlockageFlag  (--)             Blockage malfunction flag.
/// @param[in] malfBlockageValue (--)             Blockage malfunction fractional value (0-1).
/// @param[in] flowDemand        (kg/s)           Demanded mass flow rate of the link.
/// @param[in] motorSpeed        (revolution/min) Initial speed of the motor.
/// @param[in] wallTemperature   (K)              Initial impeller wall temperature.
///
/// @details  Default constructs this GUNNS Gas Displacement Pump link model input data with
///           arguments.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] that (--) Source to copy from.
///
/// @details  Copy constructs this GUNNS Gas Displacement Pump 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 Displacement Pump link model with obviously invalid
///           data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @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 GUNNS Gas Displacement Pump link model with configuration and input
///           data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      configData   --  Configuration data.
/// @param[in]      inputData    --  Input data.
///
/// @returns  void
///
/// @throws   TsInitializationException
///
/// @details  Validates the initialization of this GUNNS Gas Displacement Pump link model.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] dt (s) Time step.
///
/// @returns  void
///
/// @details  Updates the link flow rate through this Gas Displacement Pump.
////////////////////////////////////////////////////////////////////////////////////////////////////


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


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]     name                   (--)    Name of object
/// @param[in,out] nodes                  (--)    Pointer to nodes
/// @param[in]     heaterEfficiency       (--)    (0-1) Heater efficiency
///
/// @details  Default constructs this GUNNS Fluid Heater link model configuration data with
///           arguments and obviously invalid default values.
////////////////////////////////////////////////////////////////////////////////////////////////////


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


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]    malfBlockageFlag     (--)   Blockage malfunction flag
/// @param[in]    malfBlockageValue    (--)   Blockage malfunction fractional value (0-1)
/// @param[in]    heaterPower          (W)    Initial heater power consumed
///
/// @details  Default constructs this GUNNS Fluid Heater link model input data with
///           arguments and obviously invalid default values.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]    that  (--)   Source to copy from.
///
/// @details  Copy constructs this GUNNS Fluid Heater 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 Heater link model with obviously invalid
///           data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      configData   (--)  Configuration data.
/// @param[in]      inputData    (--)  Input data.
/// @param[in,out]  links        (--)  Link vector.
/// @param[in]      port0        (--)  feedwater supply port map index.
/// @param[in]      port1        (--)  vapor vent port map index.
///
/// @returns  void
///
/// @throws   TsInitializationException
///
/// @details  Initializes this GUNNS Fluid Heater link model with configuration and input
///           data.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      configData   (--)  Configuration data.
/// @param[in]      inputData    (--)  Input data.
///
/// @returns  void
///
/// @throws   TsInitializationException
///
/// @details  Validates the initialization of this GUNNS Fluid Heater link model.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] dt (s) Execution time step (not used).
///
/// @returns  void
///
/// @details  Method to update the fluid heater state during the network step.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] dt (s) Execution time step (not used).
///
/// @returns  void
///
/// @details  Method to update the link flows during the network step.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in] dt (s) Execution time step (not used).
///
/// @returns  void
///
/// @details  Method to transport heatflux between the ports.
////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]      name                  (--)    Name of object.
/// @param[in,out]  nodes                 (--)    Pointer to nodes.
/// @param[in]      liquidType            (--)    Fluid type of constituent liquid being changed.
/// @param[in]      gasType               (--)    Fluid type of constituent gas being changed.
/// @param[in]      efficiency            (--)    Power Efficiency of the modeled device.
///
/// @details  Default constructs this GUNNS Fluid Phase Change Source link model configuration data
///           with arguments and obviously invalid default values.
////////////////////////////////////////////////////////////////////////////////////////////////////


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


////////////////////////////////////////////////////////////////////////////////////////////////////
/// @param[in]    malfBlockageFlag   (--)  Blockage malfunction flag.
/// @param[in]    malfBlockageValue  (--)  Blockage malfunction fractional value (0-1).
/// @param[in]    powerInput         (W)   Initial power input to the link.
///
/// @details  Default constructs this GUNNS Fluid Phase Change Source link model input data with
///           arguments and obviously invalid default values.
////////////////////////////////////////////////////////////////////////////////////////////////////