File size: 17,798 Bytes
584e26b
 
 
 
 
a84c9db
 
 
 
 
 
584e26b
 
827f911
 
 
 
 
 
 
584e26b
 
570b086
 
968b50d
584e26b
 
827f911
 
 
bdd9f35
827f911
bdd9f35
 
 
 
 
 
 
 
0991556
bdd9f35
 
 
 
 
827f911
 
 
 
 
bdd9f35
0991556
bdd9f35
0991556
 
 
bdd9f35
0991556
bdd9f35
827f911
 
 
bdd9f35
 
584e26b
 
bdd9f35
 
584e26b
827f911
 
 
bdd9f35
827f911
72513b3
bdd9f35
 
 
827f911
 
72513b3
bdd9f35
 
 
827f911
 
72513b3
bdd9f35
 
 
827f911
 
72513b3
bdd9f35
 
 
827f911
 
72513b3
bdd9f35
 
 
827f911
 
72513b3
bdd9f35
 
 
827f911
 
72513b3
bdd9f35
 
 
827f911
 
72513b3
bdd9f35
 
 
827f911
0991556
72513b3
bdd9f35
 
 
 
 
 
 
 
 
 
 
72513b3
bdd9f35
 
 
 
 
 
 
 
 
0991556
827f911
 
 
bdd9f35
 
 
72513b3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1ff7fe8
 
 
 
72513b3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d0b5081
72513b3
9c2acf6
6eee5f4
 
d0b5081
57355c1
6eee5f4
 
 
 
 
 
 
 
 
 
 
 
 
 
72513b3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bdd9f35
584e26b
570b086
a84c9db
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>CHRIS</title>
  <!-- <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> -->
  <!-- <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> -->
  <!-- <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> -->
  <script src="{{ url_for('static',filename='jquery.slim.min.js') }}" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
  <script src="{{ url_for('static',filename='popper.min.js') }}" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script>
  <script src="{{ url_for('static',filename='bootstrap.min.js') }}" integrity="sha384-VHvPCCyXqtD5DqJeNxl2dtTyhF78xXNXdkwX1CZeRusQfRKp+tA7hAShOK/B/fQ2" crossorigin="anonymous"></script>
  <link rel= "stylesheet" type= "text/css" href= "{{ url_for('static',filename='styles.css') }}">

  <style>
table, th, td {
  border: 1px solid black;
  border-collapse: collapse;
}
</style>

</head>

{% extends "base.html" %}
{% block content %}

</header>

<script>
      function addColumn(){

        var i = document.getElementById('theTable').rows[0].cells.length-1;

        $("#theTable tr:eq( 0 )").append("<td> <input type='number' step='any' value='1.0' min='0.00001' required name='mass" + i + "'> </td>");
        $("#theTable tr:eq( 1 )").append("<td> <input type='number' step='any' value='1.0' min='0.00001' required name='density" + i + "'> </td>");
        $("#theTable tr:eq( 2 )").append("<td> <input type='number' step='any' value='6.0' min='0.00001' required name='area" + i + "'> </td>");
        $("#theTable tr:eq( 3 )").append("<td> <input type='number' step='any' value='1.0' min='0.00001' required name='svol" + i + "'> </td>");
        $("#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>");
        $("#theTable tr:eq( 5 )").append("<td> <input type='number' step='any' value='24.0' min='0.00001' required name='time" + i + "'> </td>");
        $("#theTable tr:eq( 6 )").append("<td> <input type='number' step='any' value='1e-08' min='1e-20' required name='D" + i + "'> </td>");
        $("#theTable tr:eq( 7 )").append("<td> <input type='number' step='any' value='1.0' min='0.00001' required name='K" + i + "'> </td>");
        $("#theTable tr:eq( 8 )").append("<td> <input readonly id='release'" + i + "> </td>");
        $("#theTable tr:eq( 9 )").append("<td> <input readonly id='conc'" + i + "> </td>");

        //alert(i)

        document.getElementById("sysnum").value = i+1

      };

      function removeColumn(){

        var i = document.getElementById('theTable').rows[0].cells.length-1;

        if (i == 1){
          alert("At least one entry is required");
        } else {
          $('#theTable tr').find('td:last').remove();
          document.getElementById("sysnum").value = i-1
        }
      }

