Index: /issm/trunk-jpl/src/c/classes/FemModel.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 24993)
+++ /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 24994)
@@ -710,10 +710,26 @@
 			break;
 
-		case HydrologySolutionEnum:
-			analyses_temp[numanalyses++]=HydrologyShreveAnalysisEnum;
-			analyses_temp[numanalyses++]=HydrologyDCInefficientAnalysisEnum;
-			analyses_temp[numanalyses++]=HydrologyDCEfficientAnalysisEnum;
-			analyses_temp[numanalyses++]=L2ProjectionBaseAnalysisEnum;
-			analyses_temp[numanalyses++]=L2ProjectionEPLAnalysisEnum;
+		case HydrologySolutionEnum:{
+			int hydrology_model;
+			iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+			if(hydrology_model==HydrologyshreveEnum){
+				analyses_temp[numanalyses++]=HydrologyShreveAnalysisEnum;
+			}
+			else if(hydrology_model==HydrologyGlaDSEnum){
+				analyses_temp[numanalyses++]=HydrologyGlaDSAnalysisEnum;
+			}
+			if(hydrology_model==HydrologyshaktiEnum){
+				analyses_temp[numanalyses++]=HydrologyShaktiAnalysisEnum;
+			}
+			if(hydrology_model==HydrologypismEnum){
+				analyses_temp[numanalyses++]=HydrologyPismAnalysisEnum;
+			}
+			if(hydrology_model==HydrologydcEnum){
+				analyses_temp[numanalyses++]=HydrologyDCInefficientAnalysisEnum;
+				analyses_temp[numanalyses++]=HydrologyDCEfficientAnalysisEnum;
+				analyses_temp[numanalyses++]=L2ProjectionEPLAnalysisEnum;
+				analyses_temp[numanalyses++]=L2ProjectionBaseAnalysisEnum;
+			}
+		}
 			break;
 
@@ -821,11 +837,7 @@
 			}
 			if(ishydrology){
-				analyses_temp[numanalyses++]=HydrologyShreveAnalysisEnum;
-				analyses_temp[numanalyses++]=HydrologyGlaDSAnalysisEnum;
-				analyses_temp[numanalyses++]=HydrologyShaktiAnalysisEnum;
-				analyses_temp[numanalyses++]=HydrologyPismAnalysisEnum;
-				analyses_temp[numanalyses++]=HydrologyDCInefficientAnalysisEnum;
-				analyses_temp[numanalyses++]=HydrologyDCEfficientAnalysisEnum;
-				analyses_temp[numanalyses++]=L2ProjectionEPLAnalysisEnum;
+				SolutionAnalysesList(&analyses_iter,&num_analyses_iter,iomodel,HydrologySolutionEnum);
+            xMemCpy<int>(&analyses_temp[numanalyses],analyses_iter,num_analyses_iter);
+				numanalyses+=num_analyses_iter; xDelete<int>(analyses_iter);
 			}
 			if(isdamage){
@@ -4698,5 +4710,5 @@
 	pRSLgi->SetValues(gsize,indices,RSLgi,ADD_VAL);
 	pRSLgi->Assemble();
-	
+
 	/*Sum all eustatic components from all cpus:*/
 	ISSM_MPI_Reduce (&eustatic_cpu,&eustatic,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
@@ -4730,5 +4742,5 @@
 	this->parameters->FindParam(&computeelastic,SealevelriseElasticEnum);
 
-	/*Initialize temporary vector that will be used to sum eustatic components on all local elements, prior 
+	/*Initialize temporary vector that will be used to sum eustatic components on all local elements, prior
 	 * to assembly:*/
 	gsize = this->nodes->NumberOfDofs(GsetEnum);
@@ -4804,5 +4816,5 @@
 
 	/*recover lat,long and radius vectors from vertices: */
-	VertexCoordinatesx(&latitude,&longitude,&radius,this->vertices,spherical); 
+	VertexCoordinatesx(&latitude,&longitude,&radius,this->vertices,spherical);
 
 	/* Green's function (1+k_2-h_2/g): checked against Glenn Milne's thesis Chapter 3 (eqs: 3.3-4, 3.10-11)
@@ -4853,5 +4865,5 @@
 	int  gsize;
 	int  horiz;
-	
+
 	/*retrieve parameters:*/
 	this->parameters->FindParam(&horiz,SealevelriseHorizEnum);
@@ -4860,5 +4872,5 @@
 	RSLg=pRSLg->ToMPISerial();
 
-	/*Initialize temporary vector that will be used to sum eustatic components on all local elements, prior 
+	/*Initialize temporary vector that will be used to sum eustatic components on all local elements, prior
 	 * to assembly:*/
 	gsize = this->nodes->NumberOfDofs(GsetEnum);
@@ -4911,5 +4923,5 @@
 		oceanvalue_cpu += element->OceanAverage(RSLg_serial,masks);
 	}
-	
+
 	ISSM_MPI_Reduce (&oceanvalue_cpu,&oceanvalue,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
 	ISSM_MPI_Bcast(&oceanvalue,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
