示例#1
0
        // TODO: Implement Time Dependence Material Properties
        //TABLE:  "MATERIAL PROPERTIES 05A - TIME DEPENDENCE - CEB-FIP 90"
        //Material=4000Psi-1   CementCoeff=0.25   RelHumid=50   NotionSize=0.1   BetaSC=5   ShrinkStart=0
        //Material=MAT-4   CementCoeff=0.25   RelHumid=50   NotionSize=0.1   BetaSC=5   ShrinkStart=1

        //TABLE:  "MATERIAL PROPERTIES 05B - TIME DEPENDENCE - CEB-FIP 2010"
        //Material=MAT-5   RelHumid=50   ShrinkStart=2   CementType=42.5N

        //TABLE:  "MATERIAL PROPERTIES 05C - TIME DEPENDENCE - ACI 209R-92"
        //Material=MAT-2   RelHumid=50   ShrinkStart=0   A=2.3   Beta=0.92   CuringType=Moist Slump = 0.06858   FineAgg=50   AirContent=6   CementCont=700

        //TABLE:  "MATERIAL PROPERTIES 05D - TIME DEPENDENCE - USER STIFFNESS"
        //Material=MAT-10   Age=28   Multiplier=1

        //TABLE:  "MATERIAL PROPERTIES 05E - TIME DEPENDENCE - USER CREEP"
        //Material=MAT-10   A=1   B=1   Ho=0.1   AgeAtLoad=1   Days=0   CreepCoeff=0

        //TABLE:  "MATERIAL PROPERTIES 05F - TIME DEPENDENCE - USER SHRINKAGE"
        //Material=MAT-10   A=1   B=1   Ho=0.1   Age=0   ShrinkStrn=0

        //TABLE:  "MATERIAL PROPERTIES 05G - TIME DEPENDENCE - JTG D62-2004"
        //Material=MAT-8   RelHumid=50   ShrinkStart=1   CementCoeff=0.25

        //TABLE:  "MATERIAL PROPERTIES 05H - TIME DEPENDENCE - EUROCODE 2-2004"
        //Material=MAT-6   RelHumid=50   ShrinkStart=0   CementType="Class R"

        //TABLE:  "MATERIAL PROPERTIES 05I - TIME DEPENDENCE - AS 3600-2009"
        //Material=MAT-3   CompFactA=2.3   CompFactB=0.92   CreepCoeff=4.2   Environment="Temperate Inland"   DryShrink=0.0008

        //TABLE:  "MATERIAL PROPERTIES 05J - TIME DEPENDENCE - GL2000"
        //Material=MAT-7   RelHumid=50   ShrinkStart=1   CementType="Type II"

        //TABLE:  "MATERIAL PROPERTIES 05K - TIME DEPENDENCE - NZS 3101-2006"
        //Material=MAT-9   DeltaF=10   CementType=42.5N RelHumid = 50   CreepCoeff=4.2   AggTypeFact=1   DryShrink=0.0008


        //TABLE:  "MATERIAL PROPERTIES 06 - DAMPING PARAMETERS"
        /// <summary>
        /// Sets the material properties 06 damping parameters.
        /// </summary>
        /// <param name="model">The model.</param>
        /// <param name="table">The table.</param>
        private static void setMATERIAL_PROPERTIES_06_DAMPING_PARAMETERS(Model model, List <Dictionary <string, string> > table)
        {
            foreach (Dictionary <string, string> tableRow in table)
            {
                string   name     = tableRow["Material"];
                Material material = model.Components.Materials[name];
                MaterialByTemperature materialByTemperature = getMaterialProperties <MaterialByTemperature>(tableRow, material);
                materialByTemperature.DampingProperties.HystereticStiffnessCoefficient = Adaptor.toDouble(tableRow["HysStiff"]);
                materialByTemperature.DampingProperties.HystereticMassCoefficient      = Adaptor.toDouble(tableRow["HysMass"]);
                materialByTemperature.DampingProperties.ViscousStiffnessCoefficient    = Adaptor.toDouble(tableRow["VisStiff"]);
                materialByTemperature.DampingProperties.ViscousMassCoefficient         = Adaptor.toDouble(tableRow["VisMass"]);
                materialByTemperature.DampingProperties.ModalDampingRatio = Adaptor.toDouble(tableRow["ModalRatio"]);
            }
        }
