From 7c000442b9edeee24fb8b26b004280f612bea5b6 Mon Sep 17 00:00:00 2001
From: Amanda Ghassaei <amandaghassaei@gmail.com>
Date: Mon, 10 Aug 2015 21:03:21 -0400
Subject: [PATCH] potential field

---
 js/menus/EStaticMenuView.js              |  1 +
 js/plists/ESimPlist.js                   |  2 +-
 js/simulation/electronics/LatticeEsim.js | 27 +++++++++++++++++++-----
 js/simulation/electronics/eSim.js        |  1 +
 js/simulation/electronics/eSimField.js   |  8 +++----
 5 files changed, 29 insertions(+), 10 deletions(-)

diff --git a/js/menus/EStaticMenuView.js b/js/menus/EStaticMenuView.js
index b536655a..858f3146 100644
--- a/js/menus/EStaticMenuView.js
+++ b/js/menus/EStaticMenuView.js
@@ -26,6 +26,7 @@ define(['jquery', 'underscore', 'menuParent', 'eSimPlist', 'text!eStaticMenuTemp
 
         _calcEField: function(e){
             e.preventDefault();
+            console.log("here");
             lattice.calcEField(eSim.get("conductorGroups"), eSim.get("simulationRes"));
         },
 
diff --git a/js/plists/ESimPlist.js b/js/plists/ESimPlist.js
index ff8321ba..ee280354 100644
--- a/js/plists/ESimPlist.js
+++ b/js/plists/ESimPlist.js
@@ -20,7 +20,7 @@ define([], function(){
 
         visibleStaticSimTypes: {
             none: "None",
-            voltageField: "Input Potentials",
+            potentialField: "Input Potentials",
             electricField: "Electric Field",
             chargeField: "Charge Distribution",
             capacitanceField: "Capacitance"
diff --git a/js/simulation/electronics/LatticeEsim.js b/js/simulation/electronics/LatticeEsim.js
index 31585bca..a9888708 100644
--- a/js/simulation/electronics/LatticeEsim.js
+++ b/js/simulation/electronics/LatticeEsim.js
@@ -2,8 +2,8 @@
  * Created by aghassaei on 6/30/15.
  */
 
-define(['lattice', 'appState', 'three', 'threeModel', 'eSim', 'eSimCell', 'eSimSuperCell'],
-    function(lattice, appState, THREE, three, eSim){
+define(['lattice', 'appState', 'three', 'threeModel', 'eSim', 'eSimField', 'eSimCell', 'eSimSuperCell'],
+    function(lattice, appState, THREE, three, eSim, ESimField){
 
 
 
@@ -103,11 +103,28 @@ define(['lattice', 'appState', 'three', 'threeModel', 'eSim', 'eSimCell', 'eSimS
             });
 
             var offset = this.get("cellsMin").clone().sub(new THREE.Vector3(1/(2*resolution)+this.xScale(0)/2, 1/(2*resolution)+this.yScale(0)/2, 1/(2*resolution)+this.zScale(0)/2));
-            require(['eSimField'], function(ESimField){
-                eSim.set("electricField", new ESimField(eFieldMat, offset, resolution, eSim.get("simZHeight"), _.keys(conductorGroups)));
-                eSim.set("visibleStaticSim", "electricField");
+            var dataRange = [];
+            _.each(conductorGroups, function(group){
+                dataRange.push(group.voltage);
             });
 
+
+            //create potential field
+            if (eSim.get("potentialField")){
+                eSim.get("potentialField").setData(eFieldMat, offset, resolution, eSim.get("simZHeight"), dataRange);
+            } else {
+                eSim.set("potentialField", new ESimField(eFieldMat, offset, resolution, eSim.get("simZHeight"), dataRange));
+            }
+
+            //create electric field from potential
+            if (eSim.get("electricField")){
+                eSim.get("electricField").setData(eFieldMat, offset, resolution, eSim.get("simZHeight"), dataRange);
+            } else {
+                eSim.set("electricField", new ESimField(eFieldMat, offset, resolution, eSim.get("simZHeight"), dataRange));
+            }
+            eSim.set("visibleStaticSim", "electricField");//will cause render
+
+
         },
 
         calcCapacitance: function(){
diff --git a/js/simulation/electronics/eSim.js b/js/simulation/electronics/eSim.js
index ea9cf5cf..c076767c 100644
--- a/js/simulation/electronics/eSim.js
+++ b/js/simulation/electronics/eSim.js
@@ -19,6 +19,7 @@ define(['underscore', 'backbone', 'threeModel'], function(_, Backbone, three){
             simZHeight: 1,
 
             //statics
+            potentialField: null,
             electricField: null,
             chargeField: null,
             capacitanceField: null,
diff --git a/js/simulation/electronics/eSimField.js b/js/simulation/electronics/eSimField.js
index 0d2ac8b0..7659963b 100644
--- a/js/simulation/electronics/eSimField.js
+++ b/js/simulation/electronics/eSimField.js
@@ -10,17 +10,18 @@ define(['underscore', 'threeModel'], function(_, three){
     function ESimField(data, offset, resolution, height, dataRange){
 
         this._object3D = new THREE.Object3D();
-        this._setData(data, offset, resolution, height, dataRange);
+        this.setData(data, offset, resolution, height, dataRange);
 
         three.sceneAdd(this._object3D);
         this.hide();
     }
 
-    ESimField.prototype._setData = function(data, offset, resolution, height, dataRange){
+    ESimField.prototype.setData = function(data, offset, resolution, height, dataRange){
         this._destroyData();
         this._data = data;
         this._max = _.max(dataRange);
-        this._min = 0;
+        console.log(this._max);
+        this._min = Math.min(0, _.min(dataRange));
         this._resolution = resolution;
 
         this._offset = offset;
@@ -59,7 +60,6 @@ define(['underscore', 'threeModel'], function(_, three){
     };
 
     ESimField.prototype.show = function(height){
-        console.log(height);
         if (height < 0 || this._data[0][0][height] === undefined) {
             console.warn("height " + height + " is out of range");
             return;
-- 
GitLab