Konstantin Ladutenko 5 years ago
parent
commit
785641ad5d
4 changed files with 96 additions and 4 deletions
  1. 27 1
      Makefile
  2. 29 1
      web/index.html
  3. 10 2
      web/v2/index.html
  4. 30 0
      web/v2/script.js

+ 27 - 1
Makefile

@@ -55,7 +55,33 @@ fieldnlay-mp: $(SRCDIR)/nearfield.cc $(SRCDIR)/nmie.cc $(CXX_NMIE_HEADERS)
 	$(CXX) -DNDEBUG -DMULTI_PRECISION=$(MULTIPREC) -O2 -Wall -std=c++11 $(SRCDIR)/nearfield.cc $(SRCDIR)/nmie.cc  -lm -o fieldnlay-mp $(CXXFLAGS) $(LDFLAGS)
 
 wasm: $(SRCDIR)/nmie-js-wrapper.cc $(CXX_NMIE_HEADERS)
-	emcc --bind -lm -Wall -O2 -std=c++11 -s WASM=1 -s NO_EXIT_RUNTIME=1 -s "EXTRA_EXPORTED_RUNTIME_METHODS=['addOnPostRun']" -o nmie.js $(SRCDIR)/nmie-js-wrapper.cc
+#    emcc -lm -Wall -O2 -std=c++11 --bind -s ENVIRONMENT="web" -s MODULARIZE=1 -s SINGLE_FILE=1 -s WASM=1 -o nmie.js $(SRCDIR)/nmie-js-wrapper.cc
+# 	emcc --bind -lm -Wall -O2 -std=c++11 -s WASM=1 -s NO_EXIT_RUNTIME=1 -s "EXTRA_EXPORTED_RUNTIME_METHODS=['addOnPostRun']" -o nmie.js $(SRCDIR)/nmie-js-wrapper.cc
+
+# 	emcc --bind -lm -Wall -O2 -std=c++11 -s MODULARIZE=1 -s WASM=1 -o nmie.js $(SRCDIR)/nmie-js-wrapper.cc
+	emcc --bind -lm -Wall -O2 -std=c++11 -s MODULARIZE=1 -s WASM=1 -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"cwrap\"]' -s ALLOW_MEMORY_GROWTH=1 -s EXPORT_NAME="nmiejs" -s ENVIRONMENT="web" -o nmiejs.js $(SRCDIR)/nmie-js-wrapper.cc
+
+# 	emcc -g --bind -lm -Wall -std=c++11 -s WASM=1 -s NO_EXIT_RUNTIME=1 -s "EXTRA_EXPORTED_RUNTIME_METHODS=['addOnPostRun']" -o nmie.js $(SRCDIR)/nmie-js-wrapper.cc
+# 	emcc --bind -lm -Wall -O2 -std=c++11 -s MODULARIZE=1 -s EXPORT_ES6=1 -s WASM=1 -s NO_EXIT_RUNTIME=1 -s "EXTRA_EXPORTED_RUNTIME_METHODS=['addOnPostRun']" -o nmie.js $(SRCDIR)/nmie-js-wrapper.cc
+
+#     "build:codec": "emcc -O3 -s WASM=1 -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"cwrap\"]' -s ALLOW_MEMORY_GROWTH=1 -s MODULARIZE=1 -s 'EXPORT_NAME=\"fibonacci\"' -o ./fibonacci.js fibonacci.c",
+
+
+# emcc -O2 \
+#     oniguruma/src/.libs/libonig.so \
+#     src/onigasm.cc\
+#     -Isrc -Ioniguruma/src \
+#     -s ENVIRONMENT=shell \
+#     -s NO_EXIT_RUNTIME=1 \
+#     -s NO_FILESYSTEM=1 \
+#     -s TOTAL_MEMORY=157286400 \
+#     -s ALLOW_MEMORY_GROWTH=1 \
+#     -s DEMANGLE_SUPPORT=1 \
+#     -s EXTRA_EXPORTED_RUNTIME_METHODS="['ccall']" \
+#     -s MODULARIZE=1 \
+#     -s EXPORT_NAME="'Onigasm'" \
+#     -o lib/onigasm.js
+
 	# @cp nmie.js web/
 	# @cp nmie.wasm web/
 

+ 29 - 1
web/index.html

