diff --git a/NonLinearSolver/materialLaw/mlawLinearElecMagTherMech.cpp b/NonLinearSolver/materialLaw/mlawLinearElecMagTherMech.cpp
index 7050eec59d50e8aff83420d0073e7f1ef73d3176..2a1febb72c4d51d531b85bf828f59f7a4673c544 100644
--- a/NonLinearSolver/materialLaw/mlawLinearElecMagTherMech.cpp
+++ b/NonLinearSolver/materialLaw/mlawLinearElecMagTherMech.cpp
@@ -203,6 +203,7 @@ void mlawLinearElecMagTherMech::constitutive(
                                             SVector3 & dmechSourcedB,
                                             SVector3 & sourceVectorField, // Magnetic source vector field (T, grad V, F)
                                             SVector3 & dsourceVectorFielddt,
+                                            double & emFieldSource,
                                             STensor3 & dHdA,
                                             STensor3 & dHdB,
                                             STensor33 & dPdB,
@@ -350,15 +351,17 @@ void mlawLinearElecMagTherMech::constitutive(
 
                     // derivatives of sourceVectorField
                     dsourceVectorFielddB(i, j) += 0.0;
-                    dsourceVectorFielddgradV(i, j) += _l0(i, j);
-                    dsourceVectorFielddgradT(i, j) += _seebeck * _l0(i ,j);
+                    dsourceVectorFielddgradV(i, j) += -_l0(i, j);
+                    dsourceVectorFielddgradT(i, j) += -_seebeck * _l0(i ,j);
 
                     dsourceVectorFielddV(i) += 0.0;
-                    dsourceVectorFielddT(i) += dseebeckdT * _l0(i, j) * gradT(j);
-                    dsourceVectorFielddA(i, j) += _l0(i, j) * invdh;
+                    dsourceVectorFielddT(i) += -dseebeckdT * _l0(i, j) * gradT(j);
+                    dsourceVectorFielddA(i, j) += -_l0(i, j) * invdh;
                 }
             }
             sourceVectorField(i) = -fluxD(i) - js0(i);
+            // w_AV = j_e \cdot e
+            emFieldSource += sourceVectorField(i) * (-gradV(i) - (An(i) - A0(i)) * invdh);
         }
 
         // Need to check contribution to jy from source js0
@@ -396,6 +399,8 @@ void mlawLinearElecMagTherMech::constitutive(
                 }
             }
             sourceVectorField(i) = -fluxD(i) - js0(i);
+            // w_AV = j_e \cdot e
+            emFieldSource += sourceVectorField(i) * (-gradV(i) - (An(i) - A0(i)) * invdh);
         }
 
         // For test with unit cube to check
diff --git a/NonLinearSolver/materialLaw/mlawLinearElecMagTherMech.h b/NonLinearSolver/materialLaw/mlawLinearElecMagTherMech.h
index 56c1c123ab8ae58262ee2b8bee204cb6e11a69a2..1700068243258b0115b167fedb034312af67e24d 100644
--- a/NonLinearSolver/materialLaw/mlawLinearElecMagTherMech.h
+++ b/NonLinearSolver/materialLaw/mlawLinearElecMagTherMech.h
@@ -150,6 +150,7 @@ class mlawLinearElecMagTherMech : public mlawLinearElecTherMech
                             SVector3 & dmechSourcedB,
                             SVector3 & sourceVectorField, // Magnetic source vector field (T, grad V, F)
                             SVector3 & dsourceVectorFielddt,
+                            double & emFieldSource,
                             STensor3 & dHdA,
                             STensor3 & dHdB,
                             STensor33 & dPdB,
diff --git a/dG3D/src/dG3DMaterialLaw.cpp b/dG3D/src/dG3DMaterialLaw.cpp
index 9cd840818cd73404fa9bbc11b04a9c103f9a5699..926ca405646cc1ef00e15aac286f0601fd981c3b 100644
--- a/dG3D/src/dG3DMaterialLaw.cpp
+++ b/dG3D/src/dG3DMaterialLaw.cpp
@@ -5724,6 +5724,7 @@ const bool checkfrac, const bool dTangent)
     SVector3 & dmechSourcedB = ipvcur->getRefTodMechanicalSourcedMagneticVectorCurl();
     SVector3 & sourceVectorField = ipvcur->getRefTosourceVectorField(); // Magnetic source vector field (T, grad V, F)
     SVector3 & dsourceVectorFielddt = ipvcur->getRefTodsourceVectorFielddt();
