FEATURE: Updates of Immersed Boundary tutorial cases and build script. Author: Hrvoje Jasak. Merge: Dominik Christ.

This commit is contained in:
Dominik Christ 2015-05-13 17:03:54 +01:00
commit db3923787e
24 changed files with 207 additions and 224 deletions

View file

@ -71,9 +71,9 @@ wmake libso multiSolver
wmake libso solidModels wmake libso solidModels
wmake libso dbns wmake libso dbns
wmake libso immersedBoundary wmake libso immersedBoundary/immersedBoundary
wmake libso immersedBoundaryForce wmake libso immersedBoundary/immersedBoundaryTurbulence
wmake libso immersedBoundaryTurbulence wmake libso immersedBoundary/immersedBoundaryForce
( cd cudaSolvers ; ./Allwmake ) ( cd cudaSolvers ; ./Allwmake )

View file

@ -154,12 +154,6 @@ Foam::immersedBoundaryForces::calcForcesMoment() const
const fvMesh& mesh = U.mesh(); const fvMesh& mesh = U.mesh();
// Stress from turbulence model. Note: this does not account
// for wall functions on the Immersed Boundary: use wallShearStress
// from Immersed Boundary U wall patch instead.
// HJ, 11/Aug/2014
// volSymmTensorField stress = devRhoReff();
// Scale pRef by density for incompressible simulations // Scale pRef by density for incompressible simulations
scalar pRef = pRef_/rho(p); scalar pRef = pRef_/rho(p);
@ -170,9 +164,9 @@ Foam::immersedBoundaryForces::calcForcesMoment() const
// Check and cast into immersed boundary type // Check and cast into immersed boundary type
if if
( (
isA<immersedBoundaryFvPatchVectorField> isA<immersedBoundaryFvPatch>
( (
U.boundaryField()[patchI] mesh.boundary()[patchI]
) )
) )
{ {
@ -184,25 +178,6 @@ Foam::immersedBoundaryForces::calcForcesMoment() const
mesh.boundary()[patchI] mesh.boundary()[patchI]
); );
// Get immersed boundary velocity. Used to access wall
// shear stress
const immersedBoundaryVelocityWallFunctionFvPatchVectorField&
UPatch =
refCast
<
const
immersedBoundaryVelocityWallFunctionFvPatchVectorField
>
(
U.boundaryField()[patchI]
);
// const immersedBoundaryFvPatchSymmTensorField stressPatch =
// refCast<const immersedBoundaryFvPatchSymmTensorField>
// (
// stress.boundaryField()[patchI]
// );
const immersedBoundaryFvPatchScalarField pPatch = const immersedBoundaryFvPatchScalarField pPatch =
refCast<const immersedBoundaryFvPatchScalarField> refCast<const immersedBoundaryFvPatchScalarField>
( (
@ -223,19 +198,82 @@ Foam::immersedBoundaryForces::calcForcesMoment() const
fm.first().first() += rho(p)*sum(pf); fm.first().first() += rho(p)*sum(pf);
fm.second().first() += rho(p)*sum(Md ^ pf); fm.second().first() += rho(p)*sum(Md ^ pf);
// Old treatment: if
// Shear force is obtained from velocity wall functions (
// and integrated on triangular faces isA<immersedBoundaryVelocityWallFunctionFvPatchVectorField>
vectorField vf = (
sA*ibPatch.toTriFaces(UPatch.wallShearStress()); U.boundaryField()[patchI]
)
)
{
// Turbulent wall functions
// New treatment: normal force calculated on triangles // Get immersed boundary velocity. Used to access wall
// Damir Rigler, 30/Apr/2014 // shear stress
// vectorField vfOld = (Sfb & stressPatch.triValue()); const
// Info<< "Force difference " << sumMag(vf - vfOld) << endl; immersedBoundaryVelocityWallFunctionFvPatchVectorField&
UPatch =
refCast
<
const
immersedBoundaryVelocityWallFunctionFvPatchVectorField
>
(
U.boundaryField()[patchI]
);
fm.first().second() += sum(vf); // Shear force is obtained from velocity wall functions
fm.second().second() += sum(Md ^ vf); // and integrated on triangular faces
vectorField vf =
sA*ibPatch.toTriFaces(UPatch.wallShearStress());
fm.first().second() += sum(vf);
fm.second().second() += sum(Md ^ vf);
}
else if
(
isA<immersedBoundaryFvPatchVectorField>
(
U.boundaryField()[patchI]
)
)
{
// Laminar flow
// Get immersed boundary velocity
const immersedBoundaryFvPatchVectorField& UPatch =
refCast<const immersedBoundaryFvPatchVectorField>
(
U.boundaryField()[patchI]
);
// Look up the viscosity
if (mesh.foundObject<dictionary>("transportProperties"))
{
const dictionary& transportProperties =
mesh.lookupObject<dictionary>
(
"transportProperties"
);
dimensionedScalar nu(transportProperties.lookup("nu"));
vectorField vf =
sA*rho(p)*nu.value()*UPatch.triGrad();
fm.first().second() += sum(vf);
fm.second().second() += sum(Md ^ vf);
}
else
{
InfoIn
(
"immersedBoundaryForces::forcesMoments"
"immersedBoundaryForces::calcForcesMoment() const"
) << "Laminar flow, but cannot find nu. Skipping"
<< endl;
}
}
} }
} }
} }

