예제 #1
0
        public new void Calculate()
        {
            RetentionVolume = ((WellDepth * WellLength * WellWidth * SoilStorageCapacity) + (WellLength * WellWidth * WellStorage)) * NumWells;

            if (ContributingArea != 0.0)
            {
                RetentionDepth = 12.0 * RetentionVolume / (ContributingArea * 43560.0);
            }

            base.CalculateTreatmentEfficiency(RetentionDepth, WatershedNDCIACurveNumber, WatershedDCIAPercent);

            if (RetentionOrDetention == sDetention)
            {
                MediaNPercentReduction = MediaMix.TNRemoval(this.MediaMixType);
                MediaPPercentReduction = MediaMix.TPRemoval(this.MediaMixType);

                ProvidedNTreatmentEfficiency = ProvidedNTreatmentEfficiency * MediaNPercentReduction / 100;
                ProvidedPTreatmentEfficiency = ProvidedPTreatmentEfficiency * MediaPPercentReduction / 100;
            }

            base.CaclulateRemainingEfficiency();
        }
예제 #2
0
        public void CalculateMediaMixTreatmentEfficiency()
        {
            // If Groundwater Calculations are required then calculates the efficiency
            // and reductions of groundwater discharge.

            MediaNPercentReduction        = MediaMix.TNRemoval(this.MediaMixType, MediaNPercentReduction);
            MediaPPercentReduction        = MediaMix.TPRemoval(this.MediaMixType, MediaPPercentReduction);
            PostMediaNTreatmentEfficiency = 0;
            PostMediaPTreatmentEfficiency = 0;

            //if (BMPType == BMPTrainsProject.sVegetatedFilterStrip)
            //{
            //    PostMediaNTreatmentEfficiency = 0; MediaNPercentReduction = 0;
            //    PostMediaPTreatmentEfficiency = 0; MediaPPercentReduction = 0;
            //    return;
            //}

            if (MediaNPercentReduction != 0)
            {
                PostMediaNTreatmentEfficiency = 100 * (0.3 * ProvidedNTreatmentEfficiency / 100 + 0.7 * ProvidedNTreatmentEfficiency / 100 * MediaNPercentReduction / 100);
                //GroundwaterNMassDischarge =
            }
            else
            {
                PostMediaNTreatmentEfficiency = 0;// ProvidedNTreatmentEfficiency;
            }

            if (MediaPPercentReduction != 0)
            {
                PostMediaPTreatmentEfficiency = 100 * (0.3 * ProvidedPTreatmentEfficiency / 100 + 0.7 * ProvidedPTreatmentEfficiency / 100 * MediaPPercentReduction / 100);
                //GroundwaterPMassDischarge =
            }
            else
            {
                PostMediaPTreatmentEfficiency = 0;// ProvidedPTreatmentEfficiency;
            }
        }
예제 #3
0
        public new void Calculate()
        {
            base.CalculateTreatmentEfficiency(RetentionDepth, WatershedNDCIACurveNumber, WatershedDCIAPercent);
            HydraulicCaptureEfficiency = ProvidedNTreatmentEfficiency; // in over watershed
            bool WetD = (WetDetentionEffluent == "Yes" ? true : false);

            if ((MediaMixType == MediaMix.None) || (MediaMixType == MediaMix.NotSpecified))
            {
                ProvidedNTreatmentEfficiency = 0;
                ProvidedPTreatmentEfficiency = 0;
            }
            else
            {
                MediaNPercentReduction       = MediaMix.TNRemoval(MediaMixType, MediaNPercentReduction, WetD);
                ProvidedNTreatmentEfficiency = HydraulicCaptureEfficiency * MediaNPercentReduction / 100;
                MediaPPercentReduction       = MediaMix.TPRemoval(MediaMixType, MediaPPercentReduction, WetD);
                ProvidedPTreatmentEfficiency = HydraulicCaptureEfficiency * MediaPPercentReduction / 100;
                if (WatershedArea != 0)
                {
                    TreatmentMediaVolume = RetentionDepth / WatershedArea / 12;
                }
            }

            RechargeRate = RunoffVolume * 0.3258724 * HydraulicCaptureEfficiency / 100;
            if (RechargeRate != 0)
            {
                GroundwaterTNConcentration = BMPNMassLoadOut / (RechargeRate * 3.785);
            }
            if (RechargeRate != 0)
            {
                GroundwaterTPConcentration = BMPPMassLoadOut / (RechargeRate * 3.785);
            }

            base.CaclulateRemainingEfficiency();

            base.CalculateMassLoading();
        }
예제 #4
0
        public new void Calculate()
        {
            VolumeStorageCF = VoidFraction * MediaVolume + WaterAboveMedia;
            VolumeStorageIn = VolumeStorageCF * 12 / (43560 * ContributingArea);


            // First Calculate the efficiency of the retention
            RetentionDepth          = VolumeStorageIn; // Treatment Volume is volume used in Storage Calculation
            ProvidedRetentionVolume = ContributingArea * RetentionDepth / 12;
            TreatmentMediaDepth     = ProvidedRetentionVolume * 12 / ContributingArea;
            if (MediaMix.GPM_SF(MediaMixType) != 0)
            {
                MinimumMediaArea = 12 * VolumeStorageCF / (2 * MediaMix.GPM_SF(MediaMixType) * 96.15 * 24);
            }
            else
            {
                MinimumMediaArea = 0;
            }
            base.Calculate();
            if (RetentionOrDetention == RainGarden.sRetention)
            {
                ProvidedNTreatmentEfficiency = HydraulicCaptureEfficiency;
                ProvidedPTreatmentEfficiency = HydraulicCaptureEfficiency;
            }

            // The input is Retention Depth in inches over watershed
            if (RetentionOrDetention == RainGarden.sDetention)
            {
                if (MediaMixType != MediaMix.User_Defined)
                {
                    MediaNPercentReduction = MediaMix.TNRemoval(MediaMixType);
                    MediaPPercentReduction = MediaMix.TPRemoval(MediaMixType);
                }
                ProvidedNTreatmentEfficiency = ProvidedNTreatmentEfficiency * MediaNPercentReduction / 100;
                ProvidedPTreatmentEfficiency = ProvidedPTreatmentEfficiency * MediaPPercentReduction / 100;
            }
        }
예제 #5
0
 public static bool isDefined(string mix)
 {
     if (mix == NotSpecified)
     {
         return(false);
     }
     if (mix == None)
     {
         return(false);
     }
     if (mix == "")
     {
         return(false);
     }
     if (mix == null)
     {
         return(false);
     }
     if (!MediaMix.MediaMixes().Keys.Contains <string>(mix))
     {
         return(false);
     }
     return(true);
 }
예제 #6
0
 public static void PopulateComboBox(ComboBox cb)
 {
     cb.DataSource    = new System.Windows.Forms.BindingSource(MediaMix.MediaMixes(), null);
     cb.DisplayMember = "Key";
     cb.ValueMember   = "Key";
 }