Index: /issm/trunk/cron/configs/linux64_larour
===================================================================
--- /issm/trunk/cron/configs/linux64_larour	(revision 4355)
+++ /issm/trunk/cron/configs/linux64_larour	(revision 4356)
@@ -1,4 +1,4 @@
 #
-########### Configuration file for a Eric Larour nightly run on Linux ############
+########### Configuration file for Eric Larour's nightly run on Linux ############
 
 #1: ISSM general configuration
@@ -31,5 +31,5 @@
 
 #execution path used for parallel runs
-EXECUTION_PATH="/u/wilkes-r1b/larour/Testing/Execution"
+EXECUTION_PATH="/u/astrid-r1b/larour/Testing/Execution"
 
 #External packages installation. If SKIPPACKAGESCOMPILATION="no" the
@@ -39,10 +39,10 @@
 #EXTERNALPACKAGESDIR and DEVPACKAGESDIR will be copied.
 
-SKIPPACKAGESCOMPILATION="yes"
+SKIPPACKAGESCOMPILATION="no"
 EXTERNALPACKAGESDIR="/u/astrid-r1b/larour/issm/trunk/externalpackages"
 DEVPACKAGESDIR="/u/astrid-r1b/larour/issm/trunk/devpackages"
 
 #List of external pakages to be installed
-EXTERNALPACKAGES="matlab mpich2 petsc metis triangle dakota"
+EXTERNALPACKAGES="matlab mpich2 petsc metis triangle"
 
 #3: ISSM Compilation
@@ -61,5 +61,5 @@
 
 #Sender email address
-EMAIL_ADRESS="eric.larour@jpl.nasa.gov"
+EMAIL_ADRESS="eric.larourm@jpl.nasa.gov"
 
 #5: Nightly run options
@@ -71,5 +71,5 @@
 
 #number of cpus used in the nightly runs.
-NUMCPUS_RUN=8
+NUMCPUS_RUN=14
 
 #Nightly run options. The matlab routine nightlyrun.m will be called
@@ -77,3 +77,3 @@
 #by Matlab and nightlyrun.m
 
-NROPTIONS="'parallel',1"
+NROPTIONS=""
Index: /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 4355)
+++ /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 4356)
@@ -25,4 +25,5 @@
 	/*Analysis types {{{1 */
 	AnalysisTypeEnum,
+	BaseAnalysisTypeEnum,
 	SubAnalysisTypeEnum,
 	AnalysisCounterEnum,
Index: /issm/trunk/src/c/modules/SystemMatricesx/SystemMatricesx.cpp
===================================================================
--- /issm/trunk/src/c/modules/SystemMatricesx/SystemMatricesx.cpp	(revision 4355)
+++ /issm/trunk/src/c/modules/SystemMatricesx/SystemMatricesx.cpp	(revision 4356)
@@ -25,4 +25,5 @@
 
 	int analysis_type;
+	int configuration_type;
 
 	/*First, get elements and loads configured: */
@@ -34,4 +35,5 @@
 	/*retrive parameters: */
 	parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+	parameters->FindParam(&configuration_type,ConfigurationType);
 
 	/*Recover parameters: */
@@ -40,5 +42,5 @@
 
 	/*Get size of matrix: */
-	gsize=nodes->NumberOfDofs(analysis_type);
+	gsize=nodes->NumberOfDofs(configuration_type);
 
 	/*Compute stiffness matrix*/
Index: /issm/trunk/src/c/objects/Elements/Penta.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 4355)
+++ /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 4356)
@@ -1785,4 +1785,9 @@
 	tria->results=tria_results;
 	tria->parameters=tria_parameters;
+	
+	
+	parametersin->FindParam(&analysis_counter,AnalysisCounterEnum);
+	this->SetHookNodes(tria_node_ids,analysis_counter); this->nodes=NULL; //set hook to nodes, for this analysis type
+
 
 	/*now deal with nodes, matice and matpar: */
