Index: /issm/trunk-jpl/src/wrappers/python/io/FetchPythonData.cpp
===================================================================
--- /issm/trunk-jpl/src/wrappers/python/io/FetchPythonData.cpp	(revision 14092)
+++ /issm/trunk-jpl/src/wrappers/python/io/FetchPythonData.cpp	(revision 14093)
@@ -20,29 +20,47 @@
 void FetchData(double* pscalar,PyObject* py_float){
 
-	double scalar;
+	double dscalar;
 
 	/*return internal value: */
-	scalar=PyFloat_AsDouble(py_float);
-
-	/*output: */
-	*pscalar=scalar;
-}
-/*}}}*/
-/*FUNCTION FetchData(int* pinteger,PyObject* py_long){{{*/
-void FetchData(int* pinteger, PyObject* py_long){
-
-	int integer;
+	if      (PyFloat_Check((PyArrayObject*)py_float))
+		dscalar=PyFloat_AsDouble(py_float);
+	else if (PyInt_Check((PyArrayObject*)py_float))
+		dscalar=(double)PyInt_AsLong(py_float);
+	else if (PyLong_Check((PyArrayObject*)py_float))
+		dscalar=PyLong_AsDouble(py_float);
+	else if (PyBool_Check((PyArrayObject*)py_float))
+		dscalar=(double)PyLong_AsLong(py_float);
+	else
+		_error_("unrecognized float type in input!");
+
+	/*output: */
+	*pscalar=dscalar;
+}
+/*}}}*/
+/*FUNCTION FetchData(int* pscalar,PyObject* py_long){{{*/
+void FetchData(int* pscalar, PyObject* py_long){
+
+	int iscalar;
 
 	/*return internal value: */
-	integer=(int)PyLong_AsLong(py_long);
-
-	/*output: */
-	*pinteger=integer;
-}
-/*}}}*/
-/*FUNCTION FetchData(bool* pboolean,PyObject* py_boolean){{{*/
-void FetchData(bool* pboolean,PyObject* py_boolean){
-
-	bool boolean;
+	if      (PyInt_Check((PyArrayObject*)py_long))
+		iscalar=(int)PyInt_AsLong(py_long);
+	else if (PyLong_Check((PyArrayObject*)py_long))
+		iscalar=(int)PyLong_AsLong(py_long);
+	else if (PyFloat_Check((PyArrayObject*)py_long))
+		iscalar=(int)PyFloat_AsDouble(py_long);
+	else if (PyBool_Check((PyArrayObject*)py_long))
+		iscalar=(int)PyLong_AsLong(py_long);
+	else
+		_error_("unrecognized long type in input!");
+
+	/*output: */
+	*pscalar=iscalar;
+}
+/*}}}*/
+/*FUNCTION FetchData(bool* pscalar,PyObject* py_boolean){{{*/
+void FetchData(bool* pscalar,PyObject* py_boolean){
+
+	bool bscalar;
 
 	/*check this is indeed a subtype of long type: */
@@ -50,8 +68,8 @@
 
 	/*extract boolean: */
-	boolean=(bool)PyLong_AsLong(py_boolean);
+	bscalar=(bool)PyLong_AsLong(py_boolean);
 
 	/*simple copy: */
-	*pboolean=boolean;
+	*pscalar=bscalar;
 
 }
@@ -72,43 +90,58 @@
 	int i;
 
-	/*retrieve dimensions: */
-	ndim=PyArray_NDIM((const PyArrayObject*)py_matrix);
-	if(ndim!=2)_error_("expecting an MxN matrix in input!");
-	dims=PyArray_DIMS((PyArrayObject*)py_matrix);
-	M=dims[0]; N=dims[1];
-
-	if (M && N) {
-		if      (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_DOUBLE) {
-			/*retrieve internal value: */
-			dmatrix=(double*)PyArray_DATA((PyArrayObject*)py_matrix);
-
-			/*copy matrix: */
-			matrix=xNew<double>(M*N);
-			memcpy(matrix,dmatrix,(M*N)*sizeof(double));
-		}
-
-		else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_INT64) {
-			/*retrieve internal value: */
-			lmatrix=(long*)PyArray_DATA((PyArrayObject*)py_matrix);
-
-			/*transform into double matrix: */
-			matrix=xNew<double>(M*N);
-			for(i=0;i<M*N;i++)matrix[i]=(double)lmatrix[i];
-		}
-
-		else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_BOOL) {
-			/*retrieve internal value: */
-			bmatrix=(bool*)PyArray_DATA((PyArrayObject*)py_matrix);
-
-			/*transform into double matrix: */
-			matrix=xNew<double>(M*N);
-			for(i=0;i<M*N;i++)matrix[i]=(double)bmatrix[i];
-		}
-
+	if     (PyArray_Check((PyArrayObject*)py_matrix)) {
+		/*retrieve dimensions: */
+		ndim=PyArray_NDIM((const PyArrayObject*)py_matrix);
+		if(ndim!=2)_error_("expecting an MxN matrix in input!");
+		dims=PyArray_DIMS((PyArrayObject*)py_matrix);
+		M=dims[0]; N=dims[1];
+
+		if (M && N) {
+			if      (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_DOUBLE) {
+				/*retrieve internal value: */
+				dmatrix=(double*)PyArray_DATA((PyArrayObject*)py_matrix);
+
+				/*copy matrix: */
+				matrix=xNew<double>(M*N);
+				memcpy(matrix,dmatrix,(M*N)*sizeof(double));
+			}
+
+			else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_INT64) {
+				/*retrieve internal value: */
+				lmatrix=(long*)PyArray_DATA((PyArrayObject*)py_matrix);
+
+				/*transform into double matrix: */
+				matrix=xNew<double>(M*N);
+				for(i=0;i<M*N;i++)matrix[i]=(double)lmatrix[i];
+			}
+
+			else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_BOOL) {
+				/*retrieve internal value: */
+				bmatrix=(bool*)PyArray_DATA((PyArrayObject*)py_matrix);
+
+				/*transform into double matrix: */
+				matrix=xNew<double>(M*N);
+				for(i=0;i<M*N;i++)matrix[i]=(double)bmatrix[i];
+			}
+
+			else
+				_error_("unrecognized pyarray type in input!");
+		}
 		else
