Changeset 18816
- Timestamp:
- 11/20/14 11:49:30 (10 years ago)
- Location:
- issm/trunk-jpl
- Files:
-
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp
r18808 r18816 48 48 case DefaultCalvingEnum: 49 49 iomodel->FetchDataToInput(elements,CalvingCalvingrateEnum); 50 iomodel->FetchDataToInput(elements,CalvingMeltingrateEnum); 50 51 break; 51 52 case CalvingLevermannEnum: 52 53 iomodel->FetchDataToInput(elements,CalvinglevermannCoeffEnum); 54 iomodel->FetchDataToInput(elements,CalvinglevermannMeltingrateEnum); 53 55 break; 54 56 default: … … 125 127 IssmDouble h,hx,hy,hz; 126 128 IssmDouble vel; 127 IssmDouble norm_dlsf, calvingrate;129 IssmDouble norm_dlsf, norm_calving, calvingrate, meltingrate; 128 130 IssmDouble* xyz_list = NULL; 129 131 … … 151 153 IssmDouble* w = xNew<IssmDouble>(dim); 152 154 IssmDouble* c = xNewZeroInit<IssmDouble>(dim); 155 IssmDouble* m = xNewZeroInit<IssmDouble>(dim); 153 156 IssmDouble* dlsf = xNew<IssmDouble>(dim); 154 157 … … 163 166 Input* lsf_slopey_input = NULL; 164 167 Input* calvingrate_input = NULL; 168 Input* meltingrate_input = NULL; 165 169 166 170 /*Load velocities*/ … … 186 190 if(dim==2) lsf_slopey_input = basalelement->GetInput(LevelsetfunctionSlopeYEnum); _assert_(lsf_slopey_input); 187 191 calvingrate_input = basalelement->GetInput(CalvingCalvingrateEnum); _assert_(calvingrate_input); 192 meltingrate_input = basalelement->GetInput(CalvingMeltingrateEnum); _assert_(meltingrate_input); 188 193 break; 189 194 case CalvingLevermannEnum: … … 201 206 } 202 207 } 208 meltingrate_input = basalelement->GetInput(CalvinglevermannMeltingrateEnum); _assert_(meltingrate_input); 203 209 break; 204 210 default: … … 238 244 if(dim==2) lsf_slopey_input->GetInputValue(&dlsf[1],gauss); 239 245 calvingrate_input->GetInputValue(&calvingrate,gauss); 246 meltingrate_input->GetInputValue(&meltingrate,gauss); 240 247 241 248 norm_dlsf=0.; … … 244 251 245 252 if(norm_dlsf>1.e-10) 246 for(i=0;i<dim;i++) c[i]=calvingrate*dlsf[i]/norm_dlsf; 253 for(i=0;i<dim;i++){ 254 c[i]=calvingrate*dlsf[i]/norm_dlsf; 255 m[i]=meltingrate*dlsf[i]/norm_dlsf; 256 } 247 257 else 248 for(i=0;i<dim;i++) c[i]=0.; 258 for(i=0;i<dim;i++){ 259 c[i]=0.; 260 m[i]=0.; 261 } 262 249 263 break; 250 264 case CalvingLevermannEnum: 251 265 calvingratex_input->GetInputValue(&c[0],gauss); // in 3D case, add mesh velocity 252 266 if(dim==2) calvingratey_input->GetInputValue(&c[1],gauss); 267 meltingrate_input->GetInputValue(&meltingrate,gauss); 268 269 norm_calving=0.; 270 for(i=0;i<dim;i++) norm_calving+=pow(c[i],2); 271 norm_calving=sqrt(norm_calving)+1.e-14; 272 273 for(i=0;i<dim;i++) m[i]=meltingrate*c[i]/norm_calving; 274 253 275 break; 254 276 default: … … 258 280 259 281 /*Levelset speed is ice velocity - calving rate*/ 260 for(i=0;i<dim;i++) w[i]=v[i]-c[i] ;282 for(i=0;i<dim;i++) w[i]=v[i]-c[i]-m[i]; 261 283 262 284 /*Compute D*/ -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r18812 r18816 213 213 CalvingLawEnum, 214 214 CalvingCalvingrateEnum, 215 CalvingMeltingrateEnum, 215 216 CalvingLevermannEnum, 216 217 DefaultCalvingEnum, 217 218 CalvingRequestedOutputsEnum, 218 219 CalvinglevermannCoeffEnum, 220 CalvinglevermannMeltingrateEnum, 219 221 CalvingratexEnum, 220 222 CalvingrateyEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r18812 r18816 221 221 case CalvingLawEnum : return "CalvingLaw"; 222 222 case CalvingCalvingrateEnum : return "CalvingCalvingrate"; 223 case CalvingMeltingrateEnum : return "CalvingMeltingrate"; 223 224 case CalvingLevermannEnum : return "CalvingLevermann"; 224 225 case DefaultCalvingEnum : return "DefaultCalving"; 225 226 case CalvingRequestedOutputsEnum : return "CalvingRequestedOutputs"; 226 227 case CalvinglevermannCoeffEnum : return "CalvinglevermannCoeff"; 228 case CalvinglevermannMeltingrateEnum : return "CalvinglevermannMeltingrate"; 227 229 case CalvingratexEnum : return "Calvingratex"; 228 230 case CalvingrateyEnum : return "Calvingratey"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r18812 r18816 224 224 else if (strcmp(name,"CalvingLaw")==0) return CalvingLawEnum; 225 225 else if (strcmp(name,"CalvingCalvingrate")==0) return CalvingCalvingrateEnum; 226 else if (strcmp(name,"CalvingMeltingrate")==0) return CalvingMeltingrateEnum; 226 227 else if (strcmp(name,"CalvingLevermann")==0) return CalvingLevermannEnum; 227 228 else if (strcmp(name,"DefaultCalving")==0) return DefaultCalvingEnum; 228 229 else if (strcmp(name,"CalvingRequestedOutputs")==0) return CalvingRequestedOutputsEnum; 229 230 else if (strcmp(name,"CalvinglevermannCoeff")==0) return CalvinglevermannCoeffEnum; 231 else if (strcmp(name,"CalvinglevermannMeltingrate")==0) return CalvinglevermannMeltingrateEnum; 230 232 else if (strcmp(name,"Calvingratex")==0) return CalvingratexEnum; 231 233 else if (strcmp(name,"Calvingratey")==0) return CalvingrateyEnum; … … 258 260 else if (strcmp(name,"MeshVertexonsurface")==0) return MeshVertexonsurfaceEnum; 259 261 else if (strcmp(name,"MeshVertexonboundary")==0) return MeshVertexonboundaryEnum; 260 else if (strcmp(name,"MeshX")==0) return MeshXEnum;261 else if (strcmp(name,"MeshY")==0) return MeshYEnum;262 262 else stage=3; 263 263 } 264 264 if(stage==3){ 265 if (strcmp(name,"MeshZ")==0) return MeshZEnum; 265 if (strcmp(name,"MeshX")==0) return MeshXEnum; 266 else if (strcmp(name,"MeshY")==0) return MeshYEnum; 267 else if (strcmp(name,"MeshZ")==0) return MeshZEnum; 266 268 else if (strcmp(name,"MeshElementtype")==0) return MeshElementtypeEnum; 267 269 else if (strcmp(name,"DomainType")==0) return DomainTypeEnum; … … 381 383 else if (strcmp(name,"SolutionType")==0) return SolutionTypeEnum; 382 384 else if (strcmp(name,"AnalysisType")==0) return AnalysisTypeEnum; 383 else if (strcmp(name,"ConfigurationType")==0) return ConfigurationTypeEnum;384 else if (strcmp(name,"AdjointBalancethicknessAnalysis")==0) return AdjointBalancethicknessAnalysisEnum;385 385 else stage=4; 386 386 } 387 387 if(stage==4){ 388 if (strcmp(name,"AdjointBalancethickness2Analysis")==0) return AdjointBalancethickness2AnalysisEnum; 388 if (strcmp(name,"ConfigurationType")==0) return ConfigurationTypeEnum; 389 else if (strcmp(name,"AdjointBalancethicknessAnalysis")==0) return AdjointBalancethicknessAnalysisEnum; 390 else if (strcmp(name,"AdjointBalancethickness2Analysis")==0) return AdjointBalancethickness2AnalysisEnum; 389 391 else if (strcmp(name,"AdjointHorizAnalysis")==0) return AdjointHorizAnalysisEnum; 390 392 else if (strcmp(name,"AnalysisCounter")==0) return AnalysisCounterEnum; … … 504 506 else if (strcmp(name,"MassconaxpbyNamex")==0) return MassconaxpbyNamexEnum; 505 507 else if (strcmp(name,"MassconaxpbyNamey")==0) return MassconaxpbyNameyEnum; 506 else if (strcmp(name,"MassconaxpbyAlpha")==0) return MassconaxpbyAlphaEnum;507 else if (strcmp(name,"MassconaxpbyBeta")==0) return MassconaxpbyBetaEnum;508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"NodeSId")==0) return NodeSIdEnum; 511 if (strcmp(name,"MassconaxpbyAlpha")==0) return MassconaxpbyAlphaEnum; 512 else if (strcmp(name,"MassconaxpbyBeta")==0) return MassconaxpbyBetaEnum; 513 else if (strcmp(name,"NodeSId")==0) return NodeSIdEnum; 512 514 else if (strcmp(name,"VectorParam")==0) return VectorParamEnum; 513 515 else if (strcmp(name,"Riftfront")==0) return RiftfrontEnum; … … 627 629 else if (strcmp(name,"StrainRateyz")==0) return StrainRateyzEnum; 628 630 else if (strcmp(name,"StrainRatezz")==0) return StrainRatezzEnum; 629 else if (strcmp(name,"Divergence")==0) return DivergenceEnum;630 else if (strcmp(name,"MaxDivergence")==0) return MaxDivergenceEnum;631 631 else stage=6; 632 632 } 633 633 if(stage==6){ 634 if (strcmp(name,"GiaCrossSectionShape")==0) return GiaCrossSectionShapeEnum; 634 if (strcmp(name,"Divergence")==0) return DivergenceEnum; 635 else if (strcmp(name,"MaxDivergence")==0) return MaxDivergenceEnum; 636 else if (strcmp(name,"GiaCrossSectionShape")==0) return GiaCrossSectionShapeEnum; 635 637 else if (strcmp(name,"GiadWdt")==0) return GiadWdtEnum; 636 638 else if (strcmp(name,"GiaW")==0) return GiaWEnum; … … 750 752 else if (strcmp(name,"MpiDense")==0) return MpiDenseEnum; 751 753 else if (strcmp(name,"MpiSparse")==0) return MpiSparseEnum; 752 else if (strcmp(name,"Seq")==0) return SeqEnum;753 else if (strcmp(name,"Mpi")==0) return MpiEnum;754 754 else stage=7; 755 755 } 756 756 if(stage==7){ 757 if (strcmp(name,"Mumps")==0) return MumpsEnum; 757 if (strcmp(name,"Seq")==0) return SeqEnum; 758 else if (strcmp(name,"Mpi")==0) return MpiEnum; 759 else if (strcmp(name,"Mumps")==0) return MumpsEnum; 758 760 else if (strcmp(name,"Gsl")==0) return GslEnum; 759 761 else if (strcmp(name,"Option")==0) return OptionEnum; -
issm/trunk-jpl/src/m/classes/calving.m
r18757 r18816 7 7 properties (SetAccess=public) 8 8 calvingrate = NaN; 9 meltingrate = NaN; 9 10 end 10 11 methods (Static) … … 60 61 if (solution~=TransientSolutionEnum() | md.transient.iscalving==0), return; end 61 62 md = checkfield(md,'fieldname','calving.calvingrate','NaN',1,'size',[md.mesh.numberofvertices 1],'>=',0); 63 md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'size',[md.mesh.numberofvertices 1],'>=',0); 62 64 end % }}} 63 65 function disp(obj) % {{{ 64 66 disp(sprintf(' Calving parameters:')); 65 67 fielddisplay(obj,'calvingrate','calving rate at given location [m/a]'); 68 fielddisplay(obj,'meltingrate','melting rate at given location [m/a]'); 66 69 end % }}} 67 70 function marshall(obj,md,fid) % {{{ … … 69 72 WriteData(fid,'enum',CalvingLawEnum(),'data',DefaultCalvingEnum(),'format','Integer'); 70 73 WriteData(fid,'object',obj,'fieldname','calvingrate','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1,'scale',1./yts); 74 WriteData(fid,'object',obj,'fieldname','meltingrate','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1,'scale',1./yts); 71 75 end % }}} 72 76 end -
issm/trunk-jpl/src/m/classes/calving.py
r18766 r18816 15 15 def __init__(self): # {{{ 16 16 self.calvingrate = float('NaN') 17 self.meltingrate = float('NaN') 17 18 18 19 #set defaults … … 23 24 string=' Calving parameters:' 24 25 string="%s\n%s"%(string,fielddisplay(self,'calvingrate','calving rate at given location [m/a]')) 26 string="%s\n%s"%(string,fielddisplay(self,'meltingrate','melting rate at given location [m/a]')) 25 27 26 28 return string … … 37 39 38 40 md = checkfield(md,'fieldname','calving.calvingrate','NaN',1,'size',[md.mesh.numberofvertices],'>=',0) 41 md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'size',[md.mesh.numberofvertices],'>=',0) 39 42 return md 40 43 # }}} … … 45 48 WriteData(fid,'enum',CalvingLawEnum(),'data',DefaultCalvingEnum(),'format','Integer'); 46 49 WriteData(fid,'object',self,'fieldname','calvingrate','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1,'scale',1./yts) 50 WriteData(fid,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1,'scale',1./yts) 47 51 # }}} -
issm/trunk-jpl/src/m/classes/calvinglevermann.m
r18766 r18816 6 6 classdef calvinglevermann 7 7 properties (SetAccess=public) 8 coeff = NaN; 8 coeff = NaN; 9 meltingrate = NaN; 9 10 end 10 11 methods … … 35 36 if (solution~=TransientSolutionEnum() | md.transient.iscalving==0), return; end 36 37 md = checkfield(md,'fieldname','calving.coeff','>',0,'size',[md.mesh.numberofvertices 1]); 38 md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'size',[md.mesh.numberofvertices 1],'>=',0); 37 39 end % }}} 38 40 function disp(obj) % {{{ 39 41 disp(sprintf(' Calving Levermann parameters:')); 40 42 fielddisplay(obj,'coeff','proportionality coefficient in Levermann model'); 43 fielddisplay(obj,'meltingrate','melting rate at given location [m/a]'); 41 44 42 45 end % }}} 43 46 function marshall(obj,md,fid) % {{{ 47 yts=365.0*24.0*3600.0; 44 48 WriteData(fid,'enum',CalvingLawEnum(),'data',CalvingLevermannEnum(),'format','Integer'); 45 49 WriteData(fid,'enum',CalvinglevermannCoeffEnum(),'data',obj.coeff,'format','DoubleMat','mattype',1); 50 WriteData(fid,'object',obj,'fieldname','meltingrate','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1,'scale',1./yts); 46 51 end % }}} 47 52 end -
issm/trunk-jpl/src/m/classes/calvinglevermann.py
r18792 r18816 14 14 15 15 def __init__(self): # {{{ 16 self.coeff = float('NaN') 16 self.coeff = float('NaN') 17 self.meltingrate = float('NaN') 17 18 18 19 #set defaults … … 23 24 string=' Calving Levermann parameters:' 24 25 string="%s\n%s"%(string,fielddisplay(self,'coeff','proportionality coefficient in Levermann model')) 26 string="%s\n%s"%(string,fielddisplay(self,'meltingrate','melting rate at given location [m/a]')) 25 27 26 28 return string … … 38 40 39 41 md = checkfield(md,'fieldname','calving.coeff','size',[md.mesh.numberofvertices],'>',0) 42 md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'size',[md.mesh.numberofvertices],'>=',0) 40 43 return md 41 44 # }}} 42 45 def marshall(self,md,fid): # {{{ 46 yts=365.*24.*3600. 43 47 WriteData(fid,'enum',CalvingLawEnum(),'data',CalvingLevermannEnum(),'format','Integer'); 44 48 WriteData(fid,'enum',CalvinglevermannCoeffEnum(),'data',self.coeff,'format','DoubleMat','mattype',1) 49 WriteData(fid,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1,'scale',1./yts) 45 50 # }}} -
issm/trunk-jpl/test/NightlyRun/IdToName.m
r18782 r18816 195 195 case 804, name='ValleyGlacierLevelsetCalvingSIA2d'; 196 196 case 805, name='ValleyGlacierLevelsetEnthCalvingHO3d'; 197 case 806, name='SquareShelfLevelsetCalvingSIA2dLevermann'; 197 case 806, name='SquareShelfLevelsetCalvingSSA2dLevermann'; 198 case 807, name='SquareShelfLevelsetMeltingSSA2d'; 198 199 case 1101, name='ISMIPAHO'; 199 200 case 1102, name='ISMIPAFS'; -
issm/trunk-jpl/test/NightlyRun/IdToName.py
r18782 r18816 180 180 804 : 'ValleyGlacierLevelsetCalvingSIA2d', 181 181 805 : 'ValleyGlacierLevelsetEnthCalvingHO3d', 182 806 : 'SquareShelfLevelsetCalvingSIA2dLevermann', 182 806 : 'SquareShelfLevelsetCalvingSSA2dLevermann', 183 807 : 'SquareShelfLevelsetMeltingSSA2d', 183 184 1101 : 'ISMIPAHO', 184 185 1102 : 'ISMIPAFS', -
issm/trunk-jpl/test/NightlyRun/test804.m
r18760 r18816 15 15 16 16 md.calving.calvingrate=1000.*ones(md.mesh.numberofvertices,1); 17 md.calving.meltingrate=zeros(md.mesh.numberofvertices,1); 17 18 18 19 md=solve(md,TransientSolutionEnum()); -
issm/trunk-jpl/test/NightlyRun/test804.py
r18762 r18816 25 25 26 26 md.calving.calvingrate=1000.*numpy.ones((md.mesh.numberofvertices,1)) 27 md.calving.meltingrate=numpy.zeros((md.mesh.numberofvertices,1)) 27 28 28 29 md=solve(md,TransientSolutionEnum()) -
issm/trunk-jpl/test/NightlyRun/test805.m
r18760 r18816 22 22 23 23 md.calving.calvingrate=1000.*ones(md.mesh.numberofvertices,1); 24 md.calving.meltingrate=zeros(md.mesh.numberofvertices,1); 24 25 25 26 md=solve(md,TransientSolutionEnum()); -
issm/trunk-jpl/test/NightlyRun/test805.py
r18762 r18816 32 32 33 33 md.calving.calvingrate=1000.*numpy.ones((md.mesh.numberofvertices,1)) 34 md.calving.meltingrate=numpy.zeros((md.mesh.numberofvertices,1)) 34 35 35 36 md=solve(md,TransientSolutionEnum()) -
issm/trunk-jpl/test/NightlyRun/test806.m
r18782 r18816 26 26 md.calving=calvinglevermann(); 27 27 md.calving.coeff=4.89e13*ones(md.mesh.numberofvertices,1); 28 md.calving.meltingrate=zeros(md.mesh.numberofvertices,1); 28 29 29 30 md.transient.requested_outputs={'default','StrainRateparallel','StrainRateperpendicular','Calvingratex','Calvingratey','CalvingCalvingrate'}; -
issm/trunk-jpl/test/NightlyRun/test806.py
r18793 r18816 37 37 md.transient.iscalving=True; 38 38 39 md.calving=calvinglevermann(); 40 md.calving.coeff=4.89e13*numpy.ones((md.mesh.numberofvertices,1)); 39 md.calving=calvinglevermann() 40 md.calving.coeff=4.89e13*numpy.ones((md.mesh.numberofvertices,1)) 41 md.calving.meltingrate=numpy.zeros((md.mesh.numberofvertices,1)) 41 42 42 43 md.transient.requested_outputs=['default','StrainRateparallel','StrainRateperpendicular','Calvingratex','Calvingratey','CalvingCalvingrate']
Note:
See TracChangeset
for help on using the changeset viewer.