diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.C b/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.C index 35db99fe0d7b77333efeda2f7ad159763dc3270e..d4a3ca5a0a7c1f7b3dfdd2fe55eb3879d26a68b9 100644 --- a/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.C +++ b/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -139,6 +139,21 @@ Foam::displacementLaplacianFvMotionSolver:: // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +Foam::motionDiffusivity& +Foam::displacementLaplacianFvMotionSolver::diffusivity() +{ + if (!diffusivityPtr_.valid()) + { + diffusivityPtr_ = motionDiffusivity::New + ( + fvMesh_, + coeffDict().lookup("diffusivity") + ); + } + return diffusivityPtr_(); +} + + Foam::tmp<Foam::pointField> Foam::displacementLaplacianFvMotionSolver::curPoints() const { @@ -210,14 +225,14 @@ void Foam::displacementLaplacianFvMotionSolver::solve() // the motionSolver accordingly movePoints(fvMesh_.points()); - diffusivityPtr_->correct(); + diffusivity().correct(); pointDisplacement_.boundaryField().updateCoeffs(); Foam::solve ( fvm::laplacian ( - diffusivityPtr_->operator()(), + diffusivity().operator()(), cellDisplacement_, "laplacian(diffusivity,cellDisplacement)" ) @@ -234,12 +249,7 @@ void Foam::displacementLaplacianFvMotionSolver::updateMesh // Update diffusivity. Note two stage to make sure old one is de-registered // before creating/registering new one. - diffusivityPtr_.reset(NULL); - diffusivityPtr_ = motionDiffusivity::New - ( - fvMesh_, - coeffDict().lookup("diffusivity") - ); + diffusivityPtr_.clear(); } diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.H b/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.H index c0b4e9970a25ae31d9b3f6970f8b779263b4383e..47ad2c672c9a8edd77a53cd1594f6680cb10d46a 100644 --- a/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.H +++ b/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -53,7 +53,6 @@ class motionDiffusivity; class displacementLaplacianFvMotionSolver : -// public displacementFvMotionSolver public displacementMotionSolver, public fvMotionSolverCore { @@ -120,6 +119,9 @@ public: return cellDisplacement_; } + //- Return reference to the diffusivity field + motionDiffusivity& diffusivity(); + //- Return point location obtained from the current motion field virtual tmp<pointField> curPoints() const;