Changeset 26903
- Timestamp:
- 02/25/22 00:14:59 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/classes/taoinversion.py
r25688 r26903 1 1 import numpy as np 2 3 2 from checkfield import checkfield 4 3 from IssmConfig import IssmConfig 5 4 from marshallcostfunctions import marshallcostfunctions 5 from fielddisplay import fielddisplay 6 6 from project3d import project3d 7 7 from supportedcontrols import * … … 45 45 def __repr__(self): 46 46 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') 80 80 return s 81 81
Note:
See TracChangeset
for help on using the changeset viewer.