</script>



<body>


<form method="POST" id="theForm" align="center">

  <input type = "button" onclick = "javascript:addColumn()" value = "Add column" />
  <input type = "button" onclick = "javascript:removeColumn()" value = "Remove column" />

  <table id="theTable" align="center">
  <tr>
    <th> Test article mass (g) <button type=button class="Info_btn" data-toggle="modal" data-target="#MassModal">&#9432;</button> </th>
    {% for i in range(sysnum) %}
    <td> <input name="mass{{i}}" id="mass{{i}}" step="any" value="{{mass[i]}}" min="0.000001" type="number" required> </td>
    {% endfor %}
  </tr>
  <tr>
    <th> Test article density (g/cm<sup>3</sup>) <button type=button class="Info_btn" data-toggle="modal" data-target="#DensityModal">&#9432;</button> </th>
    {% for i in range(sysnum) %}
    <td> <input name="density{{i}}" id="density{{i}}" step="any" value="{{density[i]}}" min="0.01" type="number" required> </td>
    {% endfor %}
  </tr>
  <tr>
    <th> Test article surface area (cm<sup>2</sup>) <button type=button class="Info_btn" data-toggle="modal" data-target="#SurfaceModal">&#9432;</button> </th>
    {% for i in range(sysnum) %}
    <td> <input name="area{{i}}" id="area{{i}}" step="any" value="{{area[i]}}" min="0.001" type="number" required> </td>
    {% endfor %}
  </tr>
  <tr>
    <th> Solvent volume (ml) <button type=button class="Info_btn" data-toggle="modal" data-target="#SolventModal">&#9432;</button> </th>
    {% for i in range(sysnum) %}
    <td> <input name="svol{{i}}" id="svol{{i}}" step="any" value="{{svol[i]}}" min="0.000001" type="number" required> </td>
    {% endfor %}
  </tr>
  <tr>
    <th> # of iterations <button type=button class="Info_btn" data-toggle="modal" data-target="#IterationModal">&#9432;</button> </th>
    {% for i in range(sysnum) %}
    <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>
    {% endfor %}
  </tr>
  <tr>
    <th> Time per iteration (h) <button type=button class="Info_btn" data-toggle="modal" data-target="#TimeModal">&#9432;</button> </th>
    {% for i in range(sysnum) %}
    <td> <input name="time{{i}}" id="time{{i}}" step="any" value="{{time[i]}}" min="0.001" type="number" required> </td>
    {% endfor %}
  </tr>
  <tr>
    <th> Diffusion coefficient (cm<sup>2</sup>/s) <button type=button class="Info_btn" data-toggle="modal" data-target="#DiffusionModal">&#9432;</button> </th>
    {% for i in range(sysnum) %}
    <td> <input name="D{{i}}" id="D{{i}}" step="any" value="{{D[i]}}" min="1e-20" type="number" required> </td>
    {% endfor %}
  </tr>
  <tr>
    <th> Partition coefficient <button type=button class="Info_btn" data-toggle="modal" data-target="#PartitionModal">&#9432;</button> </th>
    {% for i in range(sysnum) %}
    <td> <input name="K{{i}}" id="K{{i}}" step="any" value="{{K[i]}}" min="1e-6" type="number" required> </td>
    {% endfor %}
  </tr>
  <tr>
    <th> M/M<sub>0</sub> <button type=button class="Info_btn" data-toggle="modal" data-target="#ReleaseModal">&#9432;</button> </th>
    {% if release[0] == 0 %}
    {% for i in range(sysnum) %}
    <td> <input name="release{{i}}" id="release{{i}}" readonly> </td>
    {% endfor %}
    {% else %}
    {% for i in range(sysnum) %}
    <td> <input name="release{{i}}" id="release{{i}}" value="{{'%0.4f'%release[i]|float}}" readonly> </td>
    {% endfor %}
    {% endif %}
  </tr>
  <tr>
    <th> C/C<sub>0</sub> <button type=button class="Info_btn" data-toggle="modal" data-target="#ConcModal">&#9432;</button> </th>
    {% if conc[0] == 0 %}
    {% for i in range(sysnum) %}
    <td> <input name="conc{{i}}" id="conc{{i}}" readonly> </td>
    {% endfor %}
    {% else %}
    {% for i in range(sysnum) %}
    <td> <input name="conc{{i}}" id="conc{{i}}" value="{{'%0.4f'%conc[i]|float}}" readonly> </td>
    {% endfor %}
    {% endif %}
  </tr>
  </table>

  <br> <button type="submit">Calculate</button>

  <input name="sysnum" id="sysnum" step="any" value={{sysnum}}  type="number" required style="display: none;">

  </form>

  <!-- Modals -->
  <div id="MassModal" class="modal fade" role="dialog">
    <div class="modal-dialog">

      <!-- Modal content-->
      <div class="modal-content">
        <div class="modal-header">
          <h4 class="modal-title">Extraction efficiency</h4>
        </div>
        <div class="modal-body">
          <p><em>Test article mass (g)</em> - Please enter the total mass of the test article being evaluated expressed in grams.</p>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        </div>
      </div>

    </div>
  </div>

  <div id="DensityModal" class="modal fade" role="dialog">
    <div class="modal-dialog">

      <!-- Modal content-->
      <div class="modal-content">
        <div class="modal-header">
          <h4 class="modal-title">Extraction efficiency</h4>
        </div>
        <div class="modal-body">
          <p><em>Test article density (g/cm<sup>3</sup>)</em> - Please enter the (approximate) density of the test article
            in grams per cubic centimeter.</p>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        </div>
      </div>

    </div>
  </div>

 <div id="SurfaceModal" class="modal fade" role="dialog">
    <div class="modal-dialog">

      <!-- Modal content-->
      <div class="modal-content">
        <div class="modal-header">
          <h4 class="modal-title">Extraction efficiency</h4>
        </div>
        <div class="modal-body">
          <p><em>Test article surface area (cm<sup>2</sup>)</em> - Please enter the surface area of the test article
            in square centimeters.</p>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        </div>
      </div>

    </div>
  </div>

