Index: /issm/trunk-jpl/src/m/classes/frictionshakti.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/frictionshakti.m	(revision 25501)
+++ /issm/trunk-jpl/src/m/classes/frictionshakti.m	(revision 25502)
@@ -9,7 +9,4 @@
 	end
 	methods
-		function self = extrude(self,md) % {{{
-			self.coefficient=project3d(md,'vector',self.coefficient,'type','node','layer',1);
-		end % }}}
 		function self = frictionshakti(varargin) % {{{
 			switch nargin
@@ -24,4 +21,7 @@
 		function self = setdefaultparameters(self) % {{{
 
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.coefficient=project3d(md,'vector',self.coefficient,'type','node','layer',1);
 		end % }}}
 		function md = checkconsistency(self,md,solution,analyses) % {{{
Index: /issm/trunk-jpl/src/m/classes/frictionshakti.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/frictionshakti.py	(revision 25501)
+++ /issm/trunk-jpl/src/m/classes/frictionshakti.py	(revision 25502)
@@ -4,4 +4,5 @@
 from fielddisplay import fielddisplay
 from project3d import project3d
+from structtoobj import structtoobj
 from WriteData import WriteData
 
@@ -14,8 +15,12 @@
     """
 
-    def __init__(self, md):  # {{{
+    def __init__(self, *args):  # {{{
         self.coefficient = np.nan
-        #set defaults
-        self.setdefaultparameters()
+        
+        nargs = len(args)
+        if nargs == 0:
+            self.setdefaultparameters()
+        elif nargs == 1:
+            self = structtoobj(self, args[0])
     #}}}
 
@@ -42,4 +47,5 @@
 
         md = checkfield(md, 'fieldname', 'friction.coefficient', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+
         return md
     # }}}
Index: /issm/trunk-jpl/src/m/classes/model.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/model.m	(revision 25501)
+++ /issm/trunk-jpl/src/m/classes/model.m	(revision 25502)
@@ -424,5 +424,5 @@
 				if isobject(md.outputdefinition.definitions{i})
 					%get subfields
-					solutionsubfields=fields(md.outputdefinition.definitions{i});
+					solutionsubfields=fieldnames(md.outputdefinition.definitions{i});
 					for j=1:length(solutionsubfields),
 						field=md.outputdefinition.definitions{i}.(solutionsubfields{j});
@@ -548,5 +548,5 @@
 
 			%loop over model fields
-			model_fields=fields(md1);
+			model_fields=fieldnames(md1);
 			for i=1:length(model_fields),
 				%get field
@@ -554,5 +554,5 @@
 				fieldsize=size(field);
 				if isobject(field), %recursive call
-					object_fields=fields(md1.(model_fields{i}));
+					object_fields=fieldnames(md1.(model_fields{i}));
 					for j=1:length(object_fields),
 						%get field
@@ -721,5 +721,5 @@
 			if isstruct(md1.results),
 				md2.results=struct();
-				solutionfields=fields(md1.results);
+				solutionfields=fieldnames(md1.results);
 				for i=1:length(solutionfields),
 					if isstruct(md1.results.(solutionfields{i}))
@@ -728,5 +728,5 @@
 						for p=1:length(md1.results.(solutionfields{i}))
 						    current = md1.results.(solutionfields{i})(p);
-						    solutionsubfields=fields(current);
+						    solutionsubfields=fieldnames(current);
 						    for j=1:length(solutionsubfields),
 							field=md1.results.(solutionfields{i})(p).(solutionsubfields{j});
@@ -757,5 +757,5 @@
 				if isobject(md1.outputdefinition.definitions{i})
 					%get subfields
-					solutionsubfields=fields(md1.outputdefinition.definitions{i});
+					solutionsubfields=fieldnames(md1.outputdefinition.definitions{i});
 					for j=1:length(solutionsubfields),
 						field=md1.outputdefinition.definitions{i}.(solutionsubfields{j});
Index: /issm/trunk-jpl/src/m/classes/sealevelmodel.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/sealevelmodel.m	(revision 25501)
+++ /issm/trunk-jpl/src/m/classes/sealevelmodel.m	(revision 25502)
@@ -106,5 +106,5 @@
 		end % }}}
 		function self=mergeresults(self) % {{{
-			champs=fields(self.icecaps{1}.results.TransientSolution);
+			champs=fieldnames(self.icecaps{1}.results.TransientSolution);
 			for i=1:length(self.mergedcaps)/2,
 				md=self.mergedcaps{2*(i-1)+1}; trans=self.mergedcaps{2*(i-1)+2};
Index: /issm/trunk-jpl/src/m/consistency/comparemodels.m
===================================================================
--- /issm/trunk-jpl/src/m/consistency/comparemodels.m	(revision 25501)
+++ /issm/trunk-jpl/src/m/consistency/comparemodels.m	(revision 25502)
@@ -2,5 +2,5 @@
 
 	%loop over model fields
-	model_fields=fields(md1);
+	model_fields=fieldnames(md1);
 	for i=1:length(model_fields),
 		field1=md1.(model_fields{i});
@@ -11,5 +11,5 @@
 				continue;
 			end
-			object_fields=fields(md1.(model_fields{i}));
+			object_fields=fieldnames(md1.(model_fields{i}));
 			for j=1:length(object_fields),
 				field1=md1.(model_fields{i}).(object_fields{j});
Index: /issm/trunk-jpl/src/m/contrib/defleurian/netCDF/export_netCDF.m
===================================================================
--- /issm/trunk-jpl/src/m/contrib/defleurian/netCDF/export_netCDF.m	(revision 25501)
+++ /issm/trunk-jpl/src/m/contrib/defleurian/netCDF/export_netCDF.m	(revision 25502)
@@ -54,5 +54,5 @@
 		groupID=netcdf.defGrp(ncid,groups{i});
 		%In each group gather the fields of the class
-		groupfields=fields(md.(groups{i}));
+		groupfields=fieldnames(md.(groups{i}));
 		for j=1:length(groupfields),
 			Var=md.(groups{i}).(groupfields{j});
@@ -87,5 +87,5 @@
 						listgroupID=netcdf.defGrp(subgroupID,lname);
 						netcdf.putAtt(listgroupID,netcdf.getConstant('NC_GLOBAL'),'classtype',class(Var{l}));
-						subfields=fields(Var{l});
+						subfields=fieldnames(Var{l});
 						for m=1:length(subfields)
 							if ~strcmp(subfields{m},'outlog')
@@ -121,5 +121,5 @@
 						listgroupID=netcdf.defGrp(subgroupID,lname);
 						netcdf.putAtt(listgroupID,netcdf.getConstant('NC_GLOBAL'),'classtype',classtype);
-						subfields=fields(Var(l));
+						subfields=fieldnames(Var(l));
 						for m=1:length(subfields)
 							if ~strcmp(subfields{m},'outlog')
@@ -135,5 +135,5 @@
 					end
 					netcdf.putAtt(subgroupID,netcdf.getConstant('NC_GLOBAL'),'classtype',classtype);
-					subfields=fields(Var);
+					subfields=fieldnames(Var);
 					for m=1:length(subfields)
 						if ~strcmp(subfields{m},'outlog')
@@ -197,5 +197,5 @@
 	elseif isa(Var,'struct'),
 		%Start by getting the structure fields and size
-		locfields=fields(Var);
+		locfields=fieldnames(Var);
 		[dims,DimSize,DimValue]=GetDims(ncid,Var,DimSize,DimValue);
 		varid = netcdf.defVar(groupID,field,'NC_CHAR',dims);
@@ -244,5 +244,5 @@
 		varsize=size(Var');
 	elseif isa(Var,'struct')
-		varsize=length(fields(Var));
+		varsize=length(fieldnames(Var));
 	else
 		varsize=size(Var);
Index: /issm/trunk-jpl/src/m/contrib/larour/mdanalysis.m
===================================================================
--- /issm/trunk-jpl/src/m/contrib/larour/mdanalysis.m	(revision 25501)
+++ /issm/trunk-jpl/src/m/contrib/larour/mdanalysis.m	(revision 25502)
@@ -531,5 +531,5 @@
 	mv=md.mask; 
 end
-strings=fields(mv);
+strings=fieldnames(mv);
 strings={'all',strings{:}};
 set(hObject,'String',strings);
@@ -693,10 +693,10 @@
 if issealevel,
 	if isearth,
-		resultfields=fields(md.earth.results);
+		resultfields=fieldnames(md.earth.results);
 	else
-		resultfields=fields(md.icecaps{1}.results);
+		resultfields=fieldnames(md.icecaps{1}.results);
 	end
 else
-	resultfields=fields(md.results);
+	resultfields=fieldnames(md.results);
 end
 if isempty(resultfields),
@@ -854,5 +854,5 @@
 end
 fieldHandle=findobj('Tag', 'Masque');
-strings=fields(mv);
+strings=fieldnames(mv);
 strings={'all',strings{:}};
 set(fieldHandle,'String',strings);
Index: /issm/trunk-jpl/src/m/miscellaneous/fielddisplay.m
===================================================================
--- /issm/trunk-jpl/src/m/miscellaneous/fielddisplay.m	(revision 25501)
+++ /issm/trunk-jpl/src/m/miscellaneous/fielddisplay.m	(revision 25502)
@@ -75,9 +75,9 @@
 function struct_display(offset,name,field,comment) % {{{
 
-	if ~isempty(fields(field))
+	if ~isempty(fieldnames(field))
 		displayunit(offset,name,'(structure)',comment),
 		offset=[offset '   '];
 
-		structure_fields=fields(field);
+		structure_fields=fieldnames(field);
 
 		for i=1:length(structure_fields),
Index: /issm/trunk-jpl/src/m/miscellaneous/structtoobj.m
===================================================================
--- /issm/trunk-jpl/src/m/miscellaneous/structtoobj.m	(revision 25501)
+++ /issm/trunk-jpl/src/m/miscellaneous/structtoobj.m	(revision 25502)
@@ -3,10 +3,10 @@
 
 	%Get object and structure fields
-	structfields=fields(S);
+	structfields=fieldnames(S);
 	objprops    =properties(class(obj));
 
 	%recover object properties
 	for i=1:length(structfields),
-		fieldname =structfields{i};
+		fieldname=structfields{i};
 		if ismember(fieldname,objprops),
 			fieldvalue=getfield(S,fieldname);
Index: /issm/trunk-jpl/src/m/plot/plot_transient_movie.m
===================================================================
--- /issm/trunk-jpl/src/m/plot/plot_transient_movie.m	(revision 25501)
+++ /issm/trunk-jpl/src/m/plot/plot_transient_movie.m	(revision 25502)
@@ -14,5 +14,5 @@
 	else
 		disp('List of available fields:');
-		F=fields(md.results.TransientSolution(1));
+		F=fieldnames(md.results.TransientSolution(1));
 		num = [];
 		for i=1:numel(F),
Index: /issm/trunk-jpl/src/m/plot/processdata.m
===================================================================
--- /issm/trunk-jpl/src/m/plot/processdata.m	(revision 25501)
+++ /issm/trunk-jpl/src/m/plot/processdata.m	(revision 25502)
@@ -20,5 +20,5 @@
 if isstruct(data),
 	disp('data provided is a struct with the following fields:');
-	F=fields(data);
+	F=fieldnames(data);
 	for i=1:numel(F),
 		disp(['   ' num2str(i) ': ' F{i} ]);
Index: /issm/trunk-jpl/src/m/regional/regionaltransient2d.m
===================================================================
--- /issm/trunk-jpl/src/m/regional/regionaltransient2d.m	(revision 25501)
+++ /issm/trunk-jpl/src/m/regional/regionaltransient2d.m	(revision 25502)
@@ -43,5 +43,5 @@
 
 	%loop over model fields
-	model_fields=fields(md1);
+	model_fields=fieldnames(md1);
 	for i=1:length(model_fields),
 
@@ -52,5 +52,5 @@
 		%copy field, interpolated to new mesh
 		if isobject(field), %recursive call
-			object_fields=fields(md1.(model_fields{i}));
+			object_fields=fieldnames(md1.(model_fields{i}));
 			fname=['(model_fields{i}).(object_fields{j})'];
 		else
Index: /issm/trunk-jpl/src/m/solve/convert2str.m
===================================================================
--- /issm/trunk-jpl/src/m/solve/convert2str.m	(revision 25501)
+++ /issm/trunk-jpl/src/m/solve/convert2str.m	(revision 25502)
@@ -109,8 +109,8 @@
 function str = struct_display(field) % {{{
 
-	if ~isempty(fields(field))
+	if ~isempty(fieldnames(field))
 		displayunit('(structure)'),
 
-		structure_fields=fields(field);
+		structure_fields=fieldnames(field);
 
 		for i=1:length(structure_fields),
Index: /issm/trunk-jpl/test/NightlyRun/test350.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test350.m	(revision 25501)
+++ /issm/trunk-jpl/test/NightlyRun/test350.m	(revision 25502)
@@ -10,5 +10,5 @@
 md.cluster=generic('name',oshostname(),'np',2);
 
-%Use hydroogy coupled friciton law
+%Use hydrology coupled friction law
 md.friction=frictionshakti(md.friction);
 
Index: /issm/trunk-jpl/test/NightlyRun/test350.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test350.py	(revision 25501)
+++ /issm/trunk-jpl/test/NightlyRun/test350.py	(revision 25502)
@@ -22,6 +22,6 @@
 md.cluster = generic('name', gethostname(), 'np', 2)
 
-#Use hydroogy coupled friciton law
-md.friction = frictionshakti(md)
+#Use hydrology coupled friction law
+md.friction = frictionshakti(md.friction)
 
 #Change hydrology class to Shakti' model
