Changeset 13023
- Timestamp:
- 08/13/12 15:52:22 (13 years ago)
- Location:
- issm/trunk-jpl/src/m
- Files:
-
- 20 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/classes/autodiff.py
r12958 r13023 1 1 #module imports 2 2 from fielddisplay import fielddisplay 3 from EnumDefinitions import * 4 from checkfield import * 5 from WriteData import * 3 6 4 7 class autodiff(object): 8 """ 9 AUTODIFF class definition 10 11 Usage: 12 autodiff=autodiff(); 13 """ 14 5 15 #properties 6 16 def __init__(self): … … 14 24 15 25 #}}} 16 def __repr__( obj):26 def __repr__(self): 17 27 # {{{ Display 18 28 string=' automatic differentiation parameters:' 19 string="%s\n%s"%(string,fielddisplay( obj,'isautodiff','indicates if the automatic differentiation is activated'))20 string="%s\n%s"%(string,fielddisplay( obj,'forward','forward differentiation'))21 string="%s\n%s"%(string,fielddisplay( obj,'reverse','backward differentiation'))29 string="%s\n%s"%(string,fielddisplay(self,'isautodiff','indicates if the automatic differentiation is activated')) 30 string="%s\n%s"%(string,fielddisplay(self,'forward','forward differentiation')) 31 string="%s\n%s"%(string,fielddisplay(self,'reverse','backward differentiation')) 22 32 return string 23 33 #}}} 24 def setdefaultparameters( obj):34 def setdefaultparameters(self): 25 35 # {{{setdefaultparameters 26 return obj36 return self 27 37 #}}} 28 38 39 def checkconsistency(self,md,solution,analyses): # {{{ 40 return md 41 # }}} 42 43 def marshall(self,fid): # {{{ 44 WriteData(fid,'object',self,'fieldname','isautodiff','format','Boolean') 45 WriteData(fid,'object',self,'fieldname','forward','format','Boolean') 46 WriteData(fid,'object',self,'fieldname','reverse','format','Boolean') 47 # }}} 48 -
issm/trunk-jpl/src/m/classes/clusters/generic.py
r12944 r13023 73 73 74 74 #write queuing script 75 if not 'Windows'in platform.system():75 if 'Windows' not in platform.system(): 76 76 77 77 fid=open(modelname+'.queue','w') … … 115 115 116 116 #write queuing script 117 if not 'Windows'in platform.system():117 if 'Windows' not in platform.system(): 118 118 119 119 fid=open(modelname+'.queue','w') -
issm/trunk-jpl/src/m/classes/diagnostic.py
r13020 r13023 113 113 114 114 #Early return 115 if not DiagnosticHorizAnalysisEnum()in analyses:115 if DiagnosticHorizAnalysisEnum() not in analyses: 116 116 return md 117 #if ( not DiagnosticHorizAnalysisEnum()in analyses) | (solution==TransientSolutionEnum() and not md.transient.isdiagnostic):117 #if (DiagnosticHorizAnalysisEnum() not in analyses) | (solution==TransientSolutionEnum() and not md.transient.isdiagnostic): 118 118 # return md 119 119 -
issm/trunk-jpl/src/m/classes/flaim.py
r12958 r13023 1 1 #module imports 2 import numpy 2 3 from fielddisplay import fielddisplay 4 from EnumDefinitions import * 5 from checkfield import * 6 from WriteData import * 3 7 4 8 class flaim(object): 9 """ 10 FLAIM class definition 11 12 Usage: 13 flaim=flaim(); 14 """ 15 5 16 #properties 6 17 def __init__(self): … … 20 31 self.opt_niter = 30000 21 32 #}}} 22 def __repr__( obj):33 def __repr__(self): 23 34 # {{{ Displa 24 35 string=' FLAIM - Flight Line Adaptation using Ice sheet Modeling:' 25 36 26 37 string="%s\n\n%s"%(string,' Input:') 27 string="%s\n%s"%(string,fielddisplay( obj,'targets' ,'name of kml output targets file '))28 string="%s\n%s"%(string,fielddisplay( obj,'tracks' ,'name of kml input tracks file '))29 string="%s\n%s"%(string,fielddisplay( obj,'flightreqs' ,'structure of kml flight requirements (not used yet)'))30 string="%s\n%s"%(string,fielddisplay( obj,'criterion' ,'element or nodal criterion for flight path evaluation (metric)'))38 string="%s\n%s"%(string,fielddisplay(self,'targets' ,'name of kml output targets file ')) 39 string="%s\n%s"%(string,fielddisplay(self,'tracks' ,'name of kml input tracks file ')) 40 string="%s\n%s"%(string,fielddisplay(self,'flightreqs' ,'structure of kml flight requirements (not used yet)')) 41 string="%s\n%s"%(string,fielddisplay(self,'criterion' ,'element or nodal criterion for flight path evaluation (metric)')) 31 42 32 43 string="%s\n\n%s"%(string,' Arguments:') 33 string="%s\n%s"%(string,fielddisplay( obj,'gridsatequator' ,'number of grids at equator (determines resolution)'))34 string="%s\n%s"%(string,fielddisplay( obj,'usevalueordering' ,'flag to consider target values for flight path evaluation'))35 string="%s\n%s"%(string,fielddisplay( obj,'split_antimeridian' ,'flag to split polygons on the antimeridian'))44 string="%s\n%s"%(string,fielddisplay(self,'gridsatequator' ,'number of grids at equator (determines resolution)')) 45 string="%s\n%s"%(string,fielddisplay(self,'usevalueordering' ,'flag to consider target values for flight path evaluation')) 46 string="%s\n%s"%(string,fielddisplay(self,'split_antimeridian' ,'flag to split polygons on the antimeridian')) 36 47 37 48 string="%s\n\n%s"%(string,' Optimization:') 38 string="%s\n%s"%(string,fielddisplay( obj,'path_optimize' ,'optimize? (default false)'))39 string="%s\n%s"%(string,fielddisplay( obj,'opt_ndir' ,['number of directions to test when moving a point. If this value = 1, a random direction is tested.',\49 string="%s\n%s"%(string,fielddisplay(self,'path_optimize' ,'optimize? (default false)')) 50 string="%s\n%s"%(string,fielddisplay(self,'opt_ndir' ,['number of directions to test when moving a point. If this value = 1, a random direction is tested.',\ 40 51 'A value > 1 results in directions equally spaced from [0, 2*PI] being tested.',\ 41 52 'For example, 4 would result in directions [0, PI/2, PI, 3PI/2].'])) 42 string="%s\n%s"%(string,fielddisplay( obj,'opt_dist' ,'specifies the distance in km (default 25) to move a randomly selected path point on each iteration'))43 string="%s\n%s"%(string,fielddisplay( obj,'opt_niter' ,['number of iterations (default 30,000) to run for flightplan optimization',\53 string="%s\n%s"%(string,fielddisplay(self,'opt_dist' ,'specifies the distance in km (default 25) to move a randomly selected path point on each iteration')) 54 string="%s\n%s"%(string,fielddisplay(self,'opt_niter' ,['number of iterations (default 30,000) to run for flightplan optimization',\ 44 55 'i.e. the number of times to randomly select a point and move it.'])) 45 56 46 57 string="%s\n\n%s"%(string,' Output:') 47 string="%s\n%s"%(string,fielddisplay( obj,'solution' ,'name of kml solution file'))48 string="%s\n%s"%(string,fielddisplay( obj,'quality' ,'quality of kml solution'))58 string="%s\n%s"%(string,fielddisplay(self,'solution' ,'name of kml solution file')) 59 string="%s\n%s"%(string,fielddisplay(self,'quality' ,'quality of kml solution')) 49 60 return string 50 61 #}}} 62 63 def checkconsistency(self,md,solution,analyses): # {{{ 64 65 #Early return 66 if not solution==FlaimSolutionEnum(): 67 return md 68 69 md = checkfield(md,'flaim.tracks','file',1) 70 if any(numpy.isnan(md.flaim.criterion)) or not md.flaim.criterion: 71 md = checkfield(md,'flaim.targets','file',1) 72 else: 73 md = checkfield(md,'flaim.criterion','numel',[md.mesh.numberofvertices,md.mesh.numberofelements]) 74 75 return md 76 # }}} 77 -
issm/trunk-jpl/src/m/classes/friction.py
r13020 r13023 41 41 42 42 #Early return 43 if not DiagnosticHorizAnalysisEnum() in analyses and not ThermalAnalysisEnum()in analyses:43 if DiagnosticHorizAnalysisEnum() not in analyses and ThermalAnalysisEnum() not in analyses: 44 44 return md 45 45 -
issm/trunk-jpl/src/m/classes/hydrology.py
r13020 r13023 61 61 62 62 #Early return 63 if not HydrologyAnalysisEnum()in analyses:63 if HydrologyAnalysisEnum() not in analyses: 64 64 return md 65 65 -
issm/trunk-jpl/src/m/classes/inversion.m
r13020 r13023 1 % CONSTANTSclass definition1 %INVERSION class definition 2 2 % 3 3 % Usage: -
issm/trunk-jpl/src/m/classes/inversion.py
r12958 r13023 1 1 #module imports 2 import numpy 2 3 from fielddisplay import fielddisplay 4 from EnumDefinitions import * 5 from checkfield import * 6 from WriteData import * 3 7 4 8 class inversion(object): 9 """ 10 INVERSION class definition 11 12 Usage: 13 inversion=inversion(); 14 """ 15 5 16 #properties 6 17 def __init__(self): … … 26 37 self.thickness_obs = float('NaN') 27 38 #}}} 28 def __repr__( obj):39 def __repr__(self): 29 40 # {{{ Display 30 41 string='\n Inversion parameters:' 31 string="%s\n%s"%(string,fielddisplay( obj,'iscontrol','is inversion activated?'))32 string="%s\n%s"%(string,fielddisplay( obj,'incomplete_adjoint','do we assume linear viscosity?'))33 string="%s\n%s"%(string,fielddisplay( obj,'control_parameters','parameter where inverse control is carried out; ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}'))34 string="%s\n%s"%(string,fielddisplay( obj,'nsteps','number of optimization searches'))35 string="%s\n%s"%(string,fielddisplay( obj,'cost_functions','indicate the type of response for each optimization step'))36 string="%s\n%s"%(string,fielddisplay( obj,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter'))37 string="%s\n%s"%(string,fielddisplay( obj,'cost_function_threshold','misfit convergence criterion. Default is 1%, NaN if not applied'))38 string="%s\n%s"%(string,fielddisplay( obj,'maxiter_per_step','maximum iterations during each optimization step'))39 string="%s\n%s"%(string,fielddisplay( obj,'gradient_scaling','scaling factor on gradient direction during optimization, for each optimization step'))40 string="%s\n%s"%(string,fielddisplay( obj,'step_threshold','decrease threshold for misfit, default is 30%'))41 string="%s\n%s"%(string,fielddisplay( obj,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex'))42 string="%s\n%s"%(string,fielddisplay( obj,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex'))43 string="%s\n%s"%(string,fielddisplay( obj,'gradient_only','stop control method solution at gradient'))44 string="%s\n%s"%(string,fielddisplay( obj,'vx_obs','observed velocity x component [m/a]'))45 string="%s\n%s"%(string,fielddisplay( obj,'vy_obs','observed velocity y component [m/a]'))46 string="%s\n%s"%(string,fielddisplay( obj,'vel_obs','observed velocity magnitude [m/a]'))47 string="%s\n%s"%(string,fielddisplay( obj,'thickness_obs','observed thickness [m]'))42 string="%s\n%s"%(string,fielddisplay(self,'iscontrol','is inversion activated?')) 43 string="%s\n%s"%(string,fielddisplay(self,'incomplete_adjoint','do we assume linear viscosity?')) 44 string="%s\n%s"%(string,fielddisplay(self,'control_parameters','parameter where inverse control is carried out; ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}')) 45 string="%s\n%s"%(string,fielddisplay(self,'nsteps','number of optimization searches')) 46 string="%s\n%s"%(string,fielddisplay(self,'cost_functions','indicate the type of response for each optimization step')) 47 string="%s\n%s"%(string,fielddisplay(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter')) 48 string="%s\n%s"%(string,fielddisplay(self,'cost_function_threshold','misfit convergence criterion. Default is 1%, NaN if not applied')) 49 string="%s\n%s"%(string,fielddisplay(self,'maxiter_per_step','maximum iterations during each optimization step')) 50 string="%s\n%s"%(string,fielddisplay(self,'gradient_scaling','scaling factor on gradient direction during optimization, for each optimization step')) 51 string="%s\n%s"%(string,fielddisplay(self,'step_threshold','decrease threshold for misfit, default is 30%')) 52 string="%s\n%s"%(string,fielddisplay(self,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex')) 53 string="%s\n%s"%(string,fielddisplay(self,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex')) 54 string="%s\n%s"%(string,fielddisplay(self,'gradient_only','stop control method solution at gradient')) 55 string="%s\n%s"%(string,fielddisplay(self,'vx_obs','observed velocity x component [m/a]')) 56 string="%s\n%s"%(string,fielddisplay(self,'vy_obs','observed velocity y component [m/a]')) 57 string="%s\n%s"%(string,fielddisplay(self,'vel_obs','observed velocity magnitude [m/a]')) 58 string="%s\n%s"%(string,fielddisplay(self,'thickness_obs','observed thickness [m]')) 48 59 string="%s\n%s"%(string,'Available cost functions:') 49 60 string="%s\n%s"%(string,' 101: SurfaceAbsVelMisfit') … … 59 70 #}}} 60 71 61 def setdefaultparameters( obj):72 def setdefaultparameters(self): 62 73 # {{{setdefaultparameters 63 74 64 75 #default is incomplete adjoint for now 65 obj.incomplete_adjoint=176 self.incomplete_adjoint=1 66 77 67 78 #parameter to be inferred by control methods (only 68 79 #drag and B are supported yet) 69 obj.control_parameters=['FrictionCoefficient']80 self.control_parameters=['FrictionCoefficient'] 70 81 71 82 #number of steps in the control methods 72 obj.nsteps=2083 self.nsteps=20 73 84 74 85 #maximum number of iteration in the optimization algorithm for 75 86 #each step 76 obj.maxiter_per_step=20*ones(obj.nsteps)87 self.maxiter_per_step=20*ones(self.nsteps) 77 88 78 89 #the inversed parameter is updated as follows: … … 81 92 #inversed parameter (10^8 for B, 50 for drag) and can be decreased 82 93 #after the first iterations 83 obj.gradient_scaling=50*ones(obj.nsteps)94 self.gradient_scaling=50*ones(self.nsteps) 84 95 85 96 #several responses can be used: 86 obj.cost_functions=101*ones(obj.nsteps)97 self.cost_functions=101*ones(self.nsteps) 87 98 88 99 #step_threshold is used to speed up control method. When 89 #misfit(1)/misfit(0) < obj.step_threshold, we go directly to100 #misfit(1)/misfit(0) < self.step_threshold, we go directly to 90 101 #the next step 91 obj.step_threshold=.7*ones(obj.nsteps) #30 per cent decrement102 self.step_threshold=.7*ones(self.nsteps) #30 per cent decrement 92 103 93 104 #stop control solution at the gradient computation and return it? 94 obj.gradient_only=0105 self.gradient_only=0 95 106 96 107 #cost_function_threshold is a criteria to stop the control methods. 97 108 #if J[n]-J[n-1]/J[n] < criteria, the control run stops 98 109 #NaN if not applied 99 obj.cost_function_threshold=NaN #not activated110 self.cost_function_threshold=NaN #not activated 100 111 101 return obj102 112 return self 113 #}}} 103 114 115 def checkconsistency(self,md,solution,analyses): # {{{ 104 116 117 #Early return 118 if not self.iscontrol: 119 return md 120 121 num_controls=numpy.size(md.inversion.control_parameters) 122 num_costfunc=numpy.size(md.inversion.cost_functions,1) 123 124 md = checkfield(md,'inversion.iscontrol','values',[0,1]) 125 md = checkfield(md,'inversion.tao','values',[0,1]) 126 md = checkfield(md,'inversion.incomplete_adjoint','values',[0,1]) 127 md = checkfield(md,'inversion.control_parameters','cell',1,'values',['BalancethicknessThickeningRate','FrictionCoefficient','MaterialsRheologyBbar','Vx','Vy']) 128 md = checkfield(md,'inversion.nsteps','numel',1,'>=',1) 129 md = checkfield(md,'inversion.maxiter_per_step','size',[md.inversion.nsteps],'>=',0) 130 md = checkfield(md,'inversion.step_threshold','size',[md.inversion.nsteps]) 131 md = checkfield(md,'inversion.cost_functions','size',[md.inversion.nsteps,num_costfunc],'values',[101,102,103,104,105,201,501,502,503]) 132 md = checkfield(md,'inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices,num_costfunc],'>=',0) 133 md = checkfield(md,'inversion.gradient_only','values',[0,1]) 134 md = checkfield(md,'inversion.gradient_scaling','size',[md.inversion.nsteps,num_controls]) 135 md = checkfield(md,'inversion.min_parameters','size',[md.mesh.numberofvertices,num_controls]) 136 md = checkfield(md,'inversion.max_parameters','size',[md.mesh.numberofvertices,num_controls]) 137 138 if solution==BalancethicknessSolutionEnum(): 139 md = checkfield(md,'inversion.thickness_obs','size',[md.mesh.numberofvertices],'NaN',1) 140 else: 141 md = checkfield(md,'inversion.vx_obs','size',[md.mesh.numberofvertices],'NaN',1) 142 md = checkfield(md,'inversion.vy_obs','size',[md.mesh.numberofvertices],'NaN',1) 143 144 return md 145 # }}} 146 147 def marshall(self,fid): # {{{ 148 149 WriteData(fid,'object',self,'fieldname','iscontrol','format','Boolean') 150 WriteData(fid,'object',self,'fieldname','tao','format','Boolean') 151 WriteData(fid,'object',self,'fieldname','incomplete_adjoint','format','Boolean') 152 if not self.iscontrol: 153 return 154 WriteData(fid,'object',self,'fieldname','nsteps','format','Integer') 155 WriteData(fid,'object',self,'fieldname','maxiter_per_step','format','DoubleMat','mattype',3) 156 WriteData(fid,'object',self,'fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1) 157 WriteData(fid,'object',self,'fieldname','gradient_scaling','format','DoubleMat','mattype',3) 158 WriteData(fid,'object',self,'fieldname','cost_function_threshold','format','Double') 159 WriteData(fid,'object',self,'fieldname','min_parameters','format','DoubleMat','mattype',3) 160 WriteData(fid,'object',self,'fieldname','max_parameters','format','DoubleMat','mattype',3) 161 WriteData(fid,'object',self,'fieldname','step_threshold','format','DoubleMat','mattype',3) 162 WriteData(fid,'object',self,'fieldname','gradient_only','format','Boolean') 163 WriteData(fid,'object',self,'fieldname','vx_obs','format','DoubleMat','mattype',1) 164 WriteData(fid,'object',self,'fieldname','vy_obs','format','DoubleMat','mattype',1) 165 WriteData(fid,'object',self,'fieldname','vz_obs','format','DoubleMat','mattype',1) 166 WriteData(fid,'object',self,'fieldname','thickness_obs','format','DoubleMat','mattype',1) 167 168 #process control parameters 169 num_control_parameters=numpy.size(self.control_parameters) 170 data=[StringToEnum(self.control_parameters[i]) for i in xrange(0,num_control_parameters)] 171 WriteData(fid,'data',data,'enum',InversionControlParametersEnum(),'format','DoubleMat','mattype',3) 172 WriteData(fid,'data',num_control_parameters,'enum',InversionNumControlParametersEnum(),'format','Integer') 173 174 #process cost functions 175 num_cost_functions=size(self.cost_functions,1) 176 data=self.cost_functions 177 data[[i for i,item in enumerate(data) if item==101]]=SurfaceAbsVelMisfitEnum() 178 data[[i for i,item in enumerate(data) if item==102]]=SurfaceRelVelMisfitEnum() 179 data[[i for i,item in enumerate(data) if item==103]]=SurfaceLogVelMisfitEnum() 180 data[[i for i,item in enumerate(data) if item==104]]=SurfaceLogVxVyMisfitEnum() 181 data[[i for i,item in enumerate(data) if item==105]]=SurfaceAverageVelMisfitEnum() 182 data[[i for i,item in enumerate(data) if item==201]]=ThicknessAbsMisfitEnum() 183 data[[i for i,item in enumerate(data) if item==501]]=DragCoefficientAbsGradientEnum() 184 data[[i for i,item in enumerate(data) if item==502]]=RheologyBbarAbsGradientEnum() 185 data[[i for i,item in enumerate(data) if item==503]]=ThicknessAbsGradientEnum() 186 WriteData(fid,'data',data,'enum',InversionCostFunctionsEnum(),'format','DoubleMat','mattype',3) 187 WriteData(fid,'data',num_cost_functions,'enum',InversionNumCostFunctionsEnum(),'format','Integer') 188 # }}} 189 -
issm/trunk-jpl/src/m/classes/pairoptions.py
r12944 r13023 54 54 """ADDFIELDDEFAULT - add a field to an options list if it does not exist""" 55 55 if isinstance(field,str): 56 if not fieldin self.list:56 if field not in self.list: 57 57 self.list[field] = value 58 58 # }}} -
issm/trunk-jpl/src/m/classes/prognostic.py
r13020 r13023 59 59 60 60 #Early return 61 if ( not PrognosticAnalysisEnum()in analyses) or (solution==TransientSolutionEnum() and not md.transient.isprognostic):61 if (PrognosticAnalysisEnum() not in analyses) or (solution==TransientSolutionEnum() and not md.transient.isprognostic): 62 62 return md 63 63 -
issm/trunk-jpl/src/m/classes/steadystate.py
r12958 r13023 1 1 #module imports 2 import numpy 2 3 from fielddisplay import fielddisplay 4 from EnumDefinitions import * 5 from checkfield import * 6 from WriteData import * 3 7 4 8 class steadystate(object): 9 """ 10 STEADYSTATE class definition 11 12 Usage: 13 steadystate=steadystate(); 14 """ 15 5 16 #properties 6 17 def __init__(self): … … 14 25 15 26 #}}} 16 def __repr__( obj):27 def __repr__(self): 17 28 # {{{ Display 18 29 string=' steadystate solution parameters:' 19 string="%s\n%s"%(string,fielddisplay( obj,'reltol','relative tolerance criterion'))20 string="%s\n%s"%(string,fielddisplay( obj,'maxiter','maximum number of iterations'))21 string="%s\n%s"%(string,fielddisplay( obj,'requested_outputs','additional requested outputs'))30 string="%s\n%s"%(string,fielddisplay(self,'reltol','relative tolerance criterion')) 31 string="%s\n%s"%(string,fielddisplay(self,'maxiter','maximum number of iterations')) 32 string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional requested outputs')) 22 33 return string 23 34 #}}} 24 35 25 def setdefaultparameters( obj):36 def setdefaultparameters(self): 26 37 # {{{setdefaultparameters 27 38 28 39 #maximum of steady state iterations 29 obj.maxiter=10040 self.maxiter=100 30 41 31 42 #Relative tolerance for the steadystate convertgence 32 obj.reltol=0.0143 self.reltol=0.01 33 44 34 return obj45 return self 35 46 #}}} 36 47 48 def checkconsistency(self,md,solution,analyses): # {{{ 49 50 #Early return 51 if not solution==SteadystateSolutionEnum(): 52 return md 53 54 if not md.timestepping.time_step==0: 55 md.checkmessage("for a steadystate computation, timestepping.time_step must be zero.") 56 57 if numpy.isnan(md.diagnostic.reltol): 58 md.checkmessage("for a steadystate computation, diagnostic.reltol (relative convergence criterion) must be defined!") 59 60 return md 61 # }}} 62 63 def marshall(self,fid): # {{{ 64 WriteData(fid,'object',self,'fieldname','reltol','format','Double') 65 WriteData(fid,'object',self,'fieldname','maxiter','format','Integer') 66 WriteData(fid,'object',self,'fieldname','requested_outputs','format','DoubleMat','mattype',3) 67 # }}} 68 -
issm/trunk-jpl/src/m/classes/thermal.m
r13020 r13023 48 48 md = checkfield(md,'thermal.spctemperature','forcing',1); 49 49 if (ismember(EnthalpyAnalysisEnum(),analyses) & md.thermal.isenthalpy & md.mesh.dimension==3), 50 md = checkfield(md,'thermal.spctemperature','<',md.materials.meltingpoint-md.materials.beta*md.materials.rho_ice*md.constants.g*(md.geometry.surface-md.mesh.z),'message','spctemperature should be below the adjusted melting point');51 md = checkfield(md,'thermal.isenthalpy','numel',1,'values',[0 1]);50 md = checkfield(md,'thermal.spctemperature','<',md.materials.meltingpoint-md.materials.beta*md.materials.rho_ice*md.constants.g*(md.geometry.surface-md.mesh.z),'message','spctemperature should be below the adjusted melting point'); 51 md = checkfield(md,'thermal.isenthalpy','numel',1,'values',[0 1]); 52 52 end 53 53 end % }}} -
issm/trunk-jpl/src/m/classes/thermal.py
r12958 r13023 1 1 #module imports 2 2 from fielddisplay import fielddisplay 3 from EnumDefinitions import * 4 from checkfield import * 5 from WriteData import * 3 6 4 7 class thermal(object): 8 """ 9 THERMAL class definition 10 11 Usage: 12 thermal=thermal(); 13 """ 14 5 15 #properties 6 16 def __init__(self): … … 18 28 19 29 #}}} 20 def __repr__( obj):30 def __repr__(self): 21 31 # {{{ Display 22 32 string=' Thermal solution parameters:' 23 string="%s\n\n%s"%(string,fielddisplay( obj,'spctemperature','temperature constraints (NaN means no constraint)'))24 string="%s\n%s"%(string,fielddisplay( obj,'stabilization','0->no, 1->artificial_diffusivity, 2->SUPG'))25 string="%s\n%s"%(string,fielddisplay( obj,'maxiter','maximum number of non linear iterations'))26 string="%s\n%s"%(string,fielddisplay( obj,'penalty_lock','stabilize unstable thermal constraints that keep zigzagging after n iteration (default is 0, no stabilization)'))27 string="%s\n%s"%(string,fielddisplay( obj,'penalty_threshold','threshold to declare convergence of thermal solution (default is 0)'))28 string="%s\n%s"%(string,fielddisplay( obj,'isenthalpy','use an enthalpy formulation to include temperate ice (default is 0)'))33 string="%s\n\n%s"%(string,fielddisplay(self,'spctemperature','temperature constraints (NaN means no constraint)')) 34 string="%s\n%s"%(string,fielddisplay(self,'stabilization','0->no, 1->artificial_diffusivity, 2->SUPG')) 35 string="%s\n%s"%(string,fielddisplay(self,'maxiter','maximum number of non linear iterations')) 36 string="%s\n%s"%(string,fielddisplay(self,'penalty_lock','stabilize unstable thermal constraints that keep zigzagging after n iteration (default is 0, no stabilization)')) 37 string="%s\n%s"%(string,fielddisplay(self,'penalty_threshold','threshold to declare convergence of thermal solution (default is 0)')) 38 string="%s\n%s"%(string,fielddisplay(self,'isenthalpy','use an enthalpy formulation to include temperate ice (default is 0)')) 29 39 return string 30 40 #}}} 31 41 32 def setdefaultparameters( obj):42 def setdefaultparameters(self): 33 43 # {{{setdefaultparameters 34 44 35 45 #Number of unstable constraints acceptable 36 obj.penalty_threshold=046 self.penalty_threshold=0 37 47 38 48 #Type of stabilization used 39 obj.stabilization=149 self.stabilization=1 40 50 41 51 #Maximum number of iterations 42 obj.maxiter=10052 self.maxiter=100 43 53 44 54 #factor used to compute the values of the penalties: kappa=max(stiffness matrix)*10^penalty_factor 45 obj.penalty_factor=355 self.penalty_factor=3 46 56 47 57 #Should we use cold ice (default) or enthalpy formulation 48 obj.isenthalpy=058 self.isenthalpy=0 49 59 50 return obj60 return self 51 61 #}}} 52 62 63 def checkconsistency(self,md,solution,analyses): # {{{ 64 65 #Early return 66 if (ThermalAnalysisEnum() not in analyses and EnthalpyAnalysisEnum() not in analyses) or (solution==TransientSolutionEnum() and not md.transient.isthermal): 67 return md 68 69 md = checkfield(md,'thermal.stabilization','numel',1,'values',[0,1,2]) 70 md = checkfield(md,'thermal.spctemperature','forcing',1) 71 if EnthalpyAnalysisEnum() in analyses and md.thermal.isenthalpy and md.mesh.dimension==3: 72 md = checkfield(md,'thermal.spctemperature','<',md.materials.meltingpoint-md.materials.beta*md.materials.rho_ice*md.constants.g*(md.geometry.surface-md.mesh.z),'message',"spctemperature should be below the adjusted melting point") 73 md = checkfield(md,'thermal.isenthalpy','numel',1,'values',[0,1]) 74 75 return md 76 # }}} 77 78 def marshall(self,fid): # {{{ 79 WriteData(fid,'object',self,'fieldname','spctemperature','format','DoubleMat','mattype',1) 80 WriteData(fid,'object',self,'fieldname','penalty_threshold','format','Integer') 81 WriteData(fid,'object',self,'fieldname','stabilization','format','Integer') 82 WriteData(fid,'object',self,'fieldname','maxiter','format','Integer') 83 WriteData(fid,'object',self,'fieldname','penalty_lock','format','Integer') 84 WriteData(fid,'object',self,'fieldname','penalty_factor','format','Double') 85 WriteData(fid,'object',self,'fieldname','isenthalpy','format','Boolean') 86 # }}} 87 -
issm/trunk-jpl/src/m/classes/transient.py
r12958 r13023 1 1 #module imports 2 2 from fielddisplay import fielddisplay 3 from EnumDefinitions import * 4 from checkfield import * 5 from WriteData import * 3 6 4 7 class transient(object): 8 """ 9 TRANSIENT class definition 10 11 Usage: 12 transient=transient(); 13 """ 14 5 15 #properties 6 16 def __init__(self): … … 16 26 17 27 #}}} 18 def __repr__( obj):28 def __repr__(self): 19 29 # {{{ Display 20 30 string=' transient solution parameters:' 21 string="%s\n%s"%(string,fielddisplay( obj,'isprognostic','indicates if a prognostic solution is used in the transient'))22 string="%s\n%s"%(string,fielddisplay( obj,'isthermal','indicates if a thermal solution is used in the transient'))23 string="%s\n%s"%(string,fielddisplay( obj,'isdiagnostic','indicates if a diagnostic solution is used in the transient'))24 string="%s\n%s"%(string,fielddisplay( obj,'isgroundingline','indicates if a groundingline migration is used in the transient'))25 string="%s\n%s"%(string,fielddisplay( obj,'requested_outputs','list of additional outputs requested'))31 string="%s\n%s"%(string,fielddisplay(self,'isprognostic','indicates if a prognostic solution is used in the transient')) 32 string="%s\n%s"%(string,fielddisplay(self,'isthermal','indicates if a thermal solution is used in the transient')) 33 string="%s\n%s"%(string,fielddisplay(self,'isdiagnostic','indicates if a diagnostic solution is used in the transient')) 34 string="%s\n%s"%(string,fielddisplay(self,'isgroundingline','indicates if a groundingline migration is used in the transient')) 35 string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','list of additional outputs requested')) 26 36 return string 27 37 #}}} 28 38 29 def setdefaultparameters( obj):39 def setdefaultparameters(self): 30 40 # {{{setdefaultparameters 31 41 32 42 #full analysis: Diagnostic, Prognostic and Thermal but no groundingline migration for now 33 obj.isprognostic=134 obj.isdiagnostic=135 obj.isthermal=136 obj.isgroundingline=043 self.isprognostic=1 44 self.isdiagnostic=1 45 self.isthermal=1 46 self.isgroundingline=0 37 47 38 return obj48 return self 39 49 #}}} 40 50 51 def checkconsistency(self,md,solution,analyses): # {{{ 52 53 #Early return 54 if not solution==TransientSolutionEnum(): 55 return md 56 57 md = checkfield(md,'transient.isprognostic','numel',1,'values',[0,1]) 58 md = checkfield(md,'transient.isdiagnostic','numel',1,'values',[0,1]) 59 md = checkfield(md,'transient.isthermal','numel',1,'values',[0,1]) 60 md = checkfield(md,'transient.isgroundingline','numel',1,'values',[0,1]) 61 md = checkfield(md,'transient.requested_outputs','size',[float('NaN')]) 62 63 64 return md 65 # }}} 66 67 def marshall(self,fid): # {{{ 68 WriteData(fid,'object',self,'fieldname','isprognostic','format','Boolean') 69 WriteData(fid,'object',self,'fieldname','isdiagnostic','format','Boolean') 70 WriteData(fid,'object',self,'fieldname','isthermal','format','Boolean') 71 WriteData(fid,'object',self,'fieldname','isgroundingline','format','Boolean') 72 WriteData(fid,'object',self,'fieldname','requested_outputs','format','DoubleMat','mattype',3) 73 # }}} 74 -
issm/trunk-jpl/src/m/consistency/checkfield.py
r12943 r13023 50 50 fieldsize=options.getfieldvalue('size') 51 51 if len(fieldsize) == 1: 52 if (not numpy.size(field,0)==fieldsize[0]): 52 if numpy.isnan(fieldsize[0]): 53 pass 54 elif not numpy.size(field,0)==fieldsize[0]: 53 55 md = md.checkmessage(options.getfieldvalue('message',\ 54 56 "field '%s' size should be %d" % (fieldname,fieldsize[0]))) … … 70 72 if options.exist('numel'): 71 73 fieldnumel=options.getfieldvalue('numel') 72 if n ot numpy.size(field)in fieldnumel:74 if numpy.size(field) not in fieldnumel: 73 75 if len(fieldnumel)==1: 74 76 md = md.checkmessage(options.getfieldvalue('message',\ -
issm/trunk-jpl/src/m/os/issmdir.py
r12999 r13023 11 11 """ 12 12 13 if not 'Windows'in platform.system():13 if 'Windows' not in platform.system(): 14 14 ISSM_DIR =os.environ['ISSM_DIR'] 15 15 else: -
issm/trunk-jpl/src/m/solve/MatlabProcessPatch.py
r13007 r13023 11 11 12 12 #return if there is no field Patch 13 if not 'Patch'in structurei:13 if 'Patch' not in structurei: 14 14 continue 15 15 -
issm/trunk-jpl/src/m/solve/loadresultsfromcluster.py
r13004 r13023 41 41 os.remove(md.miscellaneous.name+'.errlog') 42 42 os.remove(md.miscellaneous.name+'.outbin') 43 if not 'Windows'in platform.system():43 if 'Windows' not in platform.system(): 44 44 os.remove(md.private.runtimename+'.tar.gz') 45 45 … … 53 53 os.remove(md.miscellaneous.name+'.bin') 54 54 os.remove(md.miscellaneous.name+'.petsc') 55 if not 'Windows'in platform.system():55 if 'Windows' not in platform.system(): 56 56 os.remove(md.miscellaneous.name+'.queue') 57 57 else: -
issm/trunk-jpl/src/m/solve/parseresultsfromdisk.py
r13006 r13023 42 42 while result: 43 43 #Get time and step 44 if not result['step']in results:44 if result['step'] not in results: 45 45 results[result['step']]={} 46 46 results[result['step']]['step']=result['step'] … … 85 85 86 86 #Get time and step 87 if not result['step']in results:87 if result['step'] not in results: 88 88 results[result['step']]={} 89 89 results[result['step']]['step']=result['step'] … … 124 124 125 125 #Get time and step 126 if not result['step']in results:126 if result['step'] not in results: 127 127 results[result['step']]={} 128 128 results[result['step']]['step']=result['step'] -
issm/trunk-jpl/src/m/solve/process_solve_options.py
r13004 r13023 16 16 #solution_type: check on this option, error out otherwise 17 17 solution_type=options.getfieldvalue('solution_type') 18 if not solution_typein (DiagnosticSolutionEnum,PrognosticSolutionEnum,ThermalSolutionEnum,\18 if solution_type not in (DiagnosticSolutionEnum,PrognosticSolutionEnum,ThermalSolutionEnum,\ 19 19 SteadystateSolutionEnum,TransientSolutionEnum,EnthalpySolutionEnum,\ 20 20 BalancethicknessSolutionEnum,BedSlopeSolutionEnum,SurfaceSlopeSolutionEnum,HydrologySolutionEnum,FlaimSolutionEnum):
Note:
See TracChangeset
for help on using the changeset viewer.