CoolProp.dll을 활용할 수 있는 Nuget이 있어서 검색하니 2가지 정도가 나옵니다. (2022.01)
-하나는 SharpFluids이고 (https://github.com/MadsKirkFoged/SharpFluids)
-다른 것은 SharpProp (https://github.com/portyanikhin/SharpProp)
둘의 기능은 크게 차이가 없고 -build-를 보면 둘다 CoolProp.dll을 사용하는 것은 동일합니다.
unit convert를 해주는 기능이 SharpFluids가 조금 더 편리한 듯 합니다.
SharpFluids를 보면 .Net 472~ .Net 5와 NetCore까지 활용할 수 있습니다.
CoolProp에서 사용하는 enum (List)들도 상대적으로 SharpProp보다 간결하고 알기 쉽게 구성되어 있습니다..
아래와 같이 간단히 사용이 가능하고, 단위변환 하는데 조금 더 편리하게 사용가능합니다..
하지만 이전 class 에 이미 적용한 단위변환/조작/을 모두 다 한번에 적용할 수는 없습니다.
//// 사용법, new Fluid로 생성하여 개별 Fluid 사용
using EngineeringUnits;
using EngineeringUnits.Units;
using SharpFluids;
.
.
.
Fluid R717 = new Fluid(FluidList.Ammonia);
R717.UpdatePT(Pressure.FromBars(10), Temperature.FromDegreesCelsius(100));
Console.WriteLine(R717.Density); // 5.751 kg/m³
Console.WriteLine(R717.DynamicViscosity); // 1.286e-05 Pa·s
//// Engineering unit convert , 단위변환 및 단위를 활용한 다른 Unit 계산가능
Mass mass = new Mass(10, MassUnit.Kilogram);
Volume volume = new Volume(0, VolumeUnit.CubicMeter);
Density D1 = mass / volume; // 2.5 kg/m³
Density D2 = volume / mass;
// WrongUnitException: 'This is NOT a [kg/m³] as expected! Your Unit is a [m³/kg]'
//// Engineering unit Example 2 - 개별로 만들어 사용해야 하는 약간의 번거로움
SpecificEntropy P1 = new SpecificEntropy(1, SpecificEntropyUnit.JoulePerKilogramKelvin);
MassFlow M1 = new MassFlow(1, MassFlowUnit.KilogramPerSecond);
Temperature T2 = new Temperature(10, TemperatureUnit.DegreeCelsius);
Temperature T1 = new Temperature(5, TemperatureUnit.DegreeCelsius);
//UnitsNet cant do this..
Power Q1 = M1 * P1 * (T2 - T1);
_
반응형