36 #ifndef EXPRESSION_TO_EVALUATION_HPP 37 #define EXPRESSION_TO_EVALUATION_HPP 39 #include <lifev/eta/expression/ExpressionPhiI.hpp> 40 #include <lifev/eta/expression/ExpressionPhiJ.hpp> 41 #include <lifev/eta/expression/ExpressionDphiI.hpp> 42 #include <lifev/eta/expression/ExpressionDphiJ.hpp> 43 #include <lifev/eta/expression/ExpressionDivI.hpp> 44 #include <lifev/eta/expression/ExpressionDivJ.hpp> 45 #include <lifev/eta/expression/ExpressionMinusTransposed.hpp> 46 #include <lifev/eta/expression/ExpressionInverse.hpp> 47 #include <lifev/eta/expression/ExpressionDeterminant.hpp> 48 #include <lifev/eta/expression/ExpressionTrace.hpp> 49 #include <lifev/eta/expression/ExpressionLaplacianI.hpp> 50 #include <lifev/eta/expression/ExpressionLaplacianJ.hpp> 52 #include <lifev/eta/expression/ExpressionAddition.hpp> 53 #include <lifev/eta/expression/ExpressionSubstraction.hpp> 54 #include <lifev/eta/expression/ExpressionProduct.hpp> 55 #include <lifev/eta/expression/ExpressionPower.hpp> 56 #include <lifev/eta/expression/ExpressionSquareRoot.hpp> 57 #include <lifev/eta/expression/ExpressionCubicRoot.hpp> 58 #include <lifev/eta/expression/ExpressionArcTan.hpp> 59 #include <lifev/eta/expression/ExpressionDerivativeArcTan.hpp> 60 #include <lifev/eta/expression/ExpressionLogarithm.hpp> 61 #include <lifev/eta/expression/ExpressionExponential.hpp> 62 #include <lifev/eta/expression/ExpressionDot.hpp> 63 #include <lifev/eta/expression/ExpressionDivision.hpp> 64 #include <lifev/eta/expression/ExpressionEmult.hpp> 65 #include <lifev/eta/expression/ExpressionExtract1.hpp> 66 #include <lifev/eta/expression/ExpressionExtract2.hpp> 67 #include <lifev/eta/expression/ExpressionTranspose.hpp> 68 #include <lifev/eta/expression/ExpressionNormalize.hpp> 69 #include <lifev/eta/expression/ExpressionSymmetricTensor.hpp> 70 #include <lifev/eta/expression/ExpressionOuterProduct.hpp> 72 #include <lifev/eta/expression/ExpressionScalar.hpp> 73 #include <lifev/eta/expression/ExpressionVector.hpp> 74 #include <lifev/eta/expression/ExpressionMatrix.hpp> 76 #include <lifev/eta/expression/ExpressionInterpolateValue.hpp> 77 #include <lifev/eta/expression/ExpressionInterpolateGradient.hpp> 78 #include <lifev/eta/expression/ExpressionInterpolateLaplacian.hpp> 79 #include <lifev/eta/expression/ExpressionReturnAtQuadraturePoints.hpp> 81 #include <lifev/eta/expression/ExpressionFunctor.hpp> 83 #include <lifev/eta/expression/ExpressionHK.hpp> 84 #include <lifev/eta/expression/ExpressionDetJacobian.hpp> 85 #include <lifev/eta/expression/ExpressionMetricTensor.hpp> 86 #include <lifev/eta/expression/ExpressionMetricVector.hpp> 87 #include <lifev/eta/expression/ExpressionMeas.hpp> 88 #include <lifev/eta/expression/ExpressionMeasBDCurrentFE.hpp> 89 #include <lifev/eta/expression/ExpressionPosition.hpp> 90 #include <lifev/eta/expression/ExpressionNormal.hpp> 92 #include <lifev/eta/expression/ExpressionIfCrossed.hpp> 93 #include <lifev/eta/expression/ExpressionVectorFromNonConstantScalar.hpp> 94 #include <lifev/eta/expression/ExpressionVectorFromNonConstantMatrix.hpp> 95 #include <lifev/eta/expression/ExpressionPatchArea.hpp> 97 #include <lifev/eta/expression/ExpressionScalarToVector.hpp> 99 #include <lifev/eta/expression/EvaluationPhiI.hpp> 100 #include <lifev/eta/expression/EvaluationPhiJ.hpp> 101 #include <lifev/eta/expression/EvaluationDphiI.hpp> 102 #include <lifev/eta/expression/EvaluationDphiJ.hpp> 103 #include <lifev/eta/expression/EvaluationDivI.hpp> 104 #include <lifev/eta/expression/EvaluationDivJ.hpp> 105 #include <lifev/eta/expression/EvaluationMinusTransposed.hpp> 106 #include <lifev/eta/expression/EvaluationInverse.hpp> 107 #include <lifev/eta/expression/EvaluationDeterminant.hpp> 108 #include <lifev/eta/expression/EvaluationTrace.hpp> 109 #include <lifev/eta/expression/EvaluationLaplacianI.hpp> 110 #include <lifev/eta/expression/EvaluationLaplacianJ.hpp> 112 #include <lifev/eta/expression/EvaluationAddition.hpp> 113 #include <lifev/eta/expression/EvaluationSubstraction.hpp> 114 #include <lifev/eta/expression/EvaluationProduct.hpp> 115 #include <lifev/eta/expression/EvaluationPower.hpp> 116 #include <lifev/eta/expression/EvaluationSquareRoot.hpp> 117 #include <lifev/eta/expression/EvaluationCubicRoot.hpp> 118 #include <lifev/eta/expression/EvaluationArcTan.hpp> 119 #include <lifev/eta/expression/EvaluationDerivativeArcTan.hpp> 120 #include <lifev/eta/expression/EvaluationLogarithm.hpp> 121 #include <lifev/eta/expression/EvaluationExponential.hpp> 122 #include <lifev/eta/expression/EvaluationDot.hpp> 123 #include <lifev/eta/expression/EvaluationDivision.hpp> 124 #include <lifev/eta/expression/EvaluationEmult.hpp> 125 #include <lifev/eta/expression/EvaluationExtract1.hpp> 126 #include <lifev/eta/expression/EvaluationExtract2.hpp> 127 #include <lifev/eta/expression/EvaluationTranspose.hpp> 128 #include <lifev/eta/expression/EvaluationNormalize.hpp> 129 #include <lifev/eta/expression/EvaluationSymmetricTensor.hpp> 130 #include <lifev/eta/expression/EvaluationOuterProduct.hpp> 132 #include <lifev/eta/expression/EvaluationScalar.hpp> 133 #include <lifev/eta/expression/EvaluationVector.hpp> 134 #include <lifev/eta/expression/EvaluationMatrix.hpp> 136 #include <lifev/eta/expression/EvaluationInterpolateValue.hpp> 137 #include <lifev/eta/expression/EvaluationInterpolateGradient.hpp> 138 #include <lifev/eta/expression/EvaluationInterpolateLaplacian.hpp> 139 #include <lifev/eta/expression/EvaluationReturnAtQuadraturePoints.hpp> 141 #include <lifev/eta/expression/EvaluationFunctor.hpp> 143 #include <lifev/eta/expression/EvaluationHK.hpp> 144 #include <lifev/eta/expression/EvaluationDetJacobian.hpp> 145 #include <lifev/eta/expression/EvaluationMetricTensor.hpp> 146 #include <lifev/eta/expression/EvaluationMetricVector.hpp> 147 #include <lifev/eta/expression/EvaluationMeas.hpp> 148 #include <lifev/eta/expression/EvaluationMeasBDCurrentFE.hpp> 149 #include <lifev/eta/expression/EvaluationPosition.hpp> 150 #include <lifev/eta/expression/EvaluationNormal.hpp> 152 #include <lifev/eta/expression/EvaluationIfCrossed.hpp> 153 #include <lifev/eta/expression/EvaluationPatchArea.hpp> 154 #include <lifev/eta/expression/EvaluationVectorFromNonConstantScalar.hpp> 155 #include <lifev/eta/expression/EvaluationVectorFromNonConstantMatrix.hpp> 157 #include <lifev/eta/expression/EvaluationScalarToVector.hpp> 162 namespace ExpressionAssembly
186 template<
typename Expression,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
199 template<
typename Expression,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
201 ExpressionExtract1<Expression>
207 typedef EvaluationExtract1 <
211 ExpressionToEvaluation();
212 ~ExpressionToEvaluation();
217 template<
typename Expression,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
219 ExpressionExtract2<Expression>
225 typedef EvaluationExtract2 <
229 ExpressionToEvaluation();
230 ~ExpressionToEvaluation();
240 ExpressionToEvaluation();
241 ~ExpressionToEvaluation();
251 ExpressionToEvaluation();
252 ~ExpressionToEvaluation();
262 ExpressionToEvaluation();
263 ~ExpressionToEvaluation();
273 ExpressionToEvaluation();
274 ~ExpressionToEvaluation();
284 ExpressionToEvaluation();
285 ~ExpressionToEvaluation();
295 ExpressionToEvaluation();
296 ~ExpressionToEvaluation();
304 typedef EvaluationDivI<testDim, spaceDim> evaluation_Type;
306 ExpressionToEvaluation();
307 ~ExpressionToEvaluation();
315 typedef EvaluationDivJ<solutionDim, spaceDim> evaluation_Type;
317 ExpressionToEvaluation();
318 ~ExpressionToEvaluation();
322 template<
typename Expression,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
324 ExpressionTranspose<Expression>
330 typedef EvaluationTranspose <
334 ExpressionToEvaluation();
335 ~ExpressionToEvaluation();
339 template<
typename Expression,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
341 ExpressionNormalize<Expression>
347 typedef EvaluationNormalize <
351 ExpressionToEvaluation();
352 ~ExpressionToEvaluation();
356 template<
typename Expression,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
358 ExpressionSymmetricTensor<Expression>
364 typedef EvaluationSymmetricTensor <
368 ExpressionToEvaluation();
369 ~ExpressionToEvaluation();
374 template<
typename Expression,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
376 ExpressionMinusTransposed<Expression>
382 typedef EvaluationMinusTransposed <
386 ExpressionToEvaluation();
387 ~ExpressionToEvaluation();
391 template<
typename Expression,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
393 ExpressionScalarToVector<Expression, spaceDim>
399 typedef ExpressionScalarToVector <
401 , spaceDim > evaluation_Type;
403 ExpressionToEvaluation();
404 ~ExpressionToEvaluation();
408 template<
typename Expression,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
410 ExpressionInverse<Expression>
416 typedef EvaluationInverse <
420 ExpressionToEvaluation();
421 ~ExpressionToEvaluation();
426 template<
typename Expression,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
428 ExpressionDeterminant<Expression>
434 typedef EvaluationDeterminant <
438 ExpressionToEvaluation();
439 ~ExpressionToEvaluation();
444 template<
typename Expression,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
446 ExpressionTrace<Expression>
452 typedef EvaluationTrace <
456 ExpressionToEvaluation();
457 ~ExpressionToEvaluation();
461 template<
typename Expression,
UInt FEFieldDim,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
463 ExpressionVectorFromNonConstantScalar<Expression, FEFieldDim>
469 typedef EvaluationVectorFromNonConstantScalar <
474 ExpressionToEvaluation();
475 ~ExpressionToEvaluation();
480 template<
typename Expression,
UInt FESpaceDim,
UInt FEFieldDim,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
482 ExpressionVectorFromNonConstantMatrix<Expression, FESpaceDim, FEFieldDim>
488 typedef EvaluationVectorFromNonConstantMatrix<
494 ExpressionToEvaluation();
495 ~ExpressionToEvaluation();
503 typedef EvaluationScalar evaluation_Type;
505 ExpressionToEvaluation();
506 ~ExpressionToEvaluation();
510 template<
typename VectorType,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
514 typedef EvaluationExtractScalar<VectorType> evaluation_Type;
516 ExpressionToEvaluation();
517 ~ExpressionToEvaluation();
526 typedef EvaluationVector<VectorDim> evaluation_Type;
528 ExpressionToEvaluation();
529 ~ExpressionToEvaluation();
537 typedef EvaluationMatrix<MatrixDim1, MatrixDim2> evaluation_Type;
539 ExpressionToEvaluation();
540 ~ExpressionToEvaluation();
544 template<
typename MeshType,
typename MapType,
UInt FESpaceDim,
UInt FEFieldDim,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
546 ExpressionInterpolateValue<MeshType, MapType, FESpaceDim, FEFieldDim>, testDim, solutionDim, spaceDim >
549 typedef EvaluationInterpolateValue<MeshType, MapType, FESpaceDim, FEFieldDim> evaluation_Type;
551 ExpressionToEvaluation();
552 ~ExpressionToEvaluation();
556 template<
typename MeshType,
typename MapType,
UInt FESpaceDim,
UInt FEFieldDim,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
558 ExpressionReturnAtQuadraturePoints<MeshType, MapType, FESpaceDim, FEFieldDim>, testDim, solutionDim, spaceDim >
561 typedef EvaluationReturnAtQuadraturePoints<MeshType, MapType, FESpaceDim, FEFieldDim> evaluation_Type;
563 ExpressionToEvaluation();
564 ~ExpressionToEvaluation();
569 template<
typename MeshType,
typename MapType,
UInt FESpaceDim,
UInt FEFieldDim,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
571 ExpressionPatchArea<MeshType, MapType, FESpaceDim, FEFieldDim>, testDim, solutionDim, spaceDim >
574 typedef EvaluationPatchArea<MeshType, MapType, FESpaceDim, FEFieldDim> evaluation_Type;
576 ExpressionToEvaluation();
577 ~ExpressionToEvaluation();
581 template<
typename MeshType,
typename MapType,
UInt FESpaceDim,
UInt FEFieldDim,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
583 ExpressionInterpolateGradient<MeshType, MapType, FESpaceDim, FEFieldDim>, testDim, solutionDim, spaceDim >
586 typedef EvaluationInterpolateGradient<MeshType, MapType, FESpaceDim, FEFieldDim> evaluation_Type;
588 ExpressionToEvaluation();
589 ~ExpressionToEvaluation();
593 template<
typename MeshType,
typename MapType,
UInt FESpaceDim,
UInt FEFieldDim,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
595 ExpressionInterpolateLaplacian<MeshType, MapType, FESpaceDim, FEFieldDim>, testDim, solutionDim, spaceDim >
598 typedef EvaluationInterpolateLaplacian<MeshType, MapType, FESpaceDim, FEFieldDim> evaluation_Type;
600 ExpressionToEvaluation();
601 ~ExpressionToEvaluation();
605 template<
typename Functor,
typename Expression,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
607 ExpressionFunctor1<Functor, Expression>
613 typedef EvaluationFunctor1 <
618 ExpressionToEvaluation();
619 ~ExpressionToEvaluation();
623 template<
typename Functor,
typename Expression1,
typename Expression2,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
625 ExpressionFunctor2<Functor, Expression1, Expression2>
631 typedef EvaluationFunctor2 <
637 ExpressionToEvaluation();
638 ~ExpressionToEvaluation();
643 template<
typename ExpressionL,
typename ExpressionR,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
644 class ExpressionToEvaluation<ExpressionAddition<ExpressionL, ExpressionR>, testDim, solutionDim, spaceDim>
647 typedef EvaluationAddition <
652 ExpressionToEvaluation();
653 ~ExpressionToEvaluation();
657 template<
typename ExpressionL,
typename ExpressionR,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
658 class ExpressionToEvaluation<ExpressionSubstraction<ExpressionL, ExpressionR>, testDim, solutionDim, spaceDim>
661 typedef EvaluationSubstraction <
666 ExpressionToEvaluation();
667 ~ExpressionToEvaluation();
671 template<
typename ExpressionL,
typename ExpressionR,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
675 typedef EvaluationProduct <
680 ExpressionToEvaluation();
681 ~ExpressionToEvaluation();
686 template<
typename ExpressionBase,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
690 typedef EvaluationPower <
694 ExpressionToEvaluation();
695 ~ExpressionToEvaluation();
699 template<
typename ExpressionBase,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
703 typedef EvaluationSquareRoot <
707 ExpressionToEvaluation();
708 ~ExpressionToEvaluation();
712 template<
typename ExpressionBase,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
716 typedef EvaluationCubicRoot <
720 ExpressionToEvaluation();
721 ~ExpressionToEvaluation();
726 template<
typename ExpressionBase,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
727 class ExpressionToEvaluation<ExpressionIsochoricChangeOfVariable<ExpressionBase>, testDim, solutionDim, spaceDim>
730 typedef EvaluationIsochoricChangeOfVariable <
734 ExpressionToEvaluation();
735 ~ExpressionToEvaluation();
740 template<
typename ExpressionBase,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
744 typedef EvaluationArcTan <
748 ExpressionToEvaluation();
749 ~ExpressionToEvaluation();
754 template<
typename ExpressionBase,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
758 typedef EvaluationDerivativeArcTan <
762 ExpressionToEvaluation();
763 ~ExpressionToEvaluation();
768 template<
typename ExpressionBase,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
772 typedef EvaluationLogarithm <
776 ExpressionToEvaluation();
777 ~ExpressionToEvaluation();
781 template<
typename ExpressionBase,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
785 typedef EvaluationExponential <
789 ExpressionToEvaluation();
790 ~ExpressionToEvaluation();
794 template<
typename ExpressionL,
typename ExpressionR,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
798 typedef EvaluationDot <
803 ExpressionToEvaluation();
804 ~ExpressionToEvaluation();
808 template<
typename ExpressionL,
typename ExpressionR,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
809 class ExpressionToEvaluation<ExpressionOuterProduct<ExpressionL, ExpressionR>, testDim, solutionDim, spaceDim>
812 typedef EvaluationOuterProduct <
817 ExpressionToEvaluation();
818 ~ExpressionToEvaluation();
822 template<
typename ExpressionL,
typename ExpressionR,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
826 typedef EvaluationEmult <
831 ExpressionToEvaluation();
832 ~ExpressionToEvaluation();
836 template<
typename ExpressionL,
typename ExpressionR,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
837 class ExpressionToEvaluation<ExpressionDivision<ExpressionL, ExpressionR>, testDim, solutionDim, spaceDim>
840 typedef EvaluationDivision <
845 ExpressionToEvaluation();
846 ~ExpressionToEvaluation();
856 ExpressionToEvaluation();
857 ~ExpressionToEvaluation();
867 ExpressionToEvaluation();
868 ~ExpressionToEvaluation();
878 ExpressionToEvaluation();
879 ~ExpressionToEvaluation();
889 ExpressionToEvaluation();
890 ~ExpressionToEvaluation();
900 ExpressionToEvaluation();
901 ~ExpressionToEvaluation();
908 typedef EvaluationMeasBDCurrentFE<spaceDim> evaluation_Type;
910 ExpressionToEvaluation();
911 ~ExpressionToEvaluation();
921 ExpressionToEvaluation();
922 ~ExpressionToEvaluation();
930 typedef EvaluationNormal<spaceDim> evaluation_Type;
932 ExpressionToEvaluation();
933 ~ExpressionToEvaluation();
936 template<
typename MeshType,
typename MapType,
UInt FESpaceDim,
UInt testDim,
UInt solutionDim,
UInt spaceDim>
938 ExpressionIfCrossed<MeshType, MapType, FESpaceDim>, testDim, solutionDim, spaceDim >
941 typedef EvaluationIfCrossed<MeshType, MapType, FESpaceDim> evaluation_Type;
943 ExpressionToEvaluation();
944 ~ExpressionToEvaluation();
friend class ExpressionAssembly::EvaluationHK
Friend to allow direct access to the raw data.
friend class ExpressionAssembly::EvaluationDetJacobian
Friend to allow direct access to the raw data.
friend class ExpressionAssembly::EvaluationLaplacianJ
Friend to allow direct access to the raw data.
Expression::evaluation_Type evaluation_Type
friend class ExpressionAssembly::EvaluationPhiI
Friend to allow direct access to the raw data.
friend class ExpressionAssembly::EvaluationPosition
Friend to allow direct access to the raw data.
void updateInverseJacobian(const UInt &iQuadPt)
friend class ExpressionAssembly::EvaluationDphiI
Friend to allow direct access to the raw data.
~ExpressionToEvaluation()
friend class ExpressionAssembly::EvaluationMeas
Friend to allow direct access to the raw data.
class ExpressionToEvaluation A class to pass from an Expression (Tree) to the corresponding Evaluatio...
friend class ExpressionAssembly::EvaluationLaplacianI
Friend to allow direct access to the raw data.
friend class ExpressionAssembly::EvaluationDphiJ
Friend to allow direct access to the raw data.
friend class ExpressionAssembly::EvaluationMetricVector
Friend to allow direct access to the raw data.
friend class ExpressionAssembly::EvaluationPhiJ
Friend to allow direct access to the raw data.
friend class ExpressionAssembly::EvaluationMetricTensor
Friend to allow direct access to the raw data.
uint32_type UInt
generic unsigned integer (used mainly for addressing)