Index: /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 17288)
+++ /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 17289)
@@ -6,5 +6,5 @@
 #include "../solutionsequences/solutionsequences.h"
 
-//#define FSANALYTICAL 3
+//#define FSANALYTICAL 4
 
 /*Model processing*/
@@ -2903,4 +2903,8 @@
 			forcex=fx3(x_coord,y_coord);
 			forcey=fy3(x_coord,y_coord);
+		#elif FSANALYTICAL == 4
+			forcex=fx4(x_coord,y_coord,z_coord);
+			forcey=fy4(x_coord,y_coord,z_coord);
+			forcez=fz4(x_coord,y_coord,z_coord);
 		#else 
 			_error_("FS analytical not implemented yet");
Index: /issm/trunk-jpl/src/c/shared/FSanalyticals/FSanalytical3.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/FSanalyticals/FSanalytical3.cpp	(revision 17288)
+++ /issm/trunk-jpl/src/c/shared/FSanalyticals/FSanalytical3.cpp	(revision 17289)
@@ -23,2 +23,23 @@
 	return functiony;
 }
+IssmDouble fx4(IssmDouble x,IssmDouble y,IssmDouble z){   
+	IssmDouble functionx;
+
+	functionx = 4*pow(x, 2)*y*z*pow(x - 1, 2)*(z - 1) + 4*pow(x, 2)*y*z*(y - 1)*(2*y - 1)*(z - 1) + 2*pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1) + 4*pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(z - 1) + 2*pow(x, 2)*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) - 4*x*pow(y, 2)*z*(x - 1)*(y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(2*x - 1)*(y - 1)*(z - 1) - 4*x*y*z*(x - 1)*pow(y - 1, 2)*(z - 1) + 16*x*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*y*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - 2*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + 4*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1) + y - 1.0L/2.0L;
+
+	return functionx;
+}
+IssmDouble fy4(IssmDouble x,IssmDouble y,IssmDouble z){   
+	IssmDouble functiony;
+
+	functiony = 4*pow(x, 2)*y*z*(x - 1)*(y - 1)*(z - 1) + 2*pow(x, 2)*y*z*(x - 1)*(2*y - 1)*(z - 1) + 2*pow(x, 2)*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) - 4*x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(z - 1) - 4*x*pow(y, 2)*z*pow(y - 1, 2)*(z - 1) - 2*x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2) + 4*x*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + 2*x*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) - 16*x*y*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + 2*x*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 4*x*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1) + x - 4*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - 2*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - 1.0L/2.0L;
+
+	return functiony;
+}
+IssmDouble fz4(IssmDouble x,IssmDouble y,IssmDouble z){   
+	IssmDouble functionz;
+
+	functionz = 2*pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1) + 2*pow(x, 2)*y*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1) - 2*x*pow(y, 2)*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + 2*x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) - 2*x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + 2*x*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*y*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1);
+
+	return functionz;
+}
Index: /issm/trunk-jpl/src/c/shared/FSanalyticals/fsanalyticals.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/FSanalyticals/fsanalyticals.h	(revision 17288)
+++ /issm/trunk-jpl/src/c/shared/FSanalyticals/fsanalyticals.h	(revision 17289)
@@ -16,4 +16,7 @@
 IssmDouble fx3(IssmDouble x_coord, IssmDouble y_coord);
 IssmDouble fy3(IssmDouble x_coord, IssmDouble y_coord);
+IssmDouble fx4(IssmDouble x_coord, IssmDouble y_coord, IssmDouble z_coord);
+IssmDouble fy4(IssmDouble x_coord, IssmDouble y_coord, IssmDouble z_coord);
+IssmDouble fz4(IssmDouble x_coord, IssmDouble y_coord, IssmDouble z_coord);
 
 #endif //ifndef _SHARED_ANALYTICALS_H_
