Index: /issm/trunk/src/c/DataSet/DataSet.cpp
===================================================================
--- /issm/trunk/src/c/DataSet/DataSet.cpp	(revision 4052)
+++ /issm/trunk/src/c/DataSet/DataSet.cpp	(revision 4053)
@@ -895,10 +895,9 @@
 			/*Check that this node corresponds to our analysis currently being carried out: */
 
-				/*Ok, this object is a node, ask it to plug values into partition: */
-				if (!node->IsClone()){
-
-					numdofs+=node->GetNumberOfDofs();
-
-				}
+			/*Ok, this object is a node, ask it to plug values into partition: */
+			if (!node->IsClone()){
+
+				numdofs+=node->GetNumberOfDofs();
+
 			}
 		}
Index: /issm/trunk/src/c/DataSet/Results.cpp
===================================================================
--- /issm/trunk/src/c/DataSet/Results.cpp	(revision 4052)
+++ /issm/trunk/src/c/DataSet/Results.cpp	(revision 4053)
@@ -48,6 +48,6 @@
 	/*Intermediary*/
 	vector<Object*>::iterator object;
-	Result* resultin=NULL;
-	Result* resultout=NULL;
+	ElementResult* resultin=NULL;
+	ElementResult* resultout=NULL;
 
 	/*Output*/
@@ -58,6 +58,6 @@
 
 		/*Create new result*/
-		resultin=(Result*)(*object); 
-		resultout=resultin->SpawnBeamResult(indices);
+		resultin=(ElementResult*)(*object); 
+		resultout=resultin->SpawnBeamElementResult(indices);
 
 		/*Add result to new results*/
@@ -74,6 +74,6 @@
 	/*Intermediary*/
 	vector<Object*>::iterator object;
-	Result* resultin=NULL;
-	Result* resultout=NULL;
+	ElementResult* resultin=NULL;
+	ElementResult* resultout=NULL;
 
 	/*Output*/
@@ -84,6 +84,6 @@
 
 		/*Create new result*/
-		resultin=(Result*)(*object); 
-		resultout=resultin->SpawnSingResult(index);
+		resultin=(ElementResult*)(*object); 
+		resultout=resultin->SpawnSingElementResult(index);
 
 		/*Add result to new results*/
@@ -100,6 +100,6 @@
 	/*Intermediary*/
 	vector<Object*>::iterator object;
-	Result* resultin=NULL;
-	Result* resultout=NULL;
+	ElementResult* resultin=NULL;
+	ElementResult* resultout=NULL;
 
 	/*Output*/
@@ -110,6 +110,6 @@
 
 		/*Create new result*/
-		resultin=(Result*)(*object); 
-		resultout=resultin->SpawnTriaResult(indices);
+		resultin=(ElementResult*)(*object); 
+		resultout=resultin->SpawnTriaElementResult(indices);
 
 		/*Add result to new results*/
Index: /issm/trunk/src/c/Makefile.am
===================================================================
--- /issm/trunk/src/c/Makefile.am	(revision 4052)
+++ /issm/trunk/src/c/Makefile.am	(revision 4053)
@@ -103,16 +103,27 @@
 					./objects/Node.h\
 					./objects/Node.cpp\
-					./objects/Results/ResultLocal.h\
-					./objects/Results/NodalValuesUnitConversion.cpp\
-					./objects/Results/DoubleResult.h\
-					./objects/Results/DoubleResult.cpp\
-					./objects/Results/TriaVertexResult.h\
-					./objects/Results/TriaVertexResult.cpp\
-					./objects/Results/PentaVertexResult.h\
-					./objects/Results/PentaVertexResult.cpp\
-					./objects/Results/SingVertexResult.h\
-					./objects/Results/SingVertexResult.cpp\
-					./objects/Results/BeamVertexResult.h\
-					./objects/Results/BeamVertexResult.cpp\
+					./objects/ElementResults/ElementResultLocal.h\
+					./objects/ElementResults/NodalValuesUnitConversion.cpp\
+					./objects/ElementResults/DoubleElementResult.h\
+					./objects/ElementResults/DoubleElementResult.cpp\
+					./objects/ElementResults/TriaVertexElementResult.h\
+					./objects/ElementResults/TriaVertexElementResult.cpp\
+					./objects/ElementResults/PentaVertexElementResult.h\
+					./objects/ElementResults/PentaVertexElementResult.cpp\
+					./objects/ElementResults/SingVertexElementResult.h\
+					./objects/ElementResults/SingVertexElementResult.cpp\
+					./objects/ElementResults/BeamVertexElementResult.h\
+					./objects/ElementResults/BeamVertexElementResult.cpp\
+					./objects/ExternalResults/ExternalResult.h\
+					./objects/ExternalResults/BoolExternalResult.h\
+					./objects/ExternalResults/BoolExternalResult.cpp\
+					./objects/ExternalResults/DoubleExternalResult.h\
+					./objects/ExternalResults/DoubleExternalResult.cpp\
+					./objects/ExternalResults/DoubleVecExternalResult.h\
+					./objects/ExternalResults/DoubleVecExternalResult.cpp\
+					./objects/ExternalResults/IntExternalResult.h\
+					./objects/ExternalResults/IntExternalResult.cpp\
+					./objects/ExternalResults/PetscVecExternalResult.h\
+					./objects/ExternalResults/PetscVecExternalResult.cpp\
 					./objects/Elements/Tria.h\
 					./objects/Elements/Tria.cpp\
