mirror of
https://github.com/CoolProp/CoolProp.git
synced 2026-01-15 00:48:18 -05:00
67 lines
3.9 KiB
ObjectPascal
67 lines
3.9 KiB
ObjectPascal
program CoolPropDelphiExample;
|
|
|
|
{$APPTYPE CONSOLE}
|
|
{$R *.res}
|
|
|
|
uses
|
|
SysUtils, Windows;
|
|
|
|
CONST
|
|
COOL_PROP = 'CoolProp.dll';
|
|
|
|
type
|
|
TArrayOfAnsiChar = array [0 .. 1023] of AnsiChar;
|
|
|
|
function get_global_param_string(param: PAnsichar; var Output: TArrayOfAnsiChar): Longint; stdcall; external COOL_PROP name '_get_global_param_string@8';
|
|
function get_fluid_param_string(fluid: PAnsichar; param: PAnsichar; var Output: TArrayOfAnsiChar): Longint; stdcall; external COOL_PROP name '_get_fluid_param_string@12';
|
|
function Props1(FluidName: PAnsichar; Output: PAnsichar): Double; stdcall; external COOL_PROP name '_Props1@8';
|
|
function PropsSI(Output: PAnsichar; Name1: PAnsichar; Prop1: Double; Name2: PAnsichar; Prop2: Double; FluidName: PAnsichar): Double; stdcall; external COOL_PROP name '_PropsSI@32';
|
|
function HAProps(Output: PAnsichar; Name1: PAnsichar; Prop1: Double; Name2: PAnsichar; Prop2: Double; Name3: PAnsichar; Prop3: Double): Double; stdcall; external COOL_PROP name '_HAProps@40';
|
|
function enable_TTSE_LUT(FluidName: PAnsichar): Boolean; stdcall; external COOL_PROP name '_enable_TTSE_LUT@4';
|
|
function disable_TTSE_LUT(FluidName: PAnsichar): Boolean; stdcall; external COOL_PROP name '_disable_TTSE_LUT@4';
|
|
|
|
var
|
|
OutputArrayOfAnsiChar: TArrayOfAnsiChar;
|
|
OutputString: string;
|
|
Saved8087CW: Word;
|
|
// RPName: PAnsichar;
|
|
T, h, p, D: Double;
|
|
|
|
begin
|
|
Saved8087CW := Default8087CW;
|
|
get_global_param_string('version', OutputArrayOfAnsiChar);
|
|
OutputString := string(OutputArrayOfAnsiChar);
|
|
Writeln(Format('CoolProp version: %s', [OutputString]));
|
|
get_global_param_string('gitrevision', OutputArrayOfAnsiChar);
|
|
OutputString := string(OutputArrayOfAnsiChar);
|
|
Writeln(Format('CoolProp gitrevision: %s', [OutputString]));
|
|
get_global_param_string('FluidsList', OutputArrayOfAnsiChar);
|
|
OutputString := string(OutputArrayOfAnsiChar);
|
|
Writeln(Format('CoolProp fluids: %s' + sLineBreak, [OutputString]));
|
|
|
|
Writeln('************ USING EOS *************' + sLineBreak);
|
|
Writeln('FLUID STATE INDEPENDENT INPUTS');
|
|
Writeln(Format('Critical Density Propane: %g kg/m^3' + sLineBreak, [Props1('Propane', 'rhocrit')]));
|
|
Writeln('TWO PHASE INPUTS (Pressure)');
|
|
Writeln(Format('Density of saturated liquid Propane at 101325 Pa: %g kg/m^3', [PropsSI('D', 'P', 101325, 'Q', 0, 'Propane')]));
|
|
Writeln(Format('Density of saturated vapor R290 at 101325 Pa: %g kg/m^3'+ sLineBreak, [PropsSI('D', 'P', 101325, 'Q', 1, 'R290')]));
|
|
Writeln('TWO PHASE INPUTS (Temperature)');
|
|
Writeln(Format('Density of saturated liquid Propane at 300 K: %g kg/m^3', [PropsSI('D', 'T', 300, 'Q', 0, 'Propane')]));
|
|
Writeln(Format('Density of saturated vapor R290 at 300 K: %g kg/m^3' + sLineBreak, [PropsSI('D', 'T', 300, 'Q', 1, 'R290')]));
|
|
Writeln('SINGLE PHASE CYCLE (Propane)');
|
|
p := PropsSI('P', 'T', 300, 'D', 1, 'Propane');
|
|
h := PropsSI('H', 'T', 300, 'D', 1, 'Propane');
|
|
Writeln(Format('T,D -> P,H : 300,1 -> %g,%g', [p, h]));
|
|
T := PropsSI('T', 'P', p, 'H', h, 'Propane');
|
|
D := PropsSI('D', 'P', p, 'H', h, 'Propane');
|
|
Writeln(Format('P,H -> T,D : %g, %g -> %g, %g' + sLineBreak, [p, h, T, D]));
|
|
|
|
Writeln('************ BRINES AND SECONDARY WORKING FLUIDS *************' + sLineBreak);
|
|
Writeln(Format ('Density of 50%% (mass) ethylene glycol/water at 300 K, 101325 Pa: %g kg/m^3', [PropsSI('D', 'T', 300, 'P', 101325, 'EG-50%')]));
|
|
Writeln(Format('Viscosity of Therminol D12 at 350 K, 101325 Pa: %g Pa-s' + sLineBreak, [PropsSI('V', 'T', 350, 'P', 101325, 'TD12')]));
|
|
|
|
Writeln('************ HUMID AIR PROPERTIES *************' + sLineBreak);
|
|
Writeln(Format('Humidity ratio of 50%% rel. hum. air at 300 K, 101.325 kPa: %g kg_w/kg_da', [HAProps('W', 'T', 300, 'P', 101.325, 'R', 0.5)]));
|
|
Writeln(Format('Relative humidity from last calculation: %g (fractional)', [HAProps('R', 'T', 300, 'P', 101.325, 'W', HAProps('W', 'T', 300, 'P', 101.325, 'R', 0.5))]));
|
|
end.
|