Index: /issm/trunk/src/c/Makefile.am
===================================================================
--- /issm/trunk/src/c/Makefile.am	(revision 10567)
+++ /issm/trunk/src/c/Makefile.am	(revision 10568)
@@ -344,4 +344,5 @@
 					./modules/InputConvergencex/InputConvergencex.h\
 					./solutions/convergence.cpp\
+					./solutions/ProcessArguments.cpp\
 					./solutions/WriteLockFile.cpp\
 					./solutions/ResetBoundaryConditions.cpp\
Index: /issm/trunk/src/c/solutions/ProcessArguments.cpp
===================================================================
--- /issm/trunk/src/c/solutions/ProcessArguments.cpp	(revision 10568)
+++ /issm/trunk/src/c/solutions/ProcessArguments.cpp	(revision 10568)
@@ -0,0 +1,31 @@
+/*!\file:  ProcessArguments.cpp
+ * \brief: process arguments
+ */ 
+
+#include <stdio.h>
+#include "../shared/shared.h"
+#include "../include/include.h"
+
+void ProcessArguments(int* solution_type,char** pbinfilename,char** poutbinfilename,char** ppetscfilename,char** plockfilename,int argc,char **argv){
+
+	char *modelname      = NULL;
+	char *binfilename    = NULL;
+	char *outbinfilename = NULL;
+	char *petscfilename  = NULL;
+	char *lockfilename   = NULL;
+
+	if(argc<2)_error_("Usage error: no solution requested");
+	*solution_type=StringToEnumx(argv[1]);
+	if(argc<3)_error_("Usage error: missing model name");
+	modelname=argv[3];
+	binfilename    = (char*)xmalloc((strlen(modelname)+strlen(".bin")   +1)*sizeof(char)); sprintf(binfilename,   "%s%s",modelname,".bin");
+	outbinfilename = (char*)xmalloc((strlen(modelname)+strlen(".outbin")+1)*sizeof(char)); sprintf(outbinfilename,"%s%s",modelname,".outbin");
+	petscfilename  = (char*)xmalloc((strlen(modelname)+strlen(".petsc") +1)*sizeof(char)); sprintf(petscfilename, "%s%s",modelname,".petsc");
+	lockfilename   = (char*)xmalloc((strlen(modelname)+strlen(".lock")  +1)*sizeof(char)); sprintf(lockfilename,  "%s%s",modelname,".lock");
+
+	/*Clean up and assign output pointer*/
+	*pbinfilename=binfilename;
+	*poutbinfilename=outbinfilename;
+	*ppetscfilename=petscfilename;
+	*plockfilename=lockfilename;
+}
Index: /issm/trunk/src/c/solutions/issm.cpp
===================================================================
--- /issm/trunk/src/c/solutions/issm.cpp	(revision 10567)
+++ /issm/trunk/src/c/solutions/issm.cpp	(revision 10568)
@@ -6,5 +6,5 @@
 #include "../include/globals.h"
 
-int main(int argc,char  **argv){
+int main(int argc,char **argv){
 
 	/*MPI: */
@@ -29,5 +29,4 @@
 
 	/*File names*/
-	char *modelname      = NULL;
 	char *lockfilename   = NULL;
 	char *binfilename    = NULL;
@@ -57,14 +56,5 @@
 	/*First process inputs*/
 	_printf_(true,"Launching solution sequence\n");
-	if(argc<2)_error_("Usage error: no solution requested");
-	solution_type=StringToEnumx(argv[1]);
-	if(argc<3)_error_("Usage error: missing model name");
-	modelname=argv[3];
-	binfilename    = (char*)xmalloc((strlen(modelname)+strlen(".bin")   +1)*sizeof(char)); sprintf(binfilename,   "%s%s",modelname,".bin");
-	outbinfilename = (char*)xmalloc((strlen(modelname)+strlen(".outbin")+1)*sizeof(char)); sprintf(outbinfilename,"%s%s",modelname,".outbin");
-	petscfilename  = (char*)xmalloc((strlen(modelname)+strlen(".petsc") +1)*sizeof(char)); sprintf(petscfilename, "%s%s",modelname,".petsc");
-	lockfilename   = (char*)xmalloc((strlen(modelname)+strlen(".lock")  +1)*sizeof(char)); sprintf(lockfilename,  "%s%s",modelname,".lock");
-
-	MPI_Barrier(MPI_COMM_WORLD); start_init=MPI_Wtime();
+	ProcessArguments(&solution_type,&binfilename,&outbinfilename,&petscfilename,&lockfilename,argc,argv);
 
 	/*out of solution_type, figure out types of analyses needed in the femmodel: */
@@ -72,4 +62,5 @@
 	
 	/*Create femmodel, using input file: */
+	MPI_Barrier(MPI_COMM_WORLD); start_init=MPI_Wtime();
 	femmodel=new FemModel(binfilename,outbinfilename,solution_type,analyses,numanalyses);
 	
@@ -90,5 +81,4 @@
 	femmodel->parameters->FindParam(&dakota_analysis,QmuIsdakotaEnum);
 	femmodel->parameters->FindParam(&control_analysis,InversionIscontrolEnum);
-
 	MPI_Barrier(MPI_COMM_WORLD); finish_init=MPI_Wtime();
 
@@ -152,2 +142,3 @@
 	return 0; //unix success return;
 }
+
Index: /issm/trunk/src/c/solutions/solutions.h
===================================================================
--- /issm/trunk/src/c/solutions/solutions.h	(revision 10567)
+++ /issm/trunk/src/c/solutions/solutions.h	(revision 10568)
@@ -42,4 +42,5 @@
 
 //diverse
+void ProcessArguments(int* solution,char** pbinname,char** poutbinname,char** ppetscname,char** plockname,int argc,char **argv);
 void WriteLockFile(char* filename);
 void controlrestart(FemModel* femmodel,double* J);
