CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Running, Solving & CFD (https://www.cfd-online.com/Forums/openfoam-solving/)
-   -   IAPWSIF97 water properties (https://www.cfd-online.com/Forums/openfoam-solving/58551-iapwsif97-water-properties.html)

Chris Lucas December 3, 2012 07:29

Hi,

you don't need freesteam to install my openFoam freesteam connection. You need freesteam (or better the dynamic library) to run a case.

Have you installed (compiled) OpenFOAM correctly? The error suggests you haven't. The freesteam connection should not affect the other openfoam components. (Same is true for the real gas library classes)

You can copy the dynamic library (by hand) in the folder described in the tutorial README (OpenFOAM/lib/"systemCompilerName"). /usr/lib/ might also work.

Kind Regards,
Christian

hz283 January 2, 2013 14:25

Quote:

Originally Posted by hkb (Post 178224)
Hi David
I absence of input from people who actually know things, allow me to speculate. Unfortunately my knowledge of c++ is rudimentary, so I can't offer any solutions. However, the problem seems to be two-fold:

1. rho is not stored explicity by basicThermo, but constructed as p*psi. Can this be avoided by having basicThermo fetch the density directly from the equation of state, thereby bypassing psi in the calculation of density?

2. The second problem is that psi itself is called from various bits of the source code. I guess that means that we still need a proper definition of psi, even if the density may be possible to calculate even without using psi.

Best Regards
Henrik

Hi All,

I have the same problems about how the psi is calculated in BasicThermo.H. Conceptually, psi=rho/p=1/(R*T). But does anyone know how psi is calculated? Thank you in advance.

best regards,
H

magazoni January 3, 2013 15:08

Hi Christian,

I compiled the IAPWS package.

Code:

cluster@node0:~/OpenFOAM/OpenFOAM-1.6-ext/src/thermophysicalModels/externalMedia/IAPWS_Waterproperties$ wmake libso
Making dependency list for source file IAPWSThermo/IAPWS-IF97.C
Making dependency list for source file IAPWSThermo/IAPWSThermos.C
SOURCE=IAPWSThermo/IAPWS-IF97.C ;  g++ -m64 -Dlinux64 -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -Wnon-virtual-dtor -O3  -DNoRepository -ftemplate-depth-40 -I/home/cluster/OpenFOAM/OpenFOAM-1.6-ext/src/finiteVolume/lnInclude -I/home/cluster/OpenFOAM/OpenFOAM-1.6-ext/src/thermophysicalModels/specie/lnInclude -I/home/cluster/OpenFOAM/OpenFOAM-1.6-ext/src/thermophysicalModels/basic/lnInclude -IlnInclude -I. -I/home/cluster/OpenFOAM/OpenFOAM-1.6-ext/src/OpenFOAM/lnInclude -I/home/cluster/OpenFOAM/OpenFOAM-1.6-ext/src/OSspecific/POSIX/lnInclude  -fPIC -c $SOURCE -o Make/linux64Gcc46DPOpt/IAPWS-IF97.o
SOURCE=IAPWSThermo/IAPWSThermos.C ;  g++ -m64 -Dlinux64 -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -Wnon-virtual-dtor -O3  -DNoRepository -ftemplate-depth-40 -I/home/cluster/OpenFOAM/OpenFOAM-1.6-ext/src/finiteVolume/lnInclude -I/home/cluster/OpenFOAM/OpenFOAM-1.6-ext/src/thermophysicalModels/specie/lnInclude -I/home/cluster/OpenFOAM/OpenFOAM-1.6-ext/src/thermophysicalModels/basic/lnInclude -IlnInclude -I. -I/home/cluster/OpenFOAM/OpenFOAM-1.6-ext/src/OpenFOAM/lnInclude -I/home/cluster/OpenFOAM/OpenFOAM-1.6-ext/src/OSspecific/POSIX/lnInclude  -fPIC -c $SOURCE -o Make/linux64Gcc46DPOpt/IAPWSThermos.o
IAPWSThermo/IAPWS-IF97.C: In function ‘void Foam::calculateProperties_h(SteamState, Foam::scalar&, Foam::scalar&, Foam::scalar&, Foam::scalar&, Foam::scalar&, Foam::scalar&, Foam::scalar&, Foam::scalar&, Foam::scalar&)’:
IAPWSThermo/IAPWS-IF97.C:240:62: warning: variable ‘cpv’ set but not used [-Wunused-but-set-variable]
IAPWSThermo/IAPWS-IF97.C: In function ‘Foam::scalar Foam::psiH(SteamState)’:
IAPWSThermo/IAPWS-IF97.C:432:62: warning: variable ‘cpv’ set but not used [-Wunused-but-set-variable]
IAPWSThermo/IAPWS-IF97.C:489:12: warning: ‘psiH’ may be used uninitialized in this function [-Wuninitialized]
IAPWSThermo/IAPWS-IF97.C: In function ‘Foam::scalar Foam::drhodh(SteamState)’:
IAPWSThermo/IAPWS-IF97.C:586:12: warning: ‘drhodh’ may be used uninitialized in this function [-Wuninitialized]
'/home/cluster/OpenFOAM/OpenFOAM-1.6-ext/lib/linux64Gcc46DPOpt/libIAPWSThermo.so' is up to date.

Now, I think that it is correct. But when I tried to simulate the IAPWS example, there are some errors,

Code:

cluster@node0:~/OpenFOAM/OpenFOAM-1.6-ext/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe$ rhoPisoFoam
/*---------------------------------------------------------------------------*\
| =========                |                                                |
| \\      /  F ield        | OpenFOAM Extend Project: Open source CFD        |
|  \\    /  O peration    | Version:  1.6-ext                              |
|  \\  /    A nd          | Web:      www.extend-project.de                |
|    \\/    M anipulation  |                                                |
\*---------------------------------------------------------------------------*/
Build  : 1.6-ext-959ec266ba5c
Exec  : rhoPisoFoam
Date  : Jan 03 2013
Time  : 17:59:37
Host  : node0
PID    : 17372
Case  : /home/cluster/OpenFOAM/OpenFOAM-1.6-ext/tutorials/compressible/rhoPisoFoam/ras/IAPWS97_Pipe
nProcs : 1
SigFpe : Enabling floating point exception trapping (FOAM_SIGFPE).

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Create time

--> FOAM Warning :
    From function dlLibraryTable::open(const fileName& functionLibName)
    in file db/dlLibraryTable/dlLibraryTable.C at line 86
    could not load /home/cluster/OpenFOAM/OpenFOAM-1.6-ext/lib/linux64Gcc46DPOpt/libIAPWSThermo.so: undefined symbol: _ZNK4Foam14basicPsiThermo6drhodeEv
Create mesh for time = 0

Reading thermophysical properties

Selecting thermodynamics package IAPWSThermo


--> FOAM FATAL ERROR:
Unknown basicPsiThermo type IAPWSThermo

Valid basicPsiThermo types are:

11
(
ePsiThermo<pureMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>>
hsPsiThermo<pureMixture<sutherlandTransport<specieThermo<hConstThermo<perfectGas>>>>>
ePsiThermo<pureMixture<sutherlandTransport<specieThermo<eConstThermo<perfectGas>>>>>
hPsiThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>
hsPsiThermo<pureMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>>
hPsiThermo<pureMixture<sutherlandTransport<specieThermo<hConstThermo<perfectGas>>>>>
ePsiThermo<pureMixture<constTransport<specieThermo<eConstThermo<perfectGas>>>>>
ePsiThermo<pureMixture<sutherlandTransport<specieThermo<hConstThermo<perfectGas>>>>>
hsPsiThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>
ePsiThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>
hPsiThermo<pureMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>>
)
    From function basicPsiThermo::New(const fvMesh&)
    in file psiThermo/basicPsiThermo/newBasicPsiThermo.C at line 64.
FOAM exiting

Do you know what is it?

Thank you,
Best regards,
Felipe Magazoni

magazoni January 3, 2013 15:24

Christian,

Now it is working. I forgot to compile the themophysicalModels. Thanks very much.

Kind regards,
Felipe Magazoni

Chris Lucas January 7, 2013 02:58

Hi

@ hz283

have a look at the perfect gas class.

@ Felipe

did you change the freesteam source as stated in my tutorial case README file?

Christian

hz283 January 7, 2013 10:57

Quote:

Originally Posted by Chris Lucas (Post 400428)
Hi

@ hz283

have a look at the perfect gas class.

@ Felipe

did you change the freesteam source as stated in my tutorial case README file?

Christian

Hi Christian,

In specieI.H, the gas constant is calculated as follows:

R=RR/molweight_, RR=Na*Kb is universal gas constant. For my understanding, here molweight_ is the molar weight for only one species. in Openfoam, is there some methods to calculate the R for multi-gas composition? This is useful for the update of density of multi-gas mixing case.

In the combustion solver, reactingFoam, the density is calculated like this:

Info<< "Creating combustion model\n" << endl;

autoPtr<combustionModels::psiChemistryCombustionMo del> combustion
(
combustionModels::psiChemistryCombustionModel::New
(
mesh
)
);

psiChemistryModel& chemistry = combustion->pChemistry();

hsCombustionThermo& thermo = chemistry.thermo();

basicMultiComponentMixture& composition = thermo.composition();
PtrList<volScalarField>& Y = composition.Y();

word inertSpecie(thermo.lookup("inertSpecie"));

volScalarField rho
(
IOobject
(
"rho",
runTime.timeName(),
mesh
),
thermo.rho()
);


I read the source code and found that in this solver the rho is still updated through p_*psi using EoS in basicPsiThermo. If my understanding is correct, how the effect of multi-gas on the gas constant is taken into consideration here. Actually, in CHEMKIN source package, the EoS is like this: p=Sum(rho*Yk / Wk)*RR*Tk. the subscript k stand for the individual species.

Do you know something about this? Please help me point out if any incorrectness exists.

best,
H

romant May 23, 2013 05:03

newer version of OF
 
Hej,

did anybody get this to work on a newer version of OF, like 2.0, 2.1 or 2.2?

~roman

Chris Lucas May 23, 2013 07:15

Hi,

in OF 2.0 and OF 2.1 it should be simple to use the water properties. I’m not sure about OF 2.2.

1. Copy externalMedia folder. Should work fine under OF 2.1 .

2. Add the new functions (do not copy the files) in basicPsiThermo (OF 1.6 ext) to basicPsiThermo (OF 2.0). Only the 3rd script in makeBasicThermo.H (OF 1.6 ext) is needed for the water properties (2nd is used for real gas thermo)

3. Copy the changes in rhoPisoFOAM (pEqn) into your solver

4. Compile everything.

5. Have a look at the tutorial provided by me.

Hope I did not miss some code block you need. If it works, please report your result here :).

Kind Regards,
Christian

romant May 23, 2013 07:42

It seems that the repo is down. at least the links provided in early posts to sourceforge do not work.

Chris Lucas May 23, 2013 07:47

Hi,

yes, OpenFOAM 1.6 ext is down at the moment. It should be back online soon.

I can send you the files, if you give me your mail adresse (e.g. via private message ..).

Regards,
Christian

Chris Lucas June 26, 2013 09:19

Hi,

OpenFoam ext is back online, but the address changed. YOu can find the branch with the water properties here:

http://sourceforge.net/p/openfoam-ex...Thermo/~/tree/

Regards,
Christian

Fengwei June 26, 2013 12:50

Quote:

Originally Posted by Chris Lucas (Post 436093)
Hi,

OpenFoam ext is back online, but the address changed. YOu can find the branch with the water properties here:

http://sourceforge.net/p/openfoam-ex...Thermo/~/tree/

Regards,
Christian

hello,Christian

Can you simply to explain the steps add equation of state in OF2.1.1? I want to add PR equation, which classes i need to have a modification? thank you very much ! sorry for my poor english.

Chris Lucas June 27, 2013 03:11

HI,

have a look at

http://www.cfd-online.com/Forums/ope...rfect-gas.html

Christian

Fengwei June 27, 2013 08:29

Quote:

Originally Posted by Chris Lucas (Post 436260)

Thank you very much for your answer!:)