Index: /issm/trunk/src/c/objects/FemModel.cpp
===================================================================
--- /issm/trunk/src/c/objects/FemModel.cpp	(revision 4355)
+++ /issm/trunk/src/c/objects/FemModel.cpp	(revision 4356)
@@ -59,5 +59,5 @@
 		_printf_("   processing finite element model of analysis %s:\n",EnumAsString(analysis_type_list[i]));
 		analysis_type=analysis_type_list[i];
-		this->SetCurrentAnalysis(analysis_type);
+		this->SetCurrentConfiguration(analysis_type);
 	
 		_printf_("      create degrees of freedom\n");
@@ -143,15 +143,15 @@
 
 /*Numerics: */
-/*FUNCTION FemModel::GetCurrentAnalysis {{{1*/
-int FemModel::GetCurrentAnalysis(){
-	return analysis_type_list[analysis_counter];
-}
-/*}}}1*/
-/*FUNCTION FemModel::SetCurrentAnalysis {{{1*/
-void FemModel::SetCurrentAnalysis(int analysis_type){
+/*FUNCTION FemModel::SetCurrentConfiguration{{{1*/
+void FemModel::SetCurrentConfiguration(int configuration_type,int analysis_type){
+
+	/*Use configuration_type to setup the analysis counter, the configurations of objects etc ... but use 
+	 * analysis_type to drive the element numerics. This allows for use of 1 configuration_type for several 
+	 * analyses. For example: do a SurfaceSlopeX, SurfaceSlopeY, BedSlopeX and BedSlopeY analysis using the 
+	 * SlopeCompute configuration.*/
 
 	int found=-1;
 	for(int i=0;i<nummodels;i++){
-		if (analysis_type_list[i]==analysis_type){
+		if (analysis_type_list[i]==configuration_type){
 			found=i;
 			break;
@@ -159,5 +159,5 @@
 	}
 	if(found!=-1) analysis_counter=found;
-	else ISSMERROR("Could not find analysis_type %s in list of FemModel analyses",EnumAsString(analysis_type));
+	else ISSMERROR("Could not find alias for analysis_type %s in list of FemModel analyses",EnumAsString(configuration_type));
 
 	/*activate matrices/vectors: */
@@ -171,33 +171,12 @@
 	this->parameters->SetParam(analysis_counter,AnalysisCounterEnum);
 	this->parameters->SetParam(analysis_type,AnalysisTypeEnum);
+	this->parameters->SetParam(configuration_type,ConfigurationTypeEnum);
 }
 /*}}}1*/
-/*FUNCTION FemModel::SetCurrentAnalysisAlias {{{1*/
-void FemModel::SetCurrentAnalysisAlias(int base_analysis_type,int real_analysis_type){
+/*FUNCTION FemModel::SetCurrentConfiguration{{{1*/
+void FemModel::SetCurrentConfiguration(int configuration_type){
 
-	/*Use base_analysis_type to setup the analysis counter, but the analysis type of the FemModel will remain 
-	 * real_analysis_type. This means we are using the base_analysis_type settings to run a similar, compatible 
-	 * analysis called real_analysis_type: */
-
-	int found=-1;
-	for(int i=0;i<nummodels;i++){
-		if (analysis_type_list[i]==base_analysis_type){
-			found=i;
-			break;
-		}
-	}
-	if(found!=-1) analysis_counter=found;
-	else ISSMERROR("Could not find alias for analysis_type %s in list of FemModel analyses",EnumAsString(base_analysis_type));
-
-	/*activate matrices/vectors: */
-	Rmg=m_Rmg[analysis_counter];
-	Gmn=m_Gmn[analysis_counter];
-	nodesets=m_nodesets[analysis_counter];
-	yg=m_yg[analysis_counter];
-	ys=m_ys[analysis_counter];
-
-	/*Now, plug analysis_counter and real_analysis_type inside the parameters: */
-	this->parameters->SetParam(analysis_counter,AnalysisCounterEnum);
-	this->parameters->SetParam(real_analysis_type,AnalysisTypeEnum);
+	/*overload: analysis_type = configuration_type: */
+	this->SetCurrentConfiguration(configuration_type,configuration_type);
 }
 /*}}}1*/
Index: /issm/trunk/src/c/objects/FemModel.h
===================================================================
--- /issm/trunk/src/c/objects/FemModel.h	(revision 4355)
+++ /issm/trunk/src/c/objects/FemModel.h	(revision 4356)
@@ -61,7 +61,6 @@
 
 		/*Fem: */
-		void  SetCurrentAnalysis(int analysis_type);
-		void  SetCurrentAnalysisAlias(int base_analysis_type,int real_analysis_type);
-		int   GetCurrentAnalysis(void);
+		void  SetCurrentConfiguration(int configuration_type);
+		void  SetCurrentConfiguration(int configuration_type,int analysis_type);
 
 };
Index: /issm/trunk/src/c/solutions/ResetBoundaryConditions.cpp
===================================================================
--- /issm/trunk/src/c/solutions/ResetBoundaryConditions.cpp	(revision 4355)
+++ /issm/trunk/src/c/solutions/ResetBoundaryConditions.cpp	(revision 4356)
@@ -19,5 +19,5 @@
 
 	/*set current analysis: */
-	femmodel->SetCurrentAnalysis(analysis_type);
+	femmodel->SetCurrentConfiguration(analysis_type);
 	
 	/*For this analysis_type, free existing boundary condition vectors: */
Index: /issm/trunk/src/c/solutions/adjoint_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/adjoint_core.cpp	(revision 4355)
+++ /issm/trunk/src/c/solutions/adjoint_core.cpp	(revision 4356)
@@ -42,6 +42,6 @@
 
 	/*set analysis type to compute velocity: */
-	if(isstokes)femmodel->SetCurrentAnalysis(DiagnosticStokesAnalysisEnum);
-	else femmodel->SetCurrentAnalysis(DiagnosticHorizAnalysisEnum);
+	if(isstokes)femmodel->SetCurrentConfiguration(DiagnosticStokesAnalysisEnum);
+	else femmodel->SetCurrentConfiguration(DiagnosticHorizAnalysisEnum);
 	
 	_printf_("%s\n","      recover solution for this stiffness and right hand side:");
@@ -70,6 +70,6 @@
 
 	/*Update inputs using adjoint solution, and same type of setup as diagnostic solution: */
-	if(isstokes)femmodel->SetCurrentAnalysisAlias(DiagnosticStokesAnalysisEnum,AdjointAnalysisEnum);
-	else femmodel->SetCurrentAnalysisAlias(DiagnosticHorizAnalysisEnum,AdjointAnalysisEnum);
+	if(isstokes)femmodel->SetCurrentConfiguration(DiagnosticStokesAnalysisEnum,AdjointAnalysisEnum);
+	else femmodel->SetCurrentConfiguration(DiagnosticHorizAnalysisEnum,AdjointAnalysisEnum);
 	
 	InputUpdateFromSolutionx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,adjoint_g);
Index: /issm/trunk/src/c/solutions/balancedthickness2_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/balancedthickness2_core.cpp	(revision 4355)
+++ /issm/trunk/src/c/solutions/balancedthickness2_core.cpp	(revision 4356)
@@ -20,5 +20,5 @@
 
 	/*activate formulation: */
-	femmodel->SetCurrentAnalysis(BalancedthicknessAnalysisEnum);
+	femmodel->SetCurrentConfiguration(BalancedthicknessAnalysisEnum);
 	
 	/*recover parameters: */
Index: /issm/trunk/src/c/solutions/balancedthickness_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/balancedthickness_core.cpp	(revision 4355)
+++ /issm/trunk/src/c/solutions/balancedthickness_core.cpp	(revision 4356)
@@ -20,5 +20,5 @@
 
 	/*activate formulation: */
-	femmodel->SetCurrentAnalysis(BalancedthicknessAnalysisEnum);
+	femmodel->SetCurrentConfiguration(BalancedthicknessAnalysisEnum);
 	
 	/*recover parameters: */
Index: /issm/trunk/src/c/solutions/balancedvelocities_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/balancedvelocities_core.cpp	(revision 4355)
+++ /issm/trunk/src/c/solutions/balancedvelocities_core.cpp	(revision 4356)
@@ -19,5 +19,5 @@
 
 	/*activate formulation: */
-	femmodel->SetCurrentAnalysis(BalancedvelocitiesAnalysisEnum);
+	femmodel->SetCurrentConfiguration(BalancedvelocitiesAnalysisEnum);
 	
 	/*recover parameters: */
Index: /issm/trunk/src/c/solutions/bedslope_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/bedslope_core.cpp	(revision 4355)
+++ /issm/trunk/src/c/solutions/bedslope_core.cpp	(revision 4356)
@@ -27,7 +27,7 @@
 
 	/*Call on core computations: */
-	femmodel->SetCurrentAnalysisAlias(BedSlopeAnalysisEnum,BedSlopeXAnalysisEnum);
+	femmodel->SetCurrentConfiguration(BedSlopeAnalysisEnum,BedSlopeXAnalysisEnum);
 	solver_linear(NULL,femmodel);
-	femmodel->SetCurrentAnalysisAlias(BedSlopeAnalysisEnum,BedSlopeYAnalysisEnum);
+	femmodel->SetCurrentConfiguration(BedSlopeAnalysisEnum,BedSlopeYAnalysisEnum);
 	solver_linear(NULL,femmodel);
 	
Index: /issm/trunk/src/c/solutions/diagnostic_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/diagnostic_core.cpp	(revision 4355)
+++ /issm/trunk/src/c/solutions/diagnostic_core.cpp	(revision 4356)
@@ -51,5 +51,5 @@
 			
 		if(verbose)_printf_("%s\n"," computing hutter velocities...");
-		femmodel->SetCurrentAnalysis(DiagnosticHutterAnalysisEnum);
+		femmodel->SetCurrentConfiguration(DiagnosticHutterAnalysisEnum);
 		solver_linear(NULL,femmodel);
 		
@@ -60,5 +60,5 @@
 		
 		if(verbose)_printf_("%s\n"," computing horizontal velocities...");
-		femmodel->SetCurrentAnalysis(DiagnosticHorizAnalysisEnum);
+		femmodel->SetCurrentConfiguration(DiagnosticHorizAnalysisEnum);
 		solver_diagnostic_nonlinear(NULL,NULL,NULL,femmodel,modify_loads); 
 	}
@@ -68,5 +68,5 @@
 
 		if(verbose)_printf_("%s\n"," computing vertical velocities...");
-		femmodel->SetCurrentAnalysis(DiagnosticVertAnalysisEnum);
+		femmodel->SetCurrentConfiguration(DiagnosticVertAnalysisEnum);
 		solver_linear(NULL,femmodel);
 
@@ -81,5 +81,5 @@
 
 			if(verbose)_printf_("%s\n"," computing stokes velocities and pressure ...");
-			femmodel->SetCurrentAnalysis(DiagnosticStokesAnalysisEnum);
+			femmodel->SetCurrentConfiguration(DiagnosticStokesAnalysisEnum);
 			solver_diagnostic_nonlinear(NULL,NULL,NULL,femmodel,conserve_loads);
 		}