View file

@ -1,25 +0,0 @@
#!/bin/sh
( cd cylinderInSquarePotential ; ./Allclean )
( cd cylinderInSquareLaplace ; ./Allclean )
( cd cylinderInChannelPotential ; ./Allclean )
( cd cylinderInChannelScalarTransport ; ./Allclean )
( cd cylinderInChannelIcoIbFoam ; ./Allclean )
( cd cylinderInChannelFineIcoIbFoam ; ./Allclean )
( cd thickPlateRefinedMesh ; ./Allclean )
( cd sphereInChannel ; ./Allclean )
( cd cylBumpInterIbFoam ; ./Allclean )
( cd pitzDailyBodyFitted ; ./Allclean )
( cd pitzDailyLaminarIcoIbFoam ; ./Allclean )
( cd simpleSilencerLaminarIcoIbFoam ; ./Allclean )
( cd pitzDailyLaminarSimpleIbFoam ; ./Allclean )
( cd pitzDailyTurbulentSimpleIbFoam ; ./Allclean )
( cd backwardStepShortTurbulentSimpleIbFoam ; ./Allclean)
( cd porousBumpChannelBodyFitted ; ./Allclean )
( cd porousBumpChannelIb ; ./Allclean )

View file

@ -1,25 +0,0 @@
#!/bin/sh
( cd cylinderInSquarePotential ; ./Allrun )
( cd cylinderInSquareLaplace ; ./Allrun )
( cd cylinderInChannelPotential ; ./Allrun )
( cd cylinderInChannelScalarTransport ; ./Allrun )
( cd cylinderInChannelIcoIbFoam ; ./Allrun )
( cd cylinderInChannelFineIcoIbFoam ; ./Allrun )
( cd thickPlateRefinedMesh ; ./Allrun )
( cd sphereInChannel ; ./Allrun )
( cd cylBumpinterIbFoam ; ./Allrun )
( cd pitzDailyBodyFitted ; ./Allrun )
( cd pitzDailyLaminarIcoIbFoam ; ./Allrun )
( cd simpleSilencerLaminarIcoIbFoam ; ./Allrun )
( cd pitzDailyLaminarSimpleIbFoam ; ./Allrun )
( cd pitzDailyTurbulentSimpleIbFoam ; ./Allrun )
( cd backwardStepShortTurbulentSimpleIbFoam ; ./Allrun )
( cd porousBumpChannelBodyFitted ; ./Allrun )
( cd porousBumpChannelIb ; ./Allrun )

View file

