[22755] | 1 | Index: ../trunk-jpl/src/c/modules/Calvingx/Calvingx.cpp
|
---|
| 2 | ===================================================================
|
---|
| 3 | --- ../trunk-jpl/src/c/modules/Calvingx/Calvingx.cpp (revision 22191)
|
---|
| 4 | +++ ../trunk-jpl/src/c/modules/Calvingx/Calvingx.cpp (revision 22192)
|
---|
| 5 | @@ -30,9 +30,9 @@
|
---|
| 6 | femmodel->StrainRateperpendicularx();
|
---|
| 7 | femmodel->CalvingRateLevermannx();
|
---|
| 8 | break;
|
---|
| 9 | - case CalvingDevEnum:
|
---|
| 10 | - femmodel->CalvingRateDevx();
|
---|
| 11 | - femmodel->ElementOperationx(&Element::CalvingRateDev);
|
---|
| 12 | + case CalvingVonmisesEnum:
|
---|
| 13 | + femmodel->CalvingRateVonmisesx();
|
---|
| 14 | + femmodel->ElementOperationx(&Element::CalvingRateVonmises);
|
---|
| 15 | break;
|
---|
| 16 | default:
|
---|
| 17 | _error_("Caving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
|
---|
| 18 | Index: ../trunk-jpl/src/c/classes/FemModel.cpp
|
---|
| 19 | ===================================================================
|
---|
| 20 | --- ../trunk-jpl/src/c/classes/FemModel.cpp (revision 22191)
|
---|
| 21 | +++ ../trunk-jpl/src/c/classes/FemModel.cpp (revision 22192)
|
---|
| 22 | @@ -919,11 +919,11 @@
|
---|
| 23 | *presponse=J;
|
---|
| 24 |
|
---|
| 25 | }/*}}}*/
|
---|
| 26 | -void FemModel::CalvingRateDevx(){/*{{{*/
|
---|
| 27 | +void FemModel::CalvingRateVonmisesx(){/*{{{*/
|
---|
| 28 |
|
---|
| 29 | for(int i=0;i<elements->Size();i++){
|
---|
| 30 | Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i));
|
---|
| 31 | - element->CalvingRateDev();
|
---|
| 32 | + element->CalvingRateVonmises();
|
---|
| 33 | }
|
---|
| 34 | }
|
---|
| 35 | /*}}}*/
|
---|
| 36 | Index: ../trunk-jpl/src/c/classes/Elements/Tria.h
|
---|
| 37 | ===================================================================
|
---|
| 38 | --- ../trunk-jpl/src/c/classes/Elements/Tria.h (revision 22191)
|
---|
| 39 | +++ ../trunk-jpl/src/c/classes/Elements/Tria.h (revision 22192)
|
---|
| 40 | @@ -51,7 +51,7 @@
|
---|
| 41 | /*}}}*/
|
---|
| 42 | /*Element virtual functions definitions: {{{*/
|
---|
| 43 | void AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part);
|
---|
| 44 | - void CalvingRateDev();
|
---|
| 45 | + void CalvingRateVonmises();
|
---|
| 46 | void CalvingCrevasseDepth();
|
---|
| 47 | void CalvingRateLevermann();
|
---|
| 48 | IssmDouble CharacteristicLength(void);
|
---|
| 49 | Index: ../trunk-jpl/src/c/classes/Elements/Penta.cpp
|
---|
| 50 | ===================================================================
|
---|
| 51 | --- ../trunk-jpl/src/c/classes/Elements/Penta.cpp (revision 22191)
|
---|
| 52 | +++ ../trunk-jpl/src/c/classes/Elements/Penta.cpp (revision 22192)
|
---|
| 53 | @@ -181,7 +181,7 @@
|
---|
| 54 | _error_("Not supported yet!");
|
---|
| 55 | }
|
---|
| 56 | /*}}}*/
|
---|
| 57 | -void Penta::CalvingRateDev(){/*{{{*/
|
---|
| 58 | +void Penta::CalvingRateVonmises(){/*{{{*/
|
---|
| 59 |
|
---|
| 60 | if(!this->IsOnBase()) return;
|
---|
| 61 |
|
---|
| 62 | Index: ../trunk-jpl/src/c/classes/Elements/Penta.h
|
---|
| 63 | ===================================================================
|
---|
| 64 | --- ../trunk-jpl/src/c/classes/Elements/Penta.h (revision 22191)
|
---|
| 65 | +++ ../trunk-jpl/src/c/classes/Elements/Penta.h (revision 22192)
|
---|
| 66 | @@ -48,7 +48,7 @@
|
---|
| 67 | void AddInput(int input_enum, IssmDouble* values, int interpolation_enum);
|
---|
| 68 | void AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part);
|
---|
| 69 | void BasalNodeIndices(int* pnumindices,int** pindices,int finiteelement);
|
---|
| 70 | - void CalvingRateDev();
|
---|
| 71 | + void CalvingRateVonmises();
|
---|
| 72 | void CalvingRateLevermann();
|
---|
| 73 | IssmDouble CharacteristicLength(void){_error_("not implemented yet");};
|
---|
| 74 | void ComputeBasalStress(Vector<IssmDouble>* sigma_b);
|
---|
| 75 | Index: ../trunk-jpl/src/c/classes/Elements/Element.cpp
|
---|
| 76 | ===================================================================
|
---|
| 77 | --- ../trunk-jpl/src/c/classes/Elements/Element.cpp (revision 22191)
|
---|
| 78 | +++ ../trunk-jpl/src/c/classes/Elements/Element.cpp (revision 22192)
|
---|
| 79 | @@ -2352,8 +2352,8 @@
|
---|
| 80 | case CalvingLevermannEnum:
|
---|
| 81 | this->CalvingRateLevermann();
|
---|
| 82 | break;
|
---|
| 83 | - case CalvingDevEnum:
|
---|
| 84 | - this->CalvingRateDev();
|
---|
| 85 | + case CalvingVonmisesEnum:
|
---|
| 86 | + this->CalvingRateVonmises();
|
---|
| 87 | break;
|
---|
| 88 | case CalvingCrevasseDepthEnum:
|
---|
| 89 | this->CalvingCrevasseDepth();
|
---|
| 90 | @@ -2365,7 +2365,7 @@
|
---|
| 91 | case StrainRateparallelEnum: this->StrainRateparallel(); break;
|
---|
| 92 | case StrainRateperpendicularEnum: this->StrainRateperpendicular(); break;
|
---|
| 93 | case SurfaceCrevasseEnum: this->CalvingCrevasseDepth(); break;
|
---|
| 94 | - case SigmaVMEnum: this->CalvingRateDev(); break;
|
---|
| 95 | + case SigmaVMEnum: this->CalvingRateVonmises(); break;
|
---|
| 96 | }
|
---|
| 97 |
|
---|
| 98 | /*Find input*/
|
---|
| 99 | Index: ../trunk-jpl/src/c/classes/Elements/Element.h
|
---|
| 100 | ===================================================================
|
---|
| 101 | --- ../trunk-jpl/src/c/classes/Elements/Element.h (revision 22191)
|
---|
| 102 | +++ ../trunk-jpl/src/c/classes/Elements/Element.h (revision 22192)
|
---|
| 103 | @@ -187,7 +187,7 @@
|
---|
| 104 | virtual void AddInput(int input_enum, IssmDouble* values, int interpolation_enum)=0;
|
---|
| 105 | virtual void AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part)=0;
|
---|
| 106 | virtual void BasalNodeIndices(int* pnumindices,int** pindices,int finiteelement){_error_("not implemented yet");};
|
---|
| 107 | - virtual void CalvingRateDev(void){_error_("not implemented yet");};
|
---|
| 108 | + virtual void CalvingRateVonmises(void){_error_("not implemented yet");};
|
---|
| 109 | virtual void CalvingCrevasseDepth(void){_error_("not implemented yet");};
|
---|
| 110 | virtual void CalvingRateLevermann(void)=0;
|
---|
| 111 | virtual IssmDouble CharacteristicLength(void)=0;
|
---|
| 112 | Index: ../trunk-jpl/src/c/classes/Elements/Tria.cpp
|
---|
| 113 | ===================================================================
|
---|
| 114 | --- ../trunk-jpl/src/c/classes/Elements/Tria.cpp (revision 22191)
|
---|
| 115 | +++ ../trunk-jpl/src/c/classes/Elements/Tria.cpp (revision 22192)
|
---|
| 116 | @@ -207,7 +207,7 @@
|
---|
| 117 | }
|
---|
| 118 | }
|
---|
| 119 | /*}}}*/
|
---|
| 120 | -void Tria::CalvingRateDev(){/*{{{*/
|
---|
| 121 | +void Tria::CalvingRateVonmises(){/*{{{*/
|
---|
| 122 |
|
---|
| 123 | IssmDouble xyz_list[NUMVERTICES][3];
|
---|
| 124 | IssmDouble epsilon[3]; /* epsilon=[exx,eyy,exy];*/
|
---|
| 125 | Index: ../trunk-jpl/src/c/classes/FemModel.h
|
---|
| 126 | ===================================================================
|
---|
| 127 | --- ../trunk-jpl/src/c/classes/FemModel.h (revision 22191)
|
---|
| 128 | +++ ../trunk-jpl/src/c/classes/FemModel.h (revision 22192)
|
---|
| 129 | @@ -81,7 +81,7 @@
|
---|
| 130 |
|
---|
| 131 | /*Modules*/
|
---|
| 132 | void BalancethicknessMisfitx(IssmDouble* pV);
|
---|
| 133 | - void CalvingRateDevx();
|
---|
| 134 | + void CalvingRateVonmisesx();
|
---|
| 135 | void CalvingRateLevermannx();
|
---|
| 136 | void DeviatoricStressx();
|
---|
| 137 | void Divergencex(IssmDouble* pdiv);
|
---|
| 138 | Index: ../trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp
|
---|
| 139 | ===================================================================
|
---|
| 140 | --- ../trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp (revision 22191)
|
---|
| 141 | +++ ../trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp (revision 22192)
|
---|
| 142 | @@ -59,7 +59,7 @@
|
---|
| 143 | iomodel->FetchDataToInput(elements,"md.calving.coeff",CalvinglevermannCoeffEnum);
|
---|
| 144 | iomodel->FetchDataToInput(elements,"md.calving.meltingrate",CalvinglevermannMeltingrateEnum);
|
---|
| 145 | break;
|
---|
| 146 | - case CalvingDevEnum:
|
---|
| 147 | + case CalvingVonmisesEnum:
|
---|
| 148 | iomodel->FetchDataToInput(elements,"md.calving.stress_threshold_groundedice",CalvingStressThresholdGroundediceEnum);
|
---|
| 149 | iomodel->FetchDataToInput(elements,"md.calving.stress_threshold_floatingice",CalvingStressThresholdFloatingiceEnum);
|
---|
| 150 | iomodel->FetchDataToInput(elements,"md.calving.meltingrate",CalvingMeltingrateEnum);
|
---|
| 151 | @@ -88,7 +88,7 @@
|
---|
| 152 | switch(calvinglaw){
|
---|
| 153 | case DefaultCalvingEnum:
|
---|
| 154 | case CalvingLevermannEnum:
|
---|
| 155 | - case CalvingDevEnum:
|
---|
| 156 | + case CalvingVonmisesEnum:
|
---|
| 157 | break;
|
---|
| 158 | case CalvingMinthicknessEnum:
|
---|
| 159 | parameters->AddObject(iomodel->CopyConstantObject("md.calving.min_thickness",CalvingMinthicknessEnum));
|
---|
| 160 | @@ -219,7 +219,7 @@
|
---|
| 161 | /*Load calving inputs*/
|
---|
| 162 | switch(calvinglaw){
|
---|
| 163 | case DefaultCalvingEnum:
|
---|
| 164 | - case CalvingDevEnum:
|
---|
| 165 | + case CalvingVonmisesEnum:
|
---|
| 166 | lsf_slopex_input = basalelement->GetInput(LevelsetfunctionSlopeXEnum); _assert_(lsf_slopex_input);
|
---|
| 167 | if(dim==2) lsf_slopey_input = basalelement->GetInput(LevelsetfunctionSlopeYEnum); _assert_(lsf_slopey_input);
|
---|
| 168 | calvingrate_input = basalelement->GetInput(CalvingCalvingrateEnum); _assert_(calvingrate_input);
|
---|
| 169 | @@ -290,7 +290,7 @@
|
---|
| 170 | /*Get calving speed*/
|
---|
| 171 | switch(calvinglaw){
|
---|
| 172 | case DefaultCalvingEnum:
|
---|
| 173 | - case CalvingDevEnum:
|
---|
| 174 | + case CalvingVonmisesEnum:
|
---|
| 175 | lsf_slopex_input->GetInputValue(&dlsf[0],gauss);
|
---|
| 176 | if(dim==2) lsf_slopey_input->GetInputValue(&dlsf[1],gauss);
|
---|
| 177 | calvingrate_input->GetInputValue(&calvingrate,gauss);
|
---|
| 178 | Index: ../trunk-jpl/src/m/classes/calvingdev.m
|
---|
| 179 | ===================================================================
|
---|
| 180 | --- ../trunk-jpl/src/m/classes/calvingdev.m (revision 22191)
|
---|
| 181 | +++ ../trunk-jpl/src/m/classes/calvingdev.m (nonexistent)
|
---|
| 182 | @@ -1,63 +0,0 @@
|
---|
| 183 | -%CALVINGDEV class definition
|
---|
| 184 | -%
|
---|
| 185 | -% Usage:
|
---|
| 186 | -% calvingdev=calvingdev();
|
---|
| 187 | -
|
---|
| 188 | -classdef calvingdev
|
---|
| 189 | - properties (SetAccess=public)
|
---|
| 190 | - stress_threshold_groundedice = 0.;
|
---|
| 191 | - stress_threshold_floatingice = 0.;
|
---|
| 192 | - meltingrate = NaN;
|
---|
| 193 | - end
|
---|
| 194 | - methods
|
---|
| 195 | - function self = calvingdev(varargin) % {{{
|
---|
| 196 | - switch nargin
|
---|
| 197 | - case 0
|
---|
| 198 | - self=setdefaultparameters(self);
|
---|
| 199 | - case 1
|
---|
| 200 | - inputstruct=varargin{1};
|
---|
| 201 | - list1 = properties('calvingdev');
|
---|
| 202 | - list2 = fieldnames(inputstruct);
|
---|
| 203 | - for i=1:length(list1)
|
---|
| 204 | - fieldname = list1{i};
|
---|
| 205 | - if ismember(fieldname,list2),
|
---|
| 206 | - self.(fieldname) = inputstruct.(fieldname);
|
---|
| 207 | - end
|
---|
| 208 | - end
|
---|
| 209 | - otherwise
|
---|
| 210 | - error('constructor not supported');
|
---|
| 211 | - end
|
---|
| 212 | - end % }}}
|
---|
| 213 | - function self = extrude(self,md) % {{{
|
---|
| 214 | - self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node');
|
---|
| 215 | - end % }}}
|
---|
| 216 | - function self = setdefaultparameters(self) % {{{
|
---|
| 217 | -
|
---|
| 218 | - %Default sigma max
|
---|
| 219 | - self.stress_threshold_groundedice = 1e6;
|
---|
| 220 | - self.stress_threshold_floatingice = 150e3;
|
---|
| 221 | - end % }}}
|
---|
| 222 | - function md = checkconsistency(self,md,solution,analyses) % {{{
|
---|
| 223 | - %Early return
|
---|
| 224 | - if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end
|
---|
| 225 | -
|
---|
| 226 | - md = checkfield(md,'fieldname','calving.stress_threshold_groundedice','>',0,'nan',1,'Inf',1);
|
---|
| 227 | - md = checkfield(md,'fieldname','calving.stress_threshold_floatingice','>',0,'nan',1,'Inf',1);
|
---|
| 228 | - md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'Inf',1,'timeseries',1,'>=',0);
|
---|
| 229 | - end % }}}
|
---|
| 230 | - function disp(self) % {{{
|
---|
| 231 | - disp(sprintf(' Calving Pi parameters:'));
|
---|
| 232 | - fielddisplay(self,'stress_threshold_groundedice','sigma_max applied to grounded ice only [Pa]');
|
---|
| 233 | - fielddisplay(self,'stress_threshold_floatingice','sigma_max applied to floating ice only [Pa]');
|
---|
| 234 | - fielddisplay(self,'meltingrate','melting rate at given location [m/a]');
|
---|
| 235 | -
|
---|
| 236 | - end % }}}
|
---|
| 237 | - function marshall(self,prefix,md,fid) % {{{
|
---|
| 238 | - yts=md.constants.yts;
|
---|
| 239 | - WriteData(fid,prefix,'name','md.calving.law','data',2,'format','Integer');
|
---|
| 240 | - WriteData(fid,prefix,'object',self,'fieldname','stress_threshold_groundedice','format','DoubleMat','mattype',1);
|
---|
| 241 | - WriteData(fid,prefix,'object',self,'fieldname','stress_threshold_floatingice','format','DoubleMat','mattype',1);
|
---|
| 242 | - WriteData(fid,prefix,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts);
|
---|
| 243 | - end % }}}
|
---|
| 244 | - end
|
---|
| 245 | -end
|
---|
| 246 | Index: ../trunk-jpl/src/m/classes/calvingvonmises.m
|
---|
| 247 | ===================================================================
|
---|
| 248 | --- ../trunk-jpl/src/m/classes/calvingvonmises.m (nonexistent)
|
---|
| 249 | +++ ../trunk-jpl/src/m/classes/calvingvonmises.m (revision 22192)
|
---|
| 250 | @@ -0,0 +1,63 @@
|
---|
| 251 | +%CALVINGVONMISES class definition
|
---|
| 252 | +%
|
---|
| 253 | +% Usage:
|
---|
| 254 | +% calvingvonmises=calvingvonmises();
|
---|
| 255 | +
|
---|
| 256 | +classdef calvingvonmises
|
---|
| 257 | + properties (SetAccess=public)
|
---|
| 258 | + stress_threshold_groundedice = 0.;
|
---|
| 259 | + stress_threshold_floatingice = 0.;
|
---|
| 260 | + meltingrate = NaN;
|
---|
| 261 | + end
|
---|
| 262 | + methods
|
---|
| 263 | + function self = calvingvonmises(varargin) % {{{
|
---|
| 264 | + switch nargin
|
---|
| 265 | + case 0
|
---|
| 266 | + self=setdefaultparameters(self);
|
---|
| 267 | + case 1
|
---|
| 268 | + inputstruct=varargin{1};
|
---|
| 269 | + list1 = properties('calvingvonmises');
|
---|
| 270 | + list2 = fieldnames(inputstruct);
|
---|
| 271 | + for i=1:length(list1)
|
---|
| 272 | + fieldname = list1{i};
|
---|
| 273 | + if ismember(fieldname,list2),
|
---|
| 274 | + self.(fieldname) = inputstruct.(fieldname);
|
---|
| 275 | + end
|
---|
| 276 | + end
|
---|
| 277 | + otherwise
|
---|
| 278 | + error('constructor not supported');
|
---|
| 279 | + end
|
---|
| 280 | + end % }}}
|
---|
| 281 | + function self = extrude(self,md) % {{{
|
---|
| 282 | + self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node');
|
---|
| 283 | + end % }}}
|
---|
| 284 | + function self = setdefaultparameters(self) % {{{
|
---|
| 285 | +
|
---|
| 286 | + %Default sigma max
|
---|
| 287 | + self.stress_threshold_groundedice = 1e6;
|
---|
| 288 | + self.stress_threshold_floatingice = 150e3;
|
---|
| 289 | + end % }}}
|
---|
| 290 | + function md = checkconsistency(self,md,solution,analyses) % {{{
|
---|
| 291 | + %Early return
|
---|
| 292 | + if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end
|
---|
| 293 | +
|
---|
| 294 | + md = checkfield(md,'fieldname','calving.stress_threshold_groundedice','>',0,'nan',1,'Inf',1);
|
---|
| 295 | + md = checkfield(md,'fieldname','calving.stress_threshold_floatingice','>',0,'nan',1,'Inf',1);
|
---|
| 296 | + md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'Inf',1,'timeseries',1,'>=',0);
|
---|
| 297 | + end % }}}
|
---|
| 298 | + function disp(self) % {{{
|
---|
| 299 | + disp(sprintf(' Calving VonMises parameters:'));
|
---|
| 300 | + fielddisplay(self,'stress_threshold_groundedice','sigma_max applied to grounded ice only [Pa]');
|
---|
| 301 | + fielddisplay(self,'stress_threshold_floatingice','sigma_max applied to floating ice only [Pa]');
|
---|
| 302 | + fielddisplay(self,'meltingrate','melting rate at given location [m/a]');
|
---|
| 303 | +
|
---|
| 304 | + end % }}}
|
---|
| 305 | + function marshall(self,prefix,md,fid) % {{{
|
---|
| 306 | + yts=md.constants.yts;
|
---|
| 307 | + WriteData(fid,prefix,'name','md.calving.law','data',2,'format','Integer');
|
---|
| 308 | + WriteData(fid,prefix,'object',self,'fieldname','stress_threshold_groundedice','format','DoubleMat','mattype',1);
|
---|
| 309 | + WriteData(fid,prefix,'object',self,'fieldname','stress_threshold_floatingice','format','DoubleMat','mattype',1);
|
---|
| 310 | + WriteData(fid,prefix,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts);
|
---|
| 311 | + end % }}}
|
---|
| 312 | + end
|
---|
| 313 | +end
|
---|
| 314 | Index: ../trunk-jpl/test/NightlyRun/test540.m
|
---|
| 315 | ===================================================================
|
---|
| 316 | --- ../trunk-jpl/test/NightlyRun/test540.m (revision 22191)
|
---|
| 317 | +++ ../trunk-jpl/test/NightlyRun/test540.m (revision 22192)
|
---|
| 318 | @@ -8,7 +8,7 @@
|
---|
| 319 |
|
---|
| 320 | %calving parameters
|
---|
| 321 | md.mask.ice_levelset = 1e4*(md.mask.ice_levelset + 0.5);
|
---|
| 322 | -md.calving=calvingdev();
|
---|
| 323 | +md.calving=calvingvonmises();
|
---|
| 324 | md.calving.meltingrate = zeros(md.mesh.numberofvertices,1);
|
---|
| 325 | md.transient.ismovingfront = 1;
|
---|
| 326 | md.levelset.spclevelset = NaN(md.mesh.numberofvertices,1);
|
---|