<div id="SolventModal" class="modal fade" role="dialog">
    <div class="modal-dialog">

      <!-- Modal content-->
      <div class="modal-content">
        <div class="modal-header">
          <h4 class="modal-title">Extraction efficiency</h4>
        </div>
        <div class="modal-body">
          <p><em>Solvent volume (ml)</em> - Please enter the volume of solvent used for each extraction iteration in milliliters.</p>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        </div>
      </div>

    </div>
  </div>

<div id="IterationModal" class="modal fade" role="dialog">
    <div class="modal-dialog">

      <!-- Modal content-->
      <div class="modal-content">
        <div class="modal-header">
          <h4 class="modal-title">Extraction efficiency</h4>
        </div>
        <div class="modal-body">
          <p><em># of iterations</em> - Please enter the number of iterations used in the extraction study. </p>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        </div>
      </div>

    </div>
  </div>

<div id="TimeModal" class="modal fade" role="dialog">
    <div class="modal-dialog">

      <!-- Modal content-->
      <div class="modal-content">
        <div class="modal-header">
          <h4 class="modal-title">Extraction efficiency</h4>
        </div>
        <div class="modal-body">
          <p><em>Time per iteration (h)</em> - Please enter the extraction time for each iteration in hours. </p>

          <p><em>Note:</em> The extraction efficiency module makes the default assumption that all extraction iterations are equivalent
          in duration.  However, if this is not the case, the module can still be used, although the input must be modified.  Because of
          approximate scaling relationships, a single step extraction will be equivalent to an iterative extraction provided the
            the total solvent used and total time duration are also equivalent.  For example, a three step iterative extraction using 10 ml
            for each iteration with time
            points of 24, 72, and 168 hours can be modeled using a single step extraction (# of iterations = 1) with 30 ml of solvent
            (3 x 10 ml) for 168 hours.  This same approach can be used if the solvent volumes are different for each extraction
            iteration, however unlikely this scenario may be.</p>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        </div>
      </div>

    </div>
  </div>

<div id="DiffusionModal" class="modal fade" role="dialog">
    <div class="modal-dialog">

      <!-- Modal content-->
      <div class="modal-content">
        <div class="modal-header">
          <h4 class="modal-title">Extraction efficiency</h4>
        </div>
        <div class="modal-body">
          <p><em>Diffusion coefficient (cm<sup>2</sup>/s)</em> - Please enter a diffusion coefficient in square centimeters per
            second. </p>

          <p><em>Note:</em> The diffusion coefficient (D) is a material property that reflects the rate at which a compound
          can migrate through the matrix - formally it is a proportionality constant relating concentration gradient to flux.
          The value of D can vary dramatically depending on the polymer matrix and extractable compound, and even extraction solvent,
            for systems that exhibit significant swelling.  If you are interested in comparing the extraction efficiency for a specific
          compound, we recommend estimating D for the system of interest based on available data.  For comparing experimental conditions
          for extractable compounds in general, we recommend probing an appropriate range of D for the systems of interest.  For example,
          compounds in the Mw range of 200 to 1200 g/mol extracted from HDPE have been found to lie in the range of 1e-9 to 1e-13 cm2/s for IPA
          and 1e-7 to 1e-9 cm2/s in hexane [1].</p>

          <p>[1] P. Turner, et al., Toxicological Sciences 178 (1) (2020) 201–211.</p>

        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        </div>
      </div>

    </div>
  </div>

<div id="PartitionModal" class="modal fade" role="dialog">
    <div class="modal-dialog">

      <!-- Modal content-->
      <div class="modal-content">
        <div class="modal-header">
          <h4 class="modal-title">Extraction efficiency</h4>
        </div>
        <div class="modal-body">
          <p><em>Partition coefficient</em> - Please enter a partition coefficient of interest for your system.</p>

          <p><em>Note:</em> The partition coefficient (K) is a material property that reflects the ratio of the
            concentrations of extractable compound in the polymer matrix and extraction solvent in equilibrium.  As such, the value of K can vary
          dramatically depending on the extraction materials.  If you are interested in comparing the extraction efficiency for a specific
          compound, we recommend estimating K for the system of interest based on available data.  A number of empirical approaches
          have been developed for this purpose, e.g. [1,2].  However, these approaches do not necessarily capture the potential impact
          of temperature and matrix swelling, which can both dramatically impact this quantity [3-5].  For comparing experimental conditions
          for extractable compounds in general, we recommend probing an appropriate range of K for the systems of interest.  We note
          that the range of interest will be restricted because large values of K will not permit substantive quantities of a compound to
          be extracted over relevant timeframes and for systems with small values of K extraction efficiency will be dictated solely
          by kinetic limitations.  </p>

          <p>[1] M. H. Abraham, et al., Journal of Chromatography A 1037 (1-2) (2004) 29–47. <br>
          [2] D. R. Jenke, B. E. Rabinow, PDA Journal of Pharmaceutical Science and Technology 71 (3) (2017) 225–233. <br>
          [3] T. P. Gandek, et al., Industrial & Engineering Chemistry Research 28 (7) (1989) 1036–1045. <br>
          [4] A. Hauk, et al., European Journal of Pharmaceutical Sciences 163 (2021) 105841. <br>
          [5] P. Turner, et al., Toxicological Sciences 178 (1) (2020) 201–211.
          </p>


        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        </div>
      </div>

    </div>
  </div>

<div id="ReleaseModal" class="modal fade" role="dialog">
    <div class="modal-dialog">

      <!-- Modal content-->
      <div class="modal-content">
        <div class="modal-header">
          <h4 class="modal-title">Extraction efficiency</h4>
        </div>
        <div class="modal-body">
          <p><em>M / M<sub>0</sub> </em> - Predicted extraction efficiency expressed as a ratio of total mass released over the
          initial mass (total pool) in the polymer matrix </p>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        </div>
      </div>

    </div>
  </div>

<div id="ConcModal" class="modal fade" role="dialog">
    <div class="modal-dialog">

      <!-- Modal content-->
      <div class="modal-content">
        <div class="modal-header">
          <h4 class="modal-title">Extraction efficiency</h4>
        </div>
        <div class="modal-body">
          <p><em>C / C<sub>0</sub> </em> - Predicted relative solvent concentration expressed as a ratio of extraction solvent concentration
            and the initial concentration of the extractable compound in the polymer matrix </p>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        </div>
      </div>

    </div>
  </div>

</body>
{% endblock %}
</html>