Index: /issm/trunk/src/c/DataSet/DataSet.cpp
===================================================================
--- /issm/trunk/src/c/DataSet/DataSet.cpp	(revision 4033)
+++ /issm/trunk/src/c/DataSet/DataSet.cpp	(revision 4034)
@@ -550,5 +550,5 @@
 /*Objects methods*/
 /*FUNCTION DataSet::Configure{{{1*/
-void DataSet::Configure(DataSet* elements,DataSet* loads, DataSet* nodes, DataSet* vertices, DataSet* materials,Parameters* parameters,int analysis_counter,int analysis_type){
+void DataSet::Configure(DataSet* elements,DataSet* loads, DataSet* nodes, DataSet* vertices, DataSet* materials,Parameters* parameters){
 
 	vector<Object*>::iterator object;
@@ -562,5 +562,5 @@
 
 			element=(Element*)(*object);
-			element->Configure(elements,loads,nodes,materials,parameters,analysis_counter);
+			element->Configure(elements,loads,nodes,materials,parameters);
 		}
 		if(EnumIsLoad((*object)->Enum())){
Index: /issm/trunk/src/c/DataSet/DataSet.h
===================================================================
--- /issm/trunk/src/c/DataSet/DataSet.h	(revision 4033)
+++ /issm/trunk/src/c/DataSet/DataSet.h	(revision 4034)
@@ -63,5 +63,5 @@
 		void  FlagNodeSets(Vec pv_g, Vec pv_m, Vec pv_n, Vec pv_f, Vec pv_s,int analysis_type);
 		void  clear();
-		void Configure(DataSet* elements,DataSet* loads, DataSet* nodes, DataSet* vertices, DataSet* materials,Parameters* parameters,int analysis_counter,int analysis_type);
+		void Configure(DataSet* elements,DataSet* loads, DataSet* nodes, DataSet* vertices, DataSet* materials,Parameters* parameters);
 		Object* GetObjectByOffset(int offset);
 		Object* GetObjectById(int* poffset,int eid);
Index: /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 4033)
+++ /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 4034)
@@ -29,4 +29,5 @@
 	AnalysisTypeEnum,
 	SubAnalysisTypeEnum,
+	AnalysisCounterEnum,
 	//diagnostic
 	DiagnosticAnalysisEnum,
Index: /issm/trunk/src/c/modules/BuildNodeSetsx/BuildNodeSetsx.cpp
===================================================================
--- /issm/trunk/src/c/modules/BuildNodeSetsx/BuildNodeSetsx.cpp	(revision 4033)
+++ /issm/trunk/src/c/modules/BuildNodeSetsx/BuildNodeSetsx.cpp	(revision 4034)
@@ -48,5 +48,5 @@
 		/*Now, go through all nodes and have every node plug into 
 		 * pv_m, pv_n, pv_f and pv_s, their own set flags, for each dof: */
-		nodes->FlagNodeSets(flag_pv_g,flag_pv_m,flag_pv_n,flag_pv_f,flag_pv_s);
+		nodes->FlagNodeSets(flag_pv_g,flag_pv_m,flag_pv_n,flag_pv_f,flag_pv_s,analysis_type);
 
 		/*Now, every cpu has 4 flag vectors, of size gsize. Create partition vectors (like a pos=find(flag_pv_g) in matlab*/
Index: /issm/trunk/src/c/modules/ConfigureObjectsx/ConfigureObjectsx.cpp
===================================================================
--- /issm/trunk/src/c/modules/ConfigureObjectsx/ConfigureObjectsx.cpp	(revision 4033)
+++ /issm/trunk/src/c/modules/ConfigureObjectsx/ConfigureObjectsx.cpp	(revision 4034)
@@ -10,5 +10,5 @@
 #include "../../EnumDefinitions/EnumDefinitions.h"
 
