dmsaylor commited on
Commit
cc02f6d
·
1 Parent(s): e72681d

added normalized concentration

Browse files
efficiency_module/efficiency.py CHANGED
@@ -1,48 +1,54 @@
1
  import numpy as np
2
  from flask import render_template, request, session
3
  from . import blueprint
 
4
  from functions import PlaneSheetAnalytical
5
 
6
  # load the index page for the exposure module
7
- @blueprint.route('/efficiency', methods=['GET', 'POST'])
8
  def efficiency():
9
- if request.method == "GET":
10
- return render_template('efficiency_index.html')
11
- else:
12
- return 0
 
 
 
 
 
 
 
13
 
 
 
 
 
 
 
 
 
 
 
 
 
14
 
15
- # build the report page for the exposure module
16
- # @blueprint.route('/efficiency', methods=['POST'])
17
- # def eff_post():
18
- #
19
- # mass = float(request.form["mass"])
20
- # density = float(request.form["density"])
21
- # PolymerVolume = mass / density
22
- # SurfaceArea = float(request.form["area"])
23
- #
24
- # SolventVolume = float(request.form["svol"])
25
- # ExtractionTime = float(request.form["time"])*3600.
26
- # iterations = int(request.form["iterations"])
27
- #
28
- # ExtractionTime = ExtractionTime * iterations
29
- # SolventVolume = SolventVolume * iterations
30
- #
31
- # #D = float(request.form["DiffCoeff"])
32
- # #K = float(request.form["PartCoeff"])
33
- #
34
- # L = PolymerVolume / SurfaceArea
35
- #
36
- # nterms = 5
37
- # M0 = 1.
38
- # K = np.array((1e-3, 1., 1e3))
39
- # D = np.array((1e-7, 1e-10, 1e-13))
40
- # ExtEff = np.zeros((3,3))
41
- # for i in range(3):
42
- # for j in range(3):
43
- # ExtEff[i,j] = PlaneSheetAnalytical(M0, D[i], K[j], PolymerVolume, SurfaceArea, SolventVolume, ExtractionTime, nterms)
44
- #
45
- # Conc = ExtEff * PolymerVolume / SolventVolume
46
- #
47
- # return render_template('efficiency_report.html', ExtEff = ExtEff, Conc=Conc)
48
 
 
 
 
 
 
 
 
 
 
 
 
1
  import numpy as np
2
  from flask import render_template, request, session
3
  from . import blueprint
4
+ from numpy import *
5
  from functions import PlaneSheetAnalytical
6
 
7
  # load the index page for the exposure module
8
+ @blueprint.route('/efficiency', methods=['GET','POST'])
9
  def efficiency():
10
+ sysnum = 2
11
+ mass = ones((sysnum))*1.0
12
+ density = ones((sysnum))*1.0
13
+ area = ones((sysnum)) * 6.0
14
+ svol = ones((sysnum)) * 1.0
15
+ iterations = ones((sysnum)).astype('int')
16
+ time = ones((sysnum)) * 24.0
17
+ D = ones((sysnum)) * 1e-08
18
+ K = ones((sysnum)) * 1.0
19
+ release = zeros((sysnum))
20
+ conc = zeros((sysnum))
21
 
22
+ if request.method == 'POST':
23
+ sysnum = int(request.form["sysnum"])
24
+ mass = ones((sysnum))
25
+ density = ones((sysnum))
26
+ area = ones((sysnum))
27
+ svol = ones((sysnum))
28
+ iterations = ones((sysnum)).astype('int')
29
+ time = ones((sysnum))
30
+ D = ones((sysnum))
31
+ K = ones((sysnum))
32
+ release = ones((sysnum))
33
+ conc = ones((sysnum))
34
 
35
+ for i in range(sysnum):
36
+ mass[i] = float(request.form["mass"+str(i)])
37
+ density[i] = float(request.form["density" + str(i)])
38
+ area[i] = float(request.form["area" + str(i)])
39
+ svol[i] = float(request.form["svol" + str(i)])
40
+ iterations[i] = int(request.form["iterations" + str(i)])
41
+ time[i] = float(request.form["time" + str(i)])
42
+ D[i] = float(request.form["D" + str(i)])
43
+ K[i] = float(request.form["K" + str(i)])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
 
