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 dbns
wmake libso immersedBoundary
wmake libso immersedBoundaryForce
wmake libso immersedBoundaryTurbulence
wmake libso immersedBoundary/immersedBoundary
wmake libso immersedBoundary/immersedBoundaryTurbulence
wmake libso immersedBoundary/immersedBoundaryForce
( cd cudaSolvers ; ./Allwmake )

View file

@ -154,12 +154,6 @@ Foam::immersedBoundaryForces::calcForcesMoment() const
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
scalar pRef = pRef_/rho(p);
@ -170,9 +164,9 @@ Foam::immersedBoundaryForces::calcForcesMoment() const
// Check and cast into immersed boundary type
if
(
isA<immersedBoundaryFvPatchVectorField>
isA<immersedBoundaryFvPatch>
(
U.boundaryField()[patchI]
mesh.boundary()[patchI]
)
)
{
@ -184,25 +178,6 @@ Foam::immersedBoundaryForces::calcForcesMoment() const
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 =
refCast<const immersedBoundaryFvPatchScalarField>
(
@ -223,19 +198,82 @@ Foam::immersedBoundaryForces::calcForcesMoment() const
fm.first().first() += rho(p)*sum(pf);
fm.second().first() += rho(p)*sum(Md ^ pf);
// Old treatment:
// Shear force is obtained from velocity wall functions
// and integrated on triangular faces
vectorField vf =
sA*ibPatch.toTriFaces(UPatch.wallShearStress());
if
(
isA<immersedBoundaryVelocityWallFunctionFvPatchVectorField>
(
U.boundaryField()[patchI]
)
)
{
// Turbulent wall functions
// New treatment: normal force calculated on triangles
// Damir Rigler, 30/Apr/2014
// vectorField vfOld = (Sfb & stressPatch.triValue());
// Info<< "Force difference " << sumMag(vf - vfOld) << endl;
// Get immersed boundary velocity. Used to access wall
// shear stress
const
immersedBoundaryVelocityWallFunctionFvPatchVectorField&
UPatch =
refCast
<
const
immersedBoundaryVelocityWallFunctionFvPatchVectorField
>
(
U.boundaryField()[patchI]
);
fm.first().second() += sum(vf);
fm.second().second() += sum(Md ^ vf);
// Shear force is obtained from velocity wall functions
// 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
// {
// solver PCG;
// preconditioner DIC;
// solver CG;
// preconditioner Cholesky;
// minIter 1;
// maxIter 1000;
@ -54,8 +54,8 @@ solvers
U
{
solver PBiCG;
preconditioner DILU;
solver BiCGStab;
preconditioner ILU0;
minIter 1;
maxIter 1000;
@ -65,8 +65,8 @@ solvers
k
{
solver PBiCG;
preconditioner DILU;
solver BiCGStab;
preconditioner ILU0;
minIter 1;
maxIter 1000;
@ -76,8 +76,8 @@ solvers
epsilon
{
solver PBiCG;
preconditioner DILU;
solver BiCGStab;
preconditioner ILU0;
minIter 1;
maxIter 1000;

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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