operands.cpp serif/discretization/forms/operands.hpp type_traits concepts #include"serif/discretization/forms/operands.hpp" #include<type_traits> #include<concepts> namespace{ usingnamespaceserif::discretization; usingDensityValue=forms::Operand<blocks::density::mass>; usingDisplacementValue=forms::Operand<blocks::displacement::vector>; usingDisplacementDivergence=forms::Operand<blocks::displacement::vector, forms::Operation::Divergence>; usingDisplacementNormalTrace=forms::Operand<blocks::displacement::vector, forms::Operation::NormalTrace>; usingDisplacementGradient=forms::Operand<blocks::displacement::vector, forms::Operation::Gradient>; static_assert(forms::IsOperand<DensityValue>,"DensityValueshouldbeavalidoperand"); static_assert(forms::IsOperand<DisplacementValue>,"DisplacementValueshouldbeavalidoperand"); static_assert(forms::IsOperand<DisplacementDivergence>,"DisplacementDivergenceshouldbeavalidoperand"); static_assert(forms::IsOperand<DisplacementNormalTrace>,"DisplacementNormalTraceshouldbeavalidoperand"); static_assert(forms::IsOperand<DisplacementGradient>,"DisplacementGradientshouldbeavalidoperand"); static_assert(std::same_as<DisplacementDivergence::term_type,blocks::displacement::vector>,"DisplacementDivergenceshouldhavethecorrecttermtype"); static_assert(std::same_as<DisplacementDivergence::operation_type,forms::Operation::Divergence>,"DisplacementDivergenceshouldhavethecorrectoperationtype"); }