Index: /issm/trunk/src/m/classes/model/model.m
===================================================================
--- /issm/trunk/src/m/classes/model/model.m	(revision 10451)
+++ /issm/trunk/src/m/classes/model/model.m	(revision 10452)
@@ -124,4 +124,8 @@
 			 %loaded model is a struct, initialize output and recover all fields
 			 md = structtoobj(model,structmd);
+
+			 %Old field now classes
+			 if (isfield(structmd,'timestepping') & isnumeric(md.timestepping)), md.timestepping=timestepping(); end
+			 if (isfield(structmd,'mask') & isnumeric(md.mask)),md.mask=mask(); end
 
 			 %Field name change
@@ -188,10 +192,9 @@
 			 if isfield(structmd,'penalties'), md.prognostic.vertex_pairing=structmd.penalties; end
 			 if isfield(structmd,'penalty_offset'), md.prognostic.penalty_factor=structmd.penalty_offset; end
+			 if isfield(structmd,'B'), md.materials.rheology_B=structmd.B; end
+			 if isfield(structmd,'n'), md.materials.rheology_n=structmd.n; end
 			 if isfield(structmd,'rheology_B'), md.materials.rheology_B=structmd.rheology_B; end
 			 if isfield(structmd,'rheology_n'), md.materials.rheology_n=structmd.rheology_n; end
-			 if isfield(structmd,'elementoniceshelf'),
-				 md.mask=mask(); %maks already existed in a previous version
-				 md.mask.elementonfloatingice=structmd.elementoniceshelf; 
-			 end
+			 if isfield(structmd,'elementoniceshelf'), md.mask.elementonfloatingice=structmd.elementoniceshelf; end
 			 if isfield(structmd,'elementonicesheet'), md.mask.elementongroundedice=structmd.elementonicesheet; end
 			 if isfield(structmd,'elementonwater'), md.mask.elementonwater=structmd.elementonwater; end
@@ -282,4 +285,8 @@
 				 md.verbose=verbose;
 			 end
+			 if size(md.diagnostic.icefront,2)==3 || size(md.diagnostic.icefront,2)==5,
+				 front=md.diagnostic.icefront;
+				 md.diagnostic.icefront=[front 1*md.mask.elementonfloatingice(front(:,end))];
+			 end
 			 if isfield(structmd,'spcvelocity'), 
 				 md.diagnostic.spcvx=NaN*ones(md.mesh.numberofvertices,1);
@@ -368,13 +375,13 @@
 			 %New fields
 			 if ~isfield(structmd,'upperelements');
-				 md.upperelements=transpose(1:md.mesh.numberofelements)+md.mesh.numberofelements2d;
-				 md.upperelements(end-md.mesh.numberofelements2d+1:end)=NaN;
+				 md.mesh.upperelements=transpose(1:md.mesh.numberofelements)+md.mesh.numberofelements2d;
+				 md.mesh.upperelements(end-md.mesh.numberofelements2d+1:end)=NaN;
 			 end
 			 if ~isfield(structmd,'lowerelements');
-				 md.lowerelements=transpose(1:md.mesh.numberofelements)-md.mesh.numberofelements2d;
-				 md.lowerelements(1:md.mesh.numberofelements2d)=NaN;
+				 md.mesh.lowerelements=transpose(1:md.mesh.numberofelements)-md.mesh.numberofelements2d;
+				 md.mesh.lowerelements(1:md.mesh.numberofelements2d)=NaN;
 			 end
 			 if ~isfield(structmd,'diagnostic_ref');
-				 md.diagnostic.referential=NaN*ones(md.mesh.numberofvertices2d,6);
+				 md.diagnostic.referential=NaN*ones(md.mesh.numberofvertices,6);
 			 end
 		 end% }}}
