Index: /issm/trunk/src/m/classes/public/display/displaybc.m
===================================================================
--- /issm/trunk/src/m/classes/public/display/displaybc.m	(revision 1249)
+++ /issm/trunk/src/m/classes/public/display/displaybc.m	(revision 1249)
@@ -0,0 +1,37 @@
+function displaybc(md)
+%DISPLAYBC - display of the boundary conditions fileds
+%
+%   to avoid clobbering display.m with every field from model md, 
+%   we create this routine that displays boundary conditions  from model md, 
+%   only if requested.
+%
+%   Usage:
+%      displaybc(md)
+
+fprintf('   Boundary conditions:\n');
+
+fprintf('\n      geography:\n');
+fprintf('         gridonboundary: (%i)\n',length(md.gridonboundary));
+fprintf('         elementoniceshelf: (%i)\n',length(md.elementoniceshelf));
+fprintf('         gridoniceshelf: (%i)\n',length(md.gridoniceshelf));
+fprintf('         elementonicesheet: (%i)\n',length(md.elementonicesheet));
+fprintf('         gridonicesheet: (%i)\n',length(md.gridonicesheet));
+
+fprintf('\n      diagnostic:\n');
+fprintf('         gridondirichlet_diag: (%i)\n',length(md.gridondirichlet_diag));
+fprintf('         dirichletvalues_diag [m/a]: (%i,%i)\n',length(md.dirichletvalues_diag),2);
+fprintf('         segmentonneumann_diag: (%i)\n',length(md.segmentonneumann_diag));
+fprintf('         neumannvalues_diag [N]: (%i)\n',length(md.neumannvalues_diag));
+
+fprintf('\n      prognostic:\n');
+fprintf('         gridondirichlet_prog: (%i)\n',length(md.gridondirichlet_prog));
+fprintf('         dirichletvalues_prog [m/a]: (%i)\n',length(md.dirichletvalues_prog));
+fprintf('         segmentonneumann_prog (flux): (%i)\n',length(md.segmentonneumann_prog));
+fprintf('         neumannvalues_prog [N]: (%i)\n',length(md.neumannvalues_prog));
+fprintf('         segmentonneumann_prog2 (thickness gradient): (%i)\n',length(md.segmentonneumann_prog2));
+fprintf('         neumannvalues_prog2 [N]: (%i)\n',length(md.neumannvalues_prog2));
+
+fprintf('\n      thermal:\n');
+fprintf('         gridondirichlet_thermal: (%i)\n',length(md.gridondirichlet_thermal));
+fprintf('         dirichletvalues_thermal [K]: (%i)\n',length(md.dirichletvalues_thermal));
+fprintf('         melting [m/a]: (%i)\n',length(md.melting));
Index: /issm/trunk/src/m/classes/public/display/displaycontrol.m
===================================================================
--- /issm/trunk/src/m/classes/public/display/displaycontrol.m	(revision 1249)
+++ /issm/trunk/src/m/classes/public/display/displaycontrol.m	(revision 1249)
@@ -0,0 +1,33 @@
+function displaycontrol(md)
+%DISPLAYCONTROL - display control parameters
+%
+%   To avoid clobbering display.m with every field from model md, 
+%   we create this routine that displays control parameters from model md, 
+%   only if requested.
+%
+%   Usage:
+%      displaycontrol(md)
+
+disp(sprintf('      ''%s''','control'));
+%control type
+control_string='';
+for i=1:length(md.control_type),
+	parameter=md.control_type{i};
+	%check this parameter is a field from model! 
+	if ~isfield(struct(md),parameter),
+		error('displaysolutionparameters error message: one of the control type parameters does not exist!');
+	end
+	control_string=[control_string parameter ' and '];
+end
+control_string=control_string(1:length(control_string)-5);
+disp(sprintf('         control_type: %s %s',control_string,'(parameter where inverse control is carried out; ex: ''drag'', or ''B'')'));
+disp(sprintf('         fit: (%i)      (''absolute: 0'', ''relative: 1'', or ''logarithmic: 2''. default is ''absolute: 0'', for each optimization steps)',length(md.fit)));
+disp(sprintf('         meanvel: %g      (velocity scaling factor when evaluating relative or logarithmic misfit)',md.meanvel));
+disp(sprintf('         epsvel: %g      ( for relative fit, avoids misfit becoming infinity, for logarithmic fit, threshold for velocity)',md.epsvel));
+disp(sprintf('         nsteps: %i      (number of optimization searches)',md.nsteps));
+disp(sprintf('         optscal: (%i %i)      (scaling factor on gradient direction during optimization, for each optimization step)',size(md.optscal,1),size(md.optscal,2)));
+disp(sprintf('         mincontrolconstraint: %g      (minimum contraint for the controlled parameters)',md.mincontrolconstraint));
+disp(sprintf('         maxcontrolconstraint: %g      (maximum contraint for the controlled parameters)',md.maxcontrolconstraint));
+disp(sprintf('         maxiter: (%i)      (maximum iterations during each optimization step)',length(md.maxiter)));
+disp(sprintf('         tolx: %f      (minimum tolerance which will stop one optimization search)',md.tolx));
+disp(sprintf('         plot: %i      (visualization of the results of each iteration yes -> 1 no -> 0. Default is 1)',md.plot));
Index: /issm/trunk/src/m/classes/public/display/displayexppar.m
===================================================================
--- /issm/trunk/src/m/classes/public/display/displayexppar.m	(revision 1249)
+++ /issm/trunk/src/m/classes/public/display/displayexppar.m	(revision 1249)
@@ -0,0 +1,17 @@
+function displayoutlines(md);
+%DISPLAYOUTLINES - display outline information
+%
+%   To avoid clobbering display.m with every field from model md, 
+%   we create this routine that displays outline information from model md, 
+%   only if requested.
+%
+%   Usage:
+%      displayoutline(md)
+
+fprintf('\n   Outlines:\n');
+if isnan(md.domainoutline), fprintf('      domainoutline: N/A\n'); else fprintf('      domainoutline: not displayed (can be accessed by typing md.domainoutline)\n');end
+if isnan(md.riftoutline), fprintf('      riftoutline: N/A\n'); else fprintf('      riftoutline: not displayed (can be accessed by typing md.riftoutline)\n');end
+if isnan(md.iceshelfoutline), fprintf('      iceshelfoutline: N/A\n'); else fprintf('      iceshelfoutline: not displayed (can be accessed by typing md.iceshelfoutline)\n');end
+if isnan(md.icesheetoutline), fprintf('      icesheetoutline: N/A\n'); else fprintf('      icesheetoutline: not displayed (can be accessed by typing md.icesheetoutline)\n');end
+fprintf('\n   Model files:\n');
+if isnan(md.parameterfile), fprintf('      parameterfile: N/A\n'); else fprintf('      parameterfile: not displayed (can be accessed by typing md.parameterfile)\n');end
Index: /issm/trunk/src/m/classes/public/display/displaymaterials.m
===================================================================
--- /issm/trunk/src/m/classes/public/display/displaymaterials.m	(revision 1249)
+++ /issm/trunk/src/m/classes/public/display/displaymaterials.m	(revision 1249)
@@ -0,0 +1,22 @@
+function displaymaterials(md)
+%DISPLAYCONTROL - display material parameters
+%
+%   To avoid clobbering display.m with every field from model md, 
+%   we create this routine that displays material parameters from model md, 
+%   only if requested.
+%
+%   Usage:
+%      displaymaterials(md)
+
+fprintf('   Materials:\n');
+fprintf('      rho_ice: %g [kg/m^3]\n',md.rho_ice);
+fprintf('      rho_water: %g [kg/m^3]\n',md.rho_water);
+if isempty(md.B), fprintf('      B: N/A (flow law parameter)'); else fprintf('      B: (%i) (flow law parameter [Pa/s^(1/n)])\n',length(md.B)); end
+if isempty(md.n), fprintf('      n: N/A (flow law coefficient)'); else fprintf('      n: (%i) (flow law coefficient)\n',length(md.n)); end
+fprintf('      heatcapacity: %g [J/kg/K]\n',md.heatcapacity);
+fprintf('      thermalconductivity: %g [W/m/K]\n',md.thermalconductivity);
+fprintf('      meltingpoint: %g [K] (melting point of ice at 1atm in K)\n',md.meltingpoint);
+fprintf('      latentheat: %g [J/kg] (latent heat of fusion)\n',md.latentheat);
+fprintf('      beta: %g [K/Pa]\n',md.beta);
+fprintf('      mixed_layer_capacity: %g [W/kg/K]\n',md.mixed_layer_capacity);
+fprintf('      thermal_exchange_velocity: %g [m/s]\n',md.thermal_exchange_velocity);
Index: /issm/trunk/src/m/classes/public/display/displaymesh.m
===================================================================
--- /issm/trunk/src/m/classes/public/display/displaymesh.m	(revision 1249)
+++ /issm/trunk/src/m/classes/public/display/displaymesh.m	(revision 1249)
@@ -0,0 +1,46 @@
+function displaymesh(md)
+%DISPLAYMESH - display mesh information
+%
+%   To avoid clobbering display.m with every field from model md, 
+%   we create this routine that displays mesh information from model md, 
+%   only if requested.
+%
+%   Usage:
+%      displaymesh(md)
+
+fprintf('   Mesh:\n'); 
+
+if strcmpi(md.type,'3d'),
+
+	fprintf('\n      Elements and nodes of the original 2d mesh:\n');
+	fprintf('         numberofelements2d: %i (number of elements)\n',md.numberofelements2d);
+	fprintf('         numberofgrids2d: %i (number of nodes)\n',md.numberofgrids2d); 
+	fprintf('         elements2d: (%i-%i) (index into (x,y,z), coordinates of the grids)\n',md.numberofelements2d,size(md.elements2d,2)); 
+	fprintf('         elements_type2d: (%i) (element types, according to number of grids)\n',md.numberofelements2d);
+	fprintf('         x2d: (%i) (node x coordinates)\n',length(md.x2d));
+	fprintf('         y2d: (%i) (node y coordinates)\n',length(md.y2d));
+	fprintf('         z2d: (%i) (node z coordinates)\n',length(md.z2d));
+
+	fprintf('\n      Elements and nodes of the extruded 3d mesh:\n');
+else
+
+	fprintf('\n      Elements and nodes:\n');
+end
+
+fprintf('         numberofelements: %i (number of elements)\n',md.numberofelements);
+fprintf('         numberofgrids: %i (number of nodes)\n',md.numberofgrids); 
+if ~isnan(md.dof), fprintf('      dof: %i (maximum number of dofs solved)\n',md.dof); end
+fprintf('         elements: (%i-%i) (index into (x,y,z), coordinates of the grids)\n',md.numberofelements,size(md.elements,2)); 
+fprintf('         elements_type: (%i) (element types, according to number of grids)\n',md.numberofelements);
+fprintf('         x: (%i) (node x coordinates)\n',length(md.x));
+fprintf('         y: (%i) (node y coordinates)\n',length(md.y));
+fprintf('         z: (%i) (node z coordinates)\n',length(md.z));
+fprintf('         numlayers: %i (number of extrusion layers)\n',md.numlayers);
+
+fprintf('\n      Properties:\n');
+fprintf('         type: %s\n',md.type);
+fprintf('         Penalties: (%i-%i))\n',size(md.penalties,1),size(md.penalties,2));
+fprintf('         gridonbed: (%i) (lower nodes flags list)\n',length(md.gridonbed));
+fprintf('         gridonsurface: (%i) (upper nodes flags list)\n',length(md.gridonsurface));
+fprintf('         elementonbed: (%i) (lower elements flags list)\n',length(md.elementonbed));
+fprintf('         elementonsurface: (%i) (upper elements flags list)\n',length(md.elementonsurface));
Index: /issm/trunk/src/m/classes/public/display/displayobservations.m
===================================================================
--- /issm/trunk/src/m/classes/public/display/displayobservations.m	(revision 1249)
+++ /issm/trunk/src/m/classes/public/display/displayobservations.m	(revision 1249)
@@ -0,0 +1,17 @@
+function displayobservations(md)
+%DISPLAYOBSERVATIONS - display observations information
+%
+%   To avoid clobbering display.m with every field from model md, 
+%   we create this routine that displays observations information from model md, 
+%   only if requested.
+%
+%   Usage:
+%      displayobservations(md)
+
+fprintf('   Observations:\n');
+fprintf('      vx_obs [m/a]: (%i)\n',length(md.vx_obs));
+fprintf('      vy_obs [m/a]: (%i)\n',length(md.vy_obs));
+fprintf('      vel_obs [m/a]: (%i)\n',length(md.vel_obs));
+fprintf('      accumulation [m/a]: (%i)\n',length(md.accumulation));
+fprintf('      observed_temperature [K]: (%i)\n',length(md.observed_temperature));
+fprintf('      geothermalflux [W/m^2]: (%i)\n',length(md.geothermalflux));
Index: /issm/trunk/src/m/classes/public/display/displayparallel.m
===================================================================
--- /issm/trunk/src/m/classes/public/display/displayparallel.m	(revision 1249)
+++ /issm/trunk/src/m/classes/public/display/displayparallel.m	(revision 1249)
@@ -0,0 +1,24 @@
+function displayparallel(md)
+%DISPLAYPARALLEL - display parallel computation parameters
+%
+%   To avoid clobbering display.m with every field from model md, 
+%   we create this routine that displays all fields related to
+%   parallel computation from model md, only if requested.
+%
+%   Usage:
+%      displayparallel(md)
+
+fprintf('\n      parallelisation:\n');
+fprintf('         cluster: %s      (set to ''cluster_name'' to run in cluster, ''none'' to run serially)\n',md.cluster);
+fprintf('         np: %i      (number of CPUS requested on cluster)\n',md.np);
+fprintf('         exclusive: %i      (set to 1 if CPUS used are not to be shared with other users, 0 otherwise)\n',md.exclusive);
+fprintf('         time: %i      (amount of time requested on cluster)\n',md.time); 
+fprintf('         alloc_cleanup: %i      (allocation cleanup before starting a job, default 1)\n',md.alloc_cleanup); 
+fprintf('         waitonlock: %i      (wait for batch results 1, or return 0. default is to return )\n',md.waitonlock); 
+fprintf('         queue: %s      (special queue name on cluster? default is '''')\n',md.queue); fprintf('\n      solver options:\n');
+
+fprintf('\n      solver options:\n');
+fprintf('         ice\n');
+fprintf('            solver_type: %s  (solver type for Ice: ''lu'' or ''cholesky'')\n',md.solver_type);
+fprintf('         cielo\n');
+fprintf('            solverstring: %s \n            (solver string for Petsc. See solversetto... routines. Default is asm)\n',md.solverstring); 
Index: /issm/trunk/src/m/classes/public/display/displayparameters.m
===================================================================
--- /issm/trunk/src/m/classes/public/display/displayparameters.m	(revision 1249)
+++ /issm/trunk/src/m/classes/public/display/displayparameters.m	(revision 1249)
@@ -0,0 +1,31 @@
+function displayparameters(md)
+%DISPLAYPARAMETERS - display parameters
+%
+%   To avoid clobbering display.m with every field from model md, 
+%   we create this routine that displays parameters from model md, 
+%   only if requested.
+%
+%   Usage:
+%      displayparameters(md)
+
+fprintf('   Parameters:\n');
+
+fprintf('\n      geometry:\n');
+if isempty(md.surface), fprintf('         surface: N/A'); else fprintf('         surface [m]: (%i)\n',length(md.surface)); end
+if isempty(md.thickness), fprintf('         thickness: N/A'); else fprintf('         thickness [m]: (%i)\n',length(md.thickness)); end
+if isempty(md.bed), fprintf('         bed: N/A'); else fprintf('         bed [m]: (%i)\n',length(md.bed)); end
+if isempty(md.firn_layer), fprintf('         firn_layer: N/A'); else fprintf('         firn_layer [m]: (%i)\n',length(md.firn_layer)); end
+if strcmpi(md.type,'3d'), fprintf('         elementonbed: (%i)\n',length(md.elementonbed)); end
+if strcmpi(md.type,'3d'), fprintf('         elementonsurface: (%i)\n',length(md.elementonsurface)); end
+if strcmpi(md.type,'3d'), fprintf('         gridonbed: (%i)\n',length(md.gridonbed)); end
+if strcmpi(md.type,'3d'), fprintf('         gridonsurface: (%i)\n',length(md.gridonsurface)); end
+
+fprintf('\n      physical parameters:\n');
+fprintf('         g: %g [m/s^2]\n',md.g);
+
+fprintf('\n      Friction parameters (Sigma= drag^2 * Neff ^r * u ^s, with Neff=rho_ice*g*thickness+rho_ice*g*bed, r=q/p and s=1/p)\n');
+fprintf('         drag_type: %i (0: none, 1:plastic, 2:viscous):\n',md.drag_type);
+if isempty(md.drag), fprintf('         drag: N/A'); else fprintf('         drag: (%i)\n',length(md.drag)); end
+fprintf('         drag_type: %i (0: none, 1:plastic, 2:viscous):\n',md.drag_type);
+if isempty(md.p), fprintf('         p: N/A'); else fprintf('         p: (%i)\n',length(md.p)); end
+if isempty(md.q), fprintf('         q: N/A'); else fprintf('         q: (%i)\n',length(md.q)); end
Index: /issm/trunk/src/m/classes/public/display/displayqmu.m
===================================================================
--- /issm/trunk/src/m/classes/public/display/displayqmu.m	(revision 1249)
+++ /issm/trunk/src/m/classes/public/display/displayqmu.m	(revision 1249)
@@ -0,0 +1,93 @@
+function displayqmu(md)
+%DISPLAYQMU - display qmu computation parameters
+%
+%   To avoid clobbering display.m with every field from model md, 
+%   we create this routine that displays all fields related to
+%   qmu computation from model md, only if requested.
+%
+%   Usage:
+%      displayqmu(md)
+
+disp(sprintf('      ''%s''','qmu using Dakota'));
+
+if ~md.qmu_analysis,
+	disp(sprintf('         %s','no scheduled qmu. activate by doing md.qmu_analysis=1'));
+else
+
+	for i=1:numel(md.variables)
+		disp(sprintf('         variables%s:  (arrays of each variable class)',...
+			string_dim(md.variables,i)));
+		fnames=fieldnames(md.variables(i));
+		maxlen=0;
+		for j=1:numel(fnames)
+			maxlen=max(maxlen,length(fnames{j}));
+		end
+		
+		for j=1:numel(fnames)
+			disp(sprintf(['            %-' num2str(maxlen+1) 's:    [%ix%i]    ''%s'''],...
+				fnames{j},size(md.variables.(fnames{j})),class(md.variables.(fnames{j}))));
+		end
+	end
+
+
+	for i=1:numel(md.responses)
+		disp(sprintf('         responses%s:  (arrays of each response class)',...
+			string_dim(md.responses,i)));
+		fnames=fieldnames(md.responses(i));
+		maxlen=0;
+		for j=1:numel(fnames)
+			maxlen=max(maxlen,length(fnames{j}));
+		end
+		
+		for j=1:numel(fnames)
+			disp(sprintf(['            %-' num2str(maxlen+1) 's:    [%ix%i]    ''%s'''],...
+				fnames{j},size(md.responses.(fnames{j})),class(md.responses.(fnames{j}))));
+		end
+	end
+
+
+	disp(sprintf('         qmu_method:  (array of dakota_method class)'));
+	for i=1:numel(md.qmu_method);
+		if strcmp(class(md.qmu_method(i)),'dakota_method')
+			disp(sprintf('            method%s :    ''%s''',...
+				string_dim(md.qmu_method,i),md.qmu_method(i).method));
+		end
+	end
+
+	for i=1:numel(md.qmu_params)
+		disp(sprintf('         qmu_params%s:  (array of method-independent parameters)',...
+			string_dim(md.qmu_params,i)));
+		fnames=fieldnames(md.qmu_params(i));
+		maxlen=0;
+		for j=1:numel(fnames)
+			maxlen=max(maxlen,length(fnames{j}));
+		end
+		
+		for j=1:numel(fnames)
+			disp(sprintf(['            %-' num2str(maxlen+1) 's: %s'],...
+				fnames{j},any2str(md.qmu_params(i).(fnames{j}))));
+		end
+	end
+
+	for i=1:numel(md.dakotaresults)
+		disp(sprintf('         dakotaresults%s:  (information from dakota files)',...
+			string_dim(md.dakotaresults,i)));
+		fnames=fieldnames(md.dakotaresults(i));
+		maxlen=0;
+		for j=1:numel(fnames)
+			maxlen=max(maxlen,length(fnames{j}));
+		end
+		
+		for j=1:numel(fnames)
+			disp(sprintf(['            %-' num2str(maxlen+1) 's:    [%ix%i]    ''%s'''],...
+				fnames{j},size(md.dakotaresults.(fnames{j})),class(md.dakotaresults.(fnames{j}))));
+		end
+	end
+
+	if isempty(md.dakotain), disp(sprintf('         dakotain: N/A')); else disp(sprintf('         dakotain:    [%ix%i]    (can be accessed by typing md.dakotain)',size(md.dakotain)));end
+	if isempty(md.dakotaout), disp(sprintf('         dakotaout: N/A')); else disp(sprintf('         dakotaout:    [%ix%i]    (can be accessed by typing md.dakotaout)',size(md.dakotaout)));end
+	if isempty(md.dakotadat), disp(sprintf('         dakotadat: N/A')); else disp(sprintf('         dakotadat:    [%ix%i]    (can be accessed by typing md.dakotadat)',size(md.dakotadat)));end
+	disp(sprintf('         npart   : %i (number of partitions for semi-descrete qmu)',md.npart));
+	disp(sprintf('         part    : [%i] (user provided mesh partition, defaults to metis if not specified)',length(md.part)));
+
+end
Index: /issm/trunk/src/m/classes/public/display/displayresults.m
===================================================================
--- /issm/trunk/src/m/classes/public/display/displayresults.m	(revision 1249)
+++ /issm/trunk/src/m/classes/public/display/displayresults.m	(revision 1249)
@@ -0,0 +1,47 @@
+function displayresults(md)
+%DISPLAYRESULTS - display results
+%
+%   To avoid clobbering display.m with every field from model md, 
+%   we create this routine that displays results from model md, 
+%   only if requested.
+%
+%   Usage:
+%      displayresults(md)
+
+fprintf('   Results:\n');
+
+%call struct_display recursively on md.results
+struct_display(md.results,'      ');
+
+%display output parameters
+fprintf('\n      output parameters:\n');
+if ~isstruct(md.stress), fprintf('         stress: N/A\n'); 
+else 
+	fprintf('         stress [Pa]:');
+	struct_display(md.stress,'         ');
+end
+if ~isstruct(md.deviatoricstress), fprintf('         deviatoricstress: N/A\n'); 
+else 
+	fprintf('         deviatoricstress [Pa]:');
+	struct_display(md.deviatoricstress,'         ');
+end
+if ~isstruct(md.strainrate), fprintf('         strainrate: N/A\n'); 
+else 
+           fprintf('         strainrate [1/a]:');
+		  struct_display(md.strainrate,'         ');
+end
+end
+
+function struct_display(structure,offset)
+	structure_fields=fields(structure);
+	for i=1:length(structure_fields),
+		%recursive call if necessary
+		field=eval(['structure.' structure_fields{i}]);
+		if isstruct(field),
+			fprintf('\n%s\n',[offset structure_fields{i} ':']);
+			struct_display(field,[offset '   ']);
+		else
+			fprintf('%s\n',[offset structure_fields{i} ': (' num2str(size(field,1))  ')' ]);
+		end
+	end
+end
Index: /issm/trunk/src/m/classes/public/display/displaysolutionparameters.m
===================================================================
--- /issm/trunk/src/m/classes/public/display/displaysolutionparameters.m	(revision 1249)
+++ /issm/trunk/src/m/classes/public/display/displaysolutionparameters.m	(revision 1249)
@@ -0,0 +1,105 @@
+function displaysolutionparameters(md)
+%DISPLAYSOLUTIONPARAMETERS - display solution parameters
+%
+%   To avoid clobbering display.m with every field from model md, 
+%   we create this routine that displays the solution parameters
+%   from model md, only if requested.
+%
+%   Usage:
+%      displaysolutionparameters(md)
+
+fprintf('   Solution parameters:\n');
+fprintf('\n      statics:\n');
+fprintf('         %s\n','Newton convergence criteria');
+fprintf('            eps_rel: %g      (velocity relative convergence criterion)\n',md.eps_rel);
+fprintf('            eps_abs: %g      (velocity absolute convergence criterion [m/yr], NaN -> no absolute criterion)\n',md.eps_abs);
+fprintf('            viscosity_overshoot: %g      (over-shooting constant new=new+C*(new-old))\n',md.viscosity_overshoot);
+fprintf('         penalty_offset: %g      (offset used by penalties: penalty = Kmax*10^offset)\n',md.penalty_offset);
+fprintf('         penalty_melting: %g      (penalty used to keep T<Tpmp)\n',md.penalty_melting);
+fprintf('         penalty_lock: %g      (counter used to lock penalties that zig zag)\n',md.penalty_lock);
+fprintf('         lowmem: %i      (Set to 1 if you are running low on cluster memory)\n',md.lowmem);
+fprintf('         sparsity: %g      (matrix sparsity. Set to .001 for < 1M dof, .0001 for 5M dof, and .00001 for > 10M dof\n',md.sparsity);
+fprintf('         connectivity: %i      (element connectivity)\n',md.connectivity); 
+fprintf('         debug: %i      (output debug statements when possible yes-> 1, no -> 0. Default is 1\n',md.debug);
+fprintf('         element_debug: %i      (output debug statements for elementswhen possible yes-> 1, no -> 0. Default is 0\n',md.element_debug);
+fprintf('         element_debugid: %i      (if element_debug on, id of element for which to output messages\n',md.element_debugid);
+fprintf('         debug: %i      (output debug statements when possible yes-> 1, no -> 0. Default is 1');
+fprintf('      ''%s''\n','transient');
+fprintf('         dt: %g ( time step in years)\n',md.dt/md.yts);
+fprintf('         ndt: %g ( time span in years)\n',md.ndt/md.yts);
+fprintf('         artificial_diffusivity: %i (yes->1, no->0)\n',md.artificial_diffusivity);
+fprintf('         minh: %g (minimum thickness to avoid stiffness singularity)\n',md.minh);
+fprintf('         timestepping: %i ( adptative time stepping implemented - default to 0)\n',md.timestepping);
+fprintf('         deltaH: %g ( minimum thickness difference between two time steps)\n',md.deltaH);
+fprintf('         DeltaH: %g ( maximum thickness difference between two time steps)\n',md.DeltaH);
+fprintf('         deltaT: %g ( minimum temperature difference between two time steps)\n',md.deltaT);
+fprintf('         DeltaT: %g ( maximum temperature difference between two time steps)\n',md.DeltaT);
+fprintf('         timeacc: %g ( multiplier to time step when time stepping increases time step)\n',md.timeacc);
+fprintf('         timedec: %g ( multiplier to time step when time stepping decresaes time step)\n',md.timedec);
+
+fprintf('\n      control:\n');
+fprintf('         control_type: %s (control type, ex: ''drag'', or ''B'')\n',md.control_type);
+fprintf('         fit: (%g)      ( 0 -> absolute, 1 -> relative, 2 -> logarithmic. default is absolute)\n',length(md.fit));
+fprintf('         meanvel: %g      (velocity scaling factor when evaluating relative or logarithmic misfit)\n',md.meanvel);
+fprintf('         epsvel: %g      ( for relative fit, avoids misfit becoming infinity, for logarithmic fit, threshold for velocity)\n',md.epsvel);
+fprintf('         nsteps: %i      (number of optimization searches)\n',md.nsteps);
+fprintf('         optscal: (%i %i)      (scaling factor on gradient direction during optimization, for each optimization step)\n',size(md.optscal,1),size(md.optscal,2));
+fprintf('         mincontrolconstraint: %f      (minimum contraint for the controlled parameters, NaN -> no constraint)\n',md.mincontrolconstraint);
+fprintf('         maxcontrolconstraint: %f      (maximum contraint for the controlled parameters, NaN -> no constraint)\n',md.maxcontrolconstraint);
+fprintf('         maxiter: (%i)      (maximum iterations during each optimization step)\n',length(md.maxiter));
+fprintf('         tolx: %f      (minimum tolerance which will stop one optimization search)\n',md.tolx);
+fprintf('         plot: %i      (visualization of the results of each iteration yes -> 1 no -> 0. Default is 1)\n',md.plot);
+
+fprintf('\n      mesh:\n');
+fprintf('         mesh_domainoutline: %s      (domain outlines)\n',md.mesh_domainoutline);
+fprintf('         mesh_riftoutline: %s      (rift outlines)\n',md.mesh_riftoutline);
+fprintf('         mesh_resolution: (%g)      (mesh resolutoin)\n',md.mesh_resolution);
+
+%mesh2grid type
+fprintf('\n      mesh2grid:\n');
+mesh2grid_string='';
+for i=1:length(md.mesh2grid_parameters),
+	parameter=md.mesh2grid_parameters{i};
+	mesh2grid_string=[mesh2grid_string parameter ' and '];
+end
+mesh2grid_string=mesh2grid_string(1:length(mesh2grid_string)-5);
+fprintf('         mesh2grid_parameters: %s %s\n',mesh2grid_string,'(list of parameters for which mesh 2 grid interpolation is carried out; ex: {''drag''}, or {''drag'',''B''})');
+%mesh2grid interpolation
+mesh2grid_interpstring='';
+for i=1:length(md.mesh2grid_interpolation),
+	interpolation=md.mesh2grid_interpolation{i};
+	mesh2grid_interpstring=[mesh2grid_interpstring interpolation ' and '];
+end
+mesh2grid_interpstring=mesh2grid_interpstring(1:length(mesh2grid_interpstring)-5);
+fprintf('         mesh2grid_interpolation: %s %s\n',mesh2grid_interpstring,'(list of interpolation (''node'' or ''element'') for each parameter ex: {''node''}, or {''node'',''element''})');
+
+%mesh2grid filter
+mesh2grid_filterstring='';
+for i=1:length(md.mesh2grid_filter),
+	filter=md.mesh2grid_filter{i};
+	mesh2grid_filterstring=[mesh2grid_filterstring filter ' and '];
+end
+mesh2grid_filterstring=mesh2grid_filterstring(1:length(mesh2grid_filterstring)-5);
+fprintf('         mesh2grid_filter: %s %s\n',mesh2grid_filterstring,'(list of filter (''average'' or ''nearest'') for each parameter ex: {''average''}, or {''average'',''nearest''})');
+fprintf('         mesh2grid_cornereast: %g ( corner east of square grid)\n',md.mesh2grid_cornereast);
+fprintf('         mesh2grid_cornernorth: %g ( corner north of square grid)\n',md.mesh2grid_cornernorth);
+fprintf('         mesh2grid_xposting: %g (x  posting of grid (in m))\n',md.mesh2grid_xposting);
+fprintf('         mesh2grid_yposting: %g (y  posting of grid (in m))\n',md.mesh2grid_yposting);
+fprintf('         mesh2grid_nlines: %g ( number of grid lines)\n',md.mesh2grid_nlines);
+fprintf('         mesh2grid_ncolumns: %g ( number of grid columns)\n',md.mesh2grid_ncolumns);
+fprintf('         mesh2grid_windowsize: %g ( size of filter )\n',md.mesh2grid_windowsize);
+
+%parallelisation
+md.parallel
+
+%parameteroutput type
+parameteroutput_string='';
+for i=1:length(md.parameteroutput),
+	parameter=md.parameteroutput{i};
+	parameteroutput_string=[parameteroutput_string parameter ' and '];
+end
+parameteroutput_string=parameteroutput_string(1:length(parameteroutput_string)-5);
+
+fprintf('\n      output:\n');
+fprintf('         parameteroutput: %s %s\n',parameteroutput_string,...
+                       '(list of output parameters recovered in the solution sequences: ex: {''viscousheating'',''stress''})\n');
Index: sm/trunk/src/m/classes/public/displaybc.m
===================================================================
--- /issm/trunk/src/m/classes/public/displaybc.m	(revision 1248)
+++ 	(revision )
@@ -1,37 +1,0 @@
-function displaybc(md)
-%DISPLAYBC - display of the boundary conditions fileds
-%
-%   to avoid clobbering display.m with every field from model md, 
-%   we create this routine that displays boundary conditions  from model md, 
-%   only if requested.
-%
-%   Usage:
-%      displaybc(md)
-
-fprintf('   Boundary conditions:\n');
-
-fprintf('\n      geography:\n');
-fprintf('         gridonboundary: (%i)\n',length(md.gridonboundary));
-fprintf('         elementoniceshelf: (%i)\n',length(md.elementoniceshelf));
-fprintf('         gridoniceshelf: (%i)\n',length(md.gridoniceshelf));
-fprintf('         elementonicesheet: (%i)\n',length(md.elementonicesheet));
-fprintf('         gridonicesheet: (%i)\n',length(md.gridonicesheet));
-
-fprintf('\n      diagnostic:\n');
-fprintf('         gridondirichlet_diag: (%i)\n',length(md.gridondirichlet_diag));
-fprintf('         dirichletvalues_diag [m/a]: (%i,%i)\n',length(md.dirichletvalues_diag),2);
-fprintf('         segmentonneumann_diag: (%i)\n',length(md.segmentonneumann_diag));
-fprintf('         neumannvalues_diag [N]: (%i)\n',length(md.neumannvalues_diag));
-
-fprintf('\n      prognostic:\n');
-fprintf('         gridondirichlet_prog: (%i)\n',length(md.gridondirichlet_prog));
-fprintf('         dirichletvalues_prog [m/a]: (%i)\n',length(md.dirichletvalues_prog));
-fprintf('         segmentonneumann_prog (flux): (%i)\n',length(md.segmentonneumann_prog));
-fprintf('         neumannvalues_prog [N]: (%i)\n',length(md.neumannvalues_prog));
-fprintf('         segmentonneumann_prog2 (thickness gradient): (%i)\n',length(md.segmentonneumann_prog2));
-fprintf('         neumannvalues_prog2 [N]: (%i)\n',length(md.neumannvalues_prog2));
-
-fprintf('\n      thermal:\n');
-fprintf('         gridondirichlet_thermal: (%i)\n',length(md.gridondirichlet_thermal));
-fprintf('         dirichletvalues_thermal [K]: (%i)\n',length(md.dirichletvalues_thermal));
-fprintf('         melting [m/a]: (%i)\n',length(md.melting));
Index: sm/trunk/src/m/classes/public/displaycontrol.m
===================================================================
--- /issm/trunk/src/m/classes/public/displaycontrol.m	(revision 1248)
+++ 	(revision )
@@ -1,33 +1,0 @@
-function displaycontrol(md)
-%DISPLAYCONTROL - display control parameters
-%
-%   To avoid clobbering display.m with every field from model md, 
-%   we create this routine that displays control parameters from model md, 
-%   only if requested.
-%
-%   Usage:
-%      displaycontrol(md)
-
-disp(sprintf('      ''%s''','control'));
-%control type
-control_string='';
-for i=1:length(md.control_type),
-	parameter=md.control_type{i};
-	%check this parameter is a field from model! 
-	if ~isfield(struct(md),parameter),
-		error('displaysolutionparameters error message: one of the control type parameters does not exist!');
-	end
-	control_string=[control_string parameter ' and '];
-end
-control_string=control_string(1:length(control_string)-5);
-disp(sprintf('         control_type: %s %s',control_string,'(parameter where inverse control is carried out; ex: ''drag'', or ''B'')'));
-disp(sprintf('         fit: (%i)      (''absolute: 0'', ''relative: 1'', or ''logarithmic: 2''. default is ''absolute: 0'', for each optimization steps)',length(md.fit)));
-disp(sprintf('         meanvel: %g      (velocity scaling factor when evaluating relative or logarithmic misfit)',md.meanvel));
-disp(sprintf('         epsvel: %g      ( for relative fit, avoids misfit becoming infinity, for logarithmic fit, threshold for velocity)',md.epsvel));
-disp(sprintf('         nsteps: %i      (number of optimization searches)',md.nsteps));
-disp(sprintf('         optscal: (%i %i)      (scaling factor on gradient direction during optimization, for each optimization step)',size(md.optscal,1),size(md.optscal,2)));
-disp(sprintf('         mincontrolconstraint: %g      (minimum contraint for the controlled parameters)',md.mincontrolconstraint));
-disp(sprintf('         maxcontrolconstraint: %g      (maximum contraint for the controlled parameters)',md.maxcontrolconstraint));
-disp(sprintf('         maxiter: (%i)      (maximum iterations during each optimization step)',length(md.maxiter)));
-disp(sprintf('         tolx: %f      (minimum tolerance which will stop one optimization search)',md.tolx));
-disp(sprintf('         plot: %i      (visualization of the results of each iteration yes -> 1 no -> 0. Default is 1)',md.plot));
Index: sm/trunk/src/m/classes/public/displayexppar.m
===================================================================
--- /issm/trunk/src/m/classes/public/displayexppar.m	(revision 1248)
+++ 	(revision )
@@ -1,17 +1,0 @@
-function displayoutlines(md);
-%DISPLAYOUTLINES - display outline information
-%
-%   To avoid clobbering display.m with every field from model md, 
-%   we create this routine that displays outline information from model md, 
-%   only if requested.
-%
-%   Usage:
-%      displayoutline(md)
-
-fprintf('\n   Outlines:\n');
-if isnan(md.domainoutline), fprintf('      domainoutline: N/A\n'); else fprintf('      domainoutline: not displayed (can be accessed by typing md.domainoutline)\n');end
-if isnan(md.riftoutline), fprintf('      riftoutline: N/A\n'); else fprintf('      riftoutline: not displayed (can be accessed by typing md.riftoutline)\n');end
-if isnan(md.iceshelfoutline), fprintf('      iceshelfoutline: N/A\n'); else fprintf('      iceshelfoutline: not displayed (can be accessed by typing md.iceshelfoutline)\n');end
-if isnan(md.icesheetoutline), fprintf('      icesheetoutline: N/A\n'); else fprintf('      icesheetoutline: not displayed (can be accessed by typing md.icesheetoutline)\n');end
-fprintf('\n   Model files:\n');
-if isnan(md.parameterfile), fprintf('      parameterfile: N/A\n'); else fprintf('      parameterfile: not displayed (can be accessed by typing md.parameterfile)\n');end
Index: sm/trunk/src/m/classes/public/displaymaterials.m
===================================================================
--- /issm/trunk/src/m/classes/public/displaymaterials.m	(revision 1248)
+++ 	(revision )
@@ -1,22 +1,0 @@
-function displaymaterials(md)
-%DISPLAYCONTROL - display material parameters
-%
-%   To avoid clobbering display.m with every field from model md, 
-%   we create this routine that displays material parameters from model md, 
-%   only if requested.
-%
-%   Usage:
-%      displaymaterials(md)
-
-fprintf('   Materials:\n');
-fprintf('      rho_ice: %g [kg/m^3]\n',md.rho_ice);
-fprintf('      rho_water: %g [kg/m^3]\n',md.rho_water);
-if isempty(md.B), fprintf('      B: N/A (flow law parameter)'); else fprintf('      B: (%i) (flow law parameter [Pa/s^(1/n)])\n',length(md.B)); end
-if isempty(md.n), fprintf('      n: N/A (flow law coefficient)'); else fprintf('      n: (%i) (flow law coefficient)\n',length(md.n)); end
-fprintf('      heatcapacity: %g [J/kg/K]\n',md.heatcapacity);
-fprintf('      thermalconductivity: %g [W/m/K]\n',md.thermalconductivity);
-fprintf('      meltingpoint: %g [K] (melting point of ice at 1atm in K)\n',md.meltingpoint);
-fprintf('      latentheat: %g [J/kg] (latent heat of fusion)\n',md.latentheat);
-fprintf('      beta: %g [K/Pa]\n',md.beta);
-fprintf('      mixed_layer_capacity: %g [W/kg/K]\n',md.mixed_layer_capacity);
-fprintf('      thermal_exchange_velocity: %g [m/s]\n',md.thermal_exchange_velocity);
Index: sm/trunk/src/m/classes/public/displaymesh.m
===================================================================
--- /issm/trunk/src/m/classes/public/displaymesh.m	(revision 1248)
+++ 	(revision )
@@ -1,46 +1,0 @@
-function displaymesh(md)
-%DISPLAYMESH - display mesh information
-%
-%   To avoid clobbering display.m with every field from model md, 
-%   we create this routine that displays mesh information from model md, 
-%   only if requested.
-%
-%   Usage:
-%      displaymesh(md)
-
-fprintf('   Mesh:\n'); 
-
-if strcmpi(md.type,'3d'),
-
-	fprintf('\n      Elements and nodes of the original 2d mesh:\n');
-	fprintf('         numberofelements2d: %i (number of elements)\n',md.numberofelements2d);
-	fprintf('         numberofgrids2d: %i (number of nodes)\n',md.numberofgrids2d); 
-	fprintf('         elements2d: (%i-%i) (index into (x,y,z), coordinates of the grids)\n',md.numberofelements2d,size(md.elements2d,2)); 
-	fprintf('         elements_type2d: (%i) (element types, according to number of grids)\n',md.numberofelements2d);
-	fprintf('         x2d: (%i) (node x coordinates)\n',length(md.x2d));
-	fprintf('         y2d: (%i) (node y coordinates)\n',length(md.y2d));
-	fprintf('         z2d: (%i) (node z coordinates)\n',length(md.z2d));
-
-	fprintf('\n      Elements and nodes of the extruded 3d mesh:\n');
-else
-
-	fprintf('\n      Elements and nodes:\n');
-end
-
-fprintf('         numberofelements: %i (number of elements)\n',md.numberofelements);
-fprintf('         numberofgrids: %i (number of nodes)\n',md.numberofgrids); 
-if ~isnan(md.dof), fprintf('      dof: %i (maximum number of dofs solved)\n',md.dof); end
-fprintf('         elements: (%i-%i) (index into (x,y,z), coordinates of the grids)\n',md.numberofelements,size(md.elements,2)); 
-fprintf('         elements_type: (%i) (element types, according to number of grids)\n',md.numberofelements);
-fprintf('         x: (%i) (node x coordinates)\n',length(md.x));
-fprintf('         y: (%i) (node y coordinates)\n',length(md.y));
-fprintf('         z: (%i) (node z coordinates)\n',length(md.z));
-fprintf('         numlayers: %i (number of extrusion layers)\n',md.numlayers);
-
-fprintf('\n      Properties:\n');
-fprintf('         type: %s\n',md.type);
-fprintf('         Penalties: (%i-%i))\n',size(md.penalties,1),size(md.penalties,2));
-fprintf('         gridonbed: (%i) (lower nodes flags list)\n',length(md.gridonbed));
-fprintf('         gridonsurface: (%i) (upper nodes flags list)\n',length(md.gridonsurface));
-fprintf('         elementonbed: (%i) (lower elements flags list)\n',length(md.elementonbed));
-fprintf('         elementonsurface: (%i) (upper elements flags list)\n',length(md.elementonsurface));
Index: sm/trunk/src/m/classes/public/displayobservations.m
===================================================================
--- /issm/trunk/src/m/classes/public/displayobservations.m	(revision 1248)
+++ 	(revision )
@@ -1,17 +1,0 @@
-function displayobservations(md)
-%DISPLAYOBSERVATIONS - display observations information
-%
-%   To avoid clobbering display.m with every field from model md, 
-%   we create this routine that displays observations information from model md, 
-%   only if requested.
-%
-%   Usage:
-%      displayobservations(md)
-
-fprintf('   Observations:\n');
-fprintf('      vx_obs [m/a]: (%i)\n',length(md.vx_obs));
-fprintf('      vy_obs [m/a]: (%i)\n',length(md.vy_obs));
-fprintf('      vel_obs [m/a]: (%i)\n',length(md.vel_obs));
-fprintf('      accumulation [m/a]: (%i)\n',length(md.accumulation));
-fprintf('      observed_temperature [K]: (%i)\n',length(md.observed_temperature));
-fprintf('      geothermalflux [W/m^2]: (%i)\n',length(md.geothermalflux));
Index: sm/trunk/src/m/classes/public/displayparallel.m
===================================================================
--- /issm/trunk/src/m/classes/public/displayparallel.m	(revision 1248)
+++ 	(revision )
@@ -1,24 +1,0 @@
-function displayparallel(md)
-%DISPLAYPARALLEL - display parallel computation parameters
-%
-%   To avoid clobbering display.m with every field from model md, 
-%   we create this routine that displays all fields related to
-%   parallel computation from model md, only if requested.
-%
-%   Usage:
-%      displayparallel(md)
-
-fprintf('\n      parallelisation:\n');
-fprintf('         cluster: %s      (set to ''cluster_name'' to run in cluster, ''none'' to run serially)\n',md.cluster);
-fprintf('         np: %i      (number of CPUS requested on cluster)\n',md.np);
-fprintf('         exclusive: %i      (set to 1 if CPUS used are not to be shared with other users, 0 otherwise)\n',md.exclusive);
-fprintf('         time: %i      (amount of time requested on cluster)\n',md.time); 
-fprintf('         alloc_cleanup: %i      (allocation cleanup before starting a job, default 1)\n',md.alloc_cleanup); 
-fprintf('         waitonlock: %i      (wait for batch results 1, or return 0. default is to return )\n',md.waitonlock); 
-fprintf('         queue: %s      (special queue name on cluster? default is '''')\n',md.queue); fprintf('\n      solver options:\n');
-
-fprintf('\n      solver options:\n');
-fprintf('         ice\n');
-fprintf('            solver_type: %s  (solver type for Ice: ''lu'' or ''cholesky'')\n',md.solver_type);
-fprintf('         cielo\n');
-fprintf('            solverstring: %s \n            (solver string for Petsc. See solversetto... routines. Default is asm)\n',md.solverstring); 
Index: sm/trunk/src/m/classes/public/displayparameters.m
===================================================================
--- /issm/trunk/src/m/classes/public/displayparameters.m	(revision 1248)
+++ 	(revision )
@@ -1,31 +1,0 @@
-function displayparameters(md)
-%DISPLAYPARAMETERS - display parameters
-%
-%   To avoid clobbering display.m with every field from model md, 
-%   we create this routine that displays parameters from model md, 
-%   only if requested.
-%
-%   Usage:
-%      displayparameters(md)
-
-fprintf('   Parameters:\n');
-
-fprintf('\n      geometry:\n');
-if isempty(md.surface), fprintf('         surface: N/A'); else fprintf('         surface [m]: (%i)\n',length(md.surface)); end
-if isempty(md.thickness), fprintf('         thickness: N/A'); else fprintf('         thickness [m]: (%i)\n',length(md.thickness)); end
-if isempty(md.bed), fprintf('         bed: N/A'); else fprintf('         bed [m]: (%i)\n',length(md.bed)); end
-if isempty(md.firn_layer), fprintf('         firn_layer: N/A'); else fprintf('         firn_layer [m]: (%i)\n',length(md.firn_layer)); end
-if strcmpi(md.type,'3d'), fprintf('         elementonbed: (%i)\n',length(md.elementonbed)); end
-if strcmpi(md.type,'3d'), fprintf('         elementonsurface: (%i)\n',length(md.elementonsurface)); end
-if strcmpi(md.type,'3d'), fprintf('         gridonbed: (%i)\n',length(md.gridonbed)); end
-if strcmpi(md.type,'3d'), fprintf('         gridonsurface: (%i)\n',length(md.gridonsurface)); end
-
-fprintf('\n      physical parameters:\n');
-fprintf('         g: %g [m/s^2]\n',md.g);
-
-fprintf('\n      Friction parameters (Sigma= drag^2 * Neff ^r * u ^s, with Neff=rho_ice*g*thickness+rho_ice*g*bed, r=q/p and s=1/p)\n');
-fprintf('         drag_type: %i (0: none, 1:plastic, 2:viscous):\n',md.drag_type);
-if isempty(md.drag), fprintf('         drag: N/A'); else fprintf('         drag: (%i)\n',length(md.drag)); end
-fprintf('         drag_type: %i (0: none, 1:plastic, 2:viscous):\n',md.drag_type);
-if isempty(md.p), fprintf('         p: N/A'); else fprintf('         p: (%i)\n',length(md.p)); end
-if isempty(md.q), fprintf('         q: N/A'); else fprintf('         q: (%i)\n',length(md.q)); end
Index: sm/trunk/src/m/classes/public/displayqmu.m
===================================================================
--- /issm/trunk/src/m/classes/public/displayqmu.m	(revision 1248)
+++ 	(revision )
@@ -1,93 +1,0 @@
-function displayqmu(md)
-%DISPLAYQMU - display qmu computation parameters
-%
-%   To avoid clobbering display.m with every field from model md, 
-%   we create this routine that displays all fields related to
-%   qmu computation from model md, only if requested.
-%
-%   Usage:
-%      displayqmu(md)
-
-disp(sprintf('      ''%s''','qmu using Dakota'));
-
-if ~md.qmu_analysis,
-	disp(sprintf('         %s','no scheduled qmu. activate by doing md.qmu_analysis=1'));
-else
-
-	for i=1:numel(md.variables)
-		disp(sprintf('         variables%s:  (arrays of each variable class)',...
-			string_dim(md.variables,i)));
-		fnames=fieldnames(md.variables(i));
-		maxlen=0;
-		for j=1:numel(fnames)
-			maxlen=max(maxlen,length(fnames{j}));
-		end
-		
-		for j=1:numel(fnames)
-			disp(sprintf(['            %-' num2str(maxlen+1) 's:    [%ix%i]    ''%s'''],...
-				fnames{j},size(md.variables.(fnames{j})),class(md.variables.(fnames{j}))));
-		end
-	end
-
-
-	for i=1:numel(md.responses)
-		disp(sprintf('         responses%s:  (arrays of each response class)',...
-			string_dim(md.responses,i)));
-		fnames=fieldnames(md.responses(i));
-		maxlen=0;
-		for j=1:numel(fnames)
-			maxlen=max(maxlen,length(fnames{j}));
-		end
-		
-		for j=1:numel(fnames)
-			disp(sprintf(['            %-' num2str(maxlen+1) 's:    [%ix%i]    ''%s'''],...
-				fnames{j},size(md.responses.(fnames{j})),class(md.responses.(fnames{j}))));
-		end
-	end
-
-
-	disp(sprintf('         qmu_method:  (array of dakota_method class)'));
-	for i=1:numel(md.qmu_method);
-		if strcmp(class(md.qmu_method(i)),'dakota_method')
-			disp(sprintf('            method%s :    ''%s''',...
-				string_dim(md.qmu_method,i),md.qmu_method(i).method));
-		end
-	end
-
-	for i=1:numel(md.qmu_params)
-		disp(sprintf('         qmu_params%s:  (array of method-independent parameters)',...
-			string_dim(md.qmu_params,i)));
-		fnames=fieldnames(md.qmu_params(i));
-		maxlen=0;
-		for j=1:numel(fnames)
-			maxlen=max(maxlen,length(fnames{j}));
-		end
-		
-		for j=1:numel(fnames)
-			disp(sprintf(['            %-' num2str(maxlen+1) 's: %s'],...
-				fnames{j},any2str(md.qmu_params(i).(fnames{j}))));
-		end
-	end
-
-	for i=1:numel(md.dakotaresults)
-		disp(sprintf('         dakotaresults%s:  (information from dakota files)',...
-			string_dim(md.dakotaresults,i)));
-		fnames=fieldnames(md.dakotaresults(i));
-		maxlen=0;
-		for j=1:numel(fnames)
-			maxlen=max(maxlen,length(fnames{j}));
-		end
-		
-		for j=1:numel(fnames)
-			disp(sprintf(['            %-' num2str(maxlen+1) 's:    [%ix%i]    ''%s'''],...
-				fnames{j},size(md.dakotaresults.(fnames{j})),class(md.dakotaresults.(fnames{j}))));
-		end
-	end
-
-	if isempty(md.dakotain), disp(sprintf('         dakotain: N/A')); else disp(sprintf('         dakotain:    [%ix%i]    (can be accessed by typing md.dakotain)',size(md.dakotain)));end
-	if isempty(md.dakotaout), disp(sprintf('         dakotaout: N/A')); else disp(sprintf('         dakotaout:    [%ix%i]    (can be accessed by typing md.dakotaout)',size(md.dakotaout)));end
-	if isempty(md.dakotadat), disp(sprintf('         dakotadat: N/A')); else disp(sprintf('         dakotadat:    [%ix%i]    (can be accessed by typing md.dakotadat)',size(md.dakotadat)));end
-	disp(sprintf('         npart   : %i (number of partitions for semi-descrete qmu)',md.npart));
-	disp(sprintf('         part    : [%i] (user provided mesh partition, defaults to metis if not specified)',length(md.part)));
-
-end
Index: sm/trunk/src/m/classes/public/displayresults.m
===================================================================
--- /issm/trunk/src/m/classes/public/displayresults.m	(revision 1248)
+++ 	(revision )
@@ -1,47 +1,0 @@
-function displayresults(md)
-%DISPLAYRESULTS - display results
-%
-%   To avoid clobbering display.m with every field from model md, 
-%   we create this routine that displays results from model md, 
-%   only if requested.
-%
-%   Usage:
-%      displayresults(md)
-
-fprintf('   Results:\n');
-
-%call struct_display recursively on md.results
-struct_display(md.results,'      ');
-
-%display output parameters
-fprintf('\n      output parameters:\n');
-if ~isstruct(md.stress), fprintf('         stress: N/A\n'); 
-else 
-	fprintf('         stress [Pa]:');
-	struct_display(md.stress,'         ');
-end
-if ~isstruct(md.deviatoricstress), fprintf('         deviatoricstress: N/A\n'); 
-else 
-	fprintf('         deviatoricstress [Pa]:');
-	struct_display(md.deviatoricstress,'         ');
-end
-if ~isstruct(md.strainrate), fprintf('         strainrate: N/A\n'); 
-else 
-           fprintf('         strainrate [1/a]:');
-		  struct_display(md.strainrate,'         ');
-end
-end
-
-function struct_display(structure,offset)
-	structure_fields=fields(structure);
-	for i=1:length(structure_fields),
-		%recursive call if necessary
-		field=eval(['structure.' structure_fields{i}]);
-		if isstruct(field),
-			fprintf('\n%s\n',[offset structure_fields{i} ':']);
-			struct_display(field,[offset '   ']);
-		else
-			fprintf('%s\n',[offset structure_fields{i} ': (' num2str(size(field,1))  ')' ]);
-		end
-	end
-end
Index: sm/trunk/src/m/classes/public/displaysolutionparameters.m
===================================================================
--- /issm/trunk/src/m/classes/public/displaysolutionparameters.m	(revision 1248)
+++ 	(revision )
@@ -1,105 +1,0 @@
-function displaysolutionparameters(md)
-%DISPLAYSOLUTIONPARAMETERS - display solution parameters
-%
-%   To avoid clobbering display.m with every field from model md, 
-%   we create this routine that displays the solution parameters
-%   from model md, only if requested.
-%
-%   Usage:
-%      displaysolutionparameters(md)
-
-fprintf('   Solution parameters:\n');
-fprintf('\n      statics:\n');
-fprintf('         %s\n','Newton convergence criteria');
-fprintf('            eps_rel: %g      (velocity relative convergence criterion)\n',md.eps_rel);
-fprintf('            eps_abs: %g      (velocity absolute convergence criterion [m/yr], NaN -> no absolute criterion)\n',md.eps_abs);
-fprintf('            viscosity_overshoot: %g      (over-shooting constant new=new+C*(new-old))\n',md.viscosity_overshoot);
-fprintf('         penalty_offset: %g      (offset used by penalties: penalty = Kmax*10^offset)\n',md.penalty_offset);
-fprintf('         penalty_melting: %g      (penalty used to keep T<Tpmp)\n',md.penalty_melting);
-fprintf('         penalty_lock: %g      (counter used to lock penalties that zig zag)\n',md.penalty_lock);
-fprintf('         lowmem: %i      (Set to 1 if you are running low on cluster memory)\n',md.lowmem);
-fprintf('         sparsity: %g      (matrix sparsity. Set to .001 for < 1M dof, .0001 for 5M dof, and .00001 for > 10M dof\n',md.sparsity);
-fprintf('         connectivity: %i      (element connectivity)\n',md.connectivity); 
-fprintf('         debug: %i      (output debug statements when possible yes-> 1, no -> 0. Default is 1\n',md.debug);
-fprintf('         element_debug: %i      (output debug statements for elementswhen possible yes-> 1, no -> 0. Default is 0\n',md.element_debug);
-fprintf('         element_debugid: %i      (if element_debug on, id of element for which to output messages\n',md.element_debugid);
-fprintf('         debug: %i      (output debug statements when possible yes-> 1, no -> 0. Default is 1');
-fprintf('      ''%s''\n','transient');
-fprintf('         dt: %g ( time step in years)\n',md.dt/md.yts);
-fprintf('         ndt: %g ( time span in years)\n',md.ndt/md.yts);
-fprintf('         artificial_diffusivity: %i (yes->1, no->0)\n',md.artificial_diffusivity);
-fprintf('         minh: %g (minimum thickness to avoid stiffness singularity)\n',md.minh);
-fprintf('         timestepping: %i ( adptative time stepping implemented - default to 0)\n',md.timestepping);
-fprintf('         deltaH: %g ( minimum thickness difference between two time steps)\n',md.deltaH);
-fprintf('         DeltaH: %g ( maximum thickness difference between two time steps)\n',md.DeltaH);
-fprintf('         deltaT: %g ( minimum temperature difference between two time steps)\n',md.deltaT);
-fprintf('         DeltaT: %g ( maximum temperature difference between two time steps)\n',md.DeltaT);
-fprintf('         timeacc: %g ( multiplier to time step when time stepping increases time step)\n',md.timeacc);
-fprintf('         timedec: %g ( multiplier to time step when time stepping decresaes time step)\n',md.timedec);
-
-fprintf('\n      control:\n');
-fprintf('         control_type: %s (control type, ex: ''drag'', or ''B'')\n',md.control_type);
-fprintf('         fit: (%g)      ( 0 -> absolute, 1 -> relative, 2 -> logarithmic. default is absolute)\n',length(md.fit));
-fprintf('         meanvel: %g      (velocity scaling factor when evaluating relative or logarithmic misfit)\n',md.meanvel);
-fprintf('         epsvel: %g      ( for relative fit, avoids misfit becoming infinity, for logarithmic fit, threshold for velocity)\n',md.epsvel);
-fprintf('         nsteps: %i      (number of optimization searches)\n',md.nsteps);
-fprintf('         optscal: (%i %i)      (scaling factor on gradient direction during optimization, for each optimization step)\n',size(md.optscal,1),size(md.optscal,2));
-fprintf('         mincontrolconstraint: %f      (minimum contraint for the controlled parameters, NaN -> no constraint)\n',md.mincontrolconstraint);
-fprintf('         maxcontrolconstraint: %f      (maximum contraint for the controlled parameters, NaN -> no constraint)\n',md.maxcontrolconstraint);
-fprintf('         maxiter: (%i)      (maximum iterations during each optimization step)\n',length(md.maxiter));
-fprintf('         tolx: %f      (minimum tolerance which will stop one optimization search)\n',md.tolx);
-fprintf('         plot: %i      (visualization of the results of each iteration yes -> 1 no -> 0. Default is 1)\n',md.plot);
-
-fprintf('\n      mesh:\n');
-fprintf('         mesh_domainoutline: %s      (domain outlines)\n',md.mesh_domainoutline);
-fprintf('         mesh_riftoutline: %s      (rift outlines)\n',md.mesh_riftoutline);
-fprintf('         mesh_resolution: (%g)      (mesh resolutoin)\n',md.mesh_resolution);
-
-%mesh2grid type
-fprintf('\n      mesh2grid:\n');
-mesh2grid_string='';
-for i=1:length(md.mesh2grid_parameters),
-	parameter=md.mesh2grid_parameters{i};
-	mesh2grid_string=[mesh2grid_string parameter ' and '];
-end
-mesh2grid_string=mesh2grid_string(1:length(mesh2grid_string)-5);
-fprintf('         mesh2grid_parameters: %s %s\n',mesh2grid_string,'(list of parameters for which mesh 2 grid interpolation is carried out; ex: {''drag''}, or {''drag'',''B''})');
-%mesh2grid interpolation
-mesh2grid_interpstring='';
-for i=1:length(md.mesh2grid_interpolation),
-	interpolation=md.mesh2grid_interpolation{i};
-	mesh2grid_interpstring=[mesh2grid_interpstring interpolation ' and '];
-end
-mesh2grid_interpstring=mesh2grid_interpstring(1:length(mesh2grid_interpstring)-5);
-fprintf('         mesh2grid_interpolation: %s %s\n',mesh2grid_interpstring,'(list of interpolation (''node'' or ''element'') for each parameter ex: {''node''}, or {''node'',''element''})');
-
-%mesh2grid filter
-mesh2grid_filterstring='';
-for i=1:length(md.mesh2grid_filter),
-	filter=md.mesh2grid_filter{i};
-	mesh2grid_filterstring=[mesh2grid_filterstring filter ' and '];
-end
-mesh2grid_filterstring=mesh2grid_filterstring(1:length(mesh2grid_filterstring)-5);
-fprintf('         mesh2grid_filter: %s %s\n',mesh2grid_filterstring,'(list of filter (''average'' or ''nearest'') for each parameter ex: {''average''}, or {''average'',''nearest''})');
-fprintf('         mesh2grid_cornereast: %g ( corner east of square grid)\n',md.mesh2grid_cornereast);
-fprintf('         mesh2grid_cornernorth: %g ( corner north of square grid)\n',md.mesh2grid_cornernorth);
-fprintf('         mesh2grid_xposting: %g (x  posting of grid (in m))\n',md.mesh2grid_xposting);
-fprintf('         mesh2grid_yposting: %g (y  posting of grid (in m))\n',md.mesh2grid_yposting);
-fprintf('         mesh2grid_nlines: %g ( number of grid lines)\n',md.mesh2grid_nlines);
-fprintf('         mesh2grid_ncolumns: %g ( number of grid columns)\n',md.mesh2grid_ncolumns);
-fprintf('         mesh2grid_windowsize: %g ( size of filter )\n',md.mesh2grid_windowsize);
-
-%parallelisation
-md.parallel
-
-%parameteroutput type
-parameteroutput_string='';
-for i=1:length(md.parameteroutput),
-	parameter=md.parameteroutput{i};
-	parameteroutput_string=[parameteroutput_string parameter ' and '];
-end
-parameteroutput_string=parameteroutput_string(1:length(parameteroutput_string)-5);
-
-fprintf('\n      output:\n');
-fprintf('         parameteroutput: %s %s\n',parameteroutput_string,...
-                       '(list of output parameters recovered in the solution sequences: ex: {''viscousheating'',''stress''})\n');
