Changeset 26903


Ignore:
Timestamp:
02/25/22 00:14:59 (3 years ago)
Author:
bdef
Message:

BUG: fixing display in tao inversion

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/classes/taoinversion.py

    r25688 r26903  
    11import numpy as np
    2 
    32from checkfield import checkfield
    43from IssmConfig import IssmConfig
    54from marshallcostfunctions import marshallcostfunctions
     5from fielddisplay import fielddisplay
    66from project3d import project3d
    77from supportedcontrols import *
     
    4545    def __repr__(self):
    4646        s = '   taoinversion parameters:\n'
    47         s += '{}'.format(fieldstring(self, 'iscontrol', 'is inversion activated?'))
    48         s += '{}'.format(fieldstring(self, 'mantle_viscosity', 'mantle viscosity constraints (NaN means no constraint) (Pa s)'))
    49         s += '{}'.format(fieldstring(self, 'lithosphere_thickness', 'lithosphere thickness constraints (NaN means no constraint) (m)'))
    50         s += '{}'.format(fieldstring(self, 'cross_section_shape', "1: square-edged, 2: elliptical - edged surface"))
    51         s += '{}'.format(fieldstring(self, 'incomplete_adjoint', '1: linear viscosity, 0: non - linear viscosity'))
    52         s += '{}'.format(fieldstring(self, 'control_parameters', 'ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}'))
    53         s += '{}'.format(fieldstring(self, 'maxsteps', 'maximum number of iterations (gradient computation)'))
    54         s += '{}'.format(fieldstring(self, 'maxiter', 'maximum number of Function evaluation (forward run)'))
    55         s += '{}'.format(fieldstring(self, 'fatol', 'convergence criterion: f(X) - f(X * ) (X: current iteration, X * : "true" solution, f: cost function)'))
    56         s += '{}'.format(fieldstring(self, 'frtol', 'convergence criterion: |f(X) - f(X * )| / |f(X * )|'))
    57         s += '{}'.format(fieldstring(self, 'gatol', 'convergence criterion: ||g(X)|| (g: gradient of the cost function)'))
    58         s += '{}'.format(fieldstring(self, 'grtol', 'convergence criterion: ||g(X)|| / |f(X)|'))
    59         s += '{}'.format(fieldstring(self, 'gttol', 'convergence criterion: ||g(X)|| / ||g(X0)|| (g(X0): gradient at initial guess X0)'))
    60         s += '{}'.format(fieldstring(self, 'algorithm', 'minimization algorithm: ''tao_blmvm'', ''tao_cg'', ''tao_lmvm'''))
    61         s += '{}'.format(fieldstring(self, 'cost_functions', 'indicate the type of response for each optimization step'))
    62         s += '{}'.format(fieldstring(self, 'cost_functions_coefficients', 'cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter'))
    63         s += '{}'.format(fieldstring(self, 'min_parameters', 'absolute minimum acceptable value of the inversed parameter on each vertex'))
    64         s += '{}'.format(fieldstring(self, 'max_parameters', 'absolute maximum acceptable value of the inversed parameter on each vertex'))
    65         s += '{}'.format(fieldstring(self, 'vx_obs', 'observed velocity x component [m / yr]'))
    66         s += '{}'.format(fieldstring(self, 'vy_obs', 'observed velocity y component [m / yr]'))
    67         s += '{}'.format(fieldstring(self, 'vel_obs', 'observed velocity magnitude [m / yr]'))
    68         s += '{}'.format(fieldstring(self, 'thickness_obs', 'observed thickness [m]'))
    69         s += '{}'.format(fieldstring(self, 'surface_obs', 'observed surface elevation [m]'))
    70         s += '{}'.format('Available cost functions:')
    71         s += '{}'.format('   101: SurfaceAbsVelMisfit')
    72         s += '{}'.format('   102: SurfaceRelVelMisfit')
    73         s += '{}'.format('   103: SurfaceLogVelMisfit')
    74         s += '{}'.format('   104: SurfaceLogVxVyMisfit')
    75         s += '{}'.format('   105: SurfaceAverageVelMisfit')
    76         s += '{}'.format('   201: ThicknessAbsMisfit')
    77         s += '{}'.format('   501: DragCoefficientAbsGradient')
    78         s += '{}'.format('   502: RheologyBbarAbsGradient')
    79         s += '{}'.format('   503: ThicknessAbsGradient')
     47        s += '{}\n'.format(fielddisplay(self, 'iscontrol', 'is inversion activated?'))
     48        # s += '{}\n'.format(fielddisplay(self, 'mantle_viscosity', 'mantle viscosity constraints (NaN means no constraint) (Pa s)'))
     49        # s += '{}\n'.format(fielddisplay(self, 'lithosphere_thickness', 'lithosphere thickness constraints (NaN means no constraint) (m)'))
     50        # s += '{}\n'.format(fielddisplay(self, 'cross_section_shape', "1: square-edged, 2: elliptical - edged surface"))
     51        s += '{}\n'.format(fielddisplay(self, 'incomplete_adjoint', '1: linear viscosity, 0: non - linear viscosity'))
     52        s += '{}\n'.format(fielddisplay(self, 'control_parameters', 'ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}'))
     53        s += '{}\n'.format(fielddisplay(self, 'maxsteps', 'maximum number of iterations (gradient computation)'))
     54        s += '{}\n'.format(fielddisplay(self, 'maxiter', 'maximum number of Function evaluation (forward run)'))
     55        s += '{}\n'.format(fielddisplay(self, 'fatol', 'convergence criterion: f(X) - f(X * ) (X: current iteration, X * : "true" solution, f: cost function)'))
     56        s += '{}\n'.format(fielddisplay(self, 'frtol', 'convergence criterion: |f(X) - f(X * )| / |f(X * )|'))
     57        s += '{}\n'.format(fielddisplay(self, 'gatol', 'convergence criterion: ||g(X)|| (g: gradient of the cost function)'))
     58        s += '{}\n'.format(fielddisplay(self, 'grtol', 'convergence criterion: ||g(X)|| / |f(X)|'))
     59        s += '{}\n'.format(fielddisplay(self, 'gttol', 'convergence criterion: ||g(X)|| / ||g(X0)|| (g(X0): gradient at initial guess X0)'))
     60        s += '{}\n'.format(fielddisplay(self, 'algorithm', 'minimization algorithm: ''tao_blmvm'', ''tao_cg'', ''tao_lmvm'''))
     61        s += '{}\n'.format(fielddisplay(self, 'cost_functions', 'indicate the type of response for each optimization step'))
     62        s += '{}\n'.format(fielddisplay(self, 'cost_functions_coefficients', 'cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter'))
     63        s += '{}\n'.format(fielddisplay(self, 'min_parameters', 'absolute minimum acceptable value of the inversed parameter on each vertex'))
     64        s += '{}\n'.format(fielddisplay(self, 'max_parameters', 'absolute maximum acceptable value of the inversed parameter on each vertex'))
     65        s += '{}\n'.format(fielddisplay(self, 'vx_obs', 'observed velocity x component [m / yr]'))
     66        s += '{}\n'.format(fielddisplay(self, 'vy_obs', 'observed velocity y component [m / yr]'))
     67        s += '{}\n'.format(fielddisplay(self, 'vel_obs', 'observed velocity magnitude [m / yr]'))
     68        s += '{}\n'.format(fielddisplay(self, 'thickness_obs', 'observed thickness [m]'))
     69        s += '{}\n'.format(fielddisplay(self, 'surface_obs', 'observed surface elevation [m]'))
     70        s += '{}\n'.format('Available cost functions:')
     71        s += '{}\n'.format('   101: SurfaceAbsVelMisfit')
     72        s += '{}\n'.format('   102: SurfaceRelVelMisfit')
     73        s += '{}\n'.format('   103: SurfaceLogVelMisfit')
     74        s += '{}\n'.format('   104: SurfaceLogVxVyMisfit')
     75        s += '{}\n'.format('   105: SurfaceAverageVelMisfit')
     76        s += '{}\n'.format('   201: ThicknessAbsMisfit')
     77        s += '{}\n'.format('   501: DragCoefficientAbsGradient')
     78        s += '{}\n'.format('   502: RheologyBbarAbsGradient')
     79        s += '{}\n'.format('   503: ThicknessAbsGradient')
    8080        return s
    8181
Note: See TracChangeset for help on using the changeset viewer.