Index: /issm/branches/trunk-larour-SLPS2022/src/c/classes/IoModel.cpp
===================================================================
--- /issm/branches/trunk-larour-SLPS2022/src/c/classes/IoModel.cpp	(revision 27064)
+++ /issm/branches/trunk-larour-SLPS2022/src/c/classes/IoModel.cpp	(revision 27065)
@@ -1838,4 +1838,22 @@
 				matrix=array[i];
 
+				//initialize times:
+				if(M==this->numberofvertices || M==(this->numberofvertices+1)){
+					times=xNew<IssmDouble>(N);
+					if(M==this->numberofvertices) times[0] = matrix[M-1];
+					if(M==this->numberofvertices+1) for(int t=0;t<N;t++) times[t] = matrix[(M-1)*N+t];
+				}
+				else if(M==this->numberofelements || M==(this->numberofelements+1)){
+					times=xNew<IssmDouble>(N);
+					if(M==this->numberofelements) times[0] = matrix[M-1];
+					if(M==this->numberofelements+1) for(int t=0;t<N;t++) times[t] = matrix[(M-1)*N+t];
+				}
+				else if(M==2 || M==1){
+					times=xNew<IssmDouble>(N);
+					if(M==1) times[0] = 0;
+					if(M==2) for(int t=0;t<N;t++) times[t] = matrix[(M-1)*N+t];
+				}
+				else _error_("FetchDataToInput error message: row size of MatArray elements should be either numberofelements (+1) or numberofvertices (+1)");
+
 				//initialize transient input dataset:
 				TransientInput* transientinput=inputs->SetDatasetTransientInput(input_enum,i, times,N);
@@ -1858,9 +1876,4 @@
 
 					if(M==this->numberofvertices || M==(this->numberofvertices+1)){
-
-						//recover time vector: 
-						times=xNew<IssmDouble>(N);
-						if(M==this->numberofvertices) times[0] = matrix[M-1];
-						if(M==this->numberofvertices+1) for(int t=0;t<N;t++) times[t] = matrix[(M-1)*N+t];
 
 						IssmDouble* values=xNew<IssmDouble>(numvertices);
@@ -1880,9 +1893,4 @@
 
 						IssmDouble value;
-
-						//recover time vector: 
-						times=xNew<IssmDouble>(N);
-						if(M==this->numberofelements) times[0] = matrix[M-1];
-						if(M==this->numberofelements+1) for(int t=0;t<N;t++) times[t] = matrix[(M-1)*N+t];
 
 						for(int t=0;t<N;t++){ 
@@ -1898,9 +1906,4 @@
 					else if(M==2 || M==1){
 						IssmDouble value;
-
-						//recover time vector: 
-						times=xNew<IssmDouble>(N);
-						if(M==1) times[0] = 0;
-						if(M==2) for(int t=0;t<N;t++) times[t] = matrix[(M-1)*N+t];
 
 						for(int t=0;t<N;t++){ 
