mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
Merge branch 'master' of /home/dm4/OpenFOAM/OpenFOAM-dev
This commit is contained in:
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -85,7 +85,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
for (int corr=1; corr<=1; corr++)
|
for (int corr=1; corr<=1; corr++)
|
||||||
{
|
{
|
||||||
volScalarField rAU(1.0/UEqn.A());
|
volScalarField rAU("Dp", 1.0/UEqn.A());
|
||||||
volVectorField HbyA("HbyA", U);
|
volVectorField HbyA("HbyA", U);
|
||||||
HbyA = rAU*UEqn.H();
|
HbyA = rAU*UEqn.H();
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
rho = thermo.rho();
|
rho = thermo.rho();
|
||||||
|
|
||||||
volScalarField rAU(1.0/UEqn.A());
|
volScalarField rAU(1.0/UEqn.A());
|
||||||
surfaceScalarField rhorAUf(rAU.name() + 'f', fvc::interpolate(rho*rAU));
|
surfaceScalarField rhorAUf("Dp", fvc::interpolate(rho*rAU));
|
||||||
volVectorField HbyA("HbyA", U);
|
volVectorField HbyA("HbyA", U);
|
||||||
HbyA = rAU*UEqn.H();
|
HbyA = rAU*UEqn.H();
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
volScalarField rAU("rAU", 1.0/UEqn.A());
|
volScalarField rAU("rAU", 1.0/UEqn.A());
|
||||||
surfaceScalarField rAUf("(1|A(U))", fvc::interpolate(rAU));
|
surfaceScalarField rAUf("Dp", fvc::interpolate(rAU));
|
||||||
|
|
||||||
volVectorField HbyA("HbyA", U);
|
volVectorField HbyA("HbyA", U);
|
||||||
HbyA = rAU*UEqn.H();
|
HbyA = rAU*UEqn.H();
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
volScalarField rAU("rAU", 1.0/UEqn().A());
|
volScalarField rAU("rAU", 1.0/UEqn().A());
|
||||||
surfaceScalarField rAUf("(1|A(U))", fvc::interpolate(rAU));
|
surfaceScalarField rAUf("Dp", fvc::interpolate(rAU));
|
||||||
|
|
||||||
volVectorField HbyA("HbyA", U);
|
volVectorField HbyA("HbyA", U);
|
||||||
HbyA = rAU*UEqn().H();
|
HbyA = rAU*UEqn().H();
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
thermo.rho() -= psi*p_rgh;
|
thermo.rho() -= psi*p_rgh;
|
||||||
|
|
||||||
volScalarField rAU(1.0/UEqn.A());
|
volScalarField rAU(1.0/UEqn.A());
|
||||||
surfaceScalarField rhorAUf("(rho*(1|A(U)))", fvc::interpolate(rho*rAU));
|
surfaceScalarField rhorAUf("Dp", fvc::interpolate(rho*rAU));
|
||||||
|
|
||||||
volVectorField HbyA("HbyA", U);
|
volVectorField HbyA("HbyA", U);
|
||||||
HbyA = rAU*UEqn.H();
|
HbyA = rAU*UEqn.H();
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
rho.relax();
|
rho.relax();
|
||||||
|
|
||||||
volScalarField rAU(1.0/UEqn().A());
|
volScalarField rAU(1.0/UEqn().A());
|
||||||
surfaceScalarField rhorAUf("(rho*(1|A(U)))", fvc::interpolate(rho*rAU));
|
surfaceScalarField rhorAUf("Dp", fvc::interpolate(rho*rAU));
|
||||||
|
|
||||||
volVectorField HbyA("HbyA", U);
|
volVectorField HbyA("HbyA", U);
|
||||||
HbyA = rAU*UEqn().H();
|
HbyA = rAU*UEqn().H();
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
rho.relax();
|
rho.relax();
|
||||||
|
|
||||||
volScalarField rAU(1.0/UEqn().A());
|
volScalarField rAU(1.0/UEqn().A());
|
||||||
surfaceScalarField rhorAUf("(rho*(1|A(U)))", fvc::interpolate(rho*rAU));
|
surfaceScalarField rhorAUf("Dp", fvc::interpolate(rho*rAU));
|
||||||
|
|
||||||
U = rAU*UEqn().H();
|
U = rAU*UEqn().H();
|
||||||
UEqn.clear();
|
UEqn.clear();
|
||||||
@ -15,8 +15,8 @@
|
|||||||
dimensionedScalar compressibility = fvc::domainIntegrate(psi);
|
dimensionedScalar compressibility = fvc::domainIntegrate(psi);
|
||||||
bool compressible = (compressibility.value() > SMALL);
|
bool compressible = (compressibility.value() > SMALL);
|
||||||
|
|
||||||
surfaceScalarField buoyancyPhi(rhorAUf*ghf*fvc::snGrad(rho)*mesh.magSf());
|
surfaceScalarField phig(-rhorAUf*ghf*fvc::snGrad(rho)*mesh.magSf());
|
||||||
phi -= buoyancyPhi;
|
phi += phig;
|
||||||
|
|
||||||
// Solve pressure
|
// Solve pressure
|
||||||
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
|
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
|
||||||
@ -44,7 +44,7 @@
|
|||||||
|
|
||||||
// Correct the momentum source with the pressure gradient flux
|
// Correct the momentum source with the pressure gradient flux
|
||||||
// calculated from the relaxed pressure
|
// calculated from the relaxed pressure
|
||||||
U -= rAU*fvc::reconstruct((buoyancyPhi + p_rghEqn.flux())/rhorAUf);
|
U += rAU*fvc::reconstruct((phig - p_rghEqn.flux())/rhorAUf);
|
||||||
U.correctBoundaryConditions();
|
U.correctBoundaryConditions();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
rho = thermo.rho();
|
rho = thermo.rho();
|
||||||
|
|
||||||
volScalarField rAU(1.0/UEqn().A());
|
volScalarField rAU(1.0/UEqn().A());
|
||||||
surfaceScalarField rhorAUf("(rho*(1|A(U)))", fvc::interpolate(rho*rAU));
|
surfaceScalarField rhorAUf("Dp", fvc::interpolate(rho*rAU));
|
||||||
|
|
||||||
volVectorField HbyA("HbyA", U);
|
volVectorField HbyA("HbyA", U);
|
||||||
HbyA = rAU*UEqn().H();
|
HbyA = rAU*UEqn().H();
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
volScalarField rAU(1.0/UEqn().A());
|
volScalarField rAU(1.0/UEqn().A());
|
||||||
surfaceScalarField rAUf(rAU.name() + 'f', fvc::interpolate(rAU));
|
surfaceScalarField rAUf("Dp", fvc::interpolate(rAU));
|
||||||
|
|
||||||
volVectorField HbyA("HbyA", U);
|
volVectorField HbyA("HbyA", U);
|
||||||
HbyA = rAU*(UEqn() == sources(U))().H();
|
HbyA = rAU*(UEqn() == sources(U))().H();
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
rho = thermo.rho();
|
rho = thermo.rho();
|
||||||
|
|
||||||
volScalarField rAU(1.0/UEqn.A());
|
volScalarField rAU(1.0/UEqn.A());
|
||||||
surfaceScalarField rhorAUf(rAU.name() + 'f', fvc::interpolate(rho*rAU));
|
surfaceScalarField rhorAUf("Dp", fvc::interpolate(rho*rAU));
|
||||||
volVectorField HbyA("HbyA", U);
|
volVectorField HbyA("HbyA", U);
|
||||||
HbyA = rAU*UEqn.H();
|
HbyA = rAU*UEqn.H();
|
||||||
|
|
||||||
|
|||||||
@ -8,16 +8,21 @@
|
|||||||
surfaceScalarField rAU1f(fvc::interpolate(rAU1));
|
surfaceScalarField rAU1f(fvc::interpolate(rAU1));
|
||||||
surfaceScalarField rAU2f(fvc::interpolate(rAU2));
|
surfaceScalarField rAU2f(fvc::interpolate(rAU2));
|
||||||
|
|
||||||
U1 = rAU1*U1Eqn.H();
|
volVectorField HbyA1("HbyA1", U1);
|
||||||
U2 = rAU2*U2Eqn.H();
|
HbyA1 = rAU1*U1Eqn.H();
|
||||||
|
|
||||||
|
volVectorField HbyA2("HbyA2", U2);
|
||||||
|
HbyA2 = rAU2*U2Eqn.H();
|
||||||
|
|
||||||
surfaceScalarField phiDrag1
|
surfaceScalarField phiDrag1
|
||||||
(
|
(
|
||||||
fvc::interpolate(alpha2/rho1*dragCoef*rAU1)*phi2 + rAU1f*(g & mesh.Sf())
|
fvc::interpolate(alpha2/rho1*dragCoef*rAU1)*phi2
|
||||||
|
+ rAU1f*(g & mesh.Sf())
|
||||||
);
|
);
|
||||||
surfaceScalarField phiDrag2
|
surfaceScalarField phiDrag2
|
||||||
(
|
(
|
||||||
fvc::interpolate(alpha1/rho2*dragCoef*rAU2)*phi1 + rAU2f*(g & mesh.Sf())
|
fvc::interpolate(alpha1/rho2*dragCoef*rAU2)*phi1
|
||||||
|
+ rAU2f*(g & mesh.Sf())
|
||||||
);
|
);
|
||||||
|
|
||||||
forAll(p.boundaryField(), patchi)
|
forAll(p.boundaryField(), patchi)
|
||||||
@ -29,16 +34,25 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
phi1 = (fvc::interpolate(U1) & mesh.Sf()) + fvc::ddtPhiCorr(rAU1, U1, phi1)
|
surfaceScalarField phiHbyA1
|
||||||
+ phiDrag1;
|
(
|
||||||
phi2 = (fvc::interpolate(U2) & mesh.Sf()) + fvc::ddtPhiCorr(rAU2, U2, phi2)
|
(fvc::interpolate(HbyA1) & mesh.Sf())
|
||||||
+ phiDrag2;
|
+ fvc::ddtPhiCorr(rAU1, U1, phi1)
|
||||||
|
+ phiDrag1
|
||||||
|
);
|
||||||
|
|
||||||
phi = alpha1f*phi1 + alpha2f*phi2;
|
surfaceScalarField phiHbyA2
|
||||||
|
(
|
||||||
|
(fvc::interpolate(HbyA2) & mesh.Sf())
|
||||||
|
+ fvc::ddtPhiCorr(rAU2, U2, phi2)
|
||||||
|
+ phiDrag2
|
||||||
|
);
|
||||||
|
|
||||||
|
surfaceScalarField phiHbyA("phiHbyA", alpha1f*phiHbyA1 + alpha2f*phiHbyA2);
|
||||||
|
|
||||||
surfaceScalarField Dp
|
surfaceScalarField Dp
|
||||||
(
|
(
|
||||||
"(rho*(1|A(U)))",
|
"Dp",
|
||||||
alpha1f*rAU1f/rho1 + alpha2f*rAU2f/rho2
|
alpha1f*rAU1f/rho1 + alpha2f*rAU2f/rho2
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -46,7 +60,7 @@
|
|||||||
{
|
{
|
||||||
fvScalarMatrix pEqn
|
fvScalarMatrix pEqn
|
||||||
(
|
(
|
||||||
fvm::laplacian(Dp, p) == fvc::div(phi)
|
fvm::laplacian(Dp, p) == fvc::div(phiHbyA)
|
||||||
);
|
);
|
||||||
|
|
||||||
pEqn.setReference(pRefCell, pRefValue);
|
pEqn.setReference(pRefCell, pRefValue);
|
||||||
@ -57,19 +71,17 @@
|
|||||||
{
|
{
|
||||||
surfaceScalarField SfGradp(pEqn.flux()/Dp);
|
surfaceScalarField SfGradp(pEqn.flux()/Dp);
|
||||||
|
|
||||||
phi1 -= rAU1f*SfGradp/rho1;
|
phi1 = phiHbyA1 - rAU1f*SfGradp/rho1;
|
||||||
phi2 -= rAU2f*SfGradp/rho2;
|
phi2 = phiHbyA2 - rAU2f*SfGradp/rho2;
|
||||||
phi = alpha1f*phi1 + alpha2f*phi2;
|
phi = alpha1f*phi1 + alpha2f*phi2;
|
||||||
|
|
||||||
p.relax();
|
p.relax();
|
||||||
SfGradp = pEqn.flux()/Dp;
|
SfGradp = pEqn.flux()/Dp;
|
||||||
|
|
||||||
U1 += (fvc::reconstruct(phiDrag1 - rAU1f*SfGradp/rho1));
|
U1 = HbyA1 + (fvc::reconstruct(phiDrag1 - rAU1f*SfGradp/rho1));
|
||||||
//U1 += rAU1*(fvc::reconstruct(phiDrag1/rAU1f - SfGradp/rho1));
|
|
||||||
U1.correctBoundaryConditions();
|
U1.correctBoundaryConditions();
|
||||||
|
|
||||||
U2 += (fvc::reconstruct(phiDrag2 - rAU2f*SfGradp/rho2));
|
U2 = HbyA2 + (fvc::reconstruct(phiDrag2 - rAU2f*SfGradp/rho2));
|
||||||
//U2 += rAU2*(fvc::reconstruct(phiDrag2/rAU2f - SfGradp/rho2));
|
|
||||||
U2.correctBoundaryConditions();
|
U2.correctBoundaryConditions();
|
||||||
|
|
||||||
U = alpha1*U1 + alpha2*U2;
|
U = alpha1*U1 + alpha2*U2;
|
||||||
|
|||||||
@ -12,7 +12,7 @@
|
|||||||
surfaceScalarField rhof("rhof", fvc::interpolate(rho));
|
surfaceScalarField rhof("rhof", fvc::interpolate(rho));
|
||||||
|
|
||||||
volScalarField rAU(1.0/UEqn.A());
|
volScalarField rAU(1.0/UEqn.A());
|
||||||
surfaceScalarField rAUf("rAUf", rhof*fvc::interpolate(rAU));
|
surfaceScalarField rAUf("Dp", rhof*fvc::interpolate(rAU));
|
||||||
|
|
||||||
volVectorField HbyA("HbyA", U);
|
volVectorField HbyA("HbyA", U);
|
||||||
HbyA = rAU*UEqn.H();
|
HbyA = rAU*UEqn.H();
|
||||||
|
|||||||
@ -10,7 +10,6 @@ EXE_INC = \
|
|||||||
${EXE_NDEBUG} \
|
${EXE_NDEBUG} \
|
||||||
${CGAL_INC} \
|
${CGAL_INC} \
|
||||||
-I$(FOAM_APP)/utilities/mesh/generation/extrude2DMesh/extrude2DMesh/lnInclude \
|
-I$(FOAM_APP)/utilities/mesh/generation/extrude2DMesh/extrude2DMesh/lnInclude \
|
||||||
-I$(FOAM_APP)/utilities/mesh/generation/extrude/extrudeModel/lnInclude \
|
|
||||||
-IconformalVoronoi2DMesh/lnInclude \
|
-IconformalVoronoi2DMesh/lnInclude \
|
||||||
-I$(FOAM_APP)/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/lnInclude \
|
-I$(FOAM_APP)/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/lnInclude \
|
||||||
-I$(LIB_SRC)/finiteVolume/lnInclude \
|
-I$(LIB_SRC)/finiteVolume/lnInclude \
|
||||||
@ -18,6 +17,7 @@ EXE_INC = \
|
|||||||
-I$(LIB_SRC)/surfMesh/lnInclude \
|
-I$(LIB_SRC)/surfMesh/lnInclude \
|
||||||
-I$(LIB_SRC)/edgeMesh/lnInclude \
|
-I$(LIB_SRC)/edgeMesh/lnInclude \
|
||||||
-I$(LIB_SRC)/dynamicMesh/lnInclude \
|
-I$(LIB_SRC)/dynamicMesh/lnInclude \
|
||||||
|
-I$(LIB_SRC)/mesh/extrudeModel/lnInclude \
|
||||||
-I$(LIB_SRC)/triSurface/lnInclude
|
-I$(LIB_SRC)/triSurface/lnInclude
|
||||||
|
|
||||||
EXE_LIBS = \
|
EXE_LIBS = \
|
||||||
|
|||||||
@ -2,7 +2,6 @@
|
|||||||
cd ${0%/*} || exit 1 # run from this directory
|
cd ${0%/*} || exit 1 # run from this directory
|
||||||
set -x
|
set -x
|
||||||
|
|
||||||
wclean libso extrudeModel
|
|
||||||
wclean extrudeMesh
|
wclean extrudeMesh
|
||||||
wclean extrudeToRegionMesh
|
wclean extrudeToRegionMesh
|
||||||
|
|
||||||
|
|||||||
@ -2,10 +2,7 @@
|
|||||||
cd ${0%/*} || exit 1 # run from this directory
|
cd ${0%/*} || exit 1 # run from this directory
|
||||||
set -x
|
set -x
|
||||||
|
|
||||||
wmake libso extrudeModel
|
|
||||||
wmake extrudeMesh
|
wmake extrudeMesh
|
||||||
|
|
||||||
wmake libso extrudeToRegionMesh/createShellMesh
|
|
||||||
wmake extrudeToRegionMesh
|
wmake extrudeToRegionMesh
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,10 +1,10 @@
|
|||||||
EXE_INC = \
|
EXE_INC = \
|
||||||
-IextrudedMesh \
|
-IextrudedMesh \
|
||||||
-I../extrudeModel/lnInclude \
|
|
||||||
-I$(LIB_SRC)/finiteVolume/lnInclude \
|
-I$(LIB_SRC)/finiteVolume/lnInclude \
|
||||||
-I$(LIB_SRC)/surfMesh/lnInclude \
|
-I$(LIB_SRC)/surfMesh/lnInclude \
|
||||||
-I$(LIB_SRC)/meshTools/lnInclude \
|
-I$(LIB_SRC)/meshTools/lnInclude \
|
||||||
-I$(LIB_SRC)/dynamicMesh/lnInclude
|
-I$(LIB_SRC)/dynamicMesh/lnInclude \
|
||||||
|
-I$(LIB_SRC)/mesh/extrudeModel/lnInclude
|
||||||
|
|
||||||
EXE_LIBS = \
|
EXE_LIBS = \
|
||||||
-lfiniteVolume \
|
-lfiniteVolume \
|
||||||
|
|||||||
@ -1,13 +1,11 @@
|
|||||||
EXE_INC = \
|
EXE_INC = \
|
||||||
-I../extrudeModel/lnInclude \
|
|
||||||
-IcreateShellMesh/lnInclude \
|
|
||||||
-I$(LIB_SRC)/finiteVolume/lnInclude \
|
-I$(LIB_SRC)/finiteVolume/lnInclude \
|
||||||
-I$(LIB_SRC)/meshTools/lnInclude \
|
-I$(LIB_SRC)/meshTools/lnInclude \
|
||||||
-I$(LIB_SRC)/dynamicMesh/lnInclude
|
-I$(LIB_SRC)/dynamicMesh/lnInclude \
|
||||||
|
-I$(LIB_SRC)/mesh/extrudeModel/lnInclude
|
||||||
|
|
||||||
EXE_LIBS = \
|
EXE_LIBS = \
|
||||||
-lextrudeModel \
|
|
||||||
-lcreateShellMesh \
|
|
||||||
-lfiniteVolume \
|
-lfiniteVolume \
|
||||||
-lmeshTools \
|
-lmeshTools \
|
||||||
-ldynamicMesh
|
-ldynamicMesh \
|
||||||
|
-lextrudeModel
|
||||||
|
|||||||
@ -3,7 +3,7 @@ EXE_INC = \
|
|||||||
-I$(LIB_SRC)/surfMesh/lnInclude \
|
-I$(LIB_SRC)/surfMesh/lnInclude \
|
||||||
-I$(LIB_SRC)/dynamicMesh/lnInclude \
|
-I$(LIB_SRC)/dynamicMesh/lnInclude \
|
||||||
-Iextrude2DMesh/lnInclude \
|
-Iextrude2DMesh/lnInclude \
|
||||||
-I../extrude/extrudeModel/lnInclude
|
-I$(LIB_SRC)/mesh/extrudeModel/lnInclude
|
||||||
|
|
||||||
EXE_LIBS = \
|
EXE_LIBS = \
|
||||||
-lsurfMesh \
|
-lsurfMesh \
|
||||||
|
|||||||
@ -4,7 +4,7 @@ EXE_INC = \
|
|||||||
-I$(LIB_SRC)/dynamicMesh/lnInclude \
|
-I$(LIB_SRC)/dynamicMesh/lnInclude \
|
||||||
-I$(LIB_SRC)/finiteVolume/lnInclude \
|
-I$(LIB_SRC)/finiteVolume/lnInclude \
|
||||||
-I$(LIB_SRC)/surfMesh/lnInclude \
|
-I$(LIB_SRC)/surfMesh/lnInclude \
|
||||||
-I$(FOAM_APP)/utilities/mesh/generation/extrude/extrudeModel/lnInclude
|
-I$(LIB_SRC)/mesh/extrudeModel/lnInclude
|
||||||
|
|
||||||
LIB_LIBS = \
|
LIB_LIBS = \
|
||||||
-lmeshTools \
|
-lmeshTools \
|
||||||
|
|||||||
@ -30,9 +30,6 @@ surface1.stl
|
|||||||
|
|
||||||
// Write options
|
// Write options
|
||||||
|
|
||||||
// Write .eMesh file (for snappyHexMesh)
|
|
||||||
writeFeatureEdgeMesh yes;
|
|
||||||
|
|
||||||
// Write features to obj format for postprocessing
|
// Write features to obj format for postprocessing
|
||||||
writeObj yes;
|
writeObj yes;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -52,6 +52,8 @@ wmake $makeType conversion
|
|||||||
|
|
||||||
wmake $makeType sampling
|
wmake $makeType sampling
|
||||||
|
|
||||||
|
wmake $makeType mesh/extrudeModel
|
||||||
|
|
||||||
wmake $makeType dynamicMesh
|
wmake $makeType dynamicMesh
|
||||||
wmake $makeType dynamicFvMesh
|
wmake $makeType dynamicFvMesh
|
||||||
wmake $makeType topoChangerFvMesh
|
wmake $makeType topoChangerFvMesh
|
||||||
|
|||||||
@ -130,6 +130,7 @@ Foam::solution::solution
|
|||||||
obr,
|
obr,
|
||||||
(
|
(
|
||||||
obr.readOpt() == IOobject::MUST_READ
|
obr.readOpt() == IOobject::MUST_READ
|
||||||
|
|| obr.readOpt() == IOobject::READ_IF_PRESENT
|
||||||
? IOobject::MUST_READ_IF_MODIFIED
|
? IOobject::MUST_READ_IF_MODIFIED
|
||||||
: obr.readOpt()
|
: obr.readOpt()
|
||||||
),
|
),
|
||||||
@ -148,6 +149,7 @@ Foam::solution::solution
|
|||||||
(
|
(
|
||||||
readOpt() == IOobject::MUST_READ
|
readOpt() == IOobject::MUST_READ
|
||||||
|| readOpt() == IOobject::MUST_READ_IF_MODIFIED
|
|| readOpt() == IOobject::MUST_READ_IF_MODIFIED
|
||||||
|
|| (readOpt() == IOobject::READ_IF_PRESENT && headerOk())
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
read(solutionDict());
|
read(solutionDict());
|
||||||
|
|||||||
@ -132,6 +132,84 @@ Foam::polyBoundaryMesh::polyBoundaryMesh
|
|||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::polyBoundaryMesh::polyBoundaryMesh
|
||||||
|
(
|
||||||
|
const IOobject& io,
|
||||||
|
const polyMesh& pm,
|
||||||
|
const polyPatchList& ppl
|
||||||
|
)
|
||||||
|
:
|
||||||
|
polyPatchList(),
|
||||||
|
regIOobject(io),
|
||||||
|
mesh_(pm)
|
||||||
|
{
|
||||||
|
if
|
||||||
|
(
|
||||||
|
(this->readOpt() == IOobject::READ_IF_PRESENT && this->headerOk())
|
||||||
|
|| this->readOpt() == IOobject::MUST_READ
|
||||||
|
|| this->readOpt() == IOobject::MUST_READ_IF_MODIFIED
|
||||||
|
)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (readOpt() == IOobject::MUST_READ_IF_MODIFIED)
|
||||||
|
{
|
||||||
|
WarningIn
|
||||||
|
(
|
||||||
|
"polyBoundaryMesh::polyBoundaryMesh\n"
|
||||||
|
"(\n"
|
||||||
|
" const IOobject&,\n"
|
||||||
|
" const polyMesh&\n"
|
||||||
|
" const polyPatchList&\n"
|
||||||
|
")"
|
||||||
|
) << "Specified IOobject::MUST_READ_IF_MODIFIED but class"
|
||||||
|
<< " does not support automatic rereading."
|
||||||
|
<< endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
polyPatchList& patches = *this;
|
||||||
|
|
||||||
|
// Read polyPatchList
|
||||||
|
Istream& is = readStream(typeName);
|
||||||
|
|
||||||
|
PtrList<entry> patchEntries(is);
|
||||||
|
patches.setSize(patchEntries.size());
|
||||||
|
|
||||||
|
forAll(patches, patchI)
|
||||||
|
{
|
||||||
|
patches.set
|
||||||
|
(
|
||||||
|
patchI,
|
||||||
|
polyPatch::New
|
||||||
|
(
|
||||||
|
patchEntries[patchI].keyword(),
|
||||||
|
patchEntries[patchI].dict(),
|
||||||
|
patchI,
|
||||||
|
*this
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check state of IOstream
|
||||||
|
is.check
|
||||||
|
(
|
||||||
|
"polyBoundaryMesh::polyBoundaryMesh"
|
||||||
|
"(const IOobject&, const polyMesh&, const polyPatchList&)"
|
||||||
|
);
|
||||||
|
|
||||||
|
close();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
polyPatchList& patches = *this;
|
||||||
|
patches.setSize(ppl.size());
|
||||||
|
forAll (patches, patchI)
|
||||||
|
{
|
||||||
|
patches.set(patchI, ppl[patchI].clone(*this).ptr());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
Foam::polyBoundaryMesh::~polyBoundaryMesh()
|
Foam::polyBoundaryMesh::~polyBoundaryMesh()
|
||||||
|
|||||||
@ -119,6 +119,14 @@ public:
|
|||||||
const label size
|
const label size
|
||||||
);
|
);
|
||||||
|
|
||||||
|
//- Construct given polyPatchList
|
||||||
|
polyBoundaryMesh
|
||||||
|
(
|
||||||
|
const IOobject&,
|
||||||
|
const polyMesh&,
|
||||||
|
const polyPatchList&
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
//- Destructor
|
//- Destructor
|
||||||
~polyBoundaryMesh();
|
~polyBoundaryMesh();
|
||||||
|
|||||||
@ -338,7 +338,7 @@ Foam::polyMesh::polyMesh
|
|||||||
instance(),
|
instance(),
|
||||||
meshSubDir,
|
meshSubDir,
|
||||||
*this,
|
*this,
|
||||||
IOobject::NO_READ,
|
io.readOpt(),
|
||||||
IOobject::AUTO_WRITE
|
IOobject::AUTO_WRITE
|
||||||
),
|
),
|
||||||
points
|
points
|
||||||
@ -351,7 +351,7 @@ Foam::polyMesh::polyMesh
|
|||||||
instance(),
|
instance(),
|
||||||
meshSubDir,
|
meshSubDir,
|
||||||
*this,
|
*this,
|
||||||
IOobject::NO_READ,
|
io.readOpt(),
|
||||||
IOobject::AUTO_WRITE
|
IOobject::AUTO_WRITE
|
||||||
),
|
),
|
||||||
faces
|
faces
|
||||||
@ -364,7 +364,7 @@ Foam::polyMesh::polyMesh
|
|||||||
instance(),
|
instance(),
|
||||||
meshSubDir,
|
meshSubDir,
|
||||||
*this,
|
*this,
|
||||||
IOobject::NO_READ,
|
io.readOpt(),
|
||||||
IOobject::AUTO_WRITE
|
IOobject::AUTO_WRITE
|
||||||
),
|
),
|
||||||
owner
|
owner
|
||||||
@ -377,7 +377,7 @@ Foam::polyMesh::polyMesh
|
|||||||
instance(),
|
instance(),
|
||||||
meshSubDir,
|
meshSubDir,
|
||||||
*this,
|
*this,
|
||||||
IOobject::NO_READ,
|
io.readOpt(),
|
||||||
IOobject::AUTO_WRITE
|
IOobject::AUTO_WRITE
|
||||||
),
|
),
|
||||||
neighbour
|
neighbour
|
||||||
@ -391,11 +391,11 @@ Foam::polyMesh::polyMesh
|
|||||||
instance(),
|
instance(),
|
||||||
meshSubDir,
|
meshSubDir,
|
||||||
*this,
|
*this,
|
||||||
IOobject::NO_READ,
|
io.readOpt(),
|
||||||
IOobject::AUTO_WRITE
|
IOobject::AUTO_WRITE
|
||||||
),
|
),
|
||||||
*this,
|
*this,
|
||||||
0
|
polyPatchList()
|
||||||
),
|
),
|
||||||
bounds_(points_, syncPar),
|
bounds_(points_, syncPar),
|
||||||
geometricD_(Vector<label>::zero),
|
geometricD_(Vector<label>::zero),
|
||||||
@ -410,11 +410,11 @@ Foam::polyMesh::polyMesh
|
|||||||
instance(),
|
instance(),
|
||||||
meshSubDir,
|
meshSubDir,
|
||||||
*this,
|
*this,
|
||||||
IOobject::NO_READ,
|
io.readOpt(),
|
||||||
IOobject::NO_WRITE
|
IOobject::NO_WRITE
|
||||||
),
|
),
|
||||||
*this,
|
*this,
|
||||||
0
|
PtrList<pointZone>()
|
||||||
),
|
),
|
||||||
faceZones_
|
faceZones_
|
||||||
(
|
(
|
||||||
@ -424,11 +424,11 @@ Foam::polyMesh::polyMesh
|
|||||||
instance(),
|
instance(),
|
||||||
meshSubDir,
|
meshSubDir,
|
||||||
*this,
|
*this,
|
||||||
IOobject::NO_READ,
|
io.readOpt(),
|
||||||
IOobject::NO_WRITE
|
IOobject::NO_WRITE
|
||||||
),
|
),
|
||||||
*this,
|
*this,
|
||||||
0
|
PtrList<faceZone>()
|
||||||
),
|
),
|
||||||
cellZones_
|
cellZones_
|
||||||
(
|
(
|
||||||
@ -438,11 +438,11 @@ Foam::polyMesh::polyMesh
|
|||||||
instance(),
|
instance(),
|
||||||
meshSubDir,
|
meshSubDir,
|
||||||
*this,
|
*this,
|
||||||
IOobject::NO_READ,
|
io.readOpt(),
|
||||||
IOobject::NO_WRITE
|
IOobject::NO_WRITE
|
||||||
),
|
),
|
||||||
*this,
|
*this,
|
||||||
0
|
PtrList<cellZone>()
|
||||||
),
|
),
|
||||||
globalMeshDataPtr_(NULL),
|
globalMeshDataPtr_(NULL),
|
||||||
moving_(false),
|
moving_(false),
|
||||||
|
|||||||
@ -162,6 +162,32 @@ Foam::ZoneMesh<ZoneType, MeshType>::ZoneMesh
|
|||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
template<class ZoneType, class MeshType>
|
||||||
|
Foam::ZoneMesh<ZoneType, MeshType>::ZoneMesh
|
||||||
|
(
|
||||||
|
const IOobject& io ,
|
||||||
|
const MeshType& mesh,
|
||||||
|
const PtrList<ZoneType>& pzm
|
||||||
|
)
|
||||||
|
:
|
||||||
|
PtrList<ZoneType>(),
|
||||||
|
regIOobject(io),
|
||||||
|
mesh_(mesh),
|
||||||
|
zoneMapPtr_(NULL)
|
||||||
|
{
|
||||||
|
ZoneMesh<ZoneType, MeshType>(io, mesh);
|
||||||
|
|
||||||
|
if (this->size() == 0)
|
||||||
|
{
|
||||||
|
PtrList<ZoneType>& zones = *this;
|
||||||
|
zones.setSize(pzm.size());
|
||||||
|
forAll (zones, zoneI)
|
||||||
|
{
|
||||||
|
zones.set(zoneI, pzm[zoneI].clone(*this).ptr());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
template<class ZoneType, class MeshType>
|
template<class ZoneType, class MeshType>
|
||||||
|
|||||||
@ -106,6 +106,15 @@ public:
|
|||||||
const label size
|
const label size
|
||||||
);
|
);
|
||||||
|
|
||||||
|
//- Construct given a PtrList
|
||||||
|
ZoneMesh
|
||||||
|
(
|
||||||
|
const IOobject&,
|
||||||
|
const MeshType&,
|
||||||
|
const PtrList<ZoneType>&
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
//- Destructor
|
//- Destructor
|
||||||
~ZoneMesh();
|
~ZoneMesh();
|
||||||
|
|
||||||
|
|||||||
@ -86,4 +86,9 @@ motionSmoother/polyMeshGeometry/polyMeshGeometry.C
|
|||||||
|
|
||||||
motionSolver/motionSolver.C
|
motionSolver/motionSolver.C
|
||||||
|
|
||||||
|
createShellMesh/createShellMesh.C
|
||||||
|
|
||||||
|
extrudePatchMesh/extrudePatchMesh.C
|
||||||
|
|
||||||
|
|
||||||
LIB = $(FOAM_LIBBIN)/libdynamicMesh
|
LIB = $(FOAM_LIBBIN)/libdynamicMesh
|
||||||
|
|||||||
@ -1,8 +1,10 @@
|
|||||||
EXE_INC = \
|
EXE_INC = \
|
||||||
-I$(LIB_SRC)/finiteVolume/lnInclude \
|
-I$(LIB_SRC)/finiteVolume/lnInclude \
|
||||||
-I$(LIB_SRC)/meshTools/lnInclude \
|
-I$(LIB_SRC)/meshTools/lnInclude \
|
||||||
-I$(LIB_SRC)/triSurface/lnInclude
|
-I$(LIB_SRC)/triSurface/lnInclude \
|
||||||
|
-I$(LIB_SRC)/mesh/extrudeModel/lnInclude
|
||||||
|
|
||||||
LIB_LIBS = \
|
LIB_LIBS = \
|
||||||
-lfiniteVolume \
|
-lfiniteVolume \
|
||||||
-ltriSurface
|
-ltriSurface \
|
||||||
|
-lextrudeModel
|
||||||
|
|||||||
283
src/dynamicMesh/extrudePatchMesh/extrudePatchMesh.C
Normal file
283
src/dynamicMesh/extrudePatchMesh/extrudePatchMesh.C
Normal file
@ -0,0 +1,283 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2012-2012 OpenCFD Ltd.
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "extrudePatchMesh.H"
|
||||||
|
|
||||||
|
#include "createShellMesh.H"
|
||||||
|
#include "polyTopoChange.H"
|
||||||
|
#include "wallPolyPatch.H"
|
||||||
|
#include "emptyPolyPatch.H"
|
||||||
|
#include "wedgePolyPatch.H"
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
defineTypeNameAndDebug(extrudePatchMesh, 0);
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
extrudePatchMesh::extrudePatchMesh
|
||||||
|
(
|
||||||
|
const fvMesh& mesh,
|
||||||
|
const fvPatch& patch,
|
||||||
|
const dictionary& dict
|
||||||
|
)
|
||||||
|
:
|
||||||
|
fvMesh
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
dict.lookup("region"),
|
||||||
|
mesh.facesInstance(),
|
||||||
|
mesh,
|
||||||
|
IOobject::READ_IF_PRESENT,
|
||||||
|
IOobject::NO_WRITE,
|
||||||
|
true
|
||||||
|
),
|
||||||
|
xferCopy(pointField()),
|
||||||
|
xferCopy(faceList()),
|
||||||
|
xferCopy(labelList()),
|
||||||
|
xferCopy(labelList()),
|
||||||
|
false
|
||||||
|
),
|
||||||
|
extrudedPatch_(patch.patch())
|
||||||
|
{
|
||||||
|
if (this->boundaryMesh().size() == 0)
|
||||||
|
{
|
||||||
|
bool columnCells = readBool(dict.lookup("columnCells"));
|
||||||
|
|
||||||
|
PackedBoolList nonManifoldEdge(extrudedPatch_.nEdges());
|
||||||
|
for (label edgeI = 0; edgeI < extrudedPatch_.nInternalEdges(); edgeI++)
|
||||||
|
{
|
||||||
|
if (columnCells)
|
||||||
|
{
|
||||||
|
nonManifoldEdge[edgeI] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
autoPtr<extrudeModel> model_(extrudeModel::New(dict));
|
||||||
|
|
||||||
|
faceList pointGlobalRegions;
|
||||||
|
faceList pointLocalRegions;
|
||||||
|
labelList localToGlobalRegion;
|
||||||
|
|
||||||
|
const primitiveFacePatch pp
|
||||||
|
(
|
||||||
|
extrudedPatch_, extrudedPatch_.points()
|
||||||
|
);
|
||||||
|
|
||||||
|
createShellMesh::calcPointRegions
|
||||||
|
(
|
||||||
|
this->globalData(),
|
||||||
|
pp,
|
||||||
|
nonManifoldEdge,
|
||||||
|
false,
|
||||||
|
|
||||||
|
pointGlobalRegions,
|
||||||
|
pointLocalRegions,
|
||||||
|
localToGlobalRegion
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
// Per local region an originating point
|
||||||
|
labelList localRegionPoints(localToGlobalRegion.size());
|
||||||
|
forAll(pointLocalRegions, faceI)
|
||||||
|
{
|
||||||
|
const face& f = extrudedPatch_.localFaces()[faceI];
|
||||||
|
const face& pRegions = pointLocalRegions[faceI];
|
||||||
|
forAll(pRegions, fp)
|
||||||
|
{
|
||||||
|
localRegionPoints[pRegions[fp]] = f[fp];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Calculate region normals by reducing local region normals
|
||||||
|
pointField localRegionNormals(localToGlobalRegion.size());
|
||||||
|
{
|
||||||
|
pointField localSum(localToGlobalRegion.size(), vector::zero);
|
||||||
|
|
||||||
|
forAll(pointLocalRegions, faceI)
|
||||||
|
{
|
||||||
|
const face& pRegions = pointLocalRegions[faceI];
|
||||||
|
forAll(pRegions, fp)
|
||||||
|
{
|
||||||
|
label localRegionI = pRegions[fp];
|
||||||
|
localSum[localRegionI] +=
|
||||||
|
extrudedPatch_.faceNormals()[faceI];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<point> globalSum(2*localToGlobalRegion.size());
|
||||||
|
|
||||||
|
forAll(localSum, localRegionI)
|
||||||
|
{
|
||||||
|
label globalRegionI = localToGlobalRegion[localRegionI];
|
||||||
|
globalSum.insert(globalRegionI, localSum[localRegionI]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reduce
|
||||||
|
Pstream::mapCombineGather(globalSum, plusEqOp<point>());
|
||||||
|
Pstream::mapCombineScatter(globalSum);
|
||||||
|
|
||||||
|
forAll(localToGlobalRegion, localRegionI)
|
||||||
|
{
|
||||||
|
label globalRegionI = localToGlobalRegion[localRegionI];
|
||||||
|
localRegionNormals[localRegionI] = globalSum[globalRegionI];
|
||||||
|
}
|
||||||
|
localRegionNormals /= mag(localRegionNormals);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Per local region an extrusion direction
|
||||||
|
vectorField firstDisp(localToGlobalRegion.size());
|
||||||
|
forAll(firstDisp, regionI)
|
||||||
|
{
|
||||||
|
//const point& regionPt = regionCentres[regionI];
|
||||||
|
const point& regionPt = extrudedPatch_.points()
|
||||||
|
[
|
||||||
|
extrudedPatch_.meshPoints()
|
||||||
|
[
|
||||||
|
localRegionPoints[regionI]
|
||||||
|
]
|
||||||
|
];
|
||||||
|
const vector& n = localRegionNormals[regionI];
|
||||||
|
firstDisp[regionI] = model_()(regionPt, n, 1) - regionPt;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Extrude engine
|
||||||
|
createShellMesh extruder
|
||||||
|
(
|
||||||
|
pp,
|
||||||
|
pointLocalRegions,
|
||||||
|
localRegionPoints
|
||||||
|
);
|
||||||
|
|
||||||
|
List<polyPatch*> regionPatches(3);
|
||||||
|
List<word> patchNames(regionPatches.size());
|
||||||
|
List<word> patchTypes(regionPatches.size());
|
||||||
|
PtrList<dictionary> dicts(regionPatches.size());
|
||||||
|
|
||||||
|
forAll (dicts, patchI)
|
||||||
|
{
|
||||||
|
if (!dicts.set(patchI))
|
||||||
|
{
|
||||||
|
dicts.set(patchI, new dictionary());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dicts[bottomPatchID] = dict.subDict("bottomCoeffs");
|
||||||
|
dicts[sidePatchID] = dict.subDict("sideCoeffs");
|
||||||
|
dicts[topPatchID] = dict.subDict("topCoeffs");
|
||||||
|
|
||||||
|
forAll (dicts, patchI)
|
||||||
|
{
|
||||||
|
dicts[patchI].lookup("name") >> patchNames[patchI];
|
||||||
|
dicts[patchI].lookup("type") >> patchTypes[patchI];
|
||||||
|
}
|
||||||
|
|
||||||
|
forAll (regionPatches, patchI)
|
||||||
|
{
|
||||||
|
dictionary& patchDict = dicts[patchI];
|
||||||
|
patchDict.set("nFaces", 0);
|
||||||
|
patchDict.set("startFace", 0);
|
||||||
|
|
||||||
|
regionPatches[patchI] = polyPatch::New
|
||||||
|
(
|
||||||
|
patchNames[patchI],
|
||||||
|
patchDict,
|
||||||
|
patchI,
|
||||||
|
mesh.boundaryMesh()
|
||||||
|
).ptr();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
this->clearOut();
|
||||||
|
this->removeFvBoundary();
|
||||||
|
this->addFvPatches(regionPatches, true);
|
||||||
|
|
||||||
|
|
||||||
|
// At this point we have a valid mesh with 3 patches and zero cells.
|
||||||
|
// Determine:
|
||||||
|
// - per face the top and bottom patch (topPatchID, bottomPatchID)
|
||||||
|
// - per edge, per face on edge the side patch (edgePatches)
|
||||||
|
labelListList edgePatches(extrudedPatch_.nEdges());
|
||||||
|
forAll(edgePatches, edgeI)
|
||||||
|
{
|
||||||
|
const labelList& eFaces = extrudedPatch_.edgeFaces()[edgeI];
|
||||||
|
|
||||||
|
if (eFaces.size() != 2 || nonManifoldEdge[edgeI])
|
||||||
|
{
|
||||||
|
edgePatches[edgeI].setSize(eFaces.size(), sidePatchID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
polyTopoChange meshMod(regionPatches.size());
|
||||||
|
|
||||||
|
extruder.setRefinement
|
||||||
|
(
|
||||||
|
firstDisp, // first displacement
|
||||||
|
model_().expansionRatio(),
|
||||||
|
model_().nLayers(), // nLayers
|
||||||
|
labelList(extrudedPatch_.size(), topPatchID),
|
||||||
|
labelList(extrudedPatch_.size(), bottomPatchID),
|
||||||
|
edgePatches,
|
||||||
|
meshMod
|
||||||
|
);
|
||||||
|
|
||||||
|
autoPtr<mapPolyMesh> map = meshMod.changeMesh
|
||||||
|
(
|
||||||
|
*this, // mesh to change
|
||||||
|
false // inflate
|
||||||
|
);
|
||||||
|
|
||||||
|
// Update numbering on extruder.
|
||||||
|
extruder.updateMesh(map);
|
||||||
|
|
||||||
|
this->setInstance(this->thisDb().time().constant());
|
||||||
|
this->write();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
extrudePatchMesh::~extrudePatchMesh()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
177
src/dynamicMesh/extrudePatchMesh/extrudePatchMesh.H
Normal file
177
src/dynamicMesh/extrudePatchMesh/extrudePatchMesh.H
Normal file
@ -0,0 +1,177 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2012-2012 OpenCFD Ltd.
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
extrudePatchMesh
|
||||||
|
|
||||||
|
Description
|
||||||
|
Mesh at a patch created on the fly. The following entried should be used
|
||||||
|
on the field boundary dictionary:
|
||||||
|
|
||||||
|
// New Shell mesh data
|
||||||
|
|
||||||
|
region "regionMesh";
|
||||||
|
extrudeModel linearNormal;
|
||||||
|
linearNormalCoeffs
|
||||||
|
{
|
||||||
|
thickness 40e-6;
|
||||||
|
}
|
||||||
|
nLayers 50;
|
||||||
|
expansionRatio 1;
|
||||||
|
columnCells true;
|
||||||
|
|
||||||
|
// Patch information
|
||||||
|
bottomCoeffs
|
||||||
|
{
|
||||||
|
name "bottom";
|
||||||
|
type mappedWall;
|
||||||
|
sampleMode nearestPatchFace;
|
||||||
|
samplePatch fixedWalls;
|
||||||
|
offsetMode uniform;
|
||||||
|
offset (0 0 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
topCoeffs
|
||||||
|
{
|
||||||
|
name "top";
|
||||||
|
type patch;
|
||||||
|
}
|
||||||
|
|
||||||
|
sideCoeffs
|
||||||
|
{
|
||||||
|
name "side";
|
||||||
|
type empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef extrudePatchMesh_H
|
||||||
|
#define extrudePatchMesh_H
|
||||||
|
|
||||||
|
#include "extrudeModel.H"
|
||||||
|
#include "autoPtr.H"
|
||||||
|
|
||||||
|
#include "fvMesh.H"
|
||||||
|
#include "Time.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class extrudePatchMesh Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class extrudePatchMesh
|
||||||
|
:
|
||||||
|
public fvMesh
|
||||||
|
{
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
// Private data
|
||||||
|
|
||||||
|
//- Enumeration of patch IDs
|
||||||
|
enum patchID
|
||||||
|
{
|
||||||
|
bottomPatchID,
|
||||||
|
topPatchID,
|
||||||
|
sidePatchID
|
||||||
|
};
|
||||||
|
|
||||||
|
//- Const reference to the patch from which this mesh is extruded
|
||||||
|
const polyPatch& extrudedPatch_;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("extrudePatchMesh");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from mesh, patch and dictionary
|
||||||
|
extrudePatchMesh
|
||||||
|
(
|
||||||
|
const fvMesh&,
|
||||||
|
const fvPatch&,
|
||||||
|
const dictionary&
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
//- Destructor
|
||||||
|
virtual ~extrudePatchMesh();
|
||||||
|
|
||||||
|
|
||||||
|
// Member functions
|
||||||
|
|
||||||
|
|
||||||
|
// Access functions
|
||||||
|
|
||||||
|
//- Return region mesh
|
||||||
|
const fvMesh& regionMesh() const
|
||||||
|
{
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Return bottom patch
|
||||||
|
const polyPatch& bottomPatch() const
|
||||||
|
{
|
||||||
|
return this->boundaryMesh()[bottomPatchID];
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Return top patch
|
||||||
|
const polyPatch& topPatch() const
|
||||||
|
{
|
||||||
|
return this->boundaryMesh()[topPatchID];
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Return sides patch
|
||||||
|
const polyPatch& sidesPatch() const
|
||||||
|
{
|
||||||
|
return this->boundaryMesh()[sidePatchID];
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Return extruded patch
|
||||||
|
const polyPatch& extrudedPatch() const
|
||||||
|
{
|
||||||
|
return extrudedPatch_;
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
|
|
||||||
@ -258,6 +258,7 @@ Foam::fvSchemes::fvSchemes(const objectRegistry& obr)
|
|||||||
obr,
|
obr,
|
||||||
(
|
(
|
||||||
obr.readOpt() == IOobject::MUST_READ
|
obr.readOpt() == IOobject::MUST_READ
|
||||||
|
|| obr.readOpt() == IOobject::READ_IF_PRESENT
|
||||||
? IOobject::MUST_READ_IF_MODIFIED
|
? IOobject::MUST_READ_IF_MODIFIED
|
||||||
: obr.readOpt()
|
: obr.readOpt()
|
||||||
),
|
),
|
||||||
@ -372,6 +373,7 @@ Foam::fvSchemes::fvSchemes(const objectRegistry& obr)
|
|||||||
(
|
(
|
||||||
readOpt() == IOobject::MUST_READ
|
readOpt() == IOobject::MUST_READ
|
||||||
|| readOpt() == IOobject::MUST_READ_IF_MODIFIED
|
|| readOpt() == IOobject::MUST_READ_IF_MODIFIED
|
||||||
|
|| (readOpt() == IOobject::READ_IF_PRESENT && headerOk())
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
read(schemesDict());
|
read(schemesDict());
|
||||||
|
|||||||
@ -295,7 +295,7 @@ Foam::fvMesh::fvMesh
|
|||||||
fvSchemes(static_cast<const objectRegistry&>(*this)),
|
fvSchemes(static_cast<const objectRegistry&>(*this)),
|
||||||
fvSolution(static_cast<const objectRegistry&>(*this)),
|
fvSolution(static_cast<const objectRegistry&>(*this)),
|
||||||
data(static_cast<const objectRegistry&>(*this)),
|
data(static_cast<const objectRegistry&>(*this)),
|
||||||
boundary_(*this),
|
boundary_(*this, boundaryMesh()),
|
||||||
lduPtr_(NULL),
|
lduPtr_(NULL),
|
||||||
curTimeIndex_(time().timeIndex()),
|
curTimeIndex_(time().timeIndex()),
|
||||||
VPtr_(NULL),
|
VPtr_(NULL),
|
||||||
|
|||||||
@ -5,5 +5,6 @@ set -x
|
|||||||
|
|
||||||
wmake $makeType autoMesh
|
wmake $makeType autoMesh
|
||||||
wmake $makeType blockMesh
|
wmake $makeType blockMesh
|
||||||
|
wmake $makeType extrudeModel
|
||||||
|
|
||||||
# ----------------------------------------------------------------- end-of-file
|
# ----------------------------------------------------------------- end-of-file
|
||||||
|
|||||||
@ -3,5 +3,4 @@ EXE_INC = \
|
|||||||
-I$(LIB_SRC)/dynamicMesh/lnInclude
|
-I$(LIB_SRC)/dynamicMesh/lnInclude
|
||||||
|
|
||||||
LIB_LIBS = \
|
LIB_LIBS = \
|
||||||
-lmeshTools \
|
-lmeshTools
|
||||||
-ldynamicMesh
|
|
||||||
@ -37,7 +37,7 @@ laplacianSchemes
|
|||||||
{
|
{
|
||||||
default none;
|
default none;
|
||||||
laplacian(nu,U) Gauss linear corrected;
|
laplacian(nu,U) Gauss linear corrected;
|
||||||
laplacian((1|A(U)),p) Gauss linear corrected;
|
laplacian(Dp,p) Gauss linear corrected;
|
||||||
}
|
}
|
||||||
|
|
||||||
interpolationSchemes
|
interpolationSchemes
|
||||||
|
|||||||
@ -33,6 +33,7 @@ mixture
|
|||||||
{
|
{
|
||||||
As 1.458e-06;
|
As 1.458e-06;
|
||||||
Ts 110.4;
|
Ts 110.4;
|
||||||
|
Pr 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -15,8 +15,6 @@ FoamFile
|
|||||||
}
|
}
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
Pr 0.72;
|
|
||||||
|
|
||||||
thermoType ePsiThermo<pureMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>>;
|
thermoType ePsiThermo<pureMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>>;
|
||||||
|
|
||||||
mixture
|
mixture
|
||||||
@ -38,6 +36,7 @@ mixture
|
|||||||
{
|
{
|
||||||
As 1.458e-06;
|
As 1.458e-06;
|
||||||
Ts 110;
|
Ts 110;
|
||||||
|
Pr 0.72;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -41,7 +41,7 @@ laplacianSchemes
|
|||||||
{
|
{
|
||||||
default none;
|
default none;
|
||||||
laplacian(nuEff,U) Gauss linear uncorrected;
|
laplacian(nuEff,U) Gauss linear uncorrected;
|
||||||
laplacian((1|A(U)),p_rgh) Gauss linear uncorrected;
|
laplacian(Dp,p_rgh) Gauss linear uncorrected;
|
||||||
laplacian(kappaEff,T) Gauss linear uncorrected;
|
laplacian(kappaEff,T) Gauss linear uncorrected;
|
||||||
laplacian(DkEff,k) Gauss linear uncorrected;
|
laplacian(DkEff,k) Gauss linear uncorrected;
|
||||||
laplacian(DepsilonEff,epsilon) Gauss linear uncorrected;
|
laplacian(DepsilonEff,epsilon) Gauss linear uncorrected;
|
||||||
|
|||||||
@ -39,7 +39,7 @@ laplacianSchemes
|
|||||||
{
|
{
|
||||||
default none;
|
default none;
|
||||||
laplacian(nuEff,U) Gauss linear corrected;
|
laplacian(nuEff,U) Gauss linear corrected;
|
||||||
laplacian((1|A(U)),p_rgh) Gauss linear corrected;
|
laplacian(Dp,p_rgh) Gauss linear corrected;
|
||||||
laplacian(kappaEff,T) Gauss linear corrected;
|
laplacian(kappaEff,T) Gauss linear corrected;
|
||||||
laplacian(DkEff,k) Gauss linear corrected;
|
laplacian(DkEff,k) Gauss linear corrected;
|
||||||
laplacian(DepsilonEff,epsilon) Gauss linear corrected;
|
laplacian(DepsilonEff,epsilon) Gauss linear corrected;
|
||||||
|
|||||||
@ -41,7 +41,7 @@ laplacianSchemes
|
|||||||
{
|
{
|
||||||
default none;
|
default none;
|
||||||
laplacian(nuEff,U) Gauss linear limited 0.333;
|
laplacian(nuEff,U) Gauss linear limited 0.333;
|
||||||
laplacian((1|A(U)),p_rgh) Gauss linear limited 0.333;
|
laplacian(Dp,p_rgh) Gauss linear limited 0.333;
|
||||||
laplacian(kappaEff,T) Gauss linear limited 0.333;
|
laplacian(kappaEff,T) Gauss linear limited 0.333;
|
||||||
laplacian(DkEff,k) Gauss linear limited 0.333;
|
laplacian(DkEff,k) Gauss linear limited 0.333;
|
||||||
laplacian(DepsilonEff,epsilon) Gauss linear limited 0.333;
|
laplacian(DepsilonEff,epsilon) Gauss linear limited 0.333;
|
||||||
|
|||||||
@ -42,7 +42,7 @@ laplacianSchemes
|
|||||||
{
|
{
|
||||||
default none;
|
default none;
|
||||||
laplacian(muEff,U) Gauss linear corrected;
|
laplacian(muEff,U) Gauss linear corrected;
|
||||||
laplacian((rho*(1|A(U))),p_rgh) Gauss linear corrected;
|
laplacian(Dp,p_rgh) Gauss linear corrected;
|
||||||
laplacian(alphaEff,h) Gauss linear corrected;
|
laplacian(alphaEff,h) Gauss linear corrected;
|
||||||
laplacian(DkEff,k) Gauss linear corrected;
|
laplacian(DkEff,k) Gauss linear corrected;
|
||||||
laplacian(DepsilonEff,epsilon) Gauss linear corrected;
|
laplacian(DepsilonEff,epsilon) Gauss linear corrected;
|
||||||
|
|||||||
@ -40,7 +40,7 @@ laplacianSchemes
|
|||||||
{
|
{
|
||||||
default none;
|
default none;
|
||||||
laplacian(muEff,U) Gauss linear orthogonal;
|
laplacian(muEff,U) Gauss linear orthogonal;
|
||||||
laplacian((rho*(1|A(U))),p_rgh) Gauss linear orthogonal;
|
laplacian(Dp,p_rgh) Gauss linear orthogonal;
|
||||||
laplacian(alphaEff,h) Gauss linear orthogonal;
|
laplacian(alphaEff,h) Gauss linear orthogonal;
|
||||||
laplacian(DkEff,k) Gauss linear orthogonal;
|
laplacian(DkEff,k) Gauss linear orthogonal;
|
||||||
laplacian(DepsilonEff,epsilon) Gauss linear orthogonal;
|
laplacian(DepsilonEff,epsilon) Gauss linear orthogonal;
|
||||||
|
|||||||
@ -40,7 +40,7 @@ laplacianSchemes
|
|||||||
{
|
{
|
||||||
default none;
|
default none;
|
||||||
laplacian(muEff,U) Gauss linear uncorrected;
|
laplacian(muEff,U) Gauss linear uncorrected;
|
||||||
laplacian((rho*(1|A(U))),p_rgh) Gauss linear uncorrected;
|
laplacian(Dp,p_rgh) Gauss linear uncorrected;
|
||||||
laplacian(alphaEff,h) Gauss linear uncorrected;
|
laplacian(alphaEff,h) Gauss linear uncorrected;
|
||||||
laplacian(DkEff,k) Gauss linear uncorrected;
|
laplacian(DkEff,k) Gauss linear uncorrected;
|
||||||
laplacian(DepsilonEff,epsilon) Gauss linear uncorrected;
|
laplacian(DepsilonEff,epsilon) Gauss linear uncorrected;
|
||||||
|
|||||||
@ -42,7 +42,7 @@ laplacianSchemes
|
|||||||
{
|
{
|
||||||
default none;
|
default none;
|
||||||
laplacian(muEff,U) Gauss linear uncorrected;
|
laplacian(muEff,U) Gauss linear uncorrected;
|
||||||
laplacian((rho*(1|A(U))),p_rgh) Gauss linear uncorrected;
|
laplacian(Dp,p_rgh) Gauss linear uncorrected;
|
||||||
laplacian(alphaEff,h) Gauss linear uncorrected;
|
laplacian(alphaEff,h) Gauss linear uncorrected;
|
||||||
laplacian(DkEff,k) Gauss linear uncorrected;
|
laplacian(DkEff,k) Gauss linear uncorrected;
|
||||||
laplacian(DepsilonEff,epsilon) Gauss linear uncorrected;
|
laplacian(DepsilonEff,epsilon) Gauss linear uncorrected;
|
||||||
|
|||||||
@ -42,7 +42,7 @@ laplacianSchemes
|
|||||||
{
|
{
|
||||||
default none;
|
default none;
|
||||||
laplacian(muEff,U) Gauss linear corrected;
|
laplacian(muEff,U) Gauss linear corrected;
|
||||||
laplacian((rho*(1|A(U))),p_rgh) Gauss linear corrected;
|
laplacian(Dp,p_rgh) Gauss linear corrected;
|
||||||
laplacian(alphaEff,h) Gauss linear corrected;
|
laplacian(alphaEff,h) Gauss linear corrected;
|
||||||
laplacian(DkEff,k) Gauss linear corrected;
|
laplacian(DkEff,k) Gauss linear corrected;
|
||||||
laplacian(DepsilonEff,epsilon) Gauss linear corrected;
|
laplacian(DepsilonEff,epsilon) Gauss linear corrected;
|
||||||
|
|||||||
@ -43,7 +43,7 @@ laplacianSchemes
|
|||||||
{
|
{
|
||||||
default none;
|
default none;
|
||||||
laplacian(muEff,U) Gauss linear corrected;
|
laplacian(muEff,U) Gauss linear corrected;
|
||||||
laplacian((rho*(1|A(U))),p_rgh) Gauss linear corrected;
|
laplacian(Dp,p_rgh) Gauss linear corrected;
|
||||||
laplacian(alphaEff,h) Gauss linear corrected;
|
laplacian(alphaEff,h) Gauss linear corrected;
|
||||||
laplacian(DkEff,k) Gauss linear corrected;
|
laplacian(DkEff,k) Gauss linear corrected;
|
||||||
laplacian(DepsilonEff,epsilon) Gauss linear corrected;
|
laplacian(DepsilonEff,epsilon) Gauss linear corrected;
|
||||||
|
|||||||
@ -41,7 +41,7 @@ laplacianSchemes
|
|||||||
{
|
{
|
||||||
default none;
|
default none;
|
||||||
laplacian(muEff,U) Gauss linear limited 0.333;
|
laplacian(muEff,U) Gauss linear limited 0.333;
|
||||||
laplacian((rho*(1|A(U))),p_rgh) Gauss linear limited 0.333;
|
laplacian(Dp,p_rgh) Gauss linear limited 0.333;
|
||||||
laplacian(alphaEff,h) Gauss linear limited 0.333;
|
laplacian(alphaEff,h) Gauss linear limited 0.333;
|
||||||
laplacian(DkEff,k) Gauss linear limited 0.333;
|
laplacian(DkEff,k) Gauss linear limited 0.333;
|
||||||
laplacian(DepsilonEff,epsilon) Gauss linear limited 0.333;
|
laplacian(DepsilonEff,epsilon) Gauss linear limited 0.333;
|
||||||
|
|||||||
@ -41,7 +41,7 @@ laplacianSchemes
|
|||||||
{
|
{
|
||||||
default none;
|
default none;
|
||||||
laplacian(muEff,U) Gauss linear limited 0.333;
|
laplacian(muEff,U) Gauss linear limited 0.333;
|
||||||
laplacian((rho*(1|A(U))),p_rgh) Gauss linear limited 0.333;
|
laplacian(Dp,p_rgh) Gauss linear limited 0.333;
|
||||||
laplacian(alphaEff,h) Gauss linear limited 0.333;
|
laplacian(alphaEff,h) Gauss linear limited 0.333;
|
||||||
laplacian(DkEff,k) Gauss linear limited 0.333;
|
laplacian(DkEff,k) Gauss linear limited 0.333;
|
||||||
laplacian(DepsilonEff,epsilon) Gauss linear limited 0.333;
|
laplacian(DepsilonEff,epsilon) Gauss linear limited 0.333;
|
||||||
|
|||||||
@ -41,7 +41,7 @@ laplacianSchemes
|
|||||||
{
|
{
|
||||||
default none;
|
default none;
|
||||||
laplacian(muEff,U) Gauss linear limited 0.333;
|
laplacian(muEff,U) Gauss linear limited 0.333;
|
||||||
laplacian((rho*(1|A(U))),p_rgh) Gauss linear limited 0.333;
|
laplacian(Dp,p_rgh) Gauss linear limited 0.333;
|
||||||
laplacian(alphaEff,h) Gauss linear limited 0.333;
|
laplacian(alphaEff,h) Gauss linear limited 0.333;
|
||||||
laplacian(DkEff,k) Gauss linear limited 0.333;
|
laplacian(DkEff,k) Gauss linear limited 0.333;
|
||||||
laplacian(DepsilonEff,epsilon) Gauss linear limited 0.333;
|
laplacian(DepsilonEff,epsilon) Gauss linear limited 0.333;
|
||||||
|
|||||||
@ -41,7 +41,7 @@ laplacianSchemes
|
|||||||
{
|
{
|
||||||
default none;
|
default none;
|
||||||
laplacian(muEff,U) Gauss linear limited 0.333;
|
laplacian(muEff,U) Gauss linear limited 0.333;
|
||||||
laplacian((rho*(1|A(U))),p_rgh) Gauss linear limited 0.333;
|
laplacian(Dp,p_rgh) Gauss linear limited 0.333;
|
||||||
laplacian(alphaEff,h) Gauss linear limited 0.333;
|
laplacian(alphaEff,h) Gauss linear limited 0.333;
|
||||||
laplacian(DkEff,k) Gauss linear limited 0.333;
|
laplacian(DkEff,k) Gauss linear limited 0.333;
|
||||||
laplacian(DepsilonEff,epsilon) Gauss linear limited 0.333;
|
laplacian(DepsilonEff,epsilon) Gauss linear limited 0.333;
|
||||||
|
|||||||
@ -41,7 +41,7 @@ laplacianSchemes
|
|||||||
{
|
{
|
||||||
default none;
|
default none;
|
||||||
laplacian(muEff,U) Gauss linear limited 0.333;
|
laplacian(muEff,U) Gauss linear limited 0.333;
|
||||||
laplacian((rho*(1|A(U))),p_rgh) Gauss linear limited 0.333;
|
laplacian(Dp,p_rgh) Gauss linear limited 0.333;
|
||||||
laplacian(alphaEff,h) Gauss linear limited 0.333;
|
laplacian(alphaEff,h) Gauss linear limited 0.333;
|
||||||
laplacian(DkEff,k) Gauss linear limited 0.333;
|
laplacian(DkEff,k) Gauss linear limited 0.333;
|
||||||
laplacian(DepsilonEff,epsilon) Gauss linear limited 0.333;
|
laplacian(DepsilonEff,epsilon) Gauss linear limited 0.333;
|
||||||
|
|||||||
@ -41,7 +41,7 @@ laplacianSchemes
|
|||||||
{
|
{
|
||||||
default none;
|
default none;
|
||||||
laplacian(muEff,U) Gauss linear limited 0.333;
|
laplacian(muEff,U) Gauss linear limited 0.333;
|
||||||
laplacian((rho*(1|A(U))),p_rgh) Gauss linear limited 0.333;
|
laplacian(Dp,p_rgh) Gauss linear limited 0.333;
|
||||||
laplacian(alphaEff,h) Gauss linear limited 0.333;
|
laplacian(alphaEff,h) Gauss linear limited 0.333;
|
||||||
laplacian(DkEff,k) Gauss linear limited 0.333;
|
laplacian(DkEff,k) Gauss linear limited 0.333;
|
||||||
laplacian(DepsilonEff,epsilon) Gauss linear limited 0.333;
|
laplacian(DepsilonEff,epsilon) Gauss linear limited 0.333;
|
||||||
|
|||||||
@ -42,7 +42,7 @@ laplacianSchemes
|
|||||||
{
|
{
|
||||||
default none;
|
default none;
|
||||||
laplacian(muEff,U) Gauss linear uncorrected;
|
laplacian(muEff,U) Gauss linear uncorrected;
|
||||||
laplacian((rho*(1|A(U))),p_rgh) Gauss linear uncorrected;
|
laplacian(Dp,p_rgh) Gauss linear uncorrected;
|
||||||
laplacian(alphaEff,h) Gauss linear uncorrected;
|
laplacian(alphaEff,h) Gauss linear uncorrected;
|
||||||
laplacian(DkEff,k) Gauss linear uncorrected;
|
laplacian(DkEff,k) Gauss linear uncorrected;
|
||||||
laplacian(DepsilonEff,epsilon) Gauss linear uncorrected;
|
laplacian(DepsilonEff,epsilon) Gauss linear uncorrected;
|
||||||
|
|||||||
@ -42,7 +42,7 @@ laplacianSchemes
|
|||||||
{
|
{
|
||||||
default none;
|
default none;
|
||||||
laplacian(muEff,U) Gauss linear uncorrected;
|
laplacian(muEff,U) Gauss linear uncorrected;
|
||||||
laplacian((rho*(1|A(U))),p_rgh) Gauss linear uncorrected;
|
laplacian(Dp,p_rgh) Gauss linear uncorrected;
|
||||||
laplacian(alphaEff,h) Gauss linear uncorrected;
|
laplacian(alphaEff,h) Gauss linear uncorrected;
|
||||||
laplacian(DkEff,k) Gauss linear uncorrected;
|
laplacian(DkEff,k) Gauss linear uncorrected;
|
||||||
laplacian(DepsilonEff,epsilon) Gauss linear uncorrected;
|
laplacian(DepsilonEff,epsilon) Gauss linear uncorrected;
|
||||||
|
|||||||
@ -43,7 +43,7 @@ laplacianSchemes
|
|||||||
{
|
{
|
||||||
default none;
|
default none;
|
||||||
laplacian(muEff,U) Gauss linear uncorrected;
|
laplacian(muEff,U) Gauss linear uncorrected;
|
||||||
laplacian((rho*(1|A(U))),p_rgh) Gauss linear uncorrected;
|
laplacian(Dp,p_rgh) Gauss linear uncorrected;
|
||||||
laplacian(alphaEff,h) Gauss linear uncorrected;
|
laplacian(alphaEff,h) Gauss linear uncorrected;
|
||||||
laplacian(DkEff,k) Gauss linear uncorrected;
|
laplacian(DkEff,k) Gauss linear uncorrected;
|
||||||
laplacian(DepsilonEff,epsilon) Gauss linear uncorrected;
|
laplacian(DepsilonEff,epsilon) Gauss linear uncorrected;
|
||||||
|
|||||||
@ -43,7 +43,7 @@ laplacianSchemes
|
|||||||
{
|
{
|
||||||
default none;
|
default none;
|
||||||
laplacian(muEff,U) Gauss linear uncorrected;
|
laplacian(muEff,U) Gauss linear uncorrected;
|
||||||
laplacian((rho*(1|A(U))),p_rgh) Gauss linear uncorrected;
|
laplacian(Dp,p_rgh) Gauss linear uncorrected;
|
||||||
laplacian(alphaEff,h) Gauss linear uncorrected;
|
laplacian(alphaEff,h) Gauss linear uncorrected;
|
||||||
laplacian(DkEff,k) Gauss linear uncorrected;
|
laplacian(DkEff,k) Gauss linear uncorrected;
|
||||||
laplacian(DepsilonEff,epsilon) Gauss linear uncorrected;
|
laplacian(DepsilonEff,epsilon) Gauss linear uncorrected;
|
||||||
|
|||||||
@ -12,21 +12,7 @@ cp $FOAM_TUTORIALS/resources/geometry/propellerTip.obj.gz constant/triSurface/
|
|||||||
|
|
||||||
runApplication blockMesh
|
runApplication blockMesh
|
||||||
|
|
||||||
surfaces="
|
runApplication surfaceFeatureExtract
|
||||||
innerCylinder
|
|
||||||
innerCylinderSmall
|
|
||||||
outerCylinder
|
|
||||||
propellerTip
|
|
||||||
propellerStem1
|
|
||||||
propellerStem2
|
|
||||||
propellerStem3
|
|
||||||
"
|
|
||||||
|
|
||||||
for s in $surfaces; do
|
|
||||||
runApplication surfaceFeatureExtract -includedAngle 150 -minElem 10 \
|
|
||||||
constant/triSurface/$s.obj $s
|
|
||||||
mv log.surfaceFeatureExtract log.surfaceFeatureExtract.$s
|
|
||||||
done
|
|
||||||
|
|
||||||
runApplication snappyHexMesh -overwrite
|
runApplication snappyHexMesh -overwrite
|
||||||
# force removal of fields generated by snappy
|
# force removal of fields generated by snappy
|
||||||
|
|||||||
@ -0,0 +1,59 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: dev |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class dictionary;
|
||||||
|
object surfaceFeatureExtractDict;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
innerCylinder.obj
|
||||||
|
{
|
||||||
|
#include "surfaceFeatureExtractDictDefaults"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
innerCylinderSmall.obj
|
||||||
|
{
|
||||||
|
#include "surfaceFeatureExtractDictDefaults"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
outerCylinder.obj
|
||||||
|
{
|
||||||
|
#include "surfaceFeatureExtractDictDefaults"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
propellerStem1.obj
|
||||||
|
{
|
||||||
|
#include "surfaceFeatureExtractDictDefaults"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
propellerStem2.obj
|
||||||
|
{
|
||||||
|
#include "surfaceFeatureExtractDictDefaults"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
propellerStem3.obj
|
||||||
|
{
|
||||||
|
#include "surfaceFeatureExtractDictDefaults"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
propellerTip.obj
|
||||||
|
{
|
||||||
|
#include "surfaceFeatureExtractDictDefaults"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,17 @@
|
|||||||
|
// How to obtain raw features (extractFromFile || extractFromSurface)
|
||||||
|
extractionMethod extractFromSurface;
|
||||||
|
|
||||||
|
extractFromSurfaceCoeffs
|
||||||
|
{
|
||||||
|
// Mark edges whose adjacent surface normals are at an angle less
|
||||||
|
// than includedAngle as features
|
||||||
|
// - 0 : selects no edges
|
||||||
|
// - 180: selects all edges
|
||||||
|
includedAngle 150;
|
||||||
|
}
|
||||||
|
|
||||||
|
trimFeatures
|
||||||
|
{
|
||||||
|
// Remove features with fewer than the specified number of edges
|
||||||
|
minElem 10;
|
||||||
|
}
|
||||||
@ -27,19 +27,19 @@ boundaryField
|
|||||||
mixingLength 0.01;
|
mixingLength 0.01;
|
||||||
phi phi;
|
phi phi;
|
||||||
k k;
|
k k;
|
||||||
value $internalField;
|
value uniform 200;
|
||||||
}
|
}
|
||||||
outlet1
|
outlet1
|
||||||
{
|
{
|
||||||
type inletOutlet;
|
type inletOutlet;
|
||||||
inletValue $internalField;
|
inletValue uniform 200;
|
||||||
value $internalField;
|
value uniform 200;
|
||||||
}
|
}
|
||||||
outlet2
|
outlet2
|
||||||
{
|
{
|
||||||
type inletOutlet;
|
type inletOutlet;
|
||||||
inletValue $internalField;
|
inletValue uniform 200;
|
||||||
value $internalField;
|
value uniform 200;
|
||||||
}
|
}
|
||||||
baffles
|
baffles
|
||||||
{
|
{
|
||||||
@ -47,7 +47,7 @@ boundaryField
|
|||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
value $internalField;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
fan_half0
|
fan_half0
|
||||||
{
|
{
|
||||||
@ -63,7 +63,7 @@ boundaryField
|
|||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
value $internalField;
|
value uniform 200;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -27,24 +27,24 @@ boundaryField
|
|||||||
intensity 0.05;
|
intensity 0.05;
|
||||||
U U;
|
U U;
|
||||||
phi phi;
|
phi phi;
|
||||||
value $internalField;
|
value uniform 0.375;
|
||||||
}
|
}
|
||||||
outlet1
|
outlet1
|
||||||
{
|
{
|
||||||
type inletOutlet;
|
type inletOutlet;
|
||||||
inletValue $internalField;
|
inletValue uniform 0.375;
|
||||||
value $internalField;
|
value uniform 0.375;
|
||||||
}
|
}
|
||||||
outlet2
|
outlet2
|
||||||
{
|
{
|
||||||
type inletOutlet;
|
type inletOutlet;
|
||||||
inletValue $internalField;
|
inletValue uniform 0.375;
|
||||||
value $internalField;
|
value uniform 0.375;
|
||||||
}
|
}
|
||||||
baffles
|
baffles
|
||||||
{
|
{
|
||||||
type kqRWallFunction;
|
type kqRWallFunction;
|
||||||
value $internalField;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
fan_half0
|
fan_half0
|
||||||
{
|
{
|
||||||
@ -57,7 +57,7 @@ boundaryField
|
|||||||
defaultFaces
|
defaultFaces
|
||||||
{
|
{
|
||||||
type kqRWallFunction;
|
type kqRWallFunction;
|
||||||
value $internalField;
|
value uniform 0.375;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -29,10 +29,13 @@ boundaryField
|
|||||||
gamma 1;
|
gamma 1;
|
||||||
p0 40;
|
p0 40;
|
||||||
pressure table
|
pressure table
|
||||||
(
|
|
||||||
(0 10)
|
2
|
||||||
(1 40)
|
(
|
||||||
);
|
(0 10)
|
||||||
|
(1 40)
|
||||||
|
)
|
||||||
|
;
|
||||||
value uniform 40;
|
value uniform 40;
|
||||||
}
|
}
|
||||||
outlet1
|
outlet1
|
||||||
@ -54,7 +57,14 @@ boundaryField
|
|||||||
type fan;
|
type fan;
|
||||||
patchType cyclic;
|
patchType cyclic;
|
||||||
jump uniform 0;
|
jump uniform 0;
|
||||||
f 2(100 -0.1);
|
jumpTable polynomial
|
||||||
|
|
||||||
|
2
|
||||||
|
(
|
||||||
|
(100 0)
|
||||||
|
(-0.1 1)
|
||||||
|
)
|
||||||
|
;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
fan_half1
|
fan_half1
|
||||||
@ -62,7 +72,6 @@ boundaryField
|
|||||||
type fan;
|
type fan;
|
||||||
patchType cyclic;
|
patchType cyclic;
|
||||||
jump uniform 0;
|
jump uniform 0;
|
||||||
f 2(100 -0.1);
|
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
defaultFaces
|
defaultFaces
|
||||||
|
|||||||
@ -15,31 +15,37 @@ FoamFile
|
|||||||
}
|
}
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
4
|
5
|
||||||
(
|
(
|
||||||
|
left
|
||||||
|
{
|
||||||
|
type symmetryPlane;
|
||||||
|
nFaces 320;
|
||||||
|
startFace 99210;
|
||||||
|
}
|
||||||
outlet
|
outlet
|
||||||
{
|
{
|
||||||
type patch;
|
type patch;
|
||||||
nFaces 320;
|
nFaces 320;
|
||||||
startFace 99370;
|
startFace 99530;
|
||||||
}
|
}
|
||||||
up
|
up
|
||||||
{
|
{
|
||||||
type symmetryPlane;
|
type symmetryPlane;
|
||||||
nFaces 380;
|
nFaces 380;
|
||||||
startFace 99690;
|
startFace 99850;
|
||||||
}
|
}
|
||||||
hole
|
hole
|
||||||
{
|
{
|
||||||
type wall;
|
type wall;
|
||||||
nFaces 560;
|
nFaces 560;
|
||||||
startFace 100070;
|
startFace 100230;
|
||||||
}
|
}
|
||||||
frontAndBack
|
frontAndBack
|
||||||
{
|
{
|
||||||
type empty;
|
type empty;
|
||||||
nFaces 100000;
|
nFaces 100000;
|
||||||
startFace 100630;
|
startFace 100790;
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@ -8,7 +8,7 @@ cd ${0%/*} || exit 1 # run from this directory
|
|||||||
nProc=`grep numberOfSubdomains system/decomposeParDict \
|
nProc=`grep numberOfSubdomains system/decomposeParDict \
|
||||||
| sed s/"numberOfSubdomains *\(.*\);"/"\1"/`
|
| sed s/"numberOfSubdomains *\(.*\);"/"\1"/`
|
||||||
|
|
||||||
runApplication surfaceFeatureExtract constant/triSurface/flange.obj flange -includedAngle 155
|
runApplication surfaceFeatureExtract
|
||||||
|
|
||||||
# Create tight-fitting background mesh
|
# Create tight-fitting background mesh
|
||||||
runApplication blockMesh
|
runApplication blockMesh
|
||||||
|
|||||||
@ -30,9 +30,6 @@ flange.obj
|
|||||||
|
|
||||||
// Write options
|
// Write options
|
||||||
|
|
||||||
// Write .eMesh file (for snappyHexMesh)
|
|
||||||
writeFeatureEdgeMesh no;
|
|
||||||
|
|
||||||
// Write features to obj format for postprocessing
|
// Write features to obj format for postprocessing
|
||||||
writeObj yes;
|
writeObj yes;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -30,15 +30,11 @@ surfaceOrient \
|
|||||||
constant/triSurface/domain_clean_orient.stl
|
constant/triSurface/domain_clean_orient.stl
|
||||||
> log.surfaceOrient.domain 2>&1
|
> log.surfaceOrient.domain 2>&1
|
||||||
|
|
||||||
runApplication surfaceFeatureExtract \
|
runApplication surfaceFeatureExtract
|
||||||
constant/triSurface/coneAndSphere_clean_orient.obj \
|
|
||||||
coneAndSphere -includedAngle 125
|
|
||||||
mv log.surfaceFeatureExtract log.surfaceFeatureExtract.coneAndSphere_clean
|
mv log.surfaceFeatureExtract log.surfaceFeatureExtract.coneAndSphere_clean
|
||||||
|
|
||||||
unset FOAM_SIGFPE
|
unset FOAM_SIGFPE
|
||||||
runApplication surfaceFeatureExtract \
|
runApplication surfaceFeatureExtract
|
||||||
constant/triSurface/domain_clean_orient.stl \
|
|
||||||
domain -includedAngle 125
|
|
||||||
mv log.surfaceFeatureExtract log.surfaceFeatureExtract.domain
|
mv log.surfaceFeatureExtract log.surfaceFeatureExtract.domain
|
||||||
|
|
||||||
# Generate aligned points (in constant/internalDelaunayVertices) and a
|
# Generate aligned points (in constant/internalDelaunayVertices) and a
|
||||||
|
|||||||
@ -0,0 +1,57 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: dev |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class dictionary;
|
||||||
|
object surfaceFeatureExtractDict;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
coneAndSphere_clean_orient.obj
|
||||||
|
{
|
||||||
|
extractionMethod extractFromSurface;
|
||||||
|
|
||||||
|
extractFromSurfaceCoeffs
|
||||||
|
{
|
||||||
|
// Mark edges whose adjacent surface normals are at an angle less
|
||||||
|
// than includedAngle as features
|
||||||
|
// - 0 : selects no edges
|
||||||
|
// - 180: selects all edges
|
||||||
|
includedAngle 125;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Write options
|
||||||
|
|
||||||
|
// Write features to obj format for postprocessing
|
||||||
|
writeObj no;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
domain_clean_orient.stl
|
||||||
|
{
|
||||||
|
extractionMethod extractFromSurface;
|
||||||
|
|
||||||
|
extractFromSurfaceCoeffs
|
||||||
|
{
|
||||||
|
// Mark edges whose adjacent surface normals are at an angle less
|
||||||
|
// than includedAngle as features
|
||||||
|
// - 0 : selects no edges
|
||||||
|
// - 180: selects all edges
|
||||||
|
includedAngle 125;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Write options
|
||||||
|
|
||||||
|
// Write features to obj format for postprocessing
|
||||||
|
writeObj no;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -6,5 +6,5 @@
|
|||||||
cp $FOAM_TUTORIALS/resources/geometry/flange.stl.gz constant/triSurface/
|
cp $FOAM_TUTORIALS/resources/geometry/flange.stl.gz constant/triSurface/
|
||||||
|
|
||||||
runApplication blockMesh
|
runApplication blockMesh
|
||||||
runApplication surfaceFeatureExtract -includedAngle 150 -writeObj constant/triSurface/flange.stl flange
|
runApplication surfaceFeatureExtract
|
||||||
runApplication snappyHexMesh -overwrite
|
runApplication snappyHexMesh -overwrite
|
||||||
|
|||||||
@ -0,0 +1,38 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: dev |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class dictionary;
|
||||||
|
object surfaceFeatureExtractDict;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
flange.stl
|
||||||
|
{
|
||||||
|
// How to obtain raw features (extractFromFile || extractFromSurface)
|
||||||
|
extractionMethod extractFromSurface;
|
||||||
|
|
||||||
|
extractFromSurfaceCoeffs
|
||||||
|
{
|
||||||
|
// Mark edges whose adjacent surface normals are at an angle less
|
||||||
|
// than includedAngle as features
|
||||||
|
// - 0 : selects no edges
|
||||||
|
// - 180: selects all edges
|
||||||
|
includedAngle 150;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Write options
|
||||||
|
|
||||||
|
// Write features to obj format for postprocessing
|
||||||
|
writeObj yes;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -22,7 +22,8 @@ boundaryField
|
|||||||
{
|
{
|
||||||
inlet
|
inlet
|
||||||
{
|
{
|
||||||
type zeroGradient;
|
type fixedFluxPressure;
|
||||||
|
value uniform 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
outlet
|
outlet
|
||||||
@ -33,7 +34,7 @@ boundaryField
|
|||||||
|
|
||||||
walls
|
walls
|
||||||
{
|
{
|
||||||
type buoyantPressure;
|
type fixedFluxPressure;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1901,7 +1901,8 @@ boundaryField
|
|||||||
{
|
{
|
||||||
inlet
|
inlet
|
||||||
{
|
{
|
||||||
type zeroGradient;
|
type fixedFluxPressure;
|
||||||
|
value uniform 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
outlet
|
outlet
|
||||||
@ -1912,7 +1913,7 @@ boundaryField
|
|||||||
|
|
||||||
walls
|
walls
|
||||||
{
|
{
|
||||||
type buoyantPressure;
|
type fixedFluxPressure;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -42,7 +42,7 @@ laplacianSchemes
|
|||||||
default none;
|
default none;
|
||||||
laplacian(nuEff1,U1) Gauss linear corrected;
|
laplacian(nuEff1,U1) Gauss linear corrected;
|
||||||
laplacian(nuEff2,U2) Gauss linear corrected;
|
laplacian(nuEff2,U2) Gauss linear corrected;
|
||||||
laplacian((rho*(1|A(U))),p) Gauss linear corrected;
|
laplacian(Dp,p) Gauss linear corrected;
|
||||||
}
|
}
|
||||||
|
|
||||||
interpolationSchemes
|
interpolationSchemes
|
||||||
|
|||||||
@ -43,7 +43,7 @@ laplacianSchemes
|
|||||||
default none;
|
default none;
|
||||||
laplacian(nuf,rhoU) Gauss linear corrected;
|
laplacian(nuf,rhoU) Gauss linear corrected;
|
||||||
laplacian(muEff,U) Gauss linear corrected;
|
laplacian(muEff,U) Gauss linear corrected;
|
||||||
laplacian(rAUf,p) Gauss linear corrected;
|
laplacian(Dp,p) Gauss linear corrected;
|
||||||
laplacian(DkEff,k) Gauss linear corrected;
|
laplacian(DkEff,k) Gauss linear corrected;
|
||||||
laplacian(1,p) Gauss linear corrected;
|
laplacian(1,p) Gauss linear corrected;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -43,7 +43,7 @@ laplacianSchemes
|
|||||||
default none;
|
default none;
|
||||||
laplacian(nuf,rhoU) Gauss linear corrected;
|
laplacian(nuf,rhoU) Gauss linear corrected;
|
||||||
laplacian(muEff,U) Gauss linear corrected;
|
laplacian(muEff,U) Gauss linear corrected;
|
||||||
laplacian(rAUf,p) Gauss linear corrected;
|
laplacian(Dp,p) Gauss linear corrected;
|
||||||
laplacian(DkEff,k) Gauss linear corrected;
|
laplacian(DkEff,k) Gauss linear corrected;
|
||||||
laplacian(1,p) Gauss linear corrected;
|
laplacian(1,p) Gauss linear corrected;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -44,7 +44,7 @@ laplacianSchemes
|
|||||||
default none;
|
default none;
|
||||||
laplacian(nuf,rhoU) Gauss linear corrected;
|
laplacian(nuf,rhoU) Gauss linear corrected;
|
||||||
laplacian(muEff,U) Gauss linear corrected;
|
laplacian(muEff,U) Gauss linear corrected;
|
||||||
laplacian(rAUf,p) Gauss linear corrected;
|
laplacian(Dp,p) Gauss linear corrected;
|
||||||
laplacian(DomegaEff,omega) Gauss linear corrected;
|
laplacian(DomegaEff,omega) Gauss linear corrected;
|
||||||
laplacian(DkEff,k) Gauss linear corrected;
|
laplacian(DkEff,k) Gauss linear corrected;
|
||||||
laplacian(1,p) Gauss linear corrected;
|
laplacian(1,p) Gauss linear corrected;
|
||||||
|
|||||||
Reference in New Issue
Block a user