<-- Home
|--javascript
002 Coolprop小试牛刀:流体属性查询示例
Coolprop工具箱
这是一个物质属性的热力学工具箱。 本身提供了很多种高级语言的绑定,当然,JavaScript也是提供的。
这里实现了一个简单的单纯流体的一般参数查询。还没有准备更加复杂的东西。总的来说,这只是一个用官方的JavaScript绑定代码改造的Smoke Test。
HTML源程序
这个就非常简单,几个选择框,两个输入框,一个计算按钮。
1<link rel="stylesheet" href="https://code.jquery.com/ui/1.11.0/themes/smoothness/jquery-ui.css"/>
2<script src="https://code.jquery.com/jquery-1.11.0.min.js"></script>
3<script src="https://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
4<script src="https://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
5<script src="/javascript/coolprop.js"></script>
6<script src="/javascript/coolprop-first.js"></script>
7
8<div class="ui-widget">
9 <label for="FluidName">FluidName:</label>
10 <select id="FluidName"></select>
11 <button id="cp" type="button">CoolProp.org</button>
12 <button id="search" type="button">Search Bing</button>
13</div>
14<div class="ui-widget">
15 <label>Input #1:
16 <select id="Name1">
17 <option value="">Select one...</option>
18 <option value="Pressure">Pressure [Pa]</option>
19 <option value="Temperature">Temperature [K]</option>
20 <option value="Density">Density [kg/m³]</option>
21 </select>
22 <input id='Value1'/></label>
23</div>
24<div class="ui-widget">
25 <label>Input #2:
26 <select id="Name2">
27 <option value="">Select one...</option>
28 <option value="Pressure">Pressure [Pa]</option>
29 <option value="Temperature">Temperature [K]</option>
30 <option value="Density">Density [kg/m³]</option>
31 </select>
32 <input id='Value2'/></label>
33</div>
34
35<button id="calc" type="button">Calculate</button>
36
37<div class="ui-widget">
38 <label>Output:</label>
39</div>
40<div class="ui-widget">
41 <p id="output">
42</div>
JavaScript文件
计算的部分也很简单,唯一个就是CoolProp的JavaScript绑定通过WASM实现,载入需要时间。
所以,这里在document.ready
事件里面还设置了一个setTimeout
,1s之后在设置默认值,载入流体列表。
手快的小朋友也必须等等。
1
2function text2key(text) {
3 if (text == 'Pressure [Pa]')
4 return 'P';
5 else if (text == 'Temperature [K]')
6 return 'T';
7 else if (text == 'Density [kg/m³]')
8 return 'D';
9}
10
11function flush_fluid_list() {
12
13 if (Module.get_global_param_string) {
14
15 let fl = Module.get_global_param_string("FluidsList").split(",");
16
17 for (let i = 0; i < fl.length; i++) {
18 let name = fl[i];
19 $('#FluidName').append(`<option value="${name}">${name}</option>`);
20 }
21
22 return true;
23 }
24 console.log("Setup to try again 1000 ms later.")
25 setTimeout(flush_fluid_list, 1000);
26 return false;
27}
28
29
30$(function () {
31 $('#search').click(function () {
32 var name = $('#FluidName :selected').text();
33 let url = `https://cn.bing.com/search?q=${name}%2Bfluid%20properties`;
34 // open a new window
35 open(url);
36 })
37
38 $('#cp').click(function () {
39 var name = $('#FluidName :selected').text();
40 let url = `http://www.coolprop.org/fluid_properties/fluids/${name}.html`;
41 // open a new window
42 open(url);
43 })
44 // click calculation
45 //using jQuery
46 $('#calc').click(function () {
47 console.log("clicked calc");
48 var name = $('#FluidName :selected').text()
49 var key1 = text2key($('#Name1 :selected').text())
50 var key2 = text2key($('#Name2 :selected').text())
51 var val1 = parseFloat($('#Value1').val())
52 var val2 = parseFloat($('#Value2').val())
53
54 var T = Module.PropsSI('T', key1, val1, key2, val2, name)
55 var rho = Module.PropsSI('D', key1, val1, key2, val2, name)
56 var p = Module.PropsSI('P', key1, val1, key2, val2, name)
57 var s = Module.PropsSI('S', key1, val1, key2, val2, name)
58 var h = Module.PropsSI('H', key1, val1, key2, val2, name)
59 var cp = Module.PropsSI('C', key1, val1, key2, val2, name)
60
61 text = ''
62 text += 'T = ' + T + ' K\n' + '<br>'
63 text += 'rho = ' + rho + ' kg/m³ <br>'
64 text += 'p = ' + p + ' Pa<br>'
65 text += 's = ' + s + ' J/kg/K<br>'
66 text += 'h = ' + h + ' J/kg<br>'
67 text += 'cp = ' + cp + ' J/kg/K<br>'
68
69 $("#output").html(text);
70
71 });
72
73
74 setTimeout(function () {
75 let ret = flush_fluid_list();
76 if (!ret) {
77 console.log("Fail to load fluid list.");
78 }
79 // default values
80 $('#FluidName').get(0).selectedIndex = 0;
81 $('#Name1').get(0).selectedIndex = 1;
82 $('#Name2').get(0).selectedIndex = 2;
83 $('#Value1').val(1e6);
84 $('#Value2').val(300);
85 }, 1000);
86});
文章标签
|-->javascript |-->CoolProp |-->example
- 本站总访问量:次
- 本站总访客数:人
- 可通过邮件联系作者:Email大福
- 也可以访问技术博客:大福是小强
- 也可以在知乎搞抽象:知乎-大福
- Comments, requests, and/or opinions go to: Github Repository