using StructureHelperCommon.Infrastructures.Enums; using StructureHelperCommon.Infrastructures.Exceptions; using StructureHelperCommon.Models.Materials.Libraries; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace StructureHelperLogics.Models.Materials { public static class PartialCoefficientFactory { public static List GetDefaultConcreteSafetyFactors(CodeTypes codeType) { if (codeType == CodeTypes.SP63_2018) return GetConcreteFactorsSP63_2018(); else if (codeType == CodeTypes.EuroCode_2_1990) return GetConcreteFactorsEC2_1990(); else throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknown + ": " + codeType); } public static List GetDefaultFRSafetyFactors(CodeTypes codeType, MaterialTypes materialType) { if (codeType == CodeTypes.SP164_2014) return GetFRFactorsSP164_2014(materialType); else throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknown + ": " + codeType); } private static List GetConcreteFactorsEC2_1990() { List factors = new List(); return factors; } private static List GetConcreteFactorsSP63_2018() { List factors = new List(); IMaterialSafetyFactor coefficient; coefficient = ConcreteFactorsFactory.GetFactor(ConcreteFactorType.LongTermFactor); coefficient.Take = true; factors.Add(coefficient); coefficient = ConcreteFactorsFactory.GetFactor(ConcreteFactorType.PlainConcreteFactor); coefficient.Take = false; factors.Add(coefficient); coefficient = ConcreteFactorsFactory.GetFactor(ConcreteFactorType.BleedingFactor); coefficient.Take = false; factors.Add(coefficient); return factors; } private static List GetFRFactorsSP164_2014(MaterialTypes materialType) { List factors = new List(); if (materialType == MaterialTypes.CarbonFiber) { GetCarbonFactors(factors); } else if (materialType == MaterialTypes.GlassFiber) { GetGlassFactors(factors); } else throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknown + ": " + materialType); return factors; } private static void GetCarbonFactors(List factors) { IMaterialSafetyFactor coefficient; coefficient = FRFactorsFactory.GetCarbonFactor(FRFactorType.ConditionFactor); coefficient.Take = true; factors.Add(coefficient); coefficient = FRFactorsFactory.GetCarbonFactor(FRFactorType.LongTermFactor); coefficient.Take = true; factors.Add(coefficient); } private static void GetGlassFactors(List factors) { IMaterialSafetyFactor coefficient; coefficient = FRFactorsFactory.GetGlassFactor(FRFactorType.ConditionFactor); coefficient.Take = true; factors.Add(coefficient); coefficient = FRFactorsFactory.GetGlassFactor(FRFactorType.LongTermFactor); coefficient.Take = true; factors.Add(coefficient); } } }