// 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"]); } }
/// <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)); } }
/// <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); }