Manual

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 47

DownloadManual
Open PDF In BrowserView PDF
ExternalMedia
Generated by Doxygen 1.7.6.1
Tue Apr 3 2012 23:59:35

Contents

1

2

3

4

External Media HowTo

1

1.1

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1

1.2

Using the pre-packaged releases with FluidProp . . . . . . . . . . . . .

2

1.3

Architecture of the package . . . . . . . . . . . . . . . . . . . . . . . .

2

1.4

Developing your own external medium package . . . . . . . . . . . . .

3

Class Index

5

2.1

5

Class Hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Class Index

7

3.1

7

Class List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Class Documentation

9

4.1

9

BaseSolver Class Reference . . . . . . . . . . . . . . . . . . . . . . .
4.1.1

Detailed Description

4.1.2

Constructor & Destructor Documentation . . . . . . . . . . . . . 12

4.1.3

. . . . . . . . . . . . . . . . . . . . . . . 12

4.1.2.1

BaseSolver . . . . . . . . . . . . . . . . . . . . . . . 12

4.1.2.2

∼BaseSolver . . . . . . . . . . . . . . . . . . . . . . 13

Member Function Documentation

. . . . . . . . . . . . . . . . 13

4.1.3.1

a . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

4.1.3.2

beta

4.1.3.3

computeDerivatives . . . . . . . . . . . . . . . . . . 14

4.1.3.4

cp

4.1.3.5

cv . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

4.1.3.6

d . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

4.1.3.7

d_der . . . . . . . . . . . . . . . . . . . . . . . . . . 15

. . . . . . . . . . . . . . . . . . . . . . . . . . 13

. . . . . . . . . . . . . . . . . . . . . . . . . . . 14

ii

CONTENTS

4.1.3.8

ddhp . . . . . . . . . . . . . . . . . . . . . . . . . . 15

4.1.3.9

ddldp . . . . . . . . . . . . . . . . . . . . . . . . . . 15

4.1.3.10 ddph . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.1.3.11 ddvdp

. . . . . . . . . . . . . . . . . . . . . . . . . 16

4.1.3.12 dhldp . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.1.3.13 dhvdp

. . . . . . . . . . . . . . . . . . . . . . . . . 17

4.1.3.14 dl . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.1.3.15 dTp . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.1.3.16 dv

. . . . . . . . . . . . . . . . . . . . . . . . . . . 18

4.1.3.17 eta . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.1.3.18 h . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.1.3.19 hl . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.1.3.20 hv

. . . . . . . . . . . . . . . . . . . . . . . . . . . 19

4.1.3.21 isentropicEnthalpy . . . . . . . . . . . . . . . . . . . 19
4.1.3.22 kappa

. . . . . . . . . . . . . . . . . . . . . . . . . 19

4.1.3.23 lambda . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.1.3.24 p . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.1.3.25 phase

. . . . . . . . . . . . . . . . . . . . . . . . . 20

4.1.3.26 Pr . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.1.3.27 psat

. . . . . . . . . . . . . . . . . . . . . . . . . . 21

4.1.3.28 s . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.1.3.29 setBubbleState . . . . . . . . . . . . . . . . . . . . . 21
4.1.3.30 setDewState . . . . . . . . . . . . . . . . . . . . . . 22
4.1.3.31 setFluidConstants . . . . . . . . . . . . . . . . . . . 22
4.1.3.32 setSat_p . . . . . . . . . . . . . . . . . . . . . . . . 23
4.1.3.33 setSat_T . . . . . . . . . . . . . . . . . . . . . . . . 23
4.1.3.34 setState_dT . . . . . . . . . . . . . . . . . . . . . . 23
4.1.3.35 setState_ph . . . . . . . . . . . . . . . . . . . . . . 24
4.1.3.36 setState_ps

. . . . . . . . . . . . . . . . . . . . . . 24

4.1.3.37 setState_pT . . . . . . . . . . . . . . . . . . . . . . 24
4.1.3.38 sigma . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.1.3.39 sl . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.1.3.40 sv . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.1.3.41 T . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

CONTENTS

iii

4.1.3.42 Tsat
4.2

ExternalSaturationProperties Struct Reference . . . . . . . . . . . . . . 26
4.2.1

4.3

4.6

4.7

. . . . . . . . . . . . . . . . . . . . . . . 27

Detailed Description

. . . . . . . . . . . . . . . . . . . . . . . 28

FluidConstants Struct Reference . . . . . . . . . . . . . . . . . . . . . 29
4.4.1

4.5

Detailed Description

ExternalThermodynamicState Struct Reference . . . . . . . . . . . . . 27
4.3.1

4.4

. . . . . . . . . . . . . . . . . . . . . . . . . . 26

Detailed Description

. . . . . . . . . . . . . . . . . . . . . . . 29

FluidPropSolver Class Reference . . . . . . . . . . . . . . . . . . . . . 29
4.5.1

Detailed Description

. . . . . . . . . . . . . . . . . . . . . . . 31

4.5.2

Member Function Documentation

. . . . . . . . . . . . . . . . 31

4.5.2.1

isentropicEnthalpy . . . . . . . . . . . . . . . . . . . 31

4.5.2.2

setBubbleState . . . . . . . . . . . . . . . . . . . . . 32

4.5.2.3

setDewState . . . . . . . . . . . . . . . . . . . . . . 32

4.5.2.4

setFluidConstants . . . . . . . . . . . . . . . . . . . 32

4.5.2.5

setSat_p . . . . . . . . . . . . . . . . . . . . . . . . 33

4.5.2.6

setSat_T . . . . . . . . . . . . . . . . . . . . . . . . 33

4.5.2.7

setState_dT . . . . . . . . . . . . . . . . . . . . . . 33

4.5.2.8

setState_ph . . . . . . . . . . . . . . . . . . . . . . 33

4.5.2.9

setState_ps

. . . . . . . . . . . . . . . . . . . . . . 34

SolverMap Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 34
4.6.1

Detailed Description

. . . . . . . . . . . . . . . . . . . . . . . 34

4.6.2

Member Function Documentation

. . . . . . . . . . . . . . . . 35

4.6.2.1

getSolver . . . . . . . . . . . . . . . . . . . . . . . . 35

4.6.2.2

solverKey . . . . . . . . . . . . . . . . . . . . . . . . 35

TestSolver Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 35
4.7.1

Detailed Description

. . . . . . . . . . . . . . . . . . . . . . . 36

4.7.2

Member Function Documentation

. . . . . . . . . . . . . . . . 37

4.7.2.1

setFluidConstants . . . . . . . . . . . . . . . . . . . 37

4.7.2.2

setSat_p . . . . . . . . . . . . . . . . . . . . . . . . 37

4.7.2.3

setSat_T . . . . . . . . . . . . . . . . . . . . . . . . 37

4.7.2.4

setState_dT . . . . . . . . . . . . . . . . . . . . . . 38

4.7.2.5

setState_ph . . . . . . . . . . . . . . . . . . . . . . 38

4.7.2.6

setState_ps

4.7.2.7

setState_pT . . . . . . . . . . . . . . . . . . . . . . 39

. . . . . . . . . . . . . . . . . . . . . . 39

Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

iv

CONTENTS

4.8

TFluidProp Class Reference

. . . . . . . . . . . . . . . . . . . . . . . 39

Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

Chapter 1

External Media HowTo
1.1

Introduction

