mirror of
https://github.com/CoolProp/CoolProp.git
synced 2026-01-13 07:58:04 -05:00
Fix Lua layer of get_param_index and get_fluid_param_string. Make returns of C module more idiomatic. Use module name as the local variable for the C module.
138 lines
3.3 KiB
Lua
138 lines
3.3 KiB
Lua
|
|
-- Try the FFI-enabled binding if running LuaJIT
|
|
if jit and jit.status() then
|
|
local ok, mod = pcall(require, "coolprop.ffi")
|
|
if ok then
|
|
return mod
|
|
end
|
|
-- If loading via FFI fails, try Lua/C API,
|
|
-- which might contain a statically-linked CoolProp.
|
|
end
|
|
|
|
local ok, capi = pcall(require, "coolprop.capi")
|
|
assert(ok, "Unable to load Lua CoolProp C API Wrapper.")
|
|
|
|
local huge = math.huge
|
|
|
|
local coolprop = {}
|
|
|
|
function coolprop.Props1SI(fluidname, output)
|
|
local v = capi.Props1SI(fluidname, output)
|
|
if v == huge then
|
|
return nil, coolprop.error()
|
|
end
|
|
return v
|
|
end
|
|
|
|
function coolprop.PropsSI(output, name1, prop1, name2, prop2, ref)
|
|
local v = capi.PropsSI(output, name1, prop1, name2, prop2, ref)
|
|
if v == huge then
|
|
return nil, coolprop.error()
|
|
end
|
|
return v
|
|
end
|
|
|
|
function coolprop.PhaseSI(name1, prop1, name2, prop2, ref)
|
|
local phase, err = capi.PhaseSI(name1, prop1, name2, prop2, ref or "")
|
|
if not phase then
|
|
return nil, err or coolprop.error()
|
|
end
|
|
return phase
|
|
end
|
|
|
|
function coolprop.get_global_param_string(param)
|
|
local v, err = capi.get_global_param_string(param)
|
|
if not v then
|
|
return nil, err or coolprop.error()
|
|
end
|
|
return v
|
|
end
|
|
|
|
function coolprop.get_parameter_information_string(key)
|
|
local val, err = capi.get_parameter_information_string(key)
|
|
if not val then
|
|
return nil, err or coolprop.error()
|
|
end
|
|
return val
|
|
end
|
|
|
|
function coolprop.get_mixture_binary_pair_data(cas1, cas2, key)
|
|
return tonumber(capi.get_mixture_binary_pair_data(cas1, cas2, key))
|
|
end
|
|
|
|
function coolprop.get_fluid_param_string(fluid, param)
|
|
local val, err = capi.get_fluid_param_string(fluid, param)
|
|
if not val then
|
|
return nil, err or coolprop.error()
|
|
end
|
|
return val
|
|
end
|
|
|
|
function coolprop.set_reference_stateS(ref, state)
|
|
return capi.set_reference_stateS(ref, state)
|
|
end
|
|
|
|
function coolprop.set_reference_stateD(ref, t, rho, h0, s0)
|
|
return capi.set_reference_stateD(ref, t, rho, h0, s0)
|
|
end
|
|
|
|
function coolprop.F2K(f)
|
|
return capi.F2K(f)
|
|
end
|
|
|
|
function coolprop.K2F(k)
|
|
return capi.K2F(k)
|
|
end
|
|
|
|
function coolprop.get_param_index(param)
|
|
local value = capi.get_param_index(param)
|
|
if value == -1 then return nil end
|
|
return tonumber(value)
|
|
end
|
|
|
|
function coolprop.saturation_ancillary(fluid, output, q, input, value)
|
|
local v = capi.saturation_ancillary(fluid, output, q, input, value)
|
|
if v == huge then
|
|
return nil, coolprop.error()
|
|
end
|
|
return v
|
|
end
|
|
|
|
function coolprop.redirect_stdout(file)
|
|
return capi.redirect_stdout(file)
|
|
end
|
|
|
|
function coolprop.get_debug_level()
|
|
return capi.get_debug_level()
|
|
end
|
|
|
|
function coolprop.set_debug_level(level)
|
|
capi.set_debug_level(level)
|
|
end
|
|
|
|
function coolprop.HAPropsSI(output, name1, prop1, name2, prop2, name3, prop3)
|
|
local v = capi.HAPropsSI(output, name1, prop1, name2, prop2, name3, prop3)
|
|
if v == huge then
|
|
return nil, coolprop.error()
|
|
end
|
|
return v
|
|
end
|
|
|
|
function coolprop.error()
|
|
return coolprop.get_global_param_string("errstring")
|
|
end
|
|
|
|
function coolprop.FluidsList()
|
|
return coolprop.get_global_param_string("FluidsList")
|
|
end
|
|
|
|
function coolprop.version()
|
|
return coolprop.get_global_param_string("version")
|
|
end
|
|
|
|
function coolprop.gitrevision()
|
|
return coolprop.get_global_param_string("gitrevision")
|
|
end
|
|
|
|
return coolprop
|