@@ -395,6 +406,6 @@
 					./modules/AXPYInputx/AXPYInputx.h\
 					./modules/AXPYInputx/AXPYInputx.cpp\
-					./modules/ControlConstrainx/ControlConstrainx.h\
-					./modules/ControlConstrainx/ControlConstrainx.cpp\
+					./modules/ControlConstrainInputx/ControlConstrainInputx.h\
+					./modules/ControlConstrainInputx/ControlConstrainInputx.cpp\
 					./modules/SurfaceAreax/SurfaceAreax.h\
 					./modules/SurfaceAreax/SurfaceAreax.cpp\
@@ -604,16 +615,27 @@
 					./objects/Hook.h\
 					./objects/Hook.cpp\
-					./objects/Results/ResultLocal.h\
-					./objects/Results/NodalValuesUnitConversion.cpp\
-					./objects/Results/DoubleResult.h\
-					./objects/Results/DoubleResult.cpp\
-					./objects/Results/TriaVertexResult.h\
-					./objects/Results/TriaVertexResult.cpp\
-					./objects/Results/PentaVertexResult.h\
-					./objects/Results/PentaVertexResult.cpp\
-					./objects/Results/SingVertexResult.h\
-					./objects/Results/SingVertexResult.cpp\
-					./objects/Results/BeamVertexResult.h\
-					./objects/Results/BeamVertexResult.cpp\
+					./objects/ElementResults/ElementResultLocal.h\
+					./objects/ElementResults/NodalValuesUnitConversion.cpp\
+					./objects/ElementResults/DoubleElementResult.h\
+					./objects/ElementResults/DoubleElementResult.cpp\
+					./objects/ElementResults/TriaVertexElementResult.h\
+					./objects/ElementResults/TriaVertexElementResult.cpp\
+					./objects/ElementResults/PentaVertexElementResult.h\
+					./objects/ElementResults/PentaVertexElementResult.cpp\
+					./objects/ElementResults/SingVertexElementResult.h\
+					./objects/ElementResults/SingVertexElementResult.cpp\
+					./objects/ElementResults/BeamVertexElementResult.h\
+					./objects/ElementResults/BeamVertexElementResult.cpp\
+					./objects/ExternalResults/ExternalResult.h\
+					./objects/ExternalResults/BoolExternalResult.h\
+					./objects/ExternalResults/BoolExternalResult.cpp\
+					./objects/ExternalResults/DoubleExternalResult.h\
+					./objects/ExternalResults/DoubleExternalResult.cpp\
+					./objects/ExternalResults/DoubleVecExternalResult.h\
+					./objects/ExternalResults/DoubleVecExternalResult.cpp\
+					./objects/ExternalResults/IntExternalResult.h\
+					./objects/ExternalResults/IntExternalResult.cpp\
+					./objects/ExternalResults/PetscVecExternalResult.h\
+					./objects/ExternalResults/PetscVecExternalResult.cpp\
 					./objects/Elements/Tria.h\
 					./objects/Elements/Tria.cpp\
@@ -895,6 +917,6 @@
 					./modules/AXPYInputx/AXPYInputx.h\
 					./modules/AXPYInputx/AXPYInputx.cpp\
-					./modules/ControlConstrainx/ControlConstrainx.h\
-					./modules/ControlConstrainx/ControlConstrainx.cpp\
+					./modules/ControlConstrainInputx/ControlConstrainInputx.h\
+					./modules/ControlConstrainInputx/ControlConstrainInputx.cpp\
 					./modules/SurfaceAreax/SurfaceAreax.h\
 					./modules/SurfaceAreax/SurfaceAreax.cpp\
