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(){
 
         },