45
+ PolymerVolume = mass[i] / density[i]
46
+ ExtractionTime = time[i] * 3600. * iterations[i]
47
+ SolventVolume = svol[i] * iterations[i]
48
+ nterms = 5
49
+ M0 = 1.
50
+ release[i] = PlaneSheetAnalytical(M0, D[i], K[i], PolymerVolume, area[i], SolventVolume, ExtractionTime, nterms)
51
+ conc[i] = release[i] * PolymerVolume / SolventVolume
52
+
53
+ return render_template('efficiency_index.html', sysnum=sysnum, mass=mass, density=density, area=area, svol=svol, iterations=iterations,
54
+ time=time, D=D, K=K, release=release, conc=conc)
efficiency_module/templates/efficiency_index.html CHANGED
@@ -3,7 +3,7 @@
3
  <head>
4
  <meta charset="UTF-8">
5
  <title>CHRIS</title>
6
- <script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
7
  <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script>
8
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.min.js" integrity="sha384-VHvPCCyXqtD5DqJeNxl2dtTyhF78xXNXdkwX1CZeRusQfRKp+tA7hAShOK/B/fQ2" crossorigin="anonymous"></script>
9
  <link rel= "stylesheet" type= "text/css" href= "{{ url_for('static',filename='styles.css') }}">
