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; } }
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); }
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); }
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); }
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); }