source:
issm/oecreview/Archive/21724-22754/ISSM-22191-22192.diff@
22755
Last change on this file since 22755 was 22755, checked in by , 7 years ago | |
---|---|
File size: 13.9 KB |
-
../trunk-jpl/src/c/modules/Calvingx/Calvingx.cpp
30 30 femmodel->StrainRateperpendicularx(); 31 31 femmodel->CalvingRateLevermannx(); 32 32 break; 33 case Calving DevEnum:34 femmodel->CalvingRate Devx();35 femmodel->ElementOperationx(&Element::CalvingRate Dev);33 case CalvingVonmisesEnum: 34 femmodel->CalvingRateVonmisesx(); 35 femmodel->ElementOperationx(&Element::CalvingRateVonmises); 36 36 break; 37 37 default: 38 38 _error_("Caving law "<<EnumToStringx(calvinglaw)<<" not supported yet"); -
../trunk-jpl/src/c/classes/FemModel.cpp
919 919 *presponse=J; 920 920 921 921 }/*}}}*/ 922 void FemModel::CalvingRate Devx(){/*{{{*/922 void FemModel::CalvingRateVonmisesx(){/*{{{*/ 923 923 924 924 for(int i=0;i<elements->Size();i++){ 925 925 Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i)); 926 element->CalvingRate Dev();926 element->CalvingRateVonmises(); 927 927 } 928 928 } 929 929 /*}}}*/ -
../trunk-jpl/src/c/classes/Elements/Tria.h
51 51 /*}}}*/ 52 52 /*Element virtual functions definitions: {{{*/ 53 53 void AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part); 54 void CalvingRate Dev();54 void CalvingRateVonmises(); 55 55 void CalvingCrevasseDepth(); 56 56 void CalvingRateLevermann(); 57 57 IssmDouble CharacteristicLength(void); -
../trunk-jpl/src/c/classes/Elements/Penta.cpp
181 181 _error_("Not supported yet!"); 182 182 } 183 183 /*}}}*/ 184 void Penta::CalvingRate Dev(){/*{{{*/184 void Penta::CalvingRateVonmises(){/*{{{*/ 185 185 186 186 if(!this->IsOnBase()) return; 187 187 -
../trunk-jpl/src/c/classes/Elements/Penta.h
48 48 void AddInput(int input_enum, IssmDouble* values, int interpolation_enum); 49 49 void AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part); 50 50 void BasalNodeIndices(int* pnumindices,int** pindices,int finiteelement); 51 void CalvingRate Dev();51 void CalvingRateVonmises(); 52 52 void CalvingRateLevermann(); 53 53 IssmDouble CharacteristicLength(void){_error_("not implemented yet");}; 54 54 void ComputeBasalStress(Vector<IssmDouble>* sigma_b); -
../trunk-jpl/src/c/classes/Elements/Element.cpp
2352 2352 case CalvingLevermannEnum: 2353 2353 this->CalvingRateLevermann(); 2354 2354 break; 2355 case Calving DevEnum:2356 this->CalvingRate Dev();2355 case CalvingVonmisesEnum: 2356 this->CalvingRateVonmises(); 2357 2357 break; 2358 2358 case CalvingCrevasseDepthEnum: 2359 2359 this->CalvingCrevasseDepth(); … … 2365 2365 case StrainRateparallelEnum: this->StrainRateparallel(); break; 2366 2366 case StrainRateperpendicularEnum: this->StrainRateperpendicular(); break; 2367 2367 case SurfaceCrevasseEnum: this->CalvingCrevasseDepth(); break; 2368 case SigmaVMEnum: this->CalvingRate Dev(); break;2368 case SigmaVMEnum: this->CalvingRateVonmises(); break; 2369 2369 } 2370 2370 2371 2371 /*Find input*/ -
../trunk-jpl/src/c/classes/Elements/Element.h
187 187 virtual void AddInput(int input_enum, IssmDouble* values, int interpolation_enum)=0; 188 188 virtual void AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part)=0; 189 189 virtual void BasalNodeIndices(int* pnumindices,int** pindices,int finiteelement){_error_("not implemented yet");}; 190 virtual void CalvingRate Dev(void){_error_("not implemented yet");};190 virtual void CalvingRateVonmises(void){_error_("not implemented yet");}; 191 191 virtual void CalvingCrevasseDepth(void){_error_("not implemented yet");}; 192 192 virtual void CalvingRateLevermann(void)=0; 193 193 virtual IssmDouble CharacteristicLength(void)=0; -
../trunk-jpl/src/c/classes/Elements/Tria.cpp
207 207 } 208 208 } 209 209 /*}}}*/ 210 void Tria::CalvingRate Dev(){/*{{{*/210 void Tria::CalvingRateVonmises(){/*{{{*/ 211 211 212 212 IssmDouble xyz_list[NUMVERTICES][3]; 213 213 IssmDouble epsilon[3]; /* epsilon=[exx,eyy,exy];*/ -
../trunk-jpl/src/c/classes/FemModel.h
81 81 82 82 /*Modules*/ 83 83 void BalancethicknessMisfitx(IssmDouble* pV); 84 void CalvingRate Devx();84 void CalvingRateVonmisesx(); 85 85 void CalvingRateLevermannx(); 86 86 void DeviatoricStressx(); 87 87 void Divergencex(IssmDouble* pdiv); -
../trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp
59 59 iomodel->FetchDataToInput(elements,"md.calving.coeff",CalvinglevermannCoeffEnum); 60 60 iomodel->FetchDataToInput(elements,"md.calving.meltingrate",CalvinglevermannMeltingrateEnum); 61 61 break; 62 case Calving DevEnum:62 case CalvingVonmisesEnum: 63 63 iomodel->FetchDataToInput(elements,"md.calving.stress_threshold_groundedice",CalvingStressThresholdGroundediceEnum); 64 64 iomodel->FetchDataToInput(elements,"md.calving.stress_threshold_floatingice",CalvingStressThresholdFloatingiceEnum); 65 65 iomodel->FetchDataToInput(elements,"md.calving.meltingrate",CalvingMeltingrateEnum); … … 88 88 switch(calvinglaw){ 89 89 case DefaultCalvingEnum: 90 90 case CalvingLevermannEnum: 91 case Calving DevEnum:91 case CalvingVonmisesEnum: 92 92 break; 93 93 case CalvingMinthicknessEnum: 94 94 parameters->AddObject(iomodel->CopyConstantObject("md.calving.min_thickness",CalvingMinthicknessEnum)); … … 219 219 /*Load calving inputs*/ 220 220 switch(calvinglaw){ 221 221 case DefaultCalvingEnum: 222 case Calving DevEnum:222 case CalvingVonmisesEnum: 223 223 lsf_slopex_input = basalelement->GetInput(LevelsetfunctionSlopeXEnum); _assert_(lsf_slopex_input); 224 224 if(dim==2) lsf_slopey_input = basalelement->GetInput(LevelsetfunctionSlopeYEnum); _assert_(lsf_slopey_input); 225 225 calvingrate_input = basalelement->GetInput(CalvingCalvingrateEnum); _assert_(calvingrate_input); … … 290 290 /*Get calving speed*/ 291 291 switch(calvinglaw){ 292 292 case DefaultCalvingEnum: 293 case Calving DevEnum:293 case CalvingVonmisesEnum: 294 294 lsf_slopex_input->GetInputValue(&dlsf[0],gauss); 295 295 if(dim==2) lsf_slopey_input->GetInputValue(&dlsf[1],gauss); 296 296 calvingrate_input->GetInputValue(&calvingrate,gauss); -
../trunk-jpl/src/m/classes/calvingdev.m
1 %CALVINGDEV class definition2 %3 % Usage:4 % calvingdev=calvingdev();5 6 classdef calvingdev7 properties (SetAccess=public)8 stress_threshold_groundedice = 0.;9 stress_threshold_floatingice = 0.;10 meltingrate = NaN;11 end12 methods13 function self = calvingdev(varargin) % {{{14 switch nargin15 case 016 self=setdefaultparameters(self);17 case 118 inputstruct=varargin{1};19 list1 = properties('calvingdev');20 list2 = fieldnames(inputstruct);21 for i=1:length(list1)22 fieldname = list1{i};23 if ismember(fieldname,list2),24 self.(fieldname) = inputstruct.(fieldname);25 end26 end27 otherwise28 error('constructor not supported');29 end30 end % }}}31 function self = extrude(self,md) % {{{32 self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node');33 end % }}}34 function self = setdefaultparameters(self) % {{{35 36 %Default sigma max37 self.stress_threshold_groundedice = 1e6;38 self.stress_threshold_floatingice = 150e3;39 end % }}}40 function md = checkconsistency(self,md,solution,analyses) % {{{41 %Early return42 if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end43 44 md = checkfield(md,'fieldname','calving.stress_threshold_groundedice','>',0,'nan',1,'Inf',1);45 md = checkfield(md,'fieldname','calving.stress_threshold_floatingice','>',0,'nan',1,'Inf',1);46 md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'Inf',1,'timeseries',1,'>=',0);47 end % }}}48 function disp(self) % {{{49 disp(sprintf(' Calving Pi parameters:'));50 fielddisplay(self,'stress_threshold_groundedice','sigma_max applied to grounded ice only [Pa]');51 fielddisplay(self,'stress_threshold_floatingice','sigma_max applied to floating ice only [Pa]');52 fielddisplay(self,'meltingrate','melting rate at given location [m/a]');53 54 end % }}}55 function marshall(self,prefix,md,fid) % {{{56 yts=md.constants.yts;57 WriteData(fid,prefix,'name','md.calving.law','data',2,'format','Integer');58 WriteData(fid,prefix,'object',self,'fieldname','stress_threshold_groundedice','format','DoubleMat','mattype',1);59 WriteData(fid,prefix,'object',self,'fieldname','stress_threshold_floatingice','format','DoubleMat','mattype',1);60 WriteData(fid,prefix,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts);61 end % }}}62 end63 end -
../trunk-jpl/src/m/classes/calvingvonmises.m
1 %CALVINGVONMISES class definition 2 % 3 % Usage: 4 % calvingvonmises=calvingvonmises(); 5 6 classdef calvingvonmises 7 properties (SetAccess=public) 8 stress_threshold_groundedice = 0.; 9 stress_threshold_floatingice = 0.; 10 meltingrate = NaN; 11 end 12 methods 13 function self = calvingvonmises(varargin) % {{{ 14 switch nargin 15 case 0 16 self=setdefaultparameters(self); 17 case 1 18 inputstruct=varargin{1}; 19 list1 = properties('calvingvonmises'); 20 list2 = fieldnames(inputstruct); 21 for i=1:length(list1) 22 fieldname = list1{i}; 23 if ismember(fieldname,list2), 24 self.(fieldname) = inputstruct.(fieldname); 25 end 26 end 27 otherwise 28 error('constructor not supported'); 29 end 30 end % }}} 31 function self = extrude(self,md) % {{{ 32 self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node'); 33 end % }}} 34 function self = setdefaultparameters(self) % {{{ 35 36 %Default sigma max 37 self.stress_threshold_groundedice = 1e6; 38 self.stress_threshold_floatingice = 150e3; 39 end % }}} 40 function md = checkconsistency(self,md,solution,analyses) % {{{ 41 %Early return 42 if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end 43 44 md = checkfield(md,'fieldname','calving.stress_threshold_groundedice','>',0,'nan',1,'Inf',1); 45 md = checkfield(md,'fieldname','calving.stress_threshold_floatingice','>',0,'nan',1,'Inf',1); 46 md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'Inf',1,'timeseries',1,'>=',0); 47 end % }}} 48 function disp(self) % {{{ 49 disp(sprintf(' Calving VonMises parameters:')); 50 fielddisplay(self,'stress_threshold_groundedice','sigma_max applied to grounded ice only [Pa]'); 51 fielddisplay(self,'stress_threshold_floatingice','sigma_max applied to floating ice only [Pa]'); 52 fielddisplay(self,'meltingrate','melting rate at given location [m/a]'); 53 54 end % }}} 55 function marshall(self,prefix,md,fid) % {{{ 56 yts=md.constants.yts; 57 WriteData(fid,prefix,'name','md.calving.law','data',2,'format','Integer'); 58 WriteData(fid,prefix,'object',self,'fieldname','stress_threshold_groundedice','format','DoubleMat','mattype',1); 59 WriteData(fid,prefix,'object',self,'fieldname','stress_threshold_floatingice','format','DoubleMat','mattype',1); 60 WriteData(fid,prefix,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts); 61 end % }}} 62 end 63 end -
../trunk-jpl/test/NightlyRun/test540.m
8 8 9 9 %calving parameters 10 10 md.mask.ice_levelset = 1e4*(md.mask.ice_levelset + 0.5); 11 md.calving=calving dev();11 md.calving=calvingvonmises(); 12 12 md.calving.meltingrate = zeros(md.mesh.numberofvertices,1); 13 13 md.transient.ismovingfront = 1; 14 14 md.levelset.spclevelset = NaN(md.mesh.numberofvertices,1);
Note:
See TracBrowser
for help on using the repository browser.