Avandri |
August 7, 2020 17:13 |
Instability in buoyantSimpleFoam
Good Day Foamers
I am a little new to OpenFOAM and having bit of trouble with a project I am currently busy with. I am trying to simulate the flow around a greenhouse. buoyantSimpleFoam runs for 1 or 2 iterations when using snappyHexMesh and for about 8 or 9 iterations when using just blockMesh before I usually encounter a negative temperature and buoyantSimpleFoam stops.
Apart from using buoyantSimpleFoam the equation of state is Boussinesq and kEpsilon is being used for turbulence. I have simplified the problem into a 2D on since I did not think 3D was necessary in this case.
I have tried to check a few stability criterion and made the velocity smaller, time step smaller and mesh size larger specifically to satisfy Courant stability criterion which did help a small bit. The simulation is still unstable. I have also tried only using blockMesh without using surfaceFeatureExtract and snappyHexMesh before using buoyantSimpleFoam and it still was unstable. I have tried to use some different discretization schemes without much success. I have increased some of the relaxation factors. I believe that something in my zero folder may be causing the instability but I am learning new things every day about OpenFOAM so it may be very possible that it is something else entirely that is causing the issues I am experiencing.
When using ParaView I see that the pressure switches from high to low and back again every time step which makes me think there is an issue specifically in the p or p_rgh file in the 0 folder.
p_rgh:
Quote:
boundaryField
{
inlet
{
type fixedFluxPressure;
value $internalField;
}
outlet
{
type fixedMeanOutletInlet;
meanValue 101325;
value $internalField;
}
wall
{
type fixedFluxPressure;
value $internalField;
}
ground
{
type fixedFluxPressure;
value $internalField;
}
shell
{
type fixedFluxPressure;
value $internalField;
}
top
{
type symmetry;
}
front
{
type empty;
}
back
{
type empty;
}
#includeEtc "caseDicts/setConstraintTypes"
}
|
p:
Quote:
boundaryField
{
inlet
{
type calculated;
value $internalField;
}
outlet
{
type calculated;
value $internalField;
}
wall
{
type calculated;
value $internalField;
}
ground
{
type calculated;
value $internalField;
}
shell
{
type calculated;
value $internalField;
}
top
{
type symmetry;
}
front
{
type empty;
}
back
{
type empty;
}
#includeEtc "caseDicts/setConstraintTypes"
}
|
U:
Quote:
boundaryField
{
inlet
{
type fixedValue;
value uniform $Uinlet;
}
outlet
{
type inletOutlet;
value $internalField;
inletValue $internalField;
}
wall
{
type noSlip;
}
ground
{
type noSlip;
}
shell
{
type noSlip;
}
top
{
type symmetry;
}
front
{
type empty;
}
back
{
type empty;
}
#includeEtc "caseDicts/setConstraintTypes"
}
|
T:
Quote:
boundaryField
{
outlet
{
type inletOutlet;
inletValue $internalField;
value $internalField;
}
inlet
{
type fixedValue;
value $internalField;
}
wall
{
type fixedValue;
value uniform 300;
}
ground
{
type fixedValue;
value uniform 300;
}
shell
{
type fixedValue;
value uniform 300;
}
top
{
type symmetry;
}
front
{
type empty;
}
back
{
type empty;
}
#includeEtc "caseDicts/setConstraintTypes"
}
|
k:
Quote:
boundaryField
{
inlet
{
type fixedValue;
value $internalField;
}
outlet
{
type inletOutlet;
inletValue $internalField;
value $internalField;
}
wall
{
type kqRWallFunction;
value $internalField;
}
ground
{
type kqRWallFunction;
value $internalField;
}
shell
{
type kqRWallFunction;
value $internalField;
}
top
{
type symmetry;
}
front
{
type empty;
}
back
{
type empty;
}
#includeEtc "caseDicts/setConstraintTypes"
}
|
epsilon:
Quote:
boundaryField
{
inlet
{
type fixedValue;
value $internalField;
}
outlet
{
type inletOutlet;
inletValue $internalField;
value $internalField;
}
wall
{
type epsilonWallFunction;
value $internalField;
}
ground
{
type epsilonWallFunction;
value $internalField;
}
shell
{
type epsilonWallFunction;
value $internalField;
}
top
{
type symmetry;
}
front
{
type empty;
}
back
{
type empty;
}
#includeEtc "caseDicts/setConstraintTypes"
}
|
alphat:
Quote:
boundaryField
{
inlet
{
type calculated;
value uniform 0.12;
}
outlet
{
type inletOutlet;
inletValue $internalField;
value $internalField;
}
wall
{
type compressible::alphatJayatillekeWallFunction;
Prt 0.85;
value uniform 0.12;
}
ground
{
type compressible::alphatJayatillekeWallFunction;
Prt 0.85;
value uniform 0.12;
}
shell
{
type compressible::alphatJayatillekeWallFunction;
Prt 0.85;
value uniform 0.12;
}
top
{
type symmetry;
}
front
{
type empty;
}
back
{
type empty;
}
#includeEtc "caseDicts/setConstraintTypes"
}
|
nut:
Quote:
boundaryField
{
inlet
{
type calculated;
value uniform 0;
}
outlet
{
type inletOutlet;
inletValue $internalField;
value $internalField;
}
wall
{
type nutkWallFunction;
value uniform 0;
}
ground
{
type nutkWallFunction;
value uniform 0;
}
shell
{
type nutkWallFunction;
value uniform 0;
}
top
{
type symmetry;
}
back
{
type empty;
}
front
{
type empty;
}
#includeEtc "caseDicts/setConstraintTypes"
}
|
And finally here is a link to two cases I have made with what I have so far. One with only blockMesh and buoyantSimpleFoam and the other run with all the required bits of the simulation:
https://drive.google.com/drive/folde...0z?usp=sharing
Sorry for the large post. I would truly be incredibly grateful to any help I can get on this issue
|