diff --git a/demo/src/ball.cc b/demo/src/ball.cc index 3f8beab09f7c45f9d81ba378e8d5467c8055edd6..610e923f8c13221b867a8903061ced2bacbecb7f 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 8140a25e2e9c386a8adad3d4c6f500482ec1e9bd..3e6506b713bdd31a4709933a34f74d5b3ce343bc 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 cc19311d835699b45bf5c803968c1e8ef42dfddc..91b15d75c6dbcfde4f1a79496cf5e8c6565edb05 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 9ccaf4a42dee990a8f48ca3e07d8fd5f25c8a2c5..9d303c635c1d176e1048a906346aac3a66f8e15f 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 c7a1b632dc9970de8770960fc876ec5893c05438..b539fa1fee008c27365e36aa881f2e4ce8745b10 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 6b4de6026122f11b61789d3133722f14ee28d8af..77ea2776ae9a49131e270909f5eb1fb1585a7d61 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 ec01163d2f206ac2a8cf7da9ac0c4c1db27f42e4..a09e79f0421e22a5087f992b1929c7e31cf34d05 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 77f265636075887900a957d35e1af718fa21ab71..80d001aa8cdf781af51b297c1e1a247b18dda5a7 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 685a83fb2a5112f6e8ac21420ee3cc5f07fe2f99..73831a44281f42e9dfd98f89608638e3ee98c3b2 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 920827c388225cdfbbcb10f5f4f5bfdd64f669d2..0259a1aa61ea72a7081ff62d852833a6134e58a3 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 246bd6b50f3e3f5499e4260eb8179c2ef23d00b5..00907933f9e7a45a2dc4140adcbd325e6ab57534 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 0974540f09c32f9827857a808f74bc645ab50193..fc84f16c272b57c5d7a38f545bdcf752c5505fda 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 a5971474019e49086e8afa538ac15a4d70cba5e3..b27beea710fbcfcb26271d43a6283545bb96db73 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 3f9e2f744fbeccac9a5bc40c2d2cab2491437bd3..dfd8511174d153816d56e3dd6fd57d031bd68d89 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 45957be6d92681dd1c58d6def7455a7e3954adb4..808222c743362f8d5a9ee86ede213618dbe70378 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 b452a398d77cfa636b217f87394df57011f12204..1808b6d0c0afec1d051d78cb65596e4e6ff402c2 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 c98501caa1671a48807e7057a7bd9b1d58162078..8219a71bc4766b3d9e3296264aa737eb98d55209 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 004d4fb62a1fd5db159775ae22eba9b943a1e2e8..ba939365d9383814351d66556d0c30b9ff3023bc 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 be03b663a532a69e3ef0a91cb35cd322b75e6c17..28d7eb0eaa059a58d4d55a3e99f5f31253ea8946 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 bd05f6dc9ecaec06c8885435757da411f67ca561..220bf1a5001d2bd13400e4fb0a625549becfec65 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 fa1239d5b5747ebf9301b8c7abf2b1aabe653650..6d854270dc603c23fb50c5d5619e556c57c990fc 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 e6d07b0961d73055f4a23de8690de2166e658d02..029816303caf74c3b78aa92afea8b144d6f852b8 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 0fc5f976c659fdaaf680a24b2f1e42f19700feab..86093642a855cee2aaef58d5cb544deff067faf7 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 863721accc765ac05718fa0da4cea9e80728c3e7..44b6970b0149851301bc0823b94f2bee2bbae37f 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 a3922a9a54025af57e77aaa1876fdd5fbaf3cca6..162c16ba87aed8e15c0a40a3a7104085b18c194e 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;