wei

openfoammaofnepo July 12, 2013 05:36

Dear Chris,

My question is not about how to implement the external library, but when to call the density from the external library in the OF solver, like rhoPimpleFOAM. DID you directly replace the line thermo.rho()? Or did you call the external to get the density in other places of the solver rhoPimpleFOAM?
Thank you very much.

Quote:

Originally Posted by Chris Lucas (Post 436093)
Hi,

OpenFoam ext is back online, but the address changed. YOu can find the branch with the water properties here:

http://sourceforge.net/p/openfoam-ex...Thermo/~/tree/

Regards,
Christian


romant August 16, 2013 09:19

Quote:

Originally Posted by Chris Lucas (Post 429478)
Hi,

in OF 2.0 and OF 2.1 it should be simple to use the water properties. I’m not sure about OF 2.2.

1. Copy externalMedia folder. Should work fine under OF 2.1 .

2. Add the new functions (do not copy the files) in basicPsiThermo (OF 1.6 ext) to basicPsiThermo (OF 2.0). Only the 3rd script in makeBasicThermo.H (OF 1.6 ext) is needed for the water properties (2nd is used for real gas thermo)

3. Copy the changes in rhoPisoFOAM (pEqn) into your solver

4. Compile everything.

5. Have a look at the tutorial provided by me.