@ -18,8 +18,8 @@ solvers
{ {
// p // p
// { // {
// solver PCG; // solver CG;
// preconditioner DIC; // preconditioner Cholesky;
// minIter 1; // minIter 1;
// maxIter 1000; // maxIter 1000;
@ -54,8 +54,8 @@ solvers
U U
{ {
solver PBiCG; solver BiCGStab;
preconditioner DILU; preconditioner ILU0;
minIter 1; minIter 1;
maxIter 1000; maxIter 1000;
@ -65,8 +65,8 @@ solvers
k k
{ {
solver PBiCG; solver BiCGStab;
preconditioner DILU; preconditioner ILU0;
minIter 1; minIter 1;
maxIter 1000; maxIter 1000;
@ -76,8 +76,8 @@ solvers
epsilon epsilon
{ {
solver PBiCG; solver BiCGStab;
preconditioner DILU; preconditioner ILU0;
minIter 1; minIter 1;
maxIter 1000; maxIter 1000;

View file

@ -18,10 +18,10 @@ solvers
{ {
pcorr pcorr
{ {
solver PCG; solver CG;
preconditioner DIC; preconditioner Cholesky;
minIter 1; minIter 0;
maxIter 1000; maxIter 1000;
tolerance 1e-08; tolerance 1e-08;
relTol 0.01; relTol 0.01;
@ -29,10 +29,10 @@ solvers
pd pd
{ {
solver PCG; solver CG;
preconditioner DIC; preconditioner Cholesky;
minIter 1; minIter 0;
maxIter 1000; maxIter 1000;
tolerance 1e-08; tolerance 1e-08;
relTol 0.01; relTol 0.01;
@ -40,10 +40,10 @@ solvers
pdFinal pdFinal
{ {
solver PCG; solver CG;
preconditioner DIC; preconditioner Cholesky;
minIter 1; minIter 0;
maxIter 1000; maxIter 1000;
tolerance 1e-08; tolerance 1e-08;
relTol 0.0; relTol 0.0;
@ -51,11 +51,10 @@ solvers
U U
{ {
solver PBiCG; solver BiCGStab;
preconditioner DILU; preconditioner ILU0;
minIter 0;
minIter 1;
maxIter 100; maxIter 100;
tolerance 1e-08; tolerance 1e-08;
relTol 0; relTol 0;
@ -63,11 +62,10 @@ solvers
alpha1 alpha1
{ {
solver PBiCG; solver BiCGStab;
preconditioner DILU; preconditioner ILU0;
minIter 0;
minIter 1;
maxIter 100; maxIter 100;
tolerance 1e-08; tolerance 1e-08;
relTol 0; relTol 0;

View file

@ -37,8 +37,8 @@ solvers
U U
{ {
solver PBiCG; solver BiCGStab;
preconditioner DILU; preconditioner ILU0;
minIter 1; minIter 1;
maxIter 1000; maxIter 1000;

View file

@ -37,8 +37,8 @@ solvers
U U
{ {
solver PBiCG; solver BiCGStab;
preconditioner DILU; preconditioner ILU0;
minIter 1; minIter 1;
maxIter 1000; maxIter 1000;

View file

@ -14,7 +14,7 @@ FoamFile
} }
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application icoDyMFoam; application potentialIbFoam;
startFrom startTime; startFrom startTime;

View file

@ -18,8 +18,8 @@ solvers
{ {
p p
{ {
solver PCG; solver CG;
preconditioner DIC; preconditioner Cholesky;
minIter 1; minIter 1;
maxIter 1000; maxIter 1000;
@ -42,8 +42,8 @@ solvers
U U
{ {
solver PBiCG; solver BiCGStab;
preconditioner DILU; preconditioner ILU0;
minIter 1; minIter 1;
maxIter 1000; maxIter 1000;

View file

@ -18,8 +18,8 @@ solvers
{ {
p p
{ {
solver PCG; solver CG;
preconditioner DIC; preconditioner Cholesky;
minIter 1; minIter 1;
maxIter 1000; maxIter 1000;
@ -29,8 +29,8 @@ solvers
T T
{ {
solver PBiCG; solver BiCGStab;
preconditioner DILU; preconditioner ILU0;
tolerance 1e-08; tolerance 1e-08;
relTol 0; relTol 0;
}; };

View file

@ -18,8 +18,8 @@ solvers
{ {
T T
{ {
solver PCG; solver CG;
preconditioner DIC; preconditioner Cholesky;
minIter 1; minIter 1;
maxIter 1000; maxIter 1000;

View file

@ -18,8 +18,8 @@ solvers
{ {
p p
{ {
solver PCG; solver CG;
preconditioner DIC; preconditioner Cholesky;
minIter 1; minIter 1;
maxIter 1000; maxIter 1000;
@ -42,8 +42,8 @@ solvers
U U
{ {
solver PBiCG; solver BiCGStab;
preconditioner DILU; preconditioner ILU0;
minIter 1; minIter 1;
maxIter 1000; maxIter 1000;

View file

@ -18,29 +18,29 @@ solvers
{ {
p p
{ {
solver PCG; solver CG;
preconditioner DIC; preconditioner Cholesky;
tolerance 1e-06; tolerance 1e-06;
relTol 0.01; relTol 0.01;
} }
U U
{ {
solver PBiCG; solver BiCGStab;
preconditioner DILU; preconditioner ILU0;
tolerance 1e-05; tolerance 1e-05;
relTol 0.1; relTol 0.1;
} }
k k
{ {
solver PBiCG; solver BiCGStab;
preconditioner DILU; preconditioner ILU0;
tolerance 1e-05; tolerance 1e-05;
relTol 0.1; relTol 0.1;
} }
epsilon epsilon
{ {
solver PBiCG; solver BiCGStab;
preconditioner DILU; preconditioner ILU0;
tolerance 1e-05; tolerance 1e-05;
relTol 0.1; relTol 0.1;
} }

View file

@ -18,8 +18,8 @@ solvers
{ {
// p // p
// { // {
// solver PCG; // solver CG;
// preconditioner DIC; // preconditioner Cholesky;
// minIter 1; // minIter 1;
// maxIter 1000; // maxIter 1000;
@ -54,11 +54,11 @@ solvers
U U
{ {
solver PBiCG; solver BiCGStab;
preconditioner DILU; preconditioner ILU0;
// solver PCG; // solver CG;
// preconditioner DIC; // preconditioner Cholesky;
minIter 1; minIter 1;
maxIter 1000; maxIter 1000;

View file

@ -18,8 +18,8 @@ solvers
{ {
// p // p
// { // {
// solver PCG; // solver CG;
// preconditioner DIC; // preconditioner Cholesky;
// minIter 1; // minIter 1;
// maxIter 1000; // maxIter 1000;
@ -54,11 +54,8 @@ solvers
U U
{ {
solver PBiCG; solver BiCGStab;
preconditioner DILU; preconditioner ILU0;
// solver PCG;
// preconditioner DIC;
minIter 1; minIter 1;
maxIter 1000; maxIter 1000;

View file

@ -18,8 +18,8 @@ solvers
{ {
p p
{ {
solver PCG; solver CG;
preconditioner DIC; preconditioner Cholesky;
minIter 1; minIter 1;
maxIter 1000; maxIter 1000;
@ -54,8 +54,8 @@ solvers
U U
{ {
solver PBiCG; solver BiCGStab;
preconditioner DILU; preconditioner ILU0;
minIter 1; minIter 1;
maxIter 1000; maxIter 1000;
@ -65,8 +65,8 @@ solvers
k k
{ {
solver PBiCG; solver BiCGStab;
preconditioner DILU; preconditioner ILU0;
minIter 1; minIter 1;
maxIter 1000; maxIter 1000;
@ -76,8 +76,8 @@ solvers
epsilon epsilon
{ {
solver PBiCG; solver BiCGStab;
preconditioner DILU; preconditioner ILU0;
minIter 1; minIter 1;
maxIter 1000; maxIter 1000;

View file

@ -19,32 +19,32 @@ solvers
{ {
p p
{ {
solver PCG; solver CG;
preconditioner DIC; preconditioner Cholesky;
minIter 1; minIter 1;
tolerance 1e-07; tolerance 1e-07;
relTol 0.01; relTol 0.01;
} }
U U
{ {
solver PBiCG; solver BiCGStab;
preconditioner DILU; preconditioner ILU0;
minIter 1; minIter 1;
tolerance 1e-07; tolerance 1e-07;
relTol 0; relTol 0;
} }
k k
{ {
solver PBiCG; solver BiCGStab;
preconditioner DILU; preconditioner ILU0;
minIter 1; minIter 1;
tolerance 1e-07; tolerance 1e-07;
relTol 0; relTol 0;
} }
epsilon epsilon
{ {
solver PBiCG; solver BiCGStab;
preconditioner DILU; preconditioner ILU0;
minIter 1; minIter 1;
tolerance 1e-07; tolerance 1e-07;
relTol 0; relTol 0;

View file

@ -18,8 +18,8 @@ solvers
{ {
// p // p
// { // {
// solver PCG; // solver CG;
// preconditioner DIC; // preconditioner Cholesky;
// minIter 1; // minIter 1;
// maxIter 1000; // maxIter 1000;
@ -54,8 +54,8 @@ solvers
U U
{ {
solver PBiCG; solver BiCGStab;
preconditioner DILU; preconditioner ILU0;
minIter 1; minIter 1;
maxIter 1000; maxIter 1000;
@ -65,8 +65,8 @@ solvers
k k
{ {
solver PBiCG; solver BiCGStab;
preconditioner DILU; preconditioner ILU0;
minIter 1; minIter 1;
maxIter 1000; maxIter 1000;
@ -76,8 +76,8 @@ solvers
epsilon epsilon
{ {
solver PBiCG; solver BiCGStab;
preconditioner DILU; preconditioner ILU0;
minIter 1; minIter 1;
maxIter 1000; maxIter 1000;

View file

@ -18,8 +18,8 @@ solvers
{ {
p p
{ {
solver PCG; solver CG;
preconditioner DIC; preconditioner Cholesky;
minIter 1; minIter 1;
maxIter 1000; maxIter 1000;
@ -42,11 +42,11 @@ solvers
U U
{ {
solver PBiCG; solver BiCGStab;
preconditioner DILU; preconditioner ILU0;
// solver PCG; // solver CG;
// preconditioner DIC; // preconditioner Cholesky;
minIter 1; minIter 1;
maxIter 1000; maxIter 1000;

View file

@ -1,5 +1,5 @@
EXE_INC = \ EXE_INC = \
-I../../../src/immersedBoundary/lnInclude \ -I$(LIB_SRC)/immersedBoundary/immersedBoundary/lnInclude \
-I$(LIB_SRC)/dynamicMesh/dynamicMesh/lnInclude \ -I$(LIB_SRC)/dynamicMesh/dynamicMesh/lnInclude \
-I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/triSurface/lnInclude \ -I$(LIB_SRC)/triSurface/lnInclude \
@ -12,4 +12,4 @@ EXE_LIBS = \
-lsurfMesh \ -lsurfMesh \
-lsampling \ -lsampling \
-ldynamicMesh \ -ldynamicMesh \
-L$(FOAM_USER_LIBBIN) -limmersedBoundary -limmersedBoundary

View file

@ -16,16 +16,16 @@ FoamFile
solvers solvers
{ {
// p p
// { {
// solver PCG; solver CG;
// preconditioner DIC; preconditioner Cholesky;
// minIter 1; minIter 1;
// maxIter 1000; maxIter 1000;
// tolerance 1e-06; tolerance 1e-06;
// relTol 0; relTol 0;
// } }
// p // p
// { // {
@ -40,29 +40,29 @@ solvers
// mergeLevels 1; // mergeLevels 1;
// } // }
p // p
{ // {
solver amgSolver; // solver amgSolver;
cycle W-cycle; // cycle W-cycle;
policy PAMG; // policy PAMG;
nPreSweeps 0; // nPreSweeps 0;
nPostSweeps 2; // nPostSweeps 2;
groupSize 4; // groupSize 4;
minCoarseEqns 50; // minCoarseEqns 50;
nMaxLevels 100; // nMaxLevels 100;
scale on; // scale on;
smoother ILU; // smoother ILU;
minIter 1; // minIter 1;
maxIter 200; // maxIter 200;
tolerance 1e-8; // tolerance 1e-8;
relTol 0.0; // relTol 0.0;
} // }
U U
{ {
solver PBiCG; solver BiCGStab;
preconditioner DILU; preconditioner ILU0;
minIter 1; minIter 1;
maxIter 1000; maxIter 1000;

View file

@ -1,5 +1,5 @@
EXE_INC = \ EXE_INC = \
-I../../../src/immersedBoundary/lnInclude \ -I$(LIB_SRC)/immersedBoundary/immersedBoundary/lnInclude \
-I$(LIB_SRC)/dynamicMesh/dynamicMesh/lnInclude \ -I$(LIB_SRC)/dynamicMesh/dynamicMesh/lnInclude \
-I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/triSurface/lnInclude \ -I$(LIB_SRC)/triSurface/lnInclude \
@ -12,4 +12,4 @@ EXE_LIBS = \
-lsurfMesh \ -lsurfMesh \
-lsampling \ -lsampling \
-ldynamicMesh \ -ldynamicMesh \
-L$(FOAM_USER_LIBBIN) -limmersedBoundary -limmersedBoundary

View file

@ -18,8 +18,8 @@ solvers
{ {
// p // p
// { // {
// solver PCG; // solver CG;
// preconditioner DIC; // preconditioner Cholesky;
// minIter 1; // minIter 1;
// maxIter 1000; // maxIter 1000;
@ -42,11 +42,11 @@ solvers
U U
{ {
solver PBiCG; solver BiCGStab;
preconditioner DILU; preconditioner ILU0;
// solver PCG; // solver CG;
// preconditioner DIC; // preconditioner Cholesky;
minIter 1; minIter 1;
maxIter 1000; maxIter 1000;