diff --git a/js/main.js b/js/main.js index 66196da81699ecfee84364e7c6da74a060a4ce18..4b15527a744e25284a1c92eaa01cffccc6476490 100644 --- a/js/main.js +++ b/js/main.js @@ -157,12 +157,11 @@ require.config({ //electronic sim eSimPlist: 'plists/ESimPlist', eSim: 'simulation/electronics/eSim', - latticeESim: 'lattice/LatticeEsim', + latticeESim: 'simulation/electronics/LatticeEsim', eSimCell: 'simulation/electronics/cells/eSimCell', eSimSuperCell: 'simulation/electronics/cells/eSimSuperCell', - //cam cam: 'cam/cam', diff --git a/js/menus/EStaticMenuView.js b/js/menus/EStaticMenuView.js index 2ce090b74164eb4d2ca0102e71abe1f473ae6ee4..6dff60afba4cbedd93046ac68d1baa924837749e 100644 --- a/js/menus/EStaticMenuView.js +++ b/js/menus/EStaticMenuView.js @@ -10,7 +10,8 @@ define(['jquery', 'underscore', 'menuParent', 'eSimPlist', 'text!eStaticMenuTemp events: { "click #calcCapacitance": "_calcCapacitance", - "click #calcInductance": "_calcInductance" + "click #calcInductance": "_calcInductance", + "click #calcEField": "_calcEField" }, _initialize: function(){ @@ -23,6 +24,11 @@ define(['jquery', 'underscore', 'menuParent', 'eSimPlist', 'text!eStaticMenuTemp return null; }, + _calcEField: function(e){ + e.preventDefault(); + lattice.calcEField(eSim.get("conductorGroups"), eSim.get("simulationRes")); + }, + _calcCapacitance: function(e){ e.preventDefault(); if (this._checkGroupData("voltage") && !isNaN(parseFloat(eSim.get("dielectricConst")))) lattice.calcCapacitance(); diff --git a/js/lattice/LatticeEsim.js b/js/simulation/electronics/LatticeEsim.js similarity index 75% rename from js/lattice/LatticeEsim.js rename to js/simulation/electronics/LatticeEsim.js index 99bdbbce817ce88e99514933614c26a7a29b8867..d8f099b76e6baca84ad0349a3d6a17dd31a50013 100644 --- a/js/lattice/LatticeEsim.js +++ b/js/simulation/electronics/LatticeEsim.js @@ -69,6 +69,33 @@ define(['lattice', 'appState', 'threeModel', 'eSim', 'eSimCell', 'eSimSuperCell' if (index.y-1 >= 0) callback(this.cells[index.x][index.y-1][index.z]); }, + calcEField: function(conductorGroups, resolution){ + var eFieldMat = []; + //init size of field mat and fill with zeros, +2 puts a shell of zeros at boundary (infinity) + for (var x=0;x<resolution*this.cells.length+2;x++){ + eFieldMat.push([]); + for (var y=0;y<resolution*this.cells[0].length+2;y++){ + eFieldMat[x].push([]); + for (var z=0;z<resolution*this.cells[0][0].length+2;z++){ + eFieldMat[x][y].push(0); + } + } + } + + this._loopCells(this.cells, function(cell, x, y, z){ + if (!cell) return; + for (var i=0;i<resolution;i++){ + for (var j=0;j<resolution;j++){ + for (var k=0;k<resolution;k++){ + if (cell) eFieldMat[x+i+1][y+j+1][z+k+1] = 1; + } + } + } + }); + console.log(eFieldMat); + + }, + calcCapacitance: function(){ },