diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/alphaContactAngle/alphaContactAngleFvPatchScalarField.H b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/alphaContactAngle/alphaContactAngleFvPatchScalarField.H index 8f980046e2e0a6467675034e72dfc1e070d5e584..3245fa426250c5b06392e91661ccaffd78c0dd07 100644 --- a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/alphaContactAngle/alphaContactAngleFvPatchScalarField.H +++ b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/alphaContactAngle/alphaContactAngleFvPatchScalarField.H @@ -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-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -118,7 +118,7 @@ public: < interfaceThetaProps, multiphaseSystem::interfacePair, - multiphaseSystem::interfacePair::hash + multiphaseSystem::interfacePair::symmHash > thetaPropsTable; diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C index b55ffed9f7f58c4d372c334358c87df3faf394cb..4dd5c2ef51ba488dda6833bbee861def1e6ad4bd 100644 --- a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C +++ b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C @@ -92,18 +92,23 @@ void Foam::multiphaseSystem::solveAlphas() if (&phase2 == &phase1) continue; - surfaceScalarField phic - ( - (mag(phi_) + mag(phase1.phi() - phase2.phi()))/mesh_.magSf() - ); + surfaceScalarField phir(phase1.phi() - phase2.phi()); - surfaceScalarField phir + scalarCoeffSymmTable::const_iterator cAlpha ( - (phase1.phi() - phase2.phi()) - + min(cAlpha(phase1, phase2)*phic, max(phic)) - *nHatf(phase1, phase2) + cAlphas_.find(interfacePair(phase1, phase2)) ); + if (cAlpha != cAlphas_.end()) + { + surfaceScalarField phic + ( + (mag(phi_) + mag(phase1.phi() - phase2.phi()))/mesh_.magSf() + ); + + phir += min(cAlpha()*phic, max(phic))*nHatf(phase1, phase2); + } + word phirScheme ( "div(phir," + alpha2.name() + ',' + alpha1.name() + ')' @@ -189,67 +194,6 @@ void Foam::multiphaseSystem::solveAlphas() } -Foam::scalar Foam::multiphaseSystem::cAlpha -( - const phaseModel& phase1, - const phaseModel& phase2 -) const -{ - scalarCoeffTable::const_iterator cAlpha - ( - cAlphas_.find(interfacePair(phase1, phase2)) - ); - - if (cAlpha == cAlphas_.end()) - { - FatalErrorIn - ( - "multiphaseSystem::cAlpha" - "(const phaseModel& phase1, const phaseModel& phase2) const" - ) << "Cannot find interface " << interfacePair(phase1, phase2) - << " in list of cAlpha values" - << exit(FatalError); - } - - return cAlpha(); -} - - -Foam::dimensionedScalar Foam::multiphaseSystem::Cvm -( - const phaseModel& phase1, - const phaseModel& phase2 -) const -{ - scalarCoeffTable::const_iterator Cvm - ( - Cvms_.find(interfacePair(phase1, phase2)) - ); - - if (Cvm != Cvms_.end()) - { - return Cvm()*phase2.rho(); - } - - Cvm = Cvms_.find(interfacePair(phase2, phase1)); - - if (Cvm != Cvms_.end()) - { - return Cvm()*phase1.rho(); - } - - FatalErrorIn - ( - "multiphaseSystem::Cvm" - "(const phaseModel& phase1, const phaseModel& phase2) const" - ) << "Cannot find interface " << interfacePair(phase1, phase2) - << " in list of Cvm values" - << exit(FatalError); - - return Cvm()*phase2.rho(); -} - - Foam::tmp<Foam::surfaceVectorField> Foam::multiphaseSystem::nHatfv ( const volScalarField& alpha1, @@ -545,7 +489,24 @@ Foam::tmp<Foam::volScalarField> Foam::multiphaseSystem::Cvm if (&phase2 != &phase) { - tCvm() += Cvm(phase, phase2)*phase2; + scalarCoeffTable::const_iterator Cvm + ( + Cvms_.find(interfacePair(phase, phase2)) + ); + + if (Cvm != Cvms_.end()) + { + tCvm() += Cvm()*phase2.rho()*phase2; + } + else + { + Cvm = Cvms_.find(interfacePair(phase2, phase)); + + if (Cvm != Cvms_.end()) + { + tCvm() += Cvm()*phase.rho()*phase2; + } + } } } @@ -584,11 +545,28 @@ Foam::tmp<Foam::volVectorField> Foam::multiphaseSystem::Svm if (&phase2 != &phase) { - tSvm() += Cvm(phase, phase2)*phase2*phase2.DDtU(); + scalarCoeffTable::const_iterator Cvm + ( + Cvms_.find(interfacePair(phase, phase2)) + ); + + if (Cvm != Cvms_.end()) + { + tSvm() += Cvm()*phase2.rho()*phase2*phase2.DDtU(); + } + else + { + Cvm = Cvms_.find(interfacePair(phase2, phase)); + + if (Cvm != Cvms_.end()) + { + tSvm() += Cvm()*phase.rho()*phase2*phase2.DDtU(); + } + } } } - // Remove lift at fixed-flux boundaries + // Remove virtual mass at fixed-flux boundaries forAll(phase.phi().boundaryField(), patchi) { if @@ -737,7 +715,7 @@ Foam::tmp<Foam::surfaceScalarField> Foam::multiphaseSystem::surfaceTension if (&phase2 != &phase1) { - scalarCoeffTable::const_iterator sigma + scalarCoeffSymmTable::const_iterator sigma ( sigmas_.find(interfacePair(phase1, phase2)) ); diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.H b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.H index 79d1d72ab4d2563a7ba0893ccc4730c789fe7688..33ba3d76e926506d522797f2c16461841b77c344 100644 --- a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.H +++ b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.H @@ -72,6 +72,21 @@ public: { public: + class symmHash + : + public Hash<interfacePair> + { + public: + + symmHash() + {} + + label operator()(const interfacePair& key) const + { + return word::hash()(key.first()) + word::hash()(key.second()); + } + }; + class hash : public Hash<interfacePair> @@ -83,7 +98,7 @@ public: label operator()(const interfacePair& key) const { - return word::hash()(key.first()) + word::hash()(key.second()); + return word::hash()(key.first(), word::hash()(key.second())); } }; @@ -130,10 +145,10 @@ public: }; - typedef HashPtrTable<dragModel, interfacePair, interfacePair::hash> + typedef HashPtrTable<dragModel, interfacePair, interfacePair::symmHash> dragModelTable; - typedef HashPtrTable<volScalarField, interfacePair, interfacePair::hash> + typedef HashPtrTable<volScalarField, interfacePair, interfacePair::symmHash> dragCoeffFields; @@ -168,17 +183,20 @@ private: volScalarField alphas_; + typedef HashTable<scalar, interfacePair, interfacePair::symmHash> + scalarCoeffSymmTable; + typedef HashTable<scalar, interfacePair, interfacePair::hash> scalarCoeffTable; - scalarCoeffTable sigmas_; + scalarCoeffSymmTable sigmas_; dimensionSet dimSigma_; - scalarCoeffTable cAlphas_; + scalarCoeffSymmTable cAlphas_; scalarCoeffTable Cvms_; - typedef HashTable<dictionary, interfacePair, interfacePair::hash> + typedef HashTable<dictionary, interfacePair, interfacePair::symmHash> interfaceDictTable; dragModelTable dragModels_; @@ -196,18 +214,6 @@ private: void solveAlphas(); - scalar cAlpha - ( - const phaseModel& phase1, - const phaseModel& phase2 - ) const; - - dimensionedScalar Cvm - ( - const phaseModel& phase1, - const phaseModel& phase2 - ) const; - tmp<surfaceVectorField> nHatfv ( const volScalarField& alpha1, diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/CMakeLists.txt b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/CMakeLists.txt index 93dc9f702ef6899b14de013b222db6a32848f22a..0a615c5085bb0be31886c0bb3456569caca9988c 100644 --- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/CMakeLists.txt +++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/CMakeLists.txt @@ -19,6 +19,7 @@ LINK_DIRECTORIES( INCLUDE_DIRECTORIES( $ENV{WM_PROJECT_DIR}/src/OpenFOAM/lnInclude + $ENV{WM_PROJECT_DIR}/src/OSspecific/$ENV{WM_OSTYPE}/lnInclude $ENV{WM_PROJECT_DIR}/src/finiteVolume/lnInclude ${PROJECT_SOURCE_DIR}/../vtkPV3Foam ) diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/PV3blockMeshReader/CMakeLists.txt b/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/PV3blockMeshReader/CMakeLists.txt index f5d9f3f8678e3c7757de0a053cd7ac5bef58aa6c..ff2639ed4bfd4964b37f0a6fd633fa12fdfe908a 100644 --- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/PV3blockMeshReader/CMakeLists.txt +++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3blockMeshReader/PV3blockMeshReader/CMakeLists.txt @@ -19,6 +19,7 @@ LINK_DIRECTORIES( INCLUDE_DIRECTORIES( $ENV{WM_PROJECT_DIR}/src/OpenFOAM/lnInclude + $ENV{WM_PROJECT_DIR}/src/OSspecific/$ENV{WM_OSTYPE}/lnInclude $ENV{WM_PROJECT_DIR}/src/meshing/blockMesh/lnInclude ${PROJECT_SOURCE_DIR}/../vtkPV3blockMesh ) diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxPressure/fixedFluxPressureFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxPressure/fixedFluxPressureFvPatchScalarField.C index ebfc0a83862c78740a0e735f17082d17bfa1e2c5..893dc030dc3334867525cfb1200df6a6954aa31a 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxPressure/fixedFluxPressureFvPatchScalarField.C +++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxPressure/fixedFluxPressureFvPatchScalarField.C @@ -58,7 +58,7 @@ Foam::fixedFluxPressureFvPatchScalarField::fixedFluxPressureFvPatchScalarField phiHbyAName_(ptf.phiHbyAName_), phiName_(ptf.phiName_), rhoName_(ptf.rhoName_), - DpName_(ptf.rhoName_), + DpName_(ptf.DpName_), adjoint_(ptf.adjoint_) {} @@ -194,8 +194,11 @@ void Foam::fixedFluxPressureFvPatchScalarField::write(Ostream& os) const writeEntryIfDifferent<word>(os, "phiHbyA", "phiHbyA", phiHbyAName_); writeEntryIfDifferent<word>(os, "phi", "phi", phiName_); writeEntryIfDifferent<word>(os, "rho", "rho", rhoName_); - writeEntryIfDifferent<word>(os, "Dp", "Dp", rhoName_); - os.writeKeyword("adjoint") << adjoint_ << token::END_STATEMENT << nl; + writeEntryIfDifferent<word>(os, "Dp", "Dp", DpName_); + if (adjoint_) + { + os.writeKeyword("adjoint") << adjoint_ << token::END_STATEMENT << nl; + } gradient().writeEntry("gradient", os); } diff --git a/tutorials/multiphase/multiphaseEulerFoam/bubbleColumn/constant/transportProperties b/tutorials/multiphase/multiphaseEulerFoam/bubbleColumn/constant/transportProperties index 22545b07217af1c36a8388fb31ebf106c6e7cb27..bb819c4d0aa066dc4e908d183a24fed243af7f57 100644 --- a/tutorials/multiphase/multiphaseEulerFoam/bubbleColumn/constant/transportProperties +++ b/tutorials/multiphase/multiphaseEulerFoam/bubbleColumn/constant/transportProperties @@ -49,12 +49,10 @@ phases sigmas ( - (air water) 0.07 ); interfaceCompression ( - (air water) 0 ); virtualMass diff --git a/tutorials/multiphase/multiphaseEulerFoam/damBreak4phase/constant/transportProperties b/tutorials/multiphase/multiphaseEulerFoam/damBreak4phase/constant/transportProperties index fad0a7a482eabf8aabe1be23939748a5941cf13d..9ee595eb1341b3f939761f65d603ba1ca5679e2c 100644 --- a/tutorials/multiphase/multiphaseEulerFoam/damBreak4phase/constant/transportProperties +++ b/tutorials/multiphase/multiphaseEulerFoam/damBreak4phase/constant/transportProperties @@ -79,9 +79,6 @@ sigmas (air water) 0.07 (air oil) 0.07 (air mercury) 0.07 - (water oil) 0 - (water mercury) 0 - (oil mercury) 0 ); interfaceCompression @@ -89,19 +86,10 @@ interfaceCompression (air water) 1 (air oil) 1 (air mercury) 1 - (water oil) 0 - (water mercury) 0 - (oil mercury) 0 ); virtualMass ( - (air water) 0 - (air oil) 0 - (air mercury) 0 - (water oil) 0.5 - (water mercury) 0.5 - (oil mercury) 0.5 ); drag diff --git a/tutorials/multiphase/multiphaseEulerFoam/damBreak4phaseFine/constant/transportProperties b/tutorials/multiphase/multiphaseEulerFoam/damBreak4phaseFine/constant/transportProperties index fad0a7a482eabf8aabe1be23939748a5941cf13d..9ee595eb1341b3f939761f65d603ba1ca5679e2c 100644 --- a/tutorials/multiphase/multiphaseEulerFoam/damBreak4phaseFine/constant/transportProperties +++ b/tutorials/multiphase/multiphaseEulerFoam/damBreak4phaseFine/constant/transportProperties @@ -79,9 +79,6 @@ sigmas (air water) 0.07 (air oil) 0.07 (air mercury) 0.07 - (water oil) 0 - (water mercury) 0 - (oil mercury) 0 ); interfaceCompression @@ -89,19 +86,10 @@ interfaceCompression (air water) 1 (air oil) 1 (air mercury) 1 - (water oil) 0 - (water mercury) 0 - (oil mercury) 0 ); virtualMass ( - (air water) 0 - (air oil) 0 - (air mercury) 0 - (water oil) 0.5 - (water mercury) 0.5 - (oil mercury) 0.5 ); drag