+    double & emFieldSource = ipvcur->getRefToemFieldSource();
     STensor3 & dHdA = ipvcur->getRefTodMagneticFielddMagneticVectorPotential();
     STensor3 & dHdB = ipvcur->getRefTodMagneticFielddMagneticVectorCurl();
     STensor33 & dPdB = ipvcur->getRefTodPdMagneticVectorCurl();
@@ -5753,7 +5754,7 @@ const bool checkfrac, const bool dTangent)
     dl20dv,dk10dv,dk20dv,dl10dF,dl20dF,dk10dF,dk20dF,fluxjy,djydV,djydgradV,djydT,djydgradT,
     djydF,djydA, djydB, djydgradVdT,djydgradVdV,djydgradVdF,djydgradTdT,djydgradTdV,djydgradTdF,stiff,
     A0, An, B, H, js0, dBdT, dBdGradT, dBdV, dBdGradV, dBdF, dBdA, dfluxTdA, dfluxDdA, dfluxTdB, dfluxDdB, dw_TdA, dw_TdB, dmechSourcedB, sourceVectorField,
-    dsourceVectorFielddt, dHdA, dHdB, dPdB, dHdF, dsourceVectorFielddF, mechFieldSource, dmechFieldSourcedB, dmechFieldSourcedF,
+    dsourceVectorFielddt, emFieldSource, dHdA, dHdB, dPdB, dHdF, dsourceVectorFielddF, mechFieldSource, dmechFieldSourcedB, dmechFieldSourcedF,
     dHdT, dHdgradT, dHdV, dHdgradV, dsourceVectorFielddT, dsourceVectorFielddgradT, dsourceVectorFielddV, dsourceVectorFielddgradV, dsourceVectorFielddA,
     dsourceVectorFielddB, dmechFieldSourcedT, dmechFieldSourcedgradT, dmechFieldSourcedV, dmechFieldSourcedgradV);
 
@@ -5970,6 +5971,7 @@ const bool checkfrac, const bool dTangent)
   SVector3 & dmechSourcedB = ipvcur->getRefTodMechanicalSourcedMagneticVectorCurl();
   SVector3 & sourceVectorField = ipvcur->getRefTosourceVectorField(); // Magnetic source vector field (T, grad V, F)
   SVector3 & dsourceVectorFielddt = ipvcur->getRefTodsourceVectorFielddt();
+  double & emFieldSource = ipvcur->getRefToemFieldSource();
   STensor3 & dHdA = ipvcur->getRefTodMagneticFielddMagneticVectorPotential();
   STensor3 & dHdB = ipvcur->getRefTodMagneticFielddMagneticVectorCurl();
   STensor33 & dPdB = ipvcur->getRefTodPdMagneticVectorCurl();
@@ -5999,7 +6001,7 @@ const bool checkfrac, const bool dTangent)
     dl20dv,dk10dv,dk20dv,dl10dF,dl20dF,dk10dF,dk20dF,fluxjy,djydV,djydgradV,djydT,djydgradT,
     djydF, djydA, djydB, djydgradVdT,djydgradVdV,djydgradVdF,djydgradTdT,djydgradTdV,djydgradTdF,stiff,
     A0, An, B, H, js0, dBdT, dBdGradT, dBdV, dBdGradV, dBdF, dBdA, dfluxTdA, dfluxDdA, dfluxTdB, dfluxDdB, dw_TdA, dw_TdB, dmechSourcedB,
-    sourceVectorField, dsourceVectorFielddt, dHdA, dHdB, dPdB, dHdF, dsourceVectorFielddF, mechFieldSource, dmechFieldSourcedB, dmechFieldSourcedF,
+    sourceVectorField, dsourceVectorFielddt, emFieldSource, dHdA, dHdB, dPdB, dHdF, dsourceVectorFielddF, mechFieldSource, dmechFieldSourcedB, dmechFieldSourcedF,
     dHdT, dHdgradT, dHdV, dHdgradV, dsourceVectorFielddT, dsourceVectorFielddgradT, dsourceVectorFielddV, dsourceVectorFielddgradV, dsourceVectorFielddA,
     dsourceVectorFielddB, dmechFieldSourcedT, dmechFieldSourcedgradT, dmechFieldSourcedV, dmechFieldSourcedgradV);