Index: /issm/trunk/src/c/solutions/prognostic2_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/prognostic2_core.cpp	(revision 4355)
+++ /issm/trunk/src/c/solutions/prognostic2_core.cpp	(revision 4356)
@@ -18,5 +18,5 @@
 
 	/*activate formulation: */
-	femmodel->SetCurrentAnalysis(Prognostic2AnalysisEnum);
+	femmodel->SetCurrentConfiguration(Prognostic2AnalysisEnum);
 
 	/*recover parameters: */
Index: /issm/trunk/src/c/solutions/prognostic_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/prognostic_core.cpp	(revision 4355)
+++ /issm/trunk/src/c/solutions/prognostic_core.cpp	(revision 4356)
@@ -18,5 +18,5 @@
 
 	/*activate formulation: */
-	femmodel->SetCurrentAnalysis(PrognosticAnalysisEnum);
+	femmodel->SetCurrentConfiguration(PrognosticAnalysisEnum);
 	
 	/*recover parameters: */
Index: /issm/trunk/src/c/solutions/stokescontrolinit.cpp
===================================================================
--- /issm/trunk/src/c/solutions/stokescontrolinit.cpp	(revision 4355)
+++ /issm/trunk/src/c/solutions/stokescontrolinit.cpp	(revision 4356)
@@ -27,5 +27,5 @@
 	/*if no Stokes analysis carried out, assign output and return*/
 	if (!isstokes){
-		femmodel->SetCurrentAnalysis(DiagnosticHorizAnalysisEnum);
+		femmodel->SetCurrentConfiguration(DiagnosticHorizAnalysisEnum);
 		return;
 	}