Hope I did not miss some code block you need. If it works, please report your result here :).

Kind Regards,
Christian

I just tried this with OpenFOAM 2.2.1 and 2.1 (as 2.0 is only available when using the archive at the moment), it won't work, the file structure change and basicPsiThermo does not exist anymore. Now they have inheritance basicThermo->fluidThermo->psiThermo instead of basicThermo->basicPisThermo

I will try to look into it and see if it can be adopted to run your code.

Chris Lucas August 17, 2013 11:00

HI,

You can download my library (also includes real gas thermodynamic classes) for OF 2.1 here:

git clone https://github.com/morgoth541/of_realFluid.git


Christian

romant August 19, 2013 05:18

Quote:

Originally Posted by Chris Lucas (Post 446306)
HI,

You can download my library (also includes real gas thermodynamic classes) for OF 2.1 here:

git clone https://github.com/morgoth541/of_realFluid.git


Christian

Thanks, I will install it and report if everything works.

romant August 19, 2013 08:50

Compiling fails
 
2 Attachment(s)
Quote:

Originally Posted by Chris Lucas (Post 446306)
HI,

You can download my library (also includes real gas thermodynamic classes) for OF 2.1 here:

git clone https://github.com/morgoth541/of_realFluid.git


Christian

Hej,

I tried compiling it, however, the procedure fails. There is something wrong with the includes. I attached the full and the selective log file to this post. The selective log file will give you only the errors which occured. In which you will see that the linker has problems mostly with the following libraries
Code:

