Konstantin Ladutenko 5 years ago
parent
commit
86785d9e9f
1 changed files with 51 additions and 33 deletions
  1. 51 33
      web/index.html

+ 51 - 33
web/index.html

@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html lang="en">
+<html lang="en" xmlns="http://www.w3.org/1999/html">
 <head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
@@ -8,10 +8,20 @@
   <link rel="stylesheet" type="text/css" href="nmie.css">
   <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
 </head>
-<body onload=runMie()>
+<body>
+<div id="Usage" style="font-size: small;">
+<span style="text-decoration: underline;text-emphasis: before;">Usage:</span>
+Feel free to use provided software, however, use it at your own risk. We make our best effort to verify
+it is correct, however, we do not provide any warranty.
+  <p>
+If it was usefull for your project, please, cite in your related paper the following reference:
+<div style="font-style: italic">Mie calculation of electromagnetic near-field for a multilayered sphere</div>
+Konstantin Ladutenko, Umapada Pal, Antonio Rivera, Ovidio Peña-Rodríguez<br>
+  <span style="font-weight: bold">Comp. Phys. Comm., vol. 214, pp. 225–230, 2017</span></p>
+</div>
 WL from <input type="number" id="fromWL" step="any" value="300.0">
 to <input type="number" id="toWL" step="any" value="1000">
-step <input type="number" id="stepWL" step="any" value="0.1"><br>
+step <input type="number" id="stepWL" step="any" value="0.5"><br>
 R: <input type="number" id="R" step="any" value="100">
 Re(n): <input type="number" id="reN" step="any" value="4">
 Im(n): <input type="number" id="imN" step="any" value="0.01"><br>
@@ -22,10 +32,12 @@ Im(n): <input type="number" id="imN" step="any" value="0.01"><br>
 </div>
   <script src="nmie.js"></script>
   <script>
+    'use strict';
     const total_mode_n = 4;
-    var mode_n, mode_types;
-    var WLs, layout, trace1, trace2;
-    var Qsca, Qabs, Qsca_n, Qabs_n;
+    let mode_n, mode_types;
+    let mode_names = ['E','H'];
+    let WLs, layout, trace1, trace2;
+    let Qsca, Qabs, Qsca_n, Qabs_n;
     const range = (start, stop, step = 1) =>
             Array(Math.ceil((stop - start) / step)).fill(start).map((x, y) => x + y * step);
     if (!Array.prototype.last){
@@ -36,14 +48,15 @@ Im(n): <input type="number" id="imN" step="any" value="0.01"><br>
     // Module.addOnPostRun(() => {
     //   test.onclick =runMie()});
     function runMie() {
+        document.getElementById("Usage").style.display = 'none';
         const nmie = new Module.nmie()
-        var t0 = performance.now();
-        var fromWL = parseFloat(document.getElementById("fromWL").value);
-        var toWL = parseFloat(document.getElementById("toWL").value);
-        var stepWL = parseFloat(document.getElementById("stepWL").value);
-        var R = parseFloat(document.getElementById("R").value);
-        var reN = parseFloat(document.getElementById("reN").value);
-        var imN = parseFloat(document.getElementById("imN").value);
+        let t0 = performance.now();
+        let fromWL = parseFloat(document.getElementById("fromWL").value);
+        let toWL = parseFloat(document.getElementById("toWL").value);
+        let stepWL = parseFloat(document.getElementById("stepWL").value);
+        let R = parseFloat(document.getElementById("R").value);
+        let reN = parseFloat(document.getElementById("reN").value);
+        let imN = parseFloat(document.getElementById("imN").value);
         Qsca = [], Qabs = [];
         Qsca_n = [[],[]], Qabs_n = [[],[]];
         nmie.ClearTarget();
@@ -88,7 +101,7 @@ Im(n): <input type="number" id="imN" step="any" value="0.01"><br>
           name: 'Qabs'
         };
 
-        var data = [trace1, trace2];
+        let data = [trace1, trace2];
         layout = {
           title: {
             text:'Mie calculation',
@@ -128,11 +141,10 @@ Im(n): <input type="number" id="imN" step="any" value="0.01"><br>
           }
         };
         Plotly.newPlot('PlotQsca', data, layout, {showSendToCloud: true, displaylogo: false});
-        var t1 = performance.now();
+        let t1 = performance.now();
         document.getElementById("time").innerHTML = "It took " + ((t1 - t0)/1000).toFixed(2) + " s.";
 
-        mode_names = ['E','H'];
-        var tmp1 = " ";
+        let tmp1 = " ";
         mode_types.forEach(function(mode_type) {
           tmp1 += mode_names[mode_type]+" -> ";
           mode_n.forEach(function (n) {
@@ -143,34 +155,40 @@ Im(n): <input type="number" id="imN" step="any" value="0.01"><br>
           tmp1 += "<br>";
         });
         tmp1 +="Qabs <input type=\"checkbox\" id=\"Qabs\" checked onclick=\"replot();\">  ";
+        tmp1 +="Qsca <input type=\"checkbox\" id=\"Qsca\" checked onclick=\"replot();\">  ";
         document.getElementById("Selector").innerHTML = tmp1;
 
 
       };
 
     function replot() {
-      var checkBoxQabs = document.getElementById("Qabs");
-      var data = [trace1];
+      let checkBoxQabs = document.getElementById("Qabs");
+      let checkBoxQsca = document.getElementById("Qsca");
+      let data = [];
       if (checkBoxQabs.checked == true) data.push(trace2);
+      if (checkBoxQsca.checked == true) data.push(trace1);
       mode_types.forEach(function(mode_type) {
         mode_n.forEach(function (n) {
-          var checkBox = document.getElementById(mode_names[mode_type]+n.toString());
+          let checkBox = document.getElementById(mode_names[mode_type]+n.toString());
           if (checkBox.checked == false) return;
-          var trace_sca = {
-            x: WLs,
-            y: Qsca_n[mode_type][n-1],
-            type: 'scatter',
-            name: 'Qsca '+mode_names[mode_type]+n.toString()
+          if (checkBoxQsca.checked == true) {
+            let trace_sca = {
+              x: WLs,
+              y: Qsca_n[mode_type][n - 1],
+              type: 'scatter',
+              name: 'Qsca ' + mode_names[mode_type] + n.toString()
+            };
+            data.push(trace_sca);
           };
-          data.push(trace_sca)
-          if (checkBoxQabs.checked == false) return;
-          var trace_abs = {
-            x: WLs,
-            y: Qabs_n[mode_type][n-1],
-            type: 'scatter',
-            name: 'Qabs '+mode_names[mode_type]+n.toString()
+          if (checkBoxQabs.checked == true) {
+            let trace_abs = {
+              x: WLs,
+              y: Qabs_n[mode_type][n - 1],
+              type: 'scatter',
+              name: 'Qabs ' + mode_names[mode_type] + n.toString()
+            };
+            data.push(trace_abs);
           };
-          data.push(trace_abs)
         });
       });
       Plotly.react('PlotQsca', data, layout, {showSendToCloud: true, displaylogo: false});