Changeset 12949 for issm/trunk-jpl/src
- Timestamp:
- 08/08/12 15:50:07 (13 years ago)
- Location:
- issm/trunk-jpl/src/m
- Files:
-
- 17 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/classes/basalforcings.py
r12123 r12949 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 basalforcings: … … 28 31 #}}} 29 32 33 def checkconsistency(self,md,solution,analyses): # {{{ 34 35 if PrognosticAnalysisEnum in analyses and not (solution==TransientSolutionEnum and not md.transient.isprognostic): 36 md = checkfield(md,'basalforcings.melting_rate','NaN',1,'forcing',1) 37 38 if BalancethicknessAnalysisEnum in analyses: 39 md = checkfield(md,'basalforcings.melting_rate','NaN',1,'size',[md.mesh.numberofvertices]) 40 41 if ThermalAnalysisEnum in analyses and not (solution==TransientSolutionEnum and not md.transient.isthermal): 42 md = checkfield(md,'basalforcings.melting_rate','NaN',1,'forcing',1) 43 md = checkfield(md,'basalforcings.geothermalflux','NaN',1,'forcing',1,'>=',0) 44 45 return md 46 # }}} 47 48 def marshall(self,fid): # {{{ 49 WriteData(fid,'object',self,'fieldname','melting_rate','format','DoubleMat','mattype',1) 50 WriteData(fid,'object',self,'fieldname','melting_rate_correction','format','DoubleMat','mattype',1) 51 WriteData(fid,'object',self,'fieldname','geothermalflux','format','DoubleMat','mattype',1) 52 # }}} 53 -
issm/trunk-jpl/src/m/classes/constants.py
r12123 r12949 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 constants: … … 40 43 #}}} 41 44 45 def checkconsistency(self,md,solution,analyses): # {{{ 46 47 md = checkfield(md,'constants.g','>',0,'size',[1]) 48 md = checkfield(md,'constants.yts','>',0,'size',[1]) 49 md = checkfield(md,'constants.referencetemperature','size',[1]) 50 51 return md 52 # }}} 53 54 def marshall(self,fid): # {{{ 55 WriteData(fid,'object',self,'fieldname','g','format','Double') 56 WriteData(fid,'object',self,'fieldname','yts','format','Double') 57 WriteData(fid,'object',self,'fieldname','referencetemperature','format','Double') 58 # }}} 59 -
issm/trunk-jpl/src/m/classes/flowequation.m
r12663 r12949 44 44 md = checkfield(md,'flowequation.element_equation','size',[md.mesh.numberofelements 1],'values',[0:7]); 45 45 end 46 if (md.flowequation.ismacayealpattyn==0 && md.flowequation.ishutter==0 && md.flowequation.isstokes==0),46 if ~(md.flowequation.ismacayealpattyn || md.flowequation.ishutter || md.flowequation.isstokes), 47 47 md = checkmessage(md,['no element types set for this model. At least one of ismacayealpattyn, ishutter or isstokes need to be =1']); 48 48 end -
issm/trunk-jpl/src/m/classes/flowequation.py
r12123 r12949 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 flowequation: … … 40 44 #}}} 41 45 46 def checkconsistency(self,md,solution,analyses): # {{{ 47 48 if DiagnosticHorizAnalysisEnum in analyses: 49 md = checkfield(md,'flowequation.ismacayealpattyn','numel',1,'values',[0,1]) 50 md = checkfield(md,'flowequation.ishutter','numel',1,'values',[0,1]) 51 md = checkfield(md,'flowequation.isstokes','numel',1,'values',[0,1]) 52 md = checkfield(md,'flowequation.bordermacayeal','size',[md.mesh.numberofvertices],'values',[0,1]) 53 md = checkfield(md,'flowequation.borderpattyn','size',[md.mesh.numberofvertices],'values',[0,1]) 54 md = checkfield(md,'flowequation.borderstokes','size',[md.mesh.numberofvertices],'values',[0,1]) 55 if md.mesh.dimension==2: 56 md = checkfield(md,'flowequation.vertex_equation','size',[md.mesh.numberofvertices],'values',[1,2]) 57 md = checkfield(md,'flowequation.element_equation','size',[md.mesh.numberofelements],'values',[1,2]) 58 else: 59 md = checkfield(md,'flowequation.vertex_equation','size',[md.mesh.numberofvertices],'values',range(0,7+1)) 60 md = checkfield(md,'flowequation.element_equation','size',[md.mesh.numberofelements],'values',range(0,7+1)) 61 if not (md.flowequation.ismacayealpattyn or md.flowequation.ishutter or md.flowequation.isstokes): 62 md.checkmessage("no element types set for this model. At least one of ismacayealpattyn, ishutter or isstokes need to be =1") 63 64 if DiagnosticHutterAnalysisEnum in analyses: 65 if any(md.flowequation.element_equation==1): 66 if any(numpy.logical_and(md.flowequation.element_equation,md.mask.elementonfloatingice)): 67 print "\n !!! Warning: Hutter's model is not consistent on ice shelves !!!\n" 68 69 return md 70 # }}} 71 72 def marshall(self,fid): # {{{ 73 WriteData(fid,'object',self,'fieldname','ismacayealpattyn','format','Boolean') 74 WriteData(fid,'object',self,'fieldname','ishutter','format','Boolean') 75 WriteData(fid,'object',self,'fieldname','isstokes','format','Boolean') 76 WriteData(fid,'object',self,'fieldname','bordermacayeal','format','DoubleMat','mattype',1) 77 WriteData(fid,'object',self,'fieldname','borderpattyn','format','DoubleMat','mattype',1) 78 WriteData(fid,'object',self,'fieldname','borderstokes','format','DoubleMat','mattype',1) 79 #convert approximations to enums 80 data=self.vertex_equation 81 data[[i for i,item in enumerate(data) if item==0]]=NoneApproximationEnum 82 data[[i for i,item in enumerate(data) if item==1]]=HutterApproximationEnum 83 data[[i for i,item in enumerate(data) if item==2]]=MacAyealApproximationEnum 84 data[[i for i,item in enumerate(data) if item==3]]=PattynApproximationEnum 85 data[[i for i,item in enumerate(data) if item==4]]=StokesApproximationEnum 86 data[[i for i,item in enumerate(data) if item==5]]=MacAyealPattynApproximationEnum 87 data[[i for i,item in enumerate(data) if item==6]]=MacAyealStokesApproximationEnum 88 data[[i for i,item in enumerate(data) if item==7]]=PattynStokesApproximationEnum 89 WriteData(fid,'data',data,'enum',FlowequationVertexEquationEnum,'format','DoubleMat','mattype',1) 90 data=self.element_equation 91 data[[i for i,item in enumerate(data) if item==0]]=NoneApproximationEnum 92 data[[i for i,item in enumerate(data) if item==1]]=HutterApproximationEnum 93 data[[i for i,item in enumerate(data) if item==2]]=MacAyealApproximationEnum 94 data[[i for i,item in enumerate(data) if item==3]]=PattynApproximationEnum 95 data[[i for i,item in enumerate(data) if item==4]]=StokesApproximationEnum 96 data[[i for i,item in enumerate(data) if item==5]]=MacAyealPattynApproximationEnum 97 data[[i for i,item in enumerate(data) if item==6]]=MacAyealStokesApproximationEnum 98 data[[i for i,item in enumerate(data) if item==7]]=PattynStokesApproximationEnum 99 WriteData(fid,'data',data,'enum',FlowequationElementEquationEnum,'format','DoubleMat','mattype',2) 100 # }}} 101 -
issm/trunk-jpl/src/m/classes/friction.py
r12123 r12949 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 friction: … … 28 31 #}}} 29 32 33 def checkconsistency(self,md,solution,analyses): # {{{ 34 35 #Early return 36 if not DiagnosticHorizAnalysisEnum in analyses and not ThermalAnalysisEnum in analyses: 37 return md 38 39 md = checkfield(md,'friction.coefficient','NaN',1,'size',[md.mesh.numberofvertices]) 40 md = checkfield(md,'friction.q','NaN',1,'size',[md.mesh.numberofelements]) 41 md = checkfield(md,'friction.p','NaN',1,'size',[md.mesh.numberofelements]) 42 43 return md 44 # }}} 45 46 def marshall(self,fid): # {{{ 47 WriteData(fid,'object',self,'fieldname','coefficient','format','DoubleMat','mattype',1) 48 WriteData(fid,'object',self,'fieldname','p','format','DoubleMat','mattype',2) 49 WriteData(fid,'object',self,'fieldname','q','format','DoubleMat','mattype',2) 50 # }}} 51 -
issm/trunk-jpl/src/m/classes/geometry.py
r12123 r12949 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 geometry: … … 34 37 #}}} 35 38 39 def checkconsistency(self,md,solution,analyses): # {{{ 40 41 md = checkfield(md,'geometry.surface' ,'NaN',1,'size',[md.mesh.numberofvertices]) 42 md = checkfield(md,'geometry.bed' ,'NaN',1,'size',[md.mesh.numberofvertices]) 43 md = checkfield(md,'geometry.thickness','NaN',1,'size',[md.mesh.numberofvertices],'>',0) 44 if any((self.thickness-self.surface+self.bed)>10**-9): 45 md.checkmessage("equality thickness=surface-bed violated") 46 end 47 if solution==TransientSolutionEnum and md.transient.isgroundingline: 48 md = checkfield(md,'geometry.bathymetry','NaN',1,'size',[md.mesh.numberofvertices]) 49 50 return md 51 # }}} 52 53 def marshall(self,fid): # {{{ 54 WriteData(fid,'data',self.surface,'format','DoubleMat','mattype',1,'enum',SurfaceEnum) 55 WriteData(fid,'data',self.thickness,'format','DoubleMat','mattype',1,'enum',ThicknessEnum) 56 WriteData(fid,'data',self.bed,'format','DoubleMat','mattype',1,'enum',BedEnum) 57 WriteData(fid,'data',self.bathymetry,'format','DoubleMat','mattype',1,'enum',BathymetryEnum) 58 WriteData(fid,'object',self,'fieldname','hydrostatic_ratio','format','DoubleMat','mattype',1) 59 # }}} 60 -
issm/trunk-jpl/src/m/classes/initialization.m
r12663 r12949 29 29 function md = checkconsistency(obj,md,solution,analyses) % {{{ 30 30 if ismember(DiagnosticHorizAnalysisEnum,analyses) 31 if ~ isnan(md.initialization.vx) & ~isnan(md.initialization.vy),31 if ~(isnan(md.initialization.vx) | isnan(md.initialization.vy)), 32 32 md = checkfield(md,'initialization.vx','NaN',1,'size',[md.mesh.numberofvertices 1]); 33 33 md = checkfield(md,'initialization.vy','NaN',1,'size',[md.mesh.numberofvertices 1]); -
issm/trunk-jpl/src/m/classes/initialization.py
r12123 r12949 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 initialization: … … 41 45 #}}} 42 46 47 def checkconsistency(obj,md,solution,analyses): # {{{ 48 if DiagnosticHorizAnalysisEnum in analyses: 49 if not any(numpy.isnan(md.initialization.vx) or numpy.isnan(md.initialization.vy)): 50 md = checkfield(md,'initialization.vx','NaN',1,'size',[md.mesh.numberofvertices]) 51 md = checkfield(md,'initialization.vy','NaN',1,'size',[md.mesh.numberofvertices]) 52 if PrognosticAnalysisEnum in analyses: 53 md = checkfield(md,'initialization.vx','NaN',1,'size',[md.mesh.numberofvertices]) 54 md = checkfield(md,'initialization.vy','NaN',1,'size',[md.mesh.numberofvertices]) 55 if HydrologyAnalysisEnum in analyses: 56 md = checkfield(md,'initialization.watercolumn','NaN',1,'size',[md.mesh.numberofvertices]) 57 if BalancethicknessAnalysisEnum in analyses: 58 md = checkfield(md,'initialization.vx','NaN',1,'size',[md.mesh.numberofvertices]) 59 md = checkfield(md,'initialization.vy','NaN',1,'size',[md.mesh.numberofvertices]) 60 #Triangle with zero velocity 61 if any(numpy.logical_and(numpy.sum(numpy.abs(md.initialization.vx[md.mesh.elements.astype(int)-1]),axis=1)==0,\ 62 numpy.sum(numpy.abs(md.initialization.vy[md.mesh.elements.astype(int)-1]),axis=1)==0)): 63 md.checkmessage("at least one triangle has all its vertices with a zero velocity") 64 if ThermalAnalysisEnum in analyses: 65 md = checkfield(md,'initialization.vx','NaN',1,'size',[md.mesh.numberofvertices]) 66 md = checkfield(md,'initialization.vy','NaN',1,'size',[md.mesh.numberofvertices]) 67 md = checkfield(md,'initialization.vz','NaN',1,'size',[md.mesh.numberofvertices]) 68 md = checkfield(md,'initialization.pressure','NaN',1,'size',[md.mesh.numberofvertices]) 69 if (EnthalpyAnalysisEnum in analyses and md.thermal.isenthalpy) or solution==EnthalpySolutionEnum: 70 md = checkfield(md,'initialization.waterfraction','>=',0,'size',[md.mesh.numberofvertices]) 71 72 return md 73 # }}} 74 75 def marshall(obj,fid): # {{{ 76 WriteData(fid,'data',obj.vx,'format','DoubleMat','mattype',1,'enum',VxEnum) 77 WriteData(fid,'data',obj.vy,'format','DoubleMat','mattype',1,'enum',VyEnum) 78 WriteData(fid,'data',obj.vz,'format','DoubleMat','mattype',1,'enum',VzEnum) 79 WriteData(fid,'data',obj.pressure,'format','DoubleMat','mattype',1,'enum',PressureEnum) 80 WriteData(fid,'data',obj.temperature,'format','DoubleMat','mattype',1,'enum',TemperatureEnum) 81 WriteData(fid,'data',obj.watercolumn,'format','DoubleMat','mattype',1,'enum',WatercolumnEnum) 82 WriteData(fid,'data',obj.waterfraction,'format','DoubleMat','mattype',1,'enum',WaterfractionEnum) 83 # }}} 84 -
issm/trunk-jpl/src/m/classes/mask.py
r12123 r12949 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 mask: … … 35 38 #}}} 36 39 40 def checkconsistency(self,md,solution,analyses): # {{{ 41 42 md = checkfield(md,'mask.elementonfloatingice','size',[md.mesh.numberofelements],'values',[0,1]) 43 md = checkfield(md,'mask.elementongroundedice','size',[md.mesh.numberofelements],'values',[0,1]) 44 md = checkfield(md,'mask.elementonwater' ,'size',[md.mesh.numberofelements],'values',[0,1]) 45 md = checkfield(md,'mask.vertexonfloatingice' ,'size',[md.mesh.numberofvertices],'values',[0,1]) 46 md = checkfield(md,'mask.vertexongroundedice' ,'size',[md.mesh.numberofvertices],'values',[0,1]) 47 md = checkfield(md,'mask.vertexonwater' ,'size',[md.mesh.numberofvertices],'values',[0,1]) 48 49 return md 50 # }}} 51 52 def marshall(self,fid): # {{{ 53 WriteData(fid,'object',self,'fieldname','elementonfloatingice','format','BooleanMat','mattype',2) 54 WriteData(fid,'object',self,'fieldname','elementongroundedice','format','BooleanMat','mattype',2) 55 WriteData(fid,'object',self,'fieldname','elementonwater','format','BooleanMat','mattype',2) 56 WriteData(fid,'object',self,'fieldname','vertexonfloatingice','format','DoubleMat','mattype',1) 57 WriteData(fid,'object',self,'fieldname','vertexongroundedice','format','DoubleMat','mattype',1) 58 WriteData(fid,'object',self,'fieldname','vertexonwater','format','DoubleMat','mattype',1) 59 # }}} 60 -
issm/trunk-jpl/src/m/classes/materials.py
r12123 r12949 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 materials: … … 6 9 def __init__(self): 7 10 # {{{ Properties 8 self.rho_ice = 0 ;9 self.rho_water = 0 ;10 self.mu_water = 0 ;11 self.heatcapacity = 0 ;12 self.latentheat = 0 ;13 self.thermalconductivity = 0 ;14 self.meltingpoint = 0 ;15 self.beta = 0 ;16 self.mixed_layer_capacity = 0 ;17 self.thermal_exchange_velocity = 0 ;11 self.rho_ice = 0 12 self.rho_water = 0 13 self.mu_water = 0 14 self.heatcapacity = 0 15 self.latentheat = 0 16 self.thermalconductivity = 0 17 self.meltingpoint = 0 18 self.beta = 0 19 self.mixed_layer_capacity = 0 20 self.thermal_exchange_velocity = 0 18 21 self.rheology_B = float('NaN') 19 22 self.rheology_n = float('NaN') 20 self.rheology_law = "" ;23 self.rheology_law = "" 21 24 22 25 self.setdefaultparameters() … … 79 82 return obj 80 83 #}}} 84 85 def checkconsistency(self,md,solution,analyses): # {{{ 86 md = checkfield(md,'materials.rho_ice','>',0) 87 md = checkfield(md,'materials.rho_water','>',0) 88 md = checkfield(md,'materials.rho_freshwater','>',0) 89 md = checkfield(md,'materials.mu_water','>',0) 90 md = checkfield(md,'materials.rheology_B','>',0,'size',[md.mesh.numberofvertices]) 91 md = checkfield(md,'materials.rheology_n','>',0,'size',[md.mesh.numberofelements]) 92 md = checkfield(md,'materials.rheology_law','values',['None','Paterson','Arrhenius']) 93 return md 94 # }}} 95 96 def marshall(self,fid): # {{{ 97 WriteData(fid,'object',self,'fieldname','rho_ice','format','Double') 98 WriteData(fid,'object',self,'fieldname','rho_water','format','Double') 99 WriteData(fid,'object',self,'fieldname','rho_freshwater','format','Double') 100 WriteData(fid,'object',self,'fieldname','mu_water','format','Double') 101 WriteData(fid,'object',self,'fieldname','heatcapacity','format','Double') 102 WriteData(fid,'object',self,'fieldname','latentheat','format','Double') 103 WriteData(fid,'object',self,'fieldname','thermalconductivity','format','Double') 104 WriteData(fid,'object',self,'fieldname','meltingpoint','format','Double') 105 WriteData(fid,'object',self,'fieldname','beta','format','Double') 106 WriteData(fid,'object',self,'fieldname','mixed_layer_capacity','format','Double') 107 WriteData(fid,'object',self,'fieldname','thermal_exchange_velocity','format','Double') 108 WriteData(fid,'object',self,'fieldname','rheology_B','format','DoubleMat','mattype',1) 109 WriteData(fid,'object',self,'fieldname','rheology_n','format','DoubleMat','mattype',2) 110 WriteData(fid,'data',StringToEnum(self.rheology_law),'enum',MaterialsRheologyLawEnum,'format','Integer') 111 # }}} 112 -
issm/trunk-jpl/src/m/classes/mesh.py
r12943 r12949 2 2 import numpy 3 3 from fielddisplay import fielddisplay 4 from EnumDefinitions import * 4 5 from checkfield import * 5 from EnumDefinitions import *6 6 from MatlabFuncs import * 7 7 … … 131 131 md = checkfield(md,'mesh.elements','size',[md.mesh.numberofelements,6]) 132 132 if any(numpy.logical_not(ismember(range(1,md.mesh.numberofvertices+1),md.mesh.elements))): 133 md = checkmessage(md,"orphan nodes have been found. Check the mesh outline")133 md.checkmessage("orphan nodes have been found. Check the mesh outline") 134 134 md = checkfield(md,'mesh.dimension','values',[2,3]) 135 135 md = checkfield(md,'mesh.numberoflayers','>=',0) -
issm/trunk-jpl/src/m/classes/private.py
r12943 r12949 6 6 def __init__(self): 7 7 # {{{ Properties 8 self.isconsistent = True ;8 self.isconsistent = True 9 9 self.runtimename = '' 10 10 self.bamg = {} 11 self.solution = '' ;11 self.solution = '' 12 12 13 13 #set defaults -
issm/trunk-jpl/src/m/classes/surfaceforcings.m
r12771 r12949 11 11 issmbgradients = 0; 12 12 isdelta18o = 0; 13 13 hc = NaN; 14 14 smb_pos_max = NaN; 15 15 smb_pos_min = NaN; … … 46 46 if ismember(PrognosticAnalysisEnum,analyses), 47 47 md = checkfield(md,'surfaceforcings.ispdd','numel',1,'values',[0 1]); 48 checkfield(md,'surfaceforcings.issmbgradients','numel',1,'values',[0 1]);48 md = checkfield(md,'surfaceforcings.issmbgradients','numel',1,'values',[0 1]); 49 49 if(obj.ispdd) 50 51 52 53 54 55 56 57 58 59 50 if(obj.isdelta18o==0) 51 md = checkfield(md,'surfaceforcings.monthlytemperatures','forcing',1,'NaN',1); 52 md = checkfield(md,'surfaceforcings.precipitation','forcing',1,'NaN',1); 53 else 54 md = checkfield(md,'surfaceforcings.delta18o','NaN',1); 55 md = checkfield(md,'surfaceforcings.delta18o_surface','NaN',1); 56 md = checkfield(md,'surfaceforcings.temperatures_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1); 57 md = checkfield(md,'surfaceforcings.temperatures_lgm','size',[md.mesh.numberofvertices+1 12],'NaN',1); 58 md = checkfield(md,'surfaceforcings.precipitations_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1); 59 end 60 60 elseif(obj.issmbgradients) 61 checkfield(md,'surfaceforcings.hc','forcing',1,'NaN',1);62 checkfield(md,'surfaceforcings.smb_pos_max','forcing',1,'NaN',1);63 checkfield(md,'surfaceforcings.smb_pos_min','forcing',1,'NaN',1);64 checkfield(md,'surfaceforcings.a_pos','forcing',1,'NaN',1);65 checkfield(md,'surfaceforcings.b_pos','forcing',1,'NaN',1);66 checkfield(md,'surfaceforcings.a_neg','forcing',1,'NaN',1);67 checkfield(md,'surfaceforcings.b_neg','forcing',1,'NaN',1);61 md = checkfield(md,'surfaceforcings.hc','forcing',1,'NaN',1); 62 md = checkfield(md,'surfaceforcings.smb_pos_max','forcing',1,'NaN',1); 63 md = checkfield(md,'surfaceforcings.smb_pos_min','forcing',1,'NaN',1); 64 md = checkfield(md,'surfaceforcings.a_pos','forcing',1,'NaN',1); 65 md = checkfield(md,'surfaceforcings.b_pos','forcing',1,'NaN',1); 66 md = checkfield(md,'surfaceforcings.a_neg','forcing',1,'NaN',1); 67 md = checkfield(md,'surfaceforcings.b_neg','forcing',1,'NaN',1); 68 68 else 69 69 md = checkfield(md,'surfaceforcings.mass_balance','forcing',1,'NaN',1); … … 103 103 WriteData(fid,'object',obj,'fieldname','isdelta18o','format','Boolean'); 104 104 if obj.ispdd, 105 106 107 108 109 110 111 112 WriteData(fid,'object',obj,'fieldname','monthlytemperatures','format','DoubleMat','mattype',1);113 WriteData(fid,'object',obj,'fieldname','precipitation','format','DoubleMat','mattype',1);114 105 if obj.isdelta18o 106 WriteData(fid,'object',obj,'fieldname','temperatures_presentday','format','DoubleMat','mattype',1); 107 WriteData(fid,'object',obj,'fieldname','temperatures_lgm','format','DoubleMat','mattype',1); 108 WriteData(fid,'object',obj,'fieldname','precipitations_presentday','format','DoubleMat','mattype',1); 109 WriteData(fid,'object',obj,'fieldname','delta18o_surface','format','DoubleMat','mattype',1); 110 WriteData(fid,'object',obj,'fieldname','delta18o','format','DoubleMat','mattype',1); 111 else 112 WriteData(fid,'object',obj,'fieldname','monthlytemperatures','format','DoubleMat','mattype',1); 113 WriteData(fid,'object',obj,'fieldname','precipitation','format','DoubleMat','mattype',1); 114 end 115 115 end 116 116 WriteData(fid,'object',obj,'fieldname','issmbgradients','format','Boolean'); -
issm/trunk-jpl/src/m/classes/surfaceforcings.py
r12123 r12949 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 surfaceforcings: … … 8 11 self.precipitation = float('NaN') 9 12 self.mass_balance = float('NaN') 13 self.ispdd = 0 14 self.issmbgradients = 0 15 self.isdelta18o = 0 16 self.hc = float('NaN') 17 self.smb_pos_max = float('NaN') 18 self.smb_pos_min = float('NaN') 19 self.a_pos = float('NaN') 20 self.b_pos = float('NaN') 21 self.a_neg = float('NaN') 22 self.b_neg = float('NaN') 23 self.monthlytemperatures = float('NaN') 24 self.delta18o = float('NaN') 25 self.delta18o_surface = float('NaN') 26 self.temperatures_presentday = float('NaN') 27 self.temperatures_lgm = float('NaN') 28 self.precipitations_presentday = float('NaN') 10 29 11 30 #set defaults … … 19 38 string="%s\n\n%s"%(string,fielddisplay(obj,'precipitation','surface precipitation [m/yr water eq]')) 20 39 string="%s\n%s"%(string,fielddisplay(obj,'mass_balance','surface mass balance [m/yr ice eq]')) 40 string="%s\n%s"%(string,fielddisplay(obj,'ispdd','is pdd activated (0 or 1, default is 0)')) 41 string="%s\n%s"%(string,fielddisplay(obj,'isdelta18o','is temperature and precipitation delta18o parametrisation activated (0 or 1, default is 0)')) 42 string="%s\n%s"%(string,fielddisplay(obj,'monthlytemperatures','monthly surface temperatures [Kelvin], required if pdd is activated and delta18o not activated')) 43 string="%s\n%s"%(string,fielddisplay(obj,'precipitation','surface precipitation [m/yr water eq]')) 44 string="%s\n%s"%(string,fielddisplay(obj,'temperatures_presentday','monthly present day surface temperatures [Kelvin], required if pdd is activated and delta18o activated')) 45 string="%s\n%s"%(string,fielddisplay(obj,'temperatures_lgm','monthly LGM surface temperatures [Kelvin], required if pdd is activated and delta18o activated')) 46 string="%s\n%s"%(string,fielddisplay(obj,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if pdd is activated and delta18o activated')) 47 string="%s\n%s"%(string,fielddisplay(obj,'delta18o','delta18o, required if pdd is activated and delta18o activated')) 48 string="%s\n%s"%(string,fielddisplay(obj,'delta18o_surface','surface elevation of the delta18o site, required if pdd is activated and delta18o activated')) 49 string="%s\n%s"%(string,fielddisplay(obj,'issmbgradients','is smb gradients method activated (0 or 1, default is 0)')) 50 string="%s\n%s"%(string,fielddisplay(obj,'hc',' elevation of intersection between accumulation and ablation regime required if smb gradients is activated')) 51 string="%s\n%s"%(string,fielddisplay(obj,'smb_pos_max',' maximum value of positive smb required if smb gradients is activated')) 52 string="%s\n%s"%(string,fielddisplay(obj,'smb_pos_min',' minimum value of positive smb required if smb gradients is activated')) 53 string="%s\n%s"%(string,fielddisplay(obj,'a_pos',' intercept of hs - smb regression line for accumulation regime required if smb gradients is activated')) 54 string="%s\n%s"%(string,fielddisplay(obj,'b_pos',' slope of hs - smb regression line for accumulation regime required if smb gradients is activated')) 55 string="%s\n%s"%(string,fielddisplay(obj,'a_neg',' intercept of hs - smb regression line for ablation regime required if smb gradients is activated')) 56 string="%s\n%s"%(string,fielddisplay(obj,'b_neg',' slope of hs - smb regression line for ablation regime required if smb gradients is activated')) 21 57 22 58 return string … … 25 61 def setdefaultparameters(obj): 26 62 # {{{setdefaultparameters 63 64 #pdd method not used in default mode 65 obj.ispdd=0 66 obj.issmbgradients=0 67 obj.isdelta18o=0 68 27 69 return obj 28 70 #}}} 29 71 72 def checkconsistency(self,md,solution,analyses): # {{{ 73 74 if PrognosticAnalysisEnum in analyses: 75 md = checkfield(md,'surfaceforcings.ispdd','numel',1,'values',[0,1]) 76 md = checkfield(md,'surfaceforcings.issmbgradients','numel',1,'values',[0,1]) 77 if self.ispdd: 78 if not self.isdelta18o: 79 md = checkfield(md,'surfaceforcings.monthlytemperatures','forcing',1,'NaN',1) 80 md = checkfield(md,'surfaceforcings.precipitation','forcing',1,'NaN',1) 81 else: 82 md = checkfield(md,'surfaceforcings.delta18o','NaN',1) 83 md = checkfield(md,'surfaceforcings.delta18o_surface','NaN',1) 84 md = checkfield(md,'surfaceforcings.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1) 85 md = checkfield(md,'surfaceforcings.temperatures_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1) 86 md = checkfield(md,'surfaceforcings.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1) 87 elif self.issmbgradients: 88 md = checkfield(md,'surfaceforcings.hc','forcing',1,'NaN',1) 89 md = checkfield(md,'surfaceforcings.smb_pos_max','forcing',1,'NaN',1) 90 md = checkfield(md,'surfaceforcings.smb_pos_min','forcing',1,'NaN',1) 91 md = checkfield(md,'surfaceforcings.a_pos','forcing',1,'NaN',1) 92 md = checkfield(md,'surfaceforcings.b_pos','forcing',1,'NaN',1) 93 md = checkfield(md,'surfaceforcings.a_neg','forcing',1,'NaN',1) 94 md = checkfield(md,'surfaceforcings.b_neg','forcing',1,'NaN',1) 95 else: 96 md = checkfield(md,'surfaceforcings.mass_balance','forcing',1,'NaN',1) 97 98 if BalancethicknessAnalysisEnum in analyses: 99 md = checkfield(md,'surfaceforcings.mass_balance','size',[md.mesh.numberofvertices],'NaN',1) 100 101 return md 102 # }}} 103 104 def marshall(self,fid): # {{{ 105 WriteData(fid,'object',self,'fieldname','precipitation','format','DoubleMat','mattype',1) 106 WriteData(fid,'object',self,'fieldname','mass_balance','format','DoubleMat','mattype',1) 107 WriteData(fid,'object',self,'fieldname','ispdd','format','Boolean') 108 WriteData(fid,'object',self,'fieldname','isdelta18o','format','Boolean') 109 110 if self.ispdd: 111 if self.isdelta18o: 112 WriteData(fid,'object',self,'fieldname','temperatures_presentday','format','DoubleMat','mattype',1) 113 WriteData(fid,'object',self,'fieldname','temperatures_lgm','format','DoubleMat','mattype',1) 114 WriteData(fid,'object',self,'fieldname','precipitations_presentday','format','DoubleMat','mattype',1) 115 WriteData(fid,'object',self,'fieldname','delta18o_surface','format','DoubleMat','mattype',1) 116 WriteData(fid,'object',self,'fieldname','delta18o','format','DoubleMat','mattype',1) 117 else: 118 WriteData(fid,'object',self,'fieldname','monthlytemperatures','format','DoubleMat','mattype',1) 119 WriteData(fid,'object',self,'fieldname','precipitation','format','DoubleMat','mattype',1) 120 121 WriteData(fid,'object',self,'fieldname','issmbgradients','format','Boolean') 122 123 if self.issmbgradients: 124 WriteData(fid,'object',self,'fieldname','hc','format','DoubleMat','mattype',1) 125 WriteData(fid,'object',self,'fieldname','smb_pos_max','format','DoubleMat','mattype',1) 126 WriteData(fid,'object',self,'fieldname','smb_pos_min','format','DoubleMat','mattype',1) 127 WriteData(fid,'object',self,'fieldname','a_pos','format','DoubleMat','mattype',1) 128 WriteData(fid,'object',self,'fieldname','b_pos','format','DoubleMat','mattype',1) 129 WriteData(fid,'object',self,'fieldname','a_neg','format','DoubleMat','mattype',1) 130 WriteData(fid,'object',self,'fieldname','b_neg','format','DoubleMat','mattype',1) 131 # }}} 132 -
issm/trunk-jpl/src/m/classes/timestepping.py
r12123 r12949 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 timestepping: … … 6 9 def __init__(self): 7 10 # {{{ Properties 11 self.start_time = 0 12 self.final_time = 0 8 13 self.time_step = 0 9 self.final_time = 010 14 self.time_adapt = 0 11 15 self.cfl_coefficient = 0 … … 18 22 # {{{ Display 19 23 string=" timestepping parameters:" 20 string="%s\n\n%s"%(string,fielddisplay(obj," time_step","length of time steps[yrs]"))24 string="%s\n\n%s"%(string,fielddisplay(obj,"start_time","simulation starting time [yrs]")) 21 25 string="%s\n%s"%(string,fielddisplay(obj,"final_time","final time to stop the simulation [yrs]")) 26 string="%s\n%s"%(string,fielddisplay(obj,"time_step","length of time steps [yrs]")) 22 27 string="%s\n%s"%(string,fielddisplay(obj,"time_adapt","use cfl condition to define time step ? (0 or 1) ")) 23 28 string="%s\n%s"%(string,fielddisplay(obj,"cfl_coefficient","coefficient applied to cfl condition")) … … 40 45 return obj 41 46 #}}} 47 48 def checkconsistency(self,md,solution,analyses): # {{{ 49 50 md = checkfield(md,'timestepping.start_time','numel',1,'NaN',1) 51 md = checkfield(md,'timestepping.final_time','numel',1,'NaN',1) 52 md = checkfield(md,'timestepping.time_step','numel',1,'>=',0,'NaN',1) 53 md = checkfield(md,'timestepping.time_adapt','numel',1,'values',[0,1]) 54 md = checkfield(md,'timestepping.cfl_coefficient','numel',1,'>',0,'<=',1) 55 if self.final_time-self.start_time<0: 56 md.checkmessage("timestepping.final_time should be larger than timestepping.start_time") 57 58 return md 59 # }}} 60 61 def marshall(self,fid): # {{{ 62 WriteData(fid,'object',self,'fieldname','start_time','format','Double') 63 WriteData(fid,'object',self,'fieldname','final_time','format','Double') 64 WriteData(fid,'object',self,'fieldname','time_step','format','Double') 65 WriteData(fid,'object',self,'fieldname','time_adapt','format','Boolean') 66 WriteData(fid,'object',self,'fieldname','cfl_coefficient','format','Double') 67 # }}} 68 -
issm/trunk-jpl/src/m/model/setflowequation.m
r12888 r12949 35 35 %Flag the elements that have not been flagged as filltype 36 36 if strcmpi(filltype,'hutter'), 37 hutterflag(find(~ macayealflag & ~pattynflag))=1;37 hutterflag(find(~(macayealflag | pattynflag)))=1; 38 38 elseif strcmpi(filltype,'macayeal'), 39 macayealflag(find(~ hutterflag & ~pattynflag & ~stokesflag))=1;39 macayealflag(find(~(hutterflag | pattynflag | ~stokesflag)))=1; 40 40 elseif strcmpi(filltype,'pattyn'), 41 pattynflag(find(~ hutterflag & ~macayealflag & ~stokesflag))=1;41 pattynflag(find(~(hutterflag | ~macayealflag | ~stokesflag)))=1; 42 42 end 43 43 -
issm/trunk-jpl/src/m/model/solve.py
r12944 r12949 16 16 17 17 solution types available comprise: 18 19 20 21 22 23 24 25 26 27 18 - DiagnosticSolutionEnum 19 - PrognosticSolutionEnum 20 - ThermalSolutionEnum 21 - SteadystateSolutionEnum 22 - TransientSolutionEnum... 23 - BalancethicknessSolutionEnum 24 - BedSlopeSolutionEnum 25 - SurfaceSlopeSolutionEnum 26 - HydrologySolutionEnum 27 - FlaimSolutionEnum 28 28 29 29 extra options:
Note:
See TracChangeset
for help on using the changeset viewer.