@@ -6,7 +6,24 @@
   <meta http-equiv="X-UA-Compatible" content="ie=edge">
   <title>Scattnlay web</title>
   <link rel="stylesheet" type="text/css" href="nmie.css">
-  <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
+<!--  <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>-->
+  <script src="plotly-latest.min.js"></script>
+
+  <!-- Yandex.Metrika counter -->
+  <script type="text/javascript" >
+    (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
+      m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
+    (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
+
+    ym(54984811, "init", {
+      clickmap:true,
+      trackLinks:true,
+      accurateTrackBounce:true
+    });
+  </script>
+  <noscript><div><img src="https://mc.yandex.ru/watch/54984811" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
+  <!-- /Yandex.Metrika counter -->
+
 </head>
 <body>
 <div id="Usage" style="font-size: small;">
@@ -33,6 +50,17 @@ Im(n): <input type="number" id="imN" step="any" value="0.01"><br>
   <script src="nmie.js"></script>
   <script>
     'use strict';
+    // var importObject = {
+    //   imports: { nmie: arg => console.log(arg) }
+    // };
+    //
+    // fetch('nmie.wasm').then(response =>
+    //         response.arrayBuffer()
+    // ).then(bytes =>
+    //         WebAssembly.instantiate(bytes, importObject)
+    // ).then(results => {
+    //   results.instance.exports.nmie();
+    // });
     const total_mode_n = 4;
     let mode_n, mode_types;
     let mode_names = ['E','H'];

+ 10 - 2
web/v2/index.html

@@ -103,7 +103,7 @@
                 <b-input v-model="simulationSetup.total_mode_n" type='number' min=1 style="width:7rem"></b-input>
             </div>
         </div>
-        <div>From: {{simulationSetup.fromWL}} to: {{simulationSetup.toWL}} units: {{ units }}
+        <div>From {{simulationSetup.fromWL}} to {{simulationSetup.toWL}} {{ units }}
             <br>
         Changes:{{ changes }}
         </div>
@@ -127,7 +127,15 @@
 <!--<script src='https://cdn.jsdelivr.net/npm/sortablejs@1.6.1/Sortable.min.js'></script>-->
 <!--<script src='https://cdn.jsdelivr.net/npm/vee-validate@2.1.0-beta.9/dist/vee-validate.min.js'></script>-->
 <script  src="./tested-components.js"></script>
-<script  src="./script.js"></script>
+<!--<script src="nmie.js"></script>-->
+<script>
+    'use strict';
+    // var myExports = require('./nmie.js');
+    //
+    // console.log(Object.keys(myExports));
+    // const nmie = new Module.nmie();
+</script>
+<script  src="script.js"></script>
 <link rel="stylesheet" type="text/css" href="local.css">
 
 </body>

+ 30 - 0
web/v2/script.js

@@ -1,4 +1,11 @@
 'use strict';
+// import("nmie.js");
+// const nmie = new Module.nmie();
+
+const range = (start, stop, step = 1) =>
+    Array(Math.ceil((stop - start) / step)).fill(start).map((x, y) => x + y * step);
+
+
 const example = {
     data() {
         return {
@@ -9,6 +16,19 @@ const example = {
             // on change of initial value for __ units __
             // remember to update this.chart.layout.xaxis.title
             units: 'nm',
+            simulationRuntime: {
+                mode_n : [],
+                mode_types: range(0,2),
+                mode_names: ['E','H'],
+                WLs: [],
+                Qsca: [],
+                Qabs: [],
+                Qsca_n: [[],[]],
+                Qabs_n: [[],[]],
+                layout: {},
+                trace1: {},
+                trace2: {}
+            },
             simulationSetup: {
                 stepWL: 0.5,
                 fromWL: 300.0,
@@ -73,6 +93,16 @@ const example = {
             this.window.height = window.innerHeight;
         },
         runMie(){
+
+            let t0 = performance.now();
+            let fromWL = parseFloat(this.simulationSetup.fromWL);
+            let toWL = parseFloat(this.simulationSetup.toWL);
+            let stepWL = parseFloat(this.simulationSetup.stepWL);
+            let R = parseFloat(this.simulationSetup.R);
+            let reN = parseFloat(this.simulationSetup.reN);
+            let imN = parseFloat(this.simulationSetup.imN);
+
+
             this.changes++;
         }
     },