diff --git a/AMDiS/src/Assembler.cc b/AMDiS/src/Assembler.cc index 544580410b443309ef58819ebb097318602fa225..8cf02ef712846022a0e5393319945275a42f4c12 100644 --- a/AMDiS/src/Assembler.cc +++ b/AMDiS/src/Assembler.cc @@ -324,9 +324,7 @@ namespace AMDiS { calculateElementMatrix(elInfo, elementMatrix); } - // eventuell einfach // vec = elementMatrix*uhOldLoc; - // schreiben for (int i = 0; i < nRow; i++) { double val = 0.0; for (int j = 0; j < nCol; j++) diff --git a/AMDiS/src/Mesh.cc b/AMDiS/src/Mesh.cc index 8664e00eb1fb7c203e987967e55c59dabce08353..a7f7862834e3deec6f16799abbfa5ca80a140711 100644 --- a/AMDiS/src/Mesh.cc +++ b/AMDiS/src/Mesh.cc @@ -1015,7 +1015,7 @@ namespace AMDiS { out << name << "\n"; -// SerUtil::serialize(out, dim); + SerUtil::serialize(out, dim); SerUtil::serialize(out, nVertices); SerUtil::serialize(out, nEdges); SerUtil::serialize(out, nLeaves); @@ -1095,8 +1095,8 @@ namespace AMDiS { in.get(); int oldVal = dim; -// SerUtil::deserialize(in, dim); -// TEST_EXIT_DBG(oldVal == 0 || dim == oldVal)("Invalid dimension!\n"); + SerUtil::deserialize(in, dim); + TEST_EXIT_DBG(oldVal == 0 || dim == oldVal)("Invalid dimension!\n"); SerUtil::deserialize(in, nVertices); SerUtil::deserialize(in, nEdges); diff --git a/AMDiS/src/TransformDOF.h b/AMDiS/src/TransformDOF.h index e180186fc3ad18ea92f423f6f343bfca2a8b9b10..779ac2aa9671dc23571561bd1404f14dc2588fb4 100644 --- a/AMDiS/src/TransformDOF.h +++ b/AMDiS/src/TransformDOF.h @@ -7,18 +7,25 @@ namespace AMDiS { /** * analogon to std::for_each/std::transform for DOFVectors. - * The operators are applied to each degree of freedom. + * The operators are applied to each degree of freedom: * * forEachDOF(vec, op) * transformDOF(vec1, result, op) * transformDOF(vec1, vec2, result, binary_op) * transformDOF(vec1, vec2, vec3, result, tertiary_op) * + * transformDOFInterpolation(vec, f(x), result, binary_op) + * * vec1,vec2,vec3 .. {DOFVector<Ti>*, DOFVector<Ti>&, Ti} * vec, result .. {DOFVector<TOut>*, DOFVector<TOut>&} * op .. AbstractFunction<TOut, T1>* * binary_op ..BinaryAbstractFunction<TOut, T1, T2>* * tertiary_op .. TertiaryAbstractFunction<TOut, T1, T2, T3>* + * + * analogon to std::accumulate for DOFVectors: + * + * result = accumulateDOF_simple(vec, value0, binary_op) + * result = accumulateDOF_simple(vec1, vec2, value0, tertiary_op) **/ // result = op(vec) @@ -83,7 +90,7 @@ inline void transformDOF_extended(DOFVector<T1> *vec, DOFVector<T2> *result, Abs } } -// result = op(vec) +/// result = op(vec) template<typename T1, typename T2> inline void transformDOF(DOFVector<T1> *vec, DOFVector<T2> *result, @@ -112,7 +119,6 @@ inline void forEachDOF(DOFVector<T1> *vec, AbstractFunction<T1, T1> *op) template<typename T1> inline void forEachDOF(DOFVector<T1> &vec, AbstractFunction<T1, T1> &op) { transformDOF(&vec, &op); } -// ======================================================================================================= // result = binary_op(vec1, vec2) template<typename T1, typename T2, typename T3> @@ -190,7 +196,7 @@ inline void transformDOF_extended(DOFVector<T1> *vec1, DOFVector<T2> *vec2, DOFV } } -// result = binary_op(vec1, vec2) +/// result = binary_op(vec1, vec2) template<typename T1, typename T2, typename T3> inline void transformDOF(DOFVector<T1> *vec1, DOFVector<T2> *vec2, @@ -208,7 +214,7 @@ template<typename T1, typename T2, typename T3> inline void transformDOF(DOFVect { transformDOF(&vec1, &vec2, &result, &binary_op); } -// result = binary_op(vec1, vec2) +// result = binary_op(vec1, value) template<typename T1, typename T2, typename T3> inline void transformDOF_simple(DOFVector<T1> *vec1, const T2 val, @@ -224,7 +230,7 @@ inline void transformDOF_simple(DOFVector<T1> *vec1, } } -// result = binary_op(vec1, vec2) +// result = binary_op(vec1, value) template<typename T1, typename T2, typename T3> inline void transformDOF_extended(DOFVector<T1> *vec1, const T2 val, DOFVector<T3> *result, BinaryAbstractFunction<T3, T1, T2> *binary_op) { @@ -275,7 +281,7 @@ inline void transformDOF_extended(DOFVector<T1> *vec1, const T2 val, DOFVector<T } } -// result = binary_op(vec1, vec2) +/// result = binary_op(vec1, value) template<typename T1, typename T2, typename T3> inline void transformDOF(DOFVector<T1> *vec1, const T2 val, @@ -292,7 +298,7 @@ template<typename T1, typename T2, typename T3> inline void transformDOF(DOFVect { transformDOF(&vec1, val, &result, &binary_op); } -// result = binary_op(vec1, vec2) +// result = binary_op(value, vec2) template<typename T1, typename T2, typename T3> inline void transformDOF_simple(const T1 val, DOFVector<T2> *vec1, @@ -308,7 +314,7 @@ inline void transformDOF_simple(const T1 val, } } -// result = binary_op(vec1, vec2) +// result = binary_op(value, vec2) template<typename T1, typename T2, typename T3> inline void transformDOF_extended(const T1 val, DOFVector<T2> *vec1, DOFVector<T3> *result, BinaryAbstractFunction<T3, T1, T2> *binary_op) { @@ -359,7 +365,7 @@ inline void transformDOF_extended(const T1 val, DOFVector<T2> *vec1, DOFVector<T } } -// result = binary_op(vec1, vec2) +/// result = binary_op(value, vec2) template<typename T1, typename T2, typename T3> inline void transformDOF(const T1 val, DOFVector<T2> *vec1, @@ -376,9 +382,7 @@ template<typename T1, typename T2, typename T3> inline void transformDOF(const T { transformDOF(val, &vec1, &result, &binary_op); } -// ======================================================================================== - -// result = binary_op(vec1, vec2) +// result = tertiary_op(vec1, vec2, vec3) template<typename T1, typename T2, typename T3, typename T4> inline void transformDOF_simple(DOFVector<T1> *vec1, DOFVector<T2> *vec2, @@ -466,7 +470,7 @@ inline void transformDOF_extended(DOFVector<T1> *vec1, DOFVector<T2> *vec2, DOFV } } -// result = binary_op(vec1, vec2) +/// result = tertiary_op(vec1, vec2, vec3) template<typename T1, typename T2, typename T3, typename T4> inline void transformDOF(DOFVector<T1> *vec1, DOFVector<T2> *vec2, @@ -486,7 +490,7 @@ template<typename T1, typename T2, typename T3, typename T4> inline void transformDOF(DOFVector<T1> &vec1, DOFVector<T2> &vec2, DOFVector<T3> &vec3, DOFVector<T4> &result, TertiaryAbstractFunction<T4, T1, T2, T3> &tertiary_op) { transformDOF(&vec1, &vec2, &vec3, &result, &tertiary_op); } -// result = tertiary_op(vec1, vec2, vec3) +/// result = tertiary_op(vec1, vec2, value) template<typename T1, typename T2, typename T3, typename T4> inline void transformDOF(DOFVector<T1> *vec1, DOFVector<T2> *vec2, T3 val, DOFVector<T4> *result, TertiaryAbstractFunction<T4, T1, T2, T3> *tertiary_op) { @@ -551,7 +555,7 @@ template<typename T1, typename T2, typename T3, typename T4> inline void transformDOF(DOFVector<T1> &vec1, DOFVector<T2> &vec2, T3 val, DOFVector<T4> &result, TertiaryAbstractFunction<T4, T1, T2, T3> &tertiary_op) { transformDOF(&vec1, &vec2, val, &result, &tertiary_op); } -// result = tertiary_op(vec1, vec2, vec3) +/// result = tertiary_op(vec1, value, vec3) template<typename T1, typename T2, typename T3, typename T4> inline void transformDOF(DOFVector<T1> *vec1, T2 val, DOFVector<T2> *vec3, DOFVector<T4> *result, TertiaryAbstractFunction<T4, T1, T2, T3> *tertiary_op) { @@ -616,7 +620,7 @@ template<typename T1, typename T2, typename T3, typename T4> inline void transformDOF(DOFVector<T1> &vec1, T2 val, DOFVector<T3> &vec3, DOFVector<T4> &result, TertiaryAbstractFunction<T4, T1, T2, T3> &tertiary_op) { transformDOF(&vec1, val, &vec3, &result, &tertiary_op); } -// result = tertiary_op(vec1, vec2, vec3) +/// result = tertiary_op(value, vec2, vec3) template<typename T1, typename T2, typename T3, typename T4> inline void transformDOF(T1 val, DOFVector<T2> *vec2, DOFVector<T2> *vec3, DOFVector<T4> *result, TertiaryAbstractFunction<T4, T1, T2, T3> *tertiary_op) { @@ -684,7 +688,7 @@ inline void transformDOF(T1 val, DOFVector<T2> &vec2, DOFVector<T3> &vec3, DOFVe // =========================================================================================== -// return binary_op(vec, interpol(fct)) +/// return binary_op(vec, interpol(fct)) template<typename T> inline void transformDOFInterpolation( DOFVector<T> *vec, @@ -700,7 +704,7 @@ template<typename T> inline void transformDOFInterpolation( DOFVector<T> &vec, AbstractFunction<T, WorldVector<double> > &fct, BinaryAbstractFunction<T, T, T> &binary_op) { transformDOFInterpolation(&vec, &fct, &binary_op); } -// return binary_op(vec, interpol(fct)) +/// return binary_op(vec, interpol(fct)) template<typename T> inline void transformDOFInterpolation( DOFVector<T> *vec, @@ -717,11 +721,12 @@ template<typename T> inline void transformDOFInterpolation( DOFVector<T> &vec, AbstractFunction<T, WorldVector<double> > &fct, DOFVector<T> &result, BinaryAbstractFunction<T, T, T> &binary_op) { transformDOFInterpolation(&vec, &fct, &result, &binary_op); } +} // ==================================================================================== template<typename T> -T accumulateDOF_simple(DOFVector<T> *vec, +inline T accumulateDOF_simple(DOFVector<T> *vec, T value0, BinaryAbstractFunction<T, T, T> *binary_op) { @@ -735,10 +740,10 @@ T accumulateDOF_simple(DOFVector<T> *vec, } template<typename TOut, typename T1, typename T2> -TOut accumulateDOF_simple(DOFVector<T1> *vec1, +inline TOut accumulateDOF_simple(DOFVector<T1> *vec1, DOFVector<T2> *vec2, TOut value0, - TertiaryAbstractFunction<TOut, TOut, T1, T2> *tertiary_op) + TertiaryAbstractFunction<TOut, T1, T2> *tertiary_op) { TEST_EXIT(vec1->getFeSpace() == vec2->getFeSpace())("FeSpaces must be equal!\n"); DOFIterator<T1> vec1Iter(vec1, USED_DOFS); @@ -751,6 +756,4 @@ TOut accumulateDOF_simple(DOFVector<T1> *vec1, return value; } -} - #endif // AMDIS_TRANSFORM_DOF_H