using LoaderCalculator.Data.Materials;
using StructureHelperCommon.Infrastructures.Enums;
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperLogics.NdmCalculations.Primitives;
namespace StructureHelperLogics.NdmCalculations.Cracking.CheckLogics
{
///
/// Checks whether a collection of NDM primitives contains
/// at least one material that supports crack appearance.
///
public class PrimitivesForCrackMaterialCheckLogic
: CheckEntityLogic>
{
public override bool Check()
{
if (Entity is null)
{
TraceMessage("Collection of primitives is null");
return false;
}
CheckResult = string.Empty;
bool hasCrackMaterial = Entity.Any(primitive =>
primitive?.NdmElement?.HeadMaterial?
.GetLoaderMaterial(LimitStates.SLS, CalcTerms.ShortTerm)
is ICrackMaterial);
if (!hasCrackMaterial)
{
TraceMessage(
"Collection of primitives does not have material which supports cracking");
}
return hasCrackMaterial;
}
}
}