public override object Convert(object value, Type targetType, object parameter, CultureInfo culture) { NominalAggregateSize size = (NominalAggregateSize)value; switch (size) { case NominalAggregateSize.Size9_5: return("9.5mm"); case NominalAggregateSize.Size12_5: return("12.5mm"); case NominalAggregateSize.Size19: return("19mm"); case NominalAggregateSize.Size25: return("25mm"); case NominalAggregateSize.Size37_5: return("37.5mm"); case NominalAggregateSize.Size50: return("50mm"); case NominalAggregateSize.Size75: return("75mm"); case NominalAggregateSize.Size150: return("150mm"); default: break; } return(string.Empty); }
/// <summary> /// Calculate coarse aggregate size for unit volume of concrete /// </summary> /// <param name="nominalSize">Nominal size of coarse aggregate</param> /// <param name="finenessModulus">Fineness modulus of fine aggregate</param> public static double CalculateCoarseAggVol(NominalAggregateSize nominalSize, double finenessModulus) { var mVolumes = CoarseAggregateVolumes[nominalSize]; double minFiness = 0; double maxFiness = 0; double minVol = 0; double maxVol = 0; for (int i = 0; i < mVolumes.Keys.Count; i++) { if (finenessModulus >= mVolumes.Keys.ToArray()[i]) { minFiness = mVolumes.Keys.ToArray()[i]; minVol = mVolumes[minFiness]; } if (finenessModulus <= mVolumes.Keys.ToArray()[i]) { maxFiness = mVolumes.Keys.ToArray()[i]; maxVol = mVolumes[maxFiness]; break; } } if (minVol == maxVol) { return(minVol); } double result = Interpolator.Interpolate(minFiness, minVol, maxFiness, maxVol, finenessModulus); return(result); }
/// <summary> /// Get the appropriate cement weight for specified <paramref name="aggSize"/> taking account for severe exposure. /// </summary> /// <param name="aggSize">Nominal aggregate size</param> /// <param name="isSevereExposure">Is concrete exposed to sever freezing and thawing exposure</param> /// <returns>Sufficient weight in kg/m^3</returns> public static double GetSufficientWeight(NominalAggregateSize aggSize, bool isSevereExposure) { double mWeight = MinRequiredCement[aggSize]; if (isSevereExposure) { return(mWeight >= SevereExposureMinWeight ? mWeight : SevereExposureMinWeight); } return(mWeight); }
/// <summary> /// Get mix water content in kg/m^3 of concrete mix /// </summary> /// <param name="aggSize">Nominal aggregate size of coarse aggregate</param> /// <param name="slump">Amount of slump required</param> /// <param name="isAirEntrained">Is air entrained mix required</param> /// <returns>Water mass in kg/m^3</returns> public static double GetWaterContent(NominalAggregateSize aggSize, SlumpAmount slump, bool isAirEntrained) { if (isAirEntrained) { return(WaterMassAirEntrained[slump][aggSize]); } else { return(WaterMassNonAirEntrained[slump][aggSize]); } }
/// <summary> /// Check if the weight <paramref name="weight"/> is sufficient for specified <paramref name="aggSize"/> /// </summary> /// <param name="aggSize">Nominal aggregate size in mm</param> /// <param name="weight">Cement weight in kg/m^3</param> /// <param name="isSevereExposure">Concrete is exposed to severe freezing and thawing and deicers components</param> /// <returns></returns> public static bool IsSufficientWeight(NominalAggregateSize aggSize, double weight, bool isSevereExposure) { double mWeight = weight; if (weight < MinRequiredCement[aggSize]) { mWeight = MinRequiredCement[aggSize]; } if (isSevereExposure && mWeight < SevereExposureMinWeight) { mWeight = SevereExposureMinWeight; } return(mWeight >= weight); }
/// <summary> /// Get the air content recommended for freezing and thawing exposure <paramref name="exposure"/>, in percent. /// </summary> /// <param name="exposure"></param> /// <param name="aggSize"></param> /// <returns></returns> public static double GetAirContent(FreezingAndThawingExposure exposure, NominalAggregateSize aggSize) { return(EntrappedAirInAirConcrete[exposure][aggSize]); }
/// <summary> /// Get the air content entrapped in non air entrapped concrete mix, in precent. /// </summary> /// <param name="aggSize"></param> /// <returns></returns> public static double GetAirContent(NominalAggregateSize aggSize) { return(EntrappedAirInNonAirConcrete[aggSize]); }