-			_error_("unrecognized matrix type in input!");
-	}
+			matrix=NULL;
+	}
+
+	else if (PyFloat_Check((PyArrayObject*)py_matrix) ||
+			 PyInt_Check((PyArrayObject*)py_matrix) ||
+			 PyLong_Check((PyArrayObject*)py_matrix) ||
+			 PyBool_Check((PyArrayObject*)py_matrix)) {
+		M=1;
+		N=1;
+		matrix=xNew<double>(M*N);
+		FetchData(&(matrix[0]),py_matrix);
+	}
+
 	else
-		matrix=NULL;
+		_error_("unrecognized array type in input!");
 
 	/*output: */
@@ -133,43 +166,58 @@
 	int i;
 
-	/*retrieve dimensions: */
-	ndim=PyArray_NDIM((const PyArrayObject*)py_matrix);
-	if(ndim!=2)_error_("expecting an MxN matrix in input!");
-	dims=PyArray_DIMS((PyArrayObject*)py_matrix);
-	M=dims[0]; N=dims[1];
-
-	if (M && N) {
-		if      (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_DOUBLE) {
-			/*retrieve internal value: */
-			dmatrix=(double*)PyArray_DATA((PyArrayObject*)py_matrix);
-
-			/*transform into integer matrix: */
-			matrix=xNew<int>(M*N);
-			for(i=0;i<M*N;i++)matrix[i]=(int)dmatrix[i];
-		}
-
-		else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_INT64) {
-			/*retrieve internal value: */
-			lmatrix=(long*)PyArray_DATA((PyArrayObject*)py_matrix);
-
-			/*transform into integer matrix: */
-			matrix=xNew<int>(M*N);
-			for(i=0;i<M*N;i++)matrix[i]=(int)lmatrix[i];
-		}
-
-		else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_BOOL) {
-			/*retrieve internal value: */
-			bmatrix=(bool*)PyArray_DATA((PyArrayObject*)py_matrix);
-
-			/*transform into integer matrix: */
-			matrix=xNew<int>(M*N);
-			for(i=0;i<M*N;i++)matrix[i]=(int)bmatrix[i];
-		}
-
+	if     (PyArray_Check((PyArrayObject*)py_matrix)) {
+		/*retrieve dimensions: */
+		ndim=PyArray_NDIM((const PyArrayObject*)py_matrix);
+		if(ndim!=2)_error_("expecting an MxN matrix in input!");
+		dims=PyArray_DIMS((PyArrayObject*)py_matrix);
+		M=dims[0]; N=dims[1];
+
+		if (M && N) {
+			if      (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_DOUBLE) {
+				/*retrieve internal value: */
+				dmatrix=(double*)PyArray_DATA((PyArrayObject*)py_matrix);
+
+				/*transform into integer matrix: */
+				matrix=xNew<int>(M*N);
+				for(i=0;i<M*N;i++)matrix[i]=(int)dmatrix[i];
+			}
+
+			else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_INT64) {
+				/*retrieve internal value: */
+				lmatrix=(long*)PyArray_DATA((PyArrayObject*)py_matrix);
+
+				/*transform into integer matrix: */
+				matrix=xNew<int>(M*N);
+				for(i=0;i<M*N;i++)matrix[i]=(int)lmatrix[i];
+			}
+
+			else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_BOOL) {
+				/*retrieve internal value: */
+				bmatrix=(bool*)PyArray_DATA((PyArrayObject*)py_matrix);
+
+				/*transform into integer matrix: */
+				matrix=xNew<int>(M*N);
+				for(i=0;i<M*N;i++)matrix[i]=(int)bmatrix[i];
+			}
+
+			else
+				_error_("unrecognized pyarray type in input!");
+		}
 		else
-			_error_("unrecognized matrix type in input!");
-	}
+			matrix=NULL;
+	}
+
+	else if (PyInt_Check((PyArrayObject*)py_matrix) ||
+			 PyLong_Check((PyArrayObject*)py_matrix) ||
+			 PyFloat_Check((PyArrayObject*)py_matrix) ||
+			 PyBool_Check((PyArrayObject*)py_matrix)) {
+		M=1;
+		N=1;
+		matrix=xNew<int>(M*N);
+		FetchData(&(matrix[0]),py_matrix);
+	}
+
 	else
-		matrix=NULL;
+		_error_("unrecognized array type in input!");
 
 	/*output: */
Index: /issm/trunk-jpl/src/wrappers/python/io/pythonio.h
===================================================================
--- /issm/trunk-jpl/src/wrappers/python/io/pythonio.h	(revision 14092)
+++ /issm/trunk-jpl/src/wrappers/python/io/pythonio.h	(revision 14093)
@@ -34,5 +34,5 @@
 void FetchData(char** pstring,PyObject* py_unicode);
 void FetchData(double* pscalar,PyObject* py_float);
-void FetchData(int* pinteger,PyObject* py_long);
+void FetchData(int* pscalar,PyObject* py_long);
 void FetchData(bool* pbool,PyObject* py_boolean);
 void FetchData(BamgGeom** bamggeom,PyObject* py_dict);
