/// <summary>
        /// Calculate Structural Class based on PN-EN 1992-1-1 Table 4.3N
        /// </summary>
        public ConcreteCoverOutput CalculateStructuralClass(ConcreteCoverInput inputData)
        {
            this.inputData = inputData;

            ExposureClass exposureClass = ConvertStringToExposureClass(this.inputData.ExposureClass);
            ConcreteClass concreteClass = ConvertStringToConcreteClass(this.inputData.ConcreteClass);

            this.outputData.StructuralClass = this.inputData.BaseStructuralClass;

            // Check Exposure Class
            if (exposureClass == ExposureClass.X0 || exposureClass == ExposureClass.XC1 ||
                exposureClass == ExposureClass.XC2 || exposureClass == ExposureClass.XC3 ||
                exposureClass == ExposureClass.XC4 || exposureClass == ExposureClass.XD1 ||
                exposureClass == ExposureClass.XD2 || exposureClass == ExposureClass.XS1 ||
                exposureClass == ExposureClass.XD3 || exposureClass == ExposureClass.XS2 ||
                exposureClass == ExposureClass.XS3
                )
            {
                // Modification based on Design Working Life of 100 years
                if (this.inputData.DesignWorkingLifeOf100Years)
                {
                    //this.StructuralClass = (StructuralClass)((int)StructuralClass + 2).Clamp((int)StructuralClass.S1, (int)StructuralClass.S6);
                    this.outputData.StructuralClass = ((int)ConvertStringToStructuralClass(this.outputData.StructuralClass) + 2).ToString();
                }

                // Modification based on Concrete Class and Exposure Class
                if ((concreteClass >= ConcreteClass.C30_37 && (exposureClass == ExposureClass.X0 || exposureClass == ExposureClass.XC1)) ||
                    (concreteClass >= ConcreteClass.C35_45 && (exposureClass == ExposureClass.XC2 || exposureClass == ExposureClass.XC3)) ||
                    (concreteClass >= ConcreteClass.C40_50 && (exposureClass == ExposureClass.XC4 || exposureClass == ExposureClass.XD1 || exposureClass == ExposureClass.XD2 || exposureClass == ExposureClass.XS1)) ||
                    (concreteClass >= ConcreteClass.C45_55 && (exposureClass == ExposureClass.XD3 || exposureClass == ExposureClass.XS2 || exposureClass == ExposureClass.XS3)))
                {
                    //this.StructuralClass = (StructuralClass)((int)StructuralClass - 1).Clamp((int)StructuralClass.S1, (int)StructuralClass.S6);
                    this.outputData.StructuralClass = ((int)ConvertStringToStructuralClass(this.outputData.StructuralClass) - 1).ToString();
                }

                // Modification based on Member With Slab Geometry
                if (this.inputData.MemberWithSlabGeometry)
                {
                    //this.StructuralClass = (StructuralClass)((int)StructuralClass - 1).Clamp((int)StructuralClass.S1, (int)StructuralClass.S6);
                    this.outputData.StructuralClass = ((int)ConvertStringToStructuralClass(this.outputData.StructuralClass) - 1).ToString();
                }

                // Modification based on Member With Slab Geometry
                if (this.inputData.SpecialQualityControlOfTheConcreteProductionEnsured)
                {
                    //this.StructuralClass = (StructuralClass)((int)StructuralClass - 1).Clamp((int)StructuralClass.S1, (int)StructuralClass.S6);
                    this.outputData.StructuralClass = ((int)ConvertStringToStructuralClass(this.outputData.StructuralClass) - 1).ToString();
                }
            }

            this.outputData.StructuralClass = ((int)ConvertStringToStructuralClass(this.outputData.StructuralClass)).Clamp((int)StructuralClass.S1, (int)StructuralClass.S6).ToString();

            return(this.outputData);
        }
Beispiel #2
0
        public void CalculateStructuralClass(string testCaseNumber, StructuralClass structureClass,
                                             bool designWorkingLifeOf100Years, ExposureClass exposureClass, ConcreteClass concreteClass,
                                             bool memberWithSlabGeometry, bool specialQualityControlOfTheConcreteProductionEnsured,
                                             string expectedStructuralClass)
        {
            ConcreteCoverInput inputData = new ConcreteCoverInput()
            {
                // Recommended Structural Class when design working life is 50 years
                BaseStructuralClass         = ConcreteCoverCalculator.ConvertStructuralClassToString(structureClass),
                DesignWorkingLifeOf100Years = designWorkingLifeOf100Years,
                ExposureClass          = ConcreteCoverCalculator.ConvertExposureClassToString(exposureClass),
                ConcreteClass          = ConcreteCoverCalculator.ConvertConcreteClassToString(concreteClass),
                MemberWithSlabGeometry = memberWithSlabGeometry,
                SpecialQualityControlOfTheConcreteProductionEnsured = specialQualityControlOfTheConcreteProductionEnsured
            };

            ConcreteCoverCalculator coverCalculator = new ConcreteCoverCalculator();

            var result = coverCalculator.CalculateStructuralClass(inputData);

            Assert.AreEqual(expectedStructuralClass, "S" + result.StructuralClass);
        }
 /// <summary>
 /// Convert exposure class to string.
 /// </summary>
 /// <param name="exposureClass"></param>
 /// <returns></returns>
 public static string ConvertExposureClassToString(ExposureClass exposureClass)
 {
     return(exposureClass.ToString());
 }
        public void CalculateMinimumCoverDueToEnvironmentalConditionsTests(int testCaseNumber, ExposureClass exposureClass,
                                                                           StructuralClass structuralClass, double expectedCover)
        {
            ConcreteCoverInput inputData = new ConcreteCoverInput()
            {
                ExposureClass = ConcreteCoverCalculator.ConvertExposureClassToString(exposureClass),
            };

            ConcreteCoverCalculator coverCalculator = new ConcreteCoverCalculator();

            coverCalculator.outputData.StructuralClass = ConcreteCoverCalculator.ConvertStructuralClassToString(structuralClass);

            var result = coverCalculator.CalculateMinimumCoverDueToEnvironmentalConditions(inputData);

            Assert.AreEqual(expectedCover, result.MinimumCoverDueToEnvironmentalConditions);
        }