示例#2
0
        /// <summary>
        /// Sets the material properties 04 user stress strain curves.
        /// </summary>
        /// <param name="model">The model.</param>
        /// <param name="table">The table.</param>
        private static void setMATERIAL_PROPERTIES_04_USER_STRESS_STRAIN_CURVES(Model model, List <Dictionary <string, string> > table)
        {
            foreach (Dictionary <string, string> tableRow in table)
            {
                string   name     = tableRow["Material"];
                Material material = model.Components.Materials[name];
                MaterialByTemperature materialByTemperature = getMaterialProperties <MaterialByTemperature>(tableRow, material);

                double stress = Adaptor.toDouble(tableRow["Stress"]);
                double strain = Adaptor.toDouble(tableRow["Strain"]);
                eStressStrainPointID pointId = eStressStrainPointID.None;
                if (tableRow.ContainsKey("PointID"))
                {
                    pointId = Enums.EnumLibrary.ConvertStringToEnumByDescription <eStressStrainPointID>(tableRow["PointID"]);
                }

                materialByTemperature.StressStrainCurve.Add(new StressStrainPoint(stress, strain, pointId));
            }
        }
示例#3
0
        /// <summary>
        /// Sets the material properties 02 basic mechanical properties.
        /// </summary>
        /// <param name="model">The model.</param>
        /// <param name="table">The table.</param>
        private static void setMATERIAL_PROPERTIES_02_BASIC_MECHANICAL_PROPERTIES(Model model, List <Dictionary <string, string> > table)
        {
            foreach (Dictionary <string, string> tableRow in table)
            {
                string   name     = tableRow["Material"];
                Material material = model.Components.Materials[name];

                MaterialByTemperature materialByTemperature;
                MaterialMechanics     materialMechanics;
                if (tableRow.ContainsKey("Temp"))
                {
                    materialByTemperature = MaterialByTemperature.Factory(name, material.Type, Adaptor.toDouble(tableRow["Temp"]));
                    materialMechanics     = MaterialMechanics.Factory(
                        name,
                        material.SymmetryType,
                        materialByTemperature.Temperature);
                }
                else
                {
                    materialByTemperature = MaterialByTemperature.Factory(name, material.Type);
                    materialMechanics     = MaterialMechanics.Factory(
                        name,
                        material.SymmetryType);
                }

                switch (materialMechanics)
                {
                case MaterialMechanicsAnisotropic anisotropic:
                    anisotropic.AnisotropicProperties.ModulusOfElasticity.E1 = Adaptor.toDouble(tableRow["E1"]);
                    anisotropic.AnisotropicProperties.ModulusOfElasticity.E2 = Adaptor.toDouble(tableRow["E2"]);
                    anisotropic.AnisotropicProperties.ModulusOfElasticity.E3 = Adaptor.toDouble(tableRow["E3"]);

                    anisotropic.AnisotropicProperties.ShearModulus.G12 = Adaptor.toDouble(tableRow["G12"]);
                    anisotropic.AnisotropicProperties.ShearModulus.G13 = Adaptor.toDouble(tableRow["G13"]);
                    anisotropic.AnisotropicProperties.ShearModulus.G23 = Adaptor.toDouble(tableRow["G23"]);

                    anisotropic.AnisotropicProperties.PoissonsRatio.U12 = Adaptor.toDouble(tableRow["U12"]);
                    anisotropic.AnisotropicProperties.PoissonsRatio.U13 = Adaptor.toDouble(tableRow["U13"]);
                    anisotropic.AnisotropicProperties.PoissonsRatio.U23 = Adaptor.toDouble(tableRow["U23"]);
                    anisotropic.AnisotropicProperties.PoissonsRatio.U14 = Adaptor.toDouble(tableRow["U14"]);
                    anisotropic.AnisotropicProperties.PoissonsRatio.U24 = Adaptor.toDouble(tableRow["U24"]);
                    anisotropic.AnisotropicProperties.PoissonsRatio.U34 = Adaptor.toDouble(tableRow["U34"]);
                    anisotropic.AnisotropicProperties.PoissonsRatio.U15 = Adaptor.toDouble(tableRow["U15"]);
                    anisotropic.AnisotropicProperties.PoissonsRatio.U25 = Adaptor.toDouble(tableRow["U25"]);
                    anisotropic.AnisotropicProperties.PoissonsRatio.U35 = Adaptor.toDouble(tableRow["U35"]);
                    anisotropic.AnisotropicProperties.PoissonsRatio.U45 = Adaptor.toDouble(tableRow["U45"]);
                    anisotropic.AnisotropicProperties.PoissonsRatio.U16 = Adaptor.toDouble(tableRow["U16"]);
                    anisotropic.AnisotropicProperties.PoissonsRatio.U26 = Adaptor.toDouble(tableRow["U26"]);
                    anisotropic.AnisotropicProperties.PoissonsRatio.U36 = Adaptor.toDouble(tableRow["U36"]);
                    anisotropic.AnisotropicProperties.PoissonsRatio.U46 = Adaptor.toDouble(tableRow["U46"]);
                    anisotropic.AnisotropicProperties.PoissonsRatio.U56 = Adaptor.toDouble(tableRow["U56"]);

                    anisotropic.AnisotropicProperties.ThermalCoefficient.A1  = Adaptor.toDouble(tableRow["A1"]);
                    anisotropic.AnisotropicProperties.ThermalCoefficient.A2  = Adaptor.toDouble(tableRow["A2"]);
                    anisotropic.AnisotropicProperties.ThermalCoefficient.A3  = Adaptor.toDouble(tableRow["A3"]);
                    anisotropic.AnisotropicProperties.ThermalCoefficient.A12 = Adaptor.toDouble(tableRow["A12"]);
                    anisotropic.AnisotropicProperties.ThermalCoefficient.A13 = Adaptor.toDouble(tableRow["A13"]);
                    anisotropic.AnisotropicProperties.ThermalCoefficient.A23 = Adaptor.toDouble(tableRow["A23"]);
                    break;

                case MaterialMechanicsIsotropic isotropic:
                    isotropic.IsotropicProperties.ModulusOfElasticity = Adaptor.toDouble(tableRow["E1"]);
                    isotropic.IsotropicProperties.ShearModulus        = Adaptor.toDouble(tableRow["G12"]);
                    isotropic.IsotropicProperties.PoissonsRatio       = Adaptor.toDouble(tableRow["U12"]);
                    isotropic.IsotropicProperties.ThermalCoefficient  = Adaptor.toDouble(tableRow["A1"]);
                    break;

                case MaterialMechanicsOrthotropic orthotropic:
                    orthotropic.OrthotropicProperties.ModulusOfElasticity.E1 = Adaptor.toDouble(tableRow["E1"]);
                    orthotropic.OrthotropicProperties.ModulusOfElasticity.E2 = Adaptor.toDouble(tableRow["E2"]);
                    orthotropic.OrthotropicProperties.ModulusOfElasticity.E3 = Adaptor.toDouble(tableRow["E3"]);

                    orthotropic.OrthotropicProperties.ShearModulus.G12 = Adaptor.toDouble(tableRow["G12"]);
                    orthotropic.OrthotropicProperties.ShearModulus.G13 = Adaptor.toDouble(tableRow["G13"]);
                    orthotropic.OrthotropicProperties.ShearModulus.G23 = Adaptor.toDouble(tableRow["G23"]);

                    orthotropic.OrthotropicProperties.PoissonsRatio.U12 = Adaptor.toDouble(tableRow["U12"]);
                    orthotropic.OrthotropicProperties.PoissonsRatio.U13 = Adaptor.toDouble(tableRow["U13"]);
                    orthotropic.OrthotropicProperties.PoissonsRatio.U23 = Adaptor.toDouble(tableRow["U23"]);

                    orthotropic.OrthotropicProperties.ThermalCoefficient.A1 = Adaptor.toDouble(tableRow["A1"]);
                    orthotropic.OrthotropicProperties.ThermalCoefficient.A2 = Adaptor.toDouble(tableRow["A2"]);
                    orthotropic.OrthotropicProperties.ThermalCoefficient.A3 = Adaptor.toDouble(tableRow["A3"]);
                    break;

                case MaterialMechanicsUniaxial uniaxial:
                    uniaxial.UniaxialProperties.ModulusOfElasticity = Adaptor.toDouble(tableRow["E1"]);
                    uniaxial.UniaxialProperties.ThermalCoefficient  = Adaptor.toDouble(tableRow["A1"]);
                    break;
                }
                materialByTemperature.Mechanics       = materialMechanics;
                materialByTemperature.WeightPerVolume = Adaptor.toDouble(tableRow["UnitWeight"]);
                materialByTemperature.MassPerVolume   = Adaptor.toDouble(tableRow["UnitMass"]);

                material.SetMaterialByTemperature(materialByTemperature);
            }
        }
        private static Dictionary <string, string> tableRowMaterialNameAndTemperature(MaterialByTemperature material)
        {
            Dictionary <string, string> tableRow = new Dictionary <string, string>
            {
                { "Material", Adaptor.ToStringEntryLimited(material.Name) }
            };

            if (Math.Abs(material.Temperature) > Constants.Tolerance)
            {
                tableRow["Temp"] = Adaptor.fromDouble(material.Temperature);
            }

            return(tableRow);
        }