Changeset 22159


Ignore:
Timestamp:
10/10/17 08:23:38 (7 years ago)
Author:
Eric.Larour
Message:

CHG: divers bug fixes

Location:
issm/branches/trunk-larour-NatGeoScience2016/src/c
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • issm/branches/trunk-larour-NatGeoScience2016/src/c/analyses/SealevelriseAnalysis.cpp

    r22155 r22159  
    3838        iomodel->FetchData(&geodetic,"md.slr.geodetic");
    3939        if (geodetic){
    40                 iomodel->FetchDataToInput(elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum);
    41                 iomodel->FetchDataToInput(elements,"md.mask.land_levelset",MaskLandLevelsetEnum);
     40                char* masktype=NULL;
     41                iomodel->FetchData(&masktype,"md.mask.type");
     42                if (strcmp(masktype,"maskpsl")==0){
     43                        iomodel->FetchDataToInput(elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum);
     44                        iomodel->FetchDataToInput(elements,"md.mask.land_levelset",MaskLandLevelsetEnum);
     45                }
     46                xDelete<char>(masktype);
    4247        }
    4348        iomodel->FetchDataToInput(elements,"md.slr.deltathickness",SealevelriseDeltathicknessEnum);
     
    4651        iomodel->FetchDataToInput(elements,"md.geometry.bed",BedEnum);
    4752
    48         /*Initialize cumdeltalthickness input: unfortunately, we don't have femmodel, so we need to iterate on
    49          *elements, otherwise we would have used InputUpdateFromConstantx: */
     53        /*Initialize cumdeltalthickness and sealevel rise rate input: unfortunately, we don't have femmodel, so we
     54         * need to iterate on elements, otherwise we would have used InputUpdateFromConstantx: */
    5055        counter=0;
    5156        for(int i=0;i<iomodel->numberofelements;i++){
     
    5358                        Element* element=(Element*)elements->GetObjectByOffset(counter);
    5459                        element->InputUpdateFromConstant(0.0,SealevelriseCumDeltathicknessEnum);
     60                        element->InputUpdateFromConstant(0.0,SealevelRateEnum);
     61                        element->InputUpdateFromConstant(0.0,SealevelUmotionRateEnum);
    5562                        counter++;
    5663                }
     
    269276}/*}}}*/
    270277void           SealevelriseAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
    271        
    272         IssmDouble *deltaS  = NULL;
    273         IssmDouble *S  = NULL;
    274         int*        sidlist = NULL;
    275         int         numvertices;
    276        
    277         numvertices= element->GetNumberOfVertices();
    278         sidlist=xNew<int>(numvertices);
    279        
    280         element->GetVerticesSidList(sidlist);
    281 
    282         deltaS = xNew<IssmDouble>(numvertices);
    283         for(int i=0;i<numvertices;i++){
    284                 deltaS[i]=solution[sidlist[i]];
    285         }
    286 
    287         S = xNew<IssmDouble>(numvertices);
    288         element->GetInputListOnVertices(S,SealevelEnum,0);
    289 
    290         /*Add deltaS to S:*/
    291         for (int i=0;i<numvertices;i++)S[i]+=deltaS[i];
    292 
    293         /*Add S back into inputs: */
    294         element->AddInput(SealevelEnum,S,P1Enum);
    295 
    296         /*Free ressources:*/
    297         xDelete<int>(sidlist);
    298         xDelete<IssmDouble>(deltaS);
    299         xDelete<IssmDouble>(S);
     278        _error_("not implemeneted yet!");
    300279
    301280}/*}}}*/
  • issm/branches/trunk-larour-NatGeoScience2016/src/c/classes/FemModel.cpp

    r22114 r22159  
    26562656                pEast->Assemble();
    26572657        }
     2658        if(VerboseConvergence())_printf_("\n");
    26582659
    26592660        /*Free ressources:*/
  • issm/branches/trunk-larour-NatGeoScience2016/src/c/cores/sealevelrise_core.cpp

    r22156 r22159  
    141141                sealevelrise_core_elastic(&U_radial,&U_north,&U_east,femmodel,Sg);
    142142               
    143                 /*transform these values into rates (as we only run this once each frequency turns:*/
     143                /*transform these values into rates (as we only run this once each frequency turn:*/
    144144                Sg_rate=Sg->Duplicate(); Sg->Copy(Sg_rate); Sg_rate->Scale(1/(dt*frequency));
    145145                U_radial_rate=U_radial->Duplicate(); U_radial->Copy(U_radial_rate); U_radial_rate->Scale(1/(dt*frequency));
  • issm/branches/trunk-larour-NatGeoScience2016/src/c/shared/Enum/EnumDefinitions.h

    r22155 r22159  
    206206        InversionVyObsEnum,
    207207        InversionVzObsEnum,
     208        MaskTypeEnum,
    208209        MaskIceLevelsetEnum,
    209210        MaskOceanLevelsetEnum,
  • issm/branches/trunk-larour-NatGeoScience2016/src/c/shared/Enum/EnumToStringx.cpp

    r22155 r22159  
    212212                case InversionVyObsEnum : return "InversionVyObs";
    213213                case InversionVzObsEnum : return "InversionVzObs";
     214                case MaskTypeEnum : return "MaskType";
    214215                case MaskIceLevelsetEnum : return "MaskIceLevelset";
    215216                case MaskOceanLevelsetEnum : return "MaskOceanLevelset";
  • issm/branches/trunk-larour-NatGeoScience2016/src/c/shared/Enum/StringToEnumx.cpp

    r22155 r22159  
    215215              else if (strcmp(name,"InversionVyObs")==0) return InversionVyObsEnum;
    216216              else if (strcmp(name,"InversionVzObs")==0) return InversionVzObsEnum;
     217              else if (strcmp(name,"MaskType")==0) return MaskTypeEnum;
    217218              else if (strcmp(name,"MaskIceLevelset")==0) return MaskIceLevelsetEnum;
    218219              else if (strcmp(name,"MaskOceanLevelset")==0) return MaskOceanLevelsetEnum;
     
    259260              else if (strcmp(name,"CalvingLevermann")==0) return CalvingLevermannEnum;
    260261              else if (strcmp(name,"CalvingDev")==0) return CalvingDevEnum;
    261               else if (strcmp(name,"CalvingMinthickness")==0) return CalvingMinthicknessEnum;
    262262         else stage=3;
    263263   }
    264264   if(stage==3){
    265               if (strcmp(name,"DefaultCalving")==0) return DefaultCalvingEnum;
     265              if (strcmp(name,"CalvingMinthickness")==0) return CalvingMinthicknessEnum;
     266              else if (strcmp(name,"DefaultCalving")==0) return DefaultCalvingEnum;
    266267              else if (strcmp(name,"CalvinglevermannCoeff")==0) return CalvinglevermannCoeffEnum;
    267268              else if (strcmp(name,"CalvinglevermannMeltingrate")==0) return CalvinglevermannMeltingrateEnum;
     
    382383              else if (strcmp(name,"SmbNumRequestedOutputs")==0) return SmbNumRequestedOutputsEnum;
    383384              else if (strcmp(name,"SmbRequestedOutputs")==0) return SmbRequestedOutputsEnum;
    384               else if (strcmp(name,"SmbIsInitialized")==0) return SmbIsInitializedEnum;
    385385         else stage=4;
    386386   }
    387387   if(stage==4){
    388               if (strcmp(name,"SmbDzini")==0) return SmbDziniEnum;
     388              if (strcmp(name,"SmbIsInitialized")==0) return SmbIsInitializedEnum;
     389              else if (strcmp(name,"SmbDzini")==0) return SmbDziniEnum;
    389390              else if (strcmp(name,"SmbDini")==0) return SmbDiniEnum;
    390391              else if (strcmp(name,"SmbReini")==0) return SmbReiniEnum;
     
    505506              else if (strcmp(name,"AndroidFrictionCoefficient")==0) return AndroidFrictionCoefficientEnum;
    506507              else if (strcmp(name,"ResetPenalties")==0) return ResetPenaltiesEnum;
    507               else if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum;
    508508         else stage=5;
    509509   }
    510510   if(stage==5){
    511               if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum;
     511              if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum;
     512              else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum;
    512513              else if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum;
    513514              else if (strcmp(name,"SurfaceLogVelMisfit")==0) return SurfaceLogVelMisfitEnum;
     
    628629              else if (strcmp(name,"Outputdefinition26")==0) return Outputdefinition26Enum;
    629630              else if (strcmp(name,"Outputdefinition27")==0) return Outputdefinition27Enum;
    630               else if (strcmp(name,"Outputdefinition28")==0) return Outputdefinition28Enum;
    631631         else stage=6;
    632632   }
    633633   if(stage==6){
    634               if (strcmp(name,"Outputdefinition29")==0) return Outputdefinition29Enum;
     634              if (strcmp(name,"Outputdefinition28")==0) return Outputdefinition28Enum;
     635              else if (strcmp(name,"Outputdefinition29")==0) return Outputdefinition29Enum;
    635636              else if (strcmp(name,"Outputdefinition30")==0) return Outputdefinition30Enum;
    636637              else if (strcmp(name,"Outputdefinition31")==0) return Outputdefinition31Enum;
     
    751752              else if (strcmp(name,"ToolkitsOptionsStrings")==0) return ToolkitsOptionsStringsEnum;
    752753              else if (strcmp(name,"QmuErrName")==0) return QmuErrNameEnum;
    753               else if (strcmp(name,"QmuInName")==0) return QmuInNameEnum;
    754754         else stage=7;
    755755   }
    756756   if(stage==7){
    757               if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum;
     757              if (strcmp(name,"QmuInName")==0) return QmuInNameEnum;
     758              else if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum;
    758759              else if (strcmp(name,"Regular")==0) return RegularEnum;
    759760              else if (strcmp(name,"Scaled")==0) return ScaledEnum;
     
    874875              else if (strcmp(name,"Profiler")==0) return ProfilerEnum;
    875876              else if (strcmp(name,"MatrixParam")==0) return MatrixParamEnum;
    876               else if (strcmp(name,"Masscon")==0) return MassconEnum;
    877877         else stage=8;
    878878   }
    879879   if(stage==8){
    880               if (strcmp(name,"Massconaxpby")==0) return MassconaxpbyEnum;
     880              if (strcmp(name,"Masscon")==0) return MassconEnum;
     881              else if (strcmp(name,"Massconaxpby")==0) return MassconaxpbyEnum;
    881882              else if (strcmp(name,"NodeSId")==0) return NodeSIdEnum;
    882883              else if (strcmp(name,"ElementSId")==0) return ElementSIdEnum;
     
    997998              else if (strcmp(name,"P0Array")==0) return P0ArrayEnum;
    998999              else if (strcmp(name,"P1")==0) return P1Enum;
    999               else if (strcmp(name,"P1DG")==0) return P1DGEnum;
    10001000         else stage=9;
    10011001   }
    10021002   if(stage==9){
    1003               if (strcmp(name,"P1bubble")==0) return P1bubbleEnum;
     1003              if (strcmp(name,"P1DG")==0) return P1DGEnum;
     1004              else if (strcmp(name,"P1bubble")==0) return P1bubbleEnum;
    10041005              else if (strcmp(name,"P1bubblecondensed")==0) return P1bubblecondensedEnum;
    10051006              else if (strcmp(name,"P2")==0) return P2Enum;
Note: See TracChangeset for help on using the changeset viewer.