/usr/bin/ld: cannot find -lcompressibleTurbulenceModel
/usr/bin/ld: cannot find -lcompressibleRASModels
/usr/bin/ld: cannot find -lcompressibleLESModels
/usr/bin/ld: cannot find -llagrangianIntermediate
/usr/bin/ld: cannot find -lbasicThermophysicalModels
/usr/bin/ld: cannot find -lreactionThermophysicalModels
/usr/bin/ld: cannot find -lchemistryModel
/usr/bin/ld: cannot find -lradiationModels
/usr/bin/ld: cannot find -lsurfaceFilmModels
/usr/bin/ld: cannot find -lcombustionModels

I checked, but I can't find a problem in the options file of the different solvers where this problem occurs.

romant August 30, 2013 11:02

IAPWS-IF97 water properties for OF 2.2.1
 
Hi Christian,

I tried adjusting your external thermo library so that I can compile it in an OF 2.2.1 environment. However, I get one specific error from the IAPWSThermos.C file when compiling.

Code:

/home/roman/Dropbox/uni/PhD/coding/IAPWSThermo/IAPWSThermo/IAPWSThermos.C:74: error: expected constructor, destructor, or type conversion before ‘;’ token
Where the file has the layout

Code:


//#include "makeBasicPsiThermo.H"
#include "makeThermo.H"
#include "IAPWSThermo.H"

// including dummy classes --> this classes do nothing
// except satisfy the template structure
//#include "dummyEqnOfState.H"
//#include "dummyThermo.H"
//#include "dummyH.H"
//#include "dummyTransport.H"

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

namespace Foam
{

/* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */

/*
makeBasicRealGasThermo
(
    IAPWSThermo,
    pureMixture,
    dummyTransport,
    dummyThermo,
    dummyH,
    dummyEqnOfState
);
*/

makeIAPWSThermo
(
    IAPWSThermo // <- this is where the error occurs
);


// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

} // End namespace Foam

Is there any idea where this problem could come from?


All times are GMT -4. The time now is 08:16.