Index: /issm/trunk-jpl/src/m/classes/basalforcingsismip6.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/basalforcingsismip6.m	(revision 23780)
+++ /issm/trunk-jpl/src/m/classes/basalforcingsismip6.m	(revision 23781)
@@ -11,5 +11,4 @@
 		tf                        = NaN;
 		tf_depths                 = NaN;
-		tf_times                  = NaN;
 		delta_t                   = NaN;
 		geothermalflux            = NaN;
@@ -54,10 +53,13 @@
 			md = checkfield(md,'fieldname','basalforcings.basin_id','Inf',1,'>=',0,'<=',md.basalforcings.num_basins,'size',[md.mesh.numberofelements 1]);
 			md = checkfield(md,'fieldname','basalforcings.gamma_0','numel',1,'NaN',1,'Inf',1,'>',0);
-			md = checkfield(md,'fieldname','basalforcings.tf_times','NaN',1,'Inf',1);
 			md = checkfield(md,'fieldname','basalforcings.tf_depths','NaN',1,'Inf',1);
-			md = checkfield(md,'fieldname','basalforcings.tf','size',[md.mesh.numberofvertices,numel(md.basalforcings.delta_t),numel(md.basalforcings.tf_depths)],'NaN',1,'Inf',1);
 			md = checkfield(md,'fieldname','basalforcings.delta_t','NaN',1,'Inf',1,'numel',md.basalforcings.num_basins);
 			md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'>=',0,'timeseries',1);
 			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+
+			md = checkfield(md,'fieldname','basalforcings.tf','size',[1,1,numel(md.basalforcings.tf_depths)]);
+			for i=1:numel(md.basalforcings.tf_depths)
+				md = checkfield(md,'fieldname',['basalforcings.tf{' num2str(i) '}'],'field',md.basalforcings.tf{i},'size',[md.mesh.numberofvertices+1 NaN],'NaN',1,'Inf',1,'>=',0,'timeseries',1);
+			end
 
 		end % }}}
@@ -68,5 +70,4 @@
 			fielddisplay(self,'gamma_0','melt rate coefficient (m/yr)');
 			fielddisplay(self,'tf_depths','Number of vertical layers in ocean thermal forcing dataset');
-			fielddisplay(self,'tf_times','time for each tf (in yr) ');
 			fielddisplay(self,'tf','thermal forcing (ocean temperature minus freezing point) (degrees C)');
 			fielddisplay(self,'delta_t','Ocean temperature correction per basin (degrees C)');
@@ -77,12 +78,12 @@
 		function marshall(self,prefix,md,fid) % {{{
 
-         %NEED TO ADD TF
 			yts=md.constants.yts;
 
-			WriteData(fid,prefix,'name','md.basalforcings.model','data',6,'format','Integer');
+			WriteData(fid,prefix,'name','md.basalforcings.model','data',7,'format','Integer');
 			WriteData(fid,prefix,'object',self,'fieldname','num_basins','format','Integer');
 			WriteData(fid,prefix,'object',self,'fieldname','basin_id','data',self.basin_id-1,'name','md.basalforcings.basin_id','format','IntMat','mattype',2);   %0-indexed
 			WriteData(fid,prefix,'object',self,'fieldname','gamma_0','format','Double');
-			WriteData(fid,prefix,'object',self,'fieldname','tf_depths','format','DoubleMat','name','md.basalforcings.tf_depths','yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','tf_depths','format','DoubleMat','name','md.basalforcings.tf_depths');
+			WriteData(fid,prefix,'object',self,'fieldname','tf','format','MatArray','name','md.basalforcings.tf','timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
 			WriteData(fid,prefix,'object',self,'fieldname','delta_t','format','DoubleMat','name','md.basalforcings.delta_t','timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
 			WriteData(fid,prefix,'object',self,'fieldname','geothermalflux','format','DoubleMat','name','md.basalforcings.geothermalflux','mattype',1,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts);
Index: /issm/trunk-jpl/src/m/solve/WriteData.m
===================================================================
--- /issm/trunk-jpl/src/m/solve/WriteData.m	(revision 23780)
+++ /issm/trunk-jpl/src/m/solve/WriteData.m	(revision 23781)
@@ -33,15 +33,32 @@
 
 %Scale data if necesarry
-if exist(options,'scale'),
-	scale = getfieldvalue(options,'scale');
-	if size(data,1)==timeserieslength,
-		data(1:end-1,:) = scale.*data(1:end-1,:);
-	else
-		data  = scale.*data;
-	end
-end
-if(size(data,1)==timeserieslength),
-	yts = getfieldvalue(options,'yts');
-	data(end,:) = data(end,:)*yts;
+if strcmpi(format,'MatArray')
+	for i=1:numel(data)
+		if exist(options,'scale'),
+			scale = getfieldvalue(options,'scale');
+			if size(data{i},1)==timeserieslength,
+				data{i}(1:end-1,:) = scale.*data{i}(1:end-1,:);
+			else
+				data{i} = scale.*data{i};
+			end
+		end
+		if size(data{i},1)==timeserieslength,
+			yts = getfieldvalue(options,'yts');
+			data{i}(end,:) = data{i}(end,:)*yts;
+		end
+	end
+else
+	if exist(options,'scale'),
+		scale = getfieldvalue(options,'scale');
+		if size(data,1)==timeserieslength,
+			data(1:end-1,:) = scale.*data(1:end-1,:);
+		else
+			data  = scale.*data;
+		end
+	end
+	if(size(data,1)==timeserieslength),
+		yts = getfieldvalue(options,'yts');
+		data(end,:) = data(end,:)*yts;
+	end
 end
 
@@ -148,4 +165,9 @@
 	%Get size
 	s=size(data);
+
+	if numel(s)~=2
+		error('matrices that that have more than 2 dimensions are not supported');
+	end
+
 	%if matrix = NaN, then do not write anything
 	if (s(1)==1 & s(2)==1 & isnan(data)),