@@ -1005,6 +1027,6 @@
 					./solutions/WriteLockFile.cpp\
 					./solutions/control_core.cpp\
-					./solutions/ControlInitialization.cpp\
-					./solutions/ControlRestart.cpp\
+					./solutions/stokescontrolinit.cpp\
+					./solutions/controlrestart.cpp\
 					./solutions/objectivefunctionC.cpp\
 					./solutions/gradjcompute_core.cpp\
Index: /issm/trunk/src/c/modules/AXPYInputx/AXPYInputx.h
===================================================================
--- /issm/trunk/src/c/modules/AXPYInputx/AXPYInputx.h	(revision 4052)
+++ /issm/trunk/src/c/modules/AXPYInputx/AXPYInputx.h	(revision 4053)
@@ -9,5 +9,5 @@
 
 /* local prototypes: */
-void AXPYInputx(DataSet* elements,DataSet* nodes,DataSet* vertices,DataSet* loads,DataSet* materials,Parameters* parameters,int YEnum, double scalar, int XEnum){
+void AXPYInputx(DataSet* elements,DataSet* nodes,DataSet* vertices,DataSet* loads,DataSet* materials,Parameters* parameters,int YEnum, double scalar, int XEnum);
 
 #endif  /* _AXPYINPUTX_H */
Index: /issm/trunk/src/c/modules/ControlConstrainInputx/ControlConstrainInputx.cpp
===================================================================
--- /issm/trunk/src/c/modules/ControlConstrainInputx/ControlConstrainInputx.cpp	(revision 4053)
+++ /issm/trunk/src/c/modules/ControlConstrainInputx/ControlConstrainInputx.cpp	(revision 4053)
@@ -0,0 +1,27 @@
+/*!\file ControlConstrainInputx
+ * \brief: Y=Y+aX operation on inputs.
+ */
+
+#include "./ControlConstrainInputx.h"
+#include "../../shared/shared.h"
+#include "../../include/include.h"
+#include "../../toolkits/toolkits.h"
+#include "../../EnumDefinitions/EnumDefinitions.h"
+
+void ControlConstrainInputx(DataSet* elements,DataSet* nodes,DataSet* vertices,DataSet* loads,DataSet* materials,Parameters* parameters,int control_type,double cm_min, double cm_max){
+
+	/*intermediary:*/
+	int      i;
+
+    /*some early returns: */
+	if(isnan(cm_min) & isnan(cm_max))return;
+
+	/*First, get elements and nodes configured: */
+	elements->Configure(elements,loads, nodes,vertices, materials,parameters);
+
+	/*Go through elemnets, and ask to carry out the ControlConstrain operation on inputs: */
+	for(i=0;i<elements->Size();i++){
+		Element* element=(Element*)elements->GetObjectByOffset(i);
+		element->ControlConstrainInput(control_type,cm_min,cm_max);
+	}
+}
Index: /issm/trunk/src/c/modules/ControlConstrainInputx/ControlConstrainInputx.h
===================================================================
--- /issm/trunk/src/c/modules/ControlConstrainInputx/ControlConstrainInputx.h	(revision 4053)
+++ /issm/trunk/src/c/modules/ControlConstrainInputx/ControlConstrainInputx.h	(revision 4053)
@@ -0,0 +1,14 @@
+/*!\file:  ControlConstrainInputx.h
+ * \brief header file for field extrusion
+ */ 
+
+#ifndef _CONTROLCONTRAININPUTX_H
+#define _CONTROLCONTRAININPUTX_H
+
+#include "../../DataSet/DataSet.h"
+
+/* local prototypes: */
+void ControlConstrainInputx(DataSet* elements,DataSet* nodes,DataSet* vertices,DataSet* loads,DataSet* materials,Parameters* parameters,int control_type,double cm_min, double cm_max);
+
+#endif  /* _ControlConstrainINPUTX_H */
+
Index: sm/trunk/src/c/modules/ControlConstrainInputx/ControlConstrainx.cpp
===================================================================
--- /issm/trunk/src/c/modules/ControlConstrainInputx/ControlConstrainx.cpp	(revision 4052)
+++ 	(revision )
@@ -1,27 +1,0 @@
-/*!\file ControlContrainInputx
- * \brief: Y=Y+aX operation on inputs.
- */
-
-#include "./ControlContrainInputx.h"
-#include "../../shared/shared.h"
-#include "../../include/include.h"
-#include "../../toolkits/toolkits.h"
-#include "../../EnumDefinitions/EnumDefinitions.h"
-
-void ControlContrainInputx(DataSet* elements,DataSet* nodes,DataSet* vertices,DataSet* loads,DataSet* materials,Parameters* parameters,int control_type,double cm_min, double cm_max){
-
-	/*intermediary:*/
-	int      i;
-
-    /*some early returns: */
-	if(isnan(cm_min) & isnan(cm_max))return;
-
-	/*First, get elements and nodes configured: */
-	elements->Configure(elements,loads, nodes,vertices, materials,parameters);
-
-	/*Go through elemnets, and ask to carry out the ControlContrain operation on inputs: */
-	for(i=0;i<elements->Size();i++){
-		Element* element=(Element*)elements->GetObjectByOffset(i);
-		element->ControlContrainInput(control_type,cm_min,cm_max);
-	}
-}
Index: sm/trunk/src/c/modules/ControlConstrainInputx/ControlConstrainx.h
===================================================================
--- /issm/trunk/src/c/modules/ControlConstrainInputx/ControlConstrainx.h	(revision 4052)
+++ 	(revision )
@@ -1,14 +1,0 @@
-/*!\file:  ControlContrainInputx.h
- * \brief header file for field extrusion
- */ 
-
-#ifndef _CONTROLCONTRAININPUTX_H
-#define _CONTROLCONTRAININPUTX_H
-
-#include "../../DataSet/DataSet.h"
-
-/* local prototypes: */
-void ControlContrainInputx(DataSet* elements,DataSet* nodes,DataSet* vertices,DataSet* loads,DataSet* materials,Parameters* parameters,int control_type,double cm_min, double cm_max);
-
-#endif  /* _ControlContrainINPUTX_H */
-
Index: /issm/trunk/src/c/modules/ExtrudeInputx/ExtrudeInputx.cpp
===================================================================
--- /issm/trunk/src/c/modules/ExtrudeInputx/ExtrudeInputx.cpp	(revision 4052)
+++ /issm/trunk/src/c/modules/ExtrudeInputx/ExtrudeInputx.cpp	(revision 4053)
@@ -4,5 +4,4 @@
 
 #include "./ExtrudeInputx.h"
-
 #include "../../shared/shared.h"
 #include "../../include/include.h"
Index: /issm/trunk/src/c/modules/Gradjx/Gradjx.cpp
===================================================================
--- /issm/trunk/src/c/modules/Gradjx/Gradjx.cpp	(revision 4052)
+++ /issm/trunk/src/c/modules/Gradjx/Gradjx.cpp	(revision 4053)
@@ -4,5 +4,5 @@
 
 #include "./Gradjx.h"
-
+#include "../modules.h"
 #include "../../shared/shared.h"
 #include "../../include/include.h"
@@ -31,5 +31,5 @@
 
 	/*Extrude if needed: */
-	if(dim==3) InputsExtrudex( elements,nodes,vertices,loads,materials,parameters,GradientEnum,0);
+	if(dim==3) ExtrudeInputx( elements,nodes, vertices, loads, materials, parameters,GradientEnum);
 
 }
