Index: /issm/trunk-jpl/src/c/solutions/issm.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/issm.cpp	(revision 12654)
+++ /issm/trunk-jpl/src/c/solutions/issm.cpp	(revision 12655)
@@ -35,4 +35,9 @@
 	int      ierr;
 
+	/*PETSc profiling*/   
+	bool petsc_profiling = false;
+	PetscLogDouble petscTime_start, petscTime_finish;
+	PetscLogDouble petsc_memUse, petscFlops_start, petscFlops_finish;
+
 	ISSMBOOT();
 
@@ -94,4 +99,6 @@
 	femmodel->parameters->FindParam(&control_analysis,InversionIscontrolEnum);
 	femmodel->parameters->FindParam(&tao_analysis,InversionTaoEnum);
+   femmodel->parameters->FindParam(&petsc_profiling,DebugPetscProfilingEnum); 
+
 	#ifdef _HAVE_MPI_
 	MPI_Barrier(MPI_COMM_WORLD); finish_init=MPI_Wtime();
@@ -107,4 +114,9 @@
 	#endif
 	
+	if(petsc_profiling){
+		PetscGetTime(&petscTime_start);
+		PetscGetFlops(&petscFlops_start);
+	}
+
 	if(dakota_analysis){
 		#ifdef _HAVE_DAKOTA_
@@ -127,4 +139,19 @@
 		solutioncore(femmodel);
 	}
+
+	if(petsc_profiling){
+		PetscGetTime(&petscTime_finish);
+		PetscGetFlops(&petscFlops_finish);
+		PetscMemoryGetCurrentUsage(&petsc_memUse);
+
+		_pprintLine_("PETSc elapsed time  : " << (petscTime_finish-petscTime_start) << "  Seconds");
+		_pprintLine_("PETSc elapsed flops : " << (petscFlops_finish-petscFlops_start) << "  Flops");
+		_pprintLine_("PETSc memory used   : " << petsc_memUse << "  Bytes");
+		
+		femmodel->results->AddObject(new DoubleExternalResult(femmodel->results->Size()+1, PetscProfilingSolutionTimeEnum, (petscTime_finish-petscTime_start), 1, 0));
+		femmodel->results->AddObject(new DoubleExternalResult(femmodel->results->Size()+1, PetscProfilingCurrentMemEnum, petsc_memUse, 1, 0));
+		femmodel->results->AddObject(new DoubleExternalResult(femmodel->results->Size()+1, PetscProfilingCurrentFlopsEnum, (petscFlops_finish-petscFlops_start), 1, 0));
+	}
+
 	#ifdef _HAVE_MPI_
 	MPI_Barrier(MPI_COMM_WORLD); finish_core=MPI_Wtime( );
@@ -132,5 +159,5 @@
 	finish_core=(IssmPDouble)clock();
 	#endif
-	
+
 	_pprintLine_("write results to disk:");
 	OutputResultsx(femmodel->elements, femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,femmodel->results);
@@ -143,5 +170,5 @@
 	}
 
-	/*Free ressources */
+	/*Free resources */
 	xDelete<int>(analyses);
 	xDelete<char>(lockfilename);