-int	ConfigureObjectsx( DataSet* elements, DataSet* loads, DataSet* nodes, DataSet* vertices, DataSet* materials,Parameters* parameters,int analysis_counter,int analysis_type){
+int	ConfigureObjectsx( DataSet* elements, DataSet* loads, DataSet* nodes, DataSet* vertices, DataSet* materials,Parameters* parameters){
 
 	/*Intermediary*/
@@ -18,9 +18,13 @@
 	Load* load=NULL;
 	Node* node=NULL;
+	int analysis_type;
+
+	/*Get analysis type: */
+	parameters->FindParam(&analysis_type,AnalysisTypeEnum);
 	
 	//_printf_("      Configuring elements...\n");
 	for (i=0;i<elements->Size();i++){
 		element=(Element*)elements->GetObjectByOffset(i);
-		element->Configure(elements,loads,nodes,materials,parameters,analysis_counter);
+		element->Configure(elements,loads,nodes,materials,parameters);
 	}
 	//_printf_("      Configuring loads...\n");
Index: /issm/trunk/src/c/modules/ConfigureObjectsx/ConfigureObjectsx.h
===================================================================
--- /issm/trunk/src/c/modules/ConfigureObjectsx/ConfigureObjectsx.h	(revision 4033)
+++ /issm/trunk/src/c/modules/ConfigureObjectsx/ConfigureObjectsx.h	(revision 4034)
@@ -9,5 +9,5 @@
 
 /* local prototypes: */
-int ConfigureObjectsx( DataSet* elements, DataSet* loads, DataSet* nodes, DataSet* vertices, DataSet* materials, Parameters* parameters,int analysis_counter, int analysis_type);
+int ConfigureObjectsx( DataSet* elements, DataSet* loads, DataSet* nodes, DataSet* vertices, DataSet* materials, Parameters* parameters);
 
 #endif  /* _CONFIGUREOBJECTSX_H */
Index: /issm/trunk/src/c/modules/Dux/Dux.cpp
===================================================================
--- /issm/trunk/src/c/modules/Dux/Dux.cpp	(revision 4033)
+++ /issm/trunk/src/c/modules/Dux/Dux.cpp	(revision 4034)
@@ -37,5 +37,5 @@
 	
 	/*Get size of matrix: */
-	gsize=nodes->NumberOfDofs();
+	gsize=nodes->NumberOfDofs(analysis_type);
 
 	/*Allocate du_g: */
Index: /issm/trunk/src/c/modules/GetSolutionFromInputsx/GetSolutionFromInputsx.cpp
===================================================================
--- /issm/trunk/src/c/modules/GetSolutionFromInputsx/GetSolutionFromInputsx.cpp	(revision 4033)
+++ /issm/trunk/src/c/modules/GetSolutionFromInputsx/GetSolutionFromInputsx.cpp	(revision 4034)
@@ -26,5 +26,5 @@
 
 	/*Get size of vector: */
-	gsize=nodes->NumberOfDofs();
+	gsize=nodes->NumberOfDofs(analysis_type);
 	
 	/*Initialize solution: */
Index: /issm/trunk/src/c/modules/ModelProcessorx/CreateDataSets.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/CreateDataSets.cpp	(revision 4033)
+++ /issm/trunk/src/c/modules/ModelProcessorx/CreateDataSets.cpp	(revision 4034)
@@ -116,5 +116,5 @@
 	
 	/*Generate objects that are not dependent on any analysis_type: */
-	CreateParameters(pparameters,iomodel,iomodel_handle,solution_type,analysis_type);
+	CreateParameters(pparameters,iomodel,iomodel_handle,solution_type,analysis_type,analysis_counter);
 
 	/*Sort datasets: */
Index: /issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 4033)
+++ /issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 4034)
@@ -12,5 +12,5 @@
 #include "./ModelProcessorx.h"
 
