Index: /issm/trunk-jpl/src/m/classes/taoinversion.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/taoinversion.py	(revision 26902)
+++ /issm/trunk-jpl/src/m/classes/taoinversion.py	(revision 26903)
@@ -1,7 +1,7 @@
 import numpy as np
-
 from checkfield import checkfield
 from IssmConfig import IssmConfig
 from marshallcostfunctions import marshallcostfunctions
+from fielddisplay import fielddisplay
 from project3d import project3d
 from supportedcontrols import *
@@ -45,37 +45,37 @@
     def __repr__(self):
         s = '   taoinversion parameters:\n'
-        s += '{}'.format(fieldstring(self, 'iscontrol', 'is inversion activated?'))
-        s += '{}'.format(fieldstring(self, 'mantle_viscosity', 'mantle viscosity constraints (NaN means no constraint) (Pa s)'))
-        s += '{}'.format(fieldstring(self, 'lithosphere_thickness', 'lithosphere thickness constraints (NaN means no constraint) (m)'))
-        s += '{}'.format(fieldstring(self, 'cross_section_shape', "1: square-edged, 2: elliptical - edged surface"))
-        s += '{}'.format(fieldstring(self, 'incomplete_adjoint', '1: linear viscosity, 0: non - linear viscosity'))
-        s += '{}'.format(fieldstring(self, 'control_parameters', 'ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}'))
-        s += '{}'.format(fieldstring(self, 'maxsteps', 'maximum number of iterations (gradient computation)'))
-        s += '{}'.format(fieldstring(self, 'maxiter', 'maximum number of Function evaluation (forward run)'))
-        s += '{}'.format(fieldstring(self, 'fatol', 'convergence criterion: f(X) - f(X * ) (X: current iteration, X * : "true" solution, f: cost function)'))
-        s += '{}'.format(fieldstring(self, 'frtol', 'convergence criterion: |f(X) - f(X * )| / |f(X * )|'))
-        s += '{}'.format(fieldstring(self, 'gatol', 'convergence criterion: ||g(X)|| (g: gradient of the cost function)'))
-        s += '{}'.format(fieldstring(self, 'grtol', 'convergence criterion: ||g(X)|| / |f(X)|'))
-        s += '{}'.format(fieldstring(self, 'gttol', 'convergence criterion: ||g(X)|| / ||g(X0)|| (g(X0): gradient at initial guess X0)'))
-        s += '{}'.format(fieldstring(self, 'algorithm', 'minimization algorithm: ''tao_blmvm'', ''tao_cg'', ''tao_lmvm'''))
-        s += '{}'.format(fieldstring(self, 'cost_functions', 'indicate the type of response for each optimization step'))
-        s += '{}'.format(fieldstring(self, 'cost_functions_coefficients', 'cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter'))
-        s += '{}'.format(fieldstring(self, 'min_parameters', 'absolute minimum acceptable value of the inversed parameter on each vertex'))
-        s += '{}'.format(fieldstring(self, 'max_parameters', 'absolute maximum acceptable value of the inversed parameter on each vertex'))
-        s += '{}'.format(fieldstring(self, 'vx_obs', 'observed velocity x component [m / yr]'))
-        s += '{}'.format(fieldstring(self, 'vy_obs', 'observed velocity y component [m / yr]'))
-        s += '{}'.format(fieldstring(self, 'vel_obs', 'observed velocity magnitude [m / yr]'))
-        s += '{}'.format(fieldstring(self, 'thickness_obs', 'observed thickness [m]'))
-        s += '{}'.format(fieldstring(self, 'surface_obs', 'observed surface elevation [m]'))
-        s += '{}'.format('Available cost functions:')
-        s += '{}'.format('   101: SurfaceAbsVelMisfit')
-        s += '{}'.format('   102: SurfaceRelVelMisfit')
-        s += '{}'.format('   103: SurfaceLogVelMisfit')
-        s += '{}'.format('   104: SurfaceLogVxVyMisfit')
-        s += '{}'.format('   105: SurfaceAverageVelMisfit')
-        s += '{}'.format('   201: ThicknessAbsMisfit')
-        s += '{}'.format('   501: DragCoefficientAbsGradient')
-        s += '{}'.format('   502: RheologyBbarAbsGradient')
-        s += '{}'.format('   503: ThicknessAbsGradient')
+        s += '{}\n'.format(fielddisplay(self, 'iscontrol', 'is inversion activated?'))
+        # s += '{}\n'.format(fielddisplay(self, 'mantle_viscosity', 'mantle viscosity constraints (NaN means no constraint) (Pa s)'))
+        # s += '{}\n'.format(fielddisplay(self, 'lithosphere_thickness', 'lithosphere thickness constraints (NaN means no constraint) (m)'))
+        # s += '{}\n'.format(fielddisplay(self, 'cross_section_shape', "1: square-edged, 2: elliptical - edged surface"))
+        s += '{}\n'.format(fielddisplay(self, 'incomplete_adjoint', '1: linear viscosity, 0: non - linear viscosity'))
+        s += '{}\n'.format(fielddisplay(self, 'control_parameters', 'ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}'))
+        s += '{}\n'.format(fielddisplay(self, 'maxsteps', 'maximum number of iterations (gradient computation)'))
+        s += '{}\n'.format(fielddisplay(self, 'maxiter', 'maximum number of Function evaluation (forward run)'))
+        s += '{}\n'.format(fielddisplay(self, 'fatol', 'convergence criterion: f(X) - f(X * ) (X: current iteration, X * : "true" solution, f: cost function)'))
+        s += '{}\n'.format(fielddisplay(self, 'frtol', 'convergence criterion: |f(X) - f(X * )| / |f(X * )|'))
+        s += '{}\n'.format(fielddisplay(self, 'gatol', 'convergence criterion: ||g(X)|| (g: gradient of the cost function)'))
+        s += '{}\n'.format(fielddisplay(self, 'grtol', 'convergence criterion: ||g(X)|| / |f(X)|'))
+        s += '{}\n'.format(fielddisplay(self, 'gttol', 'convergence criterion: ||g(X)|| / ||g(X0)|| (g(X0): gradient at initial guess X0)'))
+        s += '{}\n'.format(fielddisplay(self, 'algorithm', 'minimization algorithm: ''tao_blmvm'', ''tao_cg'', ''tao_lmvm'''))
+        s += '{}\n'.format(fielddisplay(self, 'cost_functions', 'indicate the type of response for each optimization step'))
+        s += '{}\n'.format(fielddisplay(self, 'cost_functions_coefficients', 'cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter'))
+        s += '{}\n'.format(fielddisplay(self, 'min_parameters', 'absolute minimum acceptable value of the inversed parameter on each vertex'))
+        s += '{}\n'.format(fielddisplay(self, 'max_parameters', 'absolute maximum acceptable value of the inversed parameter on each vertex'))
+        s += '{}\n'.format(fielddisplay(self, 'vx_obs', 'observed velocity x component [m / yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'vy_obs', 'observed velocity y component [m / yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'vel_obs', 'observed velocity magnitude [m / yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'thickness_obs', 'observed thickness [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'surface_obs', 'observed surface elevation [m]'))
+        s += '{}\n'.format('Available cost functions:')
+        s += '{}\n'.format('   101: SurfaceAbsVelMisfit')
+        s += '{}\n'.format('   102: SurfaceRelVelMisfit')
+        s += '{}\n'.format('   103: SurfaceLogVelMisfit')
+        s += '{}\n'.format('   104: SurfaceLogVxVyMisfit')
+        s += '{}\n'.format('   105: SurfaceAverageVelMisfit')
+        s += '{}\n'.format('   201: ThicknessAbsMisfit')
+        s += '{}\n'.format('   501: DragCoefficientAbsGradient')
+        s += '{}\n'.format('   502: RheologyBbarAbsGradient')
+        s += '{}\n'.format('   503: ThicknessAbsGradient')
         return s
 
