| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 | <!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <meta name="viewport" content="width=device-width, initial-scale=1.0">  <meta http-equiv="X-UA-Compatible" content="ie=edge">  <title>Scattnlay web</title>  <script src="https://cdn.plot.ly/plotly-latest.min.js"></script></head><body>WL from <input type="number" id="fromWL" step="any" value="400.0">to <input type="number" id="toWL" step="any" value="800">step <input type="number" id="stepWL" step="any" value="0.1"><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"><br><button id="Evaluate">Run Mie!</button> <div id="time"></div><div id="PlotQsca" style="width:640px;height:580px;" ></div>  <script src="/nmie.js"></script>  <script>    const range = (start, stop, step = 1) =>            Array(Math.ceil((stop - start) / step)).fill(start).map((x, y) => x + y * step)    Module.addOnPostRun(() => {      const nmie = new Module.nmie()      Evaluate.onclick = () => {        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);        nmie.ClearTarget();        nmie.AddTargetLayerReIm(R, reN, imN)        var WLs = range(fromWL,toWL,stepWL)        var Qsca = [], Qabs = [];        WLs.forEach(function(WL) {          nmie.SetWavelength(WL);          nmie.RunMieCalculation();          Qsca.push(nmie.GetQsca());          Qabs.push(nmie.GetQabs());        });        console.log('Qsca = ', Qsca);        var trace1 = {          x: WLs,          y: Qsca,          type: 'scatter',          name: 'Qsca'        };        var trace2 = {          x: WLs,          y: Qabs,          type: 'scatter',          name: 'Qabs'        };        var data = [trace1, trace2];        var layout = {          title: {            text:'Mie calculation',            // font: {            //   family: 'Courier New, monospace',            //   size: 24            // },            xref: 'paper',            x: 0.05,          },          xaxis: {            title: {              text: 'Wavelength',              // font: {              //   family: 'Courier New, monospace',              //   size: 18,              //   color: '#7f7f7f'              // }            },          },          yaxis: {            title: {              text: 'Q',              // font: {              //   family: 'Courier New, monospace',              //   size: 18,              //   color: '#7f7f7f'              // }            }          }        };        Plotly.newPlot('PlotQsca', data, layout, {showSendToCloud: true});        var t1 = performance.now();        document.getElementById("time").innerHTML = "It took " + ((t1 - t0)/1000).toFixed(2) + " seconds.";      };    })  </script></body></html>
 |