mirror of
https://github.com/CoolProp/CoolProp.git
synced 2026-04-23 03:00:17 -04:00
Update CoolProp.jl
Added error handling Changed numeric input requirement to be ´Number´ instead of restricting to ´Float64´, that allows both integer and floats to be used as input with few overhead (the Float64 version is still internally created by Julia and the overhead for the conversion from Int64 to Float64 seems negligible compare to the execution time from the functions, I could only time a difference in jit compilation time). Added ´K2F´, ´get_global_param_string´ and ´get_param_index´ functions
This commit is contained in:
@@ -1,23 +1,48 @@
|
||||
module CoolProp
|
||||
|
||||
export F2K, HAPropsSI, PropsSI, PhaseSI
|
||||
export F2K, K2F, HAPropsSI, PropsSI, PhaseSI, get_global_param_string, get_param_index
|
||||
|
||||
function F2K(TF::Float64)
|
||||
function F2K(TF::Number)
|
||||
return ccall( (:F2K, "CoolProp"), Cdouble, (Cdouble,), TF)
|
||||
end
|
||||
|
||||
function HAPropsSI(Output::String, Name1::String, Value1::Float64, Name2::String, Value2::Float64, Name3::String, Value3::Float64)
|
||||
return ccall( (:HAPropsSI, "CoolProp"), Cdouble, (Ptr{UInt8},Ptr{UInt8},Float64,Ptr{UInt8},Float64,Ptr{UInt8},Float64), Output,Name1,Value1,Name2,Value2,Name3,Value3)
|
||||
function K2F(TK::Number)
|
||||
return ccall( (:K2F, "CoolProp"), Cdouble, (Cdouble,), TK)
|
||||
end
|
||||
|
||||
function PropsSI(Output::String, Name1::String, Value1::Float64, Name2::String, Value2::Float64, Fluid::String)
|
||||
return ccall( (:PropsSI, "CoolProp"), Cdouble, (Ptr{UInt8},Ptr{UInt8},Float64,Ptr{UInt8},Float64,Ptr{UInt8}), Output,Name1,Value1,Name2,Value2,Fluid)
|
||||
function HAPropsSI(Output::String, Name1::String, Value1::Number, Name2::String, Value2::Number, Name3::String, Value3::Number)
|
||||
val = ccall( (:HAPropsSI, "CoolProp"), Cdouble, (Ptr{UInt8},Ptr{UInt8},Float64,Ptr{UInt8},Float64,Ptr{UInt8},Float64), Output,Name1,Value1,Name2,Value2,Name3,Value3)
|
||||
if val == Inf
|
||||
error("CoolProp:", get_global_param_string("errstring"))
|
||||
end
|
||||
return val
|
||||
end
|
||||
|
||||
function PhaseSI(Name1::String, Value1::Float64, Name2::String, Value2::Float64, Fluid::String)
|
||||
function PropsSI(Output::String, Name1::String, Value1::Number, Name2::String, Value2::Number, Fluid::String)
|
||||
val = ccall( (:PropsSI, "CoolProp"), Cdouble, (Ptr{UInt8},Ptr{UInt8},Float64,Ptr{UInt8},Float64,Ptr{UInt8}), Output,Name1,Value1,Name2,Value2,Fluid)
|
||||
if val == Inf
|
||||
error("CoolProp:", get_global_param_string("errstring"))
|
||||
end
|
||||
return val
|
||||
end
|
||||
|
||||
function PhaseSI(Name1::String, Value1::Number, Name2::String, Value2::Number, Fluid::String)
|
||||
outstring = Array(UInt8, 255)
|
||||
val = ccall( (:PhaseSI, "CoolProp"), Int32, (Ptr{UInt8},Float64,Ptr{UInt8},Float64,Ptr{UInt8}, Ptr{UInt8}, Int), Name1,Value1,Name2,Value2,Fluid,outstring,length(outstring))
|
||||
return bytestring(convert(Ptr{UInt8}, outstring))
|
||||
return bytestring(convert(Ptr{UInt8}, pointer(outstring)))
|
||||
end
|
||||
|
||||
# This function returns the output string in pre-allocated char buffer. If buffer is not large enough, no copy is made
|
||||
function get_global_param_string(Key::String)
|
||||
Outstring = Array(UInt8, 255)
|
||||
val = ccall( (:get_global_param_string, "CoolProp"), Clong, (Ptr{UInt8},Ptr{UInt8},Int), Key,Outstring,length(Outstring))
|
||||
return bytestring(convert(Ptr{UInt8}, pointer(Outstring)))
|
||||
end
|
||||
|
||||
# Get the index for a parameter "T", "P", etc.
|
||||
# returns the index as a long. If input is invalid, returns -1
|
||||
function get_param_index(Param::String)
|
||||
return ccall( (:get_param_index, "CoolProp"), Clong, (Ptr{UInt8},), Param)
|
||||
end
|
||||
|
||||
end #module
|
||||
|
||||
Reference in New Issue
Block a user