Changeset 27084


Ignore:
Timestamp:
06/21/22 10:27:35 (3 years ago)
Author:
Eric.Larour
Message:

CHG: new paradigm. New mmemasstransport module to handle MMEs with multiple MIPS
behind (GlacierMIP2, ISMIP6 Ant and Greenland) at the same time. Element based delta thickness (yep, not vertex
based like the mass transport). Created corresponding analysis and solution core. Reflected changes in UpdateMmesx
too. Still need to debug the compilation and test.

Location:
issm/branches/trunk-larour-SLPS2022/src/c
Files:
4 added
16 edited

Legend:

Unmodified
Added
Removed
  • issm/branches/trunk-larour-SLPS2022/src/c/Makefile.am

    r27076 r27084  
    278278        ./cores/steadystate_core.cpp \
    279279        ./cores/masstransport_core.cpp \
     280        ./cores/mmemasstransport_core.cpp \
    280281        ./cores/oceantransport_core.cpp \
    281282        ./cores/depthaverage_core.cpp \
     
    487488endif
    488489if MASSTRANSPORT
    489 issm_sources += ./analyses/MasstransportAnalysis.cpp
     490issm_sources += ./analyses/MasstransportAnalysis.cpp \
     491                                ./analyses/MmemasstransportAnalysis.cpp
    490492endif
    491493if OCEANTRANSPORT
  • issm/branches/trunk-larour-SLPS2022/src/c/analyses/EnumToAnalysis.cpp

    r26099 r27084  
    100100                #ifdef _HAVE_MASSTRANSPORT_
    101101                case MasstransportAnalysisEnum : return new MasstransportAnalysis();
     102                case MmemasstransportAnalysisEnum : return new MmemasstransportAnalysis();
    102103                #endif
    103104                #ifdef _HAVE_MELTING_
  • issm/branches/trunk-larour-SLPS2022/src/c/analyses/SealevelchangeAnalysis.cpp

    r27081 r27084  
    2424
    2525        int isexternal=0;
     26        int horiz=0;
    2627
    2728        /*Update elements: */
     
    4344        iomodel->FetchData(&isexternal,"md.solidearth.isexternal");
    4445        if(isexternal){
    45 
    46                 iomodel->FetchDataToInput(inputs,elements,"md.solidearth.external.displacementeast",SolidearthExternalDisplacementEastRateEnum);
    47                 iomodel->FetchDataToInput(inputs,elements,"md.solidearth.external.displacementnorth",SolidearthExternalDisplacementNorthRateEnum);
     46                iomodel->FetchData(&horiz,"md.solidearth.settings.horiz");
     47                if(horiz){
     48                        iomodel->FetchDataToInput(inputs,elements,"md.solidearth.external.displacementeast",SolidearthExternalDisplacementEastRateEnum);
     49                        iomodel->FetchDataToInput(inputs,elements,"md.solidearth.external.displacementnorth",SolidearthExternalDisplacementNorthRateEnum);
     50                }
    4851                iomodel->FetchDataToInput(inputs,elements,"md.solidearth.external.displacementup",SolidearthExternalDisplacementUpRateEnum);
    4952                iomodel->FetchDataToInput(inputs,elements,"md.solidearth.external.geoid",SolidearthExternalGeoidRateEnum);
  • issm/branches/trunk-larour-SLPS2022/src/c/analyses/analyses.h

    r26047 r27084  
    3535#include "./LevelsetAnalysis.h"
    3636#include "./MasstransportAnalysis.h"
     37#include "./MmemasstransportAnalysis.h"
    3738#include "./OceantransportAnalysis.h"
    3839#include "./SamplingAnalysis.h"
  • issm/branches/trunk-larour-SLPS2022/src/c/classes/FemModel.cpp

    r27078 r27084  
    851851                case TransientSolutionEnum:{
    852852                        /*We have multiple analyses here, process one by one*/
    853                         bool isSIA,isFS,isthermal,isenthalpy,ismasstransport,isoceantransport,isgroundingline,isstressbalance,ismovingfront,ishydrology,isdamage,issmb,isslc,isesa,issampling;
     853                        bool isSIA,isFS,isthermal,isenthalpy,ismasstransport,ismmemasstransport,isoceantransport,isgroundingline,isstressbalance,ismovingfront,ishydrology,isdamage,issmb,isslc,isesa,issampling;
    854854                        iomodel->FindConstant(&isthermal,"md.transient.isthermal");
    855855                        iomodel->FindConstant(&ismovingfront,"md.transient.ismovingfront");
    856856                        iomodel->FindConstant(&ismasstransport,"md.transient.ismasstransport");
     857                        iomodel->FindConstant(&ismmemasstransport,"md.transient.ismmemasstransport");
    857858                        iomodel->FindConstant(&isoceantransport,"md.transient.isoceantransport");
    858859                        iomodel->FindConstant(&isstressbalance,"md.transient.isstressbalance");
     
    900901                        if(isdamage){
    901902                                analyses_temp[numanalyses++]=DamageEvolutionAnalysisEnum;
     903                        }
     904                        if(ismmemasstransport){
     905                                analyses_temp[numanalyses++]=MmemasstransportAnalysisEnum;
    902906                        }
    903907                        if(isoceantransport){
  • issm/branches/trunk-larour-SLPS2022/src/c/cores/CorePointerFromSolutionEnum.cpp

    r26047 r27084  
    5959                        solutioncore=&masstransport_core;
    6060                        break;
     61                case MmemasstransportSolutionEnum:
     62                        solutioncore=&mmemasstransport_core;
     63                        break;
    6164                case OceantransportSolutionEnum:
    6265                        solutioncore=&oceantransport_core;
  • issm/branches/trunk-larour-SLPS2022/src/c/cores/cores.h

    r26222 r27084  
    3535void controlvalidation_core(FemModel* femmodel);
    3636void masstransport_core(FemModel* femmodel);
     37void mmemasstransport_core(FemModel* femmodel);
    3738void oceantransport_core(FemModel* femmodel);
    3839void depthaverage_core(FemModel* femmodel);
  • issm/branches/trunk-larour-SLPS2022/src/c/cores/masstransport_core.cpp

    r26894 r27084  
    125125
    126126        /*for Ivins deformation model, keep history of ice thickness changes inside TransientAccumulatedDeltaIceThicknessEnum:*/
    127         if(grdmodel==IvinsEnum){
     127        if(grdmodel==IvinsEnum){ /*{{{*/
    128128
    129129                TransientInput* transientinput = femmodel->inputs->GetTransientInput(TransientAccumulatedDeltaIceThicknessEnum);
     
    153153                        xDelete<IssmDouble>(cumdeltathickness);
    154154                }
    155         }       
     155        } /*}}}*/       
    156156
    157157        /*compute total ice thickness change between two sea-level solver time steps, ie. every frequency*dt:*/
  • issm/branches/trunk-larour-SLPS2022/src/c/cores/oceantransport_core.cpp

    r26468 r27084  
    3131
    3232        if(VerboseSolution()) _printf0_("   computing ocean mass transport\n");
    33 
    34         femmodel->SetCurrentConfiguration(OceantransportAnalysisEnum);
    3533
    3634        /*save current bottom pressures before updating:*/
     
    7169
    7270        /*early return?:*/
    73         if(!isgrd)return;
     71        //if(!isgrd)return; //I don't think so, why should ocean transport worry about grd?
    7472
    7573        /* From old and new bottom pressures, create delta bottom pressure, delta dsl and delta str.
  • issm/branches/trunk-larour-SLPS2022/src/c/cores/transient_core.cpp

    r27082 r27084  
    130130
    131131        /*parameters: */
    132         bool isstressbalance,ismasstransport,isoceantransport,issmb,isthermal,isgroundingline,isesa,issampling;;
     132        bool isstressbalance,ismasstransport,ismmemasstransport,isoceantransport,issmb,isthermal,isgroundingline,isesa,issampling;;
    133133        bool isslc,ismovingfront,isdamageevolution,ishydrology,isoceancoupling,isstochasticforcing,save_results;
    134134        int  step,sb_coupling_frequency;
     
    142142        femmodel->parameters->FindParam(&isstressbalance,TransientIsstressbalanceEnum);
    143143        femmodel->parameters->FindParam(&ismasstransport,TransientIsmasstransportEnum);
     144        femmodel->parameters->FindParam(&ismmemasstransport,TransientIsMmemasstransportEnum);
    144145        femmodel->parameters->FindParam(&isoceantransport,TransientIsoceantransportEnum);
    145146        femmodel->parameters->FindParam(&issmb,TransientIssmbEnum);
     
    214215                femmodel->UpdateVertexPositionsx();
    215216        }
     217        if(ismmemasstransport){
     218                mmemasstransport_core(femmodel);
     219        }
    216220
    217221        if(isoceantransport){
  • issm/branches/trunk-larour-SLPS2022/src/c/modules/UpdateMmesx/UpdateMmesx.cpp

    r27076 r27084  
    1010        if(VerboseModule()) _printf0_("   Updating Mmes\n");
    1111
    12         IssmDouble modelid=0;
    1312                 
    14         /*Deal with solid earth: */
     13        /*Deal with solid earth external: {{{*/
    1514        if (femmodel->inputs->Exist(SolidearthExternalDisplacementEastRateEnum) && femmodel->inputs->GetInputObjectEnum(SolidearthExternalDisplacementEastRateEnum)==DatasetInputEnum){
     15               
     16                IssmDouble modelid=0;
    1617                femmodel->parameters->FindParam(&modelid,SolidearthExternalModelidEnum);
    17 
     18       
    1819                /*replace dataset of forcings with only one, the modelid'th:*/
    1920                MmeToInputFromIdx(femmodel->inputs,femmodel->elements,femmodel->parameters,modelid-1,SolidearthExternalDisplacementNorthRateEnum, P1Enum);
     
    2223                MmeToInputFromIdx(femmodel->inputs,femmodel->elements,femmodel->parameters,modelid-1,SolidearthExternalGeoidRateEnum, P1Enum);
    2324
    24         }
    25         /*Deal with ocean: */
     25        } /*}}}*/
     26        /*Deal with ocean: {{{*/
    2627        if (femmodel->inputs->Exist(OceantransportSpcbottompressureEnum) && femmodel->inputs->GetInputObjectEnum(OceantransportSpcbottompressureEnum)==DatasetInputEnum){
     28               
     29                IssmDouble modelid=0;
    2730                femmodel->parameters->FindParam(&modelid,DslModelidEnum);
    2831
     
    3134                MmeToInputFromIdx(femmodel->inputs,femmodel->elements,femmodel->parameters,modelid-1,OceantransportSpcdslEnum, P1Enum);
    3235                MmeToInputFromIdx(femmodel->inputs,femmodel->elements,femmodel->parameters,modelid-1,OceantransportSpcstrEnum, P0Enum);
    33         }
     36        } /*}}}*/
     37        if (femmodel->inputs->Exist(MmemasstransportThicknessEnum) && femmodel->inputs->GetInputObjectEnum(MmemasstransportThicknessEnum)==DatasetInputEnum){ /*{{{*/
     38       
     39                /*Deal with solid earth ice loads: */
     40
     41                int nids;
     42                IssmDouble* modelids=NULL;
     43                IssmDouble* partition = NULL;
     44
     45                /*retrieve partition vector and model ids necessary to resolve our thickness:*/
     46                femmodel->parameters->FindParam(&modelids,&nids,NULL,MmemasstransportModelidsEnum);
     47                femmodel->parameters->FindParam(&partition,NULL,NULL,MmemasstransportPartitionEnum);
     48
     49                MmeToInput(femmodel,modelids,partition,nids,MmemasstransportThicknessEnum, P0Enum);
     50
     51                if (femmodel->inputs->GetInputObjectEnum(MaskIceLevelsetEnum)==DatasetInputEnum)
     52                        MmeToInput(femmodel,modelids,partition,nids,MaskIceLevelsetEnum, P1Enum);
     53
     54                if (femmodel->inputs->GetInputObjectEnum(MaskOceanLevelsetEnum)==DatasetInputEnum)
     55                        MmeToInput(femmodel,modelids,partition,nids,MaskOceanLevelsetEnum, P1Enum);
     56
     57                /*free ressources:*/
     58                xDelete<IssmDouble>(modelids);
     59                xDelete<IssmDouble>(partition);
     60
     61
     62        } /*}}}*/
    3463}
    3564       
  • issm/branches/trunk-larour-SLPS2022/src/c/shared/Enum/Enum.vim

    r26948 r27084  
    309309syn keyword cConstant MasstransportRequestedOutputsEnum
    310310syn keyword cConstant MasstransportStabilizationEnum
     311syn keyword cConstant MmemasstransportModelidsEnum
     312syn keyword cConstant MmemasstransportPartitionEnum
    311313syn keyword cConstant MaterialsBetaEnum
    312314syn keyword cConstant MaterialsEarthDensityEnum
     
    571573syn keyword cConstant TransientIshydrologyEnum
    572574syn keyword cConstant TransientIsmasstransportEnum
     575syn keyword cConstant TransientIsmmemasstransportEnum
    573576syn keyword cConstant TransientIsoceantransportEnum
    574577syn keyword cConstant TransientIsmovingfrontEnum
     
    805808syn keyword cConstant MaskIceRefLevelsetEnum
    806809syn keyword cConstant MasstransportSpcthicknessEnum
     810syn keyword cConstant MmemasstransportDeltathicknessEnum
    807811syn keyword cConstant MaterialsRheologyBEnum
    808812syn keyword cConstant MaterialsRheologyBbarEnum
     
    14191423syn keyword cConstant MassfluxatgateEnum
    14201424syn keyword cConstant MasstransportAnalysisEnum
     1425syn keyword cConstant MmemasstransportAnalysisEnum
     1426syn keyword cConstant MmemasstransportSolutionEnum
    14211427syn keyword cConstant MasstransportSolutionEnum
    14221428syn keyword cConstant MatdamageiceEnum
     
    16241630syn keyword cType Cfsurfacesquare
    16251631syn keyword cType Channel
    1626 syn keyword cType classes
    16271632syn keyword cType Constraint
    16281633syn keyword cType Constraints
     
    16311636syn keyword cType ControlInput
    16321637syn keyword cType Covertree
     1638syn keyword cType DataSetParam
    16331639syn keyword cType DatasetInput
    1634 syn keyword cType DataSetParam
    16351640syn keyword cType Definition
    16361641syn keyword cType DependentObject
     
    16451650syn keyword cType ElementInput
    16461651syn keyword cType ElementMatrix
     1652syn keyword cType ElementVector
    16471653syn keyword cType Elements
    1648 syn keyword cType ElementVector
    16491654syn keyword cType ExponentialVariogram
    16501655syn keyword cType ExternalResult
     
    16531658syn keyword cType Friction
    16541659syn keyword cType Gauss
    1655 syn keyword cType GaussianVariogram
    1656 syn keyword cType gaussobjects
    16571660syn keyword cType GaussPenta
    16581661syn keyword cType GaussSeg
    16591662syn keyword cType GaussTetra
    16601663syn keyword cType GaussTria
     1664syn keyword cType GaussianVariogram
    16611665syn keyword cType GenericExternalResult
    16621666syn keyword cType GenericOption
     
    16741678syn keyword cType IssmDirectApplicInterface
    16751679syn keyword cType IssmParallelDirectApplicInterface
    1676 syn keyword cType krigingobjects
    16771680syn keyword cType Load
    16781681syn keyword cType Loads
     
    16851688syn keyword cType Matice
    16861689syn keyword cType Matlitho
    1687 syn keyword cType matrixobjects
    16881690syn keyword cType MatrixParam
    16891691syn keyword cType Misfit
     
    16981700syn keyword cType Observations
    16991701syn keyword cType Option
     1702syn keyword cType OptionUtilities
    17001703syn keyword cType Options
    1701 syn keyword cType OptionUtilities
    17021704syn keyword cType Param
    17031705syn keyword cType Parameters
     
    17131715syn keyword cType Regionaloutput
    17141716syn keyword cType Results
     1717syn keyword cType RiftStruct
    17151718syn keyword cType Riftfront
    1716 syn keyword cType RiftStruct
    17171719syn keyword cType SealevelGeometry
    17181720syn keyword cType Seg
    17191721syn keyword cType SegInput
     1722syn keyword cType SegRef
    17201723syn keyword cType Segment
    1721 syn keyword cType SegRef
    17221724syn keyword cType SpcDynamic
    17231725syn keyword cType SpcStatic
     
    17381740syn keyword cType Vertex
    17391741syn keyword cType Vertices
     1742syn keyword cType classes
     1743syn keyword cType gaussobjects
     1744syn keyword cType krigingobjects
     1745syn keyword cType matrixobjects
    17401746syn keyword cType AdjointBalancethickness2Analysis
    17411747syn keyword cType AdjointBalancethicknessAnalysis
  • issm/branches/trunk-larour-SLPS2022/src/c/shared/Enum/EnumDefinitions.h

    r26947 r27084  
    303303        MasstransportRequestedOutputsEnum,
    304304        MasstransportStabilizationEnum,
     305        MmemasstransportModelidsEnum,
     306        MmemasstransportPartitionEnum,
    305307        MaterialsBetaEnum,
    306308        MaterialsEarthDensityEnum,
     
    565567        TransientIshydrologyEnum,
    566568        TransientIsmasstransportEnum,
     569        TransientIsmmemasstransportEnum,
    567570        TransientIsoceantransportEnum,
    568571        TransientIsmovingfrontEnum,
     
    801804        MaskIceRefLevelsetEnum,
    802805        MasstransportSpcthicknessEnum,
     806        MmemasstransportDeltathicknessEnum,
    803807        MaterialsRheologyBEnum,
    804808        MaterialsRheologyBbarEnum,
     
    14181422        MassfluxatgateEnum,
    14191423        MasstransportAnalysisEnum,
     1424        MmemasstransportAnalysisEnum,
     1425        MmemasstransportSolutionEnum,
    14201426        MasstransportSolutionEnum,
    14211427        MatdamageiceEnum,
  • issm/branches/trunk-larour-SLPS2022/src/c/shared/Enum/EnumToStringx.cpp

    r26948 r27084  
    311311                case MasstransportRequestedOutputsEnum : return "MasstransportRequestedOutputs";
    312312                case MasstransportStabilizationEnum : return "MasstransportStabilization";
     313                case MmemasstransportModelidsEnum : return "MmemasstransportModelids";
     314                case MmemasstransportPartitionEnum : return "MmemasstransportPartition";
    313315                case MaterialsBetaEnum : return "MaterialsBeta";
    314316                case MaterialsEarthDensityEnum : return "MaterialsEarthDensity";
     
    573575                case TransientIshydrologyEnum : return "TransientIshydrology";
    574576                case TransientIsmasstransportEnum : return "TransientIsmasstransport";
     577                case TransientIsmmemasstransportEnum : return "TransientIsmmemasstransport";
    575578                case TransientIsoceantransportEnum : return "TransientIsoceantransport";
    576579                case TransientIsmovingfrontEnum : return "TransientIsmovingfront";
     
    807810                case MaskIceRefLevelsetEnum : return "MaskIceRefLevelset";
    808811                case MasstransportSpcthicknessEnum : return "MasstransportSpcthickness";
     812                case MmemasstransportDeltathicknessEnum : return "MmemasstransportDeltathickness";
    809813                case MaterialsRheologyBEnum : return "MaterialsRheologyB";
    810814                case MaterialsRheologyBbarEnum : return "MaterialsRheologyBbar";
     
    14211425                case MassfluxatgateEnum : return "Massfluxatgate";
    14221426                case MasstransportAnalysisEnum : return "MasstransportAnalysis";
     1427                case MmemasstransportAnalysisEnum : return "MmemasstransportAnalysis";
     1428                case MmemasstransportSolutionEnum : return "MmemasstransportSolution";
    14231429                case MasstransportSolutionEnum : return "MasstransportSolution";
    14241430                case MatdamageiceEnum : return "Matdamageice";
  • issm/branches/trunk-larour-SLPS2022/src/c/shared/Enum/Enumjl.vim

    r26948 r27084  
    302302syn keyword juliaConstC MasstransportRequestedOutputsEnum
    303303syn keyword juliaConstC MasstransportStabilizationEnum
     304syn keyword juliaConstC MmemasstransportModelidsEnum
     305syn keyword juliaConstC MmemasstransportPartitionEnum
    304306syn keyword juliaConstC MaterialsBetaEnum
    305307syn keyword juliaConstC MaterialsEarthDensityEnum
     
    564566syn keyword juliaConstC TransientIshydrologyEnum
    565567syn keyword juliaConstC TransientIsmasstransportEnum
     568syn keyword juliaConstC TransientIsmmemasstransportEnum
    566569syn keyword juliaConstC TransientIsoceantransportEnum
    567570syn keyword juliaConstC TransientIsmovingfrontEnum
     
    798801syn keyword juliaConstC MaskIceRefLevelsetEnum
    799802syn keyword juliaConstC MasstransportSpcthicknessEnum
     803syn keyword juliaConstC MmemasstransportDeltathicknessEnum
    800804syn keyword juliaConstC MaterialsRheologyBEnum
    801805syn keyword juliaConstC MaterialsRheologyBbarEnum
     
    14121416syn keyword juliaConstC MassfluxatgateEnum
    14131417syn keyword juliaConstC MasstransportAnalysisEnum
     1418syn keyword juliaConstC MmemasstransportAnalysisEnum
     1419syn keyword juliaConstC MmemasstransportSolutionEnum
    14141420syn keyword juliaConstC MasstransportSolutionEnum
    14151421syn keyword juliaConstC MatdamageiceEnum
  • issm/branches/trunk-larour-SLPS2022/src/c/shared/Enum/StringToEnumx.cpp

    r26948 r27084  
    317317              else if (strcmp(name,"MasstransportRequestedOutputs")==0) return MasstransportRequestedOutputsEnum;
    318318              else if (strcmp(name,"MasstransportStabilization")==0) return MasstransportStabilizationEnum;
     319              else if (strcmp(name,"MmemasstransportModelids")==0) return MmemasstransportModelidsEnum;
     320              else if (strcmp(name,"MmemasstransportPartition")==0) return MmemasstransportPartitionEnum;
    319321              else if (strcmp(name,"MaterialsBeta")==0) return MaterialsBetaEnum;
    320322              else if (strcmp(name,"MaterialsEarthDensity")==0) return MaterialsEarthDensityEnum;
     
    381383              else if (strcmp(name,"SamplingRobin")==0) return SamplingRobinEnum;
    382384              else if (strcmp(name,"SamplingSeed")==0) return SamplingSeedEnum;
    383               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,"SaveResults")==0) return SaveResultsEnum;
     389              else if (strcmp(name,"SolidearthPartitionIce")==0) return SolidearthPartitionIceEnum;
     390              else if (strcmp(name,"SolidearthPartitionHydro")==0) return SolidearthPartitionHydroEnum;
    389391              else if (strcmp(name,"SolidearthPartitionOcean")==0) return SolidearthPartitionOceanEnum;
    390392              else if (strcmp(name,"SolidearthNpartIce")==0) return SolidearthNpartIceEnum;
     
    504506              else if (strcmp(name,"SmbIsturbulentflux")==0) return SmbIsturbulentfluxEnum;
    505507              else if (strcmp(name,"SmbK")==0) return SmbKEnum;
    506               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,"SmbLapseRates")==0) return SmbLapseRatesEnum;
     512              else if (strcmp(name,"SmbNumBasins")==0) return SmbNumBasinsEnum;
     513              else if (strcmp(name,"SmbNumElevationBins")==0) return SmbNumElevationBinsEnum;
    512514              else if (strcmp(name,"SmbNumRequestedOutputs")==0) return SmbNumRequestedOutputsEnum;
    513515              else if (strcmp(name,"SmbPfac")==0) return SmbPfacEnum;
     
    585587              else if (strcmp(name,"TransientIshydrology")==0) return TransientIshydrologyEnum;
    586588              else if (strcmp(name,"TransientIsmasstransport")==0) return TransientIsmasstransportEnum;
     589              else if (strcmp(name,"TransientIsmmemasstransport")==0) return TransientIsmmemasstransportEnum;
    587590              else if (strcmp(name,"TransientIsoceantransport")==0) return TransientIsoceantransportEnum;
    588591              else if (strcmp(name,"TransientIsmovingfront")==0) return TransientIsmovingfrontEnum;
     
    626629              else if (strcmp(name,"BasalforcingsDeepwaterMeltingRateNoise")==0) return BasalforcingsDeepwaterMeltingRateNoiseEnum;
    627630              else if (strcmp(name,"BasalforcingsDeepwaterMeltingRateValuesAutoregression")==0) return BasalforcingsDeepwaterMeltingRateValuesAutoregressionEnum;
    628               else if (strcmp(name,"BasalforcingsFloatingiceMeltingRate")==0) return BasalforcingsFloatingiceMeltingRateEnum;
    629               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,"BasalforcingsFloatingiceMeltingRate")==0) return BasalforcingsFloatingiceMeltingRateEnum;
     635              else if (strcmp(name,"BasalforcingsGeothermalflux")==0) return BasalforcingsGeothermalfluxEnum;
     636              else if (strcmp(name,"BasalforcingsGroundediceMeltingRate")==0) return BasalforcingsGroundediceMeltingRateEnum;
     637              else if (strcmp(name,"BasalforcingsLinearBasinId")==0) return BasalforcingsLinearBasinIdEnum;
    635638              else if (strcmp(name,"BasalforcingsPerturbationMeltingRate")==0) return BasalforcingsPerturbationMeltingRateEnum;
    636639              else if (strcmp(name,"BasalforcingsSpatialDeepwaterElevation")==0) return BasalforcingsSpatialDeepwaterElevationEnum;
     
    749752              else if (strcmp(name,"FrictionCoefficientcoulomb")==0) return FrictionCoefficientcoulombEnum;
    750753              else if (strcmp(name,"FrictionEffectivePressure")==0) return FrictionEffectivePressureEnum;
    751               else if (strcmp(name,"FrictionM")==0) return FrictionMEnum;
    752               else if (strcmp(name,"FrictionP")==0) return FrictionPEnum;
    753               else if (strcmp(name,"FrictionPressureAdjustedTemperature")==0) return FrictionPressureAdjustedTemperatureEnum;
    754754         else stage=7;
    755755   }
    756756   if(stage==7){
    757               if (strcmp(name,"FrictionQ")==0) return FrictionQEnum;
     757              if (strcmp(name,"FrictionM")==0) return FrictionMEnum;
     758              else if (strcmp(name,"FrictionP")==0) return FrictionPEnum;
     759              else if (strcmp(name,"FrictionPressureAdjustedTemperature")==0) return FrictionPressureAdjustedTemperatureEnum;
     760              else if (strcmp(name,"FrictionQ")==0) return FrictionQEnum;
    758761              else if (strcmp(name,"FrictionSedimentCompressibilityCoefficient")==0) return FrictionSedimentCompressibilityCoefficientEnum;
    759762              else if (strcmp(name,"FrictionTillFrictionAngle")==0) return FrictionTillFrictionAngleEnum;
     
    825828              else if (strcmp(name,"MaskIceRefLevelset")==0) return MaskIceRefLevelsetEnum;
    826829              else if (strcmp(name,"MasstransportSpcthickness")==0) return MasstransportSpcthicknessEnum;
     830              else if (strcmp(name,"MmemasstransportDeltathickness")==0) return MmemasstransportDeltathicknessEnum;
    827831              else if (strcmp(name,"MaterialsRheologyB")==0) return MaterialsRheologyBEnum;
    828832              else if (strcmp(name,"MaterialsRheologyBbar")==0) return MaterialsRheologyBbarEnum;
     
    871875              else if (strcmp(name,"Sealevel")==0) return SealevelEnum;
    872876              else if (strcmp(name,"SealevelGRD")==0) return SealevelGRDEnum;
    873               else if (strcmp(name,"SealevelBarystaticMask")==0) return SealevelBarystaticMaskEnum;
     877         else stage=8;
     878   }
     879   if(stage==8){
     880              if (strcmp(name,"SealevelBarystaticMask")==0) return SealevelBarystaticMaskEnum;
    874881              else if (strcmp(name,"SealevelBarystaticIceMask")==0) return SealevelBarystaticIceMaskEnum;
    875882              else if (strcmp(name,"SealevelBarystaticIceWeights")==0) return SealevelBarystaticIceWeightsEnum;
    876883              else if (strcmp(name,"SealevelBarystaticIceArea")==0) return SealevelBarystaticIceAreaEnum;
    877          else stage=8;
    878    }
    879    if(stage==8){
    880               if (strcmp(name,"SealevelBarystaticIceLatbar")==0) return SealevelBarystaticIceLatbarEnum;
     884              else if (strcmp(name,"SealevelBarystaticIceLatbar")==0) return SealevelBarystaticIceLatbarEnum;
    881885              else if (strcmp(name,"SealevelBarystaticIceLongbar")==0) return SealevelBarystaticIceLongbarEnum;
    882886              else if (strcmp(name,"SealevelBarystaticIceLoad")==0) return SealevelBarystaticIceLoadEnum;
     
    994998              else if (strcmp(name,"SmbEla")==0) return SmbElaEnum;
    995999              else if (strcmp(name,"SmbEvaporation")==0) return SmbEvaporationEnum;
    996               else if (strcmp(name,"SmbFAC")==0) return SmbFACEnum;
     1000         else stage=9;
     1001   }
     1002   if(stage==9){
     1003              if (strcmp(name,"SmbFAC")==0) return SmbFACEnum;
    9971004              else if (strcmp(name,"SmbGdn")==0) return SmbGdnEnum;
    9981005              else if (strcmp(name,"SmbGdnini")==0) return SmbGdniniEnum;
    9991006              else if (strcmp(name,"SmbGsp")==0) return SmbGspEnum;
    1000          else stage=9;
    1001    }
    1002    if(stage==9){
    1003               if (strcmp(name,"SmbGspini")==0) return SmbGspiniEnum;
     1007              else if (strcmp(name,"SmbGspini")==0) return SmbGspiniEnum;
    10041008              else if (strcmp(name,"SmbHref")==0) return SmbHrefEnum;
    10051009              else if (strcmp(name,"SmbIsInitialized")==0) return SmbIsInitializedEnum;
     
    11171121              else if (strcmp(name,"Vx")==0) return VxEnum;
    11181122              else if (strcmp(name,"VxMesh")==0) return VxMeshEnum;
    1119               else if (strcmp(name,"VxObs")==0) return VxObsEnum;
     1123         else stage=10;
     1124   }
     1125   if(stage==10){
     1126              if (strcmp(name,"VxObs")==0) return VxObsEnum;
    11201127              else if (strcmp(name,"VxShear")==0) return VxShearEnum;
    11211128              else if (strcmp(name,"VxSurface")==0) return VxSurfaceEnum;
    11221129              else if (strcmp(name,"VyAverage")==0) return VyAverageEnum;
    1123          else stage=10;
    1124    }
    1125    if(stage==10){
    1126               if (strcmp(name,"VyBase")==0) return VyBaseEnum;
     1130              else if (strcmp(name,"VyBase")==0) return VyBaseEnum;
    11271131              else if (strcmp(name,"Vy")==0) return VyEnum;
    11281132              else if (strcmp(name,"VyMesh")==0) return VyMeshEnum;
     
    12401244              else if (strcmp(name,"Outputdefinition92")==0) return Outputdefinition92Enum;
    12411245              else if (strcmp(name,"Outputdefinition93")==0) return Outputdefinition93Enum;
    1242               else if (strcmp(name,"Outputdefinition94")==0) return Outputdefinition94Enum;
     1246         else stage=11;
     1247   }
     1248   if(stage==11){
     1249              if (strcmp(name,"Outputdefinition94")==0) return Outputdefinition94Enum;
    12431250              else if (strcmp(name,"Outputdefinition95")==0) return Outputdefinition95Enum;
    12441251              else if (strcmp(name,"Outputdefinition96")==0) return Outputdefinition96Enum;
    12451252              else if (strcmp(name,"Outputdefinition97")==0) return Outputdefinition97Enum;
    1246          else stage=11;
    1247    }
    1248    if(stage==11){
    1249               if (strcmp(name,"Outputdefinition98")==0) return Outputdefinition98Enum;
     1253              else if (strcmp(name,"Outputdefinition98")==0) return Outputdefinition98Enum;
    12501254              else if (strcmp(name,"Outputdefinition99")==0) return Outputdefinition99Enum;
    12511255              else if (strcmp(name,"Outputdefinition9")==0) return Outputdefinition9Enum;
     
    13631367              else if (strcmp(name,"FullMeltOnPartiallyFloating")==0) return FullMeltOnPartiallyFloatingEnum;
    13641368              else if (strcmp(name,"GLheightadvectionAnalysis")==0) return GLheightadvectionAnalysisEnum;
    1365               else if (strcmp(name,"GaussPenta")==0) return GaussPentaEnum;
     1369         else stage=12;
     1370   }
     1371   if(stage==12){
     1372              if (strcmp(name,"GaussPenta")==0) return GaussPentaEnum;
    13661373              else if (strcmp(name,"GaussSeg")==0) return GaussSegEnum;
    13671374              else if (strcmp(name,"GaussTetra")==0) return GaussTetraEnum;
    13681375              else if (strcmp(name,"GaussTria")==0) return GaussTriaEnum;
    1369          else stage=12;
    1370    }
    1371    if(stage==12){
    1372               if (strcmp(name,"GenericOption")==0) return GenericOptionEnum;
     1376              else if (strcmp(name,"GenericOption")==0) return GenericOptionEnum;
    13731377              else if (strcmp(name,"GenericParam")==0) return GenericParamEnum;
    13741378              else if (strcmp(name,"GenericExternalResult")==0) return GenericExternalResultEnum;
     
    14541458              else if (strcmp(name,"Massfluxatgate")==0) return MassfluxatgateEnum;
    14551459              else if (strcmp(name,"MasstransportAnalysis")==0) return MasstransportAnalysisEnum;
     1460              else if (strcmp(name,"MmemasstransportAnalysis")==0) return MmemasstransportAnalysisEnum;
     1461              else if (strcmp(name,"MmemasstransportSolution")==0) return MmemasstransportSolutionEnum;
    14561462              else if (strcmp(name,"MasstransportSolution")==0) return MasstransportSolutionEnum;
    14571463              else if (strcmp(name,"Matdamageice")==0) return MatdamageiceEnum;
     
    14841490              else if (strcmp(name,"MpiDense")==0) return MpiDenseEnum;
    14851491              else if (strcmp(name,"Mpi")==0) return MpiEnum;
    1486               else if (strcmp(name,"MpiSparse")==0) return MpiSparseEnum;
     1492         else stage=13;
     1493   }
     1494   if(stage==13){
     1495              if (strcmp(name,"MpiSparse")==0) return MpiSparseEnum;
    14871496              else if (strcmp(name,"Mumps")==0) return MumpsEnum;
    14881497              else if (strcmp(name,"NoFrictionOnPartiallyFloating")==0) return NoFrictionOnPartiallyFloatingEnum;
     
    14901499              else if (strcmp(name,"Nodal")==0) return NodalEnum;
    14911500              else if (strcmp(name,"Nodalvalue")==0) return NodalvalueEnum;
    1492          else stage=13;
    1493    }
    1494    if(stage==13){
    1495               if (strcmp(name,"NodeSId")==0) return NodeSIdEnum;
     1501              else if (strcmp(name,"NodeSId")==0) return NodeSIdEnum;
    14961502              else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum;
    14971503              else if (strcmp(name,"None")==0) return NoneEnum;
     
    16071613              else if (strcmp(name,"TotalCalvingMeltingFluxLevelset")==0) return TotalCalvingMeltingFluxLevelsetEnum;
    16081614              else if (strcmp(name,"TotalFloatingBmb")==0) return TotalFloatingBmbEnum;
    1609               else if (strcmp(name,"TotalFloatingBmbScaled")==0) return TotalFloatingBmbScaledEnum;
     1615         else stage=14;
     1616   }
     1617   if(stage==14){
     1618              if (strcmp(name,"TotalFloatingBmbScaled")==0) return TotalFloatingBmbScaledEnum;
    16101619              else if (strcmp(name,"TotalGroundedBmb")==0) return TotalGroundedBmbEnum;
    16111620              else if (strcmp(name,"TotalGroundedBmbScaled")==0) return TotalGroundedBmbScaledEnum;
     
    16131622              else if (strcmp(name,"TotalSmbScaled")==0) return TotalSmbScaledEnum;
    16141623              else if (strcmp(name,"TransientArrayParam")==0) return TransientArrayParamEnum;
    1615          else stage=14;
    1616    }
    1617    if(stage==14){
    1618               if (strcmp(name,"TransientInput")==0) return TransientInputEnum;
     1624              else if (strcmp(name,"TransientInput")==0) return TransientInputEnum;
    16191625              else if (strcmp(name,"TransientParam")==0) return TransientParamEnum;
    16201626              else if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum;
Note: See TracChangeset for help on using the changeset viewer.