source: issm/oecreview/Archive/21724-22754/ISSM-22191-22192.diff@ 22755

Last change on this file since 22755 was 22755, checked in by Mathieu Morlighem, 7 years ago

CHG: added 21724-22754

File size: 13.9 KB
RevLine 
[22755]1Index: ../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");
18Index: ../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 /*}}}*/
36Index: ../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);
49Index: ../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
62Index: ../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);
75Index: ../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*/
99Index: ../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;
112Index: ../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];*/
125Index: ../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);
138Index: ../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);
178Index: ../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
246Index: ../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
314Index: ../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);
Note: See TracBrowser for help on using the repository browser.