PageRenderTime 30ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 1ms

/Temperature.m

http://freesteamplus.googlecode.com/
MATLAB | 741 lines | 694 code | 0 blank | 47 comment | 164 complexity | 5389ddc406b565e8794abe10408ccd48 MD5 | raw file
  1. function output = Temperature(material,prop1,units1,value1,varargin)%,prop2,units2,value2)
  2. value1 = CheckUnits(prop1,units1,value1);
  3. switch lower(material)
  4. case {'water','steam'}
  5. %% Water
  6. error(nargchk(7, 7, nargin, 'struct'))
  7. prop2 = varargin{1};
  8. units2 = varargin{2};
  9. value2 = varargin{3};
  10. value2 = CheckUnits(prop2,units2,value2);
  11. if strcmpi(prop1,'t')
  12. output = value1;
  13. return;
  14. elseif strcmpi(prop2,'t')
  15. output = value2;
  16. return;
  17. end
  18. switch lower(prop1)
  19. case 'p'
  20. pressure = value1;
  21. switch lower(prop2)
  22. case 'v'
  23. volume = value2;
  24. temperature = fzero(@(temperature) Corr_Water_Volume(pressure,temperature)-volume,...
  25. [4.219990731E-1 1.657886606].*647.3);
  26. case 's'
  27. entropy = value2;
  28. temperature = fzero(@(temperature) Corr_Water_Entropy(pressure,temperature)-entropy,...
  29. [4.219990731E-1 1.657886606].*647.3);
  30. case 'h'
  31. enthalpy = value2;
  32. temperature = fzero(@(temperature) Corr_Water_Enthalpy(pressure,temperature)-enthalpy,...
  33. [4.219990731E-1 1.657886606].*647.3);
  34. otherwise
  35. error('Therm:corr','No correlation found for given properties')
  36. end
  37. case 'v'
  38. volume = value1;
  39. switch lower(prop2)
  40. case 'p'
  41. pressure = value2;
  42. temperature = fzero(@(temperature) Corr_Water_Volume(pressure,temperature)-volume,...
  43. [4.219990731E-1 1.657886606].*647.3);
  44. case 's'
  45. entropy = value2;
  46. x = fsolve(@(x) [Corr_Water_Volume(x(1),x(2))-volume;...
  47. Corr_Water_Entropy(x(1),x(2))]-entropy,...
  48. [[0 4.520795660].*611.2;[4.219990731E-1 1.657886606].*647.3]);
  49. temperature = x(2);
  50. case 'h'
  51. enthalpy = value2;
  52. x = fsolve(@(x) [Corr_Water_Volume(x(1),x(2))-volume;...
  53. Corr_Water_Enthalpy(x(1),x(2))-enthalpy],...
  54. [[0 4.520795660].*611.2;[4.219990731E-1 1.657886606].*647.3]);
  55. temperature = x(2);
  56. otherwise
  57. error('Therm:corr','No correlation found for given properties')
  58. end
  59. case 's'
  60. entropy = value1;
  61. switch lower(prop2)
  62. case 'p'
  63. pressure = value2;
  64. temperature = fzero(@(temperature) Corr_Water_Entropy(pressure,temperature)-entropy,...
  65. [4.219990731E-1 1.657886606].*647.3);
  66. case 'v'
  67. volume = value2;
  68. x = fsolve(@(x) [Corr_Water_Entropy(x(1),x(2))-entropy;...
  69. Corr_Water_Volume(x(1),x(2))-volume],...
  70. [[0 4.520795660].*611.2;[4.219990731E-1 1.657886606].*647.3]);
  71. temperature = x(2);
  72. case 'h'
  73. enthalpy = value2;
  74. x = fsolve(@(x) [Corr_Water_Entropy(x(1),x(2))-entropy;...
  75. Corr_Water_Enthalpy(x(1),x(2))-enthalpy],...
  76. [[0 4.520795660].*611.2;[4.219990731E-1 1.657886606].*647.3]);
  77. temperature = x(2);
  78. otherwise
  79. error('Therm:corr','No correlation found for given properties')
  80. end
  81. case 'h'
  82. enthalpy = value1;
  83. switch lower(prop2)
  84. case 'p'
  85. pressure = value2;
  86. temperature = fzero(@(temperature) Corr_Water_Enthalpy(pressure,temperature)-enthalpy,...
  87. [4.219990731E-1 1.657886606].*647.3);
  88. case 'v'
  89. volume = value2;
  90. x = fsolve(@(x) [Corr_Water_Enthalpy(x(1),x(2))-enthalpy;...
  91. Corr_Water_Volume(x(1),x(2))-volume],...
  92. [[0 4.520795660].*611.2;[4.219990731E-1 1.657886606].*647.3]);
  93. temperature = x(2);
  94. case 's'
  95. entropy = value2;
  96. x = fsolve(@(x) [Corr_Water_Enthalpy(x(1),x(2))-enthalpy;...
  97. Corr_Water_Entropy(x(1),x(2))-entropy],...
  98. [[0 4.520795660].*611.2;[4.219990731E-1 1.657886606].*647.3]);
  99. temperature = x(2);
  100. otherwise
  101. error('Therm:corr','No correlation found for given properties')
  102. end
  103. otherwise
  104. error('Therm:corr','No correlation found for given properties')
  105. end
  106. output = temperature;
  107. case {'saturated water','saturatedwater','saturated steam','saturatedsteam'}
  108. %% Saturated Water
  109. error(nargchk(4, 4, nargin, 'struct'))
  110. switch lower(prop1)
  111. case 't'
  112. temperature = value1;
  113. case 'p'
  114. pressure = value1;
  115. temperature = Corr_SaturatedWater_Temperature(pressure);
  116. otherwise
  117. error('Therm:corr','No correlation found for given properties')
  118. end
  119. output = temperature;
  120. case {'refrigerant','r-134a','r134a','hfc-134a','hfc134a',...
  121. '1,1,1,2-tetrafluoroethane','tetrafluoroethane'}
  122. %% Refrigerant
  123. error(nargchk(7, 7, nargin, 'struct'))
  124. prop2 = varargin{1};
  125. units2 = varargin{2};
  126. value2 = varargin{3};
  127. value2 = CheckUnits(prop2,units2,value2);
  128. if strcmpi(prop1,'t')
  129. output = value1;
  130. return;
  131. elseif strcmpi(prop2,'t')
  132. output = value2;
  133. return;
  134. end
  135. switch lower(prop1)
  136. case 'v'
  137. volume = value1;
  138. switch lower(prop2)
  139. case 'p'
  140. pressure = value2;
  141. temperature = fzero(@(temperature) Corr_Refrigerant_Pressure(temperature,volume)-pressure,[170,455]);
  142. case 's'
  143. entropy = value2;
  144. temperature = fzero(@(temperature) Corr_Refrigerant_Entropy(temperature,volume)-entropy,[170,455]);
  145. case 'h'
  146. enthalpy = value2;
  147. temperature = fzero(@(temperature) Corr_Refrigerant_Enthalpy(temperature,volume)-enthalpy,[170,455]);
  148. otherwise
  149. error('Therm:corr','No correlation found for given properties')
  150. end
  151. case 'p'
  152. pressure = value1;
  153. switch lower(prop2)
  154. case 'v'
  155. volume = value2;
  156. temperature = fzero(@(temperature) Corr_Refrigerant_Pressure(temperature,volume)-pressure,[170,455]);
  157. % case 's'
  158. % entropy = value2;
  159. % x = fsolve(@(x) [Corr_Refrigerant_Pressure(x(1),x(2))-pressure;...
  160. % Corr_Refrigerant_Entropy_pt(x(1),x(2))-entropy],...
  161. % [[0 4.520795660].*611.2;[170,455]]);
  162. % temperature = x(1);
  163. % case 'h'
  164. % enthalpy = value2;
  165. % x = fsolve(@(x) [Corr_Refrigerant_Volume_pt(x(1),x(2))-volume;...
  166. % Corr_Refrigerant_Enthalpy_pt(x(1),x(2))-enthalpy],...
  167. % [[0 4.520795660].*611.2;[170,455]]);
  168. % temperature = x(2);
  169. otherwise
  170. error('Therm:corr','No correlation found for given properties')
  171. end
  172. case 's'
  173. entropy = value1;
  174. switch lower(prop2)
  175. case 'v'
  176. volume = value2;
  177. temperature = fzero(@(temperature) Corr_Refrigerant_Entropy(temperature,volume)-entropy,[170,455]);
  178. % case 'p'
  179. % volume = value2;
  180. % x = fsolve(@(x) [Corr_Refrigerant_Entropy_pt(x(1),x(2))-entropy;...
  181. % Corr_Refrigerant_Volume_pt(x(1),x(2))-volume],...
  182. % [[0 4.520795660].*611.2;[170,455]]);
  183. % temperature = x(2);
  184. % case 'h'
  185. % enthalpy = value2;
  186. % x = fsolve(@(x) [Corr_Refrigerant_Entropy_pt(x(1),x(2))-entropy;...
  187. % Corr_Refrigerant_Enthalpy_pt(x(1),x(2))-enthalpy],...
  188. % [[0 4.520795660].*611.2;[170,455]]);
  189. % temperature = x(2);
  190. otherwise
  191. error('Therm:corr','No correlation found for given properties')
  192. end
  193. case 'h'
  194. enthalpy = value1;
  195. switch lower(prop2)
  196. case 'v'
  197. volume = value2;
  198. temperature = fzero(@(temperature) Corr_Refrigerant_Enthalpy(temperature,volume)-enthalpy,[170,455]);
  199. % case 'p'
  200. % volume = value2;
  201. % x = fsolve(@(x) [Corr_Refrigerant_Enthalpy_pt(x(1),x(2))-enthalpy;...
  202. % Corr_Refrigerant_Volume_pt(x(1),x(2))-volume],...
  203. % [[0 4.520795660].*611.2;[170,455]]);
  204. % temperature = x(2);
  205. % case 's'
  206. % entropy = value2;
  207. % x = fsolve(@(x) [Corr_Refrigerant_Enthalpy_pt(x(1),x(2))-enthalpy;...
  208. % Corr_Refrigerant_Entropy_pt(x(1),x(2))-entropy],...
  209. % [[0 4.520795660].*611.2;[170,455]]);
  210. % temperature = x(2);
  211. otherwise
  212. error('Therm:corr','No correlation found for given properties')
  213. end
  214. otherwise
  215. error('Therm:corr','No correlation found for given properties')
  216. end
  217. output = temperature;
  218. case {'saturated refrigerant','saturated r-134a','saturated r134a','saturated hfc-134a',...
  219. 'saturated hfc134a','saturated 1,1,1,2-tetrafluoroethane','saturated tetrafluoroethane',...
  220. 'saturatedrefrigerant','saturatedr-134a','saturatedr134a','saturatedhfc-134a',...
  221. 'saturatedhfc134a','saturated1,1,1,2-tetrafluoroethane','saturatedtetrafluoroethane'}
  222. %% Saturated Refrigerant
  223. error(nargchk(4, 4, nargin, 'struct'))
  224. switch lower(prop1)
  225. case 't'
  226. temperature = value1;
  227. case 'p'
  228. pressure = value1;
  229. temperature = fzero(@(temperature) Corr_Refrigerant_SatPressure(temperature)-pressure, [170,455]);
  230. otherwise
  231. error('Therm:corr','No correlation found for given properties')
  232. end
  233. output = temperature;
  234. case 'air'
  235. %% Air
  236. error(nargchk(4, 7, nargin, 'struct'))
  237. if ((nargin > 4) && (nargin < 7))
  238. error('Therm:nargchk:improperNumberOfInputs','Improper number of input arguments.')
  239. end
  240. if strcmpi(prop1,'t')
  241. output = value1;
  242. return;
  243. end
  244. if nargin == 7
  245. prop2 = varargin{1};
  246. units2 = varargin{2};
  247. value2 = varargin{3};
  248. value2 = CheckUnits(prop2,units2,value2);
  249. if strcmpi(prop2,'t')
  250. output = value2;
  251. return;
  252. end
  253. end
  254. switch lower(prop1)
  255. case 'p'
  256. error(nargchk(7, 7, nargin, 'struct'))
  257. pressure = value1;
  258. switch lower(prop2)
  259. case 'v'
  260. volume = value2;
  261. temperature = Corr_Air_Temperature(pressure,volume);
  262. case 'cp'
  263. specificHeat = value2;
  264. temperature = fzero(@(temperature) Corr_Air_SpecificHeatP(temperature)-specificHeat,[250,2000]);
  265. case 'h'
  266. enthalpy = value2;
  267. temperature = fzero(@(temperature) Corr_Air_Enthalpy(temperature)-enthalpy,[250,2000]);
  268. case 's'
  269. entropy = value2;
  270. temperature = fzero(@(temperature) Corr_Air_Entropy(temperature)-entropy,[250,2000]);
  271. otherwise
  272. error('Therm:corr','No correlation found for given properties')
  273. end
  274. case 'v'
  275. error(nargchk(7, 7, nargin, 'struct'))
  276. volume = value1;
  277. switch lower(prop2)
  278. case 'p'
  279. pressure = value2;
  280. temperature = Corr_Air_Temperature(pressure,volume);
  281. case 'cp'
  282. specificHeat = value2;
  283. temperature = fzero(@(temperature) Corr_Air_SpecificHeatP(temperature)-specificHeat,[250,2000]);
  284. case 'h'
  285. enthalpy = value2;
  286. temperature = fzero(@(temperature) Corr_Air_Enthalpy(temperature)-enthalpy,[250,2000]);
  287. case 's'
  288. entropy = value2;
  289. temperature = fzero(@(temperature) Corr_Air_Entropy(temperature)-entropy,[250,2000]);
  290. otherwise
  291. error('Therm:corr','No correlation found for given properties')
  292. end
  293. case 'cp'
  294. specificHeat = value1;
  295. temperature = fzero(@(temperature) Corr_Air_SpecificHeatP(temperature)-specificHeat,[250,2000]);
  296. case 'h'
  297. enthalpy = value1;
  298. temperature = fzero(@(temperature) Corr_Air_Enthalpy(temperature)-enthalpy,[250,2000]);
  299. case 's'
  300. entropy = value1;
  301. temperature = fzero(@(temperature) Corr_Air_Entropy(temperature)-entropy,[250,2000]);
  302. otherwise
  303. error('Therm:corr','No correlation found for given properties')
  304. end
  305. output = temperature;
  306. case {'carbon dioxide','co2'}
  307. %% Carbon Dioxide
  308. error(nargchk(4, 7, nargin, 'struct'))
  309. if ((nargin > 4) && (nargin < 7))
  310. error('Therm:nargchk:improperNumberOfInputs','Improper number of input arguments.')
  311. end
  312. if strcmpi(prop1,'t')
  313. output = value1;
  314. return;
  315. end
  316. if nargin == 7
  317. prop2 = varargin{1};
  318. units2 = varargin{2};
  319. value2 = varargin{3};
  320. value2 = CheckUnits(prop2,units2,value2);
  321. if strcmpi(prop2,'t')
  322. output = value2;
  323. return;
  324. end
  325. end
  326. switch lower(prop1)
  327. case 'p'
  328. error(nargchk(7, 7, nargin, 'struct'))
  329. pressure = value1;
  330. switch lower(prop2)
  331. case 'v'
  332. volume = value2;
  333. temperature = Corr_CarbonDioxide_Temperature(pressure,volume);
  334. case 'cp'
  335. specificHeat = value2;
  336. temperature = fzero(@(temperature) Corr_CarbonDioxide_SpecificHeatP(temperature)-specificHeat,[200,1000]);
  337. case 'h'
  338. enthalpy = value2;
  339. temperature = fzero(@(temperature) Corr_CarbonDioxide_Enthalpy(temperature)-enthalpy,[200,1000]);
  340. case 's'
  341. entropy = value2;
  342. temperature = fzero(@(temperature) Corr_CarbonDioxide_Entropy(temperature)-entropy,[200,1000]);
  343. otherwise
  344. error('Therm:corr','No correlation found for given properties')
  345. end
  346. case 'v'
  347. error(nargchk(7, 7, nargin, 'struct'))
  348. volume = value1;
  349. switch lower(prop2)
  350. case 'p'
  351. pressure = value2;
  352. temperature = Corr_CarbonDioxide_Temperature(pressure,volume);
  353. case 'cp'
  354. specificHeat = value2;
  355. temperature = fzero(@(temperature) Corr_CarbonDioxide_SpecificHeatP(temperature)-specificHeat,[200,1000]);
  356. case 'h'
  357. enthalpy = value2;
  358. temperature = fzero(@(temperature) Corr_CarbonDioxide_Enthalpy(temperature)-enthalpy,[200,1000]);
  359. case 's'
  360. entropy = value2;
  361. temperature = fzero(@(temperature) Corr_CarbonDioxide_Entropy(temperature)-entropy,[200,1000]);
  362. otherwise
  363. error('Therm:corr','No correlation found for given properties')
  364. end
  365. case 'cp'
  366. specificHeat = value1;
  367. temperature = fzero(@(temperature) Corr_CarbonDioxide_SpecificHeatP(temperature)-specificHeat,[200,1000]);
  368. case 'h'
  369. enthalpy = value1;
  370. temperature = fzero(@(temperature) Corr_CarbonDioxide_Enthalpy(temperature)-enthalpy,[200,1000]);
  371. case 's'
  372. entropy = value1;
  373. temperature = fzero(@(temperature) Corr_CarbonDioxide_Entropy(temperature)-entropy,[200,1000]);
  374. otherwise
  375. error('Therm:corr','No correlation found for given properties')
  376. end
  377. output = temperature;
  378. case {'hydrogen','h2'}
  379. %% Hydrogen
  380. error(nargchk(4, 7, nargin, 'struct'))
  381. if ((nargin > 4) && (nargin < 7))
  382. error('Therm:nargchk:improperNumberOfInputs','Improper number of input arguments.')
  383. end
  384. if strcmpi(prop1,'t')
  385. output = value1;
  386. return;
  387. end
  388. if nargin == 7
  389. prop2 = varargin{1};
  390. units2 = varargin{2};
  391. value2 = varargin{3};
  392. value2 = CheckUnits(prop2,units2,value2);
  393. if strcmpi(prop2,'t')
  394. output = value2;
  395. return;
  396. end
  397. end
  398. switch lower(prop1)
  399. case 'p'
  400. error(nargchk(7, 7, nargin, 'struct'))
  401. pressure = value1;
  402. switch lower(prop2)
  403. case 'v'
  404. volume = value2;
  405. temperature = Corr_Hydrogen_Temperature(pressure,volume);
  406. case 'cp'
  407. specificHeat = value2;
  408. temperature = fzero(@(temperature) Corr_Hydrogen_SpecificHeatP(temperature)-specificHeat,[250,1050]);
  409. case 'h'
  410. enthalpy = value2;
  411. temperature = fzero(@(temperature) Corr_Hydrogen_Enthalpy(temperature)-enthalpy,[250,1050]);
  412. case 's'
  413. entropy = value2;
  414. temperature = fzero(@(temperature) Corr_Hydrogen_Entropy(temperature)-entropy,[250,1050]);
  415. otherwise
  416. error('Therm:corr','No correlation found for given properties')
  417. end
  418. case 'v'
  419. error(nargchk(7, 7, nargin, 'struct'))
  420. volume = value1;
  421. switch lower(prop2)
  422. case 'p'
  423. pressure = value2;
  424. temperature = Corr_Hydrogen_Temperature(pressure,volume);
  425. case 'cp'
  426. specificHeat = value2;
  427. temperature = fzero(@(temperature) Corr_Hydrogen_SpecificHeatP(temperature)-specificHeat,[250,1050]);
  428. case 'h'
  429. enthalpy = value2;
  430. temperature = fzero(@(temperature) Corr_Hydrogen_Enthalpy(temperature)-enthalpy,[250,1050]);
  431. case 's'
  432. entropy = value2;
  433. temperature = fzero(@(temperature) Corr_Hydrogen_Entropy(temperature)-entropy,[250,1050]);
  434. otherwise
  435. error('Therm:corr','No correlation found for given properties')
  436. end
  437. case 'cp'
  438. specificHeat = value1;
  439. temperature = fzero(@(temperature) Corr_Hydrogen_SpecificHeatP(temperature)-specificHeat,[250,1050]);
  440. case 'h'
  441. enthalpy = value1;
  442. temperature = fzero(@(temperature) Corr_Hydrogen_Enthalpy(temperature)-enthalpy,[250,1050]);
  443. case 's'
  444. entropy = value1;
  445. temperature = fzero(@(temperature) Corr_Hydrogen_Entropy(temperature)-entropy,[250,1050]);
  446. otherwise
  447. error('Therm:corr','No correlation found for given properties')
  448. end
  449. output = temperature;
  450. case {'helium','he'}
  451. %% Helium
  452. error(nargchk(4, 7, nargin, 'struct'))
  453. if ((nargin > 4) && (nargin < 7))
  454. error('Therm:nargchk:improperNumberOfInputs','Improper number of input arguments.')
  455. end
  456. if strcmpi(prop1,'t')
  457. output = value1;
  458. return;
  459. end
  460. if nargin == 7
  461. prop2 = varargin{1};
  462. units2 = varargin{2};
  463. value2 = varargin{3};
  464. value2 = CheckUnits(prop2,units2,value2);
  465. if strcmpi(prop2,'t')
  466. output = value2;
  467. return;
  468. end
  469. end
  470. switch lower(prop1)
  471. case 'p'
  472. error(nargchk(7, 7, nargin, 'struct'))
  473. pressure = value1;
  474. switch lower(prop2)
  475. case 'v'
  476. volume = value2;
  477. temperature = Corr_Helium_Temperature(pressure,volume);
  478. case 'cp'
  479. specificHeat = value2;
  480. temperature = fzero(@(temperature) Corr_Helium_SpecificHeatP(temperature)-specificHeat,[250,1050]);
  481. case 'h'
  482. enthalpy = value2;
  483. temperature = fzero(@(temperature) Corr_Helium_Enthalpy(temperature)-enthalpy,[250,1050]);
  484. case 's'
  485. entropy = value2;
  486. temperature = fzero(@(temperature) Corr_Helium_Entropy(temperature)-entropy,[250,1050]);
  487. otherwise
  488. error('Therm:corr','No correlation found for given properties')
  489. end
  490. case 'v'
  491. error(nargchk(7, 7, nargin, 'struct'))
  492. volume = value1;
  493. switch lower(prop2)
  494. case 'p'
  495. pressure = value2;
  496. temperature = Corr_Helium_Temperature(pressure,volume);
  497. case 'cp'
  498. specificHeat = value2;
  499. temperature = fzero(@(temperature) Corr_Helium_SpecificHeatP(temperature)-specificHeat,[250,1050]);
  500. case 'h'
  501. enthalpy = value2;
  502. temperature = fzero(@(temperature) Corr_Helium_Enthalpy(temperature)-enthalpy,[250,1050]);
  503. case 's'
  504. entropy = value2;
  505. temperature = fzero(@(temperature) Corr_Helium_Entropy(temperature)-entropy,[250,1050]);
  506. otherwise
  507. error('Therm:corr','No correlation found for given properties')
  508. end
  509. case 'cp'
  510. specificHeat = value1;
  511. temperature = fzero(@(temperature) Corr_Helium_SpecificHeatP(temperature)-specificHeat,[250,1050]);
  512. case 'h'
  513. enthalpy = value1;
  514. temperature = fzero(@(temperature) Corr_Helium_Enthalpy(temperature)-enthalpy,[250,1050]);
  515. case 's'
  516. entropy = value1;
  517. temperature = fzero(@(temperature) Corr_Helium_Entropy(temperature)-entropy,[250,1050]);
  518. otherwise
  519. error('Therm:corr','No correlation found for given properties')
  520. end
  521. output = temperature;
  522. case {'nitrogen','n2'}
  523. %% Nitrogen
  524. error(nargchk(4, 7, nargin, 'struct'))
  525. if ((nargin > 4) && (nargin < 7))
  526. error('Therm:nargchk:improperNumberOfInputs','Improper number of input arguments.')
  527. end
  528. if strcmpi(prop1,'t')
  529. output = value1;
  530. return;
  531. end
  532. if nargin == 7
  533. prop2 = varargin{1};
  534. units2 = varargin{2};
  535. value2 = varargin{3};
  536. value2 = CheckUnits(prop2,units2,value2);
  537. if strcmpi(prop2,'t')
  538. output = value2;
  539. return;
  540. end
  541. end
  542. switch lower(prop1)
  543. case 'p'
  544. error(nargchk(7, 7, nargin, 'struct'))
  545. pressure = value1;
  546. switch lower(prop2)
  547. case 'v'
  548. volume = value2;
  549. temperature = Corr_Nitrogen_Temperature(pressure,volume);
  550. case 'cp'
  551. specificHeat = value2;
  552. temperature = fzero(@(temperature) Corr_Nitrogen_SpecificHeatP(temperature)-specificHeat,[280,1080]);
  553. case 'h'
  554. enthalpy = value2;
  555. temperature = fzero(@(temperature) Corr_Nitrogen_Enthalpy(temperature)-enthalpy,[280,1080]);
  556. case 's'
  557. entropy = value2;
  558. temperature = fzero(@(temperature) Corr_Nitrogen_Entropy(temperature)-entropy,[280,1080]);
  559. otherwise
  560. error('Therm:corr','No correlation found for given properties')
  561. end
  562. case 'v'
  563. error(nargchk(7, 7, nargin, 'struct'))
  564. volume = value1;
  565. switch lower(prop2)
  566. case 'p'
  567. pressure = value2;
  568. temperature = Corr_Nitrogen_Temperature(pressure,volume);
  569. case 'cp'
  570. specificHeat = value2;
  571. temperature = fzero(@(temperature) Corr_Nitrogen_SpecificHeatP(temperature)-specificHeat,[280,1080]);
  572. case 'h'
  573. enthalpy = value2;
  574. temperature = fzero(@(temperature) Corr_Nitrogen_Enthalpy(temperature)-enthalpy,[280,1080]);
  575. case 's'
  576. entropy = value2;
  577. temperature = fzero(@(temperature) Corr_Nitrogen_Entropy(temperature)-entropy,[280,1080]);
  578. otherwise
  579. error('Therm:corr','No correlation found for given properties')
  580. end
  581. case 'cp'
  582. specificHeat = value1;
  583. temperature = fzero(@(temperature) Corr_Nitrogen_SpecificHeatP(temperature)-specificHeat,[280,1080]);
  584. case 'h'
  585. enthalpy = value1;
  586. temperature = fzero(@(temperature) Corr_Nitrogen_Enthalpy(temperature)-enthalpy,[280,1080]);
  587. case 's'
  588. entropy = value1;
  589. temperature = fzero(@(temperature) Corr_Nitrogen_Entropy(temperature)-entropy,[280,1080]);
  590. otherwise
  591. error('Therm:corr','No correlation found for given properties')
  592. end
  593. output = temperature;
  594. case {'oxygen','o2'}
  595. %% Oxygen
  596. error(nargchk(4, 7, nargin, 'struct'))
  597. if ((nargin > 4) && (nargin < 7))
  598. error('Therm:nargchk:improperNumberOfInputs','Improper number of input arguments.')
  599. end
  600. if strcmpi(prop1,'t')
  601. output = value1;
  602. return;
  603. end
  604. if nargin == 7
  605. prop2 = varargin{1};
  606. units2 = varargin{2};
  607. value2 = varargin{3};
  608. value2 = CheckUnits(prop2,units2,value2);
  609. if strcmpi(prop2,'t')
  610. output = value2;
  611. return;
  612. end
  613. end
  614. switch lower(prop1)
  615. case 'p'
  616. error(nargchk(7, 7, nargin, 'struct'))
  617. pressure = value1;
  618. switch lower(prop2)
  619. case 'v'
  620. volume = value2;
  621. temperature = Corr_Oxygen_Temperature(pressure,volume);
  622. case 'cp'
  623. specificHeat = value2;
  624. temperature = fzero(@(temperature) Corr_Oxygen_SpecificHeatP(temperature)-specificHeat,[250,1050]);
  625. case 'h'
  626. enthalpy = value2;
  627. temperature = fzero(@(temperature) Corr_Oxygen_Enthalpy(temperature)-enthalpy,[250,1050]);
  628. case 's'
  629. entropy = value2;
  630. temperature = fzero(@(temperature) Corr_Oxygen_Entropy(temperature)-entropy,[250,1050]);
  631. otherwise
  632. error('Therm:corr','No correlation found for given properties')
  633. end
  634. case 'v'
  635. error(nargchk(7, 7, nargin, 'struct'))
  636. volume = value1;
  637. switch lower(prop2)
  638. case 'p'
  639. pressure = value2;
  640. temperature = Corr_Oxygen_Temperature(pressure,volume);
  641. case 'cp'
  642. specificHeat = value2;
  643. temperature = fzero(@(temperature) Corr_Oxygen_SpecificHeatP(temperature)-specificHeat,[250,1050]);
  644. case 'h'
  645. enthalpy = value2;
  646. temperature = fzero(@(temperature) Corr_Oxygen_Enthalpy(temperature)-enthalpy,[250,1050]);
  647. case 's'
  648. entropy = value2;
  649. temperature = fzero(@(temperature) Corr_Oxygen_Entropy(temperature)-entropy,[250,1050]);
  650. otherwise
  651. error('Therm:corr','No correlation found for given properties')
  652. end
  653. case 'cp'
  654. specificHeat = value1;
  655. temperature = fzero(@(temperature) Corr_Oxygen_SpecificHeatP(temperature)-specificHeat,[250,1050]);
  656. case 'h'
  657. enthalpy = value1;
  658. temperature = fzero(@(temperature) Corr_Oxygen_Enthalpy(temperature)-enthalpy,[250,1050]);
  659. case 's'
  660. entropy = value1;
  661. temperature = fzero(@(temperature) Corr_Oxygen_Entropy(temperature)-entropy,[250,1050]);
  662. otherwise
  663. error('Therm:corr','No correlation found for given properties')
  664. end
  665. output = temperature;
  666. case {'propane','c3h8'}
  667. %% Propane
  668. error(nargchk(4, 7, nargin, 'struct'))
  669. if ((nargin > 4) && (nargin < 7))
  670. error('Therm:nargchk:improperNumberOfInputs','Improper number of input arguments.')
  671. end
  672. if strcmpi(prop1,'t')
  673. output = value1;
  674. return;
  675. end
  676. if nargin == 7
  677. prop2 = varargin{1};
  678. units2 = varargin{2};
  679. value2 = varargin{3};
  680. value2 = CheckUnits(prop2,units2,value2);
  681. if strcmpi(prop2,'t')
  682. output = value2;
  683. return;
  684. end
  685. end
  686. switch lower(prop1)
  687. case 'p'
  688. error(nargchk(7, 7, nargin, 'struct'))
  689. pressure = value1;
  690. switch lower(prop2)
  691. case 'v'
  692. volume = value2;
  693. temperature = Corr_Propane_Temperature(pressure,volume);
  694. case 'cp'
  695. specificHeat = value2;
  696. temperature = fzero(@(temperature) Corr_Propane_SpecificHeatP(temperature)-specificHeat,[280,1080]);
  697. case 'h'
  698. enthalpy = value2;
  699. temperature = fzero(@(temperature) Corr_Propane_Enthalpy(temperature)-enthalpy,[280,1080]);
  700. case 's'
  701. entropy = value2;
  702. temperature = fzero(@(temperature) Corr_Propane_Entropy(temperature)-entropy,[280,1080]);
  703. otherwise
  704. error('Therm:corr','No correlation found for given properties')
  705. end
  706. case 'v'
  707. error(nargchk(7, 7, nargin, 'struct'))
  708. volume = value1;
  709. switch lower(prop2)
  710. case 'p'
  711. pressure = value2;
  712. temperature = Corr_Propane_Temperature(pressure,volume);
  713. case 'cp'
  714. specificHeat = value2;
  715. temperature = fzero(@(temperature) Corr_Propane_SpecificHeatP(temperature)-specificHeat,[280,1080]);
  716. case 'h'
  717. enthalpy = value2;
  718. temperature = fzero(@(temperature) Corr_Propane_Enthalpy(temperature)-enthalpy,[280,1080]);
  719. case 's'
  720. entropy = value2;
  721. temperature = fzero(@(temperature) Corr_Propane_Entropy(temperature)-entropy,[280,1080]);
  722. otherwise
  723. error('Therm:corr','No correlation found for given properties')
  724. end
  725. case 'cp'
  726. specificHeat = value1;
  727. temperature = fzero(@(temperature) Corr_Propane_SpecificHeatP(temperature)-specificHeat,[280,1080]);
  728. case 'h'
  729. enthalpy = value1;
  730. temperature = fzero(@(temperature) Corr_Propane_Enthalpy(temperature)-enthalpy,[280,1080]);
  731. case 's'
  732. entropy = value1;
  733. temperature = fzero(@(temperature) Corr_Propane_Entropy(temperature)-entropy,[280,1080]);
  734. otherwise
  735. error('Therm:corr','No correlation found for given properties')
  736. end
  737. output = temperature;
  738. otherwise
  739. error('Therm:matChk', 'Unknown material')
  740. end
  741. return