The ExternalMedia project was started in 2006 by Francesco Casella and Christoph
Richter, with the aim of providing a framework for interfacing external codes computing fluid properties to Modelica.Media-compatible component models. The two main
requirements are: maximizing the efficiency of the code and minimizing the amount of
extra code required to use your own external code within the framework.
The first implementation featured a hidden cache in the C++ layer and used integer
unique IDs to reference that cache. This architecture worked well if the models did not
contain implicit algebraic equations involving medium properties, but had serious issues
when such equations were involved, which is often the case when solving steady-state
initialization problems.
The library has been restructured in 2012 by Francesco Casella and Roberto Bonifetto.
The main idea has been to get rid of the hidden cache and of the unique ID references
and use the Modelica state records for caching. In this way, all optimizations performed
by Modelica tools are guaranteed to give correct results, which was previously not the
case. The current version implements the Modelica.Media.Interfaces.PartialTwoPhaseMedium interface, so it can handle pure fluids, either one-phase or two-phase, and is
compatible with Modelica and Modelica Standard Library 3.2. Please note that the paths
of the medium packages have been changed from the previous versions, so you might
need some small changes if you want to upgrade your models from previous versions
of the ExternalMedia library.
There are two ways to use this library. The easiest way is to use the releases available
on the Modelica website, which include a pre-compiled interface to the FluidProp tool
(http://www.fluidprop.com). FluidProp features many built-in fluid models,
and can optionally be used to access the whole NIST RefProp database, thus giving
easy access to a wide range of fluid models with state-of-the-art accuracy. If you want
to use your own fluid property computation code instead, then you need to check out
the source code and add the interface to it, as described in this manual.
Please contact the main developer, Francesco Casella (casella@elet.polimi.it) if you have questions or suggestions for improvement.

2

External Media HowTo

Licensed by the Modelica Association under the Modelica License 2
Copyright (c) 2006-2012, Politecnico di Milano, TU Braunschweig, Politecnico di Torino.

1.2

Using the pre-packaged releases with FluidProp

Download and install the latest version of FluidProp from http://www.fluidprop.com. If you want to use the RefProp fluid models, you need to get
the full version of FluidProp, which has an extra license fee.
Download and unzip the library corresponding to the version of Microsoft Visual Studio
that you use to compile your Modelica models, in order to avoid linker errors. Make
sure that you load the ExternalMedia library in your Modelica tool workspace, e.g. by
opening the main package.mo file.
You can now define medium models for the different libraries supported by FluidProp,
by extending the ExternalMedia.Media.FluidPropMedium package. Please note that
only single-component fluids are supported. Set libraryName to "FluidProp.RefProp",
"FluidProp.StanMix", "FluidProp.TPSI", or "FluidProp.IF97", depending on the specific
library you need to use. Set substanceNames to a single-element string array containing the name of the specific medium, as specified by the FluidProp documentation.
Set mediumName to a string that describes the medium (this only used for documentation purposes but has no effect in selecting the medium model). See ExternalMedia.Examples for examples.
Please note that the medium model IF97 is already available natively in Modelica.Media
as Water.StandardWater, which is much faster than the FluidProp version. If you need
ideal gas models (single-component or mixtures), use the medium packages contained
in Modelica.Media.IdealGases.

1.3

Architecture of the package

This section gives an overview of the package structure, in order to help you understand
how to interface your own code to Modelica using it.
At the top level there is a Modelica package (ExternalMedia), which contains all the basic infrastructure needed to use external fluid properties computation software through
a Modelica.Media compliant interface. In particular, the ExternalMedia.Media.ExternalTwoPhaseMedium package is a full-fledged implementation of a two-phase medium
model, compliant with the Modelica.Media.Interfaces.PartialTwoPhaseMedium interface. The ExternalTwoPhaseMedium package can be used with any external fluid property computation software; the specific software to be used is specified by changing
the libraryName package constant, which is then handled by the underlying C code to
select the appropriate external code to use.
The Modelica functions within ExternalTwoPhaseMedium communicate to a C/C++ interface layer (called externalmedialib.cpp) via external C functions calls, which in turn
make use of C++ objects. This layer takes care of initializing the external fluid computation codes, called solvers from now on. Every solver is wrapped by a C++ class, inherGenerated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

1.4 Developing your own external medium package

3

iting from the BaseSolver C++ class. The C/C++ layer maintains a set of active solvers,
one for each different combination of the libraryName and mediumName strings, by
means of the SolverMap C++ class. The key to each solver in the map is given by
those strings. It is then possible to use multiple instances of many solvers in the same
Modelica model at the same time.
All the external C functions pass the libraryName, mediumName and substanceNames
strings to the corresponding functions of the interface layer. These in turn use the SolverMap object to look for an active solver in the solver map, corresponding to those
strings. If one is found, the corresponding function of the solver is called, otherwise a
new solver object is instantiated and added to the map, before calling the corresponding
function of the solver.
The default implementation of an external medium model is implemented by the ExternalTwoPhaseMedium Modelica package. The setState_xx() and setSat_x() function calls are rerouted to the corresponding functions of the solver object. These
compute all the required properties and return them in the ExternalThermodynamicState and ExternalSaturationProperties C structs, which map onto the corresponding
ThermodynamicState and SaturationProperties records defined in ExternalTwoPhaseMedium. All the functions returning properties as a function of the state records are implemented in Modelica and simply return the corresponding element in the state record,
which acts as a cache. This is an efficient implementation for many complex fluid models, where most of the CPU time is spent solving the basic equation of state, while
the computation of all derived properties adds a minor overhead, so it makes sense
to compute them once and for all when the setState_XX() or setSat_xx() functions are
called.
In case some of the thermodynamic properties require a significant amount of CPU
time on their own, it is possible to override this default implementation. On one hand,
it is necessary to extend the ExternalTwoPhaseMedium Modelica package and redeclare those functions, so that they call the corresponding external C functions defined
in externalmedium.cpp, instead of returning the value cached in the state record. On
the other hand, it is also necessary to provide an implementation of the corresponding
functions in the C++ solver object, by overriding the virtual functions of the BaseSolver
object. In this case, the setState_xx() and setSat_X() functions need not compute all
the values of the cache state records; uncomputed properties might be set to zero. This is not a problem, since Modelica.Media compatible models should never access
the elements of the state records directly, but only through the appropriate functions, so
these values should never be actually used by component models using the medium
package.

1.4

Developing your own external medium package

The ExternalMedia package has been designed to ease your task, so that you will only
have to write the mimum amount of code which is strictly specific to your external code
- everything else is already provided. The following instructions apply if you want to
develop an external medium model which include a (sub)set of the functions defined in
Modelica.Media.Interfaces.PartialTwoPhaseMedium.
The most straightforward implementation is the one in which all fluid properties are comGenerated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

4

External Media HowTo

puted at once by the setState_XX() and setSat_X() functions and all the other functions
return the values cached in the state records.
Get the source code from the SVN repository of the Modelica Association: https://svn.modelica.org/projects/ExternalMediaLibrary/trunk.
First of all, you have to write you own solver object code: you can look at the code of
the TestMedium and FluidPropMedium code as examples. Inherit from the BaseSolver
object, which provides default implementations for most of the required functions, and
then just add your own implementation for the following functions: object constructor,
object destructor, setMediumConstants(), setSat_p(), setSat_T(), setState_ph(), setState_pT(), setState_ps(), setState_dT(). Note that the setState and setSat functions
need to compute and fill in all the fields of the corresponding C structs for the library to
work correctly. On the other hand, you don’t necessarily need to implement all of the
four setState functions: if you know in advance that your models will only use certain
combinations of variables as inputs (e.g. p, h), then you might omit implementing the
setState and setSat functions corresponding to the other ones.
Then you must modify the SolverMap::addSolver() function, so that it will instantiate
your new solver when it is called with the appropriate libraryName string. You are free
to invent you own syntax for the libraryName string, in case you’d like to be able to set
up the external medium with some additional configuration data from within Modelica
- it is up to you to decode that syntax within the addSolver() function, and within the
constructor of your solver object. Look at how the FluidProp solver is implemented for
an example.
Finally, add the .cpp and .h files of the solver object to the C/C++ project, set the
include.h file according to your needs and recompile it to a static library (or to a DLL). The compiled libraries and the externalmedialib.h files must then be copied into the
Include subdirectory of the Modelica package so that the Modelica tool can link them
when compiling the models.
As already mentioned in the previous section, you might provide customized implementations where some of the properties are not computed by the setState and setSat
functions and stored in the cache records, but rather computed on demand, based on a
smaller set of thermodynamic properties computed by the setState and setSat functions
and stored in the state C struct.
Please note that compiling ExternalMedia from source code might require the professional version of Microsoft Visual Studio, which includes the COM libraries used by the
FluidProp interface. However, if you remove all the FluidProp files and references from
the project, then you should be able to compile the source code with the Express edition,
or possibly also with gcc.

Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

Chapter 2

Class Index
2.1

Class Hierarchy

This inheritance list is sorted roughly, but not completely, alphabetically:
BaseSolver

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9

FluidPropSolver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
TestSolver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
ExternalSaturationProperties
ExternalThermodynamicState
FluidConstants . . . . . . .
SolverMap . . . . . . . . . .
TFluidProp . . . . . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

26
27
29
34
39

6

Class Index

Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

Chapter 3

Class Index
3.1

Class List

Here are the classes, structs, unions and interfaces with brief descriptions:
BaseSolver
Base solver class . . . . . . . . . . . . . . .
ExternalSaturationProperties
ExternalSaturationProperties property struct .
ExternalThermodynamicState
ExternalThermodynamicState property struct
FluidConstants
Fluid constants struct . . . . . . . . . . . . .
FluidPropSolver
FluidProp solver interface class . . . . . . .
SolverMap
Solver map . . . . . . . . . . . . . . . . . .
TestSolver
Test solver class . . . . . . . . . . . . . . .
TFluidProp . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . .

9

. . . . . . . . . . . . 26
. . . . . . . . . . . . 27
. . . . . . . . . . . . 29
. . . . . . . . . . . . 29
. . . . . . . . . . . . 34
. . . . . . . . . . . . 35
. . . . . . . . . . . . 39

8

Class Index

Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

Chapter 4

Class Documentation
4.1

BaseSolver Class Reference

Base solver class.

#include 
Inheritance diagram for BaseSolver:

BaseSolver
FluidPropSolver

TestSolver

Public Member Functions
• BaseSolver (const string &mediumName, const string &libraryName, const string
&substanceName)
Constructor.

• virtual ∼BaseSolver ()
Destructor.

• double molarMass () const
Return molar mass (Default implementation provided)

• double criticalTemperature () const
Return temperature at critical point (Default implementation provided)

• double criticalPressure () const
Return pressure at critical point (Default implementation provided)

• double criticalMolarVolume () const
Return molar volume at critical point (Default implementation provided)

• double criticalDensity () const

10

Class Documentation

Return density at critical point (Default implementation provided)

• double criticalEnthalpy () const
Return specific enthalpy at critical point (Default implementation provided)

• double criticalEntropy () const
Return specific entropy at critical point (Default implementation provided)

• virtual void setFluidConstants ()
Set fluid constants.

• virtual void setState_ph (double &p, double &h, int &phase, ExternalThermodynamicState ∗const properties)
Set state from p, h, and phase.

• virtual void setState_pT (double &p, double &T, ExternalThermodynamicState
∗const properties)
Set state from p and T.

• virtual void setState_dT (double &d, double &T, int &phase, ExternalThermodynamicState ∗const properties)
Set state from d, T, and phase.

• virtual void setState_ps (double &p, double &s, int &phase, ExternalThermodynamicState ∗const properties)
Set state from p, s, and phase.

• virtual double Pr (ExternalThermodynamicState ∗const properties)
Compute Prandtl number.

• virtual double T (ExternalThermodynamicState ∗const properties)
Compute temperature.

• virtual double a (ExternalThermodynamicState ∗const properties)
Compute velocity of sound.

• virtual double beta (ExternalThermodynamicState ∗const properties)
Compute isobaric expansion coefficient.

• virtual double cp (ExternalThermodynamicState ∗const properties)
Compute specific heat capacity cp.

• virtual double cv (ExternalThermodynamicState ∗const properties)
Compute specific heat capacity cv.

• virtual double d (ExternalThermodynamicState ∗const properties)
Compute density.

• virtual double ddhp (ExternalThermodynamicState ∗const properties)
Compute derivative of density wrt enthalpy at constant pressure.

• virtual double ddph (ExternalThermodynamicState ∗const properties)
Compute derivative of density wrt pressure at constant enthalpy.

• virtual double eta (ExternalThermodynamicState ∗const properties)
Compute dynamic viscosity.

• virtual double h (ExternalThermodynamicState ∗const properties)
Compute specific enthalpy.

• virtual double kappa (ExternalThermodynamicState ∗const properties)
Compute compressibility.

• virtual double lambda (ExternalThermodynamicState ∗const properties)
Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

4.1 BaseSolver Class Reference

11

Compute thermal conductivity.

• virtual double p (ExternalThermodynamicState ∗const properties)
Compute pressure.

• virtual int phase (ExternalThermodynamicState ∗const properties)
Compute phase flag.

• virtual double s (ExternalThermodynamicState ∗const properties)
Compute specific entropy.

• virtual double d_der (ExternalThermodynamicState ∗const properties)
Compute total derivative of density ph.

• virtual double isentropicEnthalpy (double &p, ExternalThermodynamicState
∗const properties)
Compute isentropic enthalpy.

• virtual void setSat_p (double &p, ExternalSaturationProperties ∗const properties)
Set saturation properties from p.

• virtual void setSat_T (double &T, ExternalSaturationProperties ∗const properties)
Set saturation properties from T.

• virtual void setBubbleState (ExternalSaturationProperties ∗const properties, int
phase, ExternalThermodynamicState ∗const bubbleProperties)
Set bubble state.

• virtual void setDewState (ExternalSaturationProperties ∗const properties, int
phase, ExternalThermodynamicState ∗const bubbleProperties)
Set dew state.

• virtual double dTp (ExternalSaturationProperties ∗const properties)
Compute derivative of Ts wrt pressure.

• virtual double ddldp (ExternalSaturationProperties ∗const properties)
Compute derivative of dls wrt pressure.

• virtual double ddvdp (ExternalSaturationProperties ∗const properties)
Compute derivative of dvs wrt pressure.

• virtual double dhldp (ExternalSaturationProperties ∗const properties)
Compute derivative of hls wrt pressure.

• virtual double dhvdp (ExternalSaturationProperties ∗const properties)
Compute derivative of hvs wrt pressure.

• virtual double dl (ExternalSaturationProperties ∗const properties)
Compute density at bubble line.

• virtual double dv (ExternalSaturationProperties ∗const properties)
Compute density at dew line.

• virtual double hl (ExternalSaturationProperties ∗const properties)
Compute enthalpy at bubble line.

• virtual double hv (ExternalSaturationProperties ∗const properties)
Compute enthalpy at dew line.

• virtual double sigma (ExternalSaturationProperties ∗const properties)
Compute surface tension.

Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

12

Class Documentation
• virtual double sl (ExternalSaturationProperties ∗const properties)
Compute entropy at bubble line.

• virtual double sv (ExternalSaturationProperties ∗const properties)
Compute entropy at dew line.

• virtual bool computeDerivatives (ExternalThermodynamicState ∗const properties)
Compute derivatives.

• virtual double psat (ExternalSaturationProperties ∗const properties)
Compute saturation pressure.

• virtual double Tsat (ExternalSaturationProperties ∗const properties)
Compute saturation temperature.

Public Attributes
• string mediumName
Medium name.

• string libraryName
Library name.

• string substanceName
Substance name.

Protected Attributes
• FluidConstants _fluidConstants
Fluid constants.

4.1.1

Detailed Description

Base solver class.
This is the base class for all external solver objects (e.g. TestSolver, FluidPropSolver). A
solver object encapsulates the interface to external fluid property computation routines
Francesco Casella, Christoph Richter, Roberto Bonifetto 2006-2012 Copyright Politecnico di Milano, TU Braunschweig, Politecnico di Torino

4.1.2

Constructor & Destructor Documentation

4.1.2.1 BaseSolver::BaseSolver ( const string & mediumName, const string &
libraryName, const string & substanceName )
Constructor.
The constructor is copying the medium name, library name and substance name to the
locally defined variables.
Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

4.1 BaseSolver Class Reference

13

Parameters
medium- Arbitrary medium name
Name
libraryName Name of the external fluid property library
substance- Substance name
Name

4.1.2.2

BaseSolver::∼BaseSolver ( ) [virtual]

Destructor.
The destructor for the base solver if currently not doing anything.

4.1.3

Member Function Documentation

4.1.3.1

double BaseSolver::a ( ExternalThermodynamicState ∗const properties )

[virtual]
Compute velocity of sound.
This function returns the velocity of sound from the state specified by the properties
input
Must be re-implemented in the specific solver
Parameters
properties ExternalThermodynamicState property struct corresponding to current
state

4.1.3.2

double BaseSolver::beta ( ExternalThermodynamicState ∗const properties )

[virtual]
Compute isobaric expansion coefficient.
This function returns the isobaric expansion coefficient from the state specified by the
properties input
Must be re-implemented in the specific solver
Parameters
properties ExternalThermodynamicState property struct corresponding to current
state

Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

14

Class Documentation

4.1.3.3

bool BaseSolver::computeDerivatives ( ExternalThermodynamicState

∗const properties ) [virtual]
Compute derivatives.
This function computes the derivatives according to the Bridgman’s table. The computed values are written to the two phase medium property struct. This function can be
called from within the setState_XX routines when implementing a new solver. Please
be aware that cp, beta and kappa have to be provided to allow the computation of the
derivatives. It returns false if the computation failed.
Default implementation provided.
Parameters
properties ExternalThermodynamicState property record

4.1.3.4

double BaseSolver::cp ( ExternalThermodynamicState ∗const properties )

[virtual]
Compute specific heat capacity cp.
This function returns the specific heat capacity cp from the state specified by the properties input
Must be re-implemented in the specific solver
Parameters
properties ExternalThermodynamicState property struct corresponding to current
state

4.1.3.5

double BaseSolver::cv ( ExternalThermodynamicState ∗const properties )

[virtual]
Compute specific heat capacity cv.
This function returns the specific heat capacity cv from the state specified by the properties input
Must be re-implemented in the specific solver
Parameters
properties ExternalThermodynamicState property struct corresponding to current
state

Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

4.1 BaseSolver Class Reference

4.1.3.6

15

double BaseSolver::d ( ExternalThermodynamicState ∗const properties )

[virtual]
Compute density.
This function returns the density from the state specified by the properties input
Must be re-implemented in the specific solver
Parameters
properties ExternalThermodynamicState property struct corresponding to current
state

4.1.3.7

double BaseSolver::d_der ( ExternalThermodynamicState ∗const properties )

[virtual]
Compute total derivative of density ph.
This function returns the total derivative of density ph from the state specified by the
properties input
Must be re-implemented in the specific solver
Parameters
properties ExternalThermodynamicState property struct corresponding to current
state

4.1.3.8

double BaseSolver::ddhp ( ExternalThermodynamicState ∗const properties )

[virtual]
Compute derivative of density wrt enthalpy at constant pressure.
This function returns the derivative of density wrt enthalpy at constant pressure from the
state specified by the properties input
Must be re-implemented in the specific solver
Parameters
properties ExternalThermodynamicState property struct corresponding to current
state

4.1.3.9

double BaseSolver::ddldp ( ExternalSaturationProperties ∗const properties )

[virtual]
Compute derivative of dls wrt pressure.
This function returns the derivative of dls wrt pressure from the state specified by the
Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

16

Class Documentation

properties input
Must be re-implemented in the specific solver
Parameters
properties ExternalSaturationProperties property struct corresponding to current
state

4.1.3.10

double BaseSolver::ddph ( ExternalThermodynamicState ∗const properties
) [virtual]

Compute derivative of density wrt pressure at constant enthalpy.
This function returns the derivative of density wrt pressure at constant enthalpy from the
state specified by the properties input
Must be re-implemented in the specific solver
Parameters
properties ExternalThermodynamicState property struct corresponding to current
state

4.1.3.11

double BaseSolver::ddvdp ( ExternalSaturationProperties ∗const properties
) [virtual]

Compute derivative of dvs wrt pressure.
This function returns the derivative of dvs wrt pressure from the state specified by the
properties input
Must be re-implemented in the specific solver
Parameters
properties ExternalSaturationProperties property struct corresponding to current
state

4.1.3.12

double BaseSolver::dhldp ( ExternalSaturationProperties ∗const properties
) [virtual]

Compute derivative of hls wrt pressure.
This function returns the derivative of hls wrt pressure from the state specified by the
properties input
Must be re-implemented in the specific solver

Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

4.1 BaseSolver Class Reference

17

Parameters
properties ExternalSaturationProperties property struct corresponding to current
state

4.1.3.13

double BaseSolver::dhvdp ( ExternalSaturationProperties ∗const properties
) [virtual]

Compute derivative of hvs wrt pressure.
This function returns the derivative of hvs wrt pressure from the state specified by the
properties input
Must be re-implemented in the specific solver
Parameters
properties ExternalSaturationProperties property struct corresponding to current
state

4.1.3.14

double BaseSolver::dl ( ExternalSaturationProperties ∗const properties )

[virtual]
Compute density at bubble line.
This function returns the density at bubble line from the state specified by the properties
input
Must be re-implemented in the specific solver
Parameters
properties ExternalSaturationProperties property struct corresponding to current
state

4.1.3.15

double BaseSolver::dTp ( ExternalSaturationProperties ∗const properties )

[virtual]
Compute derivative of Ts wrt pressure.
This function returns the derivative of Ts wrt pressure from the state specified by the
properties input
Must be re-implemented in the specific solver
Parameters
properties ExternalSaturationProperties property struct corresponding to current
state

Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

18

Class Documentation

4.1.3.16

double BaseSolver::dv ( ExternalSaturationProperties ∗const properties )

[virtual]
Compute density at dew line.
This function returns the density at dew line from the state specified by the properties
input
Must be re-implemented in the specific solver
Parameters
properties ExternalSaturationProperties property struct corresponding to current
state

4.1.3.17

double BaseSolver::eta ( ExternalThermodynamicState ∗const properties )

[virtual]
Compute dynamic viscosity.
This function returns the dynamic viscosity from the state specified by the properties
input
Must be re-implemented in the specific solver
Parameters
properties ExternalThermodynamicState property struct corresponding to current
state

4.1.3.18

double BaseSolver::h ( ExternalThermodynamicState ∗const properties )

[virtual]
Compute specific enthalpy.
This function returns the specific enthalpy from the state specified by the properties
input
Must be re-implemented in the specific solver
Parameters
properties ExternalThermodynamicState property struct corresponding to current
state

4.1.3.19

double BaseSolver::hl ( ExternalSaturationProperties ∗const properties )

[virtual]
Compute enthalpy at bubble line.
Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

4.1 BaseSolver Class Reference

19

This function returns the enthalpy at bubble line from the state specified by the properties input
Must be re-implemented in the specific solver
Parameters
properties ExternalSaturationProperties property struct corresponding to current
state

4.1.3.20

double BaseSolver::hv ( ExternalSaturationProperties ∗const properties )

[virtual]
Compute enthalpy at dew line.
This function returns the enthalpy at dew line from the state specified by the properties
input
Must be re-implemented in the specific solver
Parameters
properties ExternalSaturationProperties property struct corresponding to current
state

4.1.3.21

double BaseSolver::isentropicEnthalpy ( double & p,
ExternalThermodynamicState ∗const properties ) [virtual]

Compute isentropic enthalpy.
This function returns the enthalpy at pressure p after an isentropic transformation from
the state specified by the properties input
Must be re-implemented in the specific solver
Parameters
p New pressure
properties ExternalThermodynamicState property struct corresponding to current
state
Reimplemented in FluidPropSolver.

4.1.3.22

double BaseSolver::kappa ( ExternalThermodynamicState ∗const properties
) [virtual]

Compute compressibility.
This function returns the compressibility from the state specified by the properties input
Must be re-implemented in the specific solver
Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

20

Class Documentation

Parameters
properties ExternalThermodynamicState property struct corresponding to current
state

4.1.3.23

double BaseSolver::lambda ( ExternalThermodynamicState ∗const
properties ) [virtual]

Compute thermal conductivity.
This function returns the thermal conductivity from the state specified by the properties
input
Must be re-implemented in the specific solver
Parameters
properties ExternalThermodynamicState property struct corresponding to current
state

4.1.3.24

double BaseSolver::p ( ExternalThermodynamicState ∗const properties )

[virtual]
Compute pressure.
This function returns the pressure from the state specified by the properties input
Must be re-implemented in the specific solver
Parameters
properties ExternalThermodynamicState property struct corresponding to current
state

4.1.3.25

int BaseSolver::phase ( ExternalThermodynamicState ∗const properties )

[virtual]
Compute phase flag.
This function returns the phase flag from the state specified by the properties input
Must be re-implemented in the specific solver
Parameters
properties ExternalThermodynamicState property struct corresponding to current
state

Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

4.1 BaseSolver Class Reference

4.1.3.26

21

double BaseSolver::Pr ( ExternalThermodynamicState ∗const properties )

[virtual]
Compute Prandtl number.
This function returns the Prandtl number from the state specified by the properties input
Must be re-implemented in the specific solver
Parameters
properties ExternalThermodynamicState property struct corresponding to current
state

4.1.3.27

double BaseSolver::psat ( ExternalSaturationProperties ∗const properties )

[virtual]
Compute saturation pressure.
This function returns the saturation pressure from the state specified by the properties
input
Must be re-implemented in the specific solver
Parameters
properties ExternalSaturationProperties property struct corresponding to current
state

4.1.3.28

double BaseSolver::s ( ExternalThermodynamicState ∗const properties )

[virtual]
Compute specific entropy.
This function returns the specific entropy from the state specified by the properties input
Must be re-implemented in the specific solver
Parameters
properties ExternalThermodynamicState property struct corresponding to current
state

4.1.3.29

void BaseSolver::setBubbleState ( ExternalSaturationProperties ∗const
properties, int phase, ExternalThermodynamicState ∗const bubbleProperties )

[virtual]
Set bubble state.
This function sets the bubble state record bubbleProperties corresponding to the satuGenerated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

22

Class Documentation

ration data contained in the properties record.
The default implementation of the setBubbleState function is relying on the correct behaviour of setState_ph with respect to the state input. Can be overridden in the specific
solver code to get more efficient or correct handling of this situation.
Parameters
properties
phase
bubbleProperties

ExternalSaturationProperties record with saturation properties data
Phase (1: one-phase, 2: two-phase)
ExternalThermodynamicState record where to write the bubble point
properties

Reimplemented in FluidPropSolver.

4.1.3.30

void BaseSolver::setDewState ( ExternalSaturationProperties ∗const
properties, int phase, ExternalThermodynamicState ∗const dewProperties )

[virtual]
Set dew state.
This function sets the dew state record dewProperties corresponding to the saturation
data contained in the properties record.
The default implementation of the setDewState function is relying on the correct behaviour of setState_ph with respect to the state input. Can be overridden in the specific
solver code to get more efficient or correct handling of this situation.
Parameters
properties
phase
dewProperties

ExternalSaturationProperties record with saturation properties data
Phase (1: one-phase, 2: two-phase)
ExternalThermodynamicState record where to write the dew point properties

Reimplemented in FluidPropSolver.

4.1.3.31

void BaseSolver::setFluidConstants ( ) [virtual]

Set fluid constants.
This function sets the fluid constants which are defined in the FluidConstants record in
Modelica. It should be called when a new solver is created.
Must be re-implemented in the specific solver
Reimplemented in FluidPropSolver, and TestSolver.

Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

4.1 BaseSolver Class Reference

4.1.3.32

23

void BaseSolver::setSat_p ( double & p, ExternalSaturationProperties

∗const properties ) [virtual]
Set saturation properties from p.
This function sets the saturation properties for the given pressure p. The computed
values are written to the ExternalSaturationProperties propery struct.
Must be re-implemented in the specific solver
Parameters
p Pressure
properties ExternalSaturationProperties property struct

Reimplemented in FluidPropSolver, and TestSolver.

4.1.3.33

void BaseSolver::setSat_T ( double & T, ExternalSaturationProperties

∗const properties ) [virtual]
Set saturation properties from T.
This function sets the saturation properties for the given temperature T. The computed
values are written to the ExternalSaturationProperties propery struct.
Must be re-implemented in the specific solver
Parameters
T Temperature
properties ExternalSaturationProperties property struct

Reimplemented in FluidPropSolver, and TestSolver.

4.1.3.34

void BaseSolver::setState_dT ( double & d, double & T, int & phase,
ExternalThermodynamicState ∗const properties ) [virtual]

Set state from d, T, and phase.
This function sets the thermodynamic state record for the given density d, the temperature T and the specified phase. The computed values are written to the ExternalThermodynamicState property struct.
Must be re-implemented in the specific solver
Parameters
d
T
phase
properties

Density
Temperature
Phase (2 for two-phase, 1 for one-phase, 0 if not known)
ExternalThermodynamicState property struct

Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

24

Class Documentation

Reimplemented in FluidPropSolver, and TestSolver.

4.1.3.35

void BaseSolver::setState_ph ( double & p, double & h, int & phase,
ExternalThermodynamicState ∗const properties ) [virtual]

Set state from p, h, and phase.
This function sets the thermodynamic state record for the given pressure p, the specific
enthalpy h and the specified phase. The computed values are written to the ExternalThermodynamicState property struct.
Must be re-implemented in the specific solver
Parameters
p
h
phase
properties

Pressure
Specific enthalpy
Phase (2 for two-phase, 1 for one-phase, 0 if not known)
ExternalThermodynamicState property struct

Reimplemented in FluidPropSolver, and TestSolver.

4.1.3.36

void BaseSolver::setState_ps ( double & p, double & s, int & phase,
ExternalThermodynamicState ∗const properties ) [virtual]

Set state from p, s, and phase.
This function sets the thermodynamic state record for the given pressure p, the specific
entropy s and the specified phase. The computed values are written to the ExternalThermodynamicState property struct.
Must be re-implemented in the specific solver
Parameters
p
s
phase
properties

Pressure
Specific entropy
Phase (2 for two-phase, 1 for one-phase, 0 if not known)
ExternalThermodynamicState property struct

Reimplemented in FluidPropSolver, and TestSolver.

4.1.3.37

void BaseSolver::setState_pT ( double & p, double & T,
ExternalThermodynamicState ∗const properties ) [virtual]

Set state from p and T.
This function sets the thermodynamic state record for the given pressure p and the
temperature T. The computed values are written to the ExternalThermodynamicState
property struct.
Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

4.1 BaseSolver Class Reference

25

Must be re-implemented in the specific solver
Parameters
p Pressure
T Temperature
properties ExternalThermodynamicState property struct

Reimplemented in FluidPropSolver, and TestSolver.

4.1.3.38

double BaseSolver::sigma ( ExternalSaturationProperties ∗const properties
) [virtual]

Compute surface tension.
This function returns the surface tension from the state specified by the properties input
Must be re-implemented in the specific solver
Parameters
properties ExternalSaturationProperties property struct corresponding to current
state

4.1.3.39

double BaseSolver::sl ( ExternalSaturationProperties ∗const properties )

[virtual]
Compute entropy at bubble line.
This function returns the entropy at bubble line from the state specified by the properties
input
Must be re-implemented in the specific solver
Parameters
properties ExternalSaturationProperties property struct corresponding to current
state

4.1.3.40

double BaseSolver::sv ( ExternalSaturationProperties ∗const properties )

[virtual]
Compute entropy at dew line.
This function returns the entropy at dew line from the state specified by the properties
input
Must be re-implemented in the specific solver

Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

26

Class Documentation

Parameters
properties ExternalSaturationProperties property struct corresponding to current
state

4.1.3.41

double BaseSolver::T ( ExternalThermodynamicState ∗const properties )

[virtual]
Compute temperature.
This function returns the temperature from the state specified by the properties input
Must be re-implemented in the specific solver
Parameters
properties ExternalThermodynamicState property struct corresponding to current
state

4.1.3.42

double BaseSolver::Tsat ( ExternalSaturationProperties ∗const properties )

[virtual]
Compute saturation temperature.
This function returns the saturation temperature from the state specified by the properties input
Must be re-implemented in the specific solver
Parameters
properties ExternalSaturationProperties property struct corresponding to current
state

The documentation for this class was generated from the following files:
• D:/Lavoro/ModelicaSVN/ExternalMediaLibrary/Projects/Sources/basesolver.h
• D:/Lavoro/ModelicaSVN/ExternalMediaLibrary/Projects/Sources/basesolver.cpp

4.2

ExternalSaturationProperties Struct Reference

ExternalSaturationProperties property struct.

#include 

Public Attributes
• double Tsat
Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

4.3 ExternalThermodynamicState Struct Reference

27

Saturation temperature.

• double dTp
Derivative of Ts wrt pressure.

• double ddldp
Derivative of dls wrt pressure.

• double ddvdp
Derivative of dvs wrt pressure.

• double dhldp
Derivative of hls wrt pressure.

• double dhvdp
Derivative of hvs wrt pressure.

• double dl
Density at bubble line (for pressure ps)

• double dv
Density at dew line (for pressure ps)

• double hl
Specific enthalpy at bubble line (for pressure ps)

• double hv
Specific enthalpy at dew line (for pressure ps)

• double psat
Saturation pressure.

• double sigma
Surface tension.

• double sl
Specific entropy at bubble line (for pressure ps)

• double sv
Specific entropy at dew line (for pressure ps)

4.2.1

Detailed Description

ExternalSaturationProperties property struct.
The ExternalSaturationProperties propery struct defines all the saturation properties for
the dew and the bubble line that are computed by external Modelica medium models
extending from PartialExternalTwoPhaseMedium.
The documentation for this struct was generated from the following file:
• D:/Lavoro/ModelicaSVN/ExternalMediaLibrary/Projects/Sources/externalmedialib.h

4.3

ExternalThermodynamicState Struct Reference

ExternalThermodynamicState property struct.

#include 
Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

28

Class Documentation

Public Attributes
• double Pr
Prandtl number.

• double T
Temperature.

• double a
Velocity of sound.

• double beta
Isobaric expansion coefficient.

• double cp
Specific heat capacity cp.

• double cv
Specific heat capacity cv.

• double d
Density.

• double ddhp
Derivative of density wrt enthalpy at constant pressure.

• double ddph
Derivative of density wrt pressure at constant enthalpy.

• double eta
Dynamic viscosity.

• double h
Specific enthalpy.

• double kappa
Compressibility.

• double lambda
Thermal conductivity.

• double p
Pressure.

• int phase
Phase flag: 2 for two-phase, 1 for one-phase.

• double s
Specific entropy.

4.3.1

Detailed Description

ExternalThermodynamicState property struct.
The ExternalThermodynamicState propery struct defines all the properties that are
computed by external Modelica medium models extending from PartialExternalTwoPhaseMedium.
The documentation for this struct was generated from the following file:
• D:/Lavoro/ModelicaSVN/ExternalMediaLibrary/Projects/Sources/externalmedialib.h
Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

4.4 FluidConstants Struct Reference

4.4

29

FluidConstants Struct Reference

Fluid constants struct.

#include 

Public Attributes
• double MM
Molar mass.

• double pc
Pressure at critical point.

• double Tc
Temperature at critical point.

• double dc
Density at critical point.

• double hc
Specific enthalpy at critical point.

• double sc
Specific entropy at critical point.

4.4.1

Detailed Description

Fluid constants struct.
The fluid constants struct contains all the constant fluid properties that are returned by
the external solver.
Francesco Casella, Christoph Richter, Roberto Bonifetto 2006-2012 Copyright Politecnico di Milano, TU Braunschweig, Politecnico di Torino
The documentation for this struct was generated from the following file:
• D:/Lavoro/ModelicaSVN/ExternalMediaLibrary/Projects/Sources/fluidconstants.h

4.5

FluidPropSolver Class Reference

FluidProp solver interface class.

#include 
Inheritance diagram for FluidPropSolver:

BaseSolver
FluidPropSolver

Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

30

Class Documentation

Public Member Functions
• FluidPropSolver (const string &mediumName, const string &libraryName, const
string &substanceName)
• virtual void setFluidConstants ()
Set fluid constants.

• virtual void setSat_p (double &p, ExternalSaturationProperties ∗const properties)
Set saturation properties from p.

• virtual void setSat_T (double &T, ExternalSaturationProperties ∗const properties)
Set saturation properties from T.

• virtual void setState_ph (double &p, double &h, int &phase, ExternalThermodynamicState ∗const properties)
Computes the properties of the state vector from p and h.

• virtual void setState_pT (double &p, double &T, ExternalThermodynamicState
∗const properties)
Computes the properties of the state vector from p and T.

• virtual void setState_dT (double &d, double &T, int &phase, ExternalThermodynamicState ∗const properties)
• virtual void setState_ps (double &p, double &s, int &phase, ExternalThermodynamicState ∗const properties)
Computes the properties of the state vector from p and s.

• virtual void setBubbleState (ExternalSaturationProperties ∗const properties, int
phase, ExternalThermodynamicState ∗const bubbleProperties)
Set bubble state.

• virtual void setDewState (ExternalSaturationProperties ∗const properties, int
phase, ExternalThermodynamicState ∗const dewProperties)
Set dew state.

• virtual double isentropicEnthalpy (double &p, ExternalThermodynamicState
∗const properties)
Compute isentropic enthalpy.

Protected Member Functions
• bool isError (string ErrorMsg)
Check if FluidProp returned an error.

Protected Attributes
• TFluidProp FluidProp
Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

4.5 FluidPropSolver Class Reference

4.5.1

31

Detailed Description

FluidProp solver interface class.
This class defines a solver object encapsulating a FluidProp object
The class will work if FluidProp is correctly installed, and if the following files, defining
the CFluidProp object, are included in the C project:
• FluidProp_IF.h
• FluidProp_IF.cpp
• FluidProp_COM.h These files are developed and maintained by TU Delft and
distributed as a part of the FluidProp suite http://www.fluidprop.com
Compilation requires support of the COM libraries: http://en.wikipedia.-

org/wiki/Component_Object_Model
To instantiate a specific FluidProp fluid, it is necessary to set the libraryName and
substanceNames package constants as in the following example:
libraryName = "FluidProp.RefProp"; substanceNames = {"H2O"};
Instead of RefProp, it is possible to indicate TPSI, StanMix, etc. Instead of H2O, it is
possible to indicate any supported substance
See also the solvermap.cpp code
Francesco Casella, Christoph Richter, Roberto Bonifetto 2006 - 2012 Copyright Politecnico di Milano, TU Braunschweig, Politecnico di Torino

4.5.2

Member Function Documentation

4.5.2.1

double FluidPropSolver::isentropicEnthalpy ( double & p,
ExternalThermodynamicState ∗const properties ) [virtual]

Compute isentropic enthalpy.
This function returns the enthalpy at pressure p after an isentropic transformation from
the state specified by the properties input
Parameters
p New pressure
properties ExternalThermodynamicState property record corresponding to current
state

Reimplemented from BaseSolver.

Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

32

Class Documentation

4.5.2.2

void FluidPropSolver::setBubbleState ( ExternalSaturationProperties

∗const properties, int phase, ExternalThermodynamicState ∗const
bubbleProperties ) [virtual]
Set bubble state.
This function sets the bubble state record bubbleProperties corresponding to the saturation data contained in the properties record.
Due to current lack of direct control over the phase in FluidProp, a small delta is added
to the dewpoint enthalpy to make sure the correct phase is selected.
Parameters
properties
phase
bubbleProperties

ExternalSaturationProperties record with saturation properties data
Phase (1: one-phase, 2: two-phase)
ExternalThermodynamicState record where to write the bubble point
properties

Reimplemented from BaseSolver.

4.5.2.3

void FluidPropSolver::setDewState ( ExternalSaturationProperties ∗const
properties, int phase, ExternalThermodynamicState ∗const dewProperties )

[virtual]
Set dew state.
This function sets the dew state record dewProperties corresponding to the saturation
data contained in the properties record.
The default implementation of the setDewState function is relying on the correct behaviour of setState_ph with respect to the state input. Can be overridden in the specific
solver code to get more efficient or correct handling of this situation.
Parameters
properties
phase
dewProperties

ExternalSaturationProperties record with saturation properties data
Phase (1: one-phase, 2: two-phase)
ExternalThermodynamicState record where to write the dew point properties

Reimplemented from BaseSolver.

4.5.2.4

void FluidPropSolver::setFluidConstants ( ) [virtual]

Set fluid constants.
This function sets the fluid constants which are defined in the FluidConstants record in
Modelica. It should be called when a new solver is created.
Must be re-implemented in the specific solver
Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

4.5 FluidPropSolver Class Reference

33

Reimplemented from BaseSolver.

4.5.2.5

void FluidPropSolver::setSat_p ( double & p, ExternalSaturationProperties
∗const properties ) [virtual]

Set saturation properties from p.
This function sets the saturation properties for the given pressure p. The computed
values are written to the ExternalSaturationProperties propery struct.
Must be re-implemented in the specific solver
Parameters
p Pressure
properties ExternalSaturationProperties property struct

Reimplemented from BaseSolver.

4.5.2.6

void FluidPropSolver::setSat_T ( double & T, ExternalSaturationProperties
∗const properties ) [virtual]

Set saturation properties from T.
This function sets the saturation properties for the given temperature T. The computed
values are written to the ExternalSaturationProperties propery struct.
Must be re-implemented in the specific solver
Parameters
T Temperature
properties ExternalSaturationProperties property struct

Reimplemented from BaseSolver.

4.5.2.7

void FluidPropSolver::setState_dT ( double & d, double & T, int & phase,
ExternalThermodynamicState ∗const properties ) [virtual]

Note: the phase input is currently not supported according to the standard, the phase
input is returned in the state record
Reimplemented from BaseSolver.

4.5.2.8

void FluidPropSolver::setState_ph ( double & p, double & h, int & phase,
ExternalThermodynamicState ∗const properties ) [virtual]

Computes the properties of the state vector from p and h.
Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

34

Class Documentation

Note: the phase input is currently not supported according to the standard, the phase
input is returned in the state record
Reimplemented from BaseSolver.

4.5.2.9

void FluidPropSolver::setState_ps ( double & p, double & s, int & phase,
ExternalThermodynamicState ∗const properties ) [virtual]

Computes the properties of the state vector from p and s.
Note: the phase input is currently not supported according to the standard, the phase
input is returned in the state record
Reimplemented from BaseSolver.
The documentation for this class was generated from the following files:
• D:/Lavoro/ModelicaSVN/ExternalMediaLibrary/Projects/Sources/fluidpropsolver.h
• D:/Lavoro/ModelicaSVN/ExternalMediaLibrary/Projects/Sources/fluidpropsolver.cpp

4.6

SolverMap Class Reference

Solver map.

#include 

Static Public Member Functions
• static BaseSolver ∗ getSolver (const string &mediumName, const string &libraryName, const string &substanceName)
Get a specific solver.

• static string solverKey (const string &libraryName, const string &substanceName)
Generate a unique solver key.

Static Protected Attributes
• static map< string, BaseSolver ∗ > _solvers
Map for all solver instances identified by the SolverKey.

4.6.1

Detailed Description

Solver map.
Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

4.7 TestSolver Class Reference

35

This class manages the map of all solvers. A solver is a class that inherits from BaseSolver and that interfaces the external fluid property computation code. Only one
instance is created for each external library.
Francesco Casella, Christoph Richter, Roberto Bonifetto 2006-2012 Copyright Politecnico di Milano, TU Braunschweig, Politecnico di Torino

4.6.2

Member Function Documentation

4.6.2.1

BaseSolver ∗ SolverMap::getSolver ( const string & mediumName, const string
& libraryName, const string & substanceName ) [static]

Get a specific solver.
This function returns the solver for the specified library name, substance name and possibly medium name. It creates a new solver if the solver does not already exist. When
implementing new solvers, one has to add the newly created solvers to this function.
An error message is generated if the specific library is not supported by the interface
library.
Parameters
medium- Medium name
Name
libraryName Library name
substance- Substance name
Name

4.6.2.2

string SolverMap::solverKey ( const string & libraryName, const string &
substanceName ) [static]

Generate a unique solver key.
This function generates a unique solver key based on the library name and substance
name.
The documentation for this class was generated from the following files:
• D:/Lavoro/ModelicaSVN/ExternalMediaLibrary/Projects/Sources/solvermap.h
• D:/Lavoro/ModelicaSVN/ExternalMediaLibrary/Projects/Sources/solvermap.cpp

4.7

TestSolver Class Reference

Test solver class.

#include 
Inheritance diagram for TestSolver:
Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

36

Class Documentation

BaseSolver
TestSolver

Public Member Functions
• TestSolver (const string &mediumName, const string &libraryName, const string
&substanceName)
• virtual void setFluidConstants ()
Set fluid constants.

• virtual void setSat_p (double &p, ExternalSaturationProperties ∗const properties)
Set saturation properties from p.

• virtual void setSat_T (double &T, ExternalSaturationProperties ∗const properties)
Set saturation properties from T.

• virtual void setState_ph (double &p, double &h, int &phase, ExternalThermodynamicState ∗const properties)
Set state from p, h, and phase.

• virtual void setState_pT (double &p, double &T, ExternalThermodynamicState
∗const properties)
Set state from p and T.

• virtual void setState_dT (double &d, double &T, int &phase, ExternalThermodynamicState ∗const properties)
Set state from d, T, and phase.

• virtual void setState_ps (double &p, double &s, int &phase, ExternalThermodynamicState ∗const properties)
Set state from p, s, and phase.

4.7.1

Detailed Description

Test solver class.
This class defines a dummy solver object, computing properties of a fluid roughly resembling warm water at low pressure, without the need of any further external code. The
class is useful for debugging purposes, to test whether the C compiler and the Modelica
tools are set up correctly before tackling problems with the actual - usually way more
complex - external code. It is ∗not∗ meant to be used as an actual fluid model for any
real application.
To keep complexity down to the absolute medium, the current version of the solver can
only compute the fluid properties in the liquid phase region: 1e5 Pa < p < 2e5 Pa 300 K
< T < 350 K ; results returned with inputs outside that range (possibly corresponding to
Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

4.7 TestSolver Class Reference

37

two-phase or vapour points) are not reliable. Saturation properies are computed in the
range 1e5 Pa < psat < 2e5 Pa ; results obtained outside that range might be unrealistic.
To instantiate this solver, it is necessary to set the library name package constant in
Modelica as follows:
libraryName = "TestMedium";
Francesco Casella, Christoph Richter, Roberto Bonifetto 2006-2012 Copyright Politecnico di Milano, TU Braunschweig, Politecnico di Torino

4.7.2

Member Function Documentation

4.7.2.1

void TestSolver::setFluidConstants ( ) [virtual]

Set fluid constants.
This function sets the fluid constants which are defined in the FluidConstants record in
Modelica. It should be called when a new solver is created.
Must be re-implemented in the specific solver
Reimplemented from BaseSolver.

4.7.2.2

void TestSolver::setSat_p ( double & p, ExternalSaturationProperties ∗const
properties ) [virtual]

Set saturation properties from p.
This function sets the saturation properties for the given pressure p. The computed
values are written to the ExternalSaturationProperties propery struct.
Must be re-implemented in the specific solver
Parameters
p Pressure
properties ExternalSaturationProperties property struct

Reimplemented from BaseSolver.

4.7.2.3

void TestSolver::setSat_T ( double & T, ExternalSaturationProperties ∗const
properties ) [virtual]

Set saturation properties from T.
This function sets the saturation properties for the given temperature T. The computed
values are written to the ExternalSaturationProperties propery struct.
Must be re-implemented in the specific solver

Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

38

Class Documentation

Parameters
T Temperature
properties ExternalSaturationProperties property struct

Reimplemented from BaseSolver.

4.7.2.4

void TestSolver::setState_dT ( double & d, double & T, int & phase,
ExternalThermodynamicState ∗const properties ) [virtual]

Set state from d, T, and phase.
This function sets the thermodynamic state record for the given density d, the temperature T and the specified phase. The computed values are written to the ExternalThermodynamicState property struct.
Must be re-implemented in the specific solver
Parameters
d
T
phase
properties

Density
Temperature
Phase (2 for two-phase, 1 for one-phase, 0 if not known)
ExternalThermodynamicState property struct

Reimplemented from BaseSolver.

4.7.2.5

void TestSolver::setState_ph ( double & p, double & h, int & phase,
ExternalThermodynamicState ∗const properties ) [virtual]

Set state from p, h, and phase.
This function sets the thermodynamic state record for the given pressure p, the specific
enthalpy h and the specified phase. The computed values are written to the ExternalThermodynamicState property struct.
Must be re-implemented in the specific solver
Parameters
p
h
phase
properties

Pressure
Specific enthalpy
Phase (2 for two-phase, 1 for one-phase, 0 if not known)
ExternalThermodynamicState property struct

Reimplemented from BaseSolver.

Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

4.8 TFluidProp Class Reference

4.7.2.6

39

void TestSolver::setState_ps ( double & p, double & s, int & phase,
ExternalThermodynamicState ∗const properties ) [virtual]

Set state from p, s, and phase.
This function sets the thermodynamic state record for the given pressure p, the specific
entropy s and the specified phase. The computed values are written to the ExternalThermodynamicState property struct.
Must be re-implemented in the specific solver
Parameters
p
s
phase
properties

Pressure
Specific entropy
Phase (2 for two-phase, 1 for one-phase, 0 if not known)
ExternalThermodynamicState property struct

Reimplemented from BaseSolver.

4.7.2.7

void TestSolver::setState_pT ( double & p, double & T,
ExternalThermodynamicState ∗const properties ) [virtual]

Set state from p and T.
This function sets the thermodynamic state record for the given pressure p and the
temperature T. The computed values are written to the ExternalThermodynamicState
property struct.
Must be re-implemented in the specific solver
Parameters
p Pressure
T Temperature
properties ExternalThermodynamicState property struct
Reimplemented from BaseSolver.
The documentation for this class was generated from the following files:
• D:/Lavoro/ModelicaSVN/ExternalMediaLibrary/Projects/Sources/testsolver.h
• D:/Lavoro/ModelicaSVN/ExternalMediaLibrary/Projects/Sources/testsolver.cpp

4.8

TFluidProp Class Reference

Public Member Functions
• void CreateObject (string ModelName, string ∗ErrorMsg)
• void ReleaseObjects ()
Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

40

Class Documentation
• void SetFluid (string ModelName, int nComp, string ∗Comp, double ∗Conc, string
∗ErrorMsg)
• void GetFluid (string ∗ModelName, int ∗nComp, string ∗Comp, double ∗Conc,
bool CompInfo=true)
• void GetFluidNames (string LongShort, string ModelName, int ∗nFluids, string
∗FluidNames, string ∗ErrorMsg)
• double Pressure (string InputSpec, double Input1, double Input2, string ∗ErrorMsg)
• double Temperature (string InputSpec, double Input1, double Input2, string ∗ErrorMsg)
• double SpecVolume (string InputSpec, double Input1, double Input2, string ∗ErrorMsg)
• double Density (string InputSpec, double Input1, double Input2, string ∗ErrorMsg)
• double Enthalpy (string InputSpec, double Input1, double Input2, string ∗ErrorMsg)
• double Entropy (string InputSpec, double Input1, double Input2, string ∗ErrorMsg)
• double IntEnergy (string InputSpec, double Input1, double Input2, string ∗ErrorMsg)
• double VaporQual (string InputSpec, double Input1, double Input2, string ∗ErrorMsg)
• double ∗ LiquidCmp (string InputSpec, double Input1, double Input2, string ∗ErrorMsg)
• double ∗ VaporCmp (string InputSpec, double Input1, double Input2, string ∗ErrorMsg)
• double HeatCapV (string InputSpec, double Input1, double Input2, string ∗ErrorMsg)
• double HeatCapP (string InputSpec, double Input1, double Input2, string ∗ErrorMsg)
• double SoundSpeed (string InputSpec, double Input1, double Input2, string ∗ErrorMsg)
• double Alpha (string InputSpec, double Input1, double Input2, string ∗ErrorMsg)
• double Beta (string InputSpec, double Input1, double Input2, string ∗ErrorMsg)
• double Chi (string InputSpec, double Input1, double Input2, string ∗ErrorMsg)
• double Fi (string InputSpec, double Input1, double Input2, string ∗ErrorMsg)
• double Ksi (string InputSpec, double Input1, double Input2, string ∗ErrorMsg)
• double Psi (string InputSpec, double Input1, double Input2, string ∗ErrorMsg)
• double Zeta (string InputSpec, double Input1, double Input2, string ∗ErrorMsg)
• double Theta (string InputSpec, double Input1, double Input2, string ∗ErrorMsg)
• double Kappa (string InputSpec, double Input1, double Input2, string ∗ErrorMsg)
• double Gamma (string InputSpec, double Input1, double Input2, string ∗ErrorMsg)
• double Viscosity (string InputSpec, double Input1, double Input2, string ∗ErrorMsg)
• double ThermCond (string InputSpec, double Input1, double Input2, string ∗ErrorMsg)
Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen

4.8 TFluidProp Class Reference

41

• void AllProps (string InputSpec, double Input1, double Input2, double &P, double
&T, double &v, double &d, double &h, double &s, double &u, double &q, double
∗x, double ∗y, double &cv, double &cp, double &c, double &alpha, double &beta,
double &chi, double &fi, double &ksi, double &psi, double &zeta, double &theta,
double &kappa, double &gamma, double &eta, double &lambda, string ∗ErrorMsg)
• void AllPropsSat (string InputSpec, double Input1, double Input2, double &P,
double &T, double &v, double &d, double &h, double &s, double &u, double &q,
double ∗x, double ∗y, double &cv, double &cp, double &c, double &alpha, double
&beta, double &chi, double &fi, double &ksi, double &psi, double &zeta, double
&theta, double &kappa, double &gamma, double &eta, double &lambda, double
&d_liq, double &d_vap, double &h_liq, double &h_vap, double &T_sat, double
&dd_liq_dP, double &dd_vap_dP, double &dh_liq_dP, double &dh_vap_dP, double
&dT_sat_dP, string ∗ErrorMsg)
• double Solve (string FuncSpec, double FuncVal, string InputSpec, long Target,
double FixedVal, double MinVal, double MaxVal, string ∗ErrorMsg)
• double Mmol (string ∗ErrorMsg)
• double Tcrit (string ∗ErrorMsg)
• double Pcrit (string ∗ErrorMsg)
• double Tmin (string ∗ErrorMsg)
• double Tmax (string ∗ErrorMsg)
• void AllInfo (double &Mmol, double &Tcrit, double &Pcrit, double &Tmin, double
&Tmax, string ∗ErrorMsg)
• void SetUnits (string UnitSet, string MassOrMole, string Properties, string Units,
string ∗ErrorMsg)
• void SetRefState (double T_ref, double P_ref, string ∗ErrorMsg)
The documentation for this class was generated from the following files:
• D:/Lavoro/ModelicaSVN/ExternalMediaLibrary/Projects/Sources/FluidProp_IF.H
• D:/Lavoro/ModelicaSVN/ExternalMediaLibrary/Projects/Sources/FluidProp_IF.cpp

Generated on Tue Apr 3 2012 23:59:31 for ExternalMedia by Doxygen



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.5
Linearized                      : No
Page Count                      : 47
Page Mode                       : UseOutlines
Author                          : 
Title                           : 
Subject                         : 
Creator                         : LaTeX with hyperref package
Producer                        : pdfTeX-1.40.12
Create Date                     : 2012:04:04 00:00:54+02:00
Modify Date                     : 2012:04:04 00:00:54+02:00
Trapped                         : False
PTEX Fullbanner                 : This is MiKTeX-pdfTeX 2.9.4225 (1.40.12)
EXIF Metadata provided by EXIF.tools

Navigation menu