|
[Sponsors] | |||||
|
|
|
#1 |
|
Member
Ben Simpson
Join Date: Dec 2019
Location: UK
Posts: 32
Rep Power: 7 ![]() |
Hi all,
I am trying to set up an Age of Air function object in OpenFOAM 8. I am running buoyantSimpleFoam in Ubuntu 18.04. I have tried implementing a function object from older threads (mainly Age of air with function object). My controlDict code is: Code:
AoA
{
type scalarTransport;
libs ("libutilityFunctionObjects.so");
enabled true;
writeControl writeTime;
log yes;
nCorr 1;
field AoA;
active true;
autoSchemes false;
resetOnStartUp false;
DT 1e-5;
fvOptions
{
IncrementTime
{
type semiImplicitSource;
active true;
selectionMode all;
volumeMode specific;
sources
{
injectionRateSuSp
{
AoA (1 0);
}
}
}
}
}
Code:
Selecting finite volume options model type semiImplicitSource
Source: IncrementTime
- selecting all cells
- selected 1119784 cell(s) with volume 158.70844
[0]
[0]
[0] --> FOAM FATAL ERROR:
[0]
request for regIOobject injectionRateSuSp from objectRegistry region0 failed
available objects of type regIOobject are
Or if there is a better method for calculating age of air? Thanks in advance for any support. Kind regards, Ben My 0/AoA file is: Code:
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object AoA;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 1 0 0 0 0];
internalField uniform 0;
boundaryField
{
"xmin|xmax|ymin|ymax|zmax_north|zmax_south"
{
type fixedValue;
value uniform 0;
}
"zmin|Ceiling|Floor|East_Wall|North_Wall|South_Wall|West_Wall|Computer|Person|zmax_ceiling"
{
type zeroGradient;
}
Inlet
{
type fixedValue;
value uniform 0;
}
#includeEtc "caseDicts/setConstraintTypes"
}
Code:
AoA
{
solver smoothSolver;
smoother GaussSeidel;
tolerance 1e-08;
relTol 0.1;
nsweep 1;
}
Code:
div(phi,AoA) bounded Gauss upwind; |
|
|
|
|
|
|
|
|
#2 |
|
Senior Member
Join Date: Apr 2020
Location: UK
Posts: 869
Rep Power: 19 ![]() |
There were some changes in v8 to the semiImplicit source term syntax. Check out https://openfoam.org/release/8/ and the example in https://github.com/OpenFOAM/OpenFOAM...7e9747fe696aeb. I am guessing that you need to change:
Code:
sources
{
injectionRateSuSp
{
AoA (1 0);
}
}
Code:
sources
{
AoA
{
explicit 1;
implicit 0;
}
}
|
|
|
|
|
|
|
|
|
#3 |
|
Member
Ben Simpson
Join Date: Dec 2019
Location: UK
Posts: 32
Rep Power: 7 ![]() |
Thank you for your reply Tobermory.
The changes you suggested worked and my AoA is now working. Many thanks. Ben |
|
|
|
|
|
|
|
|
#4 |
|
Senior Member
Herpes Free Engineer
Join Date: Sep 2019
Location: The Home Under The Ground with the Lost Boys
Posts: 931
Rep Power: 14 ![]() |
In case of anyone's interest,
Function object definitions for the `local mean age of air` and `normalised local mean age of air` metrics (where zero-value means fresh air): Code:
scalarTransport1
{
type scalarTransport;
libs (solverFunctionObjects);
field LMA;
schemesField k; // bounded Gauss limitedLinear 1;
bounded01 false;
alphaD 1; // viscous contribution
alphaDt 0; // turbulent contribution
// Adding fvOption source for residence time
fvOptions
{
unitySource
{
type scalarSemiImplicitSource;
enabled true;
scalarSemiImplicitSourceCoeffs
{
selectionMode all;
volumeMode specific;
injectionRateSuSp
{
LMA (1 0);
}
}
}
}
resetOnStartUp false;
timeStart <timeStart>;
executeControl timeStep;
executeInterval 1;
writeControl writeTime;
}
normalisedLocalMeanAge1
{
type reference;
libs (fieldFunctionObjects);
field LMA;
result nLMA;
// normT = T / (V/Q)
// normT: normalised local mean age of air
// T: local mean age of air (Bartak et al., 2001, Eq. 1)
// V: volume of air in the room [m3]
// Q: volumetric flow rate through the inlet [m3/s]
// V/Q: (estimated) mean age of fluid through a reference area (e.g. outlet)
// scale = 1/(V/Q) = Q/V [1/s]
scale <Q/V>;
offset 0;
timeStart <timeStart>;
executeControl writeTime;
writeControl writeTime;
}
Code:
/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: v2012 | | \\ / A nd | Website: www.openfoam.com | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volScalarField; object LMA; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 0 0 0 0 0 0]; internalField uniform 0; boundaryField { inlet { type fixedValue; value uniform 0; } outlet { type inletOutlet; inletValue uniform 0; value uniform 0; } ".*" { type zeroGradient; } #includeEtc "caseDicts/setConstraintTypes" } // ************************************************************************* // Code:
solvers
{
LMA
{
solver PBiCGStab;
preconditioner DILU;
tolerance 1e-8;
relTol 0.01;
}
}
relaxationFactors
{
equations
{
LMA 0.7;
}
}
__________________
The OpenFOAM community is the biggest contributor to OpenFOAM: User guide/Wiki-1/Wiki-2/Code guide/Code Wiki/Journal Nilsson/Guerrero/Holzinger/Holzmann/Nagy/Santos/Nozaki/Jasak/Primer Governance Bugs/Features: OpenFOAM (ESI-OpenCFD-Trademark) Bugs/Features: FOAM-Extend (Wikki-FSB) Bugs: OpenFOAM.org How to create a MWE New: Forkable OpenFOAM mirror |
|
|
|
|
|
|
|
|
#5 |
|
New Member
Toby
Join Date: Aug 2021
Posts: 1
Rep Power: 0 ![]() |
@HPE:
Thanks for providing the code for the function object, I successfully implemented it into my case. However, analysing the results uncovered some unrealistic values where the LMA value was bigger than the timestep (e.g. after 40 s the LMA showed a value of 60). Any idea where this mistake might originate from? I am simulating a box-shaped room with natural ventilation (inlet and outlet window). Thanks in advance! |
|
|
|
|
|
|
|
|
#6 |
|
Senior Member
abdikerim kurbanaliev
Join Date: Jun 2010
Location: Kyrgyzstan, Osh
Posts: 122
Rep Power: 17 ![]() |
Hi,
I followed to recommendation of HPE. But I got an error:Starting time loop Selecting finite volume options type scalarSemiImplicitSource Source: unitySource - selecting all cells - selected 499200 cell(s) with volume 45.36 --> FOAM FATAL IO ERROR: (openfoam-2012 patch=210618) Wrong token type - expected scalar value, found on line 78: word '<timeStart>' From Foam::Istream& Foam: perator>>(Foam::Istream&, Foam::doubleScalar&)in file lnInclude/Scalar.C at line 154. FOAM exiting. Who knows what am I going to do with this situation? I am using of2012 installed on the ubuntu 18.06LTS Thank you. |
|
|
|
|
|
|
|
|
#7 |
|
New Member
Na
Join Date: Sep 2014
Posts: 6
Rep Power: 13 ![]() |
Hi. I have error too:
"--> FOAM FATAL IO ERROR: wrong token type - expected string, found on line 60 the word 'solverFunctionObjects' " I'm using OF4Win 20.09 Code:
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application simpleFoam;
startFrom startTime;
startTime 0;
stopAt endTime;
endTime 2000;
deltaT 1;
writeControl timeStep;
writeInterval 100;
purgeWrite 0;
writeFormat ascii;
writePrecision 6;
writeCompression off;
timeFormat general;
timePrecision 6;
runTimeModifiable true;
cacheTemporaryObjects
(
kEpsilon:G
);
functions
{
#includeFunc streamlines
#includeFunc writeObjects(kEpsilon:G)
scalarTransport1
{
type scalarTransport;
libs (solverFunctionObjects);
field LMA;
schemesField k; // bounded Gauss limitedLinear 1;
bounded01 false;
alphaD 1; // viscous contribution
alphaDt 0; // turbulent contribution
// Adding fvOption source for residence time
fvOptions
{
unitySource
{
type scalarSemiImplicitSource;
enabled true;
scalarSemiImplicitSourceCoeffs
{
selectionMode all;
volumeMode specific;
injectionRateSuSp
{
LMA (1 0);
}
}
}
}
resetOnStartUp false;
timeStart <timeStart>;
executeControl timeStep;
executeInterval 1;
writeControl writeTime;
}
normalisedLocalMeanAge1
{
type reference;
libs (fieldFunctionObjects);
field LMA;
result nLMA;
// normT = T / (V/Q)
// normT: normalised local mean age of air
// T: local mean age of air (Bartak et al., 2001, Eq. 1)
// V: volume of air in the room [m3]
// Q: volumetric flow rate through the inlet [m3/s]
// V/Q: (estimated) mean age of fluid through a reference area (e.g. outlet)
// scale = 1/(V/Q) = Q/V [1/s]
scale <Q/V>;
offset 0;
timeStart <timeStart>;
executeControl writeTime;
writeControl writeTime;
}
}
// ************************************************************************* //
|
|
|
|
|
|
![]() |
| Tags |
| age of air, buoyantsimplefoam, natural ventilation, openfoam 8 |
| Thread Tools | Search this Thread |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| [Other] refineWallLayer Error | Yuby | OpenFOAM Meshing & Mesh Conversion | 2 | November 11, 2021 12:04 |
| [OpenFOAM] Annoying issue of automatic "Rescale to Data Range " with paraFoam/paraview 3.12 | keepfit | ParaView | 60 | September 18, 2013 04:23 |
| Compile problem | ivanyao | OpenFOAM Running, Solving & CFD | 1 | October 12, 2012 10:31 |
| Problem with rhoSimpleFoam | matteo_gautero | OpenFOAM Running, Solving & CFD | 0 | February 28, 2008 07:51 |
| [blockMesh] Axisymmetrical mesh | Rasmus Gjesing (Gjesing) | OpenFOAM Meshing & Mesh Conversion | 10 | April 2, 2007 15:00 |