Index: /issm/trunk/src/c/parallel/diagnostic.cpp
===================================================================
--- /issm/trunk/src/c/parallel/diagnostic.cpp	(revision 2488)
+++ /issm/trunk/src/c/parallel/diagnostic.cpp	(revision 2489)
@@ -45,4 +45,9 @@
 	DataSet* parameters=NULL;
 
+	/*time*/
+	double   start, finish;
+	double   start_core, finish_core;
+	double   start_init, finish_init;
+
 	MODULEBOOT();
 
@@ -51,5 +56,7 @@
 	#endif
 
+	/*Initialize Petsc and get start time*/
 	PetscInitialize(&argc,&argv,(char *)0,"");  
+	MPI_Barrier(MPI_COMM_WORLD); start=MPI_Wtime();
 
 	/*Size and rank: */
@@ -63,4 +70,5 @@
 
 	/*Initialize model structure: */
+	MPI_Barrier(MPI_COMM_WORLD); start_init=MPI_Wtime();
 	model=new Model();
 
@@ -106,4 +114,6 @@
 	results=new DataSet(ResultsEnum());
 
+	MPI_Barrier(MPI_COMM_WORLD); finish_init=MPI_Wtime();
+
 	/*are we running the solution sequence, or a qmu wrapper around it? : */
 	if(!qmu_analysis){
@@ -111,5 +121,7 @@
 			/*run diagnostic analysis: */
 			_printf_("call computational core:\n");
+			MPI_Barrier(MPI_COMM_WORLD); start_core=MPI_Wtime( );
 			diagnostic_core(results,model,inputs);
+			MPI_Barrier(MPI_COMM_WORLD); finish_core=MPI_Wtime( );
 
 			/*Add analysis_type to results: */
@@ -123,5 +135,7 @@
 			/*run control analysis: */
 			_printf_("call computational core:\n");
+			MPI_Barrier(MPI_COMM_WORLD); start_core=MPI_Wtime( );
 			control_core(results,model,inputs);
+			MPI_Barrier(MPI_COMM_WORLD); finish_core=MPI_Wtime( );
 
 			/*Add analysis_type and control_type to results: */
@@ -145,5 +159,7 @@
 
 		#ifdef _HAVE_DAKOTA_ 
+		MPI_Barrier(MPI_COMM_WORLD); start_core=MPI_Wtime( );
 		Qmux(model,inputs,DiagnosticAnalysisEnum(),NoneAnalysisEnum());
+		MPI_Barrier(MPI_COMM_WORLD); finish_core=MPI_Wtime( );
 	 	#else
 		throw ErrorException(__FUNCT__," Dakota not present, cannot do qmu!");
@@ -164,4 +180,9 @@
 	delete processed_results;
 
+	/*Get finish time and close*/
+	MPI_Barrier(MPI_COMM_WORLD); finish = MPI_Wtime( );
+	_printf_("\n   %-34s %f seconds  \n","Model initialization elapsed time:",finish_init-start_init);
+	_printf_("   %-34s %f seconds  \n","Core solution elapsed time:",finish_core-start_core);
+	_printf_("   %-34s %f seconds\n\n","Total elapsed time:",finish-start);
 	_printf_("closing MPI and Petsc\n");
 	PetscFinalize(); 
