diff --git a/src/finiteVolume/fields/fvPatchFields/derived/buoyantPressure/buoyantPressureFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/buoyantPressure/buoyantPressureFvPatchScalarField.C index 290c89eb5e..95f88fd0a3 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/buoyantPressure/buoyantPressureFvPatchScalarField.C +++ b/src/finiteVolume/fields/fvPatchFields/derived/buoyantPressure/buoyantPressureFvPatchScalarField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -55,8 +55,19 @@ buoyantPressureFvPatchScalarField fixedGradientFvPatchScalarField(p, iF), rhoName_(dict.lookupOrDefault("rho", "rho")) { - fvPatchField::operator=(patchInternalField()); - gradient() = 0.0; + if (dict.found("value") && dict.found("gradient")) + { + fvPatchField::operator= + ( + scalarField("value", dict, p.size()) + ); + gradient() = scalarField("gradient", dict, p.size()); + } + else + { + fvPatchField::operator=(patchInternalField()); + gradient() = 0.0; + } } diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxPressure/fixedFluxPressureFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxPressure/fixedFluxPressureFvPatchScalarField.C index 893dc030dc..12f59c1d11 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxPressure/fixedFluxPressureFvPatchScalarField.C +++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxPressure/fixedFluxPressureFvPatchScalarField.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 @@ -77,11 +77,13 @@ Foam::fixedFluxPressureFvPatchScalarField::fixedFluxPressureFvPatchScalarField DpName_(dict.lookupOrDefault("Dp", "Dp")), adjoint_(dict.lookupOrDefault("adjoint", false)) { - if (dict.found("gradient")) + if (dict.found("value") && dict.found("gradient")) { + fvPatchField::operator= + ( + scalarField("value", dict, p.size()) + ); gradient() = scalarField("gradient", dict, p.size()); - fixedGradientFvPatchScalarField::updateCoeffs(); - fixedGradientFvPatchScalarField::evaluate(); } else { @@ -190,7 +192,7 @@ void Foam::fixedFluxPressureFvPatchScalarField::updateCoeffs() void Foam::fixedFluxPressureFvPatchScalarField::write(Ostream& os) const { - fvPatchScalarField::write(os); + fixedGradientFvPatchScalarField::write(os); writeEntryIfDifferent(os, "phiHbyA", "phiHbyA", phiHbyAName_); writeEntryIfDifferent(os, "phi", "phi", phiName_); writeEntryIfDifferent(os, "rho", "rho", rhoName_); @@ -199,7 +201,7 @@ void Foam::fixedFluxPressureFvPatchScalarField::write(Ostream& os) const { os.writeKeyword("adjoint") << adjoint_ << token::END_STATEMENT << nl; } - gradient().writeEntry("gradient", os); + writeEntry("value", os); } diff --git a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/faceAreaWeightAMI/faceAreaWeightAMI.C b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/faceAreaWeightAMI/faceAreaWeightAMI.C index ed4ae2d9f0..2d5115f3eb 100644 --- a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/faceAreaWeightAMI/faceAreaWeightAMI.C +++ b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/faceAreaWeightAMI/faceAreaWeightAMI.C @@ -481,7 +481,8 @@ Foam::faceAreaWeightAMI::faceAreaWeightAMI const scalarField& srcMagSf, const scalarField& tgtMagSf, const faceAreaIntersect::triangulationMode& triMode, - const bool reverseTarget + const bool reverseTarget, + const bool restartUncoveredSourceFace ) : AMIMethod @@ -492,7 +493,8 @@ Foam::faceAreaWeightAMI::faceAreaWeightAMI tgtMagSf, triMode, reverseTarget - ) + ), + restartUncoveredSourceFace_(restartUncoveredSourceFace) {} @@ -557,7 +559,7 @@ void Foam::faceAreaWeightAMI::calculate // Check for badly covered faces - if (debug) + if (restartUncoveredSourceFace_) { restartUncoveredSourceFace ( diff --git a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/faceAreaWeightAMI/faceAreaWeightAMI.H b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/faceAreaWeightAMI/faceAreaWeightAMI.H index 2aff197745..d1a48a5423 100644 --- a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/faceAreaWeightAMI/faceAreaWeightAMI.H +++ b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/faceAreaWeightAMI/faceAreaWeightAMI.H @@ -51,6 +51,13 @@ class faceAreaWeightAMI : public AMIMethod { +private: + + // Private data + + //- Flag to restart uncovered source faces + const bool restartUncoveredSourceFace_; + protected: @@ -136,7 +143,8 @@ public: const scalarField& srcMagSf, const scalarField& tgtMagSf, const faceAreaIntersect::triangulationMode& triMode, - const bool reverseTarget = false + const bool reverseTarget = false, + const bool restartUncoveredSourceFace = true ); diff --git a/src/meshTools/searchableSurface/searchableSphere.C b/src/meshTools/searchableSurface/searchableSphere.C index 5c07f0b00d..c367c6281b 100644 --- a/src/meshTools/searchableSurface/searchableSphere.C +++ b/src/meshTools/searchableSurface/searchableSphere.C @@ -47,13 +47,11 @@ Foam::pointIndexHit Foam::searchableSphere::findNearest { pointIndexHit info(false, sample, -1); - const vector n(sample-centre_); - scalar magSqrN = magSqr(n); + const vector n(sample - centre_); + scalar magN = mag(n); - if (nearestDistSqr >= magSqrN) + if (nearestDistSqr >= sqr(magN - radius_)) { - scalar magN = Foam::sqrt(magSqrN); - if (magN < ROOTVSMALL) { info.rawPoint() = centre_ + vector(1,0,0)*radius_;