@@ -29,88 +29,129 @@ table, th, td {
29
  <script>
30
  function addColumn(){
31
 
32
- var i = document.getElementById('theTable').rows[0].cells.length;
33
 
34
- $("#theTable tr:eq( 0 )").append("<td> <input type='number' step='any' value='1.0' min='0.00001' required id='mass'" + i + "> </td>");
35
- $("#theTable tr:eq( 1 )").append("<td> <input type='number' step='any' value='1.0' min='0.00001' required id='density'" + i + "> </td>");
36
- $("#theTable tr:eq( 2 )").append("<td> <input type='number' step='any' value='6.0' min='0.00001' required id='area'" + i + "> </td>");
37
- $("#theTable tr:eq( 3 )").append("<td> <input type='number' step='any' value='1.0' min='0.00001' required id='svol'" + i + "> </td>");
38
- $("#theTable tr:eq( 4 )").append("<td> <input type='number' step='1' value='1' min='1' onchange='this.value = parseInt(this.value);' required id='iterations'" + i + "> </td>");
39
- $("#theTable tr:eq( 5 )").append("<td> <input type='number' step='any' value='1.0' min='0.00001' required id='time'" + i + "> </td>");
40
- $("#theTable tr:eq( 6 )").append("<td> <input type='number' step='any' value='1e-8' min='1e-20' required id='D'" + i + "> </td>");
41
- $("#theTable tr:eq( 7 )").append("<td> <input type='number' step='any' value='1.0' min='0.00001' required id='K'" + i + "> </td>");
42
  $("#theTable tr:eq( 8 )").append("<td> <input readonly id='release'" + i + "> </td>");
 
 
 
 
 
43
 
44
  };
45
 
46
  function removeColumn(){
47
 
48
- var i = document.getElementById('theTable').rows[0].cells.length;
49
 
50
- if (i == 2){
51
  alert("At least one entry is required");
52
  } else {
53
  $('#theTable tr').find('td:last').remove();
 
54
  }
 
55
 
56
- };
57
  </script>
58
 
 
 
59
  <body>
60
 
61
- <form method="POST">
 
62
 
63
  <input type = "button" onclick = "javascript:addColumn()" value = "Add column" />
64
  <input type = "button" onclick = "javascript:removeColumn()" value = "Remove column" />
65
 
66
- <table id="theTable">
67
  <tr>
68
  <th> Test article mass (g)</th>
69
- <td> <input name="mass1" id="mass1" step="any" value="1.0" min="0.000001" type="number" required> </td>
70
- <td> <input name="mass2" id="mass2" step="any" value="1.0" min="0.000001" type="number" required> </td>
 
71
  </tr>
72
  <tr>
73
  <th> Test article density (g/cm<sup>3</sup>) </th>
74
- <td> <input name="density1" id="density1" step="any" value="1.0" min="0.01" type="number" required> </td>
75
- <td> <input name="density2" id="density2" step="any" value="1.0" min="0.01" type="number" required> </td>
 
76
  </tr>
77
  <tr>
78
  <th> Test article surface area (cm<sup>2</sup>) </th>
79
- <td> <input name="area1" id="area1" step="any" value="6.0" min="0.001" type="number" required> </td>
80
- <td> <input name="area2" id="area2" step="any" value="6.0" min="0.001" type="number" required> </td>
 
81
  </tr>
82
  <tr>
83
  <th> Solvent volume (ml) </th>
84
- <td> <input name="svol1" id="svol1" step="any" value="1.0" min="0.000001" type="number" required> </td>
85
- <td> <input name="svol2" id="svol2" step="any" value="1.0" min="0.000001" type="number" required> </td>
 
86
  </tr>
87
  <tr>
88
  <th> # of iterations </th>
89
- <td> <input name="iterations1" id="iterations1" value="1" min="1" type="number" step="1" onchange="this.value = parseInt(this.value);" required> </td>
90
- <td> <input name="iterations2" id="iterations2" value="1" min="1" type="number" step="1" onchange="this.value = parseInt(this.value);" required> </td>
 
91
  </tr>
92
  <tr>
93
  <th> time per iteration (h) </th>
94
- <td> <input name="time1" id="time1" step="any" value="24.0" min="0.001" type="number" required> </td>
95
- <td> <input name="time2" id="time2" step="any" value="24.0" min="0.001" type="number" required> </td>
 
96
  </tr>
97
  <tr>
98
  <th> Diffusion coefficient (cm<sup>2</sup>/s) </th>
99
- <td> <input name="D1" id="D1" step="any" value="1e-8" min="1e-20" type="number" required> </td>
100
- <td> <input name="D2" id="D2" step="any" value="1e-8" min="1e-20" type="number" required> </td>
 
101
  </tr>
102
  <tr>
103
  <th> Partition coefficient </th>
104
- <td> <input name="K1" id="K1" step="any" value="1" min="1e-3" type="number" required> </td>
105
- <td> <input name="K2" id="K2" step="any" value="1" min="1e-3" type="number" required> </td>
 
106
  </tr>
107
  <tr>
108
  <th> M/M0 </th>
109
- <td> <input name="release1" id="release1" readonly> </td>
110
- <td> <input name="release2" id="release2" readonly> </td>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
  </tr>
112
  </table>
113
 
114
  <br> <button type="submit">Calculate</button>
 
 
 
 
 
115
  </body>
116
  </html>
 
3
  <head>
4
  <meta charset="UTF-8">
5
  <title>CHRIS</title>
6
+ <script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.min.js" ></script>
7
  <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script>
8
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.min.js" integrity="sha384-VHvPCCyXqtD5DqJeNxl2dtTyhF78xXNXdkwX1CZeRusQfRKp+tA7hAShOK/B/fQ2" crossorigin="anonymous"></script>
9
  <link rel= "stylesheet" type= "text/css" href= "{{ url_for('static',filename='styles.css') }}">
 
29
  <script>
30
  function addColumn(){
31
 
32
+ var i = document.getElementById('theTable').rows[0].cells.length-1;
33
 
34
+ $("#theTable tr:eq( 0 )").append("<td> <input type='number' step='any' value='1.0' min='0.00001' required name='mass" + i + "'> </td>");
35
+ $("#theTable tr:eq( 1 )").append("<td> <input type='number' step='any' value='1.0' min='0.00001' required name='density" + i + "'> </td>");
36
+ $("#theTable tr:eq( 2 )").append("<td> <input type='number' step='any' value='6.0' min='0.00001' required name='area" + i + "'> </td>");
37
+ $("#theTable tr:eq( 3 )").append("<td> <input type='number' step='any' value='1.0' min='0.00001' required name='svol" + i + "'> </td>");
38
+ $("#theTable tr:eq( 4 )").append("<td> <input type='number' step='1' value='1' min='1' onchange='this.value = parseInt(this.value);' required name='iterations" + i + "'> </td>");
39
+ $("#theTable tr:eq( 5 )").append("<td> <input type='number' step='any' value='24.0' min='0.00001' required name='time" + i + "'> </td>");
40
+ $("#theTable tr:eq( 6 )").append("<td> <input type='number' step='any' value='1e-08' min='1e-20' required name='D" + i + "'> </td>");
41
+ $("#theTable tr:eq( 7 )").append("<td> <input type='number' step='any' value='1.0' min='0.00001' required name='K" + i + "'> </td>");
42
  $("#theTable tr:eq( 8 )").append("<td> <input readonly id='release'" + i + "> </td>");
43
+ $("#theTable tr:eq( 9 )").append("<td> <input readonly id='conc'" + i + "> </td>");
44
+
45
+ //alert(i)
46
+
47
+ document.getElementById("sysnum").value = i+1
48
 
49
  };
50
 
51
  function removeColumn(){
52
 
53
+ var i = document.getElementById('theTable').rows[0].cells.length-1;
54
 
55
+ if (i == 1){
56
  alert("At least one entry is required");
57
  } else {
58
  $('#theTable tr').find('td:last').remove();
59
+ document.getElementById("sysnum").value = i-1
60
  }
61
+ }
62
 
 
63
  </script>
64
 
65
+
66
+
67
  <body>
68
 
69
+
70
+ <form method="POST" id="theForm" align="center">
71
 
72
  <input type = "button" onclick = "javascript:addColumn()" value = "Add column" />
73
  <input type = "button" onclick = "javascript:removeColumn()" value = "Remove column" />
74
 
75
+ <table id="theTable" align="center">
76
  <tr>
77
  <th> Test article mass (g)</th>
78
+ {% for i in range(sysnum) %}
79
+ <td> <input name="mass{{i}}" id="mass{{i}}" step="any" value="{{mass[i]}}" min="0.000001" type="number" required> </td>
80
+ {% endfor %}
81
  </tr>
82
  <tr>
83
  <th> Test article density (g/cm<sup>3</sup>) </th>
84
+ {% for i in range(sysnum) %}
85
+ <td> <input name="density{{i}}" id="density{{i}}" step="any" value="{{density[i]}}" min="0.01" type="number" required> </td>
86
+ {% endfor %}
87
  </tr>
88
  <tr>
89
  <th> Test article surface area (cm<sup>2</sup>) </th>
90
+ {% for i in range(sysnum) %}
91
+ <td> <input name="area{{i}}" id="area{{i}}" step="any" value="{{area[i]}}" min="0.001" type="number" required> </td>
92
+ {% endfor %}
93
  </tr>
94
  <tr>
95
  <th> Solvent volume (ml) </th>
96
+ {% for i in range(sysnum) %}
97
+ <td> <input name="svol{{i}}" id="svol{{i}}" step="any" value="{{svol[i]}}" min="0.000001" type="number" required> </td>
98
+ {% endfor %}
99
  </tr>
100
  <tr>
101
  <th> # of iterations </th>
102
+ {% for i in range(sysnum) %}
103
+ <td> <input name="iterations{{i}}" id="iterations{{i}}" value="{{iterations[i]}}" min="1" type="number" step="1" onchange="this.value = parseInt(this.value);" required> </td>
104
+ {% endfor %}
105
  </tr>
106
  <tr>
107
  <th> time per iteration (h) </th>
108
+ {% for i in range(sysnum) %}
109
+ <td> <input name="time{{i}}" id="time{{i}}" step="any" value="{{time[i]}}" min="0.001" type="number" required> </td>
110
+ {% endfor %}
111
  </tr>
112
  <tr>
113
  <th> Diffusion coefficient (cm<sup>2</sup>/s) </th>
114
+ {% for i in range(sysnum) %}
115
+ <td> <input name="D{{i}}" id="D{{i}}" step="any" value="{{D[i]}}" min="1e-20" type="number" required> </td>
116
+ {% endfor %}
117
  </tr>
118
  <tr>
119
  <th> Partition coefficient </th>
120
+ {% for i in range(sysnum) %}
121
+ <td> <input name="K{{i}}" id="K{{i}}" step="any" value="{{K[i]}}" min="1e-6" type="number" required> </td>
122
+ {% endfor %}
123
  </tr>
124
  <tr>
125
  <th> M/M0 </th>
126
+ {% if release[0] == 0 %}
127
+ {% for i in range(sysnum) %}
128
+ <td> <input name="release{{i}}" id="release{{i}}" readonly> </td>
129
+ {% endfor %}
130
+ {% else %}
131
+ {% for i in range(sysnum) %}
132
+ <td> <input name="release{{i}}" id="release{{i}}" value="{{'%0.4f'%release[i]|float}}" readonly> </td>
133
+ {% endfor %}
134
+ {% endif %}
135
+ </tr>
136
+ <tr>
137
+ <th> C/C0 </th>
138
+ {% if conc[0] == 0 %}
139
+ {% for i in range(sysnum) %}
140
+ <td> <input name="conc{{i}}" id="conc{{i}}" readonly> </td>
141
+ {% endfor %}
142
+ {% else %}
143
+ {% for i in range(sysnum) %}
144
+ <td> <input name="conc{{i}}" id="conc{{i}}" value="{{'%0.4f'%conc[i]|float}}" readonly> </td>
145
+ {% endfor %}
146
+ {% endif %}
147
  </tr>
148
  </table>
149
 
150
  <br> <button type="submit">Calculate</button>
151
+
152
+ <input name="sysnum" id="sysnum" step="any" value={{sysnum}} type="number" required style="display: none;">
153
+
154
+ </form>
155
+
156
  </body>
157
  </html>