Index: /issm/trunk/src/c/modules/Orthx/Orthx.cpp
===================================================================
--- /issm/trunk/src/c/modules/Orthx/Orthx.cpp	(revision 4052)
+++ /issm/trunk/src/c/modules/Orthx/Orthx.cpp	(revision 4053)
@@ -7,6 +7,4 @@
 void	Orthx( Vec* pnewgradj, Vec gradj, Vec oldgradj){
 	
-	GetSolutionFromInputsx( &ug, femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,  femmodel->parameters, analysis_type,sub_analysis_type);
-
 	/*output: */
 	Vec newgradj=NULL;
Index: /issm/trunk/src/c/modules/modules.h
===================================================================
--- /issm/trunk/src/c/modules/modules.h	(revision 4052)
+++ /issm/trunk/src/c/modules/modules.h	(revision 4053)
@@ -47,5 +47,5 @@
 #include "./SurfaceAreax/SurfaceAreax.h"
 #include "./CostFunctionx/CostFunctionx.h"
-#include "./ControlConstrainx/ControlConstrainx.h"
+#include "./ControlConstrainInputx/ControlConstrainInputx.h"
 #include "./FieldAverageOntoVerticesx/FieldAverageOntoVerticesx.h"
 #include "./FieldDepthAveragex/FieldDepthAveragex.h"
@@ -81,5 +81,4 @@
 #include "./ScaleInputx/ScaleInputx.h"
 #include "./AXPYInputx/AXPYInputx.h"
-#include "./ControlContrainx/ControlContrainx.h"
 
 #endif