-void CreateParameters(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle,int solution_type,int analysis_type){
+void CreateParameters(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle,int solution_type,int analysis_type,int analysis_counter){
 	
 	int i;
@@ -31,4 +31,7 @@
 	parameters = new Parameters(ParametersEnum);
 
+	parameters->AddObject(new    IntParam(SolutionTypeEnum,solution_type));
+	parameters->AddObject(new    IntParam(AnalysisTypeEnum,analysis_type));
+	parameters->AddObject(new    IntParam(AnalysisCounterEnum,analysis_counter));
 	parameters->AddObject(new    IntParam(SolutionTypeEnum,solution_type));
 	if (iomodel->dim==2) parameters->AddObject(new IntParam(DimEnum,2));
Index: /issm/trunk/src/c/modules/ModelProcessorx/ModelProcessorx.h
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/ModelProcessorx.h	(revision 4033)
+++ /issm/trunk/src/c/modules/ModelProcessorx/ModelProcessorx.h	(revision 4034)
@@ -16,5 +16,5 @@
 void  CreateDataSets(DataSet** pelements,DataSet** pnodes,DataSet** pvertices, DataSet** pmaterials, DataSet** pconstraints, DataSet** ploads,Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle,int solution_type,int analysis_type,int nummodels,int analysis_counter);
 void  CreateElementsVerticesAndMaterials(DataSet** pelements,DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle,int nummodels);
-void  CreateParameters(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle,int solution_type,int analysis_type);
+void  CreateParameters(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle,int solution_type,int analysis_type,int analysis_counter);
 void  CreateParametersControl(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_type);
 void  CreateParametersQmu(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_type);
Index: /issm/trunk/src/c/modules/SpcNodesx/SpcNodesx.cpp
===================================================================
--- /issm/trunk/src/c/modules/SpcNodesx/SpcNodesx.cpp	(revision 4033)
+++ /issm/trunk/src/c/modules/SpcNodesx/SpcNodesx.cpp	(revision 4034)
@@ -10,5 +10,5 @@
 #include "../../EnumDefinitions/EnumDefinitions.h"
 
-void SpcNodesx(Vec* pyg, DataSet* nodes,DataSet* constraints,analysis_type){
+void SpcNodesx(Vec* pyg, DataSet* nodes,DataSet* constraints,int analysis_type){
 
 	int i;
Index: /issm/trunk/src/c/modules/SystemMatricesx/SystemMatricesx.cpp
===================================================================
--- /issm/trunk/src/c/modules/SystemMatricesx/SystemMatricesx.cpp	(revision 4033)
+++ /issm/trunk/src/c/modules/SystemMatricesx/SystemMatricesx.cpp	(revision 4034)
@@ -36,5 +36,5 @@
 
 	/*Get size of matrix: */
-	gsize=nodes->NumberOfDofs();
+	gsize=nodes->NumberOfDofs(analysis_type);
 
 	/*Compute stiffness matrix*/
Index: /issm/trunk/src/c/objects/Elements/Beam.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Beam.h	(revision 4033)
+++ /issm/trunk/src/c/objects/Elements/Beam.h	(revision 4034)
@@ -43,5 +43,5 @@
 		/*}}}*/
 		/*object management: {{{1*/
-		void  Configure(DataSet* elements,DataSet* loads,DataSet* nodes,DataSet* materials,Parameters* parameters,int analysis_counter);
+		void  Configure(DataSet* elements,DataSet* loads,DataSet* nodes,DataSet* materials,Parameters* parameters);
 		void  Echo();
 		void  DeepEcho();
Index: /issm/trunk/src/c/objects/Elements/Element.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Element.h	(revision 4033)
+++ /issm/trunk/src/c/objects/Elements/Element.h	(revision 4034)
@@ -24,5 +24,5 @@
 		
 		virtual        ~Element(){};
-		virtual void   Configure(DataSet* elements,DataSet* loads,DataSet* nodes,DataSet* materials,Parameters* parameters,int analysis_counter)=0;
+		virtual void   Configure(DataSet* elements,DataSet* loads,DataSet* nodes,DataSet* materials,Parameters* parameters)=0;
 		
 		virtual void   CreateKMatrix(Mat Kgg,int analysis_type,int sub_analysis_type)=0;
Index: /issm/trunk/src/c/objects/Elements/Penta.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 4033)
+++ /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 4034)
@@ -264,5 +264,10 @@
 /*Object management: */
 /*FUNCTION Penta::Configure {{{1*/
-void  Penta::Configure(DataSet* elementsin, DataSet* loadsin, DataSet* nodesin, DataSet* materialsin, Parameters* parametersin,int analysis_counter){
+void  Penta::Configure(DataSet* elementsin, DataSet* loadsin, DataSet* nodesin, DataSet* materialsin, Parameters* parametersin){
+
+	int analysis_counter;
+	
+	/*go into parameters and get the analysis_counter: */
+	parametersin->FindParam(&analysis_counter,AnalysisCounterEnum);
 
 	/*Take care of hooking up all objects for this element, ie links the objects in the hooks to their respective 
Index: /issm/trunk/src/c/objects/Elements/Penta.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.h	(revision 4033)
+++ /issm/trunk/src/c/objects/Elements/Penta.h	(revision 4034)
@@ -47,5 +47,5 @@
 		/*}}}*/
 		/*FUNCTION object management {{{1*/
-		void  Configure(DataSet* elements,DataSet* loads,DataSet* nodes,DataSet* materials,Parameters* parameters,int analysis_counter);
+		void  Configure(DataSet* elements,DataSet* loads,DataSet* nodes,DataSet* materials,Parameters* parameters);
 		Object* copy();
 		void  DeepEcho();
Index: /issm/trunk/src/c/objects/Elements/Sing.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Sing.cpp	(revision 4033)
+++ /issm/trunk/src/c/objects/Elements/Sing.cpp	(revision 4034)
@@ -39,5 +39,5 @@
 /*Object management*/
 /*FUNCTION Sing::Configure {{{1*/
-void  Sing::Configure(DataSet* elementsin,DataSet* loadsin, DataSet* nodesin, DataSet* materialsin, Parameters* parametersin,int analysis_counter){
+void  Sing::Configure(DataSet* elementsin,DataSet* loadsin, DataSet* nodesin, DataSet* materialsin, Parameters* parametersin){
 
 	ISSMERROR(" not supported yet!");
Index: /issm/trunk/src/c/objects/Elements/Sing.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Sing.h	(revision 4033)
+++ /issm/trunk/src/c/objects/Elements/Sing.h	(revision 4034)
@@ -43,5 +43,5 @@
 		/*}}}*/
 		/*object management: {{{1*/
-		void  Configure(DataSet* elements,DataSet* loads,DataSet* nodes,DataSet* materials,Parameters* parameters,int analysis_counter);
+		void  Configure(DataSet* elements,DataSet* loads,DataSet* nodes,DataSet* materials,Parameters* parameters);
 		Object* copy();
 		void  DeepEcho();
Index: /issm/trunk/src/c/objects/Elements/Tria.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 4033)
+++ /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 4034)
@@ -246,5 +246,10 @@
 /*Object management: */
 /*FUNCTION Tria::Configure {{{1*/
-void  Tria::Configure(DataSet* elementsin, DataSet* loadsin, DataSet* nodesin, DataSet* materialsin, Parameters* parametersin,int analysis_counter){
+void  Tria::Configure(DataSet* elementsin, DataSet* loadsin, DataSet* nodesin, DataSet* materialsin, Parameters* parametersin){
+
+	int analysis_counter;
+	
+	/*go into parameters and get the analysis_counter: */
+	parametersin->FindParam(&analysis_counter,AnalysisCounterEnum);
 
 	/*Take care of hooking up all objects for this element, ie links the objects in the hooks to their respective 
@@ -3003,8 +3008,8 @@
 		gauss_l1l2l3[2]=*(third_gauss_area_coord+ig);
 
-		if ( (sub_analysis_type==SurfaceXAnalysisEnum) || (sub_analysis_type==SurfaceYAnalysisEnum)){
+		if ( (sub_analysis_type==SurfaceSlopeXAnalysisEnum) || (sub_analysis_type==SurfaceSlopeYAnalysisEnum)){
 			inputs->GetParameterDerivativeValue(&slope[0],&xyz_list[0][0],&gauss_l1l2l3[0],SurfaceEnum);
 		}
-		if ( (sub_analysis_type==BedXAnalysisEnum) || (sub_analysis_type==BedYAnalysisEnum)){
+		if ( (sub_analysis_type==BedSlopeXAnalysisEnum) || (sub_analysis_type==BedSlopeYAnalysisEnum)){
 			inputs->GetParameterDerivativeValue(&slope[0],&xyz_list[0][0],&gauss_l1l2l3[0],BedEnum);
 		}
@@ -3017,8 +3022,8 @@
 
 		/*Build pe_g_gaussian vector: */
-		if ( (sub_analysis_type==SurfaceXAnalysisEnum) || (sub_analysis_type==BedXAnalysisEnum)){
+		if ( (sub_analysis_type==SurfaceSlopeXAnalysisEnum) || (sub_analysis_type==BedSlopeXAnalysisEnum)){
 			for(i=0;i<numdof;i++) pe_g_gaussian[i]=Jdet*gauss_weight*slope[0]*l1l2l3[i];
 		}
-		if ( (sub_analysis_type==SurfaceYAnalysisEnum) || (sub_analysis_type==BedYAnalysisEnum)){
+		if ( (sub_analysis_type==SurfaceSlopeYAnalysisEnum) || (sub_analysis_type==BedSlopeYAnalysisEnum)){
 			for(i=0;i<numdof;i++) pe_g_gaussian[i]=Jdet*gauss_weight*slope[1]*l1l2l3[i];
 		}
Index: /issm/trunk/src/c/objects/Elements/Tria.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.h	(revision 4033)
+++ /issm/trunk/src/c/objects/Elements/Tria.h	(revision 4034)
@@ -42,5 +42,5 @@
 		/*}}}*/
 		/*FUNCTION object management {{{1*/
-		void  Configure(DataSet* elements,DataSet* loads,DataSet* nodes,DataSet* materials,Parameters* parameters,int analysis_counter);
+		void  Configure(DataSet* elements,DataSet* loads,DataSet* nodes,DataSet* materials,Parameters* parameters);
 		Object* copy();
 		void  DeepEcho();
Index: /issm/trunk/src/c/objects/FemModel.cpp
===================================================================
--- /issm/trunk/src/c/objects/FemModel.cpp	(revision 4033)
+++ /issm/trunk/src/c/objects/FemModel.cpp	(revision 4034)
@@ -78,5 +78,5 @@
 
 		_printf_("   configuring element and loads:\n");
-		ConfigureObjectsx(elements, loads, nodes, vertices, materials,parameters,i,analysis_type);
+		ConfigureObjectsx(elements, loads, nodes, vertices, materials,parameters);
 	}
 
Index: /issm/trunk/src/c/solutions/ControlInitialization.cpp
===================================================================
--- /issm/trunk/src/c/solutions/ControlInitialization.cpp	(revision 4033)
+++ /issm/trunk/src/c/solutions/ControlInitialization.cpp	(revision 4034)
@@ -85,6 +85,6 @@
 	//compute slopes
 	if(verbose)_printf_("%s\n","computing bed slope (x and y derivatives)...");
-	diagnostic_core_linear(&slopex,fem_sl,SlopecomputeAnalysisEnum,BedXAnalysisEnum);
-	diagnostic_core_linear(&slopey,fem_sl,SlopecomputeAnalysisEnum,BedYAnalysisEnum);
+	diagnostic_core_linear(&slopex,fem_sl,SlopecomputeAnalysisEnum,BedSlopeXAnalysisEnum);
+	diagnostic_core_linear(&slopey,fem_sl,SlopecomputeAnalysisEnum,BedSlopeYAnalysisEnum);
 	FieldExtrudex( slopex, fem_sl->elements,fem_sl->nodes,fem_sl->vertices,fem_sl->loads,fem_sl->materials,fem_sl->parameters,"slopex",0);
 	FieldExtrudex( slopey, fem_sl->elements,fem_sl->nodes,fem_sl->vertices,fem_sl->loads,fem_sl->materials,fem_sl->parameters,"slopey",0);
