/// <summary>
        /// Calculate the flow with the input data .
        /// </summary>
        /// <param name="data">
        /// The input for the flow calculation. The result flow is also return through the data to the caller. 
        /// </param>
        public void Calculate( PipePlumbingFixtureFlowData data )
        {
            double dResult = 0.0;

              //The flow configuration mode of the pipe: -1: invalid;  0: Preset; 1: Fixture Units
              if( data.FlowConfiguration == PipeFlowConfigurationType.Preset )
            dResult = presetFlow( data.DimensionFlow );
              else if( data.FlowConfiguration == PipeFlowConfigurationType.Demand )
            dResult = getFlowFromFixtureUnits( data.FixtureUnits, data.FlowConversionMode );

              data.Flow = dResult;
        }
        /// <summary>
        /// Calculate the flow with the input data .
        /// </summary>
        /// <param name="data">
        /// The input for the flow calculation. The result flow is also return through the data to the caller.
        /// </param>
        public void Calculate(PipePlumbingFixtureFlowData data)
        {
            double dResult = 0.0;

            //The flow configuration mode of the pipe: -1: invalid;  0: Preset; 1: Fixture Units
            if (data.FlowConfiguration == PipeFlowConfigurationType.Preset)
            {
                dResult = presetFlow(data.DimensionFlow);
            }
            else if (data.FlowConfiguration == PipeFlowConfigurationType.Demand)
            {
                dResult = getFlowFromFixtureUnits(data.FixtureUnits, data.FlowConversionMode);
            }

            data.Flow = dResult;
        }