@@ -40,5 +40,5 @@
 	
 	/*Run a complete diagnostic to update the Stokes spcs: */
-	femmodel->SetCurrentAnalysis(DiagnosticHorizAnalysisEnum);
+	femmodel->SetCurrentConfiguration(DiagnosticHorizAnalysisEnum);
 	solver_diagnostic_nonlinear(NULL,NULL,NULL,femmodel,conserve_loads);
 
@@ -54,5 +54,5 @@
 
 	if(verbose)_printf_("%s\n"," computing stokes velocities and pressure ...");
-	femmodel->SetCurrentAnalysis(DiagnosticStokesAnalysisEnum);
+	femmodel->SetCurrentConfiguration(DiagnosticStokesAnalysisEnum);
 	solver_diagnostic_nonlinear(NULL,NULL,NULL,femmodel,conserve_loads);
 }
Index: /issm/trunk/src/c/solutions/surfaceslope_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/surfaceslope_core.cpp	(revision 4355)
+++ /issm/trunk/src/c/solutions/surfaceslope_core.cpp	(revision 4356)
@@ -27,7 +27,7 @@
 
 	/*Call on core computations: */
-	femmodel->SetCurrentAnalysisAlias(SurfaceSlopeAnalysisEnum,SurfaceSlopeXAnalysisEnum);
+	femmodel->SetCurrentConfiguration(SurfaceSlopeAnalysisEnum,SurfaceSlopeXAnalysisEnum);
 	solver_linear(NULL,femmodel);
-	femmodel->SetCurrentAnalysisAlias(SurfaceSlopeAnalysisEnum,SurfaceSlopeYAnalysisEnum);
+	femmodel->SetCurrentConfiguration(SurfaceSlopeAnalysisEnum,SurfaceSlopeYAnalysisEnum);
 	solver_linear(NULL,femmodel);
 	
Index: /issm/trunk/src/c/solutions/thermal_core_step.cpp
===================================================================
--- /issm/trunk/src/c/solutions/thermal_core_step.cpp	(revision 4355)
+++ /issm/trunk/src/c/solutions/thermal_core_step.cpp	(revision 4356)
@@ -20,9 +20,9 @@
 
 	if(verbose)_printf_("computing temperatures:\n");
-	femmodel->SetCurrentAnalysis(ThermalAnalysisEnum);
+	femmodel->SetCurrentConfiguration(ThermalAnalysisEnum);
 	solver_thermal_nonlinear(NULL,NULL,femmodel);
 
 	if(verbose)_printf_("computing melting:\n");
-	femmodel->SetCurrentAnalysis(MeltingAnalysisEnum);
+	femmodel->SetCurrentConfiguration(MeltingAnalysisEnum);
 	solver_linear(NULL,femmodel);
 }
