source:
issm/oecreview/Archive/26740-27031/ISSM-27019-27020.diff@
27032
Last change on this file since 27032 was 27032, checked in by , 3 years ago | |
---|---|
File size: 5.1 KB |
-
../trunk-jpl/src/m/classes/calvingtest.m
1 %CALVINGTEST class definition 2 % For testing calving laws and coefficients 3 % Usage: 4 % calvingtest=calvingtest(); 5 6 classdef calvingtest 7 properties (SetAccess=public) 8 speedfactor = 1; 9 end 10 methods 11 function self = calvingtest(varargin) % {{{ 12 switch nargin 13 case 0 14 self=setdefaultparameters(self); 15 case 1 16 inputstruct=varargin{1}; 17 list1 = properties('calvingtest'); 18 list2 = fieldnames(inputstruct); 19 for i=1:length(list1) 20 fieldname = list1{i}; 21 if ismember(fieldname,list2), 22 self.(fieldname) = inputstruct.(fieldname); 23 end 24 end 25 otherwise 26 error('constructor not supported'); 27 end 28 end % }}} 29 function self = extrude(self,md) % {{{ 30 end % }}} 31 function self = setdefaultparameters(self) % {{{ 32 self.speedfactor = 1; 33 end % }}} 34 function md = checkconsistency(self,md,solution,analyses) % {{{ 35 %Early return 36 if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end 37 md = checkfield(md,'fieldname','calving.speedfactor','NaN',1,'Inf',1, 'singletimeseries', 1); 38 end % }}} 39 function disp(self) % {{{ 40 disp(sprintf(' Calving test parameters:')); 41 fielddisplay(self,'speedfactor','calving rate is proportional to the ice velocity.'); 42 end % }}} 43 function marshall(self,prefix,md,fid) % {{{ 44 yts=md.constants.yts; 45 WriteData(fid,prefix,'name','md.calving.law','data',8,'format','Integer'); 46 WriteData(fid,prefix,'object',self,'fieldname','speedfactor','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts); 47 end % }}} 48 end 49 end -
../trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp
170 170 parameters->AddObject(iomodel->CopyConstantObject("md.levelset.migration_max",MigrationMaxEnum)); 171 171 172 172 int calvinglaw; 173 IssmDouble *transparam = NULL; 174 IssmDouble yts; 175 int N,M; 176 bool interp,cycle; 177 173 178 iomodel->FindConstant(&calvinglaw,"md.calving.law"); 174 179 switch(calvinglaw){ 175 180 case DefaultCalvingEnum: … … 191 196 parameters->AddObject(iomodel->CopyConstantObject("md.calving.height_above_floatation",CalvingHeightAboveFloatationEnum)); 192 197 break; 193 198 case CalvingTestEnum: 194 parameters->AddObject(iomodel->CopyConstantObject("md.calving.speedfactor",CalvingTestSpeedfactorEnum)); 199 iomodel->FetchData(&transparam,&N,&M,"md.calving.speedfactor"); 200 iomodel->FindConstant(&interp,"md.timestepping.interp_forcing"); 201 iomodel->FindConstant(&cycle,"md.timestepping.cycle_forcing"); 202 if(N==1){ 203 _assert_(M==1); 204 parameters->AddObject(new DoubleParam(CalvingTestSpeedfactorEnum,transparam[0])); 205 } 206 else{ 207 _assert_(N==2); 208 parameters->AddObject(new TransientParam(CalvingTestSpeedfactorEnum,&transparam[0],&transparam[M],interp,cycle,M)); 209 } 210 xDelete<IssmDouble>(transparam); 195 211 break; 196 212 case CalvingParameterizationEnum: 197 213 parameters->AddObject(iomodel->CopyConstantObject("md.calving.min_thickness",CalvingMinthicknessEnum)); … … 208 224 /*Get frontal melt parameters*/ 209 225 int melt_parameterization; 210 226 iomodel->FindConstant(&melt_parameterization,"md.frontalforcings.parameterization"); 211 int M,N;212 IssmDouble* transparam = NULL;213 227 switch(melt_parameterization){ 214 228 case FrontalForcingsDefaultEnum: 215 229 break; -
../trunk-jpl/src/c/classes/Elements/Element.cpp
3556 3556 case CalvingParameterizationEnum: 3557 3557 this->CalvingRateParameterization(); 3558 3558 break; 3559 case CalvingTestEnum: 3560 this->CalvingRateTest(); 3561 break; 3559 3562 default: 3560 3563 _error_("Calving law "<<EnumToStringx(calvinglaw)<<" not supported yet"); 3561 3564 } -
../trunk-jpl/src/c/classes/Elements/Tria.cpp
372 372 IssmDouble calvingratey[NUMVERTICES]; 373 373 IssmDouble calvingrate[NUMVERTICES]; 374 374 IssmDouble vx,vy; 375 IssmDouble time; 376 IssmDouble coeff; 375 377 376 378 /*Retrieve all inputs and parameters we will need*/ 377 IssmDouble coeff = parameters->FindParam(CalvingTestSpeedfactorEnum); 379 parameters->FindParam(&time,TimeEnum); 380 parameters->FindParam(&coeff,CalvingTestSpeedfactorEnum,time); 381 378 382 Input* vx_input = this->GetInput(VxEnum); _assert_(vx_input); 379 383 Input* vy_input = this->GetInput(VyEnum); _assert_(vy_input); 380 384
Note:
See TracBrowser
for help on using the repository browser.