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