Changeset 25139


Ignore:
Timestamp:
06/24/20 17:34:21 (5 years ago)
Author:
Eric.Larour
Message:

CHG: consolidating use of tidal and loading love numbers.

Location:
issm/trunk-jpl/src/c
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/analyses/EsaAnalysis.cpp

    r25118 r25139  
    7373
    7474        /*love numbers: */
    75         iomodel->FetchData(&love_h,&nl,NULL,"md.esa.love_h");
    76         iomodel->FetchData(&love_l,&nl,NULL,"md.esa.love_l");
     75        iomodel->FetchData(&love_h,&nl,NULL,"md.solidearth.love.h");
     76        iomodel->FetchData(&love_l,&nl,NULL,"md.solidearth.love.l");
    7777
    7878        /*compute elastic green function for a range of angles*/
  • issm/trunk-jpl/src/c/analyses/SealevelriseAnalysis.cpp

    r25118 r25139  
    281281        IssmDouble* love_k=NULL;
    282282        IssmDouble* love_l=NULL;
     283        IssmDouble* love_th=NULL;
     284        IssmDouble* love_tk=NULL;
     285        IssmDouble* love_tl=NULL;
    283286        int         dslmodel=0;
    284287
     
    345348        /*Deal with elasticity {{{*/
    346349        /*love numbers: */
    347         iomodel->FetchData(&lovemodel,"md.solidearth.love.model");
    348         if(lovemodel==1){
    349                 iomodel->FetchData(&love_h,&nl,NULL,"md.solidearth.love.h");
    350                 iomodel->FetchData(&love_k,&nl,NULL,"md.solidearth.love.k");
    351                 iomodel->FetchData(&love_l,&nl,NULL,"md.solidearth.love.l");
    352                 parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.love.th",TidalLoveHEnum));
    353                 parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.love.tk",TidalLoveKEnum));
    354                 parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.love.tk2secular",TidalLoveK2SecularEnum));
    355         }
    356         else{
    357                 parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.love.h",TidalLoveHEnum));
    358                 parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.love.k",TidalLoveKEnum));
    359                 parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.love.k2secular",TidalLoveK2SecularEnum));
    360         }
     350        iomodel->FetchData(&love_h,&nl,NULL,"md.solidearth.love.h");
     351        iomodel->FetchData(&love_k,&nl,NULL,"md.solidearth.love.k");
     352        iomodel->FetchData(&love_l,&nl,NULL,"md.solidearth.love.l");
     353        iomodel->FetchData(&love_th,&nl,NULL,"md.solidearth.love.th");
     354        iomodel->FetchData(&love_tk,&nl,NULL,"md.solidearth.love.tk");
     355        iomodel->FetchData(&love_tl,&nl,NULL,"md.solidearth.love.tl");
     356        parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.love.tk2secular",TidalLoveK2SecularEnum));
     357
     358        parameters->AddObject(new DoubleMatParam(LoadLoveHEnum,love_h,nl,1));
     359        parameters->AddObject(new DoubleMatParam(LoadLoveKEnum,love_k,nl,1));
     360        parameters->AddObject(new DoubleMatParam(LoadLoveLEnum,love_l,nl,1));
     361        parameters->AddObject(new DoubleMatParam(TidalLoveHEnum,love_th,nl,1));
     362        parameters->AddObject(new DoubleMatParam(TidalLoveKEnum,love_tk,nl,1));
     363        parameters->AddObject(new DoubleMatParam(TidalLoveLEnum,love_tl,nl,1));
    361364
    362365        /*compute elastic green function for a range of angles*/
     
    474477        xDelete<IssmDouble>(love_k);
    475478        xDelete<IssmDouble>(love_l);
     479        xDelete<IssmDouble>(love_th);
     480        xDelete<IssmDouble>(love_tk);
     481        xDelete<IssmDouble>(love_tl);
    476482        xDelete<IssmDouble>(G_rigid);
    477483        xDelete<IssmDouble>(G_rigid_local);
  • issm/trunk-jpl/src/c/classes/FemModel.cpp

    r25118 r25139  
    47944794        bool spherical=true;
    47954795        IssmDouble* RSLg_old=NULL;
    4796         IssmDouble      tide_love_h, tide_love_k, fluid_love, moi_e, moi_p, omega, g;
    4797         IssmDouble      load_love_k2 = -0.30922675; //degree 2 load Love number
     4796        IssmDouble*     tide_love_h  = NULL;
     4797        IssmDouble*     tide_love_k  = NULL;
     4798        IssmDouble*     load_love_k  = NULL;
     4799        IssmDouble  tide_love_k2secular;
     4800        IssmDouble  moi_e, moi_p, omega, g;
    47984801        IssmDouble      m1, m2, m3;
    47994802        IssmDouble      lati, longi, radi, value;
     
    48244827
    48254828        /*pull out some useful parameters: */
    4826         parameters->FindParam(&tide_love_h,TidalLoveHEnum);
    4827         parameters->FindParam(&tide_love_k,TidalLoveKEnum);
    4828         parameters->FindParam(&fluid_love,TidalLoveK2SecularEnum);
     4829        parameters->FindParam(&load_love_k,NULL,NULL,LoadLoveKEnum);
     4830        parameters->FindParam(&tide_love_h,NULL,NULL,TidalLoveHEnum);
     4831        parameters->FindParam(&tide_love_k,NULL,NULL,TidalLoveKEnum);
     4832        parameters->FindParam(&tide_love_k2secular,TidalLoveK2SecularEnum);
    48294833        parameters->FindParam(&moi_e,RotationalEquatorialMoiEnum);
    48304834        parameters->FindParam(&moi_p,RotationalPolarMoiEnum);
     
    48324836
    48334837        /*compute perturbation terms for angular velocity vector: */
    4834         m1 = 1/(1-tide_love_k/fluid_love) * (1+load_love_k2)/(moi_p-moi_e) * moi_list[0];
    4835         m2 = 1/(1-tide_love_k/fluid_love) * (1+load_love_k2)/(moi_p-moi_e) * moi_list[1];
    4836         m3 = -(1+load_love_k2)/moi_p * moi_list[2];     // term associated with fluid number (3-order-of-magnitude smaller) is negelected
     4838        m1 = 1/(1-tide_love_k[2]/tide_love_k2secular) * (1+load_love_k[2])/(moi_p-moi_e) * moi_list[0];
     4839        m2 = 1/(1-tide_love_k[2]/tide_love_k2secular) * (1+load_love_k[2])/(moi_p-moi_e) * moi_list[1];
     4840        m3 = -(1+load_love_k[2])/moi_p * moi_list[2];   // term associated with fluid number (3-order-of-magnitude smaller) is negelected
    48374841
    48384842        /*recover lat,long and radius vectors from vertices: */
     
    48534857
    48544858                /*only first order terms are considered now: */
    4855                 value=((1.0+tide_love_k-tide_love_h)/9.81)*pow(omega*radi,2.0)*
     4859                value=((1.0+tide_love_k[2]-tide_love_h[2])/9.81)*pow(omega*radi,2.0)*
    48564860                                                (-m3/6.0 + 0.5*m3*cos(2.0*lati) - 0.5*sin(2.*lati)*(m1*cos(longi)+m2*sin(longi)));
    48574861
     
    48684872        xDelete<IssmDouble>(latitude);
    48694873        xDelete<IssmDouble>(longitude);
     4874        xDelete<IssmDouble>(tide_love_h);
     4875        xDelete<IssmDouble>(tide_love_k);
     4876        xDelete<IssmDouble>(load_love_k);
     4877
    48704878        xDelete<IssmDouble>(radius);
    48714879
  • issm/trunk-jpl/src/c/shared/Enum/Enum.vim

    r25118 r25139  
    315315syn keyword cConstant SealevelriseGeometryDoneEnum
    316316syn keyword cConstant RotationalEquatorialMoiEnum
     317syn keyword cConstant TidalLoveHEnum
     318syn keyword cConstant TidalLoveKEnum
     319syn keyword cConstant TidalLoveLEnum
    317320syn keyword cConstant TidalLoveK2SecularEnum
     321syn keyword cConstant LoadLoveHEnum
     322syn keyword cConstant LoadLoveKEnum
     323syn keyword cConstant LoadLoveLEnum
    318324syn keyword cConstant SealevelriseGRigidEnum
    319325syn keyword cConstant SealevelriseGElasticEnum
     
    330336syn keyword cConstant SolidearthSettingsRotationEnum
    331337syn keyword cConstant SealevelriseRunCountEnum
    332 syn keyword cConstant TidalLoveHEnum
    333 syn keyword cConstant TidalLoveKEnum
    334338syn keyword cConstant SealevelriseTransitionsEnum
    335339syn keyword cConstant SealevelriseUElasticEnum
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r25118 r25139  
    309309        SealevelriseGeometryDoneEnum,
    310310        RotationalEquatorialMoiEnum,
     311        TidalLoveHEnum,
     312        TidalLoveKEnum,
     313        TidalLoveLEnum,
    311314        TidalLoveK2SecularEnum,
     315        LoadLoveHEnum,
     316        LoadLoveKEnum,
     317        LoadLoveLEnum,
    312318        SealevelriseGRigidEnum,
    313319        SealevelriseGElasticEnum,
     
    324330        SolidearthSettingsRotationEnum,
    325331        SealevelriseRunCountEnum,
    326         TidalLoveHEnum,
    327         TidalLoveKEnum,
    328332        SealevelriseTransitionsEnum,
    329333        SealevelriseUElasticEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r25118 r25139  
    317317                case SealevelriseGeometryDoneEnum : return "SealevelriseGeometryDone";
    318318                case RotationalEquatorialMoiEnum : return "RotationalEquatorialMoi";
     319                case TidalLoveHEnum : return "TidalLoveH";
     320                case TidalLoveKEnum : return "TidalLoveK";
     321                case TidalLoveLEnum : return "TidalLoveL";
    319322                case TidalLoveK2SecularEnum : return "TidalLoveK2Secular";
     323                case LoadLoveHEnum : return "LoadLoveH";
     324                case LoadLoveKEnum : return "LoadLoveK";
     325                case LoadLoveLEnum : return "LoadLoveL";
    320326                case SealevelriseGRigidEnum : return "SealevelriseGRigid";
    321327                case SealevelriseGElasticEnum : return "SealevelriseGElastic";
     
    332338                case SolidearthSettingsRotationEnum : return "SolidearthSettingsRotation";
    333339                case SealevelriseRunCountEnum : return "SealevelriseRunCount";
    334                 case TidalLoveHEnum : return "TidalLoveH";
    335                 case TidalLoveKEnum : return "TidalLoveK";
    336340                case SealevelriseTransitionsEnum : return "SealevelriseTransitions";
    337341                case SealevelriseUElasticEnum : return "SealevelriseUElastic";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r25118 r25139  
    323323              else if (strcmp(name,"SealevelriseGeometryDone")==0) return SealevelriseGeometryDoneEnum;
    324324              else if (strcmp(name,"RotationalEquatorialMoi")==0) return RotationalEquatorialMoiEnum;
     325              else if (strcmp(name,"TidalLoveH")==0) return TidalLoveHEnum;
     326              else if (strcmp(name,"TidalLoveK")==0) return TidalLoveKEnum;
     327              else if (strcmp(name,"TidalLoveL")==0) return TidalLoveLEnum;
    325328              else if (strcmp(name,"TidalLoveK2Secular")==0) return TidalLoveK2SecularEnum;
     329              else if (strcmp(name,"LoadLoveH")==0) return LoadLoveHEnum;
     330              else if (strcmp(name,"LoadLoveK")==0) return LoadLoveKEnum;
     331              else if (strcmp(name,"LoadLoveL")==0) return LoadLoveLEnum;
    326332              else if (strcmp(name,"SealevelriseGRigid")==0) return SealevelriseGRigidEnum;
    327333              else if (strcmp(name,"SealevelriseGElastic")==0) return SealevelriseGElasticEnum;
     
    338344              else if (strcmp(name,"SolidearthSettingsRotation")==0) return SolidearthSettingsRotationEnum;
    339345              else if (strcmp(name,"SealevelriseRunCount")==0) return SealevelriseRunCountEnum;
    340               else if (strcmp(name,"TidalLoveH")==0) return TidalLoveHEnum;
    341               else if (strcmp(name,"TidalLoveK")==0) return TidalLoveKEnum;
    342346              else if (strcmp(name,"SealevelriseTransitions")==0) return SealevelriseTransitionsEnum;
    343347              else if (strcmp(name,"SealevelriseUElastic")==0) return SealevelriseUElasticEnum;
     
    379383              else if (strcmp(name,"SmbIsgraingrowth")==0) return SmbIsgraingrowthEnum;
    380384              else if (strcmp(name,"SmbIsmelt")==0) return SmbIsmeltEnum;
    381               else if (strcmp(name,"SmbIsmungsm")==0) return SmbIsmungsmEnum;
     385         else stage=4;
     386   }
     387   if(stage==4){
     388              if (strcmp(name,"SmbIsmungsm")==0) return SmbIsmungsmEnum;
    382389              else if (strcmp(name,"SmbIsprecipscaled")==0) return SmbIsprecipscaledEnum;
    383390              else if (strcmp(name,"SmbIssetpddfac")==0) return SmbIssetpddfacEnum;
    384391              else if (strcmp(name,"SmbIsshortwave")==0) return SmbIsshortwaveEnum;
    385          else stage=4;
    386    }
    387    if(stage==4){
    388               if (strcmp(name,"SmbIstemperaturescaled")==0) return SmbIstemperaturescaledEnum;
     392              else if (strcmp(name,"SmbIstemperaturescaled")==0) return SmbIstemperaturescaledEnum;
    389393              else if (strcmp(name,"SmbIsthermal")==0) return SmbIsthermalEnum;
    390394              else if (strcmp(name,"SmbIsturbulentflux")==0) return SmbIsturbulentfluxEnum;
     
    502506              else if (strcmp(name,"BasalforcingsPicoSubShelfOceanTemp")==0) return BasalforcingsPicoSubShelfOceanTempEnum;
    503507              else if (strcmp(name,"BasalStressx")==0) return BasalStressxEnum;
    504               else if (strcmp(name,"BasalStressy")==0) return BasalStressyEnum;
     508         else stage=5;
     509   }
     510   if(stage==5){
     511              if (strcmp(name,"BasalStressy")==0) return BasalStressyEnum;
    505512              else if (strcmp(name,"BasalStress")==0) return BasalStressEnum;
    506513              else if (strcmp(name,"Base")==0) return BaseEnum;
    507514              else if (strcmp(name,"BaseOld")==0) return BaseOldEnum;
    508          else stage=5;
    509    }
    510    if(stage==5){
    511               if (strcmp(name,"BaseSlopeX")==0) return BaseSlopeXEnum;
     515              else if (strcmp(name,"BaseSlopeX")==0) return BaseSlopeXEnum;
    512516              else if (strcmp(name,"BaseSlopeY")==0) return BaseSlopeYEnum;
    513517              else if (strcmp(name,"Bed")==0) return BedEnum;
     
    625629              else if (strcmp(name,"HydrologyDrainageRate")==0) return HydrologyDrainageRateEnum;
    626630              else if (strcmp(name,"HydrologyEnglacialInput")==0) return HydrologyEnglacialInputEnum;
    627               else if (strcmp(name,"HydrologyGapHeight")==0) return HydrologyGapHeightEnum;
     631         else stage=6;
     632   }
     633   if(stage==6){
     634              if (strcmp(name,"HydrologyGapHeight")==0) return HydrologyGapHeightEnum;
    628635              else if (strcmp(name,"HydrologyHead")==0) return HydrologyHeadEnum;
    629636              else if (strcmp(name,"HydrologyHeadOld")==0) return HydrologyHeadOldEnum;
    630637              else if (strcmp(name,"HydrologyMoulinInput")==0) return HydrologyMoulinInputEnum;
    631          else stage=6;
    632    }
    633    if(stage==6){
    634               if (strcmp(name,"HydrologyNeumannflux")==0) return HydrologyNeumannfluxEnum;
     638              else if (strcmp(name,"HydrologyNeumannflux")==0) return HydrologyNeumannfluxEnum;
    635639              else if (strcmp(name,"HydrologyReynolds")==0) return HydrologyReynoldsEnum;
    636640              else if (strcmp(name,"HydrologySheetConductivity")==0) return HydrologySheetConductivityEnum;
     
    748752              else if (strcmp(name,"SmbDzini")==0) return SmbDziniEnum;
    749753              else if (strcmp(name,"SmbEAir")==0) return SmbEAirEnum;
    750               else if (strcmp(name,"SmbEC")==0) return SmbECEnum;
     754         else stage=7;
     755   }
     756   if(stage==7){
     757              if (strcmp(name,"SmbEC")==0) return SmbECEnum;
    751758              else if (strcmp(name,"SmbECDt")==0) return SmbECDtEnum;
    752759              else if (strcmp(name,"SmbECini")==0) return SmbECiniEnum;
    753760              else if (strcmp(name,"SmbEla")==0) return SmbElaEnum;
    754          else stage=7;
    755    }
    756    if(stage==7){
    757               if (strcmp(name,"SmbEvaporation")==0) return SmbEvaporationEnum;
     761              else if (strcmp(name,"SmbEvaporation")==0) return SmbEvaporationEnum;
    758762              else if (strcmp(name,"SmbFAC")==0) return SmbFACEnum;
    759763              else if (strcmp(name,"SmbGdn")==0) return SmbGdnEnum;
     
    871875              else if (strcmp(name,"Vz")==0) return VzEnum;
    872876              else if (strcmp(name,"VzFS")==0) return VzFSEnum;
    873               else if (strcmp(name,"VzHO")==0) return VzHOEnum;
     877         else stage=8;
     878   }
     879   if(stage==8){
     880              if (strcmp(name,"VzHO")==0) return VzHOEnum;
    874881              else if (strcmp(name,"VzMesh")==0) return VzMeshEnum;
    875882              else if (strcmp(name,"VzSSA")==0) return VzSSAEnum;
    876883              else if (strcmp(name,"WaterColumnOld")==0) return WaterColumnOldEnum;
    877          else stage=8;
    878    }
    879    if(stage==8){
    880               if (strcmp(name,"Watercolumn")==0) return WatercolumnEnum;
     884              else if (strcmp(name,"Watercolumn")==0) return WatercolumnEnum;
    881885              else if (strcmp(name,"WaterfractionDrainage")==0) return WaterfractionDrainageEnum;
    882886              else if (strcmp(name,"WaterfractionDrainageIntegrated")==0) return WaterfractionDrainageIntegratedEnum;
     
    994998              else if (strcmp(name,"AmrNeopz")==0) return AmrNeopzEnum;
    995999              else if (strcmp(name,"AndroidFrictionCoefficient")==0) return AndroidFrictionCoefficientEnum;
    996               else if (strcmp(name,"Arrhenius")==0) return ArrheniusEnum;
     1000         else stage=9;
     1001   }
     1002   if(stage==9){
     1003              if (strcmp(name,"Arrhenius")==0) return ArrheniusEnum;
    9971004              else if (strcmp(name,"AutodiffJacobian")==0) return AutodiffJacobianEnum;
    9981005              else if (strcmp(name,"Balancethickness2Analysis")==0) return Balancethickness2AnalysisEnum;
    9991006              else if (strcmp(name,"Balancethickness2Solution")==0) return Balancethickness2SolutionEnum;
    1000          else stage=9;
    1001    }
    1002    if(stage==9){
    1003               if (strcmp(name,"BalancethicknessAnalysis")==0) return BalancethicknessAnalysisEnum;
     1007              else if (strcmp(name,"BalancethicknessAnalysis")==0) return BalancethicknessAnalysisEnum;
    10041008              else if (strcmp(name,"BalancethicknessApparentMassbalance")==0) return BalancethicknessApparentMassbalanceEnum;
    10051009              else if (strcmp(name,"BalancethicknessSoftAnalysis")==0) return BalancethicknessSoftAnalysisEnum;
     
    11171121              else if (strcmp(name,"HOApproximation")==0) return HOApproximationEnum;
    11181122              else if (strcmp(name,"HOFSApproximation")==0) return HOFSApproximationEnum;
    1119               else if (strcmp(name,"Hook")==0) return HookEnum;
     1123         else stage=10;
     1124   }
     1125   if(stage==10){
     1126              if (strcmp(name,"Hook")==0) return HookEnum;
    11201127              else if (strcmp(name,"HydrologyDCEfficientAnalysis")==0) return HydrologyDCEfficientAnalysisEnum;
    11211128              else if (strcmp(name,"HydrologyDCInefficientAnalysis")==0) return HydrologyDCInefficientAnalysisEnum;
    11221129              else if (strcmp(name,"HydrologyGlaDSAnalysis")==0) return HydrologyGlaDSAnalysisEnum;
    1123          else stage=10;
    1124    }
    1125    if(stage==10){
    1126               if (strcmp(name,"HydrologyGlaDS")==0) return HydrologyGlaDSEnum;
     1130              else if (strcmp(name,"HydrologyGlaDS")==0) return HydrologyGlaDSEnum;
    11271131              else if (strcmp(name,"HydrologyPismAnalysis")==0) return HydrologyPismAnalysisEnum;
    11281132              else if (strcmp(name,"HydrologyShaktiAnalysis")==0) return HydrologyShaktiAnalysisEnum;
     
    12401244              else if (strcmp(name,"P1DG")==0) return P1DGEnum;
    12411245              else if (strcmp(name,"P1P1")==0) return P1P1Enum;
    1242               else if (strcmp(name,"P1P1GLS")==0) return P1P1GLSEnum;
     1246         else stage=11;
     1247   }
     1248   if(stage==11){
     1249              if (strcmp(name,"P1P1GLS")==0) return P1P1GLSEnum;
    12431250              else if (strcmp(name,"P1bubble")==0) return P1bubbleEnum;
    12441251              else if (strcmp(name,"P1bubblecondensed")==0) return P1bubblecondensedEnum;
    12451252              else if (strcmp(name,"P1xP2")==0) return P1xP2Enum;
    1246          else stage=11;
    1247    }
    1248    if(stage==11){
    1249               if (strcmp(name,"P1xP3")==0) return P1xP3Enum;
     1253              else if (strcmp(name,"P1xP3")==0) return P1xP3Enum;
    12501254              else if (strcmp(name,"P1xP4")==0) return P1xP4Enum;
    12511255              else if (strcmp(name,"P2")==0) return P2Enum;
     
    13631367              else if (strcmp(name,"CalvingdevCoeff")==0) return CalvingdevCoeffEnum;
    13641368              else if (strcmp(name,"DeviatoricStress")==0) return DeviatoricStressEnum;
    1365               else if (strcmp(name,"EtaAbsGradient")==0) return EtaAbsGradientEnum;
     1369         else stage=12;
     1370   }
     1371   if(stage==12){
     1372              if (strcmp(name,"EtaAbsGradient")==0) return EtaAbsGradientEnum;
    13661373              else if (strcmp(name,"MeshZ")==0) return MeshZEnum;
    13671374              else if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum;
    13681375              else if (strcmp(name,"OutputdefinitionList")==0) return OutputdefinitionListEnum;
    1369          else stage=12;
    1370    }
    1371    if(stage==12){
    1372               if (strcmp(name,"SealevelObs")==0) return SealevelObsEnum;
     1376              else if (strcmp(name,"SealevelObs")==0) return SealevelObsEnum;
    13731377              else if (strcmp(name,"SealevelWeights")==0) return SealevelWeightsEnum;
    13741378              else if (strcmp(name,"StrainRate")==0) return StrainRateEnum;
Note: See TracChangeset for help on using the changeset viewer.