Ejemplo n.º 1
0
        public void CalculateTreatmentEfficiency(double RD, double NDCIACN, double DCIAP)
        {
            // RD - Retention Depth
            // NDCIACN Non Directly connected CN
            // DCIAP - Directly Connected Impervious Area Perccent
            RetentionVolume = RD * ContributingArea / 12;       // Acre-feet
            if ((RainfallZone == "") || (RainfallZone == null))
            {
                return;
            }

            // These are all in %
            double t = RetentionEfficiencyLookupTables.CalculateEfficiency(RD,
                                                                           NDCIACN,
                                                                           DCIAP,
                                                                           RainfallZone);

            HydraulicCaptureEfficiency   = t;
            ProvidedNTreatmentEfficiency = t + DelayEfficiency;
            ProvidedPTreatmentEfficiency = t + DelayEfficiency;

            if (ProvidedNTreatmentEfficiency > 100)
            {
                ProvidedNTreatmentEfficiency = 100;
            }
            if (ProvidedPTreatmentEfficiency > 100)
            {
                ProvidedPTreatmentEfficiency = 100;
            }
        }
Ejemplo n.º 2
0
        public override Double[] plotY(double ratio, string p = "Nitrogen")
        {
            Double[] x = plotX();
            Double[] y = new Double[15];

            double rd = ratio * 12 * BufferDepth * SoilStorageCapacity; // Retention Depth (in over watershed)

            base.CalculateMediaMixTreatmentEfficiency();

            for (int i = 0; i < 14; i++)
            {
                double t = RetentionEfficiencyLookupTables.CalculateEfficiency(rd,
                                                                               WatershedNDCIACurveNumber,
                                                                               WatershedDCIAPercent,
                                                                               RainfallZone);

                double e = (p == "Nitrogen" ?
                            VNBEfficiencyTables.NitrogenRemovalEfficiency(BufferWidthSlope, x[i]) :
                            VNBEfficiencyTables.PhosphorusRemovalEfficiency(BufferWidthSlope, x[i]));

                double m = (p == "Nitrogen" ?
                            MediaNPercentReduction :
                            MediaPPercentReduction);

                y[i] = t * m / 100 + (100 - t) * e / 100;
            }
            return(y);
        }
Ejemplo n.º 3
0
 public override Double[] plotY()
 {
     Double[] x = plotX();
     Double[] y = new Double[21];
     for (int i = 0; i <= 20; i++)
     {
         y[i] = RetentionEfficiencyLookupTables.CalculateEfficiency(x[i],
                                                                    WatershedNDCIACurveNumber,
                                                                    WatershedDCIAPercent,
                                                                    RainfallZone);
     }
     return(y);
 }
Ejemplo n.º 4
0
        public double CaclulateRequiredTreatmentDepth(double targetEfficiency)
        {
            double count     = 0;
            double increment = 0.1;       // Starting Increment
            double accuracy  = 0.001;

            double d1 = 0.25;              // Starting Depth

            if (targetEfficiency <= 0)
            {
                return(0.0);
            }
            bool exit = false;

            while (!exit)
            {
                double e = RetentionEfficiencyLookupTables.CalculateEfficiency(d1,
                                                                               WatershedNDCIACurveNumber,
                                                                               WatershedDCIAPercent,
                                                                               RainfallZone);

                if (e > targetEfficiency)
                {
                    d1        -= increment;
                    increment /= 10.0;
                }
                else
                {
                    d1 += increment;
                }

                if (Math.Abs(e - targetEfficiency) < accuracy)
                {
                    exit = true;
                }

                count++;
                if (count > 10000)
                {
                    exit = true;                  // failure to converge
                }
                if (d1 >= 4)
                {
                    d1 = 4; exit = true;
                }
            }
            return(d1);
        }
Ejemplo n.º 5
0
        public double CalculateEffectiveRetentionTreatmentEfficiency()
        {
            RetentionDepth = getEquivalentRetentionDepth();           // Retention Depth
            double NDCIACN = WatershedNDCIACurveNumber;               // Non Directly connected CN
            double DCIAP   = WatershedDCIAPercent;                    // Directly Connected Impervious Area Perccent

            RetentionVolume = RetentionDepth * ContributingArea / 12; // Acre-feet
            if ((RainfallZone == "") || (RainfallZone == null))
            {
                return(0.0);
            }

            // These are all in %
            double t = RetentionEfficiencyLookupTables.CalculateEfficiency(RetentionDepth,
                                                                           NDCIACN,
                                                                           DCIAP,
                                                                           RainfallZone);

            return(t);
        }