44 displacementLaplacianFvMotionSolver,
52 Foam::displacementLaplacianFvMotionSolver::displacementLaplacianFvMotionSolver
64 fvMesh_.time().timeName(),
69 pointMesh::New(fvMesh_)
78 IOobject::READ_IF_PRESENT,
85 pointDisplacement_.dimensions(),
88 cellMotionBoundaryTypes<vector>(pointDisplacement_.boundaryField())
93 motionDiffusivity::New(*
this, lookup(
"diffusivity"))
97 found(
"frozenPointsZone")
98 ? fvMesh_.pointZones().findZoneID(lookup(
"frozenPointsZone"))
105 fvMesh_.time().timeName(),
113 Info<<
"displacementLaplacianFvMotionSolver:" <<
nl
114 <<
" diffusivity : " << diffusivityPtr_().type() <<
nl
115 <<
" frozenPoints zone : " << frozenPointsZone_ <<
endl;
126 pointMesh::New(fvMesh_)
132 Info<<
"displacementLaplacianFvMotionSolver :"
133 <<
" Read pointVectorField "
134 << io.name() <<
" to be used for boundary conditions on points."
136 <<
"Boundary conditions:"
137 << pointLocation_().boundaryField().types() <<
endl;
161 if (pointLocation_.valid())
165 Info<<
"displacementLaplacianFvMotionSolver : applying "
166 <<
" boundary conditions on " << pointLocation_().name()
167 <<
" to new point location."
171 pointLocation_().internalField() =
173 + pointDisplacement_.internalField();
175 pointLocation_().correctBoundaryConditions();
178 if (frozenPointsZone_ != -1)
180 const pointZone& pz = fvMesh_.pointZones()[frozenPointsZone_];
184 pointLocation_()[pz[i]] = points0()[pz[i]];
188 twoDCorrectPoints(pointLocation_().internalField());
196 points0() + pointDisplacement_.internalField()
200 if (frozenPointsZone_ != -1)
202 const pointZone& pz = fvMesh_.pointZones()[frozenPointsZone_];
206 tcurPoints()[pz[i]] = points0()[pz[i]];
210 twoDCorrectPoints(tcurPoints());
221 movePoints(fvMesh_.points());
223 diffusivityPtr_->correct();
224 pointDisplacement_.boundaryField().updateCoeffs();
230 diffusivityPtr_->operator()(),
232 "laplacian(diffusivity,cellDisplacement)"
247 diffusivityPtr_.reset(NULL);