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
  • ../trunk-jpl/src/m/boundaryconditions/SetMLHOBC.py

     
    1 import numpy as np
    2 
    3 
    4 def SetMLHOBC(md):
    5     """
    6     SETMLHOBC - Create the boundary conditions for stressbalance for MLHO: VxBase, VyBase, VxShear, VyShear
    7 
    8        Usage:
    9           md = SetIceShelfBC(md, varargin)
    10 
    11        Example:
    12           md = SetIceShelfBC(md)
    13 
    14     """
    15 
    16     #node on Dirichlet (boundary and ~icefront)
    17     md.stressbalance.spcvx_base = md.stressbalance.spcvx
    18     md.stressbalance.spcvy_base = md.stressbalance.spcvy
    19     md.stressbalance.spcvx_shear = np.nan * md.stressbalance.spcvx
    20     md.stressbalance.spcvy_shear = np.nan * md.stressbalance.spcvy
    21 
    22     return md
  • ../trunk-jpl/src/m/boundaryconditions/SetMLHOBC.m

     
    1 function md=SetMLHOBC(md)
    2 %SETMLHOBC - Create the boundary conditions for stressbalance for MLHO: VxBase, VyBase, VxShear, VyShear
    3 %
    4 %   Usage:
    5 %      md=SetMLHOBC(md)
    6 %
    7 
    8 
    9 %node on Dirichlet
    10 if md.flowequation.isMLHO
    11         md.stressbalance.spcvx_base=md.stressbalance.spcvx;
    12         md.stressbalance.spcvy_base=md.stressbalance.spcvy;
    13 
    14         md.stressbalance.spcvx_shear=NaN*ones(size(md.stressbalance.spcvx_base));
    15         md.stressbalance.spcvy_shear=NaN*ones(size(md.stressbalance.spcvy_base));
    16 end
  • ../trunk-jpl/src/m/classes/flowequation.m

     
    88                isSIA                          = 0;
    99                isSSA                          = 0;
    1010                isL1L2                         = 0;
    11                 isMLHO                         = 0;
     11                isMOLHO                         = 0;
    1212                isHO                           = 0;
    1313                isFS                           = 0;
    1414                isNitscheBC                    = 0;
     
    5959                                if isfield(objstruct,'bordermacayeal'),self.borderSSA = objstruct.bordermacayeal; end;
    6060                                if isfield(objstruct,'borderpattyn'),  self.borderHO  = objstruct.borderpattyn;   end;
    6161                                if isfield(objstruct,'borderstokes'),  self.borderFS  = objstruct.borderstokes;   end;
    62                         end
    6362
    64                         %Nov 6 2021
    65                         if any(self.vertex_equation==4)
    66                                 disp(['Monolayer Higher-Order (MLHO) detected in md.flowequation, this is still under development. Please double check your settings.']);
     63                                %May 31 2022
     64                                if isfield(objstruct,'isMLHO')
     65                                        self.isMOLHO = objstruct.isMLHO;
     66                                end
    6767                        end
    6868
     69
    6970                end% }}}
    7071        end
    7172        methods
     
    103104                        md = checkfield(md,'fieldname','flowequation.isSIA','numel',[1],'values',[0 1]);
    104105                        md = checkfield(md,'fieldname','flowequation.isSSA','numel',[1],'values',[0 1]);
    105106                        md = checkfield(md,'fieldname','flowequation.isL1L2','numel',[1],'values',[0 1]);
    106                         md = checkfield(md,'fieldname','flowequation.isMLHO','numel',[1],'values',[0 1]);
     107                        md = checkfield(md,'fieldname','flowequation.isMOLHO','numel',[1],'values',[0 1]);
    107108                        md = checkfield(md,'fieldname','flowequation.isHO','numel',[1],'values',[0 1]);
    108109                        md = checkfield(md,'fieldname','flowequation.isFS','numel',[1],'values',[0 1]);
    109110                        md = checkfield(md,'fieldname','flowequation.isNitscheBC','numel',[1],'values',[0 1]);
     
    134135                        else
    135136                                error('Case not supported yet');
    136137                        end
    137                         if ~(self.isSIA || self.isSSA || self.isL1L2 || self.isMLHO || self.isHO || self.isFS),
     138                        if ~(self.isSIA || self.isSSA || self.isL1L2 || self.isMOLHO || self.isHO || self.isFS),
    138139                                md = checkmessage(md,['no element types set for this model']);
    139140                        end
    140141                        if ismember('StressbalanceSIAAnalysis',analyses),
     
    152153                        fielddisplay(self,'isSIA','is the Shallow Ice Approximation (SIA) used?');
    153154                        fielddisplay(self,'isSSA','is the Shelfy-Stream Approximation (SSA) used?');
    154155                        fielddisplay(self,'isL1L2','is the L1L2 approximation used?');
    155                         fielddisplay(self,'isMLHO','is the Mono-Layer Higher-Order approximation used?');
     156                        fielddisplay(self,'isMOLHO','is the MOno-Layer Higher-Order (MOLHO) approximation used?');
    156157                        fielddisplay(self,'isHO','is the Higher-Order (HO) approximation used?');
    157158                        fielddisplay(self,'isFS','are the Full-FS (FS) equations used?');
    158159                        fielddisplay(self,'isNitscheBC','is weakly imposed condition used?');
     
    171172                        WriteData(fid,prefix,'object',self,'fieldname','isSIA','format','Boolean');
    172173                        WriteData(fid,prefix,'object',self,'fieldname','isSSA','format','Boolean');
    173174                        WriteData(fid,prefix,'object',self,'fieldname','isL1L2','format','Boolean');
    174                         WriteData(fid,prefix,'object',self,'fieldname','isMLHO','format','Boolean');
     175                        WriteData(fid,prefix,'object',self,'fieldname','isMOLHO','format','Boolean');
    175176                        WriteData(fid,prefix,'object',self,'fieldname','isHO','format','Boolean');
    176177                        WriteData(fid,prefix,'object',self,'fieldname','isFS','format','Boolean');
    177178                        WriteData(fid,prefix,'object',self,'fieldname','isNitscheBC','format','Boolean');
     
    196197                        writejsdouble(fid,[modelname '.flowequation.isSIA'],self.isSIA);
    197198                        writejsdouble(fid,[modelname '.flowequation.isSSA'],self.isSSA);
    198199                        writejsdouble(fid,[modelname '.flowequation.isL1L2'],self.isL1L2);
    199                         writejsdouble(fid,[modelname '.flowequation.isMLHO'],self.isMLHO);
     200                        writejsdouble(fid,[modelname '.flowequation.isMOLHO'],self.isMOLHO);
    200201                        writejsdouble(fid,[modelname '.flowequation.isHO'],self.isHO);
    201202                        writejsdouble(fid,[modelname '.flowequation.isFS'],self.isFS);
    202203         writejsstring(fid,[modelname '.flowequation.isNitscheBC'],self.isNitscheBC);
  • ../trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp

     
    5151                        return CreateKMatrixHO(element);
    5252                case FSApproximationEnum:
    5353                        return CreateKMatrixFS(element);
    54       case MLHOApproximationEnum:
     54      case MOLHOApproximationEnum:
    5555                // a more accurate option, but integrate in the vertical direction numerically.
    56                 //      return CreateKMatrixMLHOVerticalIntergrated(element);
    57                         return CreateKMatrixMLHO(element);
     56                //      return CreateKMatrixMOLHOVerticalIntergrated(element);
     57                        return CreateKMatrixMOLHO(element);
    5858                case NoneApproximationEnum:
    5959                        return NULL;
    6060                default:
     
    219219        xDelete<IssmDouble>(xyz_list);
    220220        return Ke;
    221221}/*}}}*/
    222 ElementMatrix* AdjointHorizAnalysis::CreateKMatrixMLHO(Element* element){/*{{{*/
     222ElementMatrix* AdjointHorizAnalysis::CreateKMatrixMOLHO(Element* element){/*{{{*/
    223223
    224224        /* Check if ice in element */
    225225        if(!element->IsIceInElement()) return NULL;
     
    291291      vxshear_input->GetInputValue(&vxshear,gauss);
    292292      vyshear_input->GetInputValue(&vyshear,gauss);
    293293
    294                 element->material->ViscosityMLHOAdjoint(&viscosity[0],dim,xyz_list,gauss,vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input);
     294                element->material->ViscosityMOLHOAdjoint(&viscosity[0],dim,xyz_list,gauss,vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input);
    295295
    296296                effmu = 2.0*(1-n)/2.0/n;
    297297
     
    352352   xDelete<IssmDouble>(basis);
    353353   return Ke;
    354354}/*}}}*/
    355 ElementMatrix* AdjointHorizAnalysis::CreateKMatrixMLHOVerticalIntergrated(Element* element){/*{{{*/
     355ElementMatrix* AdjointHorizAnalysis::CreateKMatrixMOLHOVerticalIntergrated(Element* element){/*{{{*/
    356356
    357357        /* Check if ice in element */
    358358        if(!element->IsIceInElement()) return NULL;
     
    432432              zeta=0.5*(gauss_seg->coord1+1);
    433433
    434434                   /* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy (for a given zeta)*/
    435                         element->StrainRateMLHO(&epsilon[0],xyz_list,gauss,
     435                        element->StrainRateMOLHO(&epsilon[0],xyz_list,gauss,
    436436                  vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input,zeta);
    437437                        epsilon_eff=sqrt(epsilon[0]*epsilon[0] + epsilon[1]*epsilon[1] + epsilon[2]*epsilon[2]
    438438                    +  epsilon[3]*epsilon[3] + epsilon[4]*epsilon[4] + epsilon[0]*epsilon[1]);
     
    617617                        return CreatePVectorHO(element);
    618618                case FSApproximationEnum:
    619619                        return CreatePVectorFS(element);
    620       case MLHOApproximationEnum:
    621                         return CreatePVectorMLHO(element);
     620      case MOLHOApproximationEnum:
     621                        return CreatePVectorMOLHO(element);
    622622                case NoneApproximationEnum:
    623623                        return NULL;
    624624                default:
     
    11041104        return pe;
    11051105
    11061106}/*}}}*/
    1107 ElementVector* AdjointHorizAnalysis::CreatePVectorMLHO(Element* element){/*{{{*/
     1107ElementVector* AdjointHorizAnalysis::CreatePVectorMOLHO(Element* element){/*{{{*/
    11081108
    11091109        /*Intermediaries*/
    11101110        int      domaintype;
     
    11421142        int numnodes = basalelement->GetNumberOfNodes();
    11431143
    11441144        /*Initialize Element vector and vectors*/
    1145         ElementVector* pe    = basalelement->NewElementVector(MLHOApproximationEnum);
     1145        ElementVector* pe    = basalelement->NewElementVector(MOLHOApproximationEnum);
    11461146        IssmDouble*    basis = xNew<IssmDouble>(numnodes);
    11471147
    11481148        /*Retrieve all inputs and parameters*/
     
    12111211                                                        pe->values[i*4+3]+=duy*weight*Jdet*gauss->weight*basis[i];
    12121212                                                }
    12131213                                                else {
    1214                                                         _error_("2D vertical is not implemented for MLHO");
     1214                                                        _error_("2D vertical is not implemented for MOLHO");
    12151215                                                }
    12161216                                        }
    12171217                                        break;
     
    12391239                                                        pe->values[i*4+3]+=duy*weight*Jdet*gauss->weight*basis[i];
    12401240                                                }
    12411241                                                else{
    1242                                                         _error_("2D vertical is not implemented for MLHO");
     1242                                                        _error_("2D vertical is not implemented for MOLHO");
    12431243                                                }
    12441244                                        }
    12451245                                        break;
     
    12681268                                                        pe->values[i*4+3]+=duy*weight*Jdet*gauss->weight*basis[i];
    12691269                                                }
    12701270                                                else{
    1271                                                         _error_("2D vertical is not implemented for MLHO");
     1271                                                        _error_("2D vertical is not implemented for MOLHO");
    12721272                                                }
    12731273                                        }
    12741274                                        break;
     
    12941294                                                        pe->values[i*4+3]+=duy*weight*Jdet*gauss->weight*basis[i];
    12951295                                                }
    12961296                                                else{
    1297                                                         _error_("2D vertical is not implemented for MLHO");
     1297                                                        _error_("2D vertical is not implemented for MOLHO");
    12981298                                                }
    12991299                                        }
    13001300                                        break;
     
    13181318                                                        pe->values[i*4+3]+=duy*weight*Jdet*gauss->weight*basis[i];
    13191319                                                }
    13201320                                                else{
    1321                                                         _error_("2D vertical is not implemented for MLHO");
     1321                                                        _error_("2D vertical is not implemented for MOLHO");
    13221322                                                }
    13231323                                        }
    13241324                                        break;
     
    16681668                                case SSAApproximationEnum: GradientJDragSSA(element,gradient,control_interp,control_index); break;
    16691669                                case L1L2ApproximationEnum:GradientJDragL1L2(element,gradient,control_interp,control_index); break;
    16701670                                case HOApproximationEnum:  GradientJDragHO( element,gradient,control_interp,control_index); break;
    1671                                 case MLHOApproximationEnum:  GradientJDragMLHO( element,gradient,control_interp,control_index); break;
     1671                                case MOLHOApproximationEnum:  GradientJDragMOLHO( element,gradient,control_interp,control_index); break;
    16721672                                case FSApproximationEnum:  GradientJDragFS( element,gradient,control_interp,control_index); break;
    16731673                                case NoneApproximationEnum: /*Gradient is 0*/                    break;
    16741674                                default: _error_("approximation " << EnumToStringx(approximation) << " not supported yet");
     
    16891689                                case SSAApproximationEnum: GradientJBbarSSA(element,gradient,control_interp,control_index); break;
    16901690                                case L1L2ApproximationEnum:GradientJBbarL1L2(element,gradient,control_interp,control_index); break;
    16911691                                case HOApproximationEnum:  GradientJBbarHO( element,gradient,control_interp,control_index); break;
    1692                                 case MLHOApproximationEnum:  GradientJBbarMLHO( element,gradient,control_interp,control_index); break;
     1692                                case MOLHOApproximationEnum:  GradientJBbarMOLHO( element,gradient,control_interp,control_index); break;
    16931693                                case FSApproximationEnum:  GradientJBbarFS( element,gradient,control_interp,control_index); break;
    16941694                                case NoneApproximationEnum: /*Gradient is 0*/                    break;
    16951695                                default: _error_("approximation " << EnumToStringx(approximation) << " not supported yet");
     
    16991699                        switch(approximation){
    17001700                                case SSAApproximationEnum: GradientJBSSA(element,gradient,control_interp,control_index); break;
    17011701                                case HOApproximationEnum:  GradientJBHO( element,gradient,control_interp,control_index); break;
    1702                         //      case MLHOApproximationEnum:  GradientJBMLHO( element,gradient,control_interp,control_index); break;
     1702                        //      case MOLHOApproximationEnum:  GradientJBMOLHO( element,gradient,control_interp,control_index); break;
    17031703                                case FSApproximationEnum:  GradientJBFS( element,gradient,control_interp,control_index); break;
    17041704                                case NoneApproximationEnum: /*Gradient is 0*/                    break;
    17051705                                default: _error_("approximation " << EnumToStringx(approximation) << " not supported yet");
     
    18091809        /*WARNING: We use SSA as an estimate for now*/
    18101810        this->GradientJBbarSSA(element,gradient,control_interp,control_index);
    18111811}/*}}}*/
    1812 void           AdjointHorizAnalysis::GradientJBbarMLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
     1812void           AdjointHorizAnalysis::GradientJBbarMOLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
    18131813
    18141814   if(control_interp!=P1Enum) _error_("not implemented yet...");
    18151815        /*Intermediaries*/
     
    18921892      while(gauss_seg->next()){
    18931893                        zeta=0.5*(gauss_seg->coord1+1);
    18941894
    1895                         basalelement->StrainRateMLHO(&epsilon[0],xyz_list,gauss,
     1895                        basalelement->StrainRateMOLHO(&epsilon[0],xyz_list,gauss,
    18961896                  vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input,zeta);
    18971897
    1898                         basalelement->dViscositydBMLHO(&dmudB,dim,xyz_list,gauss,vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input,zeta);
     1898                        basalelement->dViscositydBMOLHO(&dmudB,dim,xyz_list,gauss,vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input,zeta);
    18991899
    19001900                        e1[0] = 2.0*epsilon[0]+epsilon[1];
    19011901         e1[1] = epsilon[2];
     
    22502250        xDelete<int>(vertexpidlist);
    22512251        delete gauss;
    22522252}/*}}}*/
    2253 void           AdjointHorizAnalysis::GradientJBMLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
     2253void           AdjointHorizAnalysis::GradientJBMOLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
    22542254        _error_("not implemented yet...");
    22552255}/*}}}*/
    22562256void           AdjointHorizAnalysis::GradientJBSSA(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
     
    26502650        delete gauss;
    26512651        delete friction;
    26522652}/*}}}*/
    2653 void           AdjointHorizAnalysis::GradientJDragMLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
     2653void           AdjointHorizAnalysis::GradientJDragMOLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
    26542654
    26552655        /*return if floating (gradient is 0)*/
    26562656        if(element->IsAllFloating()) return;
     
    32713271        if(approximation==FSApproximationEnum || approximation==NoneApproximationEnum){
    32723272                InputUpdateFromSolutionFS(solution,element);
    32733273        }
    3274         else if (approximation==MLHOApproximationEnum) {
    3275                 InputUpdateFromSolutionMLHO(solution, element);
     3274        else if (approximation==MOLHOApproximationEnum) {
     3275                InputUpdateFromSolutionMOLHO(solution, element);
    32763276        }
    32773277        else{
    32783278                InputUpdateFromSolutionHoriz(solution,element);
     
    34193419        xDelete<IssmDouble>(lambday);
    34203420        xDelete<int>(doflist);
    34213421}/*}}}*/
    3422 void           AdjointHorizAnalysis::InputUpdateFromSolutionMLHO(IssmDouble* solution,Element* element){/*{{{*/
     3422void           AdjointHorizAnalysis::InputUpdateFromSolutionMOLHO(IssmDouble* solution,Element* element){/*{{{*/
    34233423        int  i;
    34243424        int* doflist=NULL;
    34253425
     
    34323432        int numdof = numnodes * 4;
    34333433
    34343434        /*Fetch dof list and allocate solution vectors*/
    3435         element->GetDofListLocal(&doflist,MLHOApproximationEnum,GsetEnum);
     3435        element->GetDofListLocal(&doflist,MOLHOApproximationEnum,GsetEnum);
    34363436        IssmDouble* values    = xNew<IssmDouble>(numdof);
    34373437        IssmDouble* lambdax   = xNew<IssmDouble>(numnodes);
    34383438        IssmDouble* lambday   = xNew<IssmDouble>(numnodes);
  • ../trunk-jpl/src/c/analyses/AdjointHorizAnalysis.h

     
    2727                ElementMatrix* CreateKMatrix(Element* element);
    2828                ElementMatrix* CreateKMatrixFS(Element* element);
    2929                ElementMatrix* CreateKMatrixHO(Element* element);
    30                 ElementMatrix* CreateKMatrixMLHO(Element* element);
    31                 ElementMatrix* CreateKMatrixMLHOVerticalIntergrated(Element* element);
     30                ElementMatrix* CreateKMatrixMOLHO(Element* element);
     31                ElementMatrix* CreateKMatrixMOLHOVerticalIntergrated(Element* element);
    3232                ElementMatrix* CreateKMatrixL1L2(Element* element);
    3333                ElementMatrix* CreateKMatrixSSA(Element* element);
    3434                ElementVector* CreatePVector(Element* element);
     
    3535                ElementVector* CreatePVectorFS(Element* element);
    3636                ElementVector* CreatePVectorL1L2(Element* element);
    3737                ElementVector* CreatePVectorHO(Element* element);
    38                 ElementVector* CreatePVectorMLHO(Element* element);
     38                ElementVector* CreatePVectorMOLHO(Element* element);
    3939                ElementVector* CreatePVectorSSA(Element* element);
    4040                void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    4141                void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
     
    4444                void           GradientJBinitial(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
    4545                void           GradientJBbarL1L2(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
    4646                void           GradientJBbarHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
    47                 void           GradientJBbarMLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
     47                void           GradientJBbarMOLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
    4848                void           GradientJBbarSSA(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
    4949                void           GradientJBFS(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
    5050                void           GradientJBGradient(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
    5151                void           GradientJBHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
    52                 void           GradientJBMLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
     52                void           GradientJBMOLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
    5353                void           GradientJBSSA(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
    5454                void           GradientJDragFS(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
    5555                void           GradientJDragGradient(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
    5656                void           GradientJDragL1L2(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
    5757                void           GradientJDragHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
    58                 void           GradientJDragMLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
     58                void           GradientJDragMOLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
    5959                void           GradientJDragSSA(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
    6060                void           GradientJDragHydroFS(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
    6161                void           GradientJDragHydroL1L2(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
     
    6565                void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
    6666                void           InputUpdateFromSolutionFS(IssmDouble* solution,Element* element);
    6767                void           InputUpdateFromSolutionHoriz(IssmDouble* solution,Element* element);
    68                 void           InputUpdateFromSolutionMLHO(IssmDouble* solution,Element* element);
     68                void           InputUpdateFromSolutionMOLHO(IssmDouble* solution,Element* element);
    6969                void           UpdateConstraints(FemModel* femmodel);
    7070};
    7171#endif
  • ../trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp

     
    3030        IssmDouble g;
    3131        IssmDouble rho_ice;
    3232        IssmDouble FSreconditioning;
    33         bool       isSIA,isSSA,isL1L2,isMLHO,isHO,isFS,iscoupling;
     33        bool       isSIA,isSSA,isL1L2,isMOLHO,isHO,isFS,iscoupling;
    3434        bool       spcpresent = false;
    3535        int        Mx,Nx;
    3636        int        My,Ny;
     
    5858        iomodel->FindConstant(&isSIA,"md.flowequation.isSIA");
    5959        iomodel->FindConstant(&isSSA,"md.flowequation.isSSA");
    6060        iomodel->FindConstant(&isL1L2,"md.flowequation.isL1L2");
    61         iomodel->FindConstant(&isMLHO,"md.flowequation.isMLHO");
     61        iomodel->FindConstant(&isMOLHO,"md.flowequation.isMOLHO");
    6262        iomodel->FindConstant(&isHO,"md.flowequation.isHO");
    6363        iomodel->FindConstant(&isFS,"md.flowequation.isFS");
    6464
    6565        /*Is this model only SIA??*/
    66         if(!isSSA && !isHO && !isFS && !isL1L2 && !isMLHO) return;
     66        if(!isSSA && !isHO && !isFS && !isL1L2 && !isMOLHO) return;
    6767
    6868        /*Do we have coupling*/
    69         if((isSIA?1.:0.) + (isSSA?1.:0.) + (isL1L2?1.:0.) + (isMLHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)
     69        if((isSIA?1.:0.) + (isSSA?1.:0.) + (isL1L2?1.:0.) + (isMOLHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)
    7070         iscoupling = true;
    7171        else
    7272         iscoupling = false;
     
    7777                /*Get finite element type*/
    7878                if(isSSA)       iomodel->FindConstant(&finiteelement,"md.flowequation.fe_SSA");
    7979                else if(isL1L2) finiteelement = P1Enum;
    80                 else if(isMLHO) finiteelement = P1Enum;
     80                else if(isMOLHO) finiteelement = P1Enum;
    8181                else if(isHO)   iomodel->FindConstant(&finiteelement,"md.flowequation.fe_HO");
    8282                else if(isFS){  iomodel->FindConstant(&finiteelement,"md.flowequation.fe_FS");
    8383                        /*Deduce velocity interpolation from finite element*/
     
    187187                        iomodel->DeleteData(z,"md.mesh.z");
    188188                }
    189189                else{
    190                         if(!isMLHO){
     190                        if(!isMOLHO){
    191191                                IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvx",StressbalanceAnalysisEnum,finiteelement,0);
    192192                                if(iomodel->domaintype!=Domain2DverticalEnum){
    193193                                        IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvy",StressbalanceAnalysisEnum,finiteelement,1);
    194194                                }
    195195                        }
    196                         else{//MLHO
     196                        else{//MOLHO
    197197                                IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvx_base",StressbalanceAnalysisEnum,finiteelement,0);
    198198                                IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvx_shear",StressbalanceAnalysisEnum,finiteelement,1);
    199199                                IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvy_base",StressbalanceAnalysisEnum,finiteelement,2);
     
    461461        int         i;
    462462        int         count;
    463463        int         penpair_ids[2];
    464         bool        isSSA,isL1L2,isMLHO,isHO,isFS;
     464        bool        isSSA,isL1L2,isMOLHO,isHO,isFS;
    465465        int         numpenalties,numrifts,numriftsegments;
    466466        IssmDouble *riftinfo       = NULL;
    467467        IssmDouble *penalties      = NULL;
     
    469469
    470470        /*Fetch parameters: */
    471471        iomodel->FindConstant(&isL1L2,"md.flowequation.isL1L2");
    472         iomodel->FindConstant(&isMLHO,"md.flowequation.isMLHO");
     472        iomodel->FindConstant(&isMOLHO,"md.flowequation.isMOLHO");
    473473        iomodel->FindConstant(&isFS,"md.flowequation.isFS");
    474474        iomodel->FindConstant(&isSSA,"md.flowequation.isSSA");
    475475        iomodel->FindConstant(&isHO,"md.flowequation.isHO");
     
    476476        iomodel->FindConstant(&numrifts,"md.rifts.numrifts");
    477477
    478478        /*Is this SIA only?*/
    479         if(!isSSA && !isHO && !isFS && !isL1L2 && !isMLHO) return;
     479        if(!isSSA && !isHO && !isFS && !isL1L2 && !isMOLHO) return;
    480480
    481481        /*Initialize counter: */
    482482        count=0;
     
    521521void StressbalanceAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
    522522
    523523        /*Intermediary*/
    524         bool isSSA,isL1L2,isMLHO,isHO,isFS,iscoupling;
     524        bool isSSA,isL1L2,isMOLHO,isHO,isFS,iscoupling;
    525525        int  finiteelement=-1,approximation=-1;
    526526
    527527        /*Fetch parameters: */
    528528        iomodel->FindConstant(&isSSA,"md.flowequation.isSSA");
    529529        iomodel->FindConstant(&isL1L2,"md.flowequation.isL1L2");
    530         iomodel->FindConstant(&isMLHO,"md.flowequation.isMLHO");
     530        iomodel->FindConstant(&isMOLHO,"md.flowequation.isMOLHO");
    531531        iomodel->FindConstant(&isHO,"md.flowequation.isHO");
    532532        iomodel->FindConstant(&isFS,"md.flowequation.isFS");
    533533
    534534        /*Now, check that we have non SIA elements */
    535         if(!isSSA && !isL1L2 && !isMLHO && !isHO && !isFS) return;
     535        if(!isSSA && !isL1L2 && !isMOLHO && !isHO && !isFS) return;
    536536
    537537        /*Do we have coupling*/
    538         if( (isSSA?1.:0.) + (isL1L2?1.:0.) + (isMLHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)
     538        if( (isSSA?1.:0.) + (isL1L2?1.:0.) + (isMOLHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)
    539539         iscoupling = true;
    540540        else
    541541         iscoupling = false;
     
    552552                        approximation = L1L2ApproximationEnum;
    553553                        finiteelement = P1Enum;
    554554                }
    555                 else if(isMLHO){
    556                         approximation = MLHOApproximationEnum;
     555                else if(isMOLHO){
     556                        approximation = MOLHOApproximationEnum;
    557557                        finiteelement = P1Enum;
    558558                }
    559559                else if(isHO){
     
    629629                         }
    630630                         break;
    631631                case L1L2ApproximationEnum: numdofs = 2; break;
    632                 case MLHOApproximationEnum: numdofs = 4; break;
     632                case MOLHOApproximationEnum: numdofs = 4; break;
    633633                case HOApproximationEnum:
    634634                         switch(domaintype){
    635635                                 case Domain3DEnum:         numdofs=2; break;
     
    694694        int    approximation,frictionlaw;
    695695        int    FrictionCoupling;
    696696        int*   finiteelement_list=NULL;
    697         bool   isSSA,isL1L2,isMLHO,isHO,isFS,iscoupling;
     697        bool   isSSA,isL1L2,isMOLHO,isHO,isFS,iscoupling;
    698698        bool   control_analysis;
    699699        bool   dakota_analysis;
    700700        bool   ismovingfront;
     
    702702        /*Fetch constants needed: */
    703703        iomodel->FindConstant(&isSSA,"md.flowequation.isSSA");
    704704        iomodel->FindConstant(&isL1L2,"md.flowequation.isL1L2");
    705         iomodel->FindConstant(&isMLHO,"md.flowequation.isMLHO");
     705        iomodel->FindConstant(&isMOLHO,"md.flowequation.isMOLHO");
    706706        iomodel->FindConstant(&isHO,"md.flowequation.isHO");
    707707        iomodel->FindConstant(&isFS,"md.flowequation.isFS");
    708708        iomodel->FindConstant(&control_analysis,"md.inversion.iscontrol");
     
    712712        iomodel->FindConstant(&frictionlaw,"md.friction.law");
    713713
    714714        /*return if no processing required*/
    715         if(!isSSA && !isL1L2 && !isMLHO && !isHO && !isFS) return;
     715        if(!isSSA && !isL1L2 && !isMOLHO && !isHO && !isFS) return;
    716716
    717717        /*Fetch data needed and allocate vectors: */
    718718        iomodel->FetchData(1,"md.flowequation.element_equation");
     
    719719        finiteelement_list=xNewZeroInit<int>(iomodel->numberofelements);
    720720
    721721        /*Do we have coupling*/
    722         if( (isSSA?1.:0.) + (isL1L2?1.:0.) + (isMLHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)
     722        if( (isSSA?1.:0.) + (isL1L2?1.:0.) + (isMOLHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)
    723723         iscoupling = true;
    724724        else
    725725         iscoupling = false;
     
    728728        if(!iscoupling){
    729729                if(isSSA)       iomodel->FindConstant(&finiteelement,"md.flowequation.fe_SSA");
    730730                else if(isL1L2) finiteelement = P1Enum;
    731                 else if(isMLHO) finiteelement = P1Enum;
     731                else if(isMOLHO) finiteelement = P1Enum;
    732732                else if(isHO)   iomodel->FindConstant(&finiteelement,"md.flowequation.fe_HO");
    733733                else if(isFS)   iomodel->FindConstant(&finiteelement,"md.flowequation.fe_FS");
    734734                for(int i=0;i<iomodel->numberofelements;i++){
     
    780780        iomodel->FetchDataToInput(inputs,elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum);
    781781        iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxEnum,0.);
    782782        iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyEnum,0.);
    783         /*MLHO*/
    784         if(isMLHO){
     783        /*MOLHO*/
     784        if(isMOLHO){
    785785                iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxShearEnum,0.);
    786786                iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyShearEnum,0.);
    787                 /*3D MLHO also need to have VxBase and VyBase for reconstruting Vx and Vy*/
     787                /*3D MOLHO also need to have VxBase and VyBase for reconstruting Vx and Vy*/
    788788                if (iomodel->domaintype==Domain3DEnum) {
    789789                        iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxBaseEnum,0.);
    790790                        iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyBaseEnum,0.);
     
    989989        parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isSIA",FlowequationIsSIAEnum));
    990990        parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isSSA",FlowequationIsSSAEnum));
    991991        parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isL1L2",FlowequationIsL1L2Enum));
    992         parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isMLHO",FlowequationIsMLHOEnum));
     992        parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isMOLHO",FlowequationIsMOLHOEnum));
    993993        parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isHO",FlowequationIsHOEnum));
    994994        parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isFS",FlowequationIsFSEnum));
    995995        parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.fe_FS",FlowequationFeFSEnum));
     
    10921092void           StressbalanceAnalysis::Core(FemModel* femmodel){/*{{{*/
    10931093
    10941094        /*Intermediaries*/
    1095         bool isSSA,isL1L2,isMLHO,isHO,isFS;
     1095        bool isSSA,isL1L2,isMOLHO,isHO,isFS;
    10961096        bool conserve_loads = true;
    10971097        int  newton,domaintype,fe_FS;
    10981098
     
    10991099        /* recover parameters:*/
    11001100        femmodel->parameters->FindParam(&isSSA,FlowequationIsSSAEnum);
    11011101        femmodel->parameters->FindParam(&isL1L2,FlowequationIsL1L2Enum);
    1102         femmodel->parameters->FindParam(&isMLHO,FlowequationIsMLHOEnum);
     1102        femmodel->parameters->FindParam(&isMOLHO,FlowequationIsMOLHOEnum);
    11031103        femmodel->parameters->FindParam(&isHO,FlowequationIsHOEnum);
    11041104        femmodel->parameters->FindParam(&isFS,FlowequationIsFSEnum);
    11051105        femmodel->parameters->FindParam(&fe_FS,FlowequationFeFSEnum);
     
    11061106        femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
    11071107        femmodel->parameters->FindParam(&newton,StressbalanceIsnewtonEnum);
    11081108
    1109         if(isFS && !(isSSA || isHO || isL1L2 || isMLHO)){
     1109        if(isFS && !(isSSA || isHO || isL1L2 || isMOLHO)){
    11101110                femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum);
    11111111
    11121112                bool is_schur_cg_solver = false;
     
    11281128                else
    11291129                 solutionsequence_nonlinear(femmodel,conserve_loads);
    11301130        }
    1131         else if(!isFS && (isSSA || isHO || isL1L2 || isMLHO)){
     1131        else if(!isFS && (isSSA || isHO || isL1L2 || isMOLHO)){
    11321132                femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum);
    11331133                if(newton>0)
    11341134                 solutionsequence_newton(femmodel);
     
    11421142                        extrudefrombase_core(femmodel);
    11431143                }
    11441144        }
    1145         else if ((isSSA || isL1L2 || isMLHO || isHO) && isFS){
     1145        else if ((isSSA || isL1L2 || isMOLHO || isHO) && isFS){
    11461146                if(VerboseSolution()) _printf0_("   computing coupling between lower order models and FS\n");
    11471147                solutionsequence_FScoupling_nonlinear(femmodel,conserve_loads);
    11481148        }
     
    11941194                        return CreateKMatrixSSA(element);
    11951195                case L1L2ApproximationEnum:
    11961196                        return CreateKMatrixL1L2(element);
    1197                 case MLHOApproximationEnum:
    1198                         return CreateKMatrixMLHO(element);
     1197                case MOLHOApproximationEnum:
     1198                        return CreateKMatrixMOLHO(element);
    11991199                case HOApproximationEnum:
    12001200                        return CreateKMatrixHO(element);
    12011201                case FSApproximationEnum:
     
    12231223                        return CreatePVectorSSA(element);
    12241224                case L1L2ApproximationEnum:
    12251225                        return CreatePVectorL1L2(element);
    1226                 case MLHOApproximationEnum:
    1227                         return CreatePVectorMLHO(element);
     1226                case MOLHOApproximationEnum:
     1227                        return CreatePVectorMOLHO(element);
    12281228                case HOApproximationEnum:
    12291229                        return CreatePVectorHO(element);
    12301230                case FSApproximationEnum:
     
    12521252                case SSAApproximationEnum: case HOApproximationEnum: case L1L2ApproximationEnum: case SIAApproximationEnum:
    12531253                        GetSolutionFromInputsHoriz(solution,element);
    12541254                        return;
    1255                 case MLHOApproximationEnum:
    1256                         GetSolutionFromInputsMLHO(solution,element);
     1255                case MOLHOApproximationEnum:
     1256                        GetSolutionFromInputsMOLHO(solution,element);
    12571257                        return;
    12581258                case SSAHOApproximationEnum: case HOFSApproximationEnum: case SSAFSApproximationEnum:
    12591259                        /*the elements around will create the solution*/
     
    13341334                case L1L2ApproximationEnum:
    13351335                        InputUpdateFromSolutionL1L2(solution,element);
    13361336                        return;
    1337                 case MLHOApproximationEnum:
    1338                         InputUpdateFromSolutionMLHO(solution,element);
     1337                case MOLHOApproximationEnum:
     1338                        InputUpdateFromSolutionMOLHO(solution,element);
    13391339                        return;
    13401340                case SSAHOApproximationEnum:
    13411341                        InputUpdateFromSolutionSSAHO(solution,element);
     
    27592759        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    27602760}/*}}}*/
    27612761
    2762 /*MLHO*/
    2763 ElementMatrix* StressbalanceAnalysis::CreateKMatrixMLHO(Element* element){/*{{{*/
     2762/*MOLHO*/
     2763ElementMatrix* StressbalanceAnalysis::CreateKMatrixMOLHO(Element* element){/*{{{*/
    27642764
    27652765        /* Check if ice in element */
    27662766        if(!element->IsIceInElement()) return NULL;
     
    27832783        }
    27842784
    27852785        /*compute all stiffness matrices for this element*/
    2786         ElementMatrix* Ke1=CreateKMatrixMLHOViscous(basalelement);
    2787         ElementMatrix* Ke2=CreateKMatrixMLHOFriction(basalelement);
     2786        ElementMatrix* Ke1=CreateKMatrixMOLHOViscous(basalelement);
     2787        ElementMatrix* Ke2=CreateKMatrixMOLHOFriction(basalelement);
    27882788        ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2);
    27892789
    27902790        /*clean-up and return*/
     
    27932793        delete Ke2;
    27942794        return Ke;
    27952795}/*}}}*/
    2796 ElementMatrix* StressbalanceAnalysis::CreateKMatrixMLHOFriction(Element* element){/*{{{*/
     2796ElementMatrix* StressbalanceAnalysis::CreateKMatrixMOLHOFriction(Element* element){/*{{{*/
    27972797
    27982798        if(element->IsAllFloating()) return NULL;
    27992799
     
    28202820        int numdof   = numnodes*dim;
    28212821
    28222822        /*Initialize Element matrix and vectors*/
    2823         ElementMatrix* Ke = element->NewElementMatrix(MLHOApproximationEnum);
     2823        ElementMatrix* Ke = element->NewElementMatrix(MOLHOApproximationEnum);
    28242824        IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
    28252825
    28262826        /*Retrieve all inputs and parameters*/
     
    28752875        xDelete<IssmDouble>(basis);
    28762876        return Ke;
    28772877}/*}}}*/
    2878 ElementMatrix* StressbalanceAnalysis::CreateKMatrixMLHOViscous(Element* element){/*{{{*/
     2878ElementMatrix* StressbalanceAnalysis::CreateKMatrixMOLHOViscous(Element* element){/*{{{*/
    28792879
    28802880        /* Check if ice in element */
    28812881        if(!element->IsIceInElement()) return NULL;
     
    28902890        int numnodes = element->GetNumberOfNodes();
    28912891
    28922892        /*Initialize Element matrix and vectors*/
    2893         ElementMatrix* Ke     = element->NewElementMatrix(MLHOApproximationEnum);
     2893        ElementMatrix* Ke     = element->NewElementMatrix(MOLHOApproximationEnum);
    28942894        IssmDouble*    dbasis = xNew<IssmDouble>(2*numnodes); // like SSA
    28952895        IssmDouble*    basis  = xNew<IssmDouble>(numnodes); // like SSA
    28962896
     
    29142914
    29152915                thickness_input->GetInputValue(&thickness, gauss);
    29162916                n_input->GetInputValue(&n,gauss);
    2917                 element->material->ViscosityMLHO(&viscosity[0],dim,xyz_list,gauss,vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input);
     2917                element->material->ViscosityMOLHO(&viscosity[0],dim,xyz_list,gauss,vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input);
    29182918
    29192919                for(int i=0;i<numnodes;i++){//shape functions on tria element
    29202920                        for(int j=0;j<numnodes;j++){
     
    29802980        }
    29812981
    29822982        /*Transform Coordinate System*/
    2983         //basalelement->TransformStiffnessMatrixCoord(Ke,XYMLHOEnum);
     2983        //basalelement->TransformStiffnessMatrixCoord(Ke,XYMOLHOEnum);
    29842984
    29852985        /*Clean up and return*/
    29862986        delete gauss;
     
    29892989        xDelete<IssmDouble>(basis);
    29902990        return Ke;
    29912991}/*}}}*/
    2992 ElementVector* StressbalanceAnalysis::CreatePVectorMLHO(Element* element){/*{{{*/
     2992ElementVector* StressbalanceAnalysis::CreatePVectorMOLHO(Element* element){/*{{{*/
    29932993
    29942994        /* Check if ice in element */
    29952995        if(!element->IsIceInElement()) return NULL;
     
    30123012        }
    30133013
    30143014        /*compute all load vectors for this element*/
    3015         ElementVector* pe1=CreatePVectorMLHODrivingStress(basalelement);
    3016         ElementVector* pe2=CreatePVectorMLHOFront(basalelement);
     3015        ElementVector* pe1=CreatePVectorMOLHODrivingStress(basalelement);
     3016        ElementVector* pe2=CreatePVectorMOLHOFront(basalelement);
    30173017        ElementVector* pe =new ElementVector(pe1,pe2);
    30183018
    30193019        /*clean-up and return*/
     
    30223022        delete pe2;
    30233023        return pe;
    30243024}/*}}}*/
    3025 ElementVector* StressbalanceAnalysis::CreatePVectorMLHODrivingStress(Element* element){/*{{{*/
     3025ElementVector* StressbalanceAnalysis::CreatePVectorMOLHODrivingStress(Element* element){/*{{{*/
    30263026
    30273027        /*Intermediaries */
    30283028        IssmDouble  thickness,Jdet,slope[2],n;
     
    30323032        int numnodes = element->GetNumberOfNodes();
    30333033
    30343034        /*Initialize Element vector and vectors*/
    3035         ElementVector* pe    = element->NewElementVector(MLHOApproximationEnum);
     3035        ElementVector* pe    = element->NewElementVector(MOLHOApproximationEnum);
    30363036        IssmDouble*    basis = xNew<IssmDouble>(numnodes);
    30373037
    30383038        /*Retrieve all inputs and parameters*/
     
    30613061        }
    30623062
    30633063        /*Transform coordinate system*/
    3064         //element->TransformLoadVectorCoord(pe,XYMLHOEnum);
     3064        //element->TransformLoadVectorCoord(pe,XYMOLHOEnum);
    30653065
    30663066        /*Clean up and return*/
    30673067        xDelete<IssmDouble>(xyz_list);
     
    30693069        delete gauss;
    30703070        return pe;
    30713071}/*}}}*/
    3072 ElementVector* StressbalanceAnalysis::CreatePVectorMLHOFront(Element* element){/*{{{*/
     3072ElementVector* StressbalanceAnalysis::CreatePVectorMOLHOFront(Element* element){/*{{{*/
    30733073
    30743074        /*If no front, return NULL*/
    30753075        if(!element->IsIcefront()) return NULL;
     
    30853085        int numnodes = element->GetNumberOfNodes();
    30863086
    30873087        /*Initialize Element vector and other vectors*/
    3088         ElementVector* pe    = element->NewElementVector(MLHOApproximationEnum);
     3088        ElementVector* pe    = element->NewElementVector(MOLHOApproximationEnum);
    30893089        IssmDouble*    basis = xNew<IssmDouble>(numnodes);
    30903090
    30913091        /*Retrieve all inputs and parameters*/
     
    31343134        }
    31353135
    31363136        /*Transform coordinate system*/
    3137         //element->TransformLoadVectorCoord(pe,XYMLHOEnum);
     3137        //element->TransformLoadVectorCoord(pe,XYMOLHOEnum);
    31383138
    31393139        /*Clean up and return*/
    31403140        xDelete<IssmDouble>(xyz_list);
     
    31433143        delete gauss;
    31443144        return pe;
    31453145}/*}}}*/
    3146 void           StressbalanceAnalysis::InputUpdateFromSolutionMLHO(IssmDouble* solution,Element* element){/*{{{*/
     3146void           StressbalanceAnalysis::InputUpdateFromSolutionMOLHO(IssmDouble* solution,Element* element){/*{{{*/
    31473147
    31483148        int         i,dim,domaintype;
    31493149        IssmDouble  rho_ice,g;
     
    31963196        int numdof   = numnodes*dim*2; //2xdim DOFs per node
    31973197
    31983198        /*Fetch dof list and allocate solution vectors*/
    3199         basalelement->GetDofListLocal(&doflist,MLHOApproximationEnum,GsetEnum);
     3199        basalelement->GetDofListLocal(&doflist,MOLHOApproximationEnum,GsetEnum);
    32003200        IssmDouble* values    = xNew<IssmDouble>(numdof);
    32013201        IssmDouble* vbx       = xNew<IssmDouble>(numnodes);
    32023202        IssmDouble* vby       = xNew<IssmDouble>(numnodes);
     
    32193219        if(dim==2) basalelement->TransformSolutionCoord(&values[0],XYEnum);
    32203220
    32213221   /*Ok, we have vx and vy in values, fill in vx and vy arrays: */
    3222    for(i=0;i<numnodes;i++){ //numnodes of the 2D mesh in which the MLHO is written
     3222   for(i=0;i<numnodes;i++){ //numnodes of the 2D mesh in which the MOLHO is written
    32233223      vbx[i] =values[i*4+0]; //base vx
    32243224      vshx[i]=values[i*4+1]; //shear vx
    32253225                vsx[i] =vbx[i]+vshx[i]; //surface vx
     
    32563256
    32573257   switch(domaintype){
    32583258      case Domain2DhorizontalEnum:
    3259                         for(i=0;i<numnodes;i++){ //numnodes of the 2D mesh in which the MLHO is written
     3259                        for(i=0;i<numnodes;i++){ //numnodes of the 2D mesh in which the MOLHO is written
    32603260                                vx[i]=vbx[i]+vshx[i]*(n[i]+1)/(n[i]+2);
    32613261                                vy[i]=vby[i]+vshy[i]*(n[i]+1)/(n[i]+2);
    32623262                                vel[i]=sqrt(vx[i]*vx[i] + vy[i]*vy[i]);
     
    32683268      case Domain3DEnum:
    32693269                   basalelement->GetInputListOnNodes(&H[0],ThicknessEnum,0.);
    32703270                   basalelement->GetInputListOnNodes(&s[0],SurfaceEnum,0.);
    3271                         element->Recover3DMLHOInput(VxEnum, numnodes, vbx, vshx, n, H, s);
    3272                         element->Recover3DMLHOInput(VyEnum, numnodes, vby, vshy, n, H, s);
     3271                        element->Recover3DMOLHOInput(VxEnum, numnodes, vbx, vshx, n, H, s);
     3272                        element->Recover3DMOLHOInput(VyEnum, numnodes, vby, vshy, n, H, s);
    32733273                        break;
    32743274                default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
    32753275        }
     
    32933293        xDelete<int>(doflist);
    32943294        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    32953295}/*}}}*/
    3296 void           StressbalanceAnalysis::GetSolutionFromInputsMLHO(Vector<IssmDouble>* solution,Element* element){/*{{{*/
     3296void           StressbalanceAnalysis::GetSolutionFromInputsMOLHO(Vector<IssmDouble>* solution,Element* element){/*{{{*/
    32973297
    32983298        IssmDouble   vbx,vby,vshx,vshy;
    32993299        int          domaintype,dim,approximation,dofpernode;
     
    33123312        int numnodes = element->GetNumberOfNodes();
    33133313        int numdof   = numnodes*dofpernode;
    33143314        element->GetInputValue(&approximation,ApproximationEnum);
    3315         if(approximation!=MLHOApproximationEnum) _error_("mesh "<<EnumToStringx(approximation)<<" not supported here");
     3315        if(approximation!=MOLHOApproximationEnum) _error_("mesh "<<EnumToStringx(approximation)<<" not supported here");
    33163316
    33173317        /*Fetch dof list and allocate solution vector*/
    33183318        element->GetDofList(&doflist,approximation,GsetEnum);
  • ../trunk-jpl/src/c/analyses/StressbalanceAnalysis.h

     
    5656                ElementVector* CreatePVectorL1L2Front(Element* element);
    5757                ElementVector* CreatePVectorL1L2DrivingStress(Element* element);
    5858                void           InputUpdateFromSolutionL1L2(IssmDouble* solution,Element* element);
    59                 /*MLHO*/
    60                 ElementMatrix* CreateKMatrixMLHO(Element* element);
    61                 ElementMatrix* CreateKMatrixMLHOFriction(Element* element);
    62                 ElementMatrix* CreateKMatrixMLHOViscous(Element* element);
    63                 ElementVector* CreatePVectorMLHO(Element* element);
    64                 ElementVector* CreatePVectorMLHOFront(Element* element);
    65                 ElementVector* CreatePVectorMLHODrivingStress(Element* element);
    66                 void           InputUpdateFromSolutionMLHO(IssmDouble* solution,Element* element);
    67                 void           GetSolutionFromInputsMLHO(Vector<IssmDouble>* solution,Element* element);
     59                /*MOLHO*/
     60                ElementMatrix* CreateKMatrixMOLHO(Element* element);
     61                ElementMatrix* CreateKMatrixMOLHOFriction(Element* element);
     62                ElementMatrix* CreateKMatrixMOLHOViscous(Element* element);
     63                ElementVector* CreatePVectorMOLHO(Element* element);
     64                ElementVector* CreatePVectorMOLHOFront(Element* element);
     65                ElementVector* CreatePVectorMOLHODrivingStress(Element* element);
     66                void           InputUpdateFromSolutionMOLHO(IssmDouble* solution,Element* element);
     67                void           GetSolutionFromInputsMOLHO(Vector<IssmDouble>* solution,Element* element);
    6868                /*HO*/
    6969                ElementMatrix* CreateJacobianMatrixHO(Element* element);
    7070                ElementMatrix* CreateKMatrixHO(Element* element);
  • ../trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp

     
    99void StressbalanceSIAAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
    1010
    1111        /*Intermediaries*/
    12         bool       isSIA,isSSA,isL1L2,isMLHO,isHO,isFS,iscoupling;
     12        bool       isSIA,isSSA,isL1L2,isMOLHO,isHO,isFS,iscoupling;
    1313
    1414        /*Fetch parameters: */
    1515        iomodel->FindConstant(&isSIA,"md.flowequation.isSIA");
    1616        iomodel->FindConstant(&isSSA,"md.flowequation.isSSA");
    1717        iomodel->FindConstant(&isL1L2,"md.flowequation.isL1L2");
    18         iomodel->FindConstant(&isMLHO,"md.flowequation.isMLHO");
     18        iomodel->FindConstant(&isMOLHO,"md.flowequation.isMOLHO");
    1919        iomodel->FindConstant(&isHO,"md.flowequation.isHO");
    2020        iomodel->FindConstant(&isFS,"md.flowequation.isFS");
    2121
     
    2323        if (!isSIA) return;
    2424
    2525        /*Do we have coupling*/
    26         if((isSIA?1.:0.) + (isSSA?1.:0.) + (isL1L2?1.:0.) + (isMLHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)
     26        if((isSIA?1.:0.) + (isSSA?1.:0.) + (isL1L2?1.:0.) + (isMOLHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)
    2727         iscoupling = true;
    2828        else
    2929         iscoupling = false;
  • ../trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp

     
    1111void StressbalanceVerticalAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
    1212
    1313        /*Intermediary*/
    14         bool        isSIA,isSSA,isL1L2,isMLHO,isHO,isFS,iscoupling;
     14        bool        isSIA,isSSA,isL1L2,isMOLHO,isHO,isFS,iscoupling;
    1515        int         Mz,Nz;
    1616        IssmDouble *spcvz = NULL;
    1717
     
    2222        iomodel->FindConstant(&isSIA,"md.flowequation.isSIA");
    2323        iomodel->FindConstant(&isSSA,"md.flowequation.isSSA");
    2424        iomodel->FindConstant(&isL1L2,"md.flowequation.isL1L2");
    25         iomodel->FindConstant(&isMLHO,"md.flowequation.isMLHO");
     25        iomodel->FindConstant(&isMOLHO,"md.flowequation.isMOLHO");
    2626        iomodel->FindConstant(&isHO,"md.flowequation.isHO");
    2727        iomodel->FindConstant(&isFS,"md.flowequation.isFS");
    2828
    2929        /*Do we have coupling*/
    30         if((isSIA?1.:0.) + (isSSA?1.:0.) + (isL1L2?1.:0.) + (isMLHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)
     30        if((isSIA?1.:0.) + (isSSA?1.:0.) + (isL1L2?1.:0.) + (isMOLHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)
    3131         iscoupling = true;
    3232        else
    3333         iscoupling = false;
  • ../trunk-jpl/src/c/classes/Elements/Element.cpp

     
    10401040
    10411041}
    10421042/*}}}*/
    1043 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){/*{{{*/
     1043void       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){/*{{{*/
    10441044
    10451045        /*Intermediaries*/
    10461046        int materialstype;
     
    10501050        IssmDouble eps0=1.e-27;
    10511051
    10521052        /* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy */
    1053    this->StrainRateMLHO(&epsilon[0],xyz_list,gauss,
     1053   this->StrainRateMOLHO(&epsilon[0],xyz_list,gauss,
    10541054                                vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input,zeta);
    10551055   eps_eff=sqrt(epsilon[0]*epsilon[0] + epsilon[1]*epsilon[1] + epsilon[2]*epsilon[2]
    10561056                                + epsilon[3]*epsilon[3] + epsilon[4]*epsilon[4] + epsilon[0]*epsilon[1] + eps0*eps0);
     
    46184618        epsilon[1] = 0.5*dvx[1];
    46194619
    46204620}/*}}}*/
    4621 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){/*{{{*/
    4622         /*Compute the 2d Blatter/MLHO Strain Rate (5 components) for a given vertical coordinate (zeta):
     4621void       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){/*{{{*/
     4622        /*Compute the 2d Blatter/MOLHO Strain Rate (5 components) for a given vertical coordinate (zeta):
    46234623         *
    46244624         * epsilon=[exx eyy exy exz eyz]
    46254625         *
  • ../trunk-jpl/src/c/classes/Elements/Element.h

     
    8585                void               dViscositydBFS(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);
    8686                void               dViscositydBHO(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
    8787                void               dViscositydBSSA(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
    88                 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);
     88                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);
    8989                void               dViscositydDSSA(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
    9090                void               Echo();
    9191                void               FindParam(bool* pvalue,int paramenum);
     
    189189                void               StrainRateFS(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);
    190190                void               StrainRateHO(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
    191191                void               StrainRateHO2dvertical(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
    192                 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);
     192                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);
    193193                void               StrainRateSSA(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
    194194                void               StrainRateSSA1d(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input);
    195195                void               StressMaxPrincipalCreateInput(void);
     
    350350                virtual int        NumberofNodesVelocity(void)=0;
    351351                virtual void       PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding)=0;
    352352                virtual int        PressureInterpolation()=0;
    353       virtual void       Recover3DMLHOInput(int targetVel_enum, int numnodes, IssmDouble* vb,  IssmDouble* vsh, IssmDouble* n, IssmDouble* H, IssmDouble* s){_error_("not implemented yet");};
     353      virtual void       Recover3DMOLHOInput(int targetVel_enum, int numnodes, IssmDouble* vb,  IssmDouble* vsh, IssmDouble* n, IssmDouble* H, IssmDouble* s){_error_("not implemented yet");};
    354354                virtual void       ReduceMatrices(ElementMatrix* Ke,ElementVector* pe)=0;
    355355                virtual void       ResetFSBasalBoundaryCondition()=0;
    356356                virtual void       ResetHooks()=0;
  • ../trunk-jpl/src/c/classes/Elements/Penta.cpp

     
    32813281        return PentaRef::PressureInterpolation(this->element_type);
    32823282}
    32833283/*}}}*/
    3284 void       Penta::Recover3DMLHOInput(int targetVel_enum, int numnodes, IssmDouble* vb,  IssmDouble* vsh, IssmDouble* n, IssmDouble* H, IssmDouble* s){/*{{{*/
     3284void       Penta::Recover3DMOLHOInput(int targetVel_enum, int numnodes, IssmDouble* vb,  IssmDouble* vsh, IssmDouble* n, IssmDouble* H, IssmDouble* s){/*{{{*/
    32853285   /* Recover the velocity acording to v=vb+(1-\zeta^{n+1})vsh, where \zeta=(s-z)/H
    32863286    * The variables vb, vsh, n, H and s are all from the 2D horizontal mesh(Tria), with "numnodes" DOFs
    32873287    * To project to penta the DOFs are doubled in size
  • ../trunk-jpl/src/c/classes/Elements/Penta.h

     
    169169                int            NumberofNodesVelocity(void);
    170170                void           PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding);
    171171                int            PressureInterpolation();
    172       void           Recover3DMLHOInput(int targetVel_enum, int numnodes, IssmDouble* vb,  IssmDouble* vsh, IssmDouble* n, IssmDouble* H, IssmDouble* s);
     172      void           Recover3DMOLHOInput(int targetVel_enum, int numnodes, IssmDouble* vb,  IssmDouble* vsh, IssmDouble* n, IssmDouble* H, IssmDouble* s);
    173173                void           ReduceMatrices(ElementMatrix* Ke,ElementVector* pe);
    174174                void           ResetFSBasalBoundaryCondition(void);
    175175                void           ResetHooks();
  • ../trunk-jpl/src/c/classes/FemModel.cpp

     
    32183218        this->parameters->FindParam(&temp,FlowequationIsSIAEnum); iomodel->AddConstant(new IoConstant(temp,"md.flowequation.isSIA"));
    32193219        this->parameters->FindParam(&temp,FlowequationIsSSAEnum); iomodel->AddConstant(new IoConstant(temp,"md.flowequation.isSSA"));
    32203220        this->parameters->FindParam(&temp,FlowequationIsL1L2Enum); iomodel->AddConstant(new IoConstant(temp,"md.flowequation.isL1L2"));
    3221         this->parameters->FindParam(&temp,FlowequationIsMLHOEnum); iomodel->AddConstant(new IoConstant(temp,"md.flowequation.isMLHO"));
     3221        this->parameters->FindParam(&temp,FlowequationIsMOLHOEnum); iomodel->AddConstant(new IoConstant(temp,"md.flowequation.isMOLHO"));
    32223222        this->parameters->FindParam(&temp,FlowequationIsHOEnum); iomodel->AddConstant(new IoConstant(temp,"md.flowequation.isHO"));
    32233223        this->parameters->FindParam(&temp,FlowequationIsFSEnum); iomodel->AddConstant(new IoConstant(temp,"md.flowequation.isFS"));
    32243224        this->parameters->FindParam(&tempint,MasstransportStabilizationEnum); iomodel->AddConstant(new IoConstant(tempint,"md.masstransport.stabilization"));
  • ../trunk-jpl/src/c/classes/Loads/Penpair.cpp

     
    354354                                case HOApproximationEnum:   return PenaltyCreateKMatrixStressbalanceSSAHO(kmax);
    355355                                default: _error_("Approximation "<<EnumToStringx(approximation1)<<" not supported yet");
    356356                        }
    357                 case MLHOApproximationEnum:
     357                case MOLHOApproximationEnum:
    358358                        switch(approximation1){
    359                                 case MLHOApproximationEnum:   return PenaltyCreateKMatrixStressbalanceSSAHO(kmax);
     359                                case MOLHOApproximationEnum:   return PenaltyCreateKMatrixStressbalanceSSAHO(kmax);
    360360                                default: _error_("Approximation "<<EnumToStringx(approximation1)<<" not supported yet");
    361361                        }
    362362                case L1L2ApproximationEnum:
  • ../trunk-jpl/src/c/classes/Materials/Material.h

     
    5050                virtual void       ViscositySSADerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon,Gauss* gauss)=0;
    5151                virtual void       ViscosityFS(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input)=0;
    5252                virtual void       ViscosityHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input)=0;
    53                 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;
    54                 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;
     53                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;
     54                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;
    5555                virtual void       ViscosityL1L2(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* surf)=0;
    5656                virtual void       ViscositySSA(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input)=0;
    5757                virtual void       ViscosityBFS(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input,IssmDouble epseff)=0;
  • ../trunk-jpl/src/c/classes/Materials/Matestar.cpp

     
    566566        /*Compute viscosity*/
    567567        *pviscosity=GetViscosityGeneral(vx,vy,vz,&dvx[0],&dvy[0],&dvz[0],eps_eff,isdepthaveraged,gauss);
    568568}/*}}}*/
    569 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){/*{{{*/
     569void  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){/*{{{*/
    570570        _error_("not implemented yet");
    571571}/*}}}*/
    572 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){/*{{{*/
     572void  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){/*{{{*/
    573573        _error_("not implemented yet");
    574574}/*}}}*/
    575575void  Matestar::ViscosityL1L2(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* surface_input){/*{{{*/
  • ../trunk-jpl/src/m/classes/inversion.py

     
    150150
    151151        # Only SSA, HO and FS are supported right now
    152152        if solution == 'StressbalanceSolution':
    153             if not (md.flowequation.isSSA or md.flowequation.isMLHO or md.flowequation.isHO or md.flowequation.isFS or md.flowequation.isL1L2):
    154                 md.checkmessage("'inversion can only be performed for SSA, MLHO, HO or FS ice flow models")
     153            if not (md.flowequation.isSSA or md.flowequation.isMOLHO or md.flowequation.isHO or md.flowequation.isFS or md.flowequation.isL1L2):
     154                md.checkmessage("'inversion can only be performed for SSA, MOLHO, HO or FS ice flow models")
    155155        if solution == 'BalancethicknessSolution':
    156156            md = checkfield(md, 'fieldname', 'inversion.thickness_obs', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
    157157        elif solution == 'BalancethicknessSoftSolution':
  • ../trunk-jpl/src/m/parameterization/setflowequation.js

     
    22//SETFLOWEQUATION - associate a solution type to each element
    33//
    44//   This routine works like plotmodel: it works with an even number of inputs
    5 //   'SIA','SSA','L1L2','MLHO','HO','FS' and 'fill' are the possible options
     5//   'SIA','SSA','L1L2','MOLHO','HO','FS' and 'fill' are the possible options
    66//   that must be followed by the corresponding exp file or flags list
    77//   It can either be a domain file (argus type, .exp extension), or an array of element flags.
    88//   If user wants every element outside the domain to be
     
    1010//   an empty string '' will be considered as an empty domain
    1111//   a string 'all' will be considered as the entire domain
    1212//   You can specify the type of coupling, 'penalties' or 'tiling', to use with the input 'coupling'
    13 //   NB: L1L2 and MLHO cannot currently be coupled to any other ice flow model
     13//   NB: L1L2 and MOLHO cannot currently be coupled to any other ice flow model
    1414//
    1515//   Usage:
    1616//      setflowequation(md,varargin)
     
    3737        SSAflag  = FlagElements(md,options.getfieldvalue('SSA',''));
    3838        HOflag   = FlagElements(md,options.getfieldvalue('HO',''));
    3939        L1L2flag = FlagElements(md,options.getfieldvalue('L1L2',''));
    40         MLHOflag = FlagElements(md,options.getfieldvalue('MLHO',''));
     40        MOLHOflag = FlagElements(md,options.getfieldvalue('MOLHO',''));
    4141        FSflag   = FlagElements(md,options.getfieldvalue('FS',''));
    4242        filltype = options.getfieldvalue('fill','none');
    4343        options.displayunused();
     
    5454        }
    5555
    5656        //check that each element has at least one flag
    57         for(var i=0;i<md.mesh.numberofelements;i++)if((SIAflag[i] + SSAflag[i] + HOflag[i] + L1L2flag[i] + MLHOflag[i] + FSflag[i])==0)
     57        for(var i=0;i<md.mesh.numberofelements;i++)if((SIAflag[i] + SSAflag[i] + HOflag[i] + L1L2flag[i] + MOLHOflag[i] + FSflag[i])==0)
    5858        throw Error("elements type not assigned, supported models are 'SIA','SSA','HO' and 'FS'");
    5959
    6060        //check that each element has only one flag
    61         if (ArrayAnyAboveStrict(ArrayXPY(SIAflag,SSAflag,HOflag,L1L2flag,MLHOflag),1)){
     61        if (ArrayAnyAboveStrict(ArrayXPY(SIAflag,SSAflag,HOflag,L1L2flag,MOLHOflag),1)){
    6262                console.log('setflowequation warning message: some elements have several types, higher order type is used for them')
    6363
    6464                for(var i=0;i<md.mesh.numberofelements;i++){
     
    7070
    7171        //check that L1L2 is not coupled to any other model for now
    7272        if (ArrayAnyEqual(L1L2flag,1) & ArrayAnyEqual(ArrayOr(SIAflag,SSAflag,HOflag,FSflag),1)) throw Error('L1L2 cannot be coupled to any other model');
    73         if (ArrayAnyEqual(MLHOflag,1) & ArrayAnyEqual(ArrayOr(SIAflag,SSAflag,HOflag,FSflag),1)) throw Error('MLHO cannot be coupled to any other model');
     73        if (ArrayAnyEqual(MOLHOflag,1) & ArrayAnyEqual(ArrayOr(SIAflag,SSAflag,HOflag,FSflag),1)) throw Error('MOLHO cannot be coupled to any other model');
    7474
    7575        //Check that no HO or FS for 2d mesh
    7676        if (md.mesh.domaintype() == '2Dhorizontal'){
     
    9999        pos=ArrayFind(L1L2flag,1);
    100100        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;
    101101
    102         nodeonMLHO=NewArrayFill(md.mesh.numberofvertices,0);
    103         pos=ArrayFind(MLHOflag,1);
    104         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;
     102        nodeonMOLHO=NewArrayFill(md.mesh.numberofvertices,0);
     103        pos=ArrayFind(MOLHOflag,1);
     104        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;
    105105
    106106        nodeonFS=NewArrayFill(md.mesh.numberofvertices,0);
    107107        noneflag=NewArrayFill(md.mesh.numberofvertices,0);
     
    261261        pos=ArrayFind(SIAflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=1;
    262262        pos=ArrayFind(SSAflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=2;
    263263        pos=ArrayFind(L1L2flag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=3;
    264         pos=ArrayFind(MLHOflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=4;
     264        pos=ArrayFind(MOLHOflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=4;
    265265        pos=ArrayFind(HOflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=5;
    266266        pos=ArrayFind(FSflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=6;
    267267        pos=ArrayFind(SSAHOflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=7;
     
    280280
    281281        pos=ArrayFind(nodeonSSA,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=2;
    282282        pos=ArrayFind(nodeonL1L2,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=3;
    283         pos=ArrayFind(nodeonMLHO,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=4;
     283        pos=ArrayFind(nodeonMOLHO,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=4;
    284284        pos=ArrayFind(nodeonHO,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=5;
    285285        pos=ArrayFind(nodeonFS,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=6;
    286286        //DO SIA LAST! Otherwise spcs might not be set up correctly (SIA should have priority)
     
    300300        md.flowequation.isSIA  = ArrayAnyEqual(md.flowequation.element_equation,1);
    301301        md.flowequation.isSSA  = ArrayAnyEqual(md.flowequation.element_equation,2);
    302302        md.flowequation.isL1L2 = ArrayAnyEqual(md.flowequation.element_equation,3);
    303         md.flowequation.isMLHO = ArrayAnyEqual(md.flowequation.element_equation,4);
     303        md.flowequation.isMOLHO = ArrayAnyEqual(md.flowequation.element_equation,4);
    304304        md.flowequation.isHO   = ArrayAnyEqual(md.flowequation.element_equation,5);
    305305        md.flowequation.isFS   = ArrayAnyEqual(md.flowequation.element_equation,6);
    306306        return
  • ../trunk-jpl/src/c/shared/Enum/Enum.vim

     
    112112syn keyword cConstant CalvingLawEnum
    113113syn keyword cConstant CalvingMinthicknessEnum
    114114syn keyword cConstant CalvingTestSpeedfactorEnum
     115syn keyword cConstant CalvingTestIndependentRateEnum
    115116syn keyword cConstant CalvingUseParamEnum
    116117syn keyword cConstant CalvingScaleThetaEnum
    117118syn keyword cConstant CalvingAmpAlphaEnum
     
    174175syn keyword cConstant FlowequationIsFSEnum
    175176syn keyword cConstant FlowequationIsHOEnum
    176177syn keyword cConstant FlowequationIsL1L2Enum
    177 syn keyword cConstant FlowequationIsMLHOEnum
     178syn keyword cConstant FlowequationIsMOLHOEnum
    178179syn keyword cConstant FlowequationIsSIAEnum
    179180syn keyword cConstant FlowequationIsSSAEnum
    180181syn keyword cConstant FlowequationIsNitscheEnum
     
    657658syn keyword cConstant BottomPressureOldEnum
    658659syn keyword cConstant CalvingCalvingrateEnum
    659660syn keyword cConstant CalvingHabFractionEnum
     661syn keyword cConstant CalvingAblationrateEnum
    660662syn keyword cConstant CalvingMeltingrateEnum
    661663syn keyword cConstant CalvingStressThresholdFloatingiceEnum
    662664syn keyword cConstant CalvingStressThresholdGroundediceEnum
     
    13821384syn keyword cConstant InversionVzObsEnum
    13831385syn keyword cConstant JEnum
    13841386syn keyword cConstant L1L2ApproximationEnum
    1385 syn keyword cConstant MLHOApproximationEnum
     1387syn keyword cConstant MOLHOApproximationEnum
    13861388syn keyword cConstant L2ProjectionBaseAnalysisEnum
    13871389syn keyword cConstant L2ProjectionEPLAnalysisEnum
    13881390syn keyword cConstant LACrouzeixRaviartEnum
     
    16211623syn keyword cType Cfsurfacelogvel
    16221624syn keyword cType Cfsurfacesquare
    16231625syn keyword cType Channel
    1624 syn keyword cType classes
    16251626syn keyword cType Constraint
    16261627syn keyword cType Constraints
    16271628syn keyword cType Contour
     
    16281629syn keyword cType Contours
    16291630syn keyword cType ControlInput
    16301631syn keyword cType Covertree
     1632syn keyword cType DataSetParam
    16311633syn keyword cType DatasetInput
    1632 syn keyword cType DataSetParam
    16331634syn keyword cType Definition
    16341635syn keyword cType DependentObject
    16351636syn keyword cType DoubleInput
     
    16421643syn keyword cType ElementHook
    16431644syn keyword cType ElementInput
    16441645syn keyword cType ElementMatrix
     1646syn keyword cType ElementVector
    16451647syn keyword cType Elements
    1646 syn keyword cType ElementVector
    16471648syn keyword cType ExponentialVariogram
    16481649syn keyword cType ExternalResult
    16491650syn keyword cType FemModel
     
    16501651syn keyword cType FileParam
    16511652syn keyword cType Friction
    16521653syn keyword cType Gauss
    1653 syn keyword cType GaussianVariogram
    1654 syn keyword cType gaussobjects
    16551654syn keyword cType GaussPenta
    16561655syn keyword cType GaussSeg
    16571656syn keyword cType GaussTetra
    16581657syn keyword cType GaussTria
     1658syn keyword cType GaussianVariogram
    16591659syn keyword cType GenericExternalResult
    16601660syn keyword cType GenericOption
    16611661syn keyword cType GenericParam
     
    16711671syn keyword cType IoModel
    16721672syn keyword cType IssmDirectApplicInterface
    16731673syn keyword cType IssmParallelDirectApplicInterface
    1674 syn keyword cType krigingobjects
    16751674syn keyword cType Load
    16761675syn keyword cType Loads
    16771676syn keyword cType Masscon
     
    16821681syn keyword cType Matestar
    16831682syn keyword cType Matice
    16841683syn keyword cType Matlitho
    1685 syn keyword cType matrixobjects
    16861684syn keyword cType MatrixParam
    16871685syn keyword cType Misfit
    16881686syn keyword cType Moulin
     
    16951693syn keyword cType Observation
    16961694syn keyword cType Observations
    16971695syn keyword cType Option
     1696syn keyword cType OptionUtilities
    16981697syn keyword cType Options
    1699 syn keyword cType OptionUtilities
    17001698syn keyword cType Param
    17011699syn keyword cType Parameters
    17021700syn keyword cType Pengrid
     
    17101708syn keyword cType Radar
    17111709syn keyword cType Regionaloutput
    17121710syn keyword cType Results
     1711syn keyword cType RiftStruct
    17131712syn keyword cType Riftfront
    1714 syn keyword cType RiftStruct
    17151713syn keyword cType SealevelGeometry
    17161714syn keyword cType Seg
    17171715syn keyword cType SegInput
     1716syn keyword cType SegRef
    17181717syn keyword cType Segment
    1719 syn keyword cType SegRef
    17201718syn keyword cType SpcDynamic
    17211719syn keyword cType SpcStatic
    17221720syn keyword cType SpcTransient
     
    17351733syn keyword cType VectorParam
    17361734syn keyword cType Vertex
    17371735syn keyword cType Vertices
     1736syn keyword cType classes
     1737syn keyword cType gaussobjects
     1738syn keyword cType krigingobjects
     1739syn keyword cType matrixobjects
    17381740syn keyword cType AdjointBalancethickness2Analysis
    17391741syn keyword cType AdjointBalancethicknessAnalysis
    17401742syn keyword cType AdjointHorizAnalysis
  • ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

     
    114114                case CalvingLawEnum : return "CalvingLaw";
    115115                case CalvingMinthicknessEnum : return "CalvingMinthickness";
    116116                case CalvingTestSpeedfactorEnum : return "CalvingTestSpeedfactor";
     117                case CalvingTestIndependentRateEnum : return "CalvingTestIndependentRate";
    117118                case CalvingUseParamEnum : return "CalvingUseParam";
    118119                case CalvingScaleThetaEnum : return "CalvingScaleTheta";
    119120                case CalvingAmpAlphaEnum : return "CalvingAmpAlpha";
     
    176177                case FlowequationIsFSEnum : return "FlowequationIsFS";
    177178                case FlowequationIsHOEnum : return "FlowequationIsHO";
    178179                case FlowequationIsL1L2Enum : return "FlowequationIsL1L2";
    179                 case FlowequationIsMLHOEnum : return "FlowequationIsMLHO";
     180                case FlowequationIsMOLHOEnum : return "FlowequationIsMOLHO";
    180181                case FlowequationIsSIAEnum : return "FlowequationIsSIA";
    181182                case FlowequationIsSSAEnum : return "FlowequationIsSSA";
    182183                case FlowequationIsNitscheEnum : return "FlowequationIsNitsche";
     
    659660                case BottomPressureOldEnum : return "BottomPressureOld";
    660661                case CalvingCalvingrateEnum : return "CalvingCalvingrate";
    661662                case CalvingHabFractionEnum : return "CalvingHabFraction";
     663                case CalvingAblationrateEnum : return "CalvingAblationrate";
    662664                case CalvingMeltingrateEnum : return "CalvingMeltingrate";
    663665                case CalvingStressThresholdFloatingiceEnum : return "CalvingStressThresholdFloatingice";
    664666                case CalvingStressThresholdGroundediceEnum : return "CalvingStressThresholdGroundedice";
     
    13841386                case InversionVzObsEnum : return "InversionVzObs";
    13851387                case JEnum : return "J";
    13861388                case L1L2ApproximationEnum : return "L1L2Approximation";
    1387                 case MLHOApproximationEnum : return "MLHOApproximation";
     1389                case MOLHOApproximationEnum : return "MOLHOApproximation";
    13881390                case L2ProjectionBaseAnalysisEnum : return "L2ProjectionBaseAnalysis";
    13891391                case L2ProjectionEPLAnalysisEnum : return "L2ProjectionEPLAnalysis";
    13901392                case LACrouzeixRaviartEnum : return "LACrouzeixRaviart";
  • ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

     
    114114              else if (strcmp(name,"CalvingLaw")==0) return CalvingLawEnum;
    115115              else if (strcmp(name,"CalvingMinthickness")==0) return CalvingMinthicknessEnum;
    116116              else if (strcmp(name,"CalvingTestSpeedfactor")==0) return CalvingTestSpeedfactorEnum;
     117              else if (strcmp(name,"CalvingTestIndependentRate")==0) return CalvingTestIndependentRateEnum;
    117118              else if (strcmp(name,"CalvingUseParam")==0) return CalvingUseParamEnum;
    118119              else if (strcmp(name,"CalvingScaleTheta")==0) return CalvingScaleThetaEnum;
    119120              else if (strcmp(name,"CalvingAmpAlpha")==0) return CalvingAmpAlphaEnum;
     
    135136              else if (strcmp(name,"CumBslcHydroPartition")==0) return CumBslcHydroPartitionEnum;
    136137              else if (strcmp(name,"CumBslcOceanPartition")==0) return CumBslcOceanPartitionEnum;
    137138              else if (strcmp(name,"CumGmtslc")==0) return CumGmtslcEnum;
    138               else if (strcmp(name,"CumGmslc")==0) return CumGmslcEnum;
    139139         else stage=2;
    140140   }
    141141   if(stage==2){
    142               if (strcmp(name,"DamageC1")==0) return DamageC1Enum;
     142              if (strcmp(name,"CumGmslc")==0) return CumGmslcEnum;
     143              else if (strcmp(name,"DamageC1")==0) return DamageC1Enum;
    143144              else if (strcmp(name,"DamageC2")==0) return DamageC2Enum;
    144145              else if (strcmp(name,"DamageC3")==0) return DamageC3Enum;
    145146              else if (strcmp(name,"DamageC4")==0) return DamageC4Enum;
     
    179180              else if (strcmp(name,"FlowequationIsFS")==0) return FlowequationIsFSEnum;
    180181              else if (strcmp(name,"FlowequationIsHO")==0) return FlowequationIsHOEnum;
    181182              else if (strcmp(name,"FlowequationIsL1L2")==0) return FlowequationIsL1L2Enum;
    182               else if (strcmp(name,"FlowequationIsMLHO")==0) return FlowequationIsMLHOEnum;
     183              else if (strcmp(name,"FlowequationIsMOLHO")==0) return FlowequationIsMOLHOEnum;
    183184              else if (strcmp(name,"FlowequationIsSIA")==0) return FlowequationIsSIAEnum;
    184185              else if (strcmp(name,"FlowequationIsSSA")==0) return FlowequationIsSSAEnum;
    185186              else if (strcmp(name,"FlowequationIsNitsche")==0) return FlowequationIsNitscheEnum;
     
    258259              else if (strcmp(name,"InputToSmooth")==0) return InputToSmoothEnum;
    259260              else if (strcmp(name,"InversionAlgorithm")==0) return InversionAlgorithmEnum;
    260261              else if (strcmp(name,"InversionControlParameters")==0) return InversionControlParametersEnum;
    261               else if (strcmp(name,"InversionControlScalingFactors")==0) return InversionControlScalingFactorsEnum;
    262262         else stage=3;
    263263   }
    264264   if(stage==3){
    265               if (strcmp(name,"InversionCostFunctions")==0) return InversionCostFunctionsEnum;
     265              if (strcmp(name,"InversionControlScalingFactors")==0) return InversionControlScalingFactorsEnum;
     266              else if (strcmp(name,"InversionCostFunctions")==0) return InversionCostFunctionsEnum;
    266267              else if (strcmp(name,"InversionDxmin")==0) return InversionDxminEnum;
    267268              else if (strcmp(name,"InversionGatol")==0) return InversionGatolEnum;
    268269              else if (strcmp(name,"InversionGradientScaling")==0) return InversionGradientScalingEnum;
     
    381382              else if (strcmp(name,"SamplingRobin")==0) return SamplingRobinEnum;
    382383              else if (strcmp(name,"SamplingSeed")==0) return SamplingSeedEnum;
    383384              else if (strcmp(name,"SaveResults")==0) return SaveResultsEnum;
    384               else if (strcmp(name,"SolidearthPartitionIce")==0) return SolidearthPartitionIceEnum;
    385385         else stage=4;
    386386   }
    387387   if(stage==4){
    388               if (strcmp(name,"SolidearthPartitionHydro")==0) return SolidearthPartitionHydroEnum;
     388              if (strcmp(name,"SolidearthPartitionIce")==0) return SolidearthPartitionIceEnum;
     389              else if (strcmp(name,"SolidearthPartitionHydro")==0) return SolidearthPartitionHydroEnum;
    389390              else if (strcmp(name,"SolidearthPartitionOcean")==0) return SolidearthPartitionOceanEnum;
    390391              else if (strcmp(name,"SolidearthNpartIce")==0) return SolidearthNpartIceEnum;
    391392              else if (strcmp(name,"SolidearthNpartOcean")==0) return SolidearthNpartOceanEnum;
     
    504505              else if (strcmp(name,"SmbIsturbulentflux")==0) return SmbIsturbulentfluxEnum;
    505506              else if (strcmp(name,"SmbK")==0) return SmbKEnum;
    506507              else if (strcmp(name,"SmbLapseRates")==0) return SmbLapseRatesEnum;
    507               else if (strcmp(name,"SmbNumBasins")==0) return SmbNumBasinsEnum;
    508508         else stage=5;
    509509   }
    510510   if(stage==5){
    511               if (strcmp(name,"SmbNumElevationBins")==0) return SmbNumElevationBinsEnum;
     511              if (strcmp(name,"SmbNumBasins")==0) return SmbNumBasinsEnum;
     512              else if (strcmp(name,"SmbNumElevationBins")==0) return SmbNumElevationBinsEnum;
    512513              else if (strcmp(name,"SmbNumRequestedOutputs")==0) return SmbNumRequestedOutputsEnum;
    513514              else if (strcmp(name,"SmbPfac")==0) return SmbPfacEnum;
    514515              else if (strcmp(name,"SmbPhi")==0) return SmbPhiEnum;
     
    627628              else if (strcmp(name,"BasalforcingsDeepwaterMeltingRateValuesAutoregression")==0) return BasalforcingsDeepwaterMeltingRateValuesAutoregressionEnum;
    628629              else if (strcmp(name,"BasalforcingsFloatingiceMeltingRate")==0) return BasalforcingsFloatingiceMeltingRateEnum;
    629630              else if (strcmp(name,"BasalforcingsGeothermalflux")==0) return BasalforcingsGeothermalfluxEnum;
    630               else if (strcmp(name,"BasalforcingsGroundediceMeltingRate")==0) return BasalforcingsGroundediceMeltingRateEnum;
    631631         else stage=6;
    632632   }
    633633   if(stage==6){
    634               if (strcmp(name,"BasalforcingsLinearBasinId")==0) return BasalforcingsLinearBasinIdEnum;
     634              if (strcmp(name,"BasalforcingsGroundediceMeltingRate")==0) return BasalforcingsGroundediceMeltingRateEnum;
     635              else if (strcmp(name,"BasalforcingsLinearBasinId")==0) return BasalforcingsLinearBasinIdEnum;
    635636              else if (strcmp(name,"BasalforcingsPerturbationMeltingRate")==0) return BasalforcingsPerturbationMeltingRateEnum;
    636637              else if (strcmp(name,"BasalforcingsSpatialDeepwaterElevation")==0) return BasalforcingsSpatialDeepwaterElevationEnum;
    637638              else if (strcmp(name,"BasalforcingsSpatialDeepwaterMeltingRate")==0) return BasalforcingsSpatialDeepwaterMeltingRateEnum;
     
    674675              else if (strcmp(name,"BottomPressureOld")==0) return BottomPressureOldEnum;
    675676              else if (strcmp(name,"CalvingCalvingrate")==0) return CalvingCalvingrateEnum;
    676677              else if (strcmp(name,"CalvingHabFraction")==0) return CalvingHabFractionEnum;
     678              else if (strcmp(name,"CalvingAblationrate")==0) return CalvingAblationrateEnum;
    677679              else if (strcmp(name,"CalvingMeltingrate")==0) return CalvingMeltingrateEnum;
    678680              else if (strcmp(name,"CalvingStressThresholdFloatingice")==0) return CalvingStressThresholdFloatingiceEnum;
    679681              else if (strcmp(name,"CalvingStressThresholdGroundedice")==0) return CalvingStressThresholdGroundediceEnum;
     
    749751              else if (strcmp(name,"FrictionM")==0) return FrictionMEnum;
    750752              else if (strcmp(name,"FrictionP")==0) return FrictionPEnum;
    751753              else if (strcmp(name,"FrictionPressureAdjustedTemperature")==0) return FrictionPressureAdjustedTemperatureEnum;
    752               else if (strcmp(name,"FrictionQ")==0) return FrictionQEnum;
    753               else if (strcmp(name,"FrictionSedimentCompressibilityCoefficient")==0) return FrictionSedimentCompressibilityCoefficientEnum;
    754754         else stage=7;
    755755   }
    756756   if(stage==7){
    757               if (strcmp(name,"FrictionTillFrictionAngle")==0) return FrictionTillFrictionAngleEnum;
     757              if (strcmp(name,"FrictionQ")==0) return FrictionQEnum;
     758              else if (strcmp(name,"FrictionSedimentCompressibilityCoefficient")==0) return FrictionSedimentCompressibilityCoefficientEnum;
     759              else if (strcmp(name,"FrictionTillFrictionAngle")==0) return FrictionTillFrictionAngleEnum;
    758760              else if (strcmp(name,"FrictionWaterLayer")==0) return FrictionWaterLayerEnum;
    759761              else if (strcmp(name,"Frictionf")==0) return FrictionfEnum;
    760762              else if (strcmp(name,"FrontalForcingsBasinId")==0) return FrontalForcingsBasinIdEnum;
     
    872874              else if (strcmp(name,"SealevelBarystaticIceMask")==0) return SealevelBarystaticIceMaskEnum;
    873875              else if (strcmp(name,"SealevelBarystaticIceWeights")==0) return SealevelBarystaticIceWeightsEnum;
    874876              else if (strcmp(name,"SealevelBarystaticIceArea")==0) return SealevelBarystaticIceAreaEnum;
    875               else if (strcmp(name,"SealevelBarystaticIceLatbar")==0) return SealevelBarystaticIceLatbarEnum;
    876               else if (strcmp(name,"SealevelBarystaticIceLongbar")==0) return SealevelBarystaticIceLongbarEnum;
    877877         else stage=8;
    878878   }
    879879   if(stage==8){
    880               if (strcmp(name,"SealevelBarystaticIceLoad")==0) return SealevelBarystaticIceLoadEnum;
     880              if (strcmp(name,"SealevelBarystaticIceLatbar")==0) return SealevelBarystaticIceLatbarEnum;
     881              else if (strcmp(name,"SealevelBarystaticIceLongbar")==0) return SealevelBarystaticIceLongbarEnum;
     882              else if (strcmp(name,"SealevelBarystaticIceLoad")==0) return SealevelBarystaticIceLoadEnum;
    881883              else if (strcmp(name,"SealevelBarystaticHydroMask")==0) return SealevelBarystaticHydroMaskEnum;
    882884              else if (strcmp(name,"SealevelBarystaticHydroWeights")==0) return SealevelBarystaticHydroWeightsEnum;
    883885              else if (strcmp(name,"SealevelBarystaticHydroArea")==0) return SealevelBarystaticHydroAreaEnum;
     
    995997              else if (strcmp(name,"SmbGdn")==0) return SmbGdnEnum;
    996998              else if (strcmp(name,"SmbGdnini")==0) return SmbGdniniEnum;
    997999              else if (strcmp(name,"SmbGsp")==0) return SmbGspEnum;
    998               else if (strcmp(name,"SmbGspini")==0) return SmbGspiniEnum;
    999               else if (strcmp(name,"SmbHref")==0) return SmbHrefEnum;
    10001000         else stage=9;
    10011001   }
    10021002   if(stage==9){
    1003               if (strcmp(name,"SmbIsInitialized")==0) return SmbIsInitializedEnum;
     1003              if (strcmp(name,"SmbGspini")==0) return SmbGspiniEnum;
     1004              else if (strcmp(name,"SmbHref")==0) return SmbHrefEnum;
     1005              else if (strcmp(name,"SmbIsInitialized")==0) return SmbIsInitializedEnum;
    10041006              else if (strcmp(name,"SmbMAdd")==0) return SmbMAddEnum;
    10051007              else if (strcmp(name,"SmbMassBalance")==0) return SmbMassBalanceEnum;
    10061008              else if (strcmp(name,"SmbMassBalanceSubstep")==0) return SmbMassBalanceSubstepEnum;
     
    11181120              else if (strcmp(name,"VxShear")==0) return VxShearEnum;
    11191121              else if (strcmp(name,"VxSurface")==0) return VxSurfaceEnum;
    11201122              else if (strcmp(name,"VyAverage")==0) return VyAverageEnum;
    1121               else if (strcmp(name,"VyBase")==0) return VyBaseEnum;
    1122               else if (strcmp(name,"Vy")==0) return VyEnum;
    11231123         else stage=10;
    11241124   }
    11251125   if(stage==10){
    1126               if (strcmp(name,"VyMesh")==0) return VyMeshEnum;
     1126              if (strcmp(name,"VyBase")==0) return VyBaseEnum;
     1127              else if (strcmp(name,"Vy")==0) return VyEnum;
     1128              else if (strcmp(name,"VyMesh")==0) return VyMeshEnum;
    11271129              else if (strcmp(name,"VyObs")==0) return VyObsEnum;
    11281130              else if (strcmp(name,"VyShear")==0) return VyShearEnum;
    11291131              else if (strcmp(name,"VySurface")==0) return VySurfaceEnum;
     
    12411243              else if (strcmp(name,"Outputdefinition95")==0) return Outputdefinition95Enum;
    12421244              else if (strcmp(name,"Outputdefinition96")==0) return Outputdefinition96Enum;
    12431245              else if (strcmp(name,"Outputdefinition97")==0) return Outputdefinition97Enum;
    1244               else if (strcmp(name,"Outputdefinition98")==0) return Outputdefinition98Enum;
    1245               else if (strcmp(name,"Outputdefinition99")==0) return Outputdefinition99Enum;
    12461246         else stage=11;
    12471247   }
    12481248   if(stage==11){
    1249               if (strcmp(name,"Outputdefinition9")==0) return Outputdefinition9Enum;
     1249              if (strcmp(name,"Outputdefinition98")==0) return Outputdefinition98Enum;
     1250              else if (strcmp(name,"Outputdefinition99")==0) return Outputdefinition99Enum;
     1251              else if (strcmp(name,"Outputdefinition9")==0) return Outputdefinition9Enum;
    12501252              else if (strcmp(name,"Outputdefinition100")==0) return Outputdefinition100Enum;
    12511253              else if (strcmp(name,"InputsEND")==0) return InputsENDEnum;
    12521254              else if (strcmp(name,"Absolute")==0) return AbsoluteEnum;
     
    13641366              else if (strcmp(name,"GaussSeg")==0) return GaussSegEnum;
    13651367              else if (strcmp(name,"GaussTetra")==0) return GaussTetraEnum;
    13661368              else if (strcmp(name,"GaussTria")==0) return GaussTriaEnum;
    1367               else if (strcmp(name,"GenericOption")==0) return GenericOptionEnum;
    1368               else if (strcmp(name,"GenericParam")==0) return GenericParamEnum;
    13691369         else stage=12;
    13701370   }
    13711371   if(stage==12){
    1372               if (strcmp(name,"GenericExternalResult")==0) return GenericExternalResultEnum;
     1372              if (strcmp(name,"GenericOption")==0) return GenericOptionEnum;
     1373              else if (strcmp(name,"GenericParam")==0) return GenericParamEnum;
     1374              else if (strcmp(name,"GenericExternalResult")==0) return GenericExternalResultEnum;
    13731375              else if (strcmp(name,"Gradient1")==0) return Gradient1Enum;
    13741376              else if (strcmp(name,"Gradient2")==0) return Gradient2Enum;
    13751377              else if (strcmp(name,"Gradient3")==0) return Gradient3Enum;
     
    14171419              else if (strcmp(name,"InversionVzObs")==0) return InversionVzObsEnum;
    14181420              else if (strcmp(name,"J")==0) return JEnum;
    14191421              else if (strcmp(name,"L1L2Approximation")==0) return L1L2ApproximationEnum;
    1420               else if (strcmp(name,"MLHOApproximation")==0) return MLHOApproximationEnum;
     1422              else if (strcmp(name,"MOLHOApproximation")==0) return MOLHOApproximationEnum;
    14211423              else if (strcmp(name,"L2ProjectionBaseAnalysis")==0) return L2ProjectionBaseAnalysisEnum;
    14221424              else if (strcmp(name,"L2ProjectionEPLAnalysis")==0) return L2ProjectionEPLAnalysisEnum;
    14231425              else if (strcmp(name,"LACrouzeixRaviart")==0) return LACrouzeixRaviartEnum;
     
    14871489              else if (strcmp(name,"NoMeltOnPartiallyFloating")==0) return NoMeltOnPartiallyFloatingEnum;
    14881490              else if (strcmp(name,"Nodal")==0) return NodalEnum;
    14891491              else if (strcmp(name,"Nodalvalue")==0) return NodalvalueEnum;
    1490               else if (strcmp(name,"NodeSId")==0) return NodeSIdEnum;
    1491               else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum;
    14921492         else stage=13;
    14931493   }
    14941494   if(stage==13){
    1495               if (strcmp(name,"None")==0) return NoneEnum;
     1495              if (strcmp(name,"NodeSId")==0) return NodeSIdEnum;
     1496              else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum;
     1497              else if (strcmp(name,"None")==0) return NoneEnum;
    14961498              else if (strcmp(name,"Numberedcostfunction")==0) return NumberedcostfunctionEnum;
    14971499              else if (strcmp(name,"NyeCO2")==0) return NyeCO2Enum;
    14981500              else if (strcmp(name,"NyeH2O")==0) return NyeH2OEnum;
     
    16101612              else if (strcmp(name,"TotalSmb")==0) return TotalSmbEnum;
    16111613              else if (strcmp(name,"TotalSmbScaled")==0) return TotalSmbScaledEnum;
    16121614              else if (strcmp(name,"TransientArrayParam")==0) return TransientArrayParamEnum;
    1613               else if (strcmp(name,"TransientInput")==0) return TransientInputEnum;
    1614               else if (strcmp(name,"TransientParam")==0) return TransientParamEnum;
    16151615         else stage=14;
    16161616   }
    16171617   if(stage==14){
    1618               if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum;
     1618              if (strcmp(name,"TransientInput")==0) return TransientInputEnum;
     1619              else if (strcmp(name,"TransientParam")==0) return TransientParamEnum;
     1620              else if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum;
    16191621              else if (strcmp(name,"Tria")==0) return TriaEnum;
    16201622              else if (strcmp(name,"TriaInput")==0) return TriaInputEnum;
    16211623              else if (strcmp(name,"UzawaPressureAnalysis")==0) return UzawaPressureAnalysisEnum;
  • ../trunk-jpl/src/m/boundaryconditions/SetMOLHOBC.m

     
     1function md=SetMOLHOBC(md)
     2%SETMOLHOBC - Create the boundary conditions for stressbalance for MOLHO: VxBase, VyBase, VxShear, VyShear
     3%
     4%   Usage:
     5%      md=SetMOLHOBC(md)
     6%
     7
     8
     9%node on Dirichlet
     10if md.flowequation.isMOLHO
     11        md.stressbalance.spcvx_base=md.stressbalance.spcvx;
     12        md.stressbalance.spcvy_base=md.stressbalance.spcvy;
     13
     14        md.stressbalance.spcvx_shear=NaN*ones(size(md.stressbalance.spcvx_base));
     15        md.stressbalance.spcvy_shear=NaN*ones(size(md.stressbalance.spcvy_base));
     16end
  • ../trunk-jpl/src/m/classes/flowequation.js

     
    2121                fielddisplay(this,'isSIA','is the Shallow Ice Approximation (SIA) used ?');
    2222                fielddisplay(this,'isSSA','is the Shelfy-Stream Approximation (SSA) used ?');
    2323                fielddisplay(this,'isL1L2','is the L1L2 approximation used ?');
    24                 fielddisplay(this,'isMLHO','is the Mono-Layer Higher-Order approximation used?');
     24                fielddisplay(this,'isMOLHO','is the MOno-Layer Higher-Order (MOLHO) approximation used?');
    2525                fielddisplay(this,'isHO','is the Higher-Order (HO) approximation used ?');
    2626                fielddisplay(this,'isFS','are the Full-FS (FS) equations used ?');
    2727                fielddisplay(this,'isNitscheBC','is weakly imposed condition used?');
     
    4040                return "flowequation";
    4141
    4242        }// }}}
    43     this.extrude = function(md) {//{{{
    44         this.element_equation=project3d(md,'vector',this.element_equation,'type','element');
    45         this.vertex_equation=project3d(md,'vector',this.vertex_equation,'type','node');
    46         this.borderSSA=project3d(md,'vector',this.borderSSA,'type','node');
    47         this.borderHO=project3d(md,'vector',this.borderHO,'type','node');
    48         this.borderFS=project3d(md,'vector',this.borderFS,'type','node');
    49         return this;
     43        this.extrude = function(md) {//{{{
     44                this.element_equation=project3d(md,'vector',this.element_equation,'type','element');
     45                this.vertex_equation=project3d(md,'vector',this.vertex_equation,'type','node');
     46                this.borderSSA=project3d(md,'vector',this.borderSSA,'type','node');
     47                this.borderHO=project3d(md,'vector',this.borderHO,'type','node');
     48                this.borderFS=project3d(md,'vector',this.borderFS,'type','node');
     49                return this;
    5050    }//}}}
    5151                this.checkconsistency = function(md,solution,analyses) {//{{{
    5252
     
    5858                        checkfield(md,'fieldname','flowequation.isSIA','numel',[1],'values',[0, 1]);
    5959                        checkfield(md,'fieldname','flowequation.isSSA','numel',[1],'values',[0, 1]);
    6060                        checkfield(md,'fieldname','flowequation.isL1L2','numel',[1],'values',[0, 1]);
    61                         checkfield(md,'fieldname','flowequation.isMLHO','numel',[1],'values',[0, 1]);
     61                        checkfield(md,'fieldname','flowequation.isMOLHO','numel',[1],'values',[0, 1]);
    6262                        checkfield(md,'fieldname','flowequation.isHO','numel',[1],'values',[0, 1]);
    6363                        checkfield(md,'fieldname','flowequation.isFS','numel',[1],'values',[0, 1]);
    6464                        checkfield(md,'fieldname','flowequation.isNitscheBC','numel',[1],'values',[0, 1]);
     
    9292                        }
    9393                        else throw Error('Case not supported yet');
    9494                       
    95                         if (!(this.isSIA | this.isSSA | this.isL1L2 | this.isMLHO | this.isHO | this.isFS)){
     95                        if (!(this.isSIA | this.isSSA | this.isL1L2 | this.isMOLHO | this.isHO | this.isFS)){
    9696                                checkmessage(md,['no element types set for this model']);
    9797                        }
    9898                        if(ArrayAnyEqual(ArrayIsMember('StressbalanceSIAAnalysis', analyses),1)){
     
    107107                        WriteData(fid,prefix,'object',this,'fieldname','isSIA','format','Boolean');
    108108                        WriteData(fid,prefix,'object',this,'fieldname','isSSA','format','Boolean');
    109109                        WriteData(fid,prefix,'object',this,'fieldname','isL1L2','format','Boolean');
    110                         WriteData(fid,prefix,'object',this,'fieldname','isMLHO','format','Boolean');
     110                        WriteData(fid,prefix,'object',this,'fieldname','isMOLHO','format','Boolean');
    111111                        WriteData(fid,prefix,'object',this,'fieldname','isHO','format','Boolean');
    112112                        WriteData(fid,prefix,'object',this,'fieldname','isFS','format','Boolean');
    113113                        WriteData(fid,prefix,'object',this,'fieldname','isNitscheBC','format','Boolean');
     
    137137        this.isSIA                          = 0;
    138138        this.isSSA                          = 0;
    139139        this.isL1L2                         = 0;
    140         this.isMLHO                         = 0;
     140        this.isMOLHO                         = 0;
    141141        this.isHO                           = 0;
    142142        this.isFS                           = 0;
    143143        this.isNitscheBC                    = 0;
  • ../trunk-jpl/src/m/classes/inversion.m

     
    103103
    104104                        %Only SSA, HO and FS are supported right now
    105105                        if strcmp(solution,'StressbalanceSolution')
    106                                 if ~(md.flowequation.isSSA || md.flowequation.isMLHO || md.flowequation.isHO || md.flowequation.isFS || md.flowequation.isL1L2),
    107                                         md = checkmessage(md,['inversion can only be performed for SSA, MLHO, HO or FS ice flow models']);
     106                                if ~(md.flowequation.isSSA || md.flowequation.isMOLHO || md.flowequation.isHO || md.flowequation.isFS || md.flowequation.isL1L2),
     107                                        md = checkmessage(md,['inversion can only be performed for SSA, MOLHO, HO or FS ice flow models']);
    108108                                end
    109109                        end
    110110                        if strcmp(solution,'BalancethicknessSolution')
  • ../trunk-jpl/src/m/classes/stressbalance.py

     
    5858        s += '{}\n'.format(fielddisplay(self, 'spcvy', 'y-axis velocity constraint (NaN means no constraint) [m / yr]'))
    5959        s += '{}\n'.format(fielddisplay(self, 'spcvz', 'z-axis velocity constraint (NaN means no constraint) [m / yr]'))
    6060        s += '{}\n'.format(fielddisplay(self, 'icefront', 'segments on ice front list (last column 0: Air, 1: Water, 2: Ice'))
    61         s += '      MLHO boundary conditions:\n'
     61        s += '      MOLHO boundary conditions:\n'
    6262        s += '{}\n'.format(fielddisplay(self, 'spcvx_base', 'x-axis basal velocity constraint (NaN means no constraint) [m / yr]'))
    6363        s += '{}\n'.format(fielddisplay(self, 'spcvy_base', 'y-axis basal velocity constraint (NaN means no constraint) [m / yr]'))
    6464        s += '{}\n'.format(fielddisplay(self, 'spcvx_shear', 'x-axis shear velocity constraint (NaN means no constraint) [m / yr]'))
     
    8585        self.referential = project3d(md, 'vector', self.referential, 'type', 'node')
    8686        self.loadingforce = project3d(md, 'vector', self.loadingforce, 'type', 'node')
    8787
    88         if md.flowequation.isMLHO:
     88        if md.flowequation.isMOLHO:
    8989            self.spcvx_base = project3d(md, 'vector', self.spcvx_base, 'type', 'node')
    9090            self.spcvy_base = project3d(md, 'vector', self.spcvy_base, 'type', 'node')
    9191            self.spcvx_shear = project3d(md, 'vector', self.spcvx_shear, 'type', 'poly', 'degree', 4)
     
    175175            pos = np.nonzero(np.logical_and(md.mask.ocean_levelset, md.mesh.vertexonbase))
    176176            if np.any(np.logical_not(np.isnan(md.stressbalance.referential[pos, :]))):
    177177                md.checkmessage("no referential should be specified for basal vertices of grounded ice")
    178         if md.flowequation.isMLHO:
     178        if md.flowequation.isMOLHO:
    179179            md = checkfield(md, 'fieldname', 'stressbalance.spcvx_base', 'Inf', 1, 'timeseries', 1)
    180180            md = checkfield(md, 'fieldname', 'stressbalance.spcvy_base', 'Inf', 1, 'timeseries', 1)
    181181            md = checkfield(md, 'fieldname', 'stressbalance.spcvx_shear', 'Inf', 1, 'timeseries', 1)
     
    214214            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
    215215            outputs = outputscopy
    216216        WriteData(fid, prefix, 'data', outputs, 'name', 'md.stressbalance.requested_outputs', 'format', 'StringArray')
    217         # MLHO
    218         if md.flowequation.isMLHO:
     217        # MOLHO
     218        if md.flowequation.isMOLHO:
    219219            WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'spcvx_base', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
    220220            WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'spcvy_base', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
    221221            WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'spcvx_shear', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
  • ../trunk-jpl/src/c/classes/Materials/Matestar.h

     
    7575
    7676                void       ViscosityFS(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);
    7777                void       ViscosityHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
    78                 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);
    79                 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);
     78                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);
     79                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);
    8080                void       ViscosityL1L2(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* surf);
    8181                void       ViscositySSA(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
    8282                void       ViscosityBFS(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input,IssmDouble eps_eff);
  • ../trunk-jpl/src/c/classes/Materials/Matice.cpp

     
    733733        /*Assign output pointer*/
    734734        *pviscosity=viscosity;
    735735}/*}}}*/
    736 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){/*{{{*/
     736void  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){/*{{{*/
    737737
    738738        /*Intermediaries*/
    739739        IssmDouble epsilon[5];  /* epsilon=[exx,eyy,exy,exz,eyz]; */
     
    754754                zeta=0.5*(gauss_seg->coord1+1);
    755755
    756756                /* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy (for a given zeta)*/
    757                 element->StrainRateMLHO(&epsilon[0],xyz_list,gauss,
     757                element->StrainRateMOLHO(&epsilon[0],xyz_list,gauss,
    758758                                                vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input,zeta);
    759759                epsilon_eff=sqrt(epsilon[0]*epsilon[0] + epsilon[1]*epsilon[1] + epsilon[2]*epsilon[2]
    760760                                                  +  epsilon[3]*epsilon[3] + epsilon[4]*epsilon[4] + epsilon[0]*epsilon[1]);
     
    794794        /*Clean up*/
    795795        delete gauss_seg;
    796796}/*}}}*/
    797 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){/*{{{*/
     797void  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){/*{{{*/
    798798
    799799        /* To compute the additional 5 terms in the viscosity appear in the adjoint equation*/
    800800        /*Intermediaries*/
     
    816816                zeta=0.5*(gauss_seg->coord1+1);
    817817
    818818                /* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy (for a given zeta)*/
    819                 element->StrainRateMLHO(&epsilon[0],xyz_list,gauss,
     819                element->StrainRateMOLHO(&epsilon[0],xyz_list,gauss,
    820820                                                vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input,zeta);
    821821                epsilon_eff=sqrt(epsilon[0]*epsilon[0] + epsilon[1]*epsilon[1] + epsilon[2]*epsilon[2]
    822822                                                  +  epsilon[3]*epsilon[3] + epsilon[4]*epsilon[4] + epsilon[0]*epsilon[1]);
  • ../trunk-jpl/src/c/classes/Materials/Matice.h

     
    7777
    7878                void       ViscosityFS(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);
    7979                void       ViscosityHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
    80                 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);
    81                 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);
     80                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);
     81                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);
    8282                void       ViscosityL1L2(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* surf);
    8383                void       ViscositySSA(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
    8484                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");};
  • ../trunk-jpl/src/c/classes/Materials/Matlitho.h

     
    7171
    7272                void       ViscosityFS(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){_error_("not supported");};
    7373                void       ViscosityHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){_error_("not supported");};
    74                 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");};
    75                 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");};
     74                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");};
     75                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");};
    7676                void       ViscosityL1L2(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* surf){_error_("not supported");};
    7777                void       ViscositySSA(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){_error_("not supported");};
    7878                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");};
  • ../trunk-jpl/src/c/classes/Node.cpp

     
    117117                        if(in_approximation==L1L2ApproximationEnum && !reCast<int>(iomodel->Data("md.mesh.vertexonbase")[io_index])){
    118118                                this->HardDeactivate();
    119119                        }
    120                         if(in_approximation==MLHOApproximationEnum && !reCast<int>(iomodel->Data("md.mesh.vertexonbase")[io_index])){
     120                        if(in_approximation==MOLHOApproximationEnum && !reCast<int>(iomodel->Data("md.mesh.vertexonbase")[io_index])){
    121121                                this->HardDeactivate();
    122122                        }
    123123                        if(in_approximation==SSAHOApproximationEnum && reCast<int>(iomodel->Data("md.flowequation.borderSSA")[io_index])){
  • ../trunk-jpl/src/c/cores/stressbalance_core.cpp

     
    1818        /*parameters: */
    1919        bool       dakota_analysis,control_analysis;
    2020        int        domaintype;
    21         bool       isSIA,isSSA,isL1L2,isMLHO,isHO,isFS,isNitsche;
     21        bool       isSIA,isSSA,isL1L2,isMOLHO,isHO,isFS,isNitsche;
    2222        bool       save_results;
    2323        int        solution_type;
    2424        int        numoutputs        = 0;
     
    3030        femmodel->parameters->FindParam(&isSIA,FlowequationIsSIAEnum);
    3131        femmodel->parameters->FindParam(&isSSA,FlowequationIsSSAEnum);
    3232        femmodel->parameters->FindParam(&isL1L2,FlowequationIsL1L2Enum);
    33         femmodel->parameters->FindParam(&isMLHO,FlowequationIsMLHOEnum);
     33        femmodel->parameters->FindParam(&isMOLHO,FlowequationIsMOLHOEnum);
    3434        femmodel->parameters->FindParam(&isHO,FlowequationIsHOEnum);
    3535        femmodel->parameters->FindParam(&isFS,FlowequationIsFSEnum);
    3636        femmodel->parameters->FindParam(&isNitsche,FlowequationIsNitscheEnum);
     
    7474        }
    7575
    7676        /*Compute stressbalance for SSA L1L2 HO and FS*/
    77         if(isSSA || isL1L2 || isMLHO || isHO || isFS){
     77        if(isSSA || isL1L2 || isMOLHO || isHO || isFS){
    7878                analysis = new StressbalanceAnalysis();
    7979                analysis->Core(femmodel);
    8080                delete analysis;
     
    8181        }
    8282
    8383        /*Compute vertical velocities*/
    84         if (domaintype==Domain3DEnum && (isSIA || isSSA || isL1L2 || isMLHO || isHO)){
     84        if (domaintype==Domain3DEnum && (isSIA || isSSA || isL1L2 || isMOLHO || isHO)){
    8585
    8686                /*We need basal melt rates for vertical velocity*/
    8787                bmb_core(femmodel);
  • ../trunk-jpl/src/c/modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.cpp

     
    6565        Input* vy_input     = NULL;
    6666        Input* vyobs_input  = NULL;
    6767
    68         /*Read SurfaceEnum from 2D models:SSA, L1L2, MLHO*/
     68        /*Read SurfaceEnum from 2D models:SSA, L1L2, MOLHO*/
    6969        if (domaintype == Domain2DhorizontalEnum) {
    7070                vx_input = topelement->GetInput(VxSurfaceEnum);                                 _assert_(vx_input);
    7171                if(numcomponents==2){
  • ../trunk-jpl/src/c/modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.cpp

     
    7373   Input* vy_input     = NULL;
    7474   Input* vyobs_input  = NULL;
    7575
    76    /*Read SurfaceEnum from 2D models:SSA, L1L2, MLHO*/
     76   /*Read SurfaceEnum from 2D models:SSA, L1L2, MOLHO*/
    7777   if (domaintype == Domain2DhorizontalEnum) {
    7878      vx_input = topelement->GetInput(VxSurfaceEnum);             _assert_(vx_input);
    7979      if(numcomponents==2){
  • ../trunk-jpl/src/c/modules/SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.cpp

     
    6767   Input* vy_input     = NULL;
    6868   Input* vyobs_input  = NULL;
    6969
    70    /*Read SurfaceEnum from 2D models:SSA, L1L2, MLHO*/
     70   /*Read SurfaceEnum from 2D models:SSA, L1L2, MOLHO*/
    7171   if (domaintype == Domain2DhorizontalEnum) {
    7272      vx_input = topelement->GetInput(VxSurfaceEnum);             _assert_(vx_input);
    7373      if(numcomponents==2){
  • ../trunk-jpl/src/c/modules/SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.cpp

     
    6767   Input* vy_input     = NULL;
    6868   Input* vyobs_input  = NULL;
    6969
    70    /*Read SurfaceEnum from 2D models:SSA, L1L2, MLHO*/
     70   /*Read SurfaceEnum from 2D models:SSA, L1L2, MOLHO*/
    7171   if (domaintype == Domain2DhorizontalEnum) {
    7272      vx_input = topelement->GetInput(VxSurfaceEnum);             _assert_(vx_input);
    7373      if(numcomponents==2){
  • ../trunk-jpl/src/c/modules/SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.cpp

     
    6767   Input* vy_input     = NULL;
    6868   Input* vyobs_input  = NULL;
    6969
    70    /*Read SurfaceEnum from 2D models:SSA, L1L2, MLHO*/
     70   /*Read SurfaceEnum from 2D models:SSA, L1L2, MOLHO*/
    7171   if (domaintype == Domain2DhorizontalEnum) {
    7272      vx_input = topelement->GetInput(VxSurfaceEnum);             _assert_(vx_input);
    7373      if(numcomponents==2){
  • ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

     
    169169        FlowequationIsFSEnum,
    170170        FlowequationIsHOEnum,
    171171        FlowequationIsL1L2Enum,
    172         FlowequationIsMLHOEnum,
     172        FlowequationIsMOLHOEnum,
    173173        FlowequationIsSIAEnum,
    174174        FlowequationIsSSAEnum,
    175175        FlowequationIsNitscheEnum,
     
    13831383        InversionVzObsEnum,
    13841384        JEnum,
    13851385        L1L2ApproximationEnum,
    1386         MLHOApproximationEnum,
     1386        MOLHOApproximationEnum,
    13871387        L2ProjectionBaseAnalysisEnum,
    13881388        L2ProjectionEPLAnalysisEnum,
    13891389        LACrouzeixRaviartEnum,
  • ../trunk-jpl/src/c/shared/Enum/Enumjl.vim

     
    105105syn keyword juliaConstC CalvingLawEnum
    106106syn keyword juliaConstC CalvingMinthicknessEnum
    107107syn keyword juliaConstC CalvingTestSpeedfactorEnum
     108syn keyword juliaConstC CalvingTestIndependentRateEnum
    108109syn keyword juliaConstC CalvingUseParamEnum
    109110syn keyword juliaConstC CalvingScaleThetaEnum
    110111syn keyword juliaConstC CalvingAmpAlphaEnum
     
    167168syn keyword juliaConstC FlowequationIsFSEnum
    168169syn keyword juliaConstC FlowequationIsHOEnum
    169170syn keyword juliaConstC FlowequationIsL1L2Enum
    170 syn keyword juliaConstC FlowequationIsMLHOEnum
     171syn keyword juliaConstC FlowequationIsMOLHOEnum
    171172syn keyword juliaConstC FlowequationIsSIAEnum
    172173syn keyword juliaConstC FlowequationIsSSAEnum
    173174syn keyword juliaConstC FlowequationIsNitscheEnum
     
    650651syn keyword juliaConstC BottomPressureOldEnum
    651652syn keyword juliaConstC CalvingCalvingrateEnum
    652653syn keyword juliaConstC CalvingHabFractionEnum
     654syn keyword juliaConstC CalvingAblationrateEnum
    653655syn keyword juliaConstC CalvingMeltingrateEnum
    654656syn keyword juliaConstC CalvingStressThresholdFloatingiceEnum
    655657syn keyword juliaConstC CalvingStressThresholdGroundediceEnum
     
    13751377syn keyword juliaConstC InversionVzObsEnum
    13761378syn keyword juliaConstC JEnum
    13771379syn keyword juliaConstC L1L2ApproximationEnum
    1378 syn keyword juliaConstC MLHOApproximationEnum
     1380syn keyword juliaConstC MOLHOApproximationEnum
    13791381syn keyword juliaConstC L2ProjectionBaseAnalysisEnum
    13801382syn keyword juliaConstC L2ProjectionEPLAnalysisEnum
    13811383syn keyword juliaConstC LACrouzeixRaviartEnum
  • ../trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp

     
    344344                case 1: return SIAApproximationEnum;
    345345                case 2: return SSAApproximationEnum;
    346346                case 3: return L1L2ApproximationEnum;
    347                 case 4: return MLHOApproximationEnum;
     347                case 4: return MOLHOApproximationEnum;
    348348                case 5: return HOApproximationEnum;
    349349                case 6: return FSApproximationEnum;
    350350                case 7: return SSAHOApproximationEnum;
     
    359359                case 1: return SIAApproximationEnum;
    360360                case 2: return SSAApproximationEnum;
    361361                case 3: return L1L2ApproximationEnum;
    362                 case 4: return MLHOApproximationEnum;
     362                case 4: return MOLHOApproximationEnum;
    363363                case 5: return HOApproximationEnum;
    364364                case 6: return FSApproximationEnum;
    365365                case 7: return SSAHOApproximationEnum;
  • ../trunk-jpl/src/m/boundaryconditions/SetMOLHOBC.py

     
     1import numpy as np
     2
     3def SetMOLHOBC(md):
     4    """
     5    SETMOLHOBC - Create the boundary conditions for stressbalance for MOLHO: VxBase, VyBase, VxShear, VyShear
     6
     7       Usage:
     8          md = SetIceShelfBC(md, varargin)
     9
     10       Example:
     11          md = SetIceShelfBC(md)
     12
     13    """
     14
     15    #node on Dirichlet (boundary and ~icefront)
     16    md.stressbalance.spcvx_base = md.stressbalance.spcvx
     17    md.stressbalance.spcvy_base = md.stressbalance.spcvy
     18    md.stressbalance.spcvx_shear = np.nan * md.stressbalance.spcvx
     19    md.stressbalance.spcvy_shear = np.nan * md.stressbalance.spcvy
     20
     21    return md
  • ../trunk-jpl/src/m/classes/flowequation.py

     
    1818        self.isSIA = 0
    1919        self.isSSA = 0
    2020        self.isL1L2 = 0
    21         self.isMLHO = 0
     21        self.isMOLHO = 0
    2222        self.isHO = 0
    2323        self.isFS = 0
    2424        self.isNitscheBC = 0
     
    4545        s += '{}\n'.format(fielddisplay(self, 'isSIA', "is the Shallow Ice Approximation (SIA) used?"))
    4646        s += '{}\n'.format(fielddisplay(self, 'isSSA', "is the Shelfy-Stream Approximation (SSA) used?"))
    4747        s += '{}\n'.format(fielddisplay(self, 'isL1L2', "are L1L2 equations used?"))
    48         s += '{}\n'.format(fielddisplay(self, 'isMLHO', "are Mono-layer Higher-Order equations used?"))
     48        s += '{}\n'.format(fielddisplay(self, 'isMOLHO', "are MOno-layer Higher-Order (MOLHO) equations used?"))
    4949        s += '{}\n'.format(fielddisplay(self, 'isHO', "is the Higher-Order (HO) approximation used?"))
    5050        s += '{}\n'.format(fielddisplay(self, 'isFS', "are the Full-FS (FS) equations used?"))
    5151        s += '{}\n'.format(fielddisplay(self, 'isNitscheBC', "is weakly imposed condition used?"))
     
    8989        md = checkfield(md, 'fieldname', 'flowequation.isSIA', 'numel', [1], 'values', [0, 1])
    9090        md = checkfield(md, 'fieldname', 'flowequation.isSSA', 'numel', [1], 'values', [0, 1])
    9191        md = checkfield(md, 'fieldname', 'flowequation.isL1L2', 'numel', [1], 'values', [0, 1])
    92         md = checkfield(md, 'fieldname', 'flowequation.isMLHO', 'numel', [1], 'values', [0, 1])
     92        md = checkfield(md, 'fieldname', 'flowequation.isMOLHO', 'numel', [1], 'values', [0, 1])
    9393        md = checkfield(md, 'fieldname', 'flowequation.isHO', 'numel', [1], 'values', [0, 1])
    9494        md = checkfield(md, 'fieldname', 'flowequation.isFS', 'numel', [1], 'values', [0, 1])
    9595        md = checkfield(md, 'fieldname', 'flowequation.isNitscheBC', 'numel', [1], 'values', [0, 1])
     
    120120        else:
    121121            raise RuntimeError('Case not supported yet')
    122122
    123         if not (self.isSIA or self.isSSA or self.isL1L2 or self.isMLHO or self.isHO or self.isFS):
     123        if not (self.isSIA or self.isSSA or self.isL1L2 or self.isMOLHO or self.isHO or self.isFS):
    124124            md.checkmessage("no element types set for this model")
    125125        if 'StressbalanceSIAAnalysis' in analyses:
    126126            if any(self.element_equation == 1):
     
    133133        WriteData(fid, prefix, 'object', self, 'fieldname', 'isSIA', 'format', 'Boolean')
    134134        WriteData(fid, prefix, 'object', self, 'fieldname', 'isSSA', 'format', 'Boolean')
    135135        WriteData(fid, prefix, 'object', self, 'fieldname', 'isL1L2', 'format', 'Boolean')
    136         WriteData(fid, prefix, 'object', self, 'fieldname', 'isMLHO', 'format', 'Boolean')
     136        WriteData(fid, prefix, 'object', self, 'fieldname', 'isMOLHO', 'format', 'Boolean')
    137137        WriteData(fid, prefix, 'object', self, 'fieldname', 'isHO', 'format', 'Boolean')
    138138        WriteData(fid, prefix, 'object', self, 'fieldname', 'isFS', 'format', 'Boolean')
    139139        WriteData(fid, prefix, 'object', self, 'fieldname', 'isNitscheBC', 'format', 'Boolean')
  • ../trunk-jpl/src/m/classes/stressbalance.m

     
    3535                        self.referential=project3d(md,'vector',self.referential,'type','node');
    3636                        self.loadingforce=project3d(md,'vector',self.loadingforce,'type','node');
    3737
    38                         % for MLHO
    39                         if md.flowequation.isMLHO
     38                        % for MOLHO
     39                        if md.flowequation.isMOLHO
    4040                                self.spcvx_base=project3d(md,'vector',self.spcvx_base,'type','node');
    4141                                self.spcvy_base=project3d(md,'vector',self.spcvy_base,'type','node');
    4242                                self.spcvx_shear=project3d(md,'vector',self.spcvx_shear,'type','poly','degree',4);
     
    133133                                end
    134134                                md = checkfield(md,'fieldname','stressbalance.FSreconditioning','>',0);
    135135                        end
    136                         % CHECK THIS ONLY WORKS FOR MLHO
    137                         if md.flowequation.isMLHO
     136                        % CHECK THIS ONLY WORKS FOR MOLHO
     137                        if md.flowequation.isMOLHO
    138138                                md = checkfield(md,'fieldname','stressbalance.spcvx_base','Inf',1,'timeseries',1);
    139139                                md = checkfield(md,'fieldname','stressbalance.spcvy_base','Inf',1,'timeseries',1);
    140140                                md = checkfield(md,'fieldname','stressbalance.spcvx_shear','Inf',1,'timeseries',1);
     
    168168                        fielddisplay(self,'spcvy','y-axis velocity constraint (NaN means no constraint) [m/yr]');
    169169                        fielddisplay(self,'spcvz','z-axis velocity constraint (NaN means no constraint) [m/yr]');
    170170
    171                         disp(sprintf('\n      %s','MLHO boundary conditions:'));
     171                        disp(sprintf('\n      %s','MOLHO boundary conditions:'));
    172172                        fielddisplay(self,'spcvx_base','x-axis basal velocity constraint (NaN means no constraint) [m/yr]');
    173173                        fielddisplay(self,'spcvy_base','y-axis basal velocity constraint (NaN means no constraint) [m/yr]');
    174174                        fielddisplay(self,'spcvx_shear','x-axis shear velocity constraint (NaN means no constraint) [m/yr]');
     
    225225                                outputs      = [outputs defaultoutputs(self,md)]; %add defaults
    226226                        end
    227227                        WriteData(fid,prefix,'data',outputs,'name','md.stressbalance.requested_outputs','format','StringArray');
    228                         % for MLHO
    229                         if (md.flowequation.isMLHO)
     228                        % for MOLHO
     229                        if (md.flowequation.isMOLHO)
    230230                                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);
    231231                                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);
    232232                                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);
  • ../trunk-jpl/src/m/parameterization/setflowequation.m

     
    22%SETFLOWEQUATION - associate a solution type to each element
    33%
    44%   This routine works like plotmodel: it works with an even number of inputs
    5 %   'SIA','SSA','L1L2','MLHO','HO','FS' and 'fill' are the possible options
     5%   'SIA','SSA','L1L2','MOLHO','HO','FS' and 'fill' are the possible options
    66%   that must be followed by the corresponding exp file or flags list
    77%   It can either be a domain file (argus type, .exp extension), or an array of element flags.
    88%   If user wants every element outside the domain to be
     
    1010%   an empty string '' will be considered as an empty domain
    1111%   a string 'all' will be considered as the entire domain
    1212%   You can specify the type of coupling, 'penalties' or 'tiling', to use with the input 'coupling'
    13 %   NB: L1L2 and MLHO cannot currently be coupled to any other ice flow model
     13%   NB: L1L2 and MOLHO cannot currently be coupled to any other ice flow model
    1414%
    1515%   Usage:
    1616%      md=setflowequation(md,varargin)
     
    3838SSAflag  = FlagElements(md,getfieldvalue(options,'SSA',''));
    3939HOflag   = FlagElements(md,getfieldvalue(options,'HO',''));
    4040L1L2flag = FlagElements(md,getfieldvalue(options,'L1L2',''));
    41 MLHOflag = FlagElements(md,getfieldvalue(options,'MLHO',''));
     41MOLHOflag = FlagElements(md,getfieldvalue(options,'MOLHO',''));
    4242FSflag   = FlagElements(md,getfieldvalue(options,'FS',''));
    4343filltype = getfieldvalue(options,'fill','none');
    4444displayunused(options);
     
    5353end
    5454
    5555%check that each element has at least one flag
    56 if any(SIAflag+SSAflag+HOflag+L1L2flag+MLHOflag+FSflag==0),
     56if any(SIAflag+SSAflag+HOflag+L1L2flag+MOLHOflag+FSflag==0),
    5757        error('elements type not assigned, supported models are ''SIA'',''SSA'',''HO'' and ''FS''')
    5858end
    5959
    6060%check that each element has only one flag
    61 if any(SIAflag+SSAflag+HOflag+L1L2flag+MLHOflag+FSflag>1),
     61if any(SIAflag+SSAflag+HOflag+L1L2flag+MOLHOflag+FSflag>1),
    6262        disp('setflowequation.m: Warning: some elements have several types, higher order type is used for them')
    6363        SIAflag(find(SIAflag & SSAflag))=0;
    6464        SIAflag(find(SIAflag & HOflag))=0;
     
    6969if any(L1L2flag) & any(SIAflag | SSAflag | HOflag | FSflag)
    7070        error('L1L2 cannot be coupled to any other model');
    7171end
    72 if any(MLHOflag) & any(SIAflag | SSAflag | HOflag | FSflag)
    73         error('MLHO cannot be coupled to any other model');
     72if any(MOLHOflag) & any(SIAflag | SSAflag | HOflag | FSflag)
     73        error('MOLHO cannot be coupled to any other model');
    7474end
    7575
    7676%Check that no HO or FS for 2d mesh
     
    9090nodeonSSA=zeros(md.mesh.numberofvertices,1);  nodeonSSA(md.mesh.elements(find(SSAflag),:))=1;
    9191nodeonHO=zeros(md.mesh.numberofvertices,1);   nodeonHO(md.mesh.elements(find(HOflag),:))=1;
    9292nodeonL1L2=zeros(md.mesh.numberofvertices,1); nodeonL1L2(md.mesh.elements(find(L1L2flag),:))=1;
    93 nodeonMLHO=zeros(md.mesh.numberofvertices,1); nodeonMLHO(md.mesh.elements(find(MLHOflag),:))=1;
     93nodeonMOLHO=zeros(md.mesh.numberofvertices,1); nodeonMOLHO(md.mesh.elements(find(MOLHOflag),:))=1;
    9494nodeonFS=zeros(md.mesh.numberofvertices,1);
    9595noneflag=zeros(md.mesh.numberofelements,1);
    9696
     
    247247md.flowequation.element_equation(find(SIAflag))=1;
    248248md.flowequation.element_equation(find(SSAflag))=2;
    249249md.flowequation.element_equation(find(L1L2flag))=3;
    250 md.flowequation.element_equation(find(MLHOflag))=4;
     250md.flowequation.element_equation(find(MOLHOflag))=4;
    251251md.flowequation.element_equation(find(HOflag))=5;
    252252md.flowequation.element_equation(find(FSflag))=6;
    253253md.flowequation.element_equation(find(SSAHOflag))=7;
     
    263263md.flowequation.vertex_equation=zeros(md.mesh.numberofvertices,1);
    264264pos=find(nodeonSSA);  md.flowequation.vertex_equation(pos)=2;
    265265pos=find(nodeonL1L2); md.flowequation.vertex_equation(pos)=3;
    266 pos=find(nodeonMLHO); md.flowequation.vertex_equation(pos)=4;
     266pos=find(nodeonMOLHO); md.flowequation.vertex_equation(pos)=4;
    267267pos=find(nodeonHO);   md.flowequation.vertex_equation(pos)=5;
    268268pos=find(nodeonFS);   md.flowequation.vertex_equation(pos)=6;
    269269%DO SIA LAST! Otherwise spcs might not be set up correctly (SIA should have priority)
     
    286286md.flowequation.isSIA  = double(any(md.flowequation.element_equation == 1));
    287287md.flowequation.isSSA  = double(any(md.flowequation.element_equation == 2));
    288288md.flowequation.isL1L2 = double(any(md.flowequation.element_equation == 3));
    289 md.flowequation.isMLHO = double(any(md.flowequation.element_equation == 4));
     289md.flowequation.isMOLHO = double(any(md.flowequation.element_equation == 4));
    290290md.flowequation.isHO   = double(any(md.flowequation.element_equation == 5));
    291291md.flowequation.isFS   = double(any(md.flowequation.element_equation == 6));
    292292
  • ../trunk-jpl/src/m/plot/plot_elementstype.m

     
    3636                patch( 'Faces', [C A D F],'Vertices', [x y z],'CData', i,'FaceColor','flat','EdgeColor',edgecolor);
    3737        end
    3838end
    39 legend(p,'None','SIA','SSA','L1L2','MLHO','HO',...
     39legend(p,'None','SIA','SSA','L1L2','MOLHO','HO',...
    4040                'SSAHO','FS','SSAFS','HOFS');
    4141
    4242%apply options
  • ../trunk-jpl/test/NightlyRun/test128.py

     
    1 #Test Name: SquareShelfConstrainedTranMLHO2d
     1#Test Name: SquareShelfConstrainedTranMOLHO2d
    22from model import *
    3 from SetMLHOBC import SetMLHOBC
     3from SetMOLHOBC import SetMOLHOBC
    44from socket import gethostname
    55from triangle import *
    66from setmask import *
     
    1212md = triangle(model(), '../Exp/Square.exp', 150000)
    1313md = setmask(md, 'all', '')
    1414md = parameterize(md, '../Par/SquareShelfConstrained.py')
    15 md = setflowequation(md, 'MLHO', 'all')
     15md = setflowequation(md, 'MOLHO', 'all')
    1616md.cluster = generic('name', gethostname(), 'np', 3)
    1717md.transient.requested_outputs = ['IceVolume','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase']
    1818
    19 md = SetMLHOBC(md)
     19md = SetMOLHOBC(md)
    2020md = solve(md, 'Transient')
    2121
    2222#Fields and tolerances to track changes
  • ../trunk-jpl/test/NightlyRun/test248.py

     
    1 #Test Name: SquareShelfStressMLHO2d
     1#Test Name: SquareShelfStressMOLHO2d
    22from model import *
    33from socket import gethostname
    44from triangle import triangle
     
    66from parameterize import parameterize
    77from setflowequation import setflowequation
    88from solve import solve
    9 from SetMLHOBC import SetMLHOBC
     9from SetMOLHOBC import SetMOLHOBC
    1010
    1111md = triangle(model(), '../Exp/Square.exp', 150000)
    1212md = setmask(md, 'all', '')
    1313md = parameterize(md, '../Par/SquareShelf.py')
    14 md = setflowequation(md, 'MLHO', 'all')
     14md = setflowequation(md, 'MOLHO', 'all')
    1515md.cluster = generic('name', gethostname(), 'np', 3)
    1616md.stressbalance.requested_outputs = ['default', 'VxSurface', 'VySurface', 'VxShear', 'VyShear', 'VxBase', 'VyBase']
    17 md = SetMLHOBC(md)
     17md = SetMOLHOBC(md)
    1818md = solve(md, 'Stressbalance')
    1919
    2020#Fields and tolerances to track changes
  • ../trunk-jpl/test/NightlyRun/test254.py

     
    1 #Test Name: SquareShelfConstrainedMLHO
     1#Test Name: SquareShelfConstrainedMOLHO
    22from model import *
    33from socket import gethostname
    44import numpy as np
     
    88from setflowequation import setflowequation
    99from paterson import paterson
    1010from solve import solve
    11 from SetMLHOBC import SetMLHOBC
     11from SetMOLHOBC import SetMOLHOBC
    1212from generic import generic
    1313
    1414md = triangle(model(), '../Exp/Square.exp', 150000)
    1515md = setmask(md, 'all', '')
    1616md = parameterize(md, '../Par/SquareShelf.py')
    17 md = setflowequation(md, 'MLHO', 'all')
     17md = setflowequation(md, 'MOLHO', 'all')
    1818md.cluster = generic('name', gethostname(), 'np', 3)
    1919
    2020# redo the parameter file for this special shelf.
     
    7070md.mask.ice_levelset = -1 + nodeonicefront
    7171
    7272md.stressbalance.requested_outputs = ['default', 'VySurface', 'VyShear', 'VyBase']
    73 md = SetMLHOBC(md)
     73md = SetMOLHOBC(md)
    7474md = solve(md, 'Stressbalance')
    7575
    7676# create analytical solution: strain rate is constant = ((rho_ice * g * h) / 4B)^3 (Paterson, 4th Edition, page 292.
  • ../trunk-jpl/src/m/parameterization/setflowequation.py

     
    88    """SETFLOWEQUATION - associate a solution type to each element
    99
    1010    This routine works like plotmodel: it works with an even number of inputs
    11     'SIA', 'SSA', 'HO', 'L1L2', 'MLHO', 'FS' and 'fill' are the possible
     11    'SIA', 'SSA', 'HO', 'L1L2', 'MOLHO', 'FS' and 'fill' are the possible
    1212    options that must be followed by the corresponding exp file or flags list.
    1313    It can either be a domain file (argus type, .exp extension), or an array of
    1414    element flags.
     
    4444    SSAflag = FlagElements(md, options.getfieldvalue('SSA', ''))
    4545    HOflag = FlagElements(md, options.getfieldvalue('HO', ''))
    4646    L1L2flag = FlagElements(md, options.getfieldvalue('L1L2', ''))
    47     MLHOflag = FlagElements(md, options.getfieldvalue('MLHO', ''))
     47    MOLHOflag = FlagElements(md, options.getfieldvalue('MOLHO', ''))
    4848    FSflag = FlagElements(md, options.getfieldvalue('FS', ''))
    4949    filltype = options.getfieldvalue('fill', 'none')
    5050
     
    5656    elif 'HO' in filltype:
    5757        HOflag = ~SIAflag & ~SSAflag & ~FSflag
    5858    #check that each element has at least one flag
    59     if not any(SIAflag + SSAflag + L1L2flag + MLHOflag + HOflag + FSflag):
     59    if not any(SIAflag + SSAflag + L1L2flag + MOLHOflag + HOflag + FSflag):
    6060        raise TypeError("elements type not assigned, supported models are 'SIA', 'SSA', 'HO' and 'FS'")
    6161
    6262    #check that each element has only one flag
    63     if any(SIAflag + SSAflag + L1L2flag + MLHOflag + HOflag + FSflag > 1):
     63    if any(SIAflag + SSAflag + L1L2flag + MOLHOflag + HOflag + FSflag > 1):
    6464        print('Warning: setflowequation.py: some elements have several types, higher order type is used for them')
    6565        SIAflag[np.where(np.logical_and(SIAflag, SSAflag))] = False
    6666        SIAflag[np.where(np.logical_and(SIAflag, HOflag))] = False
    6767        SSAflag[np.where(np.logical_and(SSAflag, HOflag))] = False
    6868
    69         #check that L1L2 and MLHO is not coupled to any other model for now
     69        #check that L1L2 and MOLHO is not coupled to any other model for now
    7070        if any(L1L2flag) and any(SIAflag + SSAflag + HOflag + FSflag):
    7171            raise TypeError('L1L2 cannot be coupled to any other model')
    72         if any(MLHOflag) and any(SIAflag + SSAflag + HOflag + FSflag):
    73             raise TypeError('MLHO cannot be coupled to any other model')
     72        if any(MOLHOflag) and any(SIAflag + SSAflag + HOflag + FSflag):
     73            raise TypeError('MOLHO cannot be coupled to any other model')
    7474
    7575        #Check that no HO or FS for 2d mesh
    7676        if md.mesh.domaintype == '2Dhorizontal':
     
    8888    nodeonSSA[md.mesh.elements[np.where(SSAflag), :] - 1] = True
    8989    nodeonL1L2 = np.zeros(md.mesh.numberofvertices, bool)
    9090    nodeonL1L2[md.mesh.elements[np.where(L1L2flag), :] - 1] = True
    91     nodeonMLHO = np.zeros(md.mesh.numberofvertices, bool)
    92     nodeonMLHO[md.mesh.elements[np.where(MLHOflag), :] - 1] = True
     91    nodeonMOLHO = np.zeros(md.mesh.numberofvertices, bool)
     92    nodeonMOLHO[md.mesh.elements[np.where(MOLHOflag), :] - 1] = True
    9393    nodeonHO = np.zeros(md.mesh.numberofvertices, bool)
    9494    nodeonHO[md.mesh.elements[np.where(HOflag), :] - 1] = True
    9595    nodeonFS = np.zeros(md.mesh.numberofvertices, bool)
     
    240240    md.flowequation.element_equation[np.where(SIAflag)] = 1
    241241    md.flowequation.element_equation[np.where(SSAflag)] = 2
    242242    md.flowequation.element_equation[np.where(L1L2flag)] = 3
    243     md.flowequation.element_equation[np.where(MLHOflag)] = 4
     243    md.flowequation.element_equation[np.where(MOLHOflag)] = 4
    244244    md.flowequation.element_equation[np.where(HOflag)] = 5
    245245    md.flowequation.element_equation[np.where(FSflag)] = 6
    246246    md.flowequation.element_equation[np.where(SSAHOflag)] = 7
     
    258258    md.flowequation.vertex_equation[pos] = 2
    259259    pos = np.where(nodeonL1L2)
    260260    md.flowequation.vertex_equation[pos] = 3
    261     pos = np.where(nodeonMLHO)
     261    pos = np.where(nodeonMOLHO)
    262262    md.flowequation.vertex_equation[pos] = 4
    263263    pos = np.where(nodeonHO)
    264264    md.flowequation.vertex_equation[pos] = 5
     
    282282    md.flowequation.isSIA = any(md.flowequation.element_equation == 1)
    283283    md.flowequation.isSSA = any(md.flowequation.element_equation == 2)
    284284    md.flowequation.isL1L2= any(md.flowequation.element_equation == 3)
    285     md.flowequation.isMLHO= any(md.flowequation.element_equation == 4)
     285    md.flowequation.isMOLHO= any(md.flowequation.element_equation == 4)
    286286    md.flowequation.isHO = any(md.flowequation.element_equation == 5)
    287287    md.flowequation.isFS = any(md.flowequation.element_equation == 6)
    288288
  • ../trunk-jpl/test/NightlyRun/test128.m

     
    1 %Test Name: SquareShelfConstrainedTranMLHO2d
     1%Test Name: SquareShelfConstrainedTranMOLHO2d
    22md=triangle(model(),'../Exp/Square.exp',150000.);
    33md=setmask(md,'all','');
    44md=parameterize(md,'../Par/SquareShelfConstrained.par');
    5 md=setflowequation(md,'MLHO','all');
     5md=setflowequation(md,'MOLHO','all');
    66md.cluster=generic('name',oshostname(),'np',3);
    77md.transient.requested_outputs={'IceVolume','VxShear','VyShear','VxBase','VyBase','VxSurface','VySurface'};
    88
    9 md=SetMLHOBC(md);
     9md=SetMOLHOBC(md);
    1010md=solve(md,'Transient');
    1111
    1212%Fields and tolerances to track changes
  • ../trunk-jpl/test/NightlyRun/test248.m

     
    1 %Test Name: SquareShelfStressMLHO2d
     1%Test Name: SquareShelfStressMOLHO2d
    22md=triangle(model(),'../Exp/Square.exp',150000.);
    33md=setmask(md,'all','');
    44md=parameterize(md,'../Par/SquareShelf.par');
    5 md=setflowequation(md,'MLHO','all');
     5md=setflowequation(md,'MOLHO','all');
    66md.cluster=generic('name',oshostname(),'np',3);
    77md.stressbalance.requested_outputs={'default','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase'};
    8 md=SetMLHOBC(md);
     8md=SetMOLHOBC(md);
    99md=solve(md,'Stressbalance');
    1010
    1111%Fields and tolerances to track changes
  • ../trunk-jpl/test/NightlyRun/test254.m

     
    1 %Test Name: SquareShelfConstrainedMLHO
     1%Test Name: SquareShelfConstrainedMOLHO
    22md=triangle(model(),'../Exp/Square.exp',150000.);
    33md=setmask(md,'all','');
    44md=parameterize(md,'../Par/SquareShelf.par');
    5 md=setflowequation(md,'MLHO','all');
     5md=setflowequation(md,'MOLHO','all');
    66md.cluster=generic('name',oshostname(),'np',3);
    77
    88%redo the parameter file for this special shelf.
     
    5757md.mask.ice_levelset=-1+nodeonicefront;
    5858
    5959md.stressbalance.requested_outputs={'default','VySurface','VyShear','VyBase'};
    60 md=SetMLHOBC(md);
     60md=SetMOLHOBC(md);
    6161md=solve(md,'Stressbalance');
    6262
    6363%create analytical solution: strain rate is constant = ((rho_ice*g*h)/4B)^3 (Paterson, 4th Edition, page 292.
  • ../trunk-jpl/test/NightlyRun/test256.m

     
    1 %Test Name: SquareShelfStressMLHO2dTransientIncrNonHydro
     1%Test Name: SquareShelfStressMOLHO2dTransientIncrNonHydro
    22md=triangle(model(),'../Exp/Square.exp',150000.);
    33md=setmask(md,'all','');
    44md=parameterize(md,'../Par/SquareShelf.par');
    5 md=setflowequation(md,'MLHO','all');
     5md=setflowequation(md,'MOLHO','all');
    66md.geometry.base=md.geometry.base+50.; md.geometry.surface=md.geometry.surface+50.;
    77md.cluster=generic('name',oshostname(),'np',1);
    88md.masstransport.hydrostatic_adjustment='Incremental';
    9 md=SetMLHOBC(md);
     9md=SetMOLHOBC(md);
    1010md=solve(md,'Transient');
    1111
    1212%Fields and tolerances to track changes
  • ../trunk-jpl/test/NightlyRun/test127.py

     
    1 #Test Name: SquareShelfConstrainedStressMLHO2d
     1#Test Name: SquareShelfConstrainedStressMOLHO2d
    22from model import *
    33from socket import gethostname
    44from triangle import triangle
     
    88from solve import solve
    99from massfluxatgate import massfluxatgate
    1010from generic import generic
    11 from SetMLHOBC import SetMLHOBC
     11from SetMOLHOBC import SetMOLHOBC
    1212
    1313md = triangle(model(), '../Exp/Square.exp', 50000)
    1414md = setmask(md, 'all', '')
    1515md = parameterize(md, '../Par/SquareShelfConstrained.py')
    16 md = setflowequation(md, 'MLHO', 'all')
     16md = setflowequation(md, 'MOLHO', 'all')
    1717md.cluster = generic('name', gethostname(), 'np', 2)
    1818#outputs
    19 #FIXME compute the stress components for MLHO
     19#FIXME compute the stress components for MOLHO
    2020md.stressbalance.requested_outputs = ['default', 'VxSurface', 'VySurface', 'VxShear', 'VyShear', 'VxBase', 'VyBase', 'MassFlux1', 'MassFlux2', 'MassFlux3', 'MassFlux4', 'MassFlux5', 'MassFlux6']
    2121#md.stressbalance.requested_outputs = ['default', 'DeviatoricStressxx', 'DeviatoricStressyy', 'DeviatoricStressxy', 'MassFlux1', 'MassFlux2', 'MassFlux3', 'MassFlux4', 'MassFlux5', 'MassFlux6']
    2222md.outputdefinition.definitions = [massfluxatgate('name', 'MassFlux1', 'profilename', '../Exp/MassFlux1.exp', 'definitionstring', 'Outputdefinition1'),
     
    2525                                   massfluxatgate('name', 'MassFlux4', 'profilename', '../Exp/MassFlux4.exp', 'definitionstring', 'Outputdefinition4'),
    2626                                   massfluxatgate('name', 'MassFlux5', 'profilename', '../Exp/MassFlux5.exp', 'definitionstring', 'Outputdefinition5'),
    2727                                   massfluxatgate('name', 'MassFlux6', 'profilename', '../Exp/MassFlux6.exp', 'definitionstring', 'Outputdefinition6')]
    28 md = SetMLHOBC(md)
     28md = SetMOLHOBC(md)
    2929md = solve(md, 'Stressbalance')
    3030
    3131#Fields and tolerances to track changes
  • ../trunk-jpl/test/NightlyRun/test129.py

     
    1 #Test Name: SquareShelfConstrainedRestartTranMLHO2d
     1#Test Name: SquareShelfConstrainedRestartTranMOLHO2d
    22from model import *
    33from socket import gethostname
    4 from SetMLHOBC import SetMLHOBC
     4from SetMOLHOBC import SetMOLHOBC
    55from triangle import *
    66from setmask import *
    77from parameterize import *
     
    1313md = triangle(model(), '../Exp/Square.exp', 150000.)
    1414md = setmask(md, 'all', '')
    1515md = parameterize(md, '../Par/SquareShelfConstrained.py')
    16 md = setflowequation(md, 'MLHO', 'all')
     16md = setflowequation(md, 'MOLHO', 'all')
    1717md.cluster = generic('name', gethostname(), 'np', 1)
    1818md.transient.requested_outputs = ['IceVolume', 'TotalSmb', 'VxShear','VyShear','VxBase','VyBase','VxSurface','VySurface']
    1919
     
    2323# time steps and resolution
    2424md.timestepping.final_time = 19
    2525md.settings.output_frequency = 2
    26 md = SetMLHOBC(md)
     26md = SetMOLHOBC(md)
    2727
    2828md = solve(md, 'Transient')
    2929md2 = copy.deepcopy(md)
  • ../trunk-jpl/test/NightlyRun/test249.py

     
    1 #Test Name: SquareShelfTranMLHO2d
     1#Test Name: SquareShelfTranMOLHO2d
    22
    33from model import *
    44from socket import gethostname
     
    88from setflowequation import setflowequation
    99from solve import solve
    1010from generic import generic
    11 from SetMLHOBC import SetMLHOBC
     11from SetMOLHOBC import SetMOLHOBC
    1212
    1313md = triangle(model(), '../Exp/Square.exp', 150000)
    1414md = setmask(md, 'all', '')
    1515md = parameterize(md, '../Par/SquareShelf.py')
    1616md.basalforcings.floatingice_melting_rate[:] = 1.
    17 md = setflowequation(md, 'MLHO', 'all')
     17md = setflowequation(md, 'MOLHO', 'all')
    1818md.cluster = generic('name', gethostname(), 'np', 3)
    1919md.transient.requested_outputs = ['default', 'FloatingArea', 'GroundedArea', 'TotalFloatingBmb', 'TotalGroundedBmb']
    20 md = SetMLHOBC(md)
     20md = SetMOLHOBC(md)
    2121md = solve(md, 'Transient')
    2222
    2323
  • ../trunk-jpl/test/NightlyRun/test255.py

     
    1 #Test Name: SquareShelfStressMLHO2dTransientIncrHydro
     1#Test Name: SquareShelfStressMOLHO2dTransientIncrHydro
    22from model import *
    33from socket import gethostname
    44from triangle import triangle
     
    66from parameterize import parameterize
    77from setflowequation import setflowequation
    88from solve import solve
    9 from SetMLHOBC import SetMLHOBC
     9from SetMOLHOBC import SetMOLHOBC
    1010
    1111md = triangle(model(), '../Exp/Square.exp', 150000.)
    1212md = setmask(md, 'all', '')
    1313md = parameterize(md, '../Par/SquareShelf.py')
    14 md = setflowequation(md, 'MLHO', 'all')
     14md = setflowequation(md, 'MOLHO', 'all')
    1515md.cluster = generic('name', gethostname(), 'np', 3)
    1616md.masstransport.hydrostatic_adjustment = 'Incremental'
    17 md = SetMLHOBC(md)
     17md = SetMOLHOBC(md)
    1818md = solve(md, 'Transient')
    1919
    2020#Fields and tolerances to track changes
  • ../trunk-jpl/test/NightlyRun/test256.py

     
    1 #Test Name: SquareShelfStressMLHO2dTransientIncrNonHydro
     1#Test Name: SquareShelfStressMOLHO2dTransientIncrNonHydro
    22from model import *
    33from socket import gethostname
    44from triangle import triangle
     
    66from parameterize import parameterize
    77from setflowequation import setflowequation
    88from solve import solve
    9 from SetMLHOBC import SetMLHOBC
     9from SetMOLHOBC import SetMOLHOBC
    1010
    1111
    1212md = triangle(model(), '../Exp/Square.exp', 150000.)
    1313md = setmask(md, 'all', '')
    1414md = parameterize(md, '../Par/SquareShelf.py')
    15 md = setflowequation(md, 'MLHO', 'all')
     15md = setflowequation(md, 'MOLHO', 'all')
    1616md.geometry.base = md.geometry.base + 50.
    1717md.geometry.surface = md.geometry.surface + 50.
    1818md.cluster = generic('name', gethostname(), 'np', 1)
    1919md.masstransport.hydrostatic_adjustment = 'Incremental'
    20 md = SetMLHOBC(md)
     20md = SetMOLHOBC(md)
    2121md = solve(md, 'Transient')
    2222
    2323#Fields and tolerances to track changes
  • ../trunk-jpl/test/NightlyRun/test332.py

     
    1 #Test Name: SquareSheetConstrainedTranMLHO2d
     1#Test Name: SquareSheetConstrainedTranMOLHO2d
    22from model import *
    33from socket import gethostname
    44from triangle import triangle
     
    66from parameterize import parameterize
    77from setflowequation import setflowequation
    88from solve import solve
    9 from SetMLHOBC import SetMLHOBC
     9from SetMOLHOBC import SetMOLHOBC
    1010
    1111md = triangle(model(), '../Exp/Square.exp', 150000.)
    1212md = setmask(md, '', '')
    1313md = parameterize(md, '../Par/SquareSheetConstrained.py')
    14 md = setflowequation(md, 'MLHO', 'all')
     14md = setflowequation(md, 'MOLHO', 'all')
    1515md.cluster = generic('name', gethostname(), 'np', 3)
    16 md = SetMLHOBC(md)
     16md = SetMOLHOBC(md)
    1717md = solve(md, 'Transient')
    1818
    1919#Fields and tolerances to track changes
  • ../trunk-jpl/test/NightlyRun/test334.py

     
    1 #Test Name: SquareShelfCMBMLHO
     1#Test Name: SquareShelfCMBMOLHO
    22from model import *
    33from socket import gethostname
    44import numpy as np
     
    88from setflowequation import setflowequation
    99from solve import solve
    1010from generic import generic
    11 from SetMLHOBC import SetMLHOBC
     11from SetMOLHOBC import SetMOLHOBC
    1212
    1313md = triangle(model(), '../Exp/Square.exp', 200000)
    1414md = setmask(md, 'all', '')
    1515md = parameterize(md, '../Par/SquareShelf.py')
    16 md = setflowequation(md, 'MLHO', 'all')
     16md = setflowequation(md, 'MOLHO', 'all')
    1717
    1818# control parameters
    1919
     
    3232
    3333
    3434md.cluster = generic('name', gethostname(), 'np', 3)
    35 md = SetMLHOBC(md)
     35md = SetMOLHOBC(md)
    3636md = solve(md, 'Stressbalance')
    3737
    3838
  • ../trunk-jpl/test/NightlyRun/test446.py

     
    1 #Test Name: SquareSheetShelfStressMLHO2d
     1#Test Name: SquareSheetShelfStressMOLHO2d
    22from model import *
    33from socket import gethostname
    44from triangle import triangle
     
    66from parameterize import parameterize
    77from setflowequation import setflowequation
    88from solve import solve
    9 from SetMLHOBC import SetMLHOBC
     9from SetMOLHOBC import SetMOLHOBC
    1010
    1111md = triangle(model(), '../Exp/Square.exp', 150000.)
    1212md = setmask(md, '../Exp/SquareShelf.exp', '')
    1313md = parameterize(md, '../Par/SquareSheetShelf.py')
    14 md = setflowequation(md, 'MLHO', 'all')
     14md = setflowequation(md, 'MOLHO', 'all')
    1515md.cluster = generic('name', gethostname(), 'np', 3)
    1616md.stressbalance.requested_outputs = ['default', 'VxSurface', 'VySurface', 'VxShear', 'VyShear', 'VxBase', 'VyBase']
    17 md = SetMLHOBC(md);
     17md = SetMOLHOBC(md);
    1818md = solve(md, 'Stressbalance')
    1919
    2020#Fields and tolerances to track changes
  • ../trunk-jpl/test/NightlyRun/test448.py

     
    1 #Test Name: RoundSheetShelfGLMigrationMLHO2d
     1#Test Name: RoundSheetShelfGLMigrationMOLHO2d
    22import numpy as np
    33from model import *
    44from socket import gethostname
     
    77from parameterize import parameterize
    88from setflowequation import setflowequation
    99from solve import solve
    10 from SetMLHOBC import SetMLHOBC
     10from SetMOLHOBC import SetMOLHOBC
    1111
    1212
    1313radius = 1.e6
     
    2727flags[pos] = 1
    2828md = setmask(md, flags, '')
    2929md = parameterize(md, '../Par/RoundSheetShelf.py')
    30 md = setflowequation(md, 'MLHO', 'all')
     30md = setflowequation(md, 'MOLHO', 'all')
    3131md.cluster = generic('name', gethostname(), 'np', 3)
    3232
    3333md.transient.isthermal = False
     
    3838
    3939#test different grounding line dynamics.
    4040md.groundingline.migration = 'AggressiveMigration'
    41 md = SetMLHOBC(md)
     41md = SetMOLHOBC(md)
    4242md = solve(md, 'Transient')
    4343element_on_iceshelf_agressive = md.results.TransientSolution[0].MaskOceanLevelset
    4444vel_agressive = md.results.TransientSolution[0].Vel
  • ../trunk-jpl/test/NightlyRun/test518.py

     
    11
    2 #Test Name: PigStressMLHO2d
     2#Test Name: PigStressMOLHO2d
    33from model import *
    44from socket import gethostname
    55from triangle import triangle
     
    77from parameterize import parameterize
    88from setflowequation import setflowequation
    99from solve import solve
    10 from SetMLHOBC import SetMLHOBC
     10from SetMOLHOBC import SetMOLHOBC
    1111
    1212
    1313md = triangle(model(), '../Exp/Pig.exp', 20000.)
    1414md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp')
    1515md = parameterize(md, '../Par/Pig.py')
    16 md = setflowequation(md, 'MLHO', 'all')
     16md = setflowequation(md, 'MOLHO', 'all')
    1717md.cluster = generic('name', gethostname(), 'np', 3)
    1818md.stressbalance.requested_outputs = ['default', 'VxSurface', 'VySurface', 'VxShear', 'VyShear', 'VxBase', 'VyBase']
    19 md = SetMLHOBC(md)
     19md = SetMOLHOBC(md)
    2020md = solve(md, 'Stressbalance')
    2121
    2222#Fields and tolerances to track changes
  • ../trunk-jpl/test/NightlyRun/test332.m

     
    1 %Test Name: SquareSheetConstrainedTranMLHO2d
     1%Test Name: SquareSheetConstrainedTranMOLHO2d
    22md=triangle(model(),'../Exp/Square.exp',150000.);
    33md=setmask(md,'','');
    44md=parameterize(md,'../Par/SquareSheetConstrained.par');
    5 md=setflowequation(md,'MLHO','all');
     5md=setflowequation(md,'MOLHO','all');
    66md.cluster=generic('name',oshostname(),'np',3);
    7 md=SetMLHOBC(md);
     7md=SetMOLHOBC(md);
    88md=solve(md,'Transient');
    99
    1010%Fields and tolerances to track changes
  • ../trunk-jpl/test/NightlyRun/test334.m

     
    1 %Test Name: SquareShelfCMBMLHO
     1%Test Name: SquareShelfCMBMOLHO
    22md=triangle(model(),'../Exp/Square.exp',200000.);
    33md=setmask(md,'all','');
    44md=parameterize(md,'../Par/SquareShelf.par');
    5 md=setflowequation(md,'MLHO','all');
     5md=setflowequation(md,'MOLHO','all');
    66
    77%control parameters
    88md.inversion.iscontrol=1;
     
    1919md.verbose.control=true;
    2020
    2121md.cluster=generic('name',oshostname(),'np',3);
    22 md=SetMLHOBC(md);
     22md=SetMOLHOBC(md);
    2323md=solve(md,'Stressbalance');
    2424
    2525%Fields and tolerances to track changes
  • ../trunk-jpl/test/NightlyRun/test446.m

     
    1 %Test Name: SquareSheetShelfStressMLHO2d
     1%Test Name: SquareSheetShelfStressMOLHO2d
    22md=triangle(model(),'../Exp/Square.exp',150000.);
    33md=setmask(md,'../Exp/SquareShelf.exp','');
    44md=parameterize(md,'../Par/SquareSheetShelf.par');
    5 md=setflowequation(md,'MLHO','all');
     5md=setflowequation(md,'MOLHO','all');
    66md.cluster=generic('name',oshostname(),'np',3);
    77md.stressbalance.requested_outputs={'default','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase'};
    8 md=SetMLHOBC(md);
     8md=SetMOLHOBC(md);
    99md=solve(md,'Stressbalance');
    1010
    1111%Fields and tolerances to track changes
  • ../trunk-jpl/test/NightlyRun/test448.m

     
    1 %Test Name: RoundSheetShelfGLMigrationMLHO2d
     1%Test Name: RoundSheetShelfGLMigrationMOLHO2d
    22radius=1.e6;
    33shelfextent=2.e5;
    44
     
    1515flags(pos)=1;
    1616md=setmask(md,flags,'');
    1717md=parameterize(md,'../Par/RoundSheetShelf.par');
    18 md=setflowequation(md,'MLHO','all');
     18md=setflowequation(md,'MOLHO','all');
    1919md.cluster=generic('name',oshostname(),'np',3);
    2020
    2121md.transient.isthermal=0;
     
    2424md.transient.isstressbalance=1;
    2525md.transient.isgroundingline=1;
    2626
    27 md=SetMLHOBC(md);
     27md=SetMOLHOBC(md);
    2828%test different grounding line dynamics.
    2929md.groundingline.migration='AggressiveMigration';
    3030md=solve(md,'Transient');
  • ../trunk-jpl/test/NightlyRun/test518.m

     
    1 %Test Name: PigStressMLHO2d
     1%Test Name: PigStressMOLHO2d
    22md=triangle(model(),'../Exp/Pig.exp',20000.);
    33md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
    44md=parameterize(md,'../Par/Pig.par');
    5 md=setflowequation(md,'MLHO','all');
     5md=setflowequation(md,'MOLHO','all');
    66md.cluster=generic('name',oshostname(),'np',3);
    77md.stressbalance.requested_outputs={'default','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase'};
    8 md=SetMLHOBC(md);
     8md=SetMOLHOBC(md);
    99md=solve(md,'Stressbalance');
    1010
    1111%Fields and tolerances to track changes
  • ../trunk-jpl/test/NightlyRun/test810.m

     
    1 %Test Name: ValleyGlacierLevelsetMLHO2d
     1%Test Name: ValleyGlacierLevelsetMOLHO2d
    22md=triangle(model(),'../Exp/Square.exp',50000);
    33md=setmask(md,'','');
    44md=parameterize(md,'../Par/ValleyGlacierShelf.par');
    5 md=setflowequation(md,'MLHO','all');
     5md=setflowequation(md,'MOLHO','all');
    66md.levelset.stabilization=2;
    77md.cluster=generic('name',oshostname(),'np',3);
    88
     
    1414md.transient.isthermal=0;
    1515md.transient.isgroundingline=1;
    1616
    17 md=SetMLHOBC(md);
     17md=SetMOLHOBC(md);
    1818md=solve(md,'Transient');
    1919
    2020%Fields and tolerances to track changes
  • ../trunk-jpl/test/NightlyRun/test330.py

     
    1 #Test Name: SquareSheetConstrainedStressMLHO2d
     1#Test Name: SquareSheetConstrainedStressMOLHO2d
    22from model import *
    33from socket import gethostname
    44from triangle import triangle
     
    66from parameterize import parameterize
    77from setflowequation import setflowequation
    88from solve import solve
    9 from SetMLHOBC import SetMLHOBC
     9from SetMOLHOBC import SetMOLHOBC
    1010
    1111
    1212md = triangle(model(), '../Exp/Square.exp', 150000.)
    1313md = setmask(md, '', '')
    1414md = parameterize(md, '../Par/SquareSheetConstrained.py')
    15 md = setflowequation(md, 'MLHO', 'all')
     15md = setflowequation(md, 'MOLHO', 'all')
    1616md.cluster = generic('name', gethostname(), 'np', 3)
    1717md.stressbalance.requested_outputs = ['default', 'VxSurface', 'VySurface', 'VxShear', 'VyShear', 'VxBase', 'VyBase']
    18 md = SetMLHOBC(md)
     18md = SetMOLHOBC(md)
    1919md = solve(md, 'Stressbalance')
    2020
    2121#Fields and tolerances to track changes
  • ../trunk-jpl/test/NightlyRun/test333.py

     
    1 #Test Name: SquareSheetConstrainedCMDragMLHO
     1#Test Name: SquareSheetConstrainedCMDragMOLHO
    22import numpy as np
    33from model import *
    44from socket import gethostname
     
    77from parameterize import parameterize
    88from setflowequation import setflowequation
    99from solve import solve
    10 from SetMLHOBC import SetMLHOBC
     10from SetMOLHOBC import SetMOLHOBC
    1111
    1212
    1313md = triangle(model(), '../Exp/Square.exp', 200000.)
    1414md = setmask(md, '', '')
    1515md = parameterize(md, '../Par/SquareSheetConstrained.py')
    16 md = setflowequation(md, 'MLHO', 'all')
     16md = setflowequation(md, 'MOLHO', 'all')
    1717
    1818#control parameters
    1919
     
    3232md.inversion.vy_obs = md.initialization.vy
    3333
    3434md.cluster = generic('name', gethostname(), 'np', 3)
    35 md = SetMLHOBC(md)
     35md = SetMOLHOBC(md)
    3636md = solve(md, 'Stressbalance')
    3737
    3838#Fields and tolerances to track changes
  • ../trunk-jpl/test/NightlyRun/test335.py

     
    1 #Test Name: SquareSheetConstrainedStressMLHO2d
     1#Test Name: SquareSheetConstrainedStressMOLHO2d
    22from model import *
    33from socket import gethostname
    44from triangle import triangle
     
    66from parameterize import parameterize
    77from setflowequation import setflowequation
    88from solve import solve
    9 from SetMLHOBC import SetMLHOBC
     9from SetMOLHOBC import SetMOLHOBC
    1010
    1111
    1212md = triangle(model(), '../Exp/Square.exp', 200000.)
    1313md = setmask(md, '', '')
    1414md = parameterize(md, '../Par/SquareSheetConstrained.py')
    15 md = setflowequation(md, 'MLHO', 'all')
    16 md = SetMLHOBC(md)
     15md = setflowequation(md, 'MOLHO', 'all')
     16md = SetMOLHOBC(md)
    1717md.extrude(5, 1.)
    1818md.cluster = generic('name', gethostname(), 'np', 3)
    1919md.stressbalance.requested_outputs = ['default', 'VxSurface', 'VySurface', 'VxShear', 'VyShear', 'VxBase', 'VyBase']
  • ../trunk-jpl/test/NightlyRun/test447.py

     
    1 #Test Name: SquareSheetShelfTranMLHO2d
     1#Test Name: SquareSheetShelfTranMOLHO2d
    22import numpy as np
    33from model import *
    44from socket import gethostname
     
    77from parameterize import parameterize
    88from setflowequation import setflowequation
    99from solve import solve
    10 from SetMLHOBC import SetMLHOBC
     10from SetMOLHOBC import SetMOLHOBC
    1111from frictioncoulomb import frictioncoulomb
    1212from generic import generic
    1313
     
    2424md.friction.coefficientcoulomb = 0.02 * np.ones(md.mesh.numberofvertices)
    2525md.transient.isthermal = False
    2626md.transient.isgroundingline = True
    27 md = setflowequation(md, 'MLHO', 'all')
     27md = setflowequation(md, 'MOLHO', 'all')
    2828md.cluster = generic('name', gethostname(), 'np', 3)
    2929md.transient.requested_outputs = ['default', 'GroundedArea', 'FloatingArea', 'TotalFloatingBmb', 'TotalGroundedBmb', 'TotalSmb']
    30 md = SetMLHOBC(md)
     30md = SetMOLHOBC(md)
    3131md = solve(md, 'Transient')
    3232
    3333#Fields and tolerances to track changes
  • ../trunk-jpl/test/NightlyRun/test449.py

     
    1 #Test Name: MISMIP3DMLHO
     1#Test Name: MISMIP3DMOLHO
    22import numpy as np
    33from model import *
    44from socket import gethostname
     
    77from parameterize import parameterize
    88from setflowequation import setflowequation
    99from solve import solve
    10 from SetMLHOBC import SetMLHOBC
     10from SetMOLHOBC import SetMOLHOBC
    1111from generic import generic
    1212
    1313
     
    2323pos = np.where(md.mask.ocean_levelset >= 0.)
    2424md.geometry.base[pos] = md.geometry.bed[pos]
    2525md.geometry.surface = md.geometry.base + md.geometry.thickness
    26 md = setflowequation(md, 'MLHO', 'all')
     26md = setflowequation(md, 'MOLHO', 'all')
    2727
    2828#Boundary conditions:
    2929md.mask.ice_levelset = -np.ones((md.mesh.numberofvertices, ))
     
    5858md.timestepping.time_step = 10
    5959
    6060md.cluster = generic('name', gethostname(), 'np', 3)
    61 md = SetMLHOBC(md)
     61md = SetMOLHOBC(md)
    6262md = solve(md, 'Transient')
    6363#print md.results.TransientSolution[0].BasalforcingsFloatingiceMeltingRate
    6464#print md.results.TransientSolution[1].BasalforcingsFloatingiceMeltingRate
  • ../trunk-jpl/test/NightlyRun/test519.py

     
    1 #Test Name: PigTranMLHO2d
     1#Test Name: PigTranMOLHO2d
    22import numpy as np
    33from model import *
    44from socket import gethostname
     
    77from parameterize import parameterize
    88from setflowequation import setflowequation
    99from solve import solve
    10 from SetMLHOBC import SetMLHOBC
     10from SetMOLHOBC import SetMOLHOBC
    1111from generic import generic
    1212
    1313md = triangle(model(), '../Exp/Pig.exp', 20000.)
    1414md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp')
    1515md = parameterize(md, '../Par/Pig.py')
    16 md = setflowequation(md, 'MLHO', 'all')
     16md = setflowequation(md, 'MOLHO', 'all')
    1717md.mesh.scale_factor = 0.9 * np.ones((md.mesh.numberofvertices))
    1818md.transient.requested_outputs = ['default', 'IceVolume', 'IceVolumeScaled', 'GroundedArea', 'GroundedAreaScaled', 'FloatingArea', 'FloatingAreaScaled', 'TotalSmb', 'TotalSmbScaled', 'TotalFloatingBmb', 'TotalFloatingBmbScaled']
    1919md.cluster = generic('name', gethostname(), 'np', 3)
    20 md = SetMLHOBC(md)
     20md = SetMOLHOBC(md)
    2121md = solve(md, 'Transient')
    2222
    2323# Fields and tolerances to track changes
  • ../trunk-jpl/test/NightlyRun/test810.py

     
    1 #Test Name: ValleyGlacierLevelsetMLHO2d
     1#Test Name: ValleyGlacierLevelsetMOLHO2d
    22from model import *
    33from socket import gethostname
    44from triangle import triangle
     
    66from parameterize import parameterize
    77from setflowequation import setflowequation
    88from solve import solve
    9 from SetMLHOBC import SetMLHOBC
     9from SetMOLHOBC import SetMOLHOBC
    1010
    1111md = triangle(model(), '../Exp/Square.exp', 50000)
    1212md = setmask(md, '', '')
    1313md = parameterize(md, '../Par/ValleyGlacierShelf.py')
    1414md.levelset.stabilization = 2
    15 md = setflowequation(md, 'MLHO', 'all')
     15md = setflowequation(md, 'MOLHO', 'all')
    1616md.cluster = generic('name', gethostname(), 'np', 3)
    1717
    1818#Transient
     
    2222md.transient.issmb = True
    2323md.transient.isthermal = False
    2424md.transient.isgroundingline = True
    25 md = SetMLHOBC(md)
     25md = SetMOLHOBC(md)
    2626
    2727md = solve(md, 'Transient')
    2828
  • ../trunk-jpl/test/NightlyRun/test812.py

     
    1 #Test Name: SquareShelfLevelsetCalvingMLHO2dLevermann
     1#Test Name: SquareShelfLevelsetCalvingMOLHO2dLevermann
    22import numpy as np
    33from socket import gethostname
    44from model import *
     
    77from setmask import setmask
    88from solve import solve
    99from triangle import triangle
    10 from SetMLHOBC import SetMLHOBC
     10from SetMOLHOBC import SetMOLHOBC
    1111
    1212md = triangle(model(), '../Exp/Square.exp', 50000.)
    1313md = setmask(md, 'all', '')
    1414md = parameterize(md, '../Par/SquareShelf.py')
    15 md = setflowequation(md, 'MLHO', 'all')
     15md = setflowequation(md, 'MOLHO', 'all')
    1616md.cluster = generic('name', gethostname(), 'np', 3)
    1717
    1818x = md.mesh.x
     
    4444
    4545md.transient.requested_outputs = ['default', 'StrainRateparallel', 'StrainRateperpendicular', 'Calvingratex', 'Calvingratey', 'CalvingCalvingrate']
    4646
    47 md = SetMLHOBC(md);
     47md = SetMOLHOBC(md);
    4848md = solve(md, 'Transient')
    4949
    5050#Fields and tolerances to track changes
  • ../trunk-jpl/test/NightlyRun/test812.m

     
    1 %Test Name: SquareShelfLevelsetCalvingMLHO2dLevermann
     1%Test Name: SquareShelfLevelsetCalvingMOLHO2dLevermann
    22md=triangle(model(),'../Exp/Square.exp',50000.);
    33md=setmask(md,'all','');
    44md=parameterize(md,'../Par/SquareShelf.par');
    5 md=setflowequation(md,'MLHO','all');
     5md=setflowequation(md,'MOLHO','all');
    66md.cluster=generic('name',oshostname(),'np',3);
    77
    88%Do not kill ice bergs as all is floating
     
    3434
    3535md.transient.requested_outputs={'default','StrainRateparallel','StrainRateperpendicular','Calvingratex','Calvingratey','CalvingCalvingrate'};
    3636
    37 md=SetMLHOBC(md);
     37md=SetMOLHOBC(md);
    3838md=solve(md,'Transient');
    3939
    4040%Fields and tolerances to track changes
  • ../trunk-jpl/test/NightlyRun/test811.py

     
    1 #Test Name: ValleyGlacierLevelsetCalvingMLHO2d
     1#Test Name: ValleyGlacierLevelsetCalvingMOLHO2d
    22import numpy as np
    33from model import *
    44from socket import gethostname
     
    77from parameterize import parameterize
    88from setflowequation import setflowequation
    99from solve import solve
    10 from SetMLHOBC import SetMLHOBC
     10from SetMOLHOBC import SetMOLHOBC
    1111from generic import generic
    1212
    1313md = triangle(model(), '../Exp/Square.exp', 50000)
    1414md = setmask(md, '', '')
    1515md = parameterize(md, '../Par/ValleyGlacierShelf.py')
    16 md = setflowequation(md, 'MLHO', 'all')
     16md = setflowequation(md, 'MOLHO', 'all')
    1717md.cluster = generic('name', gethostname(), 'np', 3)
    1818
    1919#Transient
     
    2828md.frontalforcings.meltingrate = np.zeros((md.mesh.numberofvertices))
    2929md.levelset.migration_max = 1e10
    3030
    31 md = SetMLHOBC(md)
     31md = SetMOLHOBC(md)
    3232md = solve(md, 'Transient')
    3333
    3434#Fields and tolerances to track changes
  • ../trunk-jpl/test/NightlyRun/test127.m

     
    1 %Test Name: SquareShelfConstrainedStressMLHO2d
     1%Test Name: SquareShelfConstrainedStressMOLHO2d
    22md=triangle(model(),'../Exp/Square.exp',50000.);
    33md=setmask(md,'all','');
    44md=parameterize(md,'../Par/SquareShelfConstrained.par');
    5 md=setflowequation(md,'MLHO','all');
     5md=setflowequation(md,'MOLHO','all');
    66md.cluster=generic('name',oshostname(),'np',2);
    77
    88%output
    9 %FIXME compute the stress components for MLHO
     9%FIXME compute the stress components for MOLHO
    1010md.stressbalance.requested_outputs={'default','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase','MassFlux1','MassFlux2','MassFlux3','MassFlux4','MassFlux5','MassFlux6'};
    1111%md.stressbalance.requested_outputs={'default','DeviatoricStressxx','DeviatoricStressyy','DeviatoricStressxy','MassFlux1','MassFlux2','MassFlux3','MassFlux4','MassFlux5','MassFlux6'};
    1212md.outputdefinition.definitions={...
     
    1717        massfluxatgate('name','MassFlux5','profilename',['../Exp/MassFlux5.exp'],'definitionstring','Outputdefinition5'),...
    1818        massfluxatgate('name','MassFlux6','profilename',['../Exp/MassFlux6.exp'],'definitionstring','Outputdefinition6')...
    1919        };
    20 md=SetMLHOBC(md);
     20md=SetMOLHOBC(md);
    2121md=solve(md,'Stressbalance');
    2222
    2323%Fields and tolerances to track changes
  • ../trunk-jpl/test/NightlyRun/test129.m

     
    1 %Test Name: SquareShelfConstrainedRestartTranMLHO2d
     1%Test Name: SquareShelfConstrainedRestartTranMOLHO2d
    22md=triangle(model(),'../Exp/Square.exp',150000.);
    33md=setmask(md,'all','');
    44md=parameterize(md,'../Par/SquareShelfConstrained.par');
    5 md=setflowequation(md,'MLHO','all');
     5md=setflowequation(md,'MOLHO','all');
    66md.cluster=generic('name',oshostname(),'np',1);
    77md.transient.requested_outputs={'IceVolume','TotalSmb','VxShear','VyShear','VxBase','VyBase','VxSurface','VySurface'};
    88
     
    1313md.timestepping.final_time=19;
    1414md.settings.output_frequency=2;
    1515
    16 md=SetMLHOBC(md);
     16md=SetMOLHOBC(md);
    1717md=solve(md,'Transient');
    1818md2=solve(md,'Transient','restart',1);
    1919
  • ../trunk-jpl/test/NightlyRun/test249.m

     
    1 %Test Name: SquareShelfTranMLHO2d
     1%Test Name: SquareShelfTranMOLHO2d
    22md=triangle(model(),'../Exp/Square.exp',150000.);
    33md=setmask(md,'all','');
    44md=parameterize(md,'../Par/SquareShelf.par');
    5 md=setflowequation(md,'MLHO','all');
     5md=setflowequation(md,'MOLHO','all');
    66md.cluster=generic('name',oshostname(),'np',3);
    77md.transient.requested_outputs={'default','FloatingArea','GroundedArea','TotalGroundedBmb','TotalFloatingBmb'};
    88md.basalforcings.floatingice_melting_rate(:)=1;
    9 md=SetMLHOBC(md);
     9md=SetMOLHOBC(md);
    1010md=solve(md,'Transient');
    1111
    1212%Fields and tolerances to track changes
  • ../trunk-jpl/test/NightlyRun/test255.m

     
    1 %Test Name: SquareShelfStressMLHO2dTransientIncrHydro
     1%Test Name: SquareShelfStressMOLHO2dTransientIncrHydro
    22md=triangle(model(),'../Exp/Square.exp',150000.);
    33md=setmask(md,'all','');
    44md=parameterize(md,'../Par/SquareShelf.par');
    5 md=setflowequation(md,'MLHO','all');
     5md=setflowequation(md,'MOLHO','all');
    66md.cluster=generic('name',oshostname(),'np',3);
    77md.masstransport.hydrostatic_adjustment='Incremental';
    8 md=SetMLHOBC(md);
     8md=SetMOLHOBC(md);
    99md=solve(md,'Transient');
    1010
    1111%Fields and tolerances to track changes
  • ../trunk-jpl/test/NightlyRun/test330.m

     
    1 %Test Name: SquareSheetConstrainedStressMLHO2d
     1%Test Name: SquareSheetConstrainedStressMOLHO2d
    22md=triangle(model(),'../Exp/Square.exp',150000.);
    33md=setmask(md,'','');
    44md=parameterize(md,'../Par/SquareSheetConstrained.par');
    5 md=setflowequation(md,'MLHO','all');
     5md=setflowequation(md,'MOLHO','all');
    66md.cluster=generic('name',oshostname(),'np',3);
    77md.stressbalance.requested_outputs={'default','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase'};
    8 md=SetMLHOBC(md);
     8md=SetMOLHOBC(md);
    99md=solve(md,'Stressbalance');
    1010
    1111%Fields and tolerances to track changes
  • ../trunk-jpl/test/NightlyRun/test333.m

     
    1 %Test Name: SquareSheetConstrainedCMDragMLHO
     1%Test Name: SquareSheetConstrainedCMDragMOLHO
    22md=triangle(model(),'../Exp/Square.exp',200000.);
    33md=setmask(md,'','');
    44md=parameterize(md,'../Par/SquareSheetConstrained.par');
    5 md=setflowequation(md,'MLHO','all');
     5md=setflowequation(md,'MOLHO','all');
    66
    77%control parameters
    88md.inversion.iscontrol=1;
     
    1818md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
    1919
    2020md.cluster=generic('name',oshostname(),'np',3);
    21 md=SetMLHOBC(md);
     21md=SetMOLHOBC(md);
    2222md=solve(md,'Stressbalance');
    2323
    2424%Fields and tolerances to track changes
  • ../trunk-jpl/test/NightlyRun/test335.m

     
    1 %Test Name: SquareSheetConstrainedStressMLHO3d
     1%Test Name: SquareSheetConstrainedStressMOLHO3d
    22md=triangle(model(),'../Exp/Square.exp',200000.);
    33md=setmask(md,'','');
    44md=parameterize(md,'../Par/SquareSheetConstrained.par');
    5 md=setflowequation(md,'MLHO','all');
     5md=setflowequation(md,'MOLHO','all');
    66md = extrude(md, 5, 1);
    77md.cluster=generic('name',oshostname(),'np',3);
    88md.stressbalance.requested_outputs={'default','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase'};
    9 md=SetMLHOBC(md);
     9md=SetMOLHOBC(md);
    1010md=solve(md,'Stressbalance');
    1111
    1212%Fields and tolerances to track changes
  • ../trunk-jpl/test/NightlyRun/test447.m

     
    1 %Test Name: SquareSheetShelfTranMLHO2d
     1%Test Name: SquareSheetShelfTranMOLHO2d
    22md=triangle(model(),'../Exp/Square.exp',150000.);
    33md=setmask(md,'../Exp/SquareShelf.exp','');
    44md=parameterize(md,'../Par/SquareSheetShelf.par');
     
    1212md.friction.coefficientcoulomb=0.02*ones(md.mesh.numberofvertices,1);
    1313md.transient.isthermal=0;
    1414md.transient.isgroundingline=1;
    15 md=setflowequation(md,'MLHO','all');
     15md=setflowequation(md,'MOLHO','all');
    1616md.cluster=generic('name',oshostname(),'np',3);
    1717md.transient.requested_outputs={'default','GroundedArea','FloatingArea','TotalFloatingBmb','TotalGroundedBmb','TotalSmb'};
    18 md=SetMLHOBC(md);
     18md=SetMOLHOBC(md);
    1919md=solve(md,'Transient');
    2020
    2121%Fields and tolerances to track changes
  • ../trunk-jpl/test/NightlyRun/test449.m

     
    1 %Test Name: MISMIP3DMLHO
     1%Test Name: MISMIP3DMOLHO
    22md=triangle(model(),'../Exp/Square.exp',100000.);
    33md=setmask(md,'../Exp/SquareShelf.exp','');
    44md=parameterize(md,'../Par/SquareSheetShelf.par');
     
    1111pos=find(md.mask.ocean_levelset>=0);
    1212md.geometry.base(pos)=md.geometry.bed(pos);
    1313md.geometry.surface=md.geometry.base+md.geometry.thickness;
    14 md=setflowequation(md,'MLHO','all');
     14md=setflowequation(md,'MOLHO','all');
    1515
    1616%Boundary conditions:
    1717md.mask.ice_levelset=-ones(md.mesh.numberofvertices,1);
     
    4444md.timestepping.time_step=10;
    4545
    4646md.cluster=generic('name',oshostname(),'np',3);
    47 md=SetMLHOBC(md);
     47md=SetMOLHOBC(md);
    4848md=solve(md,'Transient');
    4949
    5050%Fields and tolerances to track changes
  • ../trunk-jpl/test/NightlyRun/test519.m

     
    1 %Test Name: PigTranMLHO2d
     1%Test Name: PigTranMOLHO2d
    22md=triangle(model(),'../Exp/Pig.exp',20000.);
    33md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
    44md=parameterize(md,'../Par/Pig.par');
    5 md=setflowequation(md,'MLHO','all');
     5md=setflowequation(md,'MOLHO','all');
    66md.cluster=generic('name',oshostname(),'np',3);
    77md.geometry.bed=md.geometry.base;
    88[md.mesh.lat,md.mesh.long] = xy2ll(md.mesh.x,md.mesh.y,-1);
    99md.mesh.scale_factor=0.9*ones(md.mesh.numberofvertices,1);
    1010md.transient.requested_outputs={'default','IceVolume','IceVolumeScaled','GroundedArea','GroundedAreaScaled','FloatingArea','FloatingAreaScaled','TotalSmb','TotalSmbScaled','TotalFloatingBmb','TotalFloatingBmbScaled'};
    11 md=SetMLHOBC(md);
     11md=SetMOLHOBC(md);
    1212md=solve(md,'Transient');
    1313
    1414%Fields and tolerances to track changes
  • ../trunk-jpl/test/NightlyRun/test811.m

     
    1 %Test Name: ValleyGlacierLevelsetCalvingMLHO2d
     1%Test Name: ValleyGlacierLevelsetCalvingMOLHO2d
    22md=triangle(model(),'../Exp/Square.exp',50000);
    33md=setmask(md,'','');
    44md=parameterize(md,'../Par/ValleyGlacierShelf.par');
    5 md=setflowequation(md,'MLHO','all');
     5md=setflowequation(md,'MOLHO','all');
    66md.cluster=generic('name',oshostname(),'np',3);
    77
    88%Transient
     
    1717md.frontalforcings.meltingrate=zeros(md.mesh.numberofvertices,1);
    1818md.levelset.migration_max = 1e10;
    1919
    20 md=SetMLHOBC(md);
     20md=SetMOLHOBC(md);
    2121md=solve(md,'Transient');
    2222
    2323%Fields and tolerances to track changes
Note: See TracBrowser for help on using the repository browser.