source: issm/oecreview/Archive/26740-27031/ISSM-27030-27031.diff@ 27032

Last change on this file since 27032 was 27032, checked in by Mathieu Morlighem, 3 years ago

CHG: added 26740-27031

File size: 175.2 KB
RevLine 
[27032]1Index: ../trunk-jpl/src/m/boundaryconditions/SetMLHOBC.py
2===================================================================
3--- ../trunk-jpl/src/m/boundaryconditions/SetMLHOBC.py (revision 27030)
4+++ ../trunk-jpl/src/m/boundaryconditions/SetMLHOBC.py (nonexistent)
5@@ -1,22 +0,0 @@
6-import numpy as np
7-
8-
9-def SetMLHOBC(md):
10- """
11- SETMLHOBC - Create the boundary conditions for stressbalance for MLHO: VxBase, VyBase, VxShear, VyShear
12-
13- Usage:
14- md = SetIceShelfBC(md, varargin)
15-
16- Example:
17- md = SetIceShelfBC(md)
18-
19- """
20-
21- #node on Dirichlet (boundary and ~icefront)
22- md.stressbalance.spcvx_base = md.stressbalance.spcvx
23- md.stressbalance.spcvy_base = md.stressbalance.spcvy
24- md.stressbalance.spcvx_shear = np.nan * md.stressbalance.spcvx
25- md.stressbalance.spcvy_shear = np.nan * md.stressbalance.spcvy
26-
27- return md
28Index: ../trunk-jpl/src/m/boundaryconditions/SetMLHOBC.m
29===================================================================
30--- ../trunk-jpl/src/m/boundaryconditions/SetMLHOBC.m (revision 27030)
31+++ ../trunk-jpl/src/m/boundaryconditions/SetMLHOBC.m (nonexistent)
32@@ -1,16 +0,0 @@
33-function md=SetMLHOBC(md)
34-%SETMLHOBC - Create the boundary conditions for stressbalance for MLHO: VxBase, VyBase, VxShear, VyShear
35-%
36-% Usage:
37-% md=SetMLHOBC(md)
38-%
39-
40-
41-%node on Dirichlet
42-if md.flowequation.isMLHO
43- md.stressbalance.spcvx_base=md.stressbalance.spcvx;
44- md.stressbalance.spcvy_base=md.stressbalance.spcvy;
45-
46- md.stressbalance.spcvx_shear=NaN*ones(size(md.stressbalance.spcvx_base));
47- md.stressbalance.spcvy_shear=NaN*ones(size(md.stressbalance.spcvy_base));
48-end
49Index: ../trunk-jpl/src/m/classes/flowequation.m
50===================================================================
51--- ../trunk-jpl/src/m/classes/flowequation.m (revision 27030)
52+++ ../trunk-jpl/src/m/classes/flowequation.m (revision 27031)
53@@ -8,7 +8,7 @@
54 isSIA = 0;
55 isSSA = 0;
56 isL1L2 = 0;
57- isMLHO = 0;
58+ isMOLHO = 0;
59 isHO = 0;
60 isFS = 0;
61 isNitscheBC = 0;
62@@ -59,13 +59,14 @@
63 if isfield(objstruct,'bordermacayeal'),self.borderSSA = objstruct.bordermacayeal; end;
64 if isfield(objstruct,'borderpattyn'), self.borderHO = objstruct.borderpattyn; end;
65 if isfield(objstruct,'borderstokes'), self.borderFS = objstruct.borderstokes; end;
66- end
67
68- %Nov 6 2021
69- if any(self.vertex_equation==4)
70- disp(['Monolayer Higher-Order (MLHO) detected in md.flowequation, this is still under development. Please double check your settings.']);
71+ %May 31 2022
72+ if isfield(objstruct,'isMLHO')
73+ self.isMOLHO = objstruct.isMLHO;
74+ end
75 end
76
77+
78 end% }}}
79 end
80 methods
81@@ -103,7 +104,7 @@
82 md = checkfield(md,'fieldname','flowequation.isSIA','numel',[1],'values',[0 1]);
83 md = checkfield(md,'fieldname','flowequation.isSSA','numel',[1],'values',[0 1]);
84 md = checkfield(md,'fieldname','flowequation.isL1L2','numel',[1],'values',[0 1]);
85- md = checkfield(md,'fieldname','flowequation.isMLHO','numel',[1],'values',[0 1]);
86+ md = checkfield(md,'fieldname','flowequation.isMOLHO','numel',[1],'values',[0 1]);
87 md = checkfield(md,'fieldname','flowequation.isHO','numel',[1],'values',[0 1]);
88 md = checkfield(md,'fieldname','flowequation.isFS','numel',[1],'values',[0 1]);
89 md = checkfield(md,'fieldname','flowequation.isNitscheBC','numel',[1],'values',[0 1]);
90@@ -134,7 +135,7 @@
91 else
92 error('Case not supported yet');
93 end
94- if ~(self.isSIA || self.isSSA || self.isL1L2 || self.isMLHO || self.isHO || self.isFS),
95+ if ~(self.isSIA || self.isSSA || self.isL1L2 || self.isMOLHO || self.isHO || self.isFS),
96 md = checkmessage(md,['no element types set for this model']);
97 end
98 if ismember('StressbalanceSIAAnalysis',analyses),
99@@ -152,7 +153,7 @@
100 fielddisplay(self,'isSIA','is the Shallow Ice Approximation (SIA) used?');
101 fielddisplay(self,'isSSA','is the Shelfy-Stream Approximation (SSA) used?');
102 fielddisplay(self,'isL1L2','is the L1L2 approximation used?');
103- fielddisplay(self,'isMLHO','is the Mono-Layer Higher-Order approximation used?');
104+ fielddisplay(self,'isMOLHO','is the MOno-Layer Higher-Order (MOLHO) approximation used?');
105 fielddisplay(self,'isHO','is the Higher-Order (HO) approximation used?');
106 fielddisplay(self,'isFS','are the Full-FS (FS) equations used?');
107 fielddisplay(self,'isNitscheBC','is weakly imposed condition used?');
108@@ -171,7 +172,7 @@
109 WriteData(fid,prefix,'object',self,'fieldname','isSIA','format','Boolean');
110 WriteData(fid,prefix,'object',self,'fieldname','isSSA','format','Boolean');
111 WriteData(fid,prefix,'object',self,'fieldname','isL1L2','format','Boolean');
112- WriteData(fid,prefix,'object',self,'fieldname','isMLHO','format','Boolean');
113+ WriteData(fid,prefix,'object',self,'fieldname','isMOLHO','format','Boolean');
114 WriteData(fid,prefix,'object',self,'fieldname','isHO','format','Boolean');
115 WriteData(fid,prefix,'object',self,'fieldname','isFS','format','Boolean');
116 WriteData(fid,prefix,'object',self,'fieldname','isNitscheBC','format','Boolean');
117@@ -196,7 +197,7 @@
118 writejsdouble(fid,[modelname '.flowequation.isSIA'],self.isSIA);
119 writejsdouble(fid,[modelname '.flowequation.isSSA'],self.isSSA);
120 writejsdouble(fid,[modelname '.flowequation.isL1L2'],self.isL1L2);
121- writejsdouble(fid,[modelname '.flowequation.isMLHO'],self.isMLHO);
122+ writejsdouble(fid,[modelname '.flowequation.isMOLHO'],self.isMOLHO);
123 writejsdouble(fid,[modelname '.flowequation.isHO'],self.isHO);
124 writejsdouble(fid,[modelname '.flowequation.isFS'],self.isFS);
125 writejsstring(fid,[modelname '.flowequation.isNitscheBC'],self.isNitscheBC);
126Index: ../trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp
127===================================================================
128--- ../trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp (revision 27030)
129+++ ../trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp (revision 27031)
130@@ -51,10 +51,10 @@
131 return CreateKMatrixHO(element);
132 case FSApproximationEnum:
133 return CreateKMatrixFS(element);
134- case MLHOApproximationEnum:
135+ case MOLHOApproximationEnum:
136 // a more accurate option, but integrate in the vertical direction numerically.
137- // return CreateKMatrixMLHOVerticalIntergrated(element);
138- return CreateKMatrixMLHO(element);
139+ // return CreateKMatrixMOLHOVerticalIntergrated(element);
140+ return CreateKMatrixMOLHO(element);
141 case NoneApproximationEnum:
142 return NULL;
143 default:
144@@ -219,7 +219,7 @@
145 xDelete<IssmDouble>(xyz_list);
146 return Ke;
147 }/*}}}*/
148-ElementMatrix* AdjointHorizAnalysis::CreateKMatrixMLHO(Element* element){/*{{{*/
149+ElementMatrix* AdjointHorizAnalysis::CreateKMatrixMOLHO(Element* element){/*{{{*/
150
151 /* Check if ice in element */
152 if(!element->IsIceInElement()) return NULL;
153@@ -291,7 +291,7 @@
154 vxshear_input->GetInputValue(&vxshear,gauss);
155 vyshear_input->GetInputValue(&vyshear,gauss);
156
157- element->material->ViscosityMLHOAdjoint(&viscosity[0],dim,xyz_list,gauss,vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input);
158+ element->material->ViscosityMOLHOAdjoint(&viscosity[0],dim,xyz_list,gauss,vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input);
159
160 effmu = 2.0*(1-n)/2.0/n;
161
162@@ -352,7 +352,7 @@
163 xDelete<IssmDouble>(basis);
164 return Ke;
165 }/*}}}*/
166-ElementMatrix* AdjointHorizAnalysis::CreateKMatrixMLHOVerticalIntergrated(Element* element){/*{{{*/
167+ElementMatrix* AdjointHorizAnalysis::CreateKMatrixMOLHOVerticalIntergrated(Element* element){/*{{{*/
168
169 /* Check if ice in element */
170 if(!element->IsIceInElement()) return NULL;
171@@ -432,7 +432,7 @@
172 zeta=0.5*(gauss_seg->coord1+1);
173
174 /* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy (for a given zeta)*/
175- element->StrainRateMLHO(&epsilon[0],xyz_list,gauss,
176+ element->StrainRateMOLHO(&epsilon[0],xyz_list,gauss,
177 vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input,zeta);
178 epsilon_eff=sqrt(epsilon[0]*epsilon[0] + epsilon[1]*epsilon[1] + epsilon[2]*epsilon[2]
179 + epsilon[3]*epsilon[3] + epsilon[4]*epsilon[4] + epsilon[0]*epsilon[1]);
180@@ -617,8 +617,8 @@
181 return CreatePVectorHO(element);
182 case FSApproximationEnum:
183 return CreatePVectorFS(element);
184- case MLHOApproximationEnum:
185- return CreatePVectorMLHO(element);
186+ case MOLHOApproximationEnum:
187+ return CreatePVectorMOLHO(element);
188 case NoneApproximationEnum:
189 return NULL;
190 default:
191@@ -1104,7 +1104,7 @@
192 return pe;
193
194 }/*}}}*/
195-ElementVector* AdjointHorizAnalysis::CreatePVectorMLHO(Element* element){/*{{{*/
196+ElementVector* AdjointHorizAnalysis::CreatePVectorMOLHO(Element* element){/*{{{*/
197
198 /*Intermediaries*/
199 int domaintype;
200@@ -1142,7 +1142,7 @@
201 int numnodes = basalelement->GetNumberOfNodes();
202
203 /*Initialize Element vector and vectors*/
204- ElementVector* pe = basalelement->NewElementVector(MLHOApproximationEnum);
205+ ElementVector* pe = basalelement->NewElementVector(MOLHOApproximationEnum);
206 IssmDouble* basis = xNew<IssmDouble>(numnodes);
207
208 /*Retrieve all inputs and parameters*/
209@@ -1211,7 +1211,7 @@
210 pe->values[i*4+3]+=duy*weight*Jdet*gauss->weight*basis[i];
211 }
212 else {
213- _error_("2D vertical is not implemented for MLHO");
214+ _error_("2D vertical is not implemented for MOLHO");
215 }
216 }
217 break;
218@@ -1239,7 +1239,7 @@
219 pe->values[i*4+3]+=duy*weight*Jdet*gauss->weight*basis[i];
220 }
221 else{
222- _error_("2D vertical is not implemented for MLHO");
223+ _error_("2D vertical is not implemented for MOLHO");
224 }
225 }
226 break;
227@@ -1268,7 +1268,7 @@
228 pe->values[i*4+3]+=duy*weight*Jdet*gauss->weight*basis[i];
229 }
230 else{
231- _error_("2D vertical is not implemented for MLHO");
232+ _error_("2D vertical is not implemented for MOLHO");
233 }
234 }
235 break;
236@@ -1294,7 +1294,7 @@
237 pe->values[i*4+3]+=duy*weight*Jdet*gauss->weight*basis[i];
238 }
239 else{
240- _error_("2D vertical is not implemented for MLHO");
241+ _error_("2D vertical is not implemented for MOLHO");
242 }
243 }
244 break;
245@@ -1318,7 +1318,7 @@
246 pe->values[i*4+3]+=duy*weight*Jdet*gauss->weight*basis[i];
247 }
248 else{
249- _error_("2D vertical is not implemented for MLHO");
250+ _error_("2D vertical is not implemented for MOLHO");
251 }
252 }
253 break;
254@@ -1668,7 +1668,7 @@
255 case SSAApproximationEnum: GradientJDragSSA(element,gradient,control_interp,control_index); break;
256 case L1L2ApproximationEnum:GradientJDragL1L2(element,gradient,control_interp,control_index); break;
257 case HOApproximationEnum: GradientJDragHO( element,gradient,control_interp,control_index); break;
258- case MLHOApproximationEnum: GradientJDragMLHO( element,gradient,control_interp,control_index); break;
259+ case MOLHOApproximationEnum: GradientJDragMOLHO( element,gradient,control_interp,control_index); break;
260 case FSApproximationEnum: GradientJDragFS( element,gradient,control_interp,control_index); break;
261 case NoneApproximationEnum: /*Gradient is 0*/ break;
262 default: _error_("approximation " << EnumToStringx(approximation) << " not supported yet");
263@@ -1689,7 +1689,7 @@
264 case SSAApproximationEnum: GradientJBbarSSA(element,gradient,control_interp,control_index); break;
265 case L1L2ApproximationEnum:GradientJBbarL1L2(element,gradient,control_interp,control_index); break;
266 case HOApproximationEnum: GradientJBbarHO( element,gradient,control_interp,control_index); break;
267- case MLHOApproximationEnum: GradientJBbarMLHO( element,gradient,control_interp,control_index); break;
268+ case MOLHOApproximationEnum: GradientJBbarMOLHO( element,gradient,control_interp,control_index); break;
269 case FSApproximationEnum: GradientJBbarFS( element,gradient,control_interp,control_index); break;
270 case NoneApproximationEnum: /*Gradient is 0*/ break;
271 default: _error_("approximation " << EnumToStringx(approximation) << " not supported yet");
272@@ -1699,7 +1699,7 @@
273 switch(approximation){
274 case SSAApproximationEnum: GradientJBSSA(element,gradient,control_interp,control_index); break;
275 case HOApproximationEnum: GradientJBHO( element,gradient,control_interp,control_index); break;
276- // case MLHOApproximationEnum: GradientJBMLHO( element,gradient,control_interp,control_index); break;
277+ // case MOLHOApproximationEnum: GradientJBMOLHO( element,gradient,control_interp,control_index); break;
278 case FSApproximationEnum: GradientJBFS( element,gradient,control_interp,control_index); break;
279 case NoneApproximationEnum: /*Gradient is 0*/ break;
280 default: _error_("approximation " << EnumToStringx(approximation) << " not supported yet");
281@@ -1809,7 +1809,7 @@
282 /*WARNING: We use SSA as an estimate for now*/
283 this->GradientJBbarSSA(element,gradient,control_interp,control_index);
284 }/*}}}*/
285-void AdjointHorizAnalysis::GradientJBbarMLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
286+void AdjointHorizAnalysis::GradientJBbarMOLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
287
288 if(control_interp!=P1Enum) _error_("not implemented yet...");
289 /*Intermediaries*/
290@@ -1892,10 +1892,10 @@
291 while(gauss_seg->next()){
292 zeta=0.5*(gauss_seg->coord1+1);
293
294- basalelement->StrainRateMLHO(&epsilon[0],xyz_list,gauss,
295+ basalelement->StrainRateMOLHO(&epsilon[0],xyz_list,gauss,
296 vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input,zeta);
297
298- basalelement->dViscositydBMLHO(&dmudB,dim,xyz_list,gauss,vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input,zeta);
299+ basalelement->dViscositydBMOLHO(&dmudB,dim,xyz_list,gauss,vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input,zeta);
300
301 e1[0] = 2.0*epsilon[0]+epsilon[1];
302 e1[1] = epsilon[2];
303@@ -2250,7 +2250,7 @@
304 xDelete<int>(vertexpidlist);
305 delete gauss;
306 }/*}}}*/
307-void AdjointHorizAnalysis::GradientJBMLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
308+void AdjointHorizAnalysis::GradientJBMOLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
309 _error_("not implemented yet...");
310 }/*}}}*/
311 void AdjointHorizAnalysis::GradientJBSSA(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
312@@ -2650,7 +2650,7 @@
313 delete gauss;
314 delete friction;
315 }/*}}}*/
316-void AdjointHorizAnalysis::GradientJDragMLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
317+void AdjointHorizAnalysis::GradientJDragMOLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
318
319 /*return if floating (gradient is 0)*/
320 if(element->IsAllFloating()) return;
321@@ -3271,8 +3271,8 @@
322 if(approximation==FSApproximationEnum || approximation==NoneApproximationEnum){
323 InputUpdateFromSolutionFS(solution,element);
324 }
325- else if (approximation==MLHOApproximationEnum) {
326- InputUpdateFromSolutionMLHO(solution, element);
327+ else if (approximation==MOLHOApproximationEnum) {
328+ InputUpdateFromSolutionMOLHO(solution, element);
329 }
330 else{
331 InputUpdateFromSolutionHoriz(solution,element);
332@@ -3419,7 +3419,7 @@
333 xDelete<IssmDouble>(lambday);
334 xDelete<int>(doflist);
335 }/*}}}*/
336-void AdjointHorizAnalysis::InputUpdateFromSolutionMLHO(IssmDouble* solution,Element* element){/*{{{*/
337+void AdjointHorizAnalysis::InputUpdateFromSolutionMOLHO(IssmDouble* solution,Element* element){/*{{{*/
338 int i;
339 int* doflist=NULL;
340
341@@ -3432,7 +3432,7 @@
342 int numdof = numnodes * 4;
343
344 /*Fetch dof list and allocate solution vectors*/
345- element->GetDofListLocal(&doflist,MLHOApproximationEnum,GsetEnum);
346+ element->GetDofListLocal(&doflist,MOLHOApproximationEnum,GsetEnum);
347 IssmDouble* values = xNew<IssmDouble>(numdof);
348 IssmDouble* lambdax = xNew<IssmDouble>(numnodes);
349 IssmDouble* lambday = xNew<IssmDouble>(numnodes);
350Index: ../trunk-jpl/src/c/analyses/AdjointHorizAnalysis.h
351===================================================================
352--- ../trunk-jpl/src/c/analyses/AdjointHorizAnalysis.h (revision 27030)
353+++ ../trunk-jpl/src/c/analyses/AdjointHorizAnalysis.h (revision 27031)
354@@ -27,8 +27,8 @@
355 ElementMatrix* CreateKMatrix(Element* element);
356 ElementMatrix* CreateKMatrixFS(Element* element);
357 ElementMatrix* CreateKMatrixHO(Element* element);
358- ElementMatrix* CreateKMatrixMLHO(Element* element);
359- ElementMatrix* CreateKMatrixMLHOVerticalIntergrated(Element* element);
360+ ElementMatrix* CreateKMatrixMOLHO(Element* element);
361+ ElementMatrix* CreateKMatrixMOLHOVerticalIntergrated(Element* element);
362 ElementMatrix* CreateKMatrixL1L2(Element* element);
363 ElementMatrix* CreateKMatrixSSA(Element* element);
364 ElementVector* CreatePVector(Element* element);
365@@ -35,7 +35,7 @@
366 ElementVector* CreatePVectorFS(Element* element);
367 ElementVector* CreatePVectorL1L2(Element* element);
368 ElementVector* CreatePVectorHO(Element* element);
369- ElementVector* CreatePVectorMLHO(Element* element);
370+ ElementVector* CreatePVectorMOLHO(Element* element);
371 ElementVector* CreatePVectorSSA(Element* element);
372 void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
373 void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_interp,int control_index);
374@@ -44,18 +44,18 @@
375 void GradientJBinitial(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
376 void GradientJBbarL1L2(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
377 void GradientJBbarHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
378- void GradientJBbarMLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
379+ void GradientJBbarMOLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
380 void GradientJBbarSSA(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
381 void GradientJBFS(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
382 void GradientJBGradient(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
383 void GradientJBHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
384- void GradientJBMLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
385+ void GradientJBMOLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
386 void GradientJBSSA(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
387 void GradientJDragFS(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
388 void GradientJDragGradient(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
389 void GradientJDragL1L2(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
390 void GradientJDragHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
391- void GradientJDragMLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
392+ void GradientJDragMOLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
393 void GradientJDragSSA(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
394 void GradientJDragHydroFS(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
395 void GradientJDragHydroL1L2(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
396@@ -65,7 +65,7 @@
397 void InputUpdateFromSolution(IssmDouble* solution,Element* element);
398 void InputUpdateFromSolutionFS(IssmDouble* solution,Element* element);
399 void InputUpdateFromSolutionHoriz(IssmDouble* solution,Element* element);
400- void InputUpdateFromSolutionMLHO(IssmDouble* solution,Element* element);
401+ void InputUpdateFromSolutionMOLHO(IssmDouble* solution,Element* element);
402 void UpdateConstraints(FemModel* femmodel);
403 };
404 #endif
405Index: ../trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
406===================================================================
407--- ../trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp (revision 27030)
408+++ ../trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp (revision 27031)
409@@ -30,7 +30,7 @@
410 IssmDouble g;
411 IssmDouble rho_ice;
412 IssmDouble FSreconditioning;
413- bool isSIA,isSSA,isL1L2,isMLHO,isHO,isFS,iscoupling;
414+ bool isSIA,isSSA,isL1L2,isMOLHO,isHO,isFS,iscoupling;
415 bool spcpresent = false;
416 int Mx,Nx;
417 int My,Ny;
418@@ -58,15 +58,15 @@
419 iomodel->FindConstant(&isSIA,"md.flowequation.isSIA");
420 iomodel->FindConstant(&isSSA,"md.flowequation.isSSA");
421 iomodel->FindConstant(&isL1L2,"md.flowequation.isL1L2");
422- iomodel->FindConstant(&isMLHO,"md.flowequation.isMLHO");
423+ iomodel->FindConstant(&isMOLHO,"md.flowequation.isMOLHO");
424 iomodel->FindConstant(&isHO,"md.flowequation.isHO");
425 iomodel->FindConstant(&isFS,"md.flowequation.isFS");
426
427 /*Is this model only SIA??*/
428- if(!isSSA && !isHO && !isFS && !isL1L2 && !isMLHO) return;
429+ if(!isSSA && !isHO && !isFS && !isL1L2 && !isMOLHO) return;
430
431 /*Do we have coupling*/
432- if((isSIA?1.:0.) + (isSSA?1.:0.) + (isL1L2?1.:0.) + (isMLHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)
433+ if((isSIA?1.:0.) + (isSSA?1.:0.) + (isL1L2?1.:0.) + (isMOLHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)
434 iscoupling = true;
435 else
436 iscoupling = false;
437@@ -77,7 +77,7 @@
438 /*Get finite element type*/
439 if(isSSA) iomodel->FindConstant(&finiteelement,"md.flowequation.fe_SSA");
440 else if(isL1L2) finiteelement = P1Enum;
441- else if(isMLHO) finiteelement = P1Enum;
442+ else if(isMOLHO) finiteelement = P1Enum;
443 else if(isHO) iomodel->FindConstant(&finiteelement,"md.flowequation.fe_HO");
444 else if(isFS){ iomodel->FindConstant(&finiteelement,"md.flowequation.fe_FS");
445 /*Deduce velocity interpolation from finite element*/
446@@ -187,13 +187,13 @@
447 iomodel->DeleteData(z,"md.mesh.z");
448 }
449 else{
450- if(!isMLHO){
451+ if(!isMOLHO){
452 IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvx",StressbalanceAnalysisEnum,finiteelement,0);
453 if(iomodel->domaintype!=Domain2DverticalEnum){
454 IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvy",StressbalanceAnalysisEnum,finiteelement,1);
455 }
456 }
457- else{//MLHO
458+ else{//MOLHO
459 IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvx_base",StressbalanceAnalysisEnum,finiteelement,0);
460 IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvx_shear",StressbalanceAnalysisEnum,finiteelement,1);
461 IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvy_base",StressbalanceAnalysisEnum,finiteelement,2);
462@@ -461,7 +461,7 @@
463 int i;
464 int count;
465 int penpair_ids[2];
466- bool isSSA,isL1L2,isMLHO,isHO,isFS;
467+ bool isSSA,isL1L2,isMOLHO,isHO,isFS;
468 int numpenalties,numrifts,numriftsegments;
469 IssmDouble *riftinfo = NULL;
470 IssmDouble *penalties = NULL;
471@@ -469,7 +469,7 @@
472
473 /*Fetch parameters: */
474 iomodel->FindConstant(&isL1L2,"md.flowequation.isL1L2");
475- iomodel->FindConstant(&isMLHO,"md.flowequation.isMLHO");
476+ iomodel->FindConstant(&isMOLHO,"md.flowequation.isMOLHO");
477 iomodel->FindConstant(&isFS,"md.flowequation.isFS");
478 iomodel->FindConstant(&isSSA,"md.flowequation.isSSA");
479 iomodel->FindConstant(&isHO,"md.flowequation.isHO");
480@@ -476,7 +476,7 @@
481 iomodel->FindConstant(&numrifts,"md.rifts.numrifts");
482
483 /*Is this SIA only?*/
484- if(!isSSA && !isHO && !isFS && !isL1L2 && !isMLHO) return;
485+ if(!isSSA && !isHO && !isFS && !isL1L2 && !isMOLHO) return;
486
487 /*Initialize counter: */
488 count=0;
489@@ -521,21 +521,21 @@
490 void StressbalanceAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
491
492 /*Intermediary*/
493- bool isSSA,isL1L2,isMLHO,isHO,isFS,iscoupling;
494+ bool isSSA,isL1L2,isMOLHO,isHO,isFS,iscoupling;
495 int finiteelement=-1,approximation=-1;
496
497 /*Fetch parameters: */
498 iomodel->FindConstant(&isSSA,"md.flowequation.isSSA");
499 iomodel->FindConstant(&isL1L2,"md.flowequation.isL1L2");
500- iomodel->FindConstant(&isMLHO,"md.flowequation.isMLHO");
501+ iomodel->FindConstant(&isMOLHO,"md.flowequation.isMOLHO");
502 iomodel->FindConstant(&isHO,"md.flowequation.isHO");
503 iomodel->FindConstant(&isFS,"md.flowequation.isFS");
504
505 /*Now, check that we have non SIA elements */
506- if(!isSSA && !isL1L2 && !isMLHO && !isHO && !isFS) return;
507+ if(!isSSA && !isL1L2 && !isMOLHO && !isHO && !isFS) return;
508
509 /*Do we have coupling*/
510- if( (isSSA?1.:0.) + (isL1L2?1.:0.) + (isMLHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)
511+ if( (isSSA?1.:0.) + (isL1L2?1.:0.) + (isMOLHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)
512 iscoupling = true;
513 else
514 iscoupling = false;
515@@ -552,8 +552,8 @@
516 approximation = L1L2ApproximationEnum;
517 finiteelement = P1Enum;
518 }
519- else if(isMLHO){
520- approximation = MLHOApproximationEnum;
521+ else if(isMOLHO){
522+ approximation = MOLHOApproximationEnum;
523 finiteelement = P1Enum;
524 }
525 else if(isHO){
526@@ -629,7 +629,7 @@
527 }
528 break;
529 case L1L2ApproximationEnum: numdofs = 2; break;
530- case MLHOApproximationEnum: numdofs = 4; break;
531+ case MOLHOApproximationEnum: numdofs = 4; break;
532 case HOApproximationEnum:
533 switch(domaintype){
534 case Domain3DEnum: numdofs=2; break;
535@@ -694,7 +694,7 @@
536 int approximation,frictionlaw;
537 int FrictionCoupling;
538 int* finiteelement_list=NULL;
539- bool isSSA,isL1L2,isMLHO,isHO,isFS,iscoupling;
540+ bool isSSA,isL1L2,isMOLHO,isHO,isFS,iscoupling;
541 bool control_analysis;
542 bool dakota_analysis;
543 bool ismovingfront;
544@@ -702,7 +702,7 @@
545 /*Fetch constants needed: */
546 iomodel->FindConstant(&isSSA,"md.flowequation.isSSA");
547 iomodel->FindConstant(&isL1L2,"md.flowequation.isL1L2");
548- iomodel->FindConstant(&isMLHO,"md.flowequation.isMLHO");
549+ iomodel->FindConstant(&isMOLHO,"md.flowequation.isMOLHO");
550 iomodel->FindConstant(&isHO,"md.flowequation.isHO");
551 iomodel->FindConstant(&isFS,"md.flowequation.isFS");
552 iomodel->FindConstant(&control_analysis,"md.inversion.iscontrol");
553@@ -712,7 +712,7 @@
554 iomodel->FindConstant(&frictionlaw,"md.friction.law");
555
556 /*return if no processing required*/
557- if(!isSSA && !isL1L2 && !isMLHO && !isHO && !isFS) return;
558+ if(!isSSA && !isL1L2 && !isMOLHO && !isHO && !isFS) return;
559
560 /*Fetch data needed and allocate vectors: */
561 iomodel->FetchData(1,"md.flowequation.element_equation");
562@@ -719,7 +719,7 @@
563 finiteelement_list=xNewZeroInit<int>(iomodel->numberofelements);
564
565 /*Do we have coupling*/
566- if( (isSSA?1.:0.) + (isL1L2?1.:0.) + (isMLHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)
567+ if( (isSSA?1.:0.) + (isL1L2?1.:0.) + (isMOLHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)
568 iscoupling = true;
569 else
570 iscoupling = false;
571@@ -728,7 +728,7 @@
572 if(!iscoupling){
573 if(isSSA) iomodel->FindConstant(&finiteelement,"md.flowequation.fe_SSA");
574 else if(isL1L2) finiteelement = P1Enum;
575- else if(isMLHO) finiteelement = P1Enum;
576+ else if(isMOLHO) finiteelement = P1Enum;
577 else if(isHO) iomodel->FindConstant(&finiteelement,"md.flowequation.fe_HO");
578 else if(isFS) iomodel->FindConstant(&finiteelement,"md.flowequation.fe_FS");
579 for(int i=0;i<iomodel->numberofelements;i++){
580@@ -780,11 +780,11 @@
581 iomodel->FetchDataToInput(inputs,elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum);
582 iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxEnum,0.);
583 iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyEnum,0.);
584- /*MLHO*/
585- if(isMLHO){
586+ /*MOLHO*/
587+ if(isMOLHO){
588 iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxShearEnum,0.);
589 iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyShearEnum,0.);
590- /*3D MLHO also need to have VxBase and VyBase for reconstruting Vx and Vy*/
591+ /*3D MOLHO also need to have VxBase and VyBase for reconstruting Vx and Vy*/
592 if (iomodel->domaintype==Domain3DEnum) {
593 iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxBaseEnum,0.);
594 iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyBaseEnum,0.);
595@@ -989,7 +989,7 @@
596 parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isSIA",FlowequationIsSIAEnum));
597 parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isSSA",FlowequationIsSSAEnum));
598 parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isL1L2",FlowequationIsL1L2Enum));
599- parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isMLHO",FlowequationIsMLHOEnum));
600+ parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isMOLHO",FlowequationIsMOLHOEnum));
601 parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isHO",FlowequationIsHOEnum));
602 parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isFS",FlowequationIsFSEnum));
603 parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.fe_FS",FlowequationFeFSEnum));
604@@ -1092,7 +1092,7 @@
605 void StressbalanceAnalysis::Core(FemModel* femmodel){/*{{{*/
606
607 /*Intermediaries*/
608- bool isSSA,isL1L2,isMLHO,isHO,isFS;
609+ bool isSSA,isL1L2,isMOLHO,isHO,isFS;
610 bool conserve_loads = true;
611 int newton,domaintype,fe_FS;
612
613@@ -1099,7 +1099,7 @@
614 /* recover parameters:*/
615 femmodel->parameters->FindParam(&isSSA,FlowequationIsSSAEnum);
616 femmodel->parameters->FindParam(&isL1L2,FlowequationIsL1L2Enum);
617- femmodel->parameters->FindParam(&isMLHO,FlowequationIsMLHOEnum);
618+ femmodel->parameters->FindParam(&isMOLHO,FlowequationIsMOLHOEnum);
619 femmodel->parameters->FindParam(&isHO,FlowequationIsHOEnum);
620 femmodel->parameters->FindParam(&isFS,FlowequationIsFSEnum);
621 femmodel->parameters->FindParam(&fe_FS,FlowequationFeFSEnum);
622@@ -1106,7 +1106,7 @@
623 femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
624 femmodel->parameters->FindParam(&newton,StressbalanceIsnewtonEnum);
625
626- if(isFS && !(isSSA || isHO || isL1L2 || isMLHO)){
627+ if(isFS && !(isSSA || isHO || isL1L2 || isMOLHO)){
628 femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum);
629
630 bool is_schur_cg_solver = false;
631@@ -1128,7 +1128,7 @@
632 else
633 solutionsequence_nonlinear(femmodel,conserve_loads);
634 }
635- else if(!isFS && (isSSA || isHO || isL1L2 || isMLHO)){
636+ else if(!isFS && (isSSA || isHO || isL1L2 || isMOLHO)){
637 femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum);
638 if(newton>0)
639 solutionsequence_newton(femmodel);
640@@ -1142,7 +1142,7 @@
641 extrudefrombase_core(femmodel);
642 }
643 }
644- else if ((isSSA || isL1L2 || isMLHO || isHO) && isFS){
645+ else if ((isSSA || isL1L2 || isMOLHO || isHO) && isFS){
646 if(VerboseSolution()) _printf0_(" computing coupling between lower order models and FS\n");
647 solutionsequence_FScoupling_nonlinear(femmodel,conserve_loads);
648 }
649@@ -1194,8 +1194,8 @@
650 return CreateKMatrixSSA(element);
651 case L1L2ApproximationEnum:
652 return CreateKMatrixL1L2(element);
653- case MLHOApproximationEnum:
654- return CreateKMatrixMLHO(element);
655+ case MOLHOApproximationEnum:
656+ return CreateKMatrixMOLHO(element);
657 case HOApproximationEnum:
658 return CreateKMatrixHO(element);
659 case FSApproximationEnum:
660@@ -1223,8 +1223,8 @@
661 return CreatePVectorSSA(element);
662 case L1L2ApproximationEnum:
663 return CreatePVectorL1L2(element);
664- case MLHOApproximationEnum:
665- return CreatePVectorMLHO(element);
666+ case MOLHOApproximationEnum:
667+ return CreatePVectorMOLHO(element);
668 case HOApproximationEnum:
669 return CreatePVectorHO(element);
670 case FSApproximationEnum:
671@@ -1252,8 +1252,8 @@
672 case SSAApproximationEnum: case HOApproximationEnum: case L1L2ApproximationEnum: case SIAApproximationEnum:
673 GetSolutionFromInputsHoriz(solution,element);
674 return;
675- case MLHOApproximationEnum:
676- GetSolutionFromInputsMLHO(solution,element);
677+ case MOLHOApproximationEnum:
678+ GetSolutionFromInputsMOLHO(solution,element);
679 return;
680 case SSAHOApproximationEnum: case HOFSApproximationEnum: case SSAFSApproximationEnum:
681 /*the elements around will create the solution*/
682@@ -1334,8 +1334,8 @@
683 case L1L2ApproximationEnum:
684 InputUpdateFromSolutionL1L2(solution,element);
685 return;
686- case MLHOApproximationEnum:
687- InputUpdateFromSolutionMLHO(solution,element);
688+ case MOLHOApproximationEnum:
689+ InputUpdateFromSolutionMOLHO(solution,element);
690 return;
691 case SSAHOApproximationEnum:
692 InputUpdateFromSolutionSSAHO(solution,element);
693@@ -2759,8 +2759,8 @@
694 if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
695 }/*}}}*/
696
697-/*MLHO*/
698-ElementMatrix* StressbalanceAnalysis::CreateKMatrixMLHO(Element* element){/*{{{*/
699+/*MOLHO*/
700+ElementMatrix* StressbalanceAnalysis::CreateKMatrixMOLHO(Element* element){/*{{{*/
701
702 /* Check if ice in element */
703 if(!element->IsIceInElement()) return NULL;
704@@ -2783,8 +2783,8 @@
705 }
706
707 /*compute all stiffness matrices for this element*/
708- ElementMatrix* Ke1=CreateKMatrixMLHOViscous(basalelement);
709- ElementMatrix* Ke2=CreateKMatrixMLHOFriction(basalelement);
710+ ElementMatrix* Ke1=CreateKMatrixMOLHOViscous(basalelement);
711+ ElementMatrix* Ke2=CreateKMatrixMOLHOFriction(basalelement);
712 ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2);
713
714 /*clean-up and return*/
715@@ -2793,7 +2793,7 @@
716 delete Ke2;
717 return Ke;
718 }/*}}}*/
719-ElementMatrix* StressbalanceAnalysis::CreateKMatrixMLHOFriction(Element* element){/*{{{*/
720+ElementMatrix* StressbalanceAnalysis::CreateKMatrixMOLHOFriction(Element* element){/*{{{*/
721
722 if(element->IsAllFloating()) return NULL;
723
724@@ -2820,7 +2820,7 @@
725 int numdof = numnodes*dim;
726
727 /*Initialize Element matrix and vectors*/
728- ElementMatrix* Ke = element->NewElementMatrix(MLHOApproximationEnum);
729+ ElementMatrix* Ke = element->NewElementMatrix(MOLHOApproximationEnum);
730 IssmDouble* basis = xNew<IssmDouble>(numnodes);
731
732 /*Retrieve all inputs and parameters*/
733@@ -2875,7 +2875,7 @@
734 xDelete<IssmDouble>(basis);
735 return Ke;
736 }/*}}}*/
737-ElementMatrix* StressbalanceAnalysis::CreateKMatrixMLHOViscous(Element* element){/*{{{*/
738+ElementMatrix* StressbalanceAnalysis::CreateKMatrixMOLHOViscous(Element* element){/*{{{*/
739
740 /* Check if ice in element */
741 if(!element->IsIceInElement()) return NULL;
742@@ -2890,7 +2890,7 @@
743 int numnodes = element->GetNumberOfNodes();
744
745 /*Initialize Element matrix and vectors*/
746- ElementMatrix* Ke = element->NewElementMatrix(MLHOApproximationEnum);
747+ ElementMatrix* Ke = element->NewElementMatrix(MOLHOApproximationEnum);
748 IssmDouble* dbasis = xNew<IssmDouble>(2*numnodes); // like SSA
749 IssmDouble* basis = xNew<IssmDouble>(numnodes); // like SSA
750
751@@ -2914,7 +2914,7 @@
752
753 thickness_input->GetInputValue(&thickness, gauss);
754 n_input->GetInputValue(&n,gauss);
755- element->material->ViscosityMLHO(&viscosity[0],dim,xyz_list,gauss,vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input);
756+ element->material->ViscosityMOLHO(&viscosity[0],dim,xyz_list,gauss,vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input);
757
758 for(int i=0;i<numnodes;i++){//shape functions on tria element
759 for(int j=0;j<numnodes;j++){
760@@ -2980,7 +2980,7 @@
761 }
762
763 /*Transform Coordinate System*/
764- //basalelement->TransformStiffnessMatrixCoord(Ke,XYMLHOEnum);
765+ //basalelement->TransformStiffnessMatrixCoord(Ke,XYMOLHOEnum);
766
767 /*Clean up and return*/
768 delete gauss;
769@@ -2989,7 +2989,7 @@
770 xDelete<IssmDouble>(basis);
771 return Ke;
772 }/*}}}*/
773-ElementVector* StressbalanceAnalysis::CreatePVectorMLHO(Element* element){/*{{{*/
774+ElementVector* StressbalanceAnalysis::CreatePVectorMOLHO(Element* element){/*{{{*/
775
776 /* Check if ice in element */
777 if(!element->IsIceInElement()) return NULL;
778@@ -3012,8 +3012,8 @@
779 }
780
781 /*compute all load vectors for this element*/
782- ElementVector* pe1=CreatePVectorMLHODrivingStress(basalelement);
783- ElementVector* pe2=CreatePVectorMLHOFront(basalelement);
784+ ElementVector* pe1=CreatePVectorMOLHODrivingStress(basalelement);
785+ ElementVector* pe2=CreatePVectorMOLHOFront(basalelement);
786 ElementVector* pe =new ElementVector(pe1,pe2);
787
788 /*clean-up and return*/
789@@ -3022,7 +3022,7 @@
790 delete pe2;
791 return pe;
792 }/*}}}*/
793-ElementVector* StressbalanceAnalysis::CreatePVectorMLHODrivingStress(Element* element){/*{{{*/
794+ElementVector* StressbalanceAnalysis::CreatePVectorMOLHODrivingStress(Element* element){/*{{{*/
795
796 /*Intermediaries */
797 IssmDouble thickness,Jdet,slope[2],n;
798@@ -3032,7 +3032,7 @@
799 int numnodes = element->GetNumberOfNodes();
800
801 /*Initialize Element vector and vectors*/
802- ElementVector* pe = element->NewElementVector(MLHOApproximationEnum);
803+ ElementVector* pe = element->NewElementVector(MOLHOApproximationEnum);
804 IssmDouble* basis = xNew<IssmDouble>(numnodes);
805
806 /*Retrieve all inputs and parameters*/
807@@ -3061,7 +3061,7 @@
808 }
809
810 /*Transform coordinate system*/
811- //element->TransformLoadVectorCoord(pe,XYMLHOEnum);
812+ //element->TransformLoadVectorCoord(pe,XYMOLHOEnum);
813
814 /*Clean up and return*/
815 xDelete<IssmDouble>(xyz_list);
816@@ -3069,7 +3069,7 @@
817 delete gauss;
818 return pe;
819 }/*}}}*/
820-ElementVector* StressbalanceAnalysis::CreatePVectorMLHOFront(Element* element){/*{{{*/
821+ElementVector* StressbalanceAnalysis::CreatePVectorMOLHOFront(Element* element){/*{{{*/
822
823 /*If no front, return NULL*/
824 if(!element->IsIcefront()) return NULL;
825@@ -3085,7 +3085,7 @@
826 int numnodes = element->GetNumberOfNodes();
827
828 /*Initialize Element vector and other vectors*/
829- ElementVector* pe = element->NewElementVector(MLHOApproximationEnum);
830+ ElementVector* pe = element->NewElementVector(MOLHOApproximationEnum);
831 IssmDouble* basis = xNew<IssmDouble>(numnodes);
832
833 /*Retrieve all inputs and parameters*/
834@@ -3134,7 +3134,7 @@
835 }
836
837 /*Transform coordinate system*/
838- //element->TransformLoadVectorCoord(pe,XYMLHOEnum);
839+ //element->TransformLoadVectorCoord(pe,XYMOLHOEnum);
840
841 /*Clean up and return*/
842 xDelete<IssmDouble>(xyz_list);
843@@ -3143,7 +3143,7 @@
844 delete gauss;
845 return pe;
846 }/*}}}*/
847-void StressbalanceAnalysis::InputUpdateFromSolutionMLHO(IssmDouble* solution,Element* element){/*{{{*/
848+void StressbalanceAnalysis::InputUpdateFromSolutionMOLHO(IssmDouble* solution,Element* element){/*{{{*/
849
850 int i,dim,domaintype;
851 IssmDouble rho_ice,g;
852@@ -3196,7 +3196,7 @@
853 int numdof = numnodes*dim*2; //2xdim DOFs per node
854
855 /*Fetch dof list and allocate solution vectors*/
856- basalelement->GetDofListLocal(&doflist,MLHOApproximationEnum,GsetEnum);
857+ basalelement->GetDofListLocal(&doflist,MOLHOApproximationEnum,GsetEnum);
858 IssmDouble* values = xNew<IssmDouble>(numdof);
859 IssmDouble* vbx = xNew<IssmDouble>(numnodes);
860 IssmDouble* vby = xNew<IssmDouble>(numnodes);
861@@ -3219,7 +3219,7 @@
862 if(dim==2) basalelement->TransformSolutionCoord(&values[0],XYEnum);
863
864 /*Ok, we have vx and vy in values, fill in vx and vy arrays: */
865- for(i=0;i<numnodes;i++){ //numnodes of the 2D mesh in which the MLHO is written
866+ for(i=0;i<numnodes;i++){ //numnodes of the 2D mesh in which the MOLHO is written
867 vbx[i] =values[i*4+0]; //base vx
868 vshx[i]=values[i*4+1]; //shear vx
869 vsx[i] =vbx[i]+vshx[i]; //surface vx
870@@ -3256,7 +3256,7 @@
871
872 switch(domaintype){
873 case Domain2DhorizontalEnum:
874- for(i=0;i<numnodes;i++){ //numnodes of the 2D mesh in which the MLHO is written
875+ for(i=0;i<numnodes;i++){ //numnodes of the 2D mesh in which the MOLHO is written
876 vx[i]=vbx[i]+vshx[i]*(n[i]+1)/(n[i]+2);
877 vy[i]=vby[i]+vshy[i]*(n[i]+1)/(n[i]+2);
878 vel[i]=sqrt(vx[i]*vx[i] + vy[i]*vy[i]);
879@@ -3268,8 +3268,8 @@
880 case Domain3DEnum:
881 basalelement->GetInputListOnNodes(&H[0],ThicknessEnum,0.);
882 basalelement->GetInputListOnNodes(&s[0],SurfaceEnum,0.);
883- element->Recover3DMLHOInput(VxEnum, numnodes, vbx, vshx, n, H, s);
884- element->Recover3DMLHOInput(VyEnum, numnodes, vby, vshy, n, H, s);
885+ element->Recover3DMOLHOInput(VxEnum, numnodes, vbx, vshx, n, H, s);
886+ element->Recover3DMOLHOInput(VyEnum, numnodes, vby, vshy, n, H, s);
887 break;
888 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
889 }
890@@ -3293,7 +3293,7 @@
891 xDelete<int>(doflist);
892 if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
893 }/*}}}*/
894-void StressbalanceAnalysis::GetSolutionFromInputsMLHO(Vector<IssmDouble>* solution,Element* element){/*{{{*/
895+void StressbalanceAnalysis::GetSolutionFromInputsMOLHO(Vector<IssmDouble>* solution,Element* element){/*{{{*/
896
897 IssmDouble vbx,vby,vshx,vshy;
898 int domaintype,dim,approximation,dofpernode;
899@@ -3312,7 +3312,7 @@
900 int numnodes = element->GetNumberOfNodes();
901 int numdof = numnodes*dofpernode;
902 element->GetInputValue(&approximation,ApproximationEnum);
903- if(approximation!=MLHOApproximationEnum) _error_("mesh "<<EnumToStringx(approximation)<<" not supported here");
904+ if(approximation!=MOLHOApproximationEnum) _error_("mesh "<<EnumToStringx(approximation)<<" not supported here");
905
906 /*Fetch dof list and allocate solution vector*/
907 element->GetDofList(&doflist,approximation,GsetEnum);
908Index: ../trunk-jpl/src/c/analyses/StressbalanceAnalysis.h
909===================================================================
910--- ../trunk-jpl/src/c/analyses/StressbalanceAnalysis.h (revision 27030)
911+++ ../trunk-jpl/src/c/analyses/StressbalanceAnalysis.h (revision 27031)
912@@ -56,15 +56,15 @@
913 ElementVector* CreatePVectorL1L2Front(Element* element);
914 ElementVector* CreatePVectorL1L2DrivingStress(Element* element);
915 void InputUpdateFromSolutionL1L2(IssmDouble* solution,Element* element);
916- /*MLHO*/
917- ElementMatrix* CreateKMatrixMLHO(Element* element);
918- ElementMatrix* CreateKMatrixMLHOFriction(Element* element);
919- ElementMatrix* CreateKMatrixMLHOViscous(Element* element);
920- ElementVector* CreatePVectorMLHO(Element* element);
921- ElementVector* CreatePVectorMLHOFront(Element* element);
922- ElementVector* CreatePVectorMLHODrivingStress(Element* element);
923- void InputUpdateFromSolutionMLHO(IssmDouble* solution,Element* element);
924- void GetSolutionFromInputsMLHO(Vector<IssmDouble>* solution,Element* element);
925+ /*MOLHO*/
926+ ElementMatrix* CreateKMatrixMOLHO(Element* element);
927+ ElementMatrix* CreateKMatrixMOLHOFriction(Element* element);
928+ ElementMatrix* CreateKMatrixMOLHOViscous(Element* element);
929+ ElementVector* CreatePVectorMOLHO(Element* element);
930+ ElementVector* CreatePVectorMOLHOFront(Element* element);
931+ ElementVector* CreatePVectorMOLHODrivingStress(Element* element);
932+ void InputUpdateFromSolutionMOLHO(IssmDouble* solution,Element* element);
933+ void GetSolutionFromInputsMOLHO(Vector<IssmDouble>* solution,Element* element);
934 /*HO*/
935 ElementMatrix* CreateJacobianMatrixHO(Element* element);
936 ElementMatrix* CreateKMatrixHO(Element* element);
937Index: ../trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp
938===================================================================
939--- ../trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp (revision 27030)
940+++ ../trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp (revision 27031)
941@@ -9,13 +9,13 @@
942 void StressbalanceSIAAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
943
944 /*Intermediaries*/
945- bool isSIA,isSSA,isL1L2,isMLHO,isHO,isFS,iscoupling;
946+ bool isSIA,isSSA,isL1L2,isMOLHO,isHO,isFS,iscoupling;
947
948 /*Fetch parameters: */
949 iomodel->FindConstant(&isSIA,"md.flowequation.isSIA");
950 iomodel->FindConstant(&isSSA,"md.flowequation.isSSA");
951 iomodel->FindConstant(&isL1L2,"md.flowequation.isL1L2");
952- iomodel->FindConstant(&isMLHO,"md.flowequation.isMLHO");
953+ iomodel->FindConstant(&isMOLHO,"md.flowequation.isMOLHO");
954 iomodel->FindConstant(&isHO,"md.flowequation.isHO");
955 iomodel->FindConstant(&isFS,"md.flowequation.isFS");
956
957@@ -23,7 +23,7 @@
958 if (!isSIA) return;
959
960 /*Do we have coupling*/
961- if((isSIA?1.:0.) + (isSSA?1.:0.) + (isL1L2?1.:0.) + (isMLHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)
962+ if((isSIA?1.:0.) + (isSSA?1.:0.) + (isL1L2?1.:0.) + (isMOLHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)
963 iscoupling = true;
964 else
965 iscoupling = false;
966Index: ../trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp
967===================================================================
968--- ../trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp (revision 27030)
969+++ ../trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp (revision 27031)
970@@ -11,7 +11,7 @@
971 void StressbalanceVerticalAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
972
973 /*Intermediary*/
974- bool isSIA,isSSA,isL1L2,isMLHO,isHO,isFS,iscoupling;
975+ bool isSIA,isSSA,isL1L2,isMOLHO,isHO,isFS,iscoupling;
976 int Mz,Nz;
977 IssmDouble *spcvz = NULL;
978
979@@ -22,12 +22,12 @@
980 iomodel->FindConstant(&isSIA,"md.flowequation.isSIA");
981 iomodel->FindConstant(&isSSA,"md.flowequation.isSSA");
982 iomodel->FindConstant(&isL1L2,"md.flowequation.isL1L2");
983- iomodel->FindConstant(&isMLHO,"md.flowequation.isMLHO");
984+ iomodel->FindConstant(&isMOLHO,"md.flowequation.isMOLHO");
985 iomodel->FindConstant(&isHO,"md.flowequation.isHO");
986 iomodel->FindConstant(&isFS,"md.flowequation.isFS");
987
988 /*Do we have coupling*/
989- if((isSIA?1.:0.) + (isSSA?1.:0.) + (isL1L2?1.:0.) + (isMLHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)
990+ if((isSIA?1.:0.) + (isSSA?1.:0.) + (isL1L2?1.:0.) + (isMOLHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)
991 iscoupling = true;
992 else
993 iscoupling = false;
994Index: ../trunk-jpl/src/c/classes/Elements/Element.cpp
995===================================================================
996--- ../trunk-jpl/src/c/classes/Elements/Element.cpp (revision 27030)
997+++ ../trunk-jpl/src/c/classes/Elements/Element.cpp (revision 27031)
998@@ -1040,7 +1040,7 @@
999
1000 }
1001 /*}}}*/
1002-void Element::dViscositydBMLHO(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vxbase_input,Input* vybase_input, Input* vxshear_input ,Input* vyshear_input,Input* thickness_input,Input* n_input, IssmDouble zeta){/*{{{*/
1003+void Element::dViscositydBMOLHO(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vxbase_input,Input* vybase_input, Input* vxshear_input ,Input* vyshear_input,Input* thickness_input,Input* n_input, IssmDouble zeta){/*{{{*/
1004
1005 /*Intermediaries*/
1006 int materialstype;
1007@@ -1050,7 +1050,7 @@
1008 IssmDouble eps0=1.e-27;
1009
1010 /* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy */
1011- this->StrainRateMLHO(&epsilon[0],xyz_list,gauss,
1012+ this->StrainRateMOLHO(&epsilon[0],xyz_list,gauss,
1013 vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input,zeta);
1014 eps_eff=sqrt(epsilon[0]*epsilon[0] + epsilon[1]*epsilon[1] + epsilon[2]*epsilon[2]
1015 + epsilon[3]*epsilon[3] + epsilon[4]*epsilon[4] + epsilon[0]*epsilon[1] + eps0*eps0);
1016@@ -4618,8 +4618,8 @@
1017 epsilon[1] = 0.5*dvx[1];
1018
1019 }/*}}}*/
1020-void Element::StrainRateMLHO(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vxbase_input,Input* vybase_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input,IssmDouble zeta){/*{{{*/
1021- /*Compute the 2d Blatter/MLHO Strain Rate (5 components) for a given vertical coordinate (zeta):
1022+void Element::StrainRateMOLHO(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vxbase_input,Input* vybase_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input,IssmDouble zeta){/*{{{*/
1023+ /*Compute the 2d Blatter/MOLHO Strain Rate (5 components) for a given vertical coordinate (zeta):
1024 *
1025 * epsilon=[exx eyy exy exz eyz]
1026 *
1027Index: ../trunk-jpl/src/c/classes/Elements/Element.h
1028===================================================================
1029--- ../trunk-jpl/src/c/classes/Elements/Element.h (revision 27030)
1030+++ ../trunk-jpl/src/c/classes/Elements/Element.h (revision 27031)
1031@@ -85,7 +85,7 @@
1032 void dViscositydBFS(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);
1033 void dViscositydBHO(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
1034 void dViscositydBSSA(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
1035- void dViscositydBMLHO(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vxbase_input,Input* vybase_input, Input* vxshear_input ,Input* vyshear_input,Input* thickness_input,Input* n_input, IssmDouble zeta);
1036+ void dViscositydBMOLHO(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vxbase_input,Input* vybase_input, Input* vxshear_input ,Input* vyshear_input,Input* thickness_input,Input* n_input, IssmDouble zeta);
1037 void dViscositydDSSA(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
1038 void Echo();
1039 void FindParam(bool* pvalue,int paramenum);
1040@@ -189,7 +189,7 @@
1041 void StrainRateFS(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);
1042 void StrainRateHO(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
1043 void StrainRateHO2dvertical(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
1044- void StrainRateMLHO(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input,IssmDouble zeta);
1045+ void StrainRateMOLHO(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input,IssmDouble zeta);
1046 void StrainRateSSA(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
1047 void StrainRateSSA1d(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input);
1048 void StressMaxPrincipalCreateInput(void);
1049@@ -350,7 +350,7 @@
1050 virtual int NumberofNodesVelocity(void)=0;
1051 virtual void PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding)=0;
1052 virtual int PressureInterpolation()=0;
1053- virtual void Recover3DMLHOInput(int targetVel_enum, int numnodes, IssmDouble* vb, IssmDouble* vsh, IssmDouble* n, IssmDouble* H, IssmDouble* s){_error_("not implemented yet");};
1054+ virtual void Recover3DMOLHOInput(int targetVel_enum, int numnodes, IssmDouble* vb, IssmDouble* vsh, IssmDouble* n, IssmDouble* H, IssmDouble* s){_error_("not implemented yet");};
1055 virtual void ReduceMatrices(ElementMatrix* Ke,ElementVector* pe)=0;
1056 virtual void ResetFSBasalBoundaryCondition()=0;
1057 virtual void ResetHooks()=0;
1058Index: ../trunk-jpl/src/c/classes/Elements/Penta.cpp
1059===================================================================
1060--- ../trunk-jpl/src/c/classes/Elements/Penta.cpp (revision 27030)
1061+++ ../trunk-jpl/src/c/classes/Elements/Penta.cpp (revision 27031)
1062@@ -3281,7 +3281,7 @@
1063 return PentaRef::PressureInterpolation(this->element_type);
1064 }
1065 /*}}}*/
1066-void Penta::Recover3DMLHOInput(int targetVel_enum, int numnodes, IssmDouble* vb, IssmDouble* vsh, IssmDouble* n, IssmDouble* H, IssmDouble* s){/*{{{*/
1067+void Penta::Recover3DMOLHOInput(int targetVel_enum, int numnodes, IssmDouble* vb, IssmDouble* vsh, IssmDouble* n, IssmDouble* H, IssmDouble* s){/*{{{*/
1068 /* Recover the velocity acording to v=vb+(1-\zeta^{n+1})vsh, where \zeta=(s-z)/H
1069 * The variables vb, vsh, n, H and s are all from the 2D horizontal mesh(Tria), with "numnodes" DOFs
1070 * To project to penta the DOFs are doubled in size
1071Index: ../trunk-jpl/src/c/classes/Elements/Penta.h
1072===================================================================
1073--- ../trunk-jpl/src/c/classes/Elements/Penta.h (revision 27030)
1074+++ ../trunk-jpl/src/c/classes/Elements/Penta.h (revision 27031)
1075@@ -169,7 +169,7 @@
1076 int NumberofNodesVelocity(void);
1077 void PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding);
1078 int PressureInterpolation();
1079- void Recover3DMLHOInput(int targetVel_enum, int numnodes, IssmDouble* vb, IssmDouble* vsh, IssmDouble* n, IssmDouble* H, IssmDouble* s);
1080+ void Recover3DMOLHOInput(int targetVel_enum, int numnodes, IssmDouble* vb, IssmDouble* vsh, IssmDouble* n, IssmDouble* H, IssmDouble* s);
1081 void ReduceMatrices(ElementMatrix* Ke,ElementVector* pe);
1082 void ResetFSBasalBoundaryCondition(void);
1083 void ResetHooks();
1084Index: ../trunk-jpl/src/c/classes/FemModel.cpp
1085===================================================================
1086--- ../trunk-jpl/src/c/classes/FemModel.cpp (revision 27030)
1087+++ ../trunk-jpl/src/c/classes/FemModel.cpp (revision 27031)
1088@@ -3218,7 +3218,7 @@
1089 this->parameters->FindParam(&temp,FlowequationIsSIAEnum); iomodel->AddConstant(new IoConstant(temp,"md.flowequation.isSIA"));
1090 this->parameters->FindParam(&temp,FlowequationIsSSAEnum); iomodel->AddConstant(new IoConstant(temp,"md.flowequation.isSSA"));
1091 this->parameters->FindParam(&temp,FlowequationIsL1L2Enum); iomodel->AddConstant(new IoConstant(temp,"md.flowequation.isL1L2"));
1092- this->parameters->FindParam(&temp,FlowequationIsMLHOEnum); iomodel->AddConstant(new IoConstant(temp,"md.flowequation.isMLHO"));
1093+ this->parameters->FindParam(&temp,FlowequationIsMOLHOEnum); iomodel->AddConstant(new IoConstant(temp,"md.flowequation.isMOLHO"));
1094 this->parameters->FindParam(&temp,FlowequationIsHOEnum); iomodel->AddConstant(new IoConstant(temp,"md.flowequation.isHO"));
1095 this->parameters->FindParam(&temp,FlowequationIsFSEnum); iomodel->AddConstant(new IoConstant(temp,"md.flowequation.isFS"));
1096 this->parameters->FindParam(&tempint,MasstransportStabilizationEnum); iomodel->AddConstant(new IoConstant(tempint,"md.masstransport.stabilization"));
1097Index: ../trunk-jpl/src/c/classes/Loads/Penpair.cpp
1098===================================================================
1099--- ../trunk-jpl/src/c/classes/Loads/Penpair.cpp (revision 27030)
1100+++ ../trunk-jpl/src/c/classes/Loads/Penpair.cpp (revision 27031)
1101@@ -354,9 +354,9 @@
1102 case HOApproximationEnum: return PenaltyCreateKMatrixStressbalanceSSAHO(kmax);
1103 default: _error_("Approximation "<<EnumToStringx(approximation1)<<" not supported yet");
1104 }
1105- case MLHOApproximationEnum:
1106+ case MOLHOApproximationEnum:
1107 switch(approximation1){
1108- case MLHOApproximationEnum: return PenaltyCreateKMatrixStressbalanceSSAHO(kmax);
1109+ case MOLHOApproximationEnum: return PenaltyCreateKMatrixStressbalanceSSAHO(kmax);
1110 default: _error_("Approximation "<<EnumToStringx(approximation1)<<" not supported yet");
1111 }
1112 case L1L2ApproximationEnum:
1113Index: ../trunk-jpl/src/c/classes/Materials/Material.h
1114===================================================================
1115--- ../trunk-jpl/src/c/classes/Materials/Material.h (revision 27030)
1116+++ ../trunk-jpl/src/c/classes/Materials/Material.h (revision 27031)
1117@@ -50,8 +50,8 @@
1118 virtual void ViscositySSADerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon,Gauss* gauss)=0;
1119 virtual void ViscosityFS(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input)=0;
1120 virtual void ViscosityHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input)=0;
1121- virtual void ViscosityMLHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input)=0;
1122- virtual void ViscosityMLHOAdjoint(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input)=0;
1123+ virtual void ViscosityMOLHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input)=0;
1124+ virtual void ViscosityMOLHOAdjoint(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input)=0;
1125 virtual void ViscosityL1L2(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* surf)=0;
1126 virtual void ViscositySSA(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input)=0;
1127 virtual void ViscosityBFS(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input,IssmDouble epseff)=0;
1128Index: ../trunk-jpl/src/c/classes/Materials/Matestar.cpp
1129===================================================================
1130--- ../trunk-jpl/src/c/classes/Materials/Matestar.cpp (revision 27030)
1131+++ ../trunk-jpl/src/c/classes/Materials/Matestar.cpp (revision 27031)
1132@@ -566,10 +566,10 @@
1133 /*Compute viscosity*/
1134 *pviscosity=GetViscosityGeneral(vx,vy,vz,&dvx[0],&dvy[0],&dvz[0],eps_eff,isdepthaveraged,gauss);
1135 }/*}}}*/
1136-void Matestar::ViscosityMLHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input){/*{{{*/
1137+void Matestar::ViscosityMOLHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input){/*{{{*/
1138 _error_("not implemented yet");
1139 }/*}}}*/
1140-void Matestar::ViscosityMLHOAdjoint(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input){/*{{{*/
1141+void Matestar::ViscosityMOLHOAdjoint(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input){/*{{{*/
1142 _error_("not implemented yet");
1143 }/*}}}*/
1144 void Matestar::ViscosityL1L2(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* surface_input){/*{{{*/
1145Index: ../trunk-jpl/src/m/classes/inversion.py
1146===================================================================
1147--- ../trunk-jpl/src/m/classes/inversion.py (revision 27030)
1148+++ ../trunk-jpl/src/m/classes/inversion.py (revision 27031)
1149@@ -150,8 +150,8 @@
1150
1151 # Only SSA, HO and FS are supported right now
1152 if solution == 'StressbalanceSolution':
1153- if not (md.flowequation.isSSA or md.flowequation.isMLHO or md.flowequation.isHO or md.flowequation.isFS or md.flowequation.isL1L2):
1154- md.checkmessage("'inversion can only be performed for SSA, MLHO, HO or FS ice flow models")
1155+ if not (md.flowequation.isSSA or md.flowequation.isMOLHO or md.flowequation.isHO or md.flowequation.isFS or md.flowequation.isL1L2):
1156+ md.checkmessage("'inversion can only be performed for SSA, MOLHO, HO or FS ice flow models")
1157 if solution == 'BalancethicknessSolution':
1158 md = checkfield(md, 'fieldname', 'inversion.thickness_obs', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
1159 elif solution == 'BalancethicknessSoftSolution':
1160Index: ../trunk-jpl/src/m/parameterization/setflowequation.js
1161===================================================================
1162--- ../trunk-jpl/src/m/parameterization/setflowequation.js (revision 27030)
1163+++ ../trunk-jpl/src/m/parameterization/setflowequation.js (revision 27031)
1164@@ -2,7 +2,7 @@
1165 //SETFLOWEQUATION - associate a solution type to each element
1166 //
1167 // This routine works like plotmodel: it works with an even number of inputs
1168-// 'SIA','SSA','L1L2','MLHO','HO','FS' and 'fill' are the possible options
1169+// 'SIA','SSA','L1L2','MOLHO','HO','FS' and 'fill' are the possible options
1170 // that must be followed by the corresponding exp file or flags list
1171 // It can either be a domain file (argus type, .exp extension), or an array of element flags.
1172 // If user wants every element outside the domain to be
1173@@ -10,7 +10,7 @@
1174 // an empty string '' will be considered as an empty domain
1175 // a string 'all' will be considered as the entire domain
1176 // You can specify the type of coupling, 'penalties' or 'tiling', to use with the input 'coupling'
1177-// NB: L1L2 and MLHO cannot currently be coupled to any other ice flow model
1178+// NB: L1L2 and MOLHO cannot currently be coupled to any other ice flow model
1179 //
1180 // Usage:
1181 // setflowequation(md,varargin)
1182@@ -37,7 +37,7 @@
1183 SSAflag = FlagElements(md,options.getfieldvalue('SSA',''));
1184 HOflag = FlagElements(md,options.getfieldvalue('HO',''));
1185 L1L2flag = FlagElements(md,options.getfieldvalue('L1L2',''));
1186- MLHOflag = FlagElements(md,options.getfieldvalue('MLHO',''));
1187+ MOLHOflag = FlagElements(md,options.getfieldvalue('MOLHO',''));
1188 FSflag = FlagElements(md,options.getfieldvalue('FS',''));
1189 filltype = options.getfieldvalue('fill','none');
1190 options.displayunused();
1191@@ -54,11 +54,11 @@
1192 }
1193
1194 //check that each element has at least one flag
1195- for(var i=0;i<md.mesh.numberofelements;i++)if((SIAflag[i] + SSAflag[i] + HOflag[i] + L1L2flag[i] + MLHOflag[i] + FSflag[i])==0)
1196+ for(var i=0;i<md.mesh.numberofelements;i++)if((SIAflag[i] + SSAflag[i] + HOflag[i] + L1L2flag[i] + MOLHOflag[i] + FSflag[i])==0)
1197 throw Error("elements type not assigned, supported models are 'SIA','SSA','HO' and 'FS'");
1198
1199 //check that each element has only one flag
1200- if (ArrayAnyAboveStrict(ArrayXPY(SIAflag,SSAflag,HOflag,L1L2flag,MLHOflag),1)){
1201+ if (ArrayAnyAboveStrict(ArrayXPY(SIAflag,SSAflag,HOflag,L1L2flag,MOLHOflag),1)){
1202 console.log('setflowequation warning message: some elements have several types, higher order type is used for them')
1203
1204 for(var i=0;i<md.mesh.numberofelements;i++){
1205@@ -70,7 +70,7 @@
1206
1207 //check that L1L2 is not coupled to any other model for now
1208 if (ArrayAnyEqual(L1L2flag,1) & ArrayAnyEqual(ArrayOr(SIAflag,SSAflag,HOflag,FSflag),1)) throw Error('L1L2 cannot be coupled to any other model');
1209- if (ArrayAnyEqual(MLHOflag,1) & ArrayAnyEqual(ArrayOr(SIAflag,SSAflag,HOflag,FSflag),1)) throw Error('MLHO cannot be coupled to any other model');
1210+ if (ArrayAnyEqual(MOLHOflag,1) & ArrayAnyEqual(ArrayOr(SIAflag,SSAflag,HOflag,FSflag),1)) throw Error('MOLHO cannot be coupled to any other model');
1211
1212 //Check that no HO or FS for 2d mesh
1213 if (md.mesh.domaintype() == '2Dhorizontal'){
1214@@ -99,9 +99,9 @@
1215 pos=ArrayFind(L1L2flag,1);
1216 for(var i=0;i<pos.length;i++) for(var j=0;j<md.mesh.elements[0].length;j++) nodeonL1L2[md.mesh.elements[pos[i]][j]-1]=1;
1217
1218- nodeonMLHO=NewArrayFill(md.mesh.numberofvertices,0);
1219- pos=ArrayFind(MLHOflag,1);
1220- for(var i=0;i<pos.length;i++) for(var j=0;j<md.mesh.elements[0].length;j++) nodeonMLHO[md.mesh.elements[pos[i]][j]-1]=1;
1221+ nodeonMOLHO=NewArrayFill(md.mesh.numberofvertices,0);
1222+ pos=ArrayFind(MOLHOflag,1);
1223+ for(var i=0;i<pos.length;i++) for(var j=0;j<md.mesh.elements[0].length;j++) nodeonMOLHO[md.mesh.elements[pos[i]][j]-1]=1;
1224
1225 nodeonFS=NewArrayFill(md.mesh.numberofvertices,0);
1226 noneflag=NewArrayFill(md.mesh.numberofvertices,0);
1227@@ -261,7 +261,7 @@
1228 pos=ArrayFind(SIAflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=1;
1229 pos=ArrayFind(SSAflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=2;
1230 pos=ArrayFind(L1L2flag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=3;
1231- pos=ArrayFind(MLHOflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=4;
1232+ pos=ArrayFind(MOLHOflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=4;
1233 pos=ArrayFind(HOflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=5;
1234 pos=ArrayFind(FSflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=6;
1235 pos=ArrayFind(SSAHOflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=7;
1236@@ -280,7 +280,7 @@
1237
1238 pos=ArrayFind(nodeonSSA,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=2;
1239 pos=ArrayFind(nodeonL1L2,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=3;
1240- pos=ArrayFind(nodeonMLHO,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=4;
1241+ pos=ArrayFind(nodeonMOLHO,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=4;
1242 pos=ArrayFind(nodeonHO,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=5;
1243 pos=ArrayFind(nodeonFS,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=6;
1244 //DO SIA LAST! Otherwise spcs might not be set up correctly (SIA should have priority)
1245@@ -300,7 +300,7 @@
1246 md.flowequation.isSIA = ArrayAnyEqual(md.flowequation.element_equation,1);
1247 md.flowequation.isSSA = ArrayAnyEqual(md.flowequation.element_equation,2);
1248 md.flowequation.isL1L2 = ArrayAnyEqual(md.flowequation.element_equation,3);
1249- md.flowequation.isMLHO = ArrayAnyEqual(md.flowequation.element_equation,4);
1250+ md.flowequation.isMOLHO = ArrayAnyEqual(md.flowequation.element_equation,4);
1251 md.flowequation.isHO = ArrayAnyEqual(md.flowequation.element_equation,5);
1252 md.flowequation.isFS = ArrayAnyEqual(md.flowequation.element_equation,6);
1253 return
1254Index: ../trunk-jpl/src/c/shared/Enum/Enum.vim
1255===================================================================
1256--- ../trunk-jpl/src/c/shared/Enum/Enum.vim (revision 27030)
1257+++ ../trunk-jpl/src/c/shared/Enum/Enum.vim (revision 27031)
1258@@ -112,6 +112,7 @@
1259 syn keyword cConstant CalvingLawEnum
1260 syn keyword cConstant CalvingMinthicknessEnum
1261 syn keyword cConstant CalvingTestSpeedfactorEnum
1262+syn keyword cConstant CalvingTestIndependentRateEnum
1263 syn keyword cConstant CalvingUseParamEnum
1264 syn keyword cConstant CalvingScaleThetaEnum
1265 syn keyword cConstant CalvingAmpAlphaEnum
1266@@ -174,7 +175,7 @@
1267 syn keyword cConstant FlowequationIsFSEnum
1268 syn keyword cConstant FlowequationIsHOEnum
1269 syn keyword cConstant FlowequationIsL1L2Enum
1270-syn keyword cConstant FlowequationIsMLHOEnum
1271+syn keyword cConstant FlowequationIsMOLHOEnum
1272 syn keyword cConstant FlowequationIsSIAEnum
1273 syn keyword cConstant FlowequationIsSSAEnum
1274 syn keyword cConstant FlowequationIsNitscheEnum
1275@@ -657,6 +658,7 @@
1276 syn keyword cConstant BottomPressureOldEnum
1277 syn keyword cConstant CalvingCalvingrateEnum
1278 syn keyword cConstant CalvingHabFractionEnum
1279+syn keyword cConstant CalvingAblationrateEnum
1280 syn keyword cConstant CalvingMeltingrateEnum
1281 syn keyword cConstant CalvingStressThresholdFloatingiceEnum
1282 syn keyword cConstant CalvingStressThresholdGroundediceEnum
1283@@ -1382,7 +1384,7 @@
1284 syn keyword cConstant InversionVzObsEnum
1285 syn keyword cConstant JEnum
1286 syn keyword cConstant L1L2ApproximationEnum
1287-syn keyword cConstant MLHOApproximationEnum
1288+syn keyword cConstant MOLHOApproximationEnum
1289 syn keyword cConstant L2ProjectionBaseAnalysisEnum
1290 syn keyword cConstant L2ProjectionEPLAnalysisEnum
1291 syn keyword cConstant LACrouzeixRaviartEnum
1292@@ -1621,7 +1623,6 @@
1293 syn keyword cType Cfsurfacelogvel
1294 syn keyword cType Cfsurfacesquare
1295 syn keyword cType Channel
1296-syn keyword cType classes
1297 syn keyword cType Constraint
1298 syn keyword cType Constraints
1299 syn keyword cType Contour
1300@@ -1628,8 +1629,8 @@
1301 syn keyword cType Contours
1302 syn keyword cType ControlInput
1303 syn keyword cType Covertree
1304+syn keyword cType DataSetParam
1305 syn keyword cType DatasetInput
1306-syn keyword cType DataSetParam
1307 syn keyword cType Definition
1308 syn keyword cType DependentObject
1309 syn keyword cType DoubleInput
1310@@ -1642,8 +1643,8 @@
1311 syn keyword cType ElementHook
1312 syn keyword cType ElementInput
1313 syn keyword cType ElementMatrix
1314+syn keyword cType ElementVector
1315 syn keyword cType Elements
1316-syn keyword cType ElementVector
1317 syn keyword cType ExponentialVariogram
1318 syn keyword cType ExternalResult
1319 syn keyword cType FemModel
1320@@ -1650,12 +1651,11 @@
1321 syn keyword cType FileParam
1322 syn keyword cType Friction
1323 syn keyword cType Gauss
1324-syn keyword cType GaussianVariogram
1325-syn keyword cType gaussobjects
1326 syn keyword cType GaussPenta
1327 syn keyword cType GaussSeg
1328 syn keyword cType GaussTetra
1329 syn keyword cType GaussTria
1330+syn keyword cType GaussianVariogram
1331 syn keyword cType GenericExternalResult
1332 syn keyword cType GenericOption
1333 syn keyword cType GenericParam
1334@@ -1671,7 +1671,6 @@
1335 syn keyword cType IoModel
1336 syn keyword cType IssmDirectApplicInterface
1337 syn keyword cType IssmParallelDirectApplicInterface
1338-syn keyword cType krigingobjects
1339 syn keyword cType Load
1340 syn keyword cType Loads
1341 syn keyword cType Masscon
1342@@ -1682,7 +1681,6 @@
1343 syn keyword cType Matestar
1344 syn keyword cType Matice
1345 syn keyword cType Matlitho
1346-syn keyword cType matrixobjects
1347 syn keyword cType MatrixParam
1348 syn keyword cType Misfit
1349 syn keyword cType Moulin
1350@@ -1695,8 +1693,8 @@
1351 syn keyword cType Observation
1352 syn keyword cType Observations
1353 syn keyword cType Option
1354+syn keyword cType OptionUtilities
1355 syn keyword cType Options
1356-syn keyword cType OptionUtilities
1357 syn keyword cType Param
1358 syn keyword cType Parameters
1359 syn keyword cType Pengrid
1360@@ -1710,13 +1708,13 @@
1361 syn keyword cType Radar
1362 syn keyword cType Regionaloutput
1363 syn keyword cType Results
1364+syn keyword cType RiftStruct
1365 syn keyword cType Riftfront
1366-syn keyword cType RiftStruct
1367 syn keyword cType SealevelGeometry
1368 syn keyword cType Seg
1369 syn keyword cType SegInput
1370+syn keyword cType SegRef
1371 syn keyword cType Segment
1372-syn keyword cType SegRef
1373 syn keyword cType SpcDynamic
1374 syn keyword cType SpcStatic
1375 syn keyword cType SpcTransient
1376@@ -1735,6 +1733,10 @@
1377 syn keyword cType VectorParam
1378 syn keyword cType Vertex
1379 syn keyword cType Vertices
1380+syn keyword cType classes
1381+syn keyword cType gaussobjects
1382+syn keyword cType krigingobjects
1383+syn keyword cType matrixobjects
1384 syn keyword cType AdjointBalancethickness2Analysis
1385 syn keyword cType AdjointBalancethicknessAnalysis
1386 syn keyword cType AdjointHorizAnalysis
1387Index: ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
1388===================================================================
1389--- ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp (revision 27030)
1390+++ ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp (revision 27031)
1391@@ -114,6 +114,7 @@
1392 case CalvingLawEnum : return "CalvingLaw";
1393 case CalvingMinthicknessEnum : return "CalvingMinthickness";
1394 case CalvingTestSpeedfactorEnum : return "CalvingTestSpeedfactor";
1395+ case CalvingTestIndependentRateEnum : return "CalvingTestIndependentRate";
1396 case CalvingUseParamEnum : return "CalvingUseParam";
1397 case CalvingScaleThetaEnum : return "CalvingScaleTheta";
1398 case CalvingAmpAlphaEnum : return "CalvingAmpAlpha";
1399@@ -176,7 +177,7 @@
1400 case FlowequationIsFSEnum : return "FlowequationIsFS";
1401 case FlowequationIsHOEnum : return "FlowequationIsHO";
1402 case FlowequationIsL1L2Enum : return "FlowequationIsL1L2";
1403- case FlowequationIsMLHOEnum : return "FlowequationIsMLHO";
1404+ case FlowequationIsMOLHOEnum : return "FlowequationIsMOLHO";
1405 case FlowequationIsSIAEnum : return "FlowequationIsSIA";
1406 case FlowequationIsSSAEnum : return "FlowequationIsSSA";
1407 case FlowequationIsNitscheEnum : return "FlowequationIsNitsche";
1408@@ -659,6 +660,7 @@
1409 case BottomPressureOldEnum : return "BottomPressureOld";
1410 case CalvingCalvingrateEnum : return "CalvingCalvingrate";
1411 case CalvingHabFractionEnum : return "CalvingHabFraction";
1412+ case CalvingAblationrateEnum : return "CalvingAblationrate";
1413 case CalvingMeltingrateEnum : return "CalvingMeltingrate";
1414 case CalvingStressThresholdFloatingiceEnum : return "CalvingStressThresholdFloatingice";
1415 case CalvingStressThresholdGroundediceEnum : return "CalvingStressThresholdGroundedice";
1416@@ -1384,7 +1386,7 @@
1417 case InversionVzObsEnum : return "InversionVzObs";
1418 case JEnum : return "J";
1419 case L1L2ApproximationEnum : return "L1L2Approximation";
1420- case MLHOApproximationEnum : return "MLHOApproximation";
1421+ case MOLHOApproximationEnum : return "MOLHOApproximation";
1422 case L2ProjectionBaseAnalysisEnum : return "L2ProjectionBaseAnalysis";
1423 case L2ProjectionEPLAnalysisEnum : return "L2ProjectionEPLAnalysis";
1424 case LACrouzeixRaviartEnum : return "LACrouzeixRaviart";
1425Index: ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
1426===================================================================
1427--- ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp (revision 27030)
1428+++ ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp (revision 27031)
1429@@ -114,6 +114,7 @@
1430 else if (strcmp(name,"CalvingLaw")==0) return CalvingLawEnum;
1431 else if (strcmp(name,"CalvingMinthickness")==0) return CalvingMinthicknessEnum;
1432 else if (strcmp(name,"CalvingTestSpeedfactor")==0) return CalvingTestSpeedfactorEnum;
1433+ else if (strcmp(name,"CalvingTestIndependentRate")==0) return CalvingTestIndependentRateEnum;
1434 else if (strcmp(name,"CalvingUseParam")==0) return CalvingUseParamEnum;
1435 else if (strcmp(name,"CalvingScaleTheta")==0) return CalvingScaleThetaEnum;
1436 else if (strcmp(name,"CalvingAmpAlpha")==0) return CalvingAmpAlphaEnum;
1437@@ -135,11 +136,11 @@
1438 else if (strcmp(name,"CumBslcHydroPartition")==0) return CumBslcHydroPartitionEnum;
1439 else if (strcmp(name,"CumBslcOceanPartition")==0) return CumBslcOceanPartitionEnum;
1440 else if (strcmp(name,"CumGmtslc")==0) return CumGmtslcEnum;
1441- else if (strcmp(name,"CumGmslc")==0) return CumGmslcEnum;
1442 else stage=2;
1443 }
1444 if(stage==2){
1445- if (strcmp(name,"DamageC1")==0) return DamageC1Enum;
1446+ if (strcmp(name,"CumGmslc")==0) return CumGmslcEnum;
1447+ else if (strcmp(name,"DamageC1")==0) return DamageC1Enum;
1448 else if (strcmp(name,"DamageC2")==0) return DamageC2Enum;
1449 else if (strcmp(name,"DamageC3")==0) return DamageC3Enum;
1450 else if (strcmp(name,"DamageC4")==0) return DamageC4Enum;
1451@@ -179,7 +180,7 @@
1452 else if (strcmp(name,"FlowequationIsFS")==0) return FlowequationIsFSEnum;
1453 else if (strcmp(name,"FlowequationIsHO")==0) return FlowequationIsHOEnum;
1454 else if (strcmp(name,"FlowequationIsL1L2")==0) return FlowequationIsL1L2Enum;
1455- else if (strcmp(name,"FlowequationIsMLHO")==0) return FlowequationIsMLHOEnum;
1456+ else if (strcmp(name,"FlowequationIsMOLHO")==0) return FlowequationIsMOLHOEnum;
1457 else if (strcmp(name,"FlowequationIsSIA")==0) return FlowequationIsSIAEnum;
1458 else if (strcmp(name,"FlowequationIsSSA")==0) return FlowequationIsSSAEnum;
1459 else if (strcmp(name,"FlowequationIsNitsche")==0) return FlowequationIsNitscheEnum;
1460@@ -258,11 +259,11 @@
1461 else if (strcmp(name,"InputToSmooth")==0) return InputToSmoothEnum;
1462 else if (strcmp(name,"InversionAlgorithm")==0) return InversionAlgorithmEnum;
1463 else if (strcmp(name,"InversionControlParameters")==0) return InversionControlParametersEnum;
1464- else if (strcmp(name,"InversionControlScalingFactors")==0) return InversionControlScalingFactorsEnum;
1465 else stage=3;
1466 }
1467 if(stage==3){
1468- if (strcmp(name,"InversionCostFunctions")==0) return InversionCostFunctionsEnum;
1469+ if (strcmp(name,"InversionControlScalingFactors")==0) return InversionControlScalingFactorsEnum;
1470+ else if (strcmp(name,"InversionCostFunctions")==0) return InversionCostFunctionsEnum;
1471 else if (strcmp(name,"InversionDxmin")==0) return InversionDxminEnum;
1472 else if (strcmp(name,"InversionGatol")==0) return InversionGatolEnum;
1473 else if (strcmp(name,"InversionGradientScaling")==0) return InversionGradientScalingEnum;
1474@@ -381,11 +382,11 @@
1475 else if (strcmp(name,"SamplingRobin")==0) return SamplingRobinEnum;
1476 else if (strcmp(name,"SamplingSeed")==0) return SamplingSeedEnum;
1477 else if (strcmp(name,"SaveResults")==0) return SaveResultsEnum;
1478- else if (strcmp(name,"SolidearthPartitionIce")==0) return SolidearthPartitionIceEnum;
1479 else stage=4;
1480 }
1481 if(stage==4){
1482- if (strcmp(name,"SolidearthPartitionHydro")==0) return SolidearthPartitionHydroEnum;
1483+ if (strcmp(name,"SolidearthPartitionIce")==0) return SolidearthPartitionIceEnum;
1484+ else if (strcmp(name,"SolidearthPartitionHydro")==0) return SolidearthPartitionHydroEnum;
1485 else if (strcmp(name,"SolidearthPartitionOcean")==0) return SolidearthPartitionOceanEnum;
1486 else if (strcmp(name,"SolidearthNpartIce")==0) return SolidearthNpartIceEnum;
1487 else if (strcmp(name,"SolidearthNpartOcean")==0) return SolidearthNpartOceanEnum;
1488@@ -504,11 +505,11 @@
1489 else if (strcmp(name,"SmbIsturbulentflux")==0) return SmbIsturbulentfluxEnum;
1490 else if (strcmp(name,"SmbK")==0) return SmbKEnum;
1491 else if (strcmp(name,"SmbLapseRates")==0) return SmbLapseRatesEnum;
1492- else if (strcmp(name,"SmbNumBasins")==0) return SmbNumBasinsEnum;
1493 else stage=5;
1494 }
1495 if(stage==5){
1496- if (strcmp(name,"SmbNumElevationBins")==0) return SmbNumElevationBinsEnum;
1497+ if (strcmp(name,"SmbNumBasins")==0) return SmbNumBasinsEnum;
1498+ else if (strcmp(name,"SmbNumElevationBins")==0) return SmbNumElevationBinsEnum;
1499 else if (strcmp(name,"SmbNumRequestedOutputs")==0) return SmbNumRequestedOutputsEnum;
1500 else if (strcmp(name,"SmbPfac")==0) return SmbPfacEnum;
1501 else if (strcmp(name,"SmbPhi")==0) return SmbPhiEnum;
1502@@ -627,11 +628,11 @@
1503 else if (strcmp(name,"BasalforcingsDeepwaterMeltingRateValuesAutoregression")==0) return BasalforcingsDeepwaterMeltingRateValuesAutoregressionEnum;
1504 else if (strcmp(name,"BasalforcingsFloatingiceMeltingRate")==0) return BasalforcingsFloatingiceMeltingRateEnum;
1505 else if (strcmp(name,"BasalforcingsGeothermalflux")==0) return BasalforcingsGeothermalfluxEnum;
1506- else if (strcmp(name,"BasalforcingsGroundediceMeltingRate")==0) return BasalforcingsGroundediceMeltingRateEnum;
1507 else stage=6;
1508 }
1509 if(stage==6){
1510- if (strcmp(name,"BasalforcingsLinearBasinId")==0) return BasalforcingsLinearBasinIdEnum;
1511+ if (strcmp(name,"BasalforcingsGroundediceMeltingRate")==0) return BasalforcingsGroundediceMeltingRateEnum;
1512+ else if (strcmp(name,"BasalforcingsLinearBasinId")==0) return BasalforcingsLinearBasinIdEnum;
1513 else if (strcmp(name,"BasalforcingsPerturbationMeltingRate")==0) return BasalforcingsPerturbationMeltingRateEnum;
1514 else if (strcmp(name,"BasalforcingsSpatialDeepwaterElevation")==0) return BasalforcingsSpatialDeepwaterElevationEnum;
1515 else if (strcmp(name,"BasalforcingsSpatialDeepwaterMeltingRate")==0) return BasalforcingsSpatialDeepwaterMeltingRateEnum;
1516@@ -674,6 +675,7 @@
1517 else if (strcmp(name,"BottomPressureOld")==0) return BottomPressureOldEnum;
1518 else if (strcmp(name,"CalvingCalvingrate")==0) return CalvingCalvingrateEnum;
1519 else if (strcmp(name,"CalvingHabFraction")==0) return CalvingHabFractionEnum;
1520+ else if (strcmp(name,"CalvingAblationrate")==0) return CalvingAblationrateEnum;
1521 else if (strcmp(name,"CalvingMeltingrate")==0) return CalvingMeltingrateEnum;
1522 else if (strcmp(name,"CalvingStressThresholdFloatingice")==0) return CalvingStressThresholdFloatingiceEnum;
1523 else if (strcmp(name,"CalvingStressThresholdGroundedice")==0) return CalvingStressThresholdGroundediceEnum;
1524@@ -749,12 +751,12 @@
1525 else if (strcmp(name,"FrictionM")==0) return FrictionMEnum;
1526 else if (strcmp(name,"FrictionP")==0) return FrictionPEnum;
1527 else if (strcmp(name,"FrictionPressureAdjustedTemperature")==0) return FrictionPressureAdjustedTemperatureEnum;
1528- else if (strcmp(name,"FrictionQ")==0) return FrictionQEnum;
1529- else if (strcmp(name,"FrictionSedimentCompressibilityCoefficient")==0) return FrictionSedimentCompressibilityCoefficientEnum;
1530 else stage=7;
1531 }
1532 if(stage==7){
1533- if (strcmp(name,"FrictionTillFrictionAngle")==0) return FrictionTillFrictionAngleEnum;
1534+ if (strcmp(name,"FrictionQ")==0) return FrictionQEnum;
1535+ else if (strcmp(name,"FrictionSedimentCompressibilityCoefficient")==0) return FrictionSedimentCompressibilityCoefficientEnum;
1536+ else if (strcmp(name,"FrictionTillFrictionAngle")==0) return FrictionTillFrictionAngleEnum;
1537 else if (strcmp(name,"FrictionWaterLayer")==0) return FrictionWaterLayerEnum;
1538 else if (strcmp(name,"Frictionf")==0) return FrictionfEnum;
1539 else if (strcmp(name,"FrontalForcingsBasinId")==0) return FrontalForcingsBasinIdEnum;
1540@@ -872,12 +874,12 @@
1541 else if (strcmp(name,"SealevelBarystaticIceMask")==0) return SealevelBarystaticIceMaskEnum;
1542 else if (strcmp(name,"SealevelBarystaticIceWeights")==0) return SealevelBarystaticIceWeightsEnum;
1543 else if (strcmp(name,"SealevelBarystaticIceArea")==0) return SealevelBarystaticIceAreaEnum;
1544- else if (strcmp(name,"SealevelBarystaticIceLatbar")==0) return SealevelBarystaticIceLatbarEnum;
1545- else if (strcmp(name,"SealevelBarystaticIceLongbar")==0) return SealevelBarystaticIceLongbarEnum;
1546 else stage=8;
1547 }
1548 if(stage==8){
1549- if (strcmp(name,"SealevelBarystaticIceLoad")==0) return SealevelBarystaticIceLoadEnum;
1550+ if (strcmp(name,"SealevelBarystaticIceLatbar")==0) return SealevelBarystaticIceLatbarEnum;
1551+ else if (strcmp(name,"SealevelBarystaticIceLongbar")==0) return SealevelBarystaticIceLongbarEnum;
1552+ else if (strcmp(name,"SealevelBarystaticIceLoad")==0) return SealevelBarystaticIceLoadEnum;
1553 else if (strcmp(name,"SealevelBarystaticHydroMask")==0) return SealevelBarystaticHydroMaskEnum;
1554 else if (strcmp(name,"SealevelBarystaticHydroWeights")==0) return SealevelBarystaticHydroWeightsEnum;
1555 else if (strcmp(name,"SealevelBarystaticHydroArea")==0) return SealevelBarystaticHydroAreaEnum;
1556@@ -995,12 +997,12 @@
1557 else if (strcmp(name,"SmbGdn")==0) return SmbGdnEnum;
1558 else if (strcmp(name,"SmbGdnini")==0) return SmbGdniniEnum;
1559 else if (strcmp(name,"SmbGsp")==0) return SmbGspEnum;
1560- else if (strcmp(name,"SmbGspini")==0) return SmbGspiniEnum;
1561- else if (strcmp(name,"SmbHref")==0) return SmbHrefEnum;
1562 else stage=9;
1563 }
1564 if(stage==9){
1565- if (strcmp(name,"SmbIsInitialized")==0) return SmbIsInitializedEnum;
1566+ if (strcmp(name,"SmbGspini")==0) return SmbGspiniEnum;
1567+ else if (strcmp(name,"SmbHref")==0) return SmbHrefEnum;
1568+ else if (strcmp(name,"SmbIsInitialized")==0) return SmbIsInitializedEnum;
1569 else if (strcmp(name,"SmbMAdd")==0) return SmbMAddEnum;
1570 else if (strcmp(name,"SmbMassBalance")==0) return SmbMassBalanceEnum;
1571 else if (strcmp(name,"SmbMassBalanceSubstep")==0) return SmbMassBalanceSubstepEnum;
1572@@ -1118,12 +1120,12 @@
1573 else if (strcmp(name,"VxShear")==0) return VxShearEnum;
1574 else if (strcmp(name,"VxSurface")==0) return VxSurfaceEnum;
1575 else if (strcmp(name,"VyAverage")==0) return VyAverageEnum;
1576- else if (strcmp(name,"VyBase")==0) return VyBaseEnum;
1577- else if (strcmp(name,"Vy")==0) return VyEnum;
1578 else stage=10;
1579 }
1580 if(stage==10){
1581- if (strcmp(name,"VyMesh")==0) return VyMeshEnum;
1582+ if (strcmp(name,"VyBase")==0) return VyBaseEnum;
1583+ else if (strcmp(name,"Vy")==0) return VyEnum;
1584+ else if (strcmp(name,"VyMesh")==0) return VyMeshEnum;
1585 else if (strcmp(name,"VyObs")==0) return VyObsEnum;
1586 else if (strcmp(name,"VyShear")==0) return VyShearEnum;
1587 else if (strcmp(name,"VySurface")==0) return VySurfaceEnum;
1588@@ -1241,12 +1243,12 @@
1589 else if (strcmp(name,"Outputdefinition95")==0) return Outputdefinition95Enum;
1590 else if (strcmp(name,"Outputdefinition96")==0) return Outputdefinition96Enum;
1591 else if (strcmp(name,"Outputdefinition97")==0) return Outputdefinition97Enum;
1592- else if (strcmp(name,"Outputdefinition98")==0) return Outputdefinition98Enum;
1593- else if (strcmp(name,"Outputdefinition99")==0) return Outputdefinition99Enum;
1594 else stage=11;
1595 }
1596 if(stage==11){
1597- if (strcmp(name,"Outputdefinition9")==0) return Outputdefinition9Enum;
1598+ if (strcmp(name,"Outputdefinition98")==0) return Outputdefinition98Enum;
1599+ else if (strcmp(name,"Outputdefinition99")==0) return Outputdefinition99Enum;
1600+ else if (strcmp(name,"Outputdefinition9")==0) return Outputdefinition9Enum;
1601 else if (strcmp(name,"Outputdefinition100")==0) return Outputdefinition100Enum;
1602 else if (strcmp(name,"InputsEND")==0) return InputsENDEnum;
1603 else if (strcmp(name,"Absolute")==0) return AbsoluteEnum;
1604@@ -1364,12 +1366,12 @@
1605 else if (strcmp(name,"GaussSeg")==0) return GaussSegEnum;
1606 else if (strcmp(name,"GaussTetra")==0) return GaussTetraEnum;
1607 else if (strcmp(name,"GaussTria")==0) return GaussTriaEnum;
1608- else if (strcmp(name,"GenericOption")==0) return GenericOptionEnum;
1609- else if (strcmp(name,"GenericParam")==0) return GenericParamEnum;
1610 else stage=12;
1611 }
1612 if(stage==12){
1613- if (strcmp(name,"GenericExternalResult")==0) return GenericExternalResultEnum;
1614+ if (strcmp(name,"GenericOption")==0) return GenericOptionEnum;
1615+ else if (strcmp(name,"GenericParam")==0) return GenericParamEnum;
1616+ else if (strcmp(name,"GenericExternalResult")==0) return GenericExternalResultEnum;
1617 else if (strcmp(name,"Gradient1")==0) return Gradient1Enum;
1618 else if (strcmp(name,"Gradient2")==0) return Gradient2Enum;
1619 else if (strcmp(name,"Gradient3")==0) return Gradient3Enum;
1620@@ -1417,7 +1419,7 @@
1621 else if (strcmp(name,"InversionVzObs")==0) return InversionVzObsEnum;
1622 else if (strcmp(name,"J")==0) return JEnum;
1623 else if (strcmp(name,"L1L2Approximation")==0) return L1L2ApproximationEnum;
1624- else if (strcmp(name,"MLHOApproximation")==0) return MLHOApproximationEnum;
1625+ else if (strcmp(name,"MOLHOApproximation")==0) return MOLHOApproximationEnum;
1626 else if (strcmp(name,"L2ProjectionBaseAnalysis")==0) return L2ProjectionBaseAnalysisEnum;
1627 else if (strcmp(name,"L2ProjectionEPLAnalysis")==0) return L2ProjectionEPLAnalysisEnum;
1628 else if (strcmp(name,"LACrouzeixRaviart")==0) return LACrouzeixRaviartEnum;
1629@@ -1487,12 +1489,12 @@
1630 else if (strcmp(name,"NoMeltOnPartiallyFloating")==0) return NoMeltOnPartiallyFloatingEnum;
1631 else if (strcmp(name,"Nodal")==0) return NodalEnum;
1632 else if (strcmp(name,"Nodalvalue")==0) return NodalvalueEnum;
1633- else if (strcmp(name,"NodeSId")==0) return NodeSIdEnum;
1634- else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum;
1635 else stage=13;
1636 }
1637 if(stage==13){
1638- if (strcmp(name,"None")==0) return NoneEnum;
1639+ if (strcmp(name,"NodeSId")==0) return NodeSIdEnum;
1640+ else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum;
1641+ else if (strcmp(name,"None")==0) return NoneEnum;
1642 else if (strcmp(name,"Numberedcostfunction")==0) return NumberedcostfunctionEnum;
1643 else if (strcmp(name,"NyeCO2")==0) return NyeCO2Enum;
1644 else if (strcmp(name,"NyeH2O")==0) return NyeH2OEnum;
1645@@ -1610,12 +1612,12 @@
1646 else if (strcmp(name,"TotalSmb")==0) return TotalSmbEnum;
1647 else if (strcmp(name,"TotalSmbScaled")==0) return TotalSmbScaledEnum;
1648 else if (strcmp(name,"TransientArrayParam")==0) return TransientArrayParamEnum;
1649- else if (strcmp(name,"TransientInput")==0) return TransientInputEnum;
1650- else if (strcmp(name,"TransientParam")==0) return TransientParamEnum;
1651 else stage=14;
1652 }
1653 if(stage==14){
1654- if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum;
1655+ if (strcmp(name,"TransientInput")==0) return TransientInputEnum;
1656+ else if (strcmp(name,"TransientParam")==0) return TransientParamEnum;
1657+ else if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum;
1658 else if (strcmp(name,"Tria")==0) return TriaEnum;
1659 else if (strcmp(name,"TriaInput")==0) return TriaInputEnum;
1660 else if (strcmp(name,"UzawaPressureAnalysis")==0) return UzawaPressureAnalysisEnum;
1661Index: ../trunk-jpl/src/m/boundaryconditions/SetMOLHOBC.m
1662===================================================================
1663--- ../trunk-jpl/src/m/boundaryconditions/SetMOLHOBC.m (nonexistent)
1664+++ ../trunk-jpl/src/m/boundaryconditions/SetMOLHOBC.m (revision 27031)
1665@@ -0,0 +1,16 @@
1666+function md=SetMOLHOBC(md)
1667+%SETMOLHOBC - Create the boundary conditions for stressbalance for MOLHO: VxBase, VyBase, VxShear, VyShear
1668+%
1669+% Usage:
1670+% md=SetMOLHOBC(md)
1671+%
1672+
1673+
1674+%node on Dirichlet
1675+if md.flowequation.isMOLHO
1676+ md.stressbalance.spcvx_base=md.stressbalance.spcvx;
1677+ md.stressbalance.spcvy_base=md.stressbalance.spcvy;
1678+
1679+ md.stressbalance.spcvx_shear=NaN*ones(size(md.stressbalance.spcvx_base));
1680+ md.stressbalance.spcvy_shear=NaN*ones(size(md.stressbalance.spcvy_base));
1681+end
1682Index: ../trunk-jpl/src/m/classes/flowequation.js
1683===================================================================
1684--- ../trunk-jpl/src/m/classes/flowequation.js (revision 27030)
1685+++ ../trunk-jpl/src/m/classes/flowequation.js (revision 27031)
1686@@ -21,7 +21,7 @@
1687 fielddisplay(this,'isSIA','is the Shallow Ice Approximation (SIA) used ?');
1688 fielddisplay(this,'isSSA','is the Shelfy-Stream Approximation (SSA) used ?');
1689 fielddisplay(this,'isL1L2','is the L1L2 approximation used ?');
1690- fielddisplay(this,'isMLHO','is the Mono-Layer Higher-Order approximation used?');
1691+ fielddisplay(this,'isMOLHO','is the MOno-Layer Higher-Order (MOLHO) approximation used?');
1692 fielddisplay(this,'isHO','is the Higher-Order (HO) approximation used ?');
1693 fielddisplay(this,'isFS','are the Full-FS (FS) equations used ?');
1694 fielddisplay(this,'isNitscheBC','is weakly imposed condition used?');
1695@@ -40,13 +40,13 @@
1696 return "flowequation";
1697
1698 }// }}}
1699- this.extrude = function(md) {//{{{
1700- this.element_equation=project3d(md,'vector',this.element_equation,'type','element');
1701- this.vertex_equation=project3d(md,'vector',this.vertex_equation,'type','node');
1702- this.borderSSA=project3d(md,'vector',this.borderSSA,'type','node');
1703- this.borderHO=project3d(md,'vector',this.borderHO,'type','node');
1704- this.borderFS=project3d(md,'vector',this.borderFS,'type','node');
1705- return this;
1706+ this.extrude = function(md) {//{{{
1707+ this.element_equation=project3d(md,'vector',this.element_equation,'type','element');
1708+ this.vertex_equation=project3d(md,'vector',this.vertex_equation,'type','node');
1709+ this.borderSSA=project3d(md,'vector',this.borderSSA,'type','node');
1710+ this.borderHO=project3d(md,'vector',this.borderHO,'type','node');
1711+ this.borderFS=project3d(md,'vector',this.borderFS,'type','node');
1712+ return this;
1713 }//}}}
1714 this.checkconsistency = function(md,solution,analyses) {//{{{
1715
1716@@ -58,7 +58,7 @@
1717 checkfield(md,'fieldname','flowequation.isSIA','numel',[1],'values',[0, 1]);
1718 checkfield(md,'fieldname','flowequation.isSSA','numel',[1],'values',[0, 1]);
1719 checkfield(md,'fieldname','flowequation.isL1L2','numel',[1],'values',[0, 1]);
1720- checkfield(md,'fieldname','flowequation.isMLHO','numel',[1],'values',[0, 1]);
1721+ checkfield(md,'fieldname','flowequation.isMOLHO','numel',[1],'values',[0, 1]);
1722 checkfield(md,'fieldname','flowequation.isHO','numel',[1],'values',[0, 1]);
1723 checkfield(md,'fieldname','flowequation.isFS','numel',[1],'values',[0, 1]);
1724 checkfield(md,'fieldname','flowequation.isNitscheBC','numel',[1],'values',[0, 1]);
1725@@ -92,7 +92,7 @@
1726 }
1727 else throw Error('Case not supported yet');
1728
1729- if (!(this.isSIA | this.isSSA | this.isL1L2 | this.isMLHO | this.isHO | this.isFS)){
1730+ if (!(this.isSIA | this.isSSA | this.isL1L2 | this.isMOLHO | this.isHO | this.isFS)){
1731 checkmessage(md,['no element types set for this model']);
1732 }
1733 if(ArrayAnyEqual(ArrayIsMember('StressbalanceSIAAnalysis', analyses),1)){
1734@@ -107,7 +107,7 @@
1735 WriteData(fid,prefix,'object',this,'fieldname','isSIA','format','Boolean');
1736 WriteData(fid,prefix,'object',this,'fieldname','isSSA','format','Boolean');
1737 WriteData(fid,prefix,'object',this,'fieldname','isL1L2','format','Boolean');
1738- WriteData(fid,prefix,'object',this,'fieldname','isMLHO','format','Boolean');
1739+ WriteData(fid,prefix,'object',this,'fieldname','isMOLHO','format','Boolean');
1740 WriteData(fid,prefix,'object',this,'fieldname','isHO','format','Boolean');
1741 WriteData(fid,prefix,'object',this,'fieldname','isFS','format','Boolean');
1742 WriteData(fid,prefix,'object',this,'fieldname','isNitscheBC','format','Boolean');
1743@@ -137,7 +137,7 @@
1744 this.isSIA = 0;
1745 this.isSSA = 0;
1746 this.isL1L2 = 0;
1747- this.isMLHO = 0;
1748+ this.isMOLHO = 0;
1749 this.isHO = 0;
1750 this.isFS = 0;
1751 this.isNitscheBC = 0;
1752Index: ../trunk-jpl/src/m/classes/inversion.m
1753===================================================================
1754--- ../trunk-jpl/src/m/classes/inversion.m (revision 27030)
1755+++ ../trunk-jpl/src/m/classes/inversion.m (revision 27031)
1756@@ -103,8 +103,8 @@
1757
1758 %Only SSA, HO and FS are supported right now
1759 if strcmp(solution,'StressbalanceSolution')
1760- if ~(md.flowequation.isSSA || md.flowequation.isMLHO || md.flowequation.isHO || md.flowequation.isFS || md.flowequation.isL1L2),
1761- md = checkmessage(md,['inversion can only be performed for SSA, MLHO, HO or FS ice flow models']);
1762+ if ~(md.flowequation.isSSA || md.flowequation.isMOLHO || md.flowequation.isHO || md.flowequation.isFS || md.flowequation.isL1L2),
1763+ md = checkmessage(md,['inversion can only be performed for SSA, MOLHO, HO or FS ice flow models']);
1764 end
1765 end
1766 if strcmp(solution,'BalancethicknessSolution')
1767Index: ../trunk-jpl/src/m/classes/stressbalance.py
1768===================================================================
1769--- ../trunk-jpl/src/m/classes/stressbalance.py (revision 27030)
1770+++ ../trunk-jpl/src/m/classes/stressbalance.py (revision 27031)
1771@@ -58,7 +58,7 @@
1772 s += '{}\n'.format(fielddisplay(self, 'spcvy', 'y-axis velocity constraint (NaN means no constraint) [m / yr]'))
1773 s += '{}\n'.format(fielddisplay(self, 'spcvz', 'z-axis velocity constraint (NaN means no constraint) [m / yr]'))
1774 s += '{}\n'.format(fielddisplay(self, 'icefront', 'segments on ice front list (last column 0: Air, 1: Water, 2: Ice'))
1775- s += ' MLHO boundary conditions:\n'
1776+ s += ' MOLHO boundary conditions:\n'
1777 s += '{}\n'.format(fielddisplay(self, 'spcvx_base', 'x-axis basal velocity constraint (NaN means no constraint) [m / yr]'))
1778 s += '{}\n'.format(fielddisplay(self, 'spcvy_base', 'y-axis basal velocity constraint (NaN means no constraint) [m / yr]'))
1779 s += '{}\n'.format(fielddisplay(self, 'spcvx_shear', 'x-axis shear velocity constraint (NaN means no constraint) [m / yr]'))
1780@@ -85,7 +85,7 @@
1781 self.referential = project3d(md, 'vector', self.referential, 'type', 'node')
1782 self.loadingforce = project3d(md, 'vector', self.loadingforce, 'type', 'node')
1783
1784- if md.flowequation.isMLHO:
1785+ if md.flowequation.isMOLHO:
1786 self.spcvx_base = project3d(md, 'vector', self.spcvx_base, 'type', 'node')
1787 self.spcvy_base = project3d(md, 'vector', self.spcvy_base, 'type', 'node')
1788 self.spcvx_shear = project3d(md, 'vector', self.spcvx_shear, 'type', 'poly', 'degree', 4)
1789@@ -175,7 +175,7 @@
1790 pos = np.nonzero(np.logical_and(md.mask.ocean_levelset, md.mesh.vertexonbase))
1791 if np.any(np.logical_not(np.isnan(md.stressbalance.referential[pos, :]))):
1792 md.checkmessage("no referential should be specified for basal vertices of grounded ice")
1793- if md.flowequation.isMLHO:
1794+ if md.flowequation.isMOLHO:
1795 md = checkfield(md, 'fieldname', 'stressbalance.spcvx_base', 'Inf', 1, 'timeseries', 1)
1796 md = checkfield(md, 'fieldname', 'stressbalance.spcvy_base', 'Inf', 1, 'timeseries', 1)
1797 md = checkfield(md, 'fieldname', 'stressbalance.spcvx_shear', 'Inf', 1, 'timeseries', 1)
1798@@ -214,8 +214,8 @@
1799 outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
1800 outputs = outputscopy
1801 WriteData(fid, prefix, 'data', outputs, 'name', 'md.stressbalance.requested_outputs', 'format', 'StringArray')
1802- # MLHO
1803- if md.flowequation.isMLHO:
1804+ # MOLHO
1805+ if md.flowequation.isMOLHO:
1806 WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'spcvx_base', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
1807 WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'spcvy_base', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
1808 WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'spcvx_shear', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
1809Index: ../trunk-jpl/src/c/classes/Materials/Matestar.h
1810===================================================================
1811--- ../trunk-jpl/src/c/classes/Materials/Matestar.h (revision 27030)
1812+++ ../trunk-jpl/src/c/classes/Materials/Matestar.h (revision 27031)
1813@@ -75,8 +75,8 @@
1814
1815 void ViscosityFS(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);
1816 void ViscosityHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
1817- void ViscosityMLHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input);
1818- void ViscosityMLHOAdjoint(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input);
1819+ void ViscosityMOLHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input);
1820+ void ViscosityMOLHOAdjoint(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input);
1821 void ViscosityL1L2(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* surf);
1822 void ViscositySSA(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
1823 void ViscosityBFS(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input,IssmDouble eps_eff);
1824Index: ../trunk-jpl/src/c/classes/Materials/Matice.cpp
1825===================================================================
1826--- ../trunk-jpl/src/c/classes/Materials/Matice.cpp (revision 27030)
1827+++ ../trunk-jpl/src/c/classes/Materials/Matice.cpp (revision 27031)
1828@@ -733,7 +733,7 @@
1829 /*Assign output pointer*/
1830 *pviscosity=viscosity;
1831 }/*}}}*/
1832-void Matice::ViscosityMLHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vxbase_input,Input* vybase_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input){/*{{{*/
1833+void Matice::ViscosityMOLHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vxbase_input,Input* vybase_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input){/*{{{*/
1834
1835 /*Intermediaries*/
1836 IssmDouble epsilon[5]; /* epsilon=[exx,eyy,exy,exz,eyz]; */
1837@@ -754,7 +754,7 @@
1838 zeta=0.5*(gauss_seg->coord1+1);
1839
1840 /* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy (for a given zeta)*/
1841- element->StrainRateMLHO(&epsilon[0],xyz_list,gauss,
1842+ element->StrainRateMOLHO(&epsilon[0],xyz_list,gauss,
1843 vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input,zeta);
1844 epsilon_eff=sqrt(epsilon[0]*epsilon[0] + epsilon[1]*epsilon[1] + epsilon[2]*epsilon[2]
1845 + epsilon[3]*epsilon[3] + epsilon[4]*epsilon[4] + epsilon[0]*epsilon[1]);
1846@@ -794,7 +794,7 @@
1847 /*Clean up*/
1848 delete gauss_seg;
1849 }/*}}}*/
1850-void Matice::ViscosityMLHOAdjoint(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vxbase_input,Input* vybase_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input){/*{{{*/
1851+void Matice::ViscosityMOLHOAdjoint(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vxbase_input,Input* vybase_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input){/*{{{*/
1852
1853 /* To compute the additional 5 terms in the viscosity appear in the adjoint equation*/
1854 /*Intermediaries*/
1855@@ -816,7 +816,7 @@
1856 zeta=0.5*(gauss_seg->coord1+1);
1857
1858 /* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy (for a given zeta)*/
1859- element->StrainRateMLHO(&epsilon[0],xyz_list,gauss,
1860+ element->StrainRateMOLHO(&epsilon[0],xyz_list,gauss,
1861 vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input,zeta);
1862 epsilon_eff=sqrt(epsilon[0]*epsilon[0] + epsilon[1]*epsilon[1] + epsilon[2]*epsilon[2]
1863 + epsilon[3]*epsilon[3] + epsilon[4]*epsilon[4] + epsilon[0]*epsilon[1]);
1864Index: ../trunk-jpl/src/c/classes/Materials/Matice.h
1865===================================================================
1866--- ../trunk-jpl/src/c/classes/Materials/Matice.h (revision 27030)
1867+++ ../trunk-jpl/src/c/classes/Materials/Matice.h (revision 27031)
1868@@ -77,8 +77,8 @@
1869
1870 void ViscosityFS(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);
1871 void ViscosityHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
1872- void ViscosityMLHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input);
1873- void ViscosityMLHOAdjoint(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input);
1874+ void ViscosityMOLHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input);
1875+ void ViscosityMOLHOAdjoint(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input);
1876 void ViscosityL1L2(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* surf);
1877 void ViscositySSA(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
1878 void ViscosityBFS(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input,IssmDouble eps_eff){_error_("not supported");};
1879Index: ../trunk-jpl/src/c/classes/Materials/Matlitho.h
1880===================================================================
1881--- ../trunk-jpl/src/c/classes/Materials/Matlitho.h (revision 27030)
1882+++ ../trunk-jpl/src/c/classes/Materials/Matlitho.h (revision 27031)
1883@@ -71,8 +71,8 @@
1884
1885 void ViscosityFS(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){_error_("not supported");};
1886 void ViscosityHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){_error_("not supported");};
1887- void ViscosityMLHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input){_error_("not supported");};
1888- void ViscosityMLHOAdjoint(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input){_error_("not supported");};
1889+ void ViscosityMOLHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input){_error_("not supported");};
1890+ void ViscosityMOLHOAdjoint(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input){_error_("not supported");};
1891 void ViscosityL1L2(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* surf){_error_("not supported");};
1892 void ViscositySSA(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){_error_("not supported");};
1893 void ViscosityBFS(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input,IssmDouble epseff){_error_("not supported");};
1894Index: ../trunk-jpl/src/c/classes/Node.cpp
1895===================================================================
1896--- ../trunk-jpl/src/c/classes/Node.cpp (revision 27030)
1897+++ ../trunk-jpl/src/c/classes/Node.cpp (revision 27031)
1898@@ -117,7 +117,7 @@
1899 if(in_approximation==L1L2ApproximationEnum && !reCast<int>(iomodel->Data("md.mesh.vertexonbase")[io_index])){
1900 this->HardDeactivate();
1901 }
1902- if(in_approximation==MLHOApproximationEnum && !reCast<int>(iomodel->Data("md.mesh.vertexonbase")[io_index])){
1903+ if(in_approximation==MOLHOApproximationEnum && !reCast<int>(iomodel->Data("md.mesh.vertexonbase")[io_index])){
1904 this->HardDeactivate();
1905 }
1906 if(in_approximation==SSAHOApproximationEnum && reCast<int>(iomodel->Data("md.flowequation.borderSSA")[io_index])){
1907Index: ../trunk-jpl/src/c/cores/stressbalance_core.cpp
1908===================================================================
1909--- ../trunk-jpl/src/c/cores/stressbalance_core.cpp (revision 27030)
1910+++ ../trunk-jpl/src/c/cores/stressbalance_core.cpp (revision 27031)
1911@@ -18,7 +18,7 @@
1912 /*parameters: */
1913 bool dakota_analysis,control_analysis;
1914 int domaintype;
1915- bool isSIA,isSSA,isL1L2,isMLHO,isHO,isFS,isNitsche;
1916+ bool isSIA,isSSA,isL1L2,isMOLHO,isHO,isFS,isNitsche;
1917 bool save_results;
1918 int solution_type;
1919 int numoutputs = 0;
1920@@ -30,7 +30,7 @@
1921 femmodel->parameters->FindParam(&isSIA,FlowequationIsSIAEnum);
1922 femmodel->parameters->FindParam(&isSSA,FlowequationIsSSAEnum);
1923 femmodel->parameters->FindParam(&isL1L2,FlowequationIsL1L2Enum);
1924- femmodel->parameters->FindParam(&isMLHO,FlowequationIsMLHOEnum);
1925+ femmodel->parameters->FindParam(&isMOLHO,FlowequationIsMOLHOEnum);
1926 femmodel->parameters->FindParam(&isHO,FlowequationIsHOEnum);
1927 femmodel->parameters->FindParam(&isFS,FlowequationIsFSEnum);
1928 femmodel->parameters->FindParam(&isNitsche,FlowequationIsNitscheEnum);
1929@@ -74,7 +74,7 @@
1930 }
1931
1932 /*Compute stressbalance for SSA L1L2 HO and FS*/
1933- if(isSSA || isL1L2 || isMLHO || isHO || isFS){
1934+ if(isSSA || isL1L2 || isMOLHO || isHO || isFS){
1935 analysis = new StressbalanceAnalysis();
1936 analysis->Core(femmodel);
1937 delete analysis;
1938@@ -81,7 +81,7 @@
1939 }
1940
1941 /*Compute vertical velocities*/
1942- if (domaintype==Domain3DEnum && (isSIA || isSSA || isL1L2 || isMLHO || isHO)){
1943+ if (domaintype==Domain3DEnum && (isSIA || isSSA || isL1L2 || isMOLHO || isHO)){
1944
1945 /*We need basal melt rates for vertical velocity*/
1946 bmb_core(femmodel);
1947Index: ../trunk-jpl/src/c/modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.cpp
1948===================================================================
1949--- ../trunk-jpl/src/c/modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.cpp (revision 27030)
1950+++ ../trunk-jpl/src/c/modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.cpp (revision 27031)
1951@@ -65,7 +65,7 @@
1952 Input* vy_input = NULL;
1953 Input* vyobs_input = NULL;
1954
1955- /*Read SurfaceEnum from 2D models:SSA, L1L2, MLHO*/
1956+ /*Read SurfaceEnum from 2D models:SSA, L1L2, MOLHO*/
1957 if (domaintype == Domain2DhorizontalEnum) {
1958 vx_input = topelement->GetInput(VxSurfaceEnum); _assert_(vx_input);
1959 if(numcomponents==2){
1960Index: ../trunk-jpl/src/c/modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.cpp
1961===================================================================
1962--- ../trunk-jpl/src/c/modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.cpp (revision 27030)
1963+++ ../trunk-jpl/src/c/modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.cpp (revision 27031)
1964@@ -73,7 +73,7 @@
1965 Input* vy_input = NULL;
1966 Input* vyobs_input = NULL;
1967
1968- /*Read SurfaceEnum from 2D models:SSA, L1L2, MLHO*/
1969+ /*Read SurfaceEnum from 2D models:SSA, L1L2, MOLHO*/
1970 if (domaintype == Domain2DhorizontalEnum) {
1971 vx_input = topelement->GetInput(VxSurfaceEnum); _assert_(vx_input);
1972 if(numcomponents==2){
1973Index: ../trunk-jpl/src/c/modules/SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.cpp
1974===================================================================
1975--- ../trunk-jpl/src/c/modules/SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.cpp (revision 27030)
1976+++ ../trunk-jpl/src/c/modules/SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.cpp (revision 27031)
1977@@ -67,7 +67,7 @@
1978 Input* vy_input = NULL;
1979 Input* vyobs_input = NULL;
1980
1981- /*Read SurfaceEnum from 2D models:SSA, L1L2, MLHO*/
1982+ /*Read SurfaceEnum from 2D models:SSA, L1L2, MOLHO*/
1983 if (domaintype == Domain2DhorizontalEnum) {
1984 vx_input = topelement->GetInput(VxSurfaceEnum); _assert_(vx_input);
1985 if(numcomponents==2){
1986Index: ../trunk-jpl/src/c/modules/SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.cpp
1987===================================================================
1988--- ../trunk-jpl/src/c/modules/SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.cpp (revision 27030)
1989+++ ../trunk-jpl/src/c/modules/SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.cpp (revision 27031)
1990@@ -67,7 +67,7 @@
1991 Input* vy_input = NULL;
1992 Input* vyobs_input = NULL;
1993
1994- /*Read SurfaceEnum from 2D models:SSA, L1L2, MLHO*/
1995+ /*Read SurfaceEnum from 2D models:SSA, L1L2, MOLHO*/
1996 if (domaintype == Domain2DhorizontalEnum) {
1997 vx_input = topelement->GetInput(VxSurfaceEnum); _assert_(vx_input);
1998 if(numcomponents==2){
1999Index: ../trunk-jpl/src/c/modules/SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.cpp
2000===================================================================
2001--- ../trunk-jpl/src/c/modules/SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.cpp (revision 27030)
2002+++ ../trunk-jpl/src/c/modules/SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.cpp (revision 27031)
2003@@ -67,7 +67,7 @@
2004 Input* vy_input = NULL;
2005 Input* vyobs_input = NULL;
2006
2007- /*Read SurfaceEnum from 2D models:SSA, L1L2, MLHO*/
2008+ /*Read SurfaceEnum from 2D models:SSA, L1L2, MOLHO*/
2009 if (domaintype == Domain2DhorizontalEnum) {
2010 vx_input = topelement->GetInput(VxSurfaceEnum); _assert_(vx_input);
2011 if(numcomponents==2){
2012Index: ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
2013===================================================================
2014--- ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h (revision 27030)
2015+++ ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h (revision 27031)
2016@@ -169,7 +169,7 @@
2017 FlowequationIsFSEnum,
2018 FlowequationIsHOEnum,
2019 FlowequationIsL1L2Enum,
2020- FlowequationIsMLHOEnum,
2021+ FlowequationIsMOLHOEnum,
2022 FlowequationIsSIAEnum,
2023 FlowequationIsSSAEnum,
2024 FlowequationIsNitscheEnum,
2025@@ -1383,7 +1383,7 @@
2026 InversionVzObsEnum,
2027 JEnum,
2028 L1L2ApproximationEnum,
2029- MLHOApproximationEnum,
2030+ MOLHOApproximationEnum,
2031 L2ProjectionBaseAnalysisEnum,
2032 L2ProjectionEPLAnalysisEnum,
2033 LACrouzeixRaviartEnum,
2034Index: ../trunk-jpl/src/c/shared/Enum/Enumjl.vim
2035===================================================================
2036--- ../trunk-jpl/src/c/shared/Enum/Enumjl.vim (revision 27030)
2037+++ ../trunk-jpl/src/c/shared/Enum/Enumjl.vim (revision 27031)
2038@@ -105,6 +105,7 @@
2039 syn keyword juliaConstC CalvingLawEnum
2040 syn keyword juliaConstC CalvingMinthicknessEnum
2041 syn keyword juliaConstC CalvingTestSpeedfactorEnum
2042+syn keyword juliaConstC CalvingTestIndependentRateEnum
2043 syn keyword juliaConstC CalvingUseParamEnum
2044 syn keyword juliaConstC CalvingScaleThetaEnum
2045 syn keyword juliaConstC CalvingAmpAlphaEnum
2046@@ -167,7 +168,7 @@
2047 syn keyword juliaConstC FlowequationIsFSEnum
2048 syn keyword juliaConstC FlowequationIsHOEnum
2049 syn keyword juliaConstC FlowequationIsL1L2Enum
2050-syn keyword juliaConstC FlowequationIsMLHOEnum
2051+syn keyword juliaConstC FlowequationIsMOLHOEnum
2052 syn keyword juliaConstC FlowequationIsSIAEnum
2053 syn keyword juliaConstC FlowequationIsSSAEnum
2054 syn keyword juliaConstC FlowequationIsNitscheEnum
2055@@ -650,6 +651,7 @@
2056 syn keyword juliaConstC BottomPressureOldEnum
2057 syn keyword juliaConstC CalvingCalvingrateEnum
2058 syn keyword juliaConstC CalvingHabFractionEnum
2059+syn keyword juliaConstC CalvingAblationrateEnum
2060 syn keyword juliaConstC CalvingMeltingrateEnum
2061 syn keyword juliaConstC CalvingStressThresholdFloatingiceEnum
2062 syn keyword juliaConstC CalvingStressThresholdGroundediceEnum
2063@@ -1375,7 +1377,7 @@
2064 syn keyword juliaConstC InversionVzObsEnum
2065 syn keyword juliaConstC JEnum
2066 syn keyword juliaConstC L1L2ApproximationEnum
2067-syn keyword juliaConstC MLHOApproximationEnum
2068+syn keyword juliaConstC MOLHOApproximationEnum
2069 syn keyword juliaConstC L2ProjectionBaseAnalysisEnum
2070 syn keyword juliaConstC L2ProjectionEPLAnalysisEnum
2071 syn keyword juliaConstC LACrouzeixRaviartEnum
2072Index: ../trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp
2073===================================================================
2074--- ../trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp (revision 27030)
2075+++ ../trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp (revision 27031)
2076@@ -344,7 +344,7 @@
2077 case 1: return SIAApproximationEnum;
2078 case 2: return SSAApproximationEnum;
2079 case 3: return L1L2ApproximationEnum;
2080- case 4: return MLHOApproximationEnum;
2081+ case 4: return MOLHOApproximationEnum;
2082 case 5: return HOApproximationEnum;
2083 case 6: return FSApproximationEnum;
2084 case 7: return SSAHOApproximationEnum;
2085@@ -359,7 +359,7 @@
2086 case 1: return SIAApproximationEnum;
2087 case 2: return SSAApproximationEnum;
2088 case 3: return L1L2ApproximationEnum;
2089- case 4: return MLHOApproximationEnum;
2090+ case 4: return MOLHOApproximationEnum;
2091 case 5: return HOApproximationEnum;
2092 case 6: return FSApproximationEnum;
2093 case 7: return SSAHOApproximationEnum;
2094Index: ../trunk-jpl/src/m/boundaryconditions/SetMOLHOBC.py
2095===================================================================
2096--- ../trunk-jpl/src/m/boundaryconditions/SetMOLHOBC.py (nonexistent)
2097+++ ../trunk-jpl/src/m/boundaryconditions/SetMOLHOBC.py (revision 27031)
2098@@ -0,0 +1,21 @@
2099+import numpy as np
2100+
2101+def SetMOLHOBC(md):
2102+ """
2103+ SETMOLHOBC - Create the boundary conditions for stressbalance for MOLHO: VxBase, VyBase, VxShear, VyShear
2104+
2105+ Usage:
2106+ md = SetIceShelfBC(md, varargin)
2107+
2108+ Example:
2109+ md = SetIceShelfBC(md)
2110+
2111+ """
2112+
2113+ #node on Dirichlet (boundary and ~icefront)
2114+ md.stressbalance.spcvx_base = md.stressbalance.spcvx
2115+ md.stressbalance.spcvy_base = md.stressbalance.spcvy
2116+ md.stressbalance.spcvx_shear = np.nan * md.stressbalance.spcvx
2117+ md.stressbalance.spcvy_shear = np.nan * md.stressbalance.spcvy
2118+
2119+ return md
2120Index: ../trunk-jpl/src/m/classes/flowequation.py
2121===================================================================
2122--- ../trunk-jpl/src/m/classes/flowequation.py (revision 27030)
2123+++ ../trunk-jpl/src/m/classes/flowequation.py (revision 27031)
2124@@ -18,7 +18,7 @@
2125 self.isSIA = 0
2126 self.isSSA = 0
2127 self.isL1L2 = 0
2128- self.isMLHO = 0
2129+ self.isMOLHO = 0
2130 self.isHO = 0
2131 self.isFS = 0
2132 self.isNitscheBC = 0
2133@@ -45,7 +45,7 @@
2134 s += '{}\n'.format(fielddisplay(self, 'isSIA', "is the Shallow Ice Approximation (SIA) used?"))
2135 s += '{}\n'.format(fielddisplay(self, 'isSSA', "is the Shelfy-Stream Approximation (SSA) used?"))
2136 s += '{}\n'.format(fielddisplay(self, 'isL1L2', "are L1L2 equations used?"))
2137- s += '{}\n'.format(fielddisplay(self, 'isMLHO', "are Mono-layer Higher-Order equations used?"))
2138+ s += '{}\n'.format(fielddisplay(self, 'isMOLHO', "are MOno-layer Higher-Order (MOLHO) equations used?"))
2139 s += '{}\n'.format(fielddisplay(self, 'isHO', "is the Higher-Order (HO) approximation used?"))
2140 s += '{}\n'.format(fielddisplay(self, 'isFS', "are the Full-FS (FS) equations used?"))
2141 s += '{}\n'.format(fielddisplay(self, 'isNitscheBC', "is weakly imposed condition used?"))
2142@@ -89,7 +89,7 @@
2143 md = checkfield(md, 'fieldname', 'flowequation.isSIA', 'numel', [1], 'values', [0, 1])
2144 md = checkfield(md, 'fieldname', 'flowequation.isSSA', 'numel', [1], 'values', [0, 1])
2145 md = checkfield(md, 'fieldname', 'flowequation.isL1L2', 'numel', [1], 'values', [0, 1])
2146- md = checkfield(md, 'fieldname', 'flowequation.isMLHO', 'numel', [1], 'values', [0, 1])
2147+ md = checkfield(md, 'fieldname', 'flowequation.isMOLHO', 'numel', [1], 'values', [0, 1])
2148 md = checkfield(md, 'fieldname', 'flowequation.isHO', 'numel', [1], 'values', [0, 1])
2149 md = checkfield(md, 'fieldname', 'flowequation.isFS', 'numel', [1], 'values', [0, 1])
2150 md = checkfield(md, 'fieldname', 'flowequation.isNitscheBC', 'numel', [1], 'values', [0, 1])
2151@@ -120,7 +120,7 @@
2152 else:
2153 raise RuntimeError('Case not supported yet')
2154
2155- if not (self.isSIA or self.isSSA or self.isL1L2 or self.isMLHO or self.isHO or self.isFS):
2156+ if not (self.isSIA or self.isSSA or self.isL1L2 or self.isMOLHO or self.isHO or self.isFS):
2157 md.checkmessage("no element types set for this model")
2158 if 'StressbalanceSIAAnalysis' in analyses:
2159 if any(self.element_equation == 1):
2160@@ -133,7 +133,7 @@
2161 WriteData(fid, prefix, 'object', self, 'fieldname', 'isSIA', 'format', 'Boolean')
2162 WriteData(fid, prefix, 'object', self, 'fieldname', 'isSSA', 'format', 'Boolean')
2163 WriteData(fid, prefix, 'object', self, 'fieldname', 'isL1L2', 'format', 'Boolean')
2164- WriteData(fid, prefix, 'object', self, 'fieldname', 'isMLHO', 'format', 'Boolean')
2165+ WriteData(fid, prefix, 'object', self, 'fieldname', 'isMOLHO', 'format', 'Boolean')
2166 WriteData(fid, prefix, 'object', self, 'fieldname', 'isHO', 'format', 'Boolean')
2167 WriteData(fid, prefix, 'object', self, 'fieldname', 'isFS', 'format', 'Boolean')
2168 WriteData(fid, prefix, 'object', self, 'fieldname', 'isNitscheBC', 'format', 'Boolean')
2169Index: ../trunk-jpl/src/m/classes/stressbalance.m
2170===================================================================
2171--- ../trunk-jpl/src/m/classes/stressbalance.m (revision 27030)
2172+++ ../trunk-jpl/src/m/classes/stressbalance.m (revision 27031)
2173@@ -35,8 +35,8 @@
2174 self.referential=project3d(md,'vector',self.referential,'type','node');
2175 self.loadingforce=project3d(md,'vector',self.loadingforce,'type','node');
2176
2177- % for MLHO
2178- if md.flowequation.isMLHO
2179+ % for MOLHO
2180+ if md.flowequation.isMOLHO
2181 self.spcvx_base=project3d(md,'vector',self.spcvx_base,'type','node');
2182 self.spcvy_base=project3d(md,'vector',self.spcvy_base,'type','node');
2183 self.spcvx_shear=project3d(md,'vector',self.spcvx_shear,'type','poly','degree',4);
2184@@ -133,8 +133,8 @@
2185 end
2186 md = checkfield(md,'fieldname','stressbalance.FSreconditioning','>',0);
2187 end
2188- % CHECK THIS ONLY WORKS FOR MLHO
2189- if md.flowequation.isMLHO
2190+ % CHECK THIS ONLY WORKS FOR MOLHO
2191+ if md.flowequation.isMOLHO
2192 md = checkfield(md,'fieldname','stressbalance.spcvx_base','Inf',1,'timeseries',1);
2193 md = checkfield(md,'fieldname','stressbalance.spcvy_base','Inf',1,'timeseries',1);
2194 md = checkfield(md,'fieldname','stressbalance.spcvx_shear','Inf',1,'timeseries',1);
2195@@ -168,7 +168,7 @@
2196 fielddisplay(self,'spcvy','y-axis velocity constraint (NaN means no constraint) [m/yr]');
2197 fielddisplay(self,'spcvz','z-axis velocity constraint (NaN means no constraint) [m/yr]');
2198
2199- disp(sprintf('\n %s','MLHO boundary conditions:'));
2200+ disp(sprintf('\n %s','MOLHO boundary conditions:'));
2201 fielddisplay(self,'spcvx_base','x-axis basal velocity constraint (NaN means no constraint) [m/yr]');
2202 fielddisplay(self,'spcvy_base','y-axis basal velocity constraint (NaN means no constraint) [m/yr]');
2203 fielddisplay(self,'spcvx_shear','x-axis shear velocity constraint (NaN means no constraint) [m/yr]');
2204@@ -225,8 +225,8 @@
2205 outputs = [outputs defaultoutputs(self,md)]; %add defaults
2206 end
2207 WriteData(fid,prefix,'data',outputs,'name','md.stressbalance.requested_outputs','format','StringArray');
2208- % for MLHO
2209- if (md.flowequation.isMLHO)
2210+ % for MOLHO
2211+ if (md.flowequation.isMOLHO)
2212 WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','spcvx_base','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
2213 WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','spcvy_base','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
2214 WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','spcvx_shear','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
2215Index: ../trunk-jpl/src/m/parameterization/setflowequation.m
2216===================================================================
2217--- ../trunk-jpl/src/m/parameterization/setflowequation.m (revision 27030)
2218+++ ../trunk-jpl/src/m/parameterization/setflowequation.m (revision 27031)
2219@@ -2,7 +2,7 @@
2220 %SETFLOWEQUATION - associate a solution type to each element
2221 %
2222 % This routine works like plotmodel: it works with an even number of inputs
2223-% 'SIA','SSA','L1L2','MLHO','HO','FS' and 'fill' are the possible options
2224+% 'SIA','SSA','L1L2','MOLHO','HO','FS' and 'fill' are the possible options
2225 % that must be followed by the corresponding exp file or flags list
2226 % It can either be a domain file (argus type, .exp extension), or an array of element flags.
2227 % If user wants every element outside the domain to be
2228@@ -10,7 +10,7 @@
2229 % an empty string '' will be considered as an empty domain
2230 % a string 'all' will be considered as the entire domain
2231 % You can specify the type of coupling, 'penalties' or 'tiling', to use with the input 'coupling'
2232-% NB: L1L2 and MLHO cannot currently be coupled to any other ice flow model
2233+% NB: L1L2 and MOLHO cannot currently be coupled to any other ice flow model
2234 %
2235 % Usage:
2236 % md=setflowequation(md,varargin)
2237@@ -38,7 +38,7 @@
2238 SSAflag = FlagElements(md,getfieldvalue(options,'SSA',''));
2239 HOflag = FlagElements(md,getfieldvalue(options,'HO',''));
2240 L1L2flag = FlagElements(md,getfieldvalue(options,'L1L2',''));
2241-MLHOflag = FlagElements(md,getfieldvalue(options,'MLHO',''));
2242+MOLHOflag = FlagElements(md,getfieldvalue(options,'MOLHO',''));
2243 FSflag = FlagElements(md,getfieldvalue(options,'FS',''));
2244 filltype = getfieldvalue(options,'fill','none');
2245 displayunused(options);
2246@@ -53,12 +53,12 @@
2247 end
2248
2249 %check that each element has at least one flag
2250-if any(SIAflag+SSAflag+HOflag+L1L2flag+MLHOflag+FSflag==0),
2251+if any(SIAflag+SSAflag+HOflag+L1L2flag+MOLHOflag+FSflag==0),
2252 error('elements type not assigned, supported models are ''SIA'',''SSA'',''HO'' and ''FS''')
2253 end
2254
2255 %check that each element has only one flag
2256-if any(SIAflag+SSAflag+HOflag+L1L2flag+MLHOflag+FSflag>1),
2257+if any(SIAflag+SSAflag+HOflag+L1L2flag+MOLHOflag+FSflag>1),
2258 disp('setflowequation.m: Warning: some elements have several types, higher order type is used for them')
2259 SIAflag(find(SIAflag & SSAflag))=0;
2260 SIAflag(find(SIAflag & HOflag))=0;
2261@@ -69,8 +69,8 @@
2262 if any(L1L2flag) & any(SIAflag | SSAflag | HOflag | FSflag)
2263 error('L1L2 cannot be coupled to any other model');
2264 end
2265-if any(MLHOflag) & any(SIAflag | SSAflag | HOflag | FSflag)
2266- error('MLHO cannot be coupled to any other model');
2267+if any(MOLHOflag) & any(SIAflag | SSAflag | HOflag | FSflag)
2268+ error('MOLHO cannot be coupled to any other model');
2269 end
2270
2271 %Check that no HO or FS for 2d mesh
2272@@ -90,7 +90,7 @@
2273 nodeonSSA=zeros(md.mesh.numberofvertices,1); nodeonSSA(md.mesh.elements(find(SSAflag),:))=1;
2274 nodeonHO=zeros(md.mesh.numberofvertices,1); nodeonHO(md.mesh.elements(find(HOflag),:))=1;
2275 nodeonL1L2=zeros(md.mesh.numberofvertices,1); nodeonL1L2(md.mesh.elements(find(L1L2flag),:))=1;
2276-nodeonMLHO=zeros(md.mesh.numberofvertices,1); nodeonMLHO(md.mesh.elements(find(MLHOflag),:))=1;
2277+nodeonMOLHO=zeros(md.mesh.numberofvertices,1); nodeonMOLHO(md.mesh.elements(find(MOLHOflag),:))=1;
2278 nodeonFS=zeros(md.mesh.numberofvertices,1);
2279 noneflag=zeros(md.mesh.numberofelements,1);
2280
2281@@ -247,7 +247,7 @@
2282 md.flowequation.element_equation(find(SIAflag))=1;
2283 md.flowequation.element_equation(find(SSAflag))=2;
2284 md.flowequation.element_equation(find(L1L2flag))=3;
2285-md.flowequation.element_equation(find(MLHOflag))=4;
2286+md.flowequation.element_equation(find(MOLHOflag))=4;
2287 md.flowequation.element_equation(find(HOflag))=5;
2288 md.flowequation.element_equation(find(FSflag))=6;
2289 md.flowequation.element_equation(find(SSAHOflag))=7;
2290@@ -263,7 +263,7 @@
2291 md.flowequation.vertex_equation=zeros(md.mesh.numberofvertices,1);
2292 pos=find(nodeonSSA); md.flowequation.vertex_equation(pos)=2;
2293 pos=find(nodeonL1L2); md.flowequation.vertex_equation(pos)=3;
2294-pos=find(nodeonMLHO); md.flowequation.vertex_equation(pos)=4;
2295+pos=find(nodeonMOLHO); md.flowequation.vertex_equation(pos)=4;
2296 pos=find(nodeonHO); md.flowequation.vertex_equation(pos)=5;
2297 pos=find(nodeonFS); md.flowequation.vertex_equation(pos)=6;
2298 %DO SIA LAST! Otherwise spcs might not be set up correctly (SIA should have priority)
2299@@ -286,7 +286,7 @@
2300 md.flowequation.isSIA = double(any(md.flowequation.element_equation == 1));
2301 md.flowequation.isSSA = double(any(md.flowequation.element_equation == 2));
2302 md.flowequation.isL1L2 = double(any(md.flowequation.element_equation == 3));
2303-md.flowequation.isMLHO = double(any(md.flowequation.element_equation == 4));
2304+md.flowequation.isMOLHO = double(any(md.flowequation.element_equation == 4));
2305 md.flowequation.isHO = double(any(md.flowequation.element_equation == 5));
2306 md.flowequation.isFS = double(any(md.flowequation.element_equation == 6));
2307
2308Index: ../trunk-jpl/src/m/plot/plot_elementstype.m
2309===================================================================
2310--- ../trunk-jpl/src/m/plot/plot_elementstype.m (revision 27030)
2311+++ ../trunk-jpl/src/m/plot/plot_elementstype.m (revision 27031)
2312@@ -36,7 +36,7 @@
2313 patch( 'Faces', [C A D F],'Vertices', [x y z],'CData', i,'FaceColor','flat','EdgeColor',edgecolor);
2314 end
2315 end
2316-legend(p,'None','SIA','SSA','L1L2','MLHO','HO',...
2317+legend(p,'None','SIA','SSA','L1L2','MOLHO','HO',...
2318 'SSAHO','FS','SSAFS','HOFS');
2319
2320 %apply options
2321Index: ../trunk-jpl/test/NightlyRun/test128.py
2322===================================================================
2323--- ../trunk-jpl/test/NightlyRun/test128.py (revision 27030)
2324+++ ../trunk-jpl/test/NightlyRun/test128.py (revision 27031)
2325@@ -1,6 +1,6 @@
2326-#Test Name: SquareShelfConstrainedTranMLHO2d
2327+#Test Name: SquareShelfConstrainedTranMOLHO2d
2328 from model import *
2329-from SetMLHOBC import SetMLHOBC
2330+from SetMOLHOBC import SetMOLHOBC
2331 from socket import gethostname
2332 from triangle import *
2333 from setmask import *
2334@@ -12,11 +12,11 @@
2335 md = triangle(model(), '../Exp/Square.exp', 150000)
2336 md = setmask(md, 'all', '')
2337 md = parameterize(md, '../Par/SquareShelfConstrained.py')
2338-md = setflowequation(md, 'MLHO', 'all')
2339+md = setflowequation(md, 'MOLHO', 'all')
2340 md.cluster = generic('name', gethostname(), 'np', 3)
2341 md.transient.requested_outputs = ['IceVolume','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase']
2342
2343-md = SetMLHOBC(md)
2344+md = SetMOLHOBC(md)
2345 md = solve(md, 'Transient')
2346
2347 #Fields and tolerances to track changes
2348Index: ../trunk-jpl/test/NightlyRun/test248.py
2349===================================================================
2350--- ../trunk-jpl/test/NightlyRun/test248.py (revision 27030)
2351+++ ../trunk-jpl/test/NightlyRun/test248.py (revision 27031)
2352@@ -1,4 +1,4 @@
2353-#Test Name: SquareShelfStressMLHO2d
2354+#Test Name: SquareShelfStressMOLHO2d
2355 from model import *
2356 from socket import gethostname
2357 from triangle import triangle
2358@@ -6,15 +6,15 @@
2359 from parameterize import parameterize
2360 from setflowequation import setflowequation
2361 from solve import solve
2362-from SetMLHOBC import SetMLHOBC
2363+from SetMOLHOBC import SetMOLHOBC
2364
2365 md = triangle(model(), '../Exp/Square.exp', 150000)
2366 md = setmask(md, 'all', '')
2367 md = parameterize(md, '../Par/SquareShelf.py')
2368-md = setflowequation(md, 'MLHO', 'all')
2369+md = setflowequation(md, 'MOLHO', 'all')
2370 md.cluster = generic('name', gethostname(), 'np', 3)
2371 md.stressbalance.requested_outputs = ['default', 'VxSurface', 'VySurface', 'VxShear', 'VyShear', 'VxBase', 'VyBase']
2372-md = SetMLHOBC(md)
2373+md = SetMOLHOBC(md)
2374 md = solve(md, 'Stressbalance')
2375
2376 #Fields and tolerances to track changes
2377Index: ../trunk-jpl/test/NightlyRun/test254.py
2378===================================================================
2379--- ../trunk-jpl/test/NightlyRun/test254.py (revision 27030)
2380+++ ../trunk-jpl/test/NightlyRun/test254.py (revision 27031)
2381@@ -1,4 +1,4 @@
2382-#Test Name: SquareShelfConstrainedMLHO
2383+#Test Name: SquareShelfConstrainedMOLHO
2384 from model import *
2385 from socket import gethostname
2386 import numpy as np
2387@@ -8,13 +8,13 @@
2388 from setflowequation import setflowequation
2389 from paterson import paterson
2390 from solve import solve
2391-from SetMLHOBC import SetMLHOBC
2392+from SetMOLHOBC import SetMOLHOBC
2393 from generic import generic
2394
2395 md = triangle(model(), '../Exp/Square.exp', 150000)
2396 md = setmask(md, 'all', '')
2397 md = parameterize(md, '../Par/SquareShelf.py')
2398-md = setflowequation(md, 'MLHO', 'all')
2399+md = setflowequation(md, 'MOLHO', 'all')
2400 md.cluster = generic('name', gethostname(), 'np', 3)
2401
2402 # redo the parameter file for this special shelf.
2403@@ -70,7 +70,7 @@
2404 md.mask.ice_levelset = -1 + nodeonicefront
2405
2406 md.stressbalance.requested_outputs = ['default', 'VySurface', 'VyShear', 'VyBase']
2407-md = SetMLHOBC(md)
2408+md = SetMOLHOBC(md)
2409 md = solve(md, 'Stressbalance')
2410
2411 # create analytical solution: strain rate is constant = ((rho_ice * g * h) / 4B)^3 (Paterson, 4th Edition, page 292.
2412Index: ../trunk-jpl/src/m/parameterization/setflowequation.py
2413===================================================================
2414--- ../trunk-jpl/src/m/parameterization/setflowequation.py (revision 27030)
2415+++ ../trunk-jpl/src/m/parameterization/setflowequation.py (revision 27031)
2416@@ -8,7 +8,7 @@
2417 """SETFLOWEQUATION - associate a solution type to each element
2418
2419 This routine works like plotmodel: it works with an even number of inputs
2420- 'SIA', 'SSA', 'HO', 'L1L2', 'MLHO', 'FS' and 'fill' are the possible
2421+ 'SIA', 'SSA', 'HO', 'L1L2', 'MOLHO', 'FS' and 'fill' are the possible
2422 options that must be followed by the corresponding exp file or flags list.
2423 It can either be a domain file (argus type, .exp extension), or an array of
2424 element flags.
2425@@ -44,7 +44,7 @@
2426 SSAflag = FlagElements(md, options.getfieldvalue('SSA', ''))
2427 HOflag = FlagElements(md, options.getfieldvalue('HO', ''))
2428 L1L2flag = FlagElements(md, options.getfieldvalue('L1L2', ''))
2429- MLHOflag = FlagElements(md, options.getfieldvalue('MLHO', ''))
2430+ MOLHOflag = FlagElements(md, options.getfieldvalue('MOLHO', ''))
2431 FSflag = FlagElements(md, options.getfieldvalue('FS', ''))
2432 filltype = options.getfieldvalue('fill', 'none')
2433
2434@@ -56,21 +56,21 @@
2435 elif 'HO' in filltype:
2436 HOflag = ~SIAflag & ~SSAflag & ~FSflag
2437 #check that each element has at least one flag
2438- if not any(SIAflag + SSAflag + L1L2flag + MLHOflag + HOflag + FSflag):
2439+ if not any(SIAflag + SSAflag + L1L2flag + MOLHOflag + HOflag + FSflag):
2440 raise TypeError("elements type not assigned, supported models are 'SIA', 'SSA', 'HO' and 'FS'")
2441
2442 #check that each element has only one flag
2443- if any(SIAflag + SSAflag + L1L2flag + MLHOflag + HOflag + FSflag > 1):
2444+ if any(SIAflag + SSAflag + L1L2flag + MOLHOflag + HOflag + FSflag > 1):
2445 print('Warning: setflowequation.py: some elements have several types, higher order type is used for them')
2446 SIAflag[np.where(np.logical_and(SIAflag, SSAflag))] = False
2447 SIAflag[np.where(np.logical_and(SIAflag, HOflag))] = False
2448 SSAflag[np.where(np.logical_and(SSAflag, HOflag))] = False
2449
2450- #check that L1L2 and MLHO is not coupled to any other model for now
2451+ #check that L1L2 and MOLHO is not coupled to any other model for now
2452 if any(L1L2flag) and any(SIAflag + SSAflag + HOflag + FSflag):
2453 raise TypeError('L1L2 cannot be coupled to any other model')
2454- if any(MLHOflag) and any(SIAflag + SSAflag + HOflag + FSflag):
2455- raise TypeError('MLHO cannot be coupled to any other model')
2456+ if any(MOLHOflag) and any(SIAflag + SSAflag + HOflag + FSflag):
2457+ raise TypeError('MOLHO cannot be coupled to any other model')
2458
2459 #Check that no HO or FS for 2d mesh
2460 if md.mesh.domaintype == '2Dhorizontal':
2461@@ -88,8 +88,8 @@
2462 nodeonSSA[md.mesh.elements[np.where(SSAflag), :] - 1] = True
2463 nodeonL1L2 = np.zeros(md.mesh.numberofvertices, bool)
2464 nodeonL1L2[md.mesh.elements[np.where(L1L2flag), :] - 1] = True
2465- nodeonMLHO = np.zeros(md.mesh.numberofvertices, bool)
2466- nodeonMLHO[md.mesh.elements[np.where(MLHOflag), :] - 1] = True
2467+ nodeonMOLHO = np.zeros(md.mesh.numberofvertices, bool)
2468+ nodeonMOLHO[md.mesh.elements[np.where(MOLHOflag), :] - 1] = True
2469 nodeonHO = np.zeros(md.mesh.numberofvertices, bool)
2470 nodeonHO[md.mesh.elements[np.where(HOflag), :] - 1] = True
2471 nodeonFS = np.zeros(md.mesh.numberofvertices, bool)
2472@@ -240,7 +240,7 @@
2473 md.flowequation.element_equation[np.where(SIAflag)] = 1
2474 md.flowequation.element_equation[np.where(SSAflag)] = 2
2475 md.flowequation.element_equation[np.where(L1L2flag)] = 3
2476- md.flowequation.element_equation[np.where(MLHOflag)] = 4
2477+ md.flowequation.element_equation[np.where(MOLHOflag)] = 4
2478 md.flowequation.element_equation[np.where(HOflag)] = 5
2479 md.flowequation.element_equation[np.where(FSflag)] = 6
2480 md.flowequation.element_equation[np.where(SSAHOflag)] = 7
2481@@ -258,7 +258,7 @@
2482 md.flowequation.vertex_equation[pos] = 2
2483 pos = np.where(nodeonL1L2)
2484 md.flowequation.vertex_equation[pos] = 3
2485- pos = np.where(nodeonMLHO)
2486+ pos = np.where(nodeonMOLHO)
2487 md.flowequation.vertex_equation[pos] = 4
2488 pos = np.where(nodeonHO)
2489 md.flowequation.vertex_equation[pos] = 5
2490@@ -282,7 +282,7 @@
2491 md.flowequation.isSIA = any(md.flowequation.element_equation == 1)
2492 md.flowequation.isSSA = any(md.flowequation.element_equation == 2)
2493 md.flowequation.isL1L2= any(md.flowequation.element_equation == 3)
2494- md.flowequation.isMLHO= any(md.flowequation.element_equation == 4)
2495+ md.flowequation.isMOLHO= any(md.flowequation.element_equation == 4)
2496 md.flowequation.isHO = any(md.flowequation.element_equation == 5)
2497 md.flowequation.isFS = any(md.flowequation.element_equation == 6)
2498
2499Index: ../trunk-jpl/test/NightlyRun/test128.m
2500===================================================================
2501--- ../trunk-jpl/test/NightlyRun/test128.m (revision 27030)
2502+++ ../trunk-jpl/test/NightlyRun/test128.m (revision 27031)
2503@@ -1,12 +1,12 @@
2504-%Test Name: SquareShelfConstrainedTranMLHO2d
2505+%Test Name: SquareShelfConstrainedTranMOLHO2d
2506 md=triangle(model(),'../Exp/Square.exp',150000.);
2507 md=setmask(md,'all','');
2508 md=parameterize(md,'../Par/SquareShelfConstrained.par');
2509-md=setflowequation(md,'MLHO','all');
2510+md=setflowequation(md,'MOLHO','all');
2511 md.cluster=generic('name',oshostname(),'np',3);
2512 md.transient.requested_outputs={'IceVolume','VxShear','VyShear','VxBase','VyBase','VxSurface','VySurface'};
2513
2514-md=SetMLHOBC(md);
2515+md=SetMOLHOBC(md);
2516 md=solve(md,'Transient');
2517
2518 %Fields and tolerances to track changes
2519Index: ../trunk-jpl/test/NightlyRun/test248.m
2520===================================================================
2521--- ../trunk-jpl/test/NightlyRun/test248.m (revision 27030)
2522+++ ../trunk-jpl/test/NightlyRun/test248.m (revision 27031)
2523@@ -1,11 +1,11 @@
2524-%Test Name: SquareShelfStressMLHO2d
2525+%Test Name: SquareShelfStressMOLHO2d
2526 md=triangle(model(),'../Exp/Square.exp',150000.);
2527 md=setmask(md,'all','');
2528 md=parameterize(md,'../Par/SquareShelf.par');
2529-md=setflowequation(md,'MLHO','all');
2530+md=setflowequation(md,'MOLHO','all');
2531 md.cluster=generic('name',oshostname(),'np',3);
2532 md.stressbalance.requested_outputs={'default','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase'};
2533-md=SetMLHOBC(md);
2534+md=SetMOLHOBC(md);
2535 md=solve(md,'Stressbalance');
2536
2537 %Fields and tolerances to track changes
2538Index: ../trunk-jpl/test/NightlyRun/test254.m
2539===================================================================
2540--- ../trunk-jpl/test/NightlyRun/test254.m (revision 27030)
2541+++ ../trunk-jpl/test/NightlyRun/test254.m (revision 27031)
2542@@ -1,8 +1,8 @@
2543-%Test Name: SquareShelfConstrainedMLHO
2544+%Test Name: SquareShelfConstrainedMOLHO
2545 md=triangle(model(),'../Exp/Square.exp',150000.);
2546 md=setmask(md,'all','');
2547 md=parameterize(md,'../Par/SquareShelf.par');
2548-md=setflowequation(md,'MLHO','all');
2549+md=setflowequation(md,'MOLHO','all');
2550 md.cluster=generic('name',oshostname(),'np',3);
2551
2552 %redo the parameter file for this special shelf.
2553@@ -57,7 +57,7 @@
2554 md.mask.ice_levelset=-1+nodeonicefront;
2555
2556 md.stressbalance.requested_outputs={'default','VySurface','VyShear','VyBase'};
2557-md=SetMLHOBC(md);
2558+md=SetMOLHOBC(md);
2559 md=solve(md,'Stressbalance');
2560
2561 %create analytical solution: strain rate is constant = ((rho_ice*g*h)/4B)^3 (Paterson, 4th Edition, page 292.
2562Index: ../trunk-jpl/test/NightlyRun/test256.m
2563===================================================================
2564--- ../trunk-jpl/test/NightlyRun/test256.m (revision 27030)
2565+++ ../trunk-jpl/test/NightlyRun/test256.m (revision 27031)
2566@@ -1,12 +1,12 @@
2567-%Test Name: SquareShelfStressMLHO2dTransientIncrNonHydro
2568+%Test Name: SquareShelfStressMOLHO2dTransientIncrNonHydro
2569 md=triangle(model(),'../Exp/Square.exp',150000.);
2570 md=setmask(md,'all','');
2571 md=parameterize(md,'../Par/SquareShelf.par');
2572-md=setflowequation(md,'MLHO','all');
2573+md=setflowequation(md,'MOLHO','all');
2574 md.geometry.base=md.geometry.base+50.; md.geometry.surface=md.geometry.surface+50.;
2575 md.cluster=generic('name',oshostname(),'np',1);
2576 md.masstransport.hydrostatic_adjustment='Incremental';
2577-md=SetMLHOBC(md);
2578+md=SetMOLHOBC(md);
2579 md=solve(md,'Transient');
2580
2581 %Fields and tolerances to track changes
2582Index: ../trunk-jpl/test/NightlyRun/test127.py
2583===================================================================
2584--- ../trunk-jpl/test/NightlyRun/test127.py (revision 27030)
2585+++ ../trunk-jpl/test/NightlyRun/test127.py (revision 27031)
2586@@ -1,4 +1,4 @@
2587-#Test Name: SquareShelfConstrainedStressMLHO2d
2588+#Test Name: SquareShelfConstrainedStressMOLHO2d
2589 from model import *
2590 from socket import gethostname
2591 from triangle import triangle
2592@@ -8,15 +8,15 @@
2593 from solve import solve
2594 from massfluxatgate import massfluxatgate
2595 from generic import generic
2596-from SetMLHOBC import SetMLHOBC
2597+from SetMOLHOBC import SetMOLHOBC
2598
2599 md = triangle(model(), '../Exp/Square.exp', 50000)
2600 md = setmask(md, 'all', '')
2601 md = parameterize(md, '../Par/SquareShelfConstrained.py')
2602-md = setflowequation(md, 'MLHO', 'all')
2603+md = setflowequation(md, 'MOLHO', 'all')
2604 md.cluster = generic('name', gethostname(), 'np', 2)
2605 #outputs
2606-#FIXME compute the stress components for MLHO
2607+#FIXME compute the stress components for MOLHO
2608 md.stressbalance.requested_outputs = ['default', 'VxSurface', 'VySurface', 'VxShear', 'VyShear', 'VxBase', 'VyBase', 'MassFlux1', 'MassFlux2', 'MassFlux3', 'MassFlux4', 'MassFlux5', 'MassFlux6']
2609 #md.stressbalance.requested_outputs = ['default', 'DeviatoricStressxx', 'DeviatoricStressyy', 'DeviatoricStressxy', 'MassFlux1', 'MassFlux2', 'MassFlux3', 'MassFlux4', 'MassFlux5', 'MassFlux6']
2610 md.outputdefinition.definitions = [massfluxatgate('name', 'MassFlux1', 'profilename', '../Exp/MassFlux1.exp', 'definitionstring', 'Outputdefinition1'),
2611@@ -25,7 +25,7 @@
2612 massfluxatgate('name', 'MassFlux4', 'profilename', '../Exp/MassFlux4.exp', 'definitionstring', 'Outputdefinition4'),
2613 massfluxatgate('name', 'MassFlux5', 'profilename', '../Exp/MassFlux5.exp', 'definitionstring', 'Outputdefinition5'),
2614 massfluxatgate('name', 'MassFlux6', 'profilename', '../Exp/MassFlux6.exp', 'definitionstring', 'Outputdefinition6')]
2615-md = SetMLHOBC(md)
2616+md = SetMOLHOBC(md)
2617 md = solve(md, 'Stressbalance')
2618
2619 #Fields and tolerances to track changes
2620Index: ../trunk-jpl/test/NightlyRun/test129.py
2621===================================================================
2622--- ../trunk-jpl/test/NightlyRun/test129.py (revision 27030)
2623+++ ../trunk-jpl/test/NightlyRun/test129.py (revision 27031)
2624@@ -1,7 +1,7 @@
2625-#Test Name: SquareShelfConstrainedRestartTranMLHO2d
2626+#Test Name: SquareShelfConstrainedRestartTranMOLHO2d
2627 from model import *
2628 from socket import gethostname
2629-from SetMLHOBC import SetMLHOBC
2630+from SetMOLHOBC import SetMOLHOBC
2631 from triangle import *
2632 from setmask import *
2633 from parameterize import *
2634@@ -13,7 +13,7 @@
2635 md = triangle(model(), '../Exp/Square.exp', 150000.)
2636 md = setmask(md, 'all', '')
2637 md = parameterize(md, '../Par/SquareShelfConstrained.py')
2638-md = setflowequation(md, 'MLHO', 'all')
2639+md = setflowequation(md, 'MOLHO', 'all')
2640 md.cluster = generic('name', gethostname(), 'np', 1)
2641 md.transient.requested_outputs = ['IceVolume', 'TotalSmb', 'VxShear','VyShear','VxBase','VyBase','VxSurface','VySurface']
2642
2643@@ -23,7 +23,7 @@
2644 # time steps and resolution
2645 md.timestepping.final_time = 19
2646 md.settings.output_frequency = 2
2647-md = SetMLHOBC(md)
2648+md = SetMOLHOBC(md)
2649
2650 md = solve(md, 'Transient')
2651 md2 = copy.deepcopy(md)
2652Index: ../trunk-jpl/test/NightlyRun/test249.py
2653===================================================================
2654--- ../trunk-jpl/test/NightlyRun/test249.py (revision 27030)
2655+++ ../trunk-jpl/test/NightlyRun/test249.py (revision 27031)
2656@@ -1,4 +1,4 @@
2657-#Test Name: SquareShelfTranMLHO2d
2658+#Test Name: SquareShelfTranMOLHO2d
2659
2660 from model import *
2661 from socket import gethostname
2662@@ -8,16 +8,16 @@
2663 from setflowequation import setflowequation
2664 from solve import solve
2665 from generic import generic
2666-from SetMLHOBC import SetMLHOBC
2667+from SetMOLHOBC import SetMOLHOBC
2668
2669 md = triangle(model(), '../Exp/Square.exp', 150000)
2670 md = setmask(md, 'all', '')
2671 md = parameterize(md, '../Par/SquareShelf.py')
2672 md.basalforcings.floatingice_melting_rate[:] = 1.
2673-md = setflowequation(md, 'MLHO', 'all')
2674+md = setflowequation(md, 'MOLHO', 'all')
2675 md.cluster = generic('name', gethostname(), 'np', 3)
2676 md.transient.requested_outputs = ['default', 'FloatingArea', 'GroundedArea', 'TotalFloatingBmb', 'TotalGroundedBmb']
2677-md = SetMLHOBC(md)
2678+md = SetMOLHOBC(md)
2679 md = solve(md, 'Transient')
2680
2681
2682Index: ../trunk-jpl/test/NightlyRun/test255.py
2683===================================================================
2684--- ../trunk-jpl/test/NightlyRun/test255.py (revision 27030)
2685+++ ../trunk-jpl/test/NightlyRun/test255.py (revision 27031)
2686@@ -1,4 +1,4 @@
2687-#Test Name: SquareShelfStressMLHO2dTransientIncrHydro
2688+#Test Name: SquareShelfStressMOLHO2dTransientIncrHydro
2689 from model import *
2690 from socket import gethostname
2691 from triangle import triangle
2692@@ -6,15 +6,15 @@
2693 from parameterize import parameterize
2694 from setflowequation import setflowequation
2695 from solve import solve
2696-from SetMLHOBC import SetMLHOBC
2697+from SetMOLHOBC import SetMOLHOBC
2698
2699 md = triangle(model(), '../Exp/Square.exp', 150000.)
2700 md = setmask(md, 'all', '')
2701 md = parameterize(md, '../Par/SquareShelf.py')
2702-md = setflowequation(md, 'MLHO', 'all')
2703+md = setflowequation(md, 'MOLHO', 'all')
2704 md.cluster = generic('name', gethostname(), 'np', 3)
2705 md.masstransport.hydrostatic_adjustment = 'Incremental'
2706-md = SetMLHOBC(md)
2707+md = SetMOLHOBC(md)
2708 md = solve(md, 'Transient')
2709
2710 #Fields and tolerances to track changes
2711Index: ../trunk-jpl/test/NightlyRun/test256.py
2712===================================================================
2713--- ../trunk-jpl/test/NightlyRun/test256.py (revision 27030)
2714+++ ../trunk-jpl/test/NightlyRun/test256.py (revision 27031)
2715@@ -1,4 +1,4 @@
2716-#Test Name: SquareShelfStressMLHO2dTransientIncrNonHydro
2717+#Test Name: SquareShelfStressMOLHO2dTransientIncrNonHydro
2718 from model import *
2719 from socket import gethostname
2720 from triangle import triangle
2721@@ -6,18 +6,18 @@
2722 from parameterize import parameterize
2723 from setflowequation import setflowequation
2724 from solve import solve
2725-from SetMLHOBC import SetMLHOBC
2726+from SetMOLHOBC import SetMOLHOBC
2727
2728
2729 md = triangle(model(), '../Exp/Square.exp', 150000.)
2730 md = setmask(md, 'all', '')
2731 md = parameterize(md, '../Par/SquareShelf.py')
2732-md = setflowequation(md, 'MLHO', 'all')
2733+md = setflowequation(md, 'MOLHO', 'all')
2734 md.geometry.base = md.geometry.base + 50.
2735 md.geometry.surface = md.geometry.surface + 50.
2736 md.cluster = generic('name', gethostname(), 'np', 1)
2737 md.masstransport.hydrostatic_adjustment = 'Incremental'
2738-md = SetMLHOBC(md)
2739+md = SetMOLHOBC(md)
2740 md = solve(md, 'Transient')
2741
2742 #Fields and tolerances to track changes
2743Index: ../trunk-jpl/test/NightlyRun/test332.py
2744===================================================================
2745--- ../trunk-jpl/test/NightlyRun/test332.py (revision 27030)
2746+++ ../trunk-jpl/test/NightlyRun/test332.py (revision 27031)
2747@@ -1,4 +1,4 @@
2748-#Test Name: SquareSheetConstrainedTranMLHO2d
2749+#Test Name: SquareSheetConstrainedTranMOLHO2d
2750 from model import *
2751 from socket import gethostname
2752 from triangle import triangle
2753@@ -6,14 +6,14 @@
2754 from parameterize import parameterize
2755 from setflowequation import setflowequation
2756 from solve import solve
2757-from SetMLHOBC import SetMLHOBC
2758+from SetMOLHOBC import SetMOLHOBC
2759
2760 md = triangle(model(), '../Exp/Square.exp', 150000.)
2761 md = setmask(md, '', '')
2762 md = parameterize(md, '../Par/SquareSheetConstrained.py')
2763-md = setflowequation(md, 'MLHO', 'all')
2764+md = setflowequation(md, 'MOLHO', 'all')
2765 md.cluster = generic('name', gethostname(), 'np', 3)
2766-md = SetMLHOBC(md)
2767+md = SetMOLHOBC(md)
2768 md = solve(md, 'Transient')
2769
2770 #Fields and tolerances to track changes
2771Index: ../trunk-jpl/test/NightlyRun/test334.py
2772===================================================================
2773--- ../trunk-jpl/test/NightlyRun/test334.py (revision 27030)
2774+++ ../trunk-jpl/test/NightlyRun/test334.py (revision 27031)
2775@@ -1,4 +1,4 @@
2776-#Test Name: SquareShelfCMBMLHO
2777+#Test Name: SquareShelfCMBMOLHO
2778 from model import *
2779 from socket import gethostname
2780 import numpy as np
2781@@ -8,12 +8,12 @@
2782 from setflowequation import setflowequation
2783 from solve import solve
2784 from generic import generic
2785-from SetMLHOBC import SetMLHOBC
2786+from SetMOLHOBC import SetMOLHOBC
2787
2788 md = triangle(model(), '../Exp/Square.exp', 200000)
2789 md = setmask(md, 'all', '')
2790 md = parameterize(md, '../Par/SquareShelf.py')
2791-md = setflowequation(md, 'MLHO', 'all')
2792+md = setflowequation(md, 'MOLHO', 'all')
2793
2794 # control parameters
2795
2796@@ -32,7 +32,7 @@
2797
2798
2799 md.cluster = generic('name', gethostname(), 'np', 3)
2800-md = SetMLHOBC(md)
2801+md = SetMOLHOBC(md)
2802 md = solve(md, 'Stressbalance')
2803
2804
2805Index: ../trunk-jpl/test/NightlyRun/test446.py
2806===================================================================
2807--- ../trunk-jpl/test/NightlyRun/test446.py (revision 27030)
2808+++ ../trunk-jpl/test/NightlyRun/test446.py (revision 27031)
2809@@ -1,4 +1,4 @@
2810-#Test Name: SquareSheetShelfStressMLHO2d
2811+#Test Name: SquareSheetShelfStressMOLHO2d
2812 from model import *
2813 from socket import gethostname
2814 from triangle import triangle
2815@@ -6,15 +6,15 @@
2816 from parameterize import parameterize
2817 from setflowequation import setflowequation
2818 from solve import solve
2819-from SetMLHOBC import SetMLHOBC
2820+from SetMOLHOBC import SetMOLHOBC
2821
2822 md = triangle(model(), '../Exp/Square.exp', 150000.)
2823 md = setmask(md, '../Exp/SquareShelf.exp', '')
2824 md = parameterize(md, '../Par/SquareSheetShelf.py')
2825-md = setflowequation(md, 'MLHO', 'all')
2826+md = setflowequation(md, 'MOLHO', 'all')
2827 md.cluster = generic('name', gethostname(), 'np', 3)
2828 md.stressbalance.requested_outputs = ['default', 'VxSurface', 'VySurface', 'VxShear', 'VyShear', 'VxBase', 'VyBase']
2829-md = SetMLHOBC(md);
2830+md = SetMOLHOBC(md);
2831 md = solve(md, 'Stressbalance')
2832
2833 #Fields and tolerances to track changes
2834Index: ../trunk-jpl/test/NightlyRun/test448.py
2835===================================================================
2836--- ../trunk-jpl/test/NightlyRun/test448.py (revision 27030)
2837+++ ../trunk-jpl/test/NightlyRun/test448.py (revision 27031)
2838@@ -1,4 +1,4 @@
2839-#Test Name: RoundSheetShelfGLMigrationMLHO2d
2840+#Test Name: RoundSheetShelfGLMigrationMOLHO2d
2841 import numpy as np
2842 from model import *
2843 from socket import gethostname
2844@@ -7,7 +7,7 @@
2845 from parameterize import parameterize
2846 from setflowequation import setflowequation
2847 from solve import solve
2848-from SetMLHOBC import SetMLHOBC
2849+from SetMOLHOBC import SetMOLHOBC
2850
2851
2852 radius = 1.e6
2853@@ -27,7 +27,7 @@
2854 flags[pos] = 1
2855 md = setmask(md, flags, '')
2856 md = parameterize(md, '../Par/RoundSheetShelf.py')
2857-md = setflowequation(md, 'MLHO', 'all')
2858+md = setflowequation(md, 'MOLHO', 'all')
2859 md.cluster = generic('name', gethostname(), 'np', 3)
2860
2861 md.transient.isthermal = False
2862@@ -38,7 +38,7 @@
2863
2864 #test different grounding line dynamics.
2865 md.groundingline.migration = 'AggressiveMigration'
2866-md = SetMLHOBC(md)
2867+md = SetMOLHOBC(md)
2868 md = solve(md, 'Transient')
2869 element_on_iceshelf_agressive = md.results.TransientSolution[0].MaskOceanLevelset
2870 vel_agressive = md.results.TransientSolution[0].Vel
2871Index: ../trunk-jpl/test/NightlyRun/test518.py
2872===================================================================
2873--- ../trunk-jpl/test/NightlyRun/test518.py (revision 27030)
2874+++ ../trunk-jpl/test/NightlyRun/test518.py (revision 27031)
2875@@ -1,5 +1,5 @@
2876
2877-#Test Name: PigStressMLHO2d
2878+#Test Name: PigStressMOLHO2d
2879 from model import *
2880 from socket import gethostname
2881 from triangle import triangle
2882@@ -7,16 +7,16 @@
2883 from parameterize import parameterize
2884 from setflowequation import setflowequation
2885 from solve import solve
2886-from SetMLHOBC import SetMLHOBC
2887+from SetMOLHOBC import SetMOLHOBC
2888
2889
2890 md = triangle(model(), '../Exp/Pig.exp', 20000.)
2891 md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp')
2892 md = parameterize(md, '../Par/Pig.py')
2893-md = setflowequation(md, 'MLHO', 'all')
2894+md = setflowequation(md, 'MOLHO', 'all')
2895 md.cluster = generic('name', gethostname(), 'np', 3)
2896 md.stressbalance.requested_outputs = ['default', 'VxSurface', 'VySurface', 'VxShear', 'VyShear', 'VxBase', 'VyBase']
2897-md = SetMLHOBC(md)
2898+md = SetMOLHOBC(md)
2899 md = solve(md, 'Stressbalance')
2900
2901 #Fields and tolerances to track changes
2902Index: ../trunk-jpl/test/NightlyRun/test332.m
2903===================================================================
2904--- ../trunk-jpl/test/NightlyRun/test332.m (revision 27030)
2905+++ ../trunk-jpl/test/NightlyRun/test332.m (revision 27031)
2906@@ -1,10 +1,10 @@
2907-%Test Name: SquareSheetConstrainedTranMLHO2d
2908+%Test Name: SquareSheetConstrainedTranMOLHO2d
2909 md=triangle(model(),'../Exp/Square.exp',150000.);
2910 md=setmask(md,'','');
2911 md=parameterize(md,'../Par/SquareSheetConstrained.par');
2912-md=setflowequation(md,'MLHO','all');
2913+md=setflowequation(md,'MOLHO','all');
2914 md.cluster=generic('name',oshostname(),'np',3);
2915-md=SetMLHOBC(md);
2916+md=SetMOLHOBC(md);
2917 md=solve(md,'Transient');
2918
2919 %Fields and tolerances to track changes
2920Index: ../trunk-jpl/test/NightlyRun/test334.m
2921===================================================================
2922--- ../trunk-jpl/test/NightlyRun/test334.m (revision 27030)
2923+++ ../trunk-jpl/test/NightlyRun/test334.m (revision 27031)
2924@@ -1,8 +1,8 @@
2925-%Test Name: SquareShelfCMBMLHO
2926+%Test Name: SquareShelfCMBMOLHO
2927 md=triangle(model(),'../Exp/Square.exp',200000.);
2928 md=setmask(md,'all','');
2929 md=parameterize(md,'../Par/SquareShelf.par');
2930-md=setflowequation(md,'MLHO','all');
2931+md=setflowequation(md,'MOLHO','all');
2932
2933 %control parameters
2934 md.inversion.iscontrol=1;
2935@@ -19,7 +19,7 @@
2936 md.verbose.control=true;
2937
2938 md.cluster=generic('name',oshostname(),'np',3);
2939-md=SetMLHOBC(md);
2940+md=SetMOLHOBC(md);
2941 md=solve(md,'Stressbalance');
2942
2943 %Fields and tolerances to track changes
2944Index: ../trunk-jpl/test/NightlyRun/test446.m
2945===================================================================
2946--- ../trunk-jpl/test/NightlyRun/test446.m (revision 27030)
2947+++ ../trunk-jpl/test/NightlyRun/test446.m (revision 27031)
2948@@ -1,11 +1,11 @@
2949-%Test Name: SquareSheetShelfStressMLHO2d
2950+%Test Name: SquareSheetShelfStressMOLHO2d
2951 md=triangle(model(),'../Exp/Square.exp',150000.);
2952 md=setmask(md,'../Exp/SquareShelf.exp','');
2953 md=parameterize(md,'../Par/SquareSheetShelf.par');
2954-md=setflowequation(md,'MLHO','all');
2955+md=setflowequation(md,'MOLHO','all');
2956 md.cluster=generic('name',oshostname(),'np',3);
2957 md.stressbalance.requested_outputs={'default','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase'};
2958-md=SetMLHOBC(md);
2959+md=SetMOLHOBC(md);
2960 md=solve(md,'Stressbalance');
2961
2962 %Fields and tolerances to track changes
2963Index: ../trunk-jpl/test/NightlyRun/test448.m
2964===================================================================
2965--- ../trunk-jpl/test/NightlyRun/test448.m (revision 27030)
2966+++ ../trunk-jpl/test/NightlyRun/test448.m (revision 27031)
2967@@ -1,4 +1,4 @@
2968-%Test Name: RoundSheetShelfGLMigrationMLHO2d
2969+%Test Name: RoundSheetShelfGLMigrationMOLHO2d
2970 radius=1.e6;
2971 shelfextent=2.e5;
2972
2973@@ -15,7 +15,7 @@
2974 flags(pos)=1;
2975 md=setmask(md,flags,'');
2976 md=parameterize(md,'../Par/RoundSheetShelf.par');
2977-md=setflowequation(md,'MLHO','all');
2978+md=setflowequation(md,'MOLHO','all');
2979 md.cluster=generic('name',oshostname(),'np',3);
2980
2981 md.transient.isthermal=0;
2982@@ -24,7 +24,7 @@
2983 md.transient.isstressbalance=1;
2984 md.transient.isgroundingline=1;
2985
2986-md=SetMLHOBC(md);
2987+md=SetMOLHOBC(md);
2988 %test different grounding line dynamics.
2989 md.groundingline.migration='AggressiveMigration';
2990 md=solve(md,'Transient');
2991Index: ../trunk-jpl/test/NightlyRun/test518.m
2992===================================================================
2993--- ../trunk-jpl/test/NightlyRun/test518.m (revision 27030)
2994+++ ../trunk-jpl/test/NightlyRun/test518.m (revision 27031)
2995@@ -1,11 +1,11 @@
2996-%Test Name: PigStressMLHO2d
2997+%Test Name: PigStressMOLHO2d
2998 md=triangle(model(),'../Exp/Pig.exp',20000.);
2999 md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
3000 md=parameterize(md,'../Par/Pig.par');
3001-md=setflowequation(md,'MLHO','all');
3002+md=setflowequation(md,'MOLHO','all');
3003 md.cluster=generic('name',oshostname(),'np',3);
3004 md.stressbalance.requested_outputs={'default','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase'};
3005-md=SetMLHOBC(md);
3006+md=SetMOLHOBC(md);
3007 md=solve(md,'Stressbalance');
3008
3009 %Fields and tolerances to track changes
3010Index: ../trunk-jpl/test/NightlyRun/test810.m
3011===================================================================
3012--- ../trunk-jpl/test/NightlyRun/test810.m (revision 27030)
3013+++ ../trunk-jpl/test/NightlyRun/test810.m (revision 27031)
3014@@ -1,8 +1,8 @@
3015-%Test Name: ValleyGlacierLevelsetMLHO2d
3016+%Test Name: ValleyGlacierLevelsetMOLHO2d
3017 md=triangle(model(),'../Exp/Square.exp',50000);
3018 md=setmask(md,'','');
3019 md=parameterize(md,'../Par/ValleyGlacierShelf.par');
3020-md=setflowequation(md,'MLHO','all');
3021+md=setflowequation(md,'MOLHO','all');
3022 md.levelset.stabilization=2;
3023 md.cluster=generic('name',oshostname(),'np',3);
3024
3025@@ -14,7 +14,7 @@
3026 md.transient.isthermal=0;
3027 md.transient.isgroundingline=1;
3028
3029-md=SetMLHOBC(md);
3030+md=SetMOLHOBC(md);
3031 md=solve(md,'Transient');
3032
3033 %Fields and tolerances to track changes
3034Index: ../trunk-jpl/test/NightlyRun/test330.py
3035===================================================================
3036--- ../trunk-jpl/test/NightlyRun/test330.py (revision 27030)
3037+++ ../trunk-jpl/test/NightlyRun/test330.py (revision 27031)
3038@@ -1,4 +1,4 @@
3039-#Test Name: SquareSheetConstrainedStressMLHO2d
3040+#Test Name: SquareSheetConstrainedStressMOLHO2d
3041 from model import *
3042 from socket import gethostname
3043 from triangle import triangle
3044@@ -6,16 +6,16 @@
3045 from parameterize import parameterize
3046 from setflowequation import setflowequation
3047 from solve import solve
3048-from SetMLHOBC import SetMLHOBC
3049+from SetMOLHOBC import SetMOLHOBC
3050
3051
3052 md = triangle(model(), '../Exp/Square.exp', 150000.)
3053 md = setmask(md, '', '')
3054 md = parameterize(md, '../Par/SquareSheetConstrained.py')
3055-md = setflowequation(md, 'MLHO', 'all')
3056+md = setflowequation(md, 'MOLHO', 'all')
3057 md.cluster = generic('name', gethostname(), 'np', 3)
3058 md.stressbalance.requested_outputs = ['default', 'VxSurface', 'VySurface', 'VxShear', 'VyShear', 'VxBase', 'VyBase']
3059-md = SetMLHOBC(md)
3060+md = SetMOLHOBC(md)
3061 md = solve(md, 'Stressbalance')
3062
3063 #Fields and tolerances to track changes
3064Index: ../trunk-jpl/test/NightlyRun/test333.py
3065===================================================================
3066--- ../trunk-jpl/test/NightlyRun/test333.py (revision 27030)
3067+++ ../trunk-jpl/test/NightlyRun/test333.py (revision 27031)
3068@@ -1,4 +1,4 @@
3069-#Test Name: SquareSheetConstrainedCMDragMLHO
3070+#Test Name: SquareSheetConstrainedCMDragMOLHO
3071 import numpy as np
3072 from model import *
3073 from socket import gethostname
3074@@ -7,13 +7,13 @@
3075 from parameterize import parameterize
3076 from setflowequation import setflowequation
3077 from solve import solve
3078-from SetMLHOBC import SetMLHOBC
3079+from SetMOLHOBC import SetMOLHOBC
3080
3081
3082 md = triangle(model(), '../Exp/Square.exp', 200000.)
3083 md = setmask(md, '', '')
3084 md = parameterize(md, '../Par/SquareSheetConstrained.py')
3085-md = setflowequation(md, 'MLHO', 'all')
3086+md = setflowequation(md, 'MOLHO', 'all')
3087
3088 #control parameters
3089
3090@@ -32,7 +32,7 @@
3091 md.inversion.vy_obs = md.initialization.vy
3092
3093 md.cluster = generic('name', gethostname(), 'np', 3)
3094-md = SetMLHOBC(md)
3095+md = SetMOLHOBC(md)
3096 md = solve(md, 'Stressbalance')
3097
3098 #Fields and tolerances to track changes
3099Index: ../trunk-jpl/test/NightlyRun/test335.py
3100===================================================================
3101--- ../trunk-jpl/test/NightlyRun/test335.py (revision 27030)
3102+++ ../trunk-jpl/test/NightlyRun/test335.py (revision 27031)
3103@@ -1,4 +1,4 @@
3104-#Test Name: SquareSheetConstrainedStressMLHO2d
3105+#Test Name: SquareSheetConstrainedStressMOLHO2d
3106 from model import *
3107 from socket import gethostname
3108 from triangle import triangle
3109@@ -6,14 +6,14 @@
3110 from parameterize import parameterize
3111 from setflowequation import setflowequation
3112 from solve import solve
3113-from SetMLHOBC import SetMLHOBC
3114+from SetMOLHOBC import SetMOLHOBC
3115
3116
3117 md = triangle(model(), '../Exp/Square.exp', 200000.)
3118 md = setmask(md, '', '')
3119 md = parameterize(md, '../Par/SquareSheetConstrained.py')
3120-md = setflowequation(md, 'MLHO', 'all')
3121-md = SetMLHOBC(md)
3122+md = setflowequation(md, 'MOLHO', 'all')
3123+md = SetMOLHOBC(md)
3124 md.extrude(5, 1.)
3125 md.cluster = generic('name', gethostname(), 'np', 3)
3126 md.stressbalance.requested_outputs = ['default', 'VxSurface', 'VySurface', 'VxShear', 'VyShear', 'VxBase', 'VyBase']
3127Index: ../trunk-jpl/test/NightlyRun/test447.py
3128===================================================================
3129--- ../trunk-jpl/test/NightlyRun/test447.py (revision 27030)
3130+++ ../trunk-jpl/test/NightlyRun/test447.py (revision 27031)
3131@@ -1,4 +1,4 @@
3132-#Test Name: SquareSheetShelfTranMLHO2d
3133+#Test Name: SquareSheetShelfTranMOLHO2d
3134 import numpy as np
3135 from model import *
3136 from socket import gethostname
3137@@ -7,7 +7,7 @@
3138 from parameterize import parameterize
3139 from setflowequation import setflowequation
3140 from solve import solve
3141-from SetMLHOBC import SetMLHOBC
3142+from SetMOLHOBC import SetMOLHOBC
3143 from frictioncoulomb import frictioncoulomb
3144 from generic import generic
3145
3146@@ -24,10 +24,10 @@
3147 md.friction.coefficientcoulomb = 0.02 * np.ones(md.mesh.numberofvertices)
3148 md.transient.isthermal = False
3149 md.transient.isgroundingline = True
3150-md = setflowequation(md, 'MLHO', 'all')
3151+md = setflowequation(md, 'MOLHO', 'all')
3152 md.cluster = generic('name', gethostname(), 'np', 3)
3153 md.transient.requested_outputs = ['default', 'GroundedArea', 'FloatingArea', 'TotalFloatingBmb', 'TotalGroundedBmb', 'TotalSmb']
3154-md = SetMLHOBC(md)
3155+md = SetMOLHOBC(md)
3156 md = solve(md, 'Transient')
3157
3158 #Fields and tolerances to track changes
3159Index: ../trunk-jpl/test/NightlyRun/test449.py
3160===================================================================
3161--- ../trunk-jpl/test/NightlyRun/test449.py (revision 27030)
3162+++ ../trunk-jpl/test/NightlyRun/test449.py (revision 27031)
3163@@ -1,4 +1,4 @@
3164-#Test Name: MISMIP3DMLHO
3165+#Test Name: MISMIP3DMOLHO
3166 import numpy as np
3167 from model import *
3168 from socket import gethostname
3169@@ -7,7 +7,7 @@
3170 from parameterize import parameterize
3171 from setflowequation import setflowequation
3172 from solve import solve
3173-from SetMLHOBC import SetMLHOBC
3174+from SetMOLHOBC import SetMOLHOBC
3175 from generic import generic
3176
3177
3178@@ -23,7 +23,7 @@
3179 pos = np.where(md.mask.ocean_levelset >= 0.)
3180 md.geometry.base[pos] = md.geometry.bed[pos]
3181 md.geometry.surface = md.geometry.base + md.geometry.thickness
3182-md = setflowequation(md, 'MLHO', 'all')
3183+md = setflowequation(md, 'MOLHO', 'all')
3184
3185 #Boundary conditions:
3186 md.mask.ice_levelset = -np.ones((md.mesh.numberofvertices, ))
3187@@ -58,7 +58,7 @@
3188 md.timestepping.time_step = 10
3189
3190 md.cluster = generic('name', gethostname(), 'np', 3)
3191-md = SetMLHOBC(md)
3192+md = SetMOLHOBC(md)
3193 md = solve(md, 'Transient')
3194 #print md.results.TransientSolution[0].BasalforcingsFloatingiceMeltingRate
3195 #print md.results.TransientSolution[1].BasalforcingsFloatingiceMeltingRate
3196Index: ../trunk-jpl/test/NightlyRun/test519.py
3197===================================================================
3198--- ../trunk-jpl/test/NightlyRun/test519.py (revision 27030)
3199+++ ../trunk-jpl/test/NightlyRun/test519.py (revision 27031)
3200@@ -1,4 +1,4 @@
3201-#Test Name: PigTranMLHO2d
3202+#Test Name: PigTranMOLHO2d
3203 import numpy as np
3204 from model import *
3205 from socket import gethostname
3206@@ -7,17 +7,17 @@
3207 from parameterize import parameterize
3208 from setflowequation import setflowequation
3209 from solve import solve
3210-from SetMLHOBC import SetMLHOBC
3211+from SetMOLHOBC import SetMOLHOBC
3212 from generic import generic
3213
3214 md = triangle(model(), '../Exp/Pig.exp', 20000.)
3215 md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp')
3216 md = parameterize(md, '../Par/Pig.py')
3217-md = setflowequation(md, 'MLHO', 'all')
3218+md = setflowequation(md, 'MOLHO', 'all')
3219 md.mesh.scale_factor = 0.9 * np.ones((md.mesh.numberofvertices))
3220 md.transient.requested_outputs = ['default', 'IceVolume', 'IceVolumeScaled', 'GroundedArea', 'GroundedAreaScaled', 'FloatingArea', 'FloatingAreaScaled', 'TotalSmb', 'TotalSmbScaled', 'TotalFloatingBmb', 'TotalFloatingBmbScaled']
3221 md.cluster = generic('name', gethostname(), 'np', 3)
3222-md = SetMLHOBC(md)
3223+md = SetMOLHOBC(md)
3224 md = solve(md, 'Transient')
3225
3226 # Fields and tolerances to track changes
3227Index: ../trunk-jpl/test/NightlyRun/test810.py
3228===================================================================
3229--- ../trunk-jpl/test/NightlyRun/test810.py (revision 27030)
3230+++ ../trunk-jpl/test/NightlyRun/test810.py (revision 27031)
3231@@ -1,4 +1,4 @@
3232-#Test Name: ValleyGlacierLevelsetMLHO2d
3233+#Test Name: ValleyGlacierLevelsetMOLHO2d
3234 from model import *
3235 from socket import gethostname
3236 from triangle import triangle
3237@@ -6,13 +6,13 @@
3238 from parameterize import parameterize
3239 from setflowequation import setflowequation
3240 from solve import solve
3241-from SetMLHOBC import SetMLHOBC
3242+from SetMOLHOBC import SetMOLHOBC
3243
3244 md = triangle(model(), '../Exp/Square.exp', 50000)
3245 md = setmask(md, '', '')
3246 md = parameterize(md, '../Par/ValleyGlacierShelf.py')
3247 md.levelset.stabilization = 2
3248-md = setflowequation(md, 'MLHO', 'all')
3249+md = setflowequation(md, 'MOLHO', 'all')
3250 md.cluster = generic('name', gethostname(), 'np', 3)
3251
3252 #Transient
3253@@ -22,7 +22,7 @@
3254 md.transient.issmb = True
3255 md.transient.isthermal = False
3256 md.transient.isgroundingline = True
3257-md = SetMLHOBC(md)
3258+md = SetMOLHOBC(md)
3259
3260 md = solve(md, 'Transient')
3261
3262Index: ../trunk-jpl/test/NightlyRun/test812.py
3263===================================================================
3264--- ../trunk-jpl/test/NightlyRun/test812.py (revision 27030)
3265+++ ../trunk-jpl/test/NightlyRun/test812.py (revision 27031)
3266@@ -1,4 +1,4 @@
3267-#Test Name: SquareShelfLevelsetCalvingMLHO2dLevermann
3268+#Test Name: SquareShelfLevelsetCalvingMOLHO2dLevermann
3269 import numpy as np
3270 from socket import gethostname
3271 from model import *
3272@@ -7,12 +7,12 @@
3273 from setmask import setmask
3274 from solve import solve
3275 from triangle import triangle
3276-from SetMLHOBC import SetMLHOBC
3277+from SetMOLHOBC import SetMOLHOBC
3278
3279 md = triangle(model(), '../Exp/Square.exp', 50000.)
3280 md = setmask(md, 'all', '')
3281 md = parameterize(md, '../Par/SquareShelf.py')
3282-md = setflowequation(md, 'MLHO', 'all')
3283+md = setflowequation(md, 'MOLHO', 'all')
3284 md.cluster = generic('name', gethostname(), 'np', 3)
3285
3286 x = md.mesh.x
3287@@ -44,7 +44,7 @@
3288
3289 md.transient.requested_outputs = ['default', 'StrainRateparallel', 'StrainRateperpendicular', 'Calvingratex', 'Calvingratey', 'CalvingCalvingrate']
3290
3291-md = SetMLHOBC(md);
3292+md = SetMOLHOBC(md);
3293 md = solve(md, 'Transient')
3294
3295 #Fields and tolerances to track changes
3296Index: ../trunk-jpl/test/NightlyRun/test812.m
3297===================================================================
3298--- ../trunk-jpl/test/NightlyRun/test812.m (revision 27030)
3299+++ ../trunk-jpl/test/NightlyRun/test812.m (revision 27031)
3300@@ -1,8 +1,8 @@
3301-%Test Name: SquareShelfLevelsetCalvingMLHO2dLevermann
3302+%Test Name: SquareShelfLevelsetCalvingMOLHO2dLevermann
3303 md=triangle(model(),'../Exp/Square.exp',50000.);
3304 md=setmask(md,'all','');
3305 md=parameterize(md,'../Par/SquareShelf.par');
3306-md=setflowequation(md,'MLHO','all');
3307+md=setflowequation(md,'MOLHO','all');
3308 md.cluster=generic('name',oshostname(),'np',3);
3309
3310 %Do not kill ice bergs as all is floating
3311@@ -34,7 +34,7 @@
3312
3313 md.transient.requested_outputs={'default','StrainRateparallel','StrainRateperpendicular','Calvingratex','Calvingratey','CalvingCalvingrate'};
3314
3315-md=SetMLHOBC(md);
3316+md=SetMOLHOBC(md);
3317 md=solve(md,'Transient');
3318
3319 %Fields and tolerances to track changes
3320Index: ../trunk-jpl/test/NightlyRun/test811.py
3321===================================================================
3322--- ../trunk-jpl/test/NightlyRun/test811.py (revision 27030)
3323+++ ../trunk-jpl/test/NightlyRun/test811.py (revision 27031)
3324@@ -1,4 +1,4 @@
3325-#Test Name: ValleyGlacierLevelsetCalvingMLHO2d
3326+#Test Name: ValleyGlacierLevelsetCalvingMOLHO2d
3327 import numpy as np
3328 from model import *
3329 from socket import gethostname
3330@@ -7,13 +7,13 @@
3331 from parameterize import parameterize
3332 from setflowequation import setflowequation
3333 from solve import solve
3334-from SetMLHOBC import SetMLHOBC
3335+from SetMOLHOBC import SetMOLHOBC
3336 from generic import generic
3337
3338 md = triangle(model(), '../Exp/Square.exp', 50000)
3339 md = setmask(md, '', '')
3340 md = parameterize(md, '../Par/ValleyGlacierShelf.py')
3341-md = setflowequation(md, 'MLHO', 'all')
3342+md = setflowequation(md, 'MOLHO', 'all')
3343 md.cluster = generic('name', gethostname(), 'np', 3)
3344
3345 #Transient
3346@@ -28,7 +28,7 @@
3347 md.frontalforcings.meltingrate = np.zeros((md.mesh.numberofvertices))
3348 md.levelset.migration_max = 1e10
3349
3350-md = SetMLHOBC(md)
3351+md = SetMOLHOBC(md)
3352 md = solve(md, 'Transient')
3353
3354 #Fields and tolerances to track changes
3355Index: ../trunk-jpl/test/NightlyRun/test127.m
3356===================================================================
3357--- ../trunk-jpl/test/NightlyRun/test127.m (revision 27030)
3358+++ ../trunk-jpl/test/NightlyRun/test127.m (revision 27031)
3359@@ -1,12 +1,12 @@
3360-%Test Name: SquareShelfConstrainedStressMLHO2d
3361+%Test Name: SquareShelfConstrainedStressMOLHO2d
3362 md=triangle(model(),'../Exp/Square.exp',50000.);
3363 md=setmask(md,'all','');
3364 md=parameterize(md,'../Par/SquareShelfConstrained.par');
3365-md=setflowequation(md,'MLHO','all');
3366+md=setflowequation(md,'MOLHO','all');
3367 md.cluster=generic('name',oshostname(),'np',2);
3368
3369 %output
3370-%FIXME compute the stress components for MLHO
3371+%FIXME compute the stress components for MOLHO
3372 md.stressbalance.requested_outputs={'default','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase','MassFlux1','MassFlux2','MassFlux3','MassFlux4','MassFlux5','MassFlux6'};
3373 %md.stressbalance.requested_outputs={'default','DeviatoricStressxx','DeviatoricStressyy','DeviatoricStressxy','MassFlux1','MassFlux2','MassFlux3','MassFlux4','MassFlux5','MassFlux6'};
3374 md.outputdefinition.definitions={...
3375@@ -17,7 +17,7 @@
3376 massfluxatgate('name','MassFlux5','profilename',['../Exp/MassFlux5.exp'],'definitionstring','Outputdefinition5'),...
3377 massfluxatgate('name','MassFlux6','profilename',['../Exp/MassFlux6.exp'],'definitionstring','Outputdefinition6')...
3378 };
3379-md=SetMLHOBC(md);
3380+md=SetMOLHOBC(md);
3381 md=solve(md,'Stressbalance');
3382
3383 %Fields and tolerances to track changes
3384Index: ../trunk-jpl/test/NightlyRun/test129.m
3385===================================================================
3386--- ../trunk-jpl/test/NightlyRun/test129.m (revision 27030)
3387+++ ../trunk-jpl/test/NightlyRun/test129.m (revision 27031)
3388@@ -1,8 +1,8 @@
3389-%Test Name: SquareShelfConstrainedRestartTranMLHO2d
3390+%Test Name: SquareShelfConstrainedRestartTranMOLHO2d
3391 md=triangle(model(),'../Exp/Square.exp',150000.);
3392 md=setmask(md,'all','');
3393 md=parameterize(md,'../Par/SquareShelfConstrained.par');
3394-md=setflowequation(md,'MLHO','all');
3395+md=setflowequation(md,'MOLHO','all');
3396 md.cluster=generic('name',oshostname(),'np',1);
3397 md.transient.requested_outputs={'IceVolume','TotalSmb','VxShear','VyShear','VxBase','VyBase','VxSurface','VySurface'};
3398
3399@@ -13,7 +13,7 @@
3400 md.timestepping.final_time=19;
3401 md.settings.output_frequency=2;
3402
3403-md=SetMLHOBC(md);
3404+md=SetMOLHOBC(md);
3405 md=solve(md,'Transient');
3406 md2=solve(md,'Transient','restart',1);
3407
3408Index: ../trunk-jpl/test/NightlyRun/test249.m
3409===================================================================
3410--- ../trunk-jpl/test/NightlyRun/test249.m (revision 27030)
3411+++ ../trunk-jpl/test/NightlyRun/test249.m (revision 27031)
3412@@ -1,12 +1,12 @@
3413-%Test Name: SquareShelfTranMLHO2d
3414+%Test Name: SquareShelfTranMOLHO2d
3415 md=triangle(model(),'../Exp/Square.exp',150000.);
3416 md=setmask(md,'all','');
3417 md=parameterize(md,'../Par/SquareShelf.par');
3418-md=setflowequation(md,'MLHO','all');
3419+md=setflowequation(md,'MOLHO','all');
3420 md.cluster=generic('name',oshostname(),'np',3);
3421 md.transient.requested_outputs={'default','FloatingArea','GroundedArea','TotalGroundedBmb','TotalFloatingBmb'};
3422 md.basalforcings.floatingice_melting_rate(:)=1;
3423-md=SetMLHOBC(md);
3424+md=SetMOLHOBC(md);
3425 md=solve(md,'Transient');
3426
3427 %Fields and tolerances to track changes
3428Index: ../trunk-jpl/test/NightlyRun/test255.m
3429===================================================================
3430--- ../trunk-jpl/test/NightlyRun/test255.m (revision 27030)
3431+++ ../trunk-jpl/test/NightlyRun/test255.m (revision 27031)
3432@@ -1,11 +1,11 @@
3433-%Test Name: SquareShelfStressMLHO2dTransientIncrHydro
3434+%Test Name: SquareShelfStressMOLHO2dTransientIncrHydro
3435 md=triangle(model(),'../Exp/Square.exp',150000.);
3436 md=setmask(md,'all','');
3437 md=parameterize(md,'../Par/SquareShelf.par');
3438-md=setflowequation(md,'MLHO','all');
3439+md=setflowequation(md,'MOLHO','all');
3440 md.cluster=generic('name',oshostname(),'np',3);
3441 md.masstransport.hydrostatic_adjustment='Incremental';
3442-md=SetMLHOBC(md);
3443+md=SetMOLHOBC(md);
3444 md=solve(md,'Transient');
3445
3446 %Fields and tolerances to track changes
3447Index: ../trunk-jpl/test/NightlyRun/test330.m
3448===================================================================
3449--- ../trunk-jpl/test/NightlyRun/test330.m (revision 27030)
3450+++ ../trunk-jpl/test/NightlyRun/test330.m (revision 27031)
3451@@ -1,11 +1,11 @@
3452-%Test Name: SquareSheetConstrainedStressMLHO2d
3453+%Test Name: SquareSheetConstrainedStressMOLHO2d
3454 md=triangle(model(),'../Exp/Square.exp',150000.);
3455 md=setmask(md,'','');
3456 md=parameterize(md,'../Par/SquareSheetConstrained.par');
3457-md=setflowequation(md,'MLHO','all');
3458+md=setflowequation(md,'MOLHO','all');
3459 md.cluster=generic('name',oshostname(),'np',3);
3460 md.stressbalance.requested_outputs={'default','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase'};
3461-md=SetMLHOBC(md);
3462+md=SetMOLHOBC(md);
3463 md=solve(md,'Stressbalance');
3464
3465 %Fields and tolerances to track changes
3466Index: ../trunk-jpl/test/NightlyRun/test333.m
3467===================================================================
3468--- ../trunk-jpl/test/NightlyRun/test333.m (revision 27030)
3469+++ ../trunk-jpl/test/NightlyRun/test333.m (revision 27031)
3470@@ -1,8 +1,8 @@
3471-%Test Name: SquareSheetConstrainedCMDragMLHO
3472+%Test Name: SquareSheetConstrainedCMDragMOLHO
3473 md=triangle(model(),'../Exp/Square.exp',200000.);
3474 md=setmask(md,'','');
3475 md=parameterize(md,'../Par/SquareSheetConstrained.par');
3476-md=setflowequation(md,'MLHO','all');
3477+md=setflowequation(md,'MOLHO','all');
3478
3479 %control parameters
3480 md.inversion.iscontrol=1;
3481@@ -18,7 +18,7 @@
3482 md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
3483
3484 md.cluster=generic('name',oshostname(),'np',3);
3485-md=SetMLHOBC(md);
3486+md=SetMOLHOBC(md);
3487 md=solve(md,'Stressbalance');
3488
3489 %Fields and tolerances to track changes
3490Index: ../trunk-jpl/test/NightlyRun/test335.m
3491===================================================================
3492--- ../trunk-jpl/test/NightlyRun/test335.m (revision 27030)
3493+++ ../trunk-jpl/test/NightlyRun/test335.m (revision 27031)
3494@@ -1,12 +1,12 @@
3495-%Test Name: SquareSheetConstrainedStressMLHO3d
3496+%Test Name: SquareSheetConstrainedStressMOLHO3d
3497 md=triangle(model(),'../Exp/Square.exp',200000.);
3498 md=setmask(md,'','');
3499 md=parameterize(md,'../Par/SquareSheetConstrained.par');
3500-md=setflowequation(md,'MLHO','all');
3501+md=setflowequation(md,'MOLHO','all');
3502 md = extrude(md, 5, 1);
3503 md.cluster=generic('name',oshostname(),'np',3);
3504 md.stressbalance.requested_outputs={'default','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase'};
3505-md=SetMLHOBC(md);
3506+md=SetMOLHOBC(md);
3507 md=solve(md,'Stressbalance');
3508
3509 %Fields and tolerances to track changes
3510Index: ../trunk-jpl/test/NightlyRun/test447.m
3511===================================================================
3512--- ../trunk-jpl/test/NightlyRun/test447.m (revision 27030)
3513+++ ../trunk-jpl/test/NightlyRun/test447.m (revision 27031)
3514@@ -1,4 +1,4 @@
3515-%Test Name: SquareSheetShelfTranMLHO2d
3516+%Test Name: SquareSheetShelfTranMOLHO2d
3517 md=triangle(model(),'../Exp/Square.exp',150000.);
3518 md=setmask(md,'../Exp/SquareShelf.exp','');
3519 md=parameterize(md,'../Par/SquareSheetShelf.par');
3520@@ -12,10 +12,10 @@
3521 md.friction.coefficientcoulomb=0.02*ones(md.mesh.numberofvertices,1);
3522 md.transient.isthermal=0;
3523 md.transient.isgroundingline=1;
3524-md=setflowequation(md,'MLHO','all');
3525+md=setflowequation(md,'MOLHO','all');
3526 md.cluster=generic('name',oshostname(),'np',3);
3527 md.transient.requested_outputs={'default','GroundedArea','FloatingArea','TotalFloatingBmb','TotalGroundedBmb','TotalSmb'};
3528-md=SetMLHOBC(md);
3529+md=SetMOLHOBC(md);
3530 md=solve(md,'Transient');
3531
3532 %Fields and tolerances to track changes
3533Index: ../trunk-jpl/test/NightlyRun/test449.m
3534===================================================================
3535--- ../trunk-jpl/test/NightlyRun/test449.m (revision 27030)
3536+++ ../trunk-jpl/test/NightlyRun/test449.m (revision 27031)
3537@@ -1,4 +1,4 @@
3538-%Test Name: MISMIP3DMLHO
3539+%Test Name: MISMIP3DMOLHO
3540 md=triangle(model(),'../Exp/Square.exp',100000.);
3541 md=setmask(md,'../Exp/SquareShelf.exp','');
3542 md=parameterize(md,'../Par/SquareSheetShelf.par');
3543@@ -11,7 +11,7 @@
3544 pos=find(md.mask.ocean_levelset>=0);
3545 md.geometry.base(pos)=md.geometry.bed(pos);
3546 md.geometry.surface=md.geometry.base+md.geometry.thickness;
3547-md=setflowequation(md,'MLHO','all');
3548+md=setflowequation(md,'MOLHO','all');
3549
3550 %Boundary conditions:
3551 md.mask.ice_levelset=-ones(md.mesh.numberofvertices,1);
3552@@ -44,7 +44,7 @@
3553 md.timestepping.time_step=10;
3554
3555 md.cluster=generic('name',oshostname(),'np',3);
3556-md=SetMLHOBC(md);
3557+md=SetMOLHOBC(md);
3558 md=solve(md,'Transient');
3559
3560 %Fields and tolerances to track changes
3561Index: ../trunk-jpl/test/NightlyRun/test519.m
3562===================================================================
3563--- ../trunk-jpl/test/NightlyRun/test519.m (revision 27030)
3564+++ ../trunk-jpl/test/NightlyRun/test519.m (revision 27031)
3565@@ -1,14 +1,14 @@
3566-%Test Name: PigTranMLHO2d
3567+%Test Name: PigTranMOLHO2d
3568 md=triangle(model(),'../Exp/Pig.exp',20000.);
3569 md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
3570 md=parameterize(md,'../Par/Pig.par');
3571-md=setflowequation(md,'MLHO','all');
3572+md=setflowequation(md,'MOLHO','all');
3573 md.cluster=generic('name',oshostname(),'np',3);
3574 md.geometry.bed=md.geometry.base;
3575 [md.mesh.lat,md.mesh.long] = xy2ll(md.mesh.x,md.mesh.y,-1);
3576 md.mesh.scale_factor=0.9*ones(md.mesh.numberofvertices,1);
3577 md.transient.requested_outputs={'default','IceVolume','IceVolumeScaled','GroundedArea','GroundedAreaScaled','FloatingArea','FloatingAreaScaled','TotalSmb','TotalSmbScaled','TotalFloatingBmb','TotalFloatingBmbScaled'};
3578-md=SetMLHOBC(md);
3579+md=SetMOLHOBC(md);
3580 md=solve(md,'Transient');
3581
3582 %Fields and tolerances to track changes
3583Index: ../trunk-jpl/test/NightlyRun/test811.m
3584===================================================================
3585--- ../trunk-jpl/test/NightlyRun/test811.m (revision 27030)
3586+++ ../trunk-jpl/test/NightlyRun/test811.m (revision 27031)
3587@@ -1,8 +1,8 @@
3588-%Test Name: ValleyGlacierLevelsetCalvingMLHO2d
3589+%Test Name: ValleyGlacierLevelsetCalvingMOLHO2d
3590 md=triangle(model(),'../Exp/Square.exp',50000);
3591 md=setmask(md,'','');
3592 md=parameterize(md,'../Par/ValleyGlacierShelf.par');
3593-md=setflowequation(md,'MLHO','all');
3594+md=setflowequation(md,'MOLHO','all');
3595 md.cluster=generic('name',oshostname(),'np',3);
3596
3597 %Transient
3598@@ -17,7 +17,7 @@
3599 md.frontalforcings.meltingrate=zeros(md.mesh.numberofvertices,1);
3600 md.levelset.migration_max = 1e10;
3601
3602-md=SetMLHOBC(md);
3603+md=SetMOLHOBC(md);
3604 md=solve(md,'Transient');
3605
3606 %Fields and tolerances to track changes
Note: See TracBrowser for help on using the repository browser.