From ecf4d8358c813b85edfbe0bd39371041fe78b755 Mon Sep 17 00:00:00 2001 From: Thomas Witkowski <thomas.witkowski@gmx.de> Date: Fri, 26 Sep 2008 13:51:19 +0000 Subject: [PATCH] * AbstractFunction changed to value (not reference) return --- demo/src/ball.cc | 19 +++----- demo/src/bunny.cc | 16 +++---- demo/src/couple.cc | 66 ++++++++++++++++------------ demo/src/ellipt.cc | 17 +++----- demo/src/heat.cc | 19 +++----- demo/src/mpcci1.cc | 63 ++++++++------------------- demo/src/mpccitest.cc | 21 ++++----- demo/src/multigrid.cc | 18 +++----- demo/src/navierstokes.cc | 27 ++++-------- demo/src/neumann.cc | 25 ++++------- demo/src/nonlin.cc | 28 ++++++------ demo/src/nonlin2.cc | 88 ++++++-------------------------------- demo/src/nonlin3.cc | 35 +++++++-------- demo/src/parallelellipt.cc | 26 ++++------- demo/src/parallelheat.cc | 25 ++++------- demo/src/parametric.cc | 11 ++--- demo/src/periodic.cc | 14 +++--- demo/src/smitest.cc | 9 ---- demo/src/sphere.cc | 8 ++-- demo/src/stokesnonlin.cc | 27 ++++-------- demo/src/torus.cc | 12 +++--- demo/src/vecellipt.cc | 19 +++----- demo/src/vecheat.cc | 20 +++------ demo/src/vecmultigrid.cc | 15 +++---- demo/src/vecnonlin.cc | 28 ++++++------ 25 files changed, 231 insertions(+), 425 deletions(-) diff --git a/demo/src/ball.cc b/demo/src/ball.cc index 3f8beab0..610e923f 100644 --- a/demo/src/ball.cc +++ b/demo/src/ball.cc @@ -18,12 +18,9 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const - { - static double result; - result = exp(-10.0*(x*x)); - return result; - }; + double operator()(const WorldVector<double>& x) const { + return exp(-10.0 * (x * x)); + } }; /** \brief @@ -39,14 +36,12 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const { - static double result = 0.0; + double operator()(const WorldVector<double>& x) const { int dim = x.getSize(); - double r2 = (x*x); + double r2 = x * x; double ux = exp(-10.0*r2); - result = -(400.0*r2 - 20.0*dim)*ux; - return result; - }; + return -(400.0 * r2 - 20.0 * dim) * ux; + } }; // =========================================================================== diff --git a/demo/src/bunny.cc b/demo/src/bunny.cc index 8140a25e..3e6506b7 100644 --- a/demo/src/bunny.cc +++ b/demo/src/bunny.cc @@ -20,11 +20,9 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const { - static double result = 0.0; - result = -2 * x[0]; - return result; - }; + double operator()(const WorldVector<double>& x) const { + return -2 * x[0]; + } }; /** \brief @@ -38,11 +36,11 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const { - static double result = 10000.0; - return result; - }; + double operator()(const WorldVector<double>& x) const { + return 10000.0; + } }; + // =========================================================================== // ===== main program ======================================================== // =========================================================================== diff --git a/demo/src/couple.cc b/demo/src/couple.cc index cc19311d..91b15d75 100644 --- a/demo/src/couple.cc +++ b/demo/src/couple.cc @@ -8,12 +8,9 @@ class G : public AbstractFunction<double, WorldVector<double> > public: MEMORY_MANAGED(G); - const double& operator()(const WorldVector<double>& x) const - { - static double result; - result = exp(-10.0*(x*x)); - return result; - }; + double operator()(const WorldVector<double>& x) const { + return exp(-10.0 * (x * x)); + } }; class F : public AbstractFunction<double, WorldVector<double> > @@ -23,14 +20,12 @@ public: F(int degree) : AbstractFunction<double, WorldVector<double> >(degree) {}; - const double& operator()(const WorldVector<double>& x) const { - static double result = 0.0; + double operator()(const WorldVector<double>& x) const { int dow = x.getSize(); - double r2 = (x*x); - double ux = exp(-10.0*r2); - result = -(400.0*r2 - 20.0*dow)*ux; - return result; - }; + double r2 = (x * x); + double ux = exp(-10.0 * r2); + return -(400.0 * r2 - 20.0 * dow) * ux; + } }; class MyCoupledIteration : public ProblemIterationInterface @@ -39,8 +34,9 @@ public: MyCoupledIteration(ProblemStatBase *prob1, ProblemStatBase *prob2) : problem1(prob1), - problem2(prob2) - {}; + problem2(prob2), + name("MyCoupledIteration") + {} void beginIteration(AdaptInfo *adaptInfo) { @@ -48,14 +44,14 @@ public: MSG("\n"); MSG("begin of iteration number: %d\n", adaptInfo->getSpaceIteration()+1); MSG("=============================\n"); - }; + } void endIteration(AdaptInfo *adaptInfo) { FUNCNAME("StandardProblemIteration::endIteration()"); MSG("\n"); MSG("end of iteration number: %d\n", adaptInfo->getSpaceIteration()+1); MSG("=============================\n"); - }; + } Flag oneIteration(AdaptInfo *adaptInfo, Flag toDo = FULL_ITERATION) { @@ -71,25 +67,43 @@ public: if(toDo.isSet(ESTIMATE)) problem1->estimate(adaptInfo); return flag; - }; + } int getNumProblems() { return 2; - }; + } ProblemStatBase *getProblem(int number = 0) { FUNCNAME("CoupledIteration::getProblem()"); - if(number == 0) return problem1; - if(number == 1) return problem2; + + if (number == 0) + return problem1; + if (number == 1) + return problem2; + ERROR_EXIT("invalid problem number\n"); return NULL; - }; + } + + const std::string& getName() + { + return name; + } + + void serialize(std::ostream&) + {} + + void deserialize(std::istream&) + {} private: ProblemStatBase *problem1; + ProblemStatBase *problem2; + + std::string name; }; class Identity : public AbstractFunction<double, double> @@ -99,11 +113,9 @@ public: Identity(int degree) : AbstractFunction<double, double>(degree) {}; - const double& operator()(const double& x) const { - static double result; - result = x; - return result; - }; + double operator()(const double& x) const { + return x; + } }; int main(int argc, char* argv[]) diff --git a/demo/src/ellipt.cc b/demo/src/ellipt.cc index 9ccaf4a4..9d303c63 100644 --- a/demo/src/ellipt.cc +++ b/demo/src/ellipt.cc @@ -15,12 +15,9 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const - { - static double result; - result = exp(-10.0 * (x * x)); - return result; - }; + double operator()(const WorldVector<double>& x) const { + return exp(-10.0 * (x * x)); + } }; /** \brief @@ -34,14 +31,12 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const { - static double result = 0.0; + double operator()(const WorldVector<double>& x) const { int dow = x.getSize(); double r2 = (x * x); double ux = exp(-10.0 * r2); - result = -(400.0 * r2 - 20.0 * dow) * ux; - return result; - }; + return -(400.0 * r2 - 20.0 * dow) * ux; + } }; // // ===== main program // diff --git a/demo/src/heat.cc b/demo/src/heat.cc index c7a1b632..b539fa1f 100644 --- a/demo/src/heat.cc +++ b/demo/src/heat.cc @@ -19,11 +19,8 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const - { - static double result; - result = sin(M_PI*(*timePtr)) * exp(-10.0*(x*x)); - return result; + double operator()(const WorldVector<double>& x) const { + return sin(M_PI * (*timePtr)) * exp(-10.0 * (x * x)); }; }; @@ -41,14 +38,12 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const { - static double result; + double operator()(const WorldVector<double>& x) const { int dim = x.getSize(); - double r2 = (x*x); - double ux = sin(M_PI * (*timePtr)) * exp(-10.0*r2); - double ut = M_PI * cos(M_PI*(*timePtr)) * exp(-10.0*r2); - result = ut -(400.0*r2 - 20.0*dim)*ux; - return result; + double r2 = x * x; + double ux = sin(M_PI * (*timePtr)) * exp(-10.0 * r2); + double ut = M_PI * cos(M_PI * (*timePtr)) * exp(-10.0 * r2); + return ut -(400.0 * r2 - 20.0 * dim) * ux; }; }; diff --git a/demo/src/mpcci1.cc b/demo/src/mpcci1.cc index 6b4de602..77ea2776 100644 --- a/demo/src/mpcci1.cc +++ b/demo/src/mpcci1.cc @@ -18,12 +18,9 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const - { - static double result; - result = exp(-10.0*(x*x)); - return result; - }; + double operator()(const WorldVector<double>& x) const + return exp(-10.0 * (x * x)); + } }; /** \brief @@ -39,59 +36,35 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const { - static double result = 0.0; + double operator()(const WorldVector<double>& x) const { int dim = x.getSize(); - double r2 = (x*x); - double ux = exp(-10.0*r2); - result = -(400.0*r2 - 20.0*dim)*ux; - return result; - }; + double r2 = x * x; + double ux = exp(-10.0 * r2); + return -(400.0 * r2 - 20.0 * dim) * ux; + } }; class WaitingProblem : public ProblemScal { public: - WaitingProblem(const char *name) : ProblemScal(name) {}; + WaitingProblem(const char *name) + : ProblemScal(name) + {} void solve(AdaptInfo *adaptInfo) { FUNCNAME("WaitingProblem::solve()"); static MultiGridSolver *mgSolver = NULL; - if(!mgSolver) mgSolver = NEW MultiGridSolver(feSpace_, - NEW GSSmoother(1.0), - systemMatrix_, - solution_, - rhs_); + if (!mgSolver) + mgSolver = NEW MultiGridSolver(feSpace_, + NEW GSSmoother(1.0), + systemMatrix_, + solution_, + rhs_); mgSolver->solve(); - }; - -// void endIteration(AdaptInfo *adaptInfo) -// { -// int myConvergence = -// (adaptInfo->getSpaceIteration() == adaptInfo->getMaxSpaceIteration()) || -// adaptInfo->spaceToleranceReached() ? CCI_STOP : CCI_CONTINUE; -// int convergence; -// int syncPointID = 1; -// int quantityID = 1; - -// ProblemScal::endIteration(adaptInfo); - -// static MpCCIAdapter mpcciAdapter(123, 1, 1, -// feSpace_, 1, -1, -// 1, &quantityID, &solution_, -// 1, &syncPointID); - -// mpcciAdapter.remesh(); -// mpcciAdapter.checkConvergence(myConvergence, &convergence); - -// mpcciAdapter.putNodes(1); -// mpcciAdapter.reachSyncPoint(1); - -// WAIT; -// }; + } }; // // ===== main program // diff --git a/demo/src/mpccitest.cc b/demo/src/mpccitest.cc index ec01163d..a09e79f0 100644 --- a/demo/src/mpccitest.cc +++ b/demo/src/mpccitest.cc @@ -16,12 +16,9 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const - { - static double result; - result = exp(-10.0*(x*x)); - return result; - }; + double operator()(const WorldVector<double>& x) const { + return exp(-10.0 * (x * x)); + } }; /** \brief @@ -37,14 +34,12 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const { - static double result = 0.0; + double operator()(const WorldVector<double>& x) const { int dim = x.getSize(); - double r2 = (x*x); - double ux = exp(-10.0*r2); - result = -(400.0*r2 - 20.0*dim)*ux; - return result; - }; + double r2 = (x * x); + double ux = exp(-10.0 * r2); + return -(400.0 * r2 - 20.0 * dim) * ux; + } }; // // ===== main program // diff --git a/demo/src/multigrid.cc b/demo/src/multigrid.cc index 77f26563..80d001aa 100644 --- a/demo/src/multigrid.cc +++ b/demo/src/multigrid.cc @@ -18,12 +18,9 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const - { - static double result; - result = exp(-10.0*(x*x)); - return result; - }; + double operator()(const WorldVector<double>& x) const { + return exp(-10.0 * (x * x)); + } }; /** \brief @@ -39,15 +36,12 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const { - static double result = 0.0; + double operator()(const WorldVector<double>& x) const { int dim = x.getSize(); double r2 = (x*x); double ux = exp(-10.0*r2); - result = -(400.0*r2 - 20.0*dim)*ux; - // result = 1000 * sin(2*M_PI*x[0])*cos(10*2*M_PI*x[1]); - return result; - }; + return -(400.0*r2 - 20.0*dim)*ux; + } }; // ===== main program // diff --git a/demo/src/navierstokes.cc b/demo/src/navierstokes.cc index 685a83fb..73831a44 100644 --- a/demo/src/navierstokes.cc +++ b/demo/src/navierstokes.cc @@ -20,12 +20,9 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const - { - static double result; - result = x[comp]; - return result; - }; + double operator()(const WorldVector<double>& x) const { + return x[comp]; + } protected: /** \brief @@ -51,12 +48,9 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const - { - static double result = 0.0; - result = constant; - return result; - }; + double operator()(const WorldVector<double>& x) const { + return constant; + } protected: double constant; @@ -74,12 +68,9 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const - { - static double result = 0.0; - result = (x[0] == 0.0) || (x[0] == 1.0) ? 0.0 : 1.0; - return result; - }; + double operator()(const WorldVector<double>& x) const { + return (x[0] == 0.0) || (x[0] == 1.0) ? 0.0 : 1.0; + } protected: double constant; diff --git a/demo/src/neumann.cc b/demo/src/neumann.cc index 920827c3..0259a1aa 100644 --- a/demo/src/neumann.cc +++ b/demo/src/neumann.cc @@ -8,11 +8,9 @@ class N : public AbstractFunction<double, WorldVector<double> > public: MEMORY_MANAGED(N); - const double& operator()(const WorldVector<double>& x) const - { - static double result = 1.0; - return result; - }; + double operator()(const WorldVector<double>& x) const { + return 1.0; + } }; // ===== function definitions // @@ -27,12 +25,9 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const - { - static double result; - result = exp(-10.0*(x*x)); - return result; - }; + double operator()(const WorldVector<double>& x) const { + return exp(-10.0 * (x * x)); + } }; /** \brief @@ -48,14 +43,12 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const { - static double result = 0.0; + double operator()(const WorldVector<double>& x) const { int dow = x.getSize(); double r2 = (x*x); double ux = exp(-10.0*r2); - result = -(400.0*r2 - 20.0*dow)*ux; - return result; - }; + return -(400.0*r2 - 20.0*dow)*ux; + } }; // // ===== main program // diff --git a/demo/src/nonlin.cc b/demo/src/nonlin.cc index 246bd6b5..00907933 100644 --- a/demo/src/nonlin.cc +++ b/demo/src/nonlin.cc @@ -18,11 +18,9 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const { - static double result; - result = exp(-10.0*(x*x)); - return result; - }; + double operator()(const WorldVector<double>& x) const { + return exp(-10.0*(x*x)); + } }; /** \brief @@ -43,12 +41,12 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const { - static double result; - double r2 = x*x, ux = exp(-10.0*r2), ux4 = ux*ux*ux*ux; - result = sigma*ux4 - k*(400.0*r2 - 20.0*dim)*ux; - return result; - }; + double operator()(const WorldVector<double>& x) const { + double r2 = x*x; + double ux = exp(-10.0*r2); + double ux4 = ux*ux*ux*ux; + return sigma*ux4 - k*(400.0*r2 - 20.0*dim)*ux; + } private: double sigma; @@ -74,11 +72,9 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const double& x) const { - static double result = 0.0; - result = sigma * x * x * x; - return result; - }; + double operator()(const double& x) const { + return sigma * x * x * x; + } private: double sigma; diff --git a/demo/src/nonlin2.cc b/demo/src/nonlin2.cc index 0974540f..fc84f16c 100644 --- a/demo/src/nonlin2.cc +++ b/demo/src/nonlin2.cc @@ -18,11 +18,9 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const { - static double result; - result = exp(-10.0*(x*x)); - return result; - }; + double operator()(const WorldVector<double>& x) const { + return exp(-10.0 * (x * x)); + } }; class Zero : public AbstractFunction<double, WorldVector<double> > @@ -31,8 +29,7 @@ public: MEMORY_MANAGED(Zero); const double& operator()(const WorldVector<double>& x) const { - static double result = 0.0; - return result; + return 0.0; }; }; @@ -54,13 +51,13 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const { - static double result; + double operator()(const WorldVector<double>& x) const { int dow = x.getSize(); - double r2 = x*x, ux = exp(-10.0*r2), ux4 = ux*ux*ux*ux; - result = ux4 -(400.0*r2 - 20.0*dow)*ux; - return result; - }; + double r2 = x*x; + double ux = exp(-10.0*r2); + double ux4 = ux*ux*ux*ux; + return ux4 -(400.0*r2 - 20.0*dow)*ux; + } }; /** \brief @@ -76,69 +73,10 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const double& x) const { - static double result = 0.0; - result = x * x * x; - return result; - }; -}; - -#if 0 -class NewtonMethod : public ProblemIterationInterface -{ -public: - NewtonMethod(ProblemScal *problem, ProblemScal *newton) - : problemNonlin(problem), - newtonStep(newton) - { - newtonTolerance = 1e-8; - newtonMaxIter = 100; - }; - - - Flag oneIteration(AdaptInfo *adaptInfo, Flag toDo = FULL_ITERATION) - { - Flag flag; - DOFVector<double> *correction = newtonStep->getSolution(); - DOFVector<double> *solution = problemNonlin->getSolution(); - int newtonIteration = 0; - double res = 0.0; - do { - newtonIteration++; - newtonStep->buildAfterCoarsen(adaptInfo, flag); - newtonStep->solve(adaptInfo); - res = correction->L2Norm(); - *solution -= *correction; - MSG("newton iteration %d: residual %f (tol: %f)\n", - newtonIteration, res, newtonTolerance); - } while((res > newtonTolerance) && (newtonIteration < newtonMaxIter)); - }; - - int getNumProblems() { return 2; }; - - ProblemStatBase *getProblem(int number = 0) - { - FUNCNAME("NewtonMethod::getProblem()"); - switch(number) { - case 0: - return problemNonlin; - break; - case 1: - return newtonStep; - break; - default: - ERROR_EXIT("invalid problem number\n"); - return NULL; - } - }; - -private: - ProblemScal *problemNonlin; - ProblemScal *newtonStep; - double newtonTolerance; - int newtonMaxIter; + double operator()(const double& x) const { + return x * x * x; + } }; -#endif // =========================================================================== // ===== class NonLin ======================================================== diff --git a/demo/src/nonlin3.cc b/demo/src/nonlin3.cc index a5971474..b27beea7 100644 --- a/demo/src/nonlin3.cc +++ b/demo/src/nonlin3.cc @@ -18,11 +18,9 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const { - static double result; - result = exp(-10.0*(x*x)); - return result; - }; + double operator()(const WorldVector<double>& x) const { + return exp(-10.0 * (x * x)); + } }; class Zero : public AbstractFunction<double, WorldVector<double> > @@ -30,10 +28,9 @@ class Zero : public AbstractFunction<double, WorldVector<double> > public: MEMORY_MANAGED(Zero); - const double& operator()(const WorldVector<double>& x) const { - static double result = 0.0; - return result; - }; + double operator()(const WorldVector<double>& x) const { + return 0.0; + } }; /** \brief @@ -54,13 +51,13 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const { - static double result; + double operator()(const WorldVector<double>& x) const { int dow = x.getSize(); - double r2 = x*x, ux = exp(-10.0*r2), ux4 = ux*ux*ux*ux; - result = ux4 -(400.0*r2 - 20.0*dow)*ux; - return result; - }; + double r2 = x *x; + double ux = exp(-10.0*r2); + double ux4 = ux*ux*ux*ux; + return ux4 -(400.0*r2 - 20.0*dow)*ux; + } }; /** \brief @@ -76,11 +73,9 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const double& x) const { - static double result = 0.0; - result = x * x * x; - return result; - }; + double operator()(const double& x) const { + return x * x * x; + } }; class NewtonStepInterface diff --git a/demo/src/parallelellipt.cc b/demo/src/parallelellipt.cc index 3f9e2f74..dfd85111 100644 --- a/demo/src/parallelellipt.cc +++ b/demo/src/parallelellipt.cc @@ -17,12 +17,9 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const - { - static double result; - result = exp(-10.0*(x*x)); - return result; - }; + double operator()(const WorldVector<double>& x) const { + return exp(-10.0*(x*x)); + } }; class GrdG : public AbstractFunction<WorldVector<double>, WorldVector<double> > @@ -32,12 +29,9 @@ class GrdG : public AbstractFunction<WorldVector<double>, WorldVector<double> > /** \brief * Implementation of AbstractFunction::operator(). */ - const WorldVector<double>& operator()(const WorldVector<double>& x) const - { - static WorldVector<double> result; - result = x * -20.0 * exp(-10.0*(x*x)); - return result; - }; + WorldVector<double> operator()(const WorldVector<double>& x) const { + return x * -20.0 * exp(-10.0*(x*x)); + } }; /** \brief @@ -53,14 +47,12 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const { - static double result = 0.0; + double operator()(const WorldVector<double>& x) const { int dim = x.getSize(); double r2 = (x*x); double ux = exp(-10.0*r2); - result = -(400.0*r2 - 20.0*dim)*ux; - return result; - }; + return -(400.0*r2 - 20.0*dim)*ux; + } }; // ===== main program ===== diff --git a/demo/src/parallelheat.cc b/demo/src/parallelheat.cc index 45957be6..808222c7 100644 --- a/demo/src/parallelheat.cc +++ b/demo/src/parallelheat.cc @@ -21,18 +21,14 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& argX) const - { + double operator()(const WorldVector<double>& argX) const { WorldVector<double> x = argX; - static double result; int dim = x.getSize(); - int i; - for(i = 0; i < dim; i++) { + for (int i = 0; i < dim; i++) { x[i] -= *timePtr; } - result = sin(M_PI*(*timePtr)) * exp(-10.0*(x*x)); - return result; - }; + return sin(M_PI*(*timePtr)) * exp(-10.0*(x*x)); + } }; /** \brief @@ -49,23 +45,18 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& argX) const { + double operator()(const WorldVector<double>& argX) const { WorldVector<double> x = argX; - - static double result; - int dim = x.getSize(); - int i; - for(i = 0; i < dim; i++) { + for (int i = 0; i < dim; i++) { x[i] -= *timePtr; } double r2 = (x*x); double ux = sin(M_PI * (*timePtr)) * exp(-10.0*r2); double ut = M_PI * cos(M_PI*(*timePtr)) * exp(-10.0*r2); - result = ut -(400.0*r2 - 20.0*dim)*ux; - return result; - }; + return = ut -(400.0*r2 - 20.0*dim)*ux; + } }; // =========================================================================== diff --git a/demo/src/parametric.cc b/demo/src/parametric.cc index b452a398..1808b6d0 100644 --- a/demo/src/parametric.cc +++ b/demo/src/parametric.cc @@ -20,11 +20,9 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const { - static double result = 0.0; - result = -2 * x[0]; - return result; - }; + double operator()(const WorldVector<double>& x) const { + return -2.0 * x[0]; + } }; /** \brief @@ -47,8 +45,7 @@ public: * destructor */ ~ParametricSphere() { - int i; - for(i = 0; i < Global::getGeo(WORLD); i++) { + for (int i = 0; i < Global::getGeo(WORLD); i++) { DELETE parametricCoords[i]; } DELETE parametric; diff --git a/demo/src/periodic.cc b/demo/src/periodic.cc index c98501ca..8219a71b 100644 --- a/demo/src/periodic.cc +++ b/demo/src/periodic.cc @@ -15,11 +15,9 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const - { - static double result = 0.0; - return result; - }; + double operator()(const WorldVector<double>& x) const { + return 0.0; + } }; /** \brief @@ -35,13 +33,11 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const { - static double result = 0.0; + double operator()(const WorldVector<double>& x) const { int dim = x.getSize(); double r2 = (x*x); double ux = exp(-10.0*r2); - result = -(400.0*r2 - 20.0*dim)*ux; - return result; + return -(400.0*r2 - 20.0*dim)*ux; }; }; diff --git a/demo/src/smitest.cc b/demo/src/smitest.cc index 004d4fb6..ba939365 100644 --- a/demo/src/smitest.cc +++ b/demo/src/smitest.cc @@ -26,17 +26,8 @@ int main(int argc, char* argv[]) } std::cout << std::endl; - SMI_Begin_read_transaction(applicationID, 1); - -// int dim; -// SMI_Get_dim_of_coords(applicationID, meshIDs[numMeshes-1], &dim); -// std::cout << dim << std::endl; - -// SMI_End_read_transaction(applicationID, 1); - SMI_Remove_application(applicationID); - SMI_Disconnect(); } diff --git a/demo/src/sphere.cc b/demo/src/sphere.cc index be03b663..28d7eb0e 100644 --- a/demo/src/sphere.cc +++ b/demo/src/sphere.cc @@ -20,11 +20,9 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const { - static double result = 0.0; - result = -2 * x[0]; - return result; - }; + double operator()(const WorldVector<double>& x) const { + return -2.0 * x[0]; + } }; // =========================================================================== diff --git a/demo/src/stokesnonlin.cc b/demo/src/stokesnonlin.cc index bd05f6dc..220bf1a5 100644 --- a/demo/src/stokesnonlin.cc +++ b/demo/src/stokesnonlin.cc @@ -20,12 +20,9 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const - { - static double result; - result = x[comp]; - return result; - }; + double operator()(const WorldVector<double>& x) const { + return x[comp]; + } protected: /** \brief @@ -51,12 +48,9 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const - { - static double result = 0.0; - result = constant; - return result; - }; + double operator()(const WorldVector<double>& x) const { + return constant; + } protected: double constant; @@ -74,12 +68,9 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const - { - static double result = 0.0; - result = (x[0] == 0.0) || (x[0] == 1.0) ? 0.0 : 1.0; - return result; - }; + double operator()(const WorldVector<double>& x) const { + return (x[0] == 0.0) || (x[0] == 1.0) ? 0.0 : 1.0; + } protected: double constant; diff --git a/demo/src/torus.cc b/demo/src/torus.cc index fa1239d5..6d854270 100644 --- a/demo/src/torus.cc +++ b/demo/src/torus.cc @@ -34,15 +34,15 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const { - static double result = 0.0; + double operator()(const WorldVector<double>& x) const { WorldVector<double> myX = x; YRotation::rotate(myX, -rotation); - result = -2 * myX[0]; - return result; - }; + return -2.0 * myX[0]; + } - void rotate(double r) { rotation += r; }; + void rotate(double r) { + rotation += r; + }; private: double rotation; diff --git a/demo/src/vecellipt.cc b/demo/src/vecellipt.cc index e6d07b09..02981630 100644 --- a/demo/src/vecellipt.cc +++ b/demo/src/vecellipt.cc @@ -18,12 +18,9 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const - { - static double result; - result = exp(-10.0*(x*x)); - return result; - }; + double operator()(const WorldVector<double>& x) const { + return exp(-10.0 * (x * x)); + } }; /** \brief @@ -39,13 +36,11 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const { - static double result = 0.0; + double operator()(const WorldVector<double>& x) const { int dim = x.getSize(); - double r2 = (x*x); - double ux = exp(-10.0*r2); - result = -(400.0*r2 - 20.0*dim)*ux; - return result; + double r2 = (x * x); + double ux = exp(-10.0 * r2); + return -(400.0 * r2 - 20.0 * dim) * ux; }; }; diff --git a/demo/src/vecheat.cc b/demo/src/vecheat.cc index 0fc5f976..86093642 100644 --- a/demo/src/vecheat.cc +++ b/demo/src/vecheat.cc @@ -19,11 +19,8 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const - { - static double result; - result = sin(M_PI*(*timePtr)) * exp(-10.0*(x*x)); - return result; + double operator()(const WorldVector<double>& x) const { + return sin(M_PI * (*timePtr)) * exp(-10.0 * (x * x)); }; }; @@ -41,15 +38,12 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const - { - static double result; + double operator()(const WorldVector<double>& x) const { int dim = x.getSize(); - double r2 = (x*x); - double ux = sin(M_PI * (*timePtr)) * exp(-10.0*r2); - double ut = M_PI * cos(M_PI*(*timePtr)) * exp(-10.0*r2); - result = ut -(400.0*r2 - 20.0*dim)*ux; - return result; + double r2 = x * x; + double ux = sin(M_PI * (*timePtr)) * exp(-10.0 * r2); + double ut = M_PI * cos(M_PI * (*timePtr)) * exp(-10.0 * r2); + return ut - (400.0 * r2 - 20.0 * dim) * ux; }; }; diff --git a/demo/src/vecmultigrid.cc b/demo/src/vecmultigrid.cc index 863721ac..44b6970b 100644 --- a/demo/src/vecmultigrid.cc +++ b/demo/src/vecmultigrid.cc @@ -19,12 +19,9 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const - { - static double result; - result = exp(-10.0*(x*x)); - return result; - }; + double operator()(const WorldVector<double>& x) const { + return exp(-10.0*(x*x)); + } }; /** \brief @@ -40,13 +37,11 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const { - static double result = 0.0; + double operator()(const WorldVector<double>& x) const { int dim = x.getSize(); double r2 = (x*x); double ux = exp(-10.0*r2); - result = -(400.0*r2 - 20.0*dim)*ux; - return result; + return -(400.0*r2 - 20.0*dim)*ux; }; }; diff --git a/demo/src/vecnonlin.cc b/demo/src/vecnonlin.cc index a3922a9a..162c16ba 100644 --- a/demo/src/vecnonlin.cc +++ b/demo/src/vecnonlin.cc @@ -18,11 +18,9 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const { - static double result; - result = exp(-10.0*(x*x)); - return result; - }; + double operator()(const WorldVector<double>& x) const { + return exp(-10.0*(x*x)); + } }; /** \brief @@ -43,12 +41,12 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const WorldVector<double>& x) const { - static double result; - double r2 = x*x, ux = exp(-10.0*r2), ux4 = ux*ux*ux*ux; - result = sigma*ux4 - k*(400.0*r2 - 20.0*dim)*ux; - return result; - }; + double operator()(const WorldVector<double>& x) const { + double r2 = x*x; + double ux = exp(-10.0*r2); + double ux4 = ux*ux*ux*ux; + return sigma*ux4 - k*(400.0*r2 - 20.0*dim)*ux; + } private: double sigma; @@ -74,11 +72,9 @@ public: /** \brief * Implementation of AbstractFunction::operator(). */ - const double& operator()(const double& x) const { - static double result = 0.0; - result = sigma * x * x * x; - return result; - }; + double operator()(const double& x) const { + return sigma * x * x * x; + } private: double sigma; -- GitLab