Changeset 24481 for issm/trunk-jpl/src


Ignore:
Timestamp:
12/18/19 14:04:15 (5 years ago)
Author:
Eric.Larour
Message:

CHG: took out UpdateStericRate and UpdateDynamicRate methods, not needed anymore.
Using new Inputs approach to speed up the retrieval of steric and dynamic sea-level change rates.
The global mean steric change rate is now a transient input (P0) instead of a transient parameter. This
will allow for future dsl class where we have a multi-model ensemble that dakota can play we at run time!

Location:
issm/trunk-jpl/src
Files:
13 edited

Legend:

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

    r24469 r24481  
    22#include "../toolkits/toolkits.h"
    33#include "../classes/classes.h"
     4#include "../classes/Inputs2/TransientInput2.h"
    45#include "../shared/shared.h"
    56#include "../modules/modules.h"
     
    5859        iomodel->FetchData(&dslmodel,"md.dsl.model");
    5960        if (dslmodel==1){
     61
     62                /*deal with global mean steric rate: */
     63                IssmDouble* str=NULL;
     64                IssmDouble* times = NULL;
     65                int M,N;
     66
     67                /*fetch str vector:*/
     68                iomodel->FetchData(&str,&M,&N,"md.dsl.global_average_thermosteric_sea_level_change"); _assert_(M==2);
     69               
     70                //recover time vector:
     71                times=xNew<IssmDouble>(N);
     72                for(int t=0;t<N;t++) times[t] = str[N+t];
     73
     74                /*create transient input: */
     75                inputs2->SetTransientInput(DslGlobalAverageThermostericSeaLevelChangeEnum,times,N);
     76                TransientInput2* transientinput = inputs2->GetTransientInput(DslGlobalAverageThermostericSeaLevelChangeEnum);
     77               
     78                       
     79                for(int i=0;i<elements->Size();i++){
     80                        Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
     81
     82                        for(int t=0;t<N;t++){
     83                                switch(element->ObjectEnum()){
     84                                        case TriaEnum:  transientinput->AddTriaTimeInput( t,1,&element->lid,&str[t],P0Enum); break;
     85                                        case PentaEnum: transientinput->AddPentaTimeInput(t,1,&element->lid,&str[t],P0Enum); break;
     86                                        default: _error_("Not implemented yet");
     87                                }
     88                        }
     89                }
     90
     91                /*cleanup:*/
     92                xDelete<IssmDouble>(times);
     93                iomodel->DeleteData(str,"md.dsl.global_average_thermosteric_sea_level_change");
     94
     95                /*deal with dynamic sea level fields: */
     96
    6097                iomodel->FetchDataToInput(inputs2,elements,"md.dsl.sea_surface_height_change_above_geoid", DslSeaSurfaceHeightChangeAboveGeoidEnum);
    6198                iomodel->FetchDataToInput(inputs2,elements,"md.dsl.sea_water_pressure_change_at_sea_floor", DslSeaWaterPressureChangeAtSeaFloor);
     99               
     100                //TransientInput2* transientinput=inputs2->SetDatasetTransientInput(DslGlobalAverageThermostericSeaLevelChangeEnum,counter, times,N);
    62101        }
    63102        else _error_("Dsl model " << dslmodel << " not implemented yet!");
     
    118157        parameters->AddObject(iomodel->CopyConstantObject("md.slr.geodetic",SealevelriseGeodeticEnum));
    119158
    120         /*dsl model: */
    121         iomodel->FetchData(&dslmodel,"md.dsl.model");
    122         if (dslmodel==1){
    123                 IssmDouble* temp=NULL;
    124                 int M,N;
    125                 bool interp;
    126                 iomodel->FindConstant(&interp,"md.timestepping.interp_forcings");
    127                 iomodel->FetchData(&temp,&N,&M,"md.dsl.global_average_thermosteric_sea_level_change"); _assert_(N==2);
    128                 parameters->AddObject(new TransientParam(DslGlobalAverageThermostericSeaLevelChangeEnum,&temp[0],&temp[M],interp,M));
    129                 iomodel->DeleteData(temp,"md.dsl.global_average_thermosteric_sea_level_change");
    130         }
    131         else _error_("dslmodel " << dslmodel << " not supported yet");
    132 
     159                       
     160        /*Deal with elasticity {{{*/
    133161        iomodel->FetchData(&elastic,"md.slr.elastic");
    134         if(elastic){
     162        if(elastic){ 
    135163
    136164                /*love numbers: */
     
    251279                xDelete<IssmDouble>(H_elastic);
    252280                xDelete<IssmDouble>(H_elastic_local);
    253         }
    254 
    255         /*Transitions: */
     281        } /*}}}*/
     282        /*Transitions:{{{ */
    256283        iomodel->FetchData(&transitions,&transitions_M,&transitions_N,&ntransitions,"md.slr.transitions");
    257284        if(transitions){
     
    265292                xDelete<int>(transitions_M);
    266293                xDelete<int>(transitions_N);
    267         }
    268 
    269         /*Requested outputs*/
     294        } /*}}}*/
     295        /*Requested outputs {{{*/
    270296        iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.slr.requested_outputs");
    271297        if(numoutputs)parameters->AddObject(new StringArrayParam(SealevelriseRequestedOutputsEnum,requestedoutputs,numoutputs));
    272298        iomodel->DeleteData(&requestedoutputs,numoutputs,"md.slr.requested_outputs");
     299        /*}}}*/
    273300
    274301}/*}}}*/
  • issm/trunk-jpl/src/c/classes/Elements/Element.h

    r24469 r24481  
    372372                #endif
    373373                #ifdef _HAVE_SEALEVELRISE_
    374                 virtual void UpdateStericRate(int dslmodel)=0;
    375                 virtual void UpdateDynamicRate(int dslmodel)=0;
    376374                virtual IssmDouble    GetArea3D(void)=0;
    377375                virtual IssmDouble    GetAreaSpherical(void)=0;
  • issm/trunk-jpl/src/c/classes/Elements/Penta.h

    r24469 r24481  
    210210                #endif
    211211                #ifdef _HAVE_SEALEVELRISE_
    212                 void UpdateDynamicRate(int dslmodel){_error_("not implemented yet!");};
    213                 void UpdateStericRate(int dslmodel){_error_("not implemented yet!");};
    214212                IssmDouble    OceanArea(void){_error_("not implemented yet!");};
    215213                IssmDouble    OceanAverage(IssmDouble* Sg){_error_("not implemented yet!");};
  • issm/trunk-jpl/src/c/classes/Elements/Seg.h

    r24469 r24481  
    171171#endif
    172172#ifdef _HAVE_SEALEVELRISE_
    173                 void UpdateDynamicRate(int dslmodel){_error_("not implemented yet!");};
    174                 void UpdateStericRate(int dslmodel){_error_("not implemented yet!");};
    175173                void    SealevelriseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old,IssmDouble eartharea){_error_("not implemented yet!");};
    176174                void    SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea){_error_("not implemented yet!");};
  • issm/trunk-jpl/src/c/classes/Elements/Tetra.h

    r24469 r24481  
    177177#endif
    178178#ifdef _HAVE_SEALEVELRISE_
    179                 void UpdateDynamicRate(int dslmodel){_error_("not implemented yet!");};
    180                 void UpdateStericRate(int dslmodel){_error_("not implemented yet!");};
    181179                void    SealevelriseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old,IssmDouble eartharea){_error_("not implemented yet!");};
    182180                void    SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea){_error_("not implemented yet!");};
  • issm/trunk-jpl/src/c/classes/Elements/Tria.cpp

    r24469 r24481  
    54365436#endif
    54375437#ifdef _HAVE_SEALEVELRISE_
    5438 void    Tria::UpdateDynamicRate(int dslmodel){ /*{{{*/
    5439 
    5440         if (dslmodel==1){
    5441                 //do nothing for now
    5442                 IssmDouble dslrate[3]={0,0,0};
    5443                 this->AddInput2(DslDynamicRateEnum,&dslrate[0],P1Enum);
    5444         }
    5445         else if (dslmodel==2){
    5446                 /*IssmDouble eof1[3],eof2[3],eof3[3],eof4[3];
    5447                 IssmDouble steric_rate[3];
    5448                 IssmDouble pc1,pc2,pc3,pc4;
    5449 
    5450                 Element::GetInputListOnVertices(&eof1[0],SealevelriseModeleoftrendEof1Enum);
    5451                 Element::GetInputListOnVertices(&eof2[0],SealevelriseModeleoftrendEof2Enum);
    5452                 Element::GetInputListOnVertices(&eof3[0],SealevelriseModeleoftrendEof3Enum);
    5453                 Element::GetInputListOnVertices(&eof4[0],SealevelriseModeleoftrendEof4Enum);
    5454 
    5455                 Element::GetInputValue(&pc1,SealevelriseModeleoftrendPc1Enum);
    5456                 Element::GetInputValue(&pc2,SealevelriseModeleoftrendPc2Enum);
    5457                 Element::GetInputValue(&pc3,SealevelriseModeleoftrendPc3Enum);
    5458                 Element::GetInputValue(&pc4,SealevelriseModeleoftrendPc4Enum);
    5459 
    5460                 for (int i=0;i<4;i++)steric_rate[i]=pc1*eof1[i]+pc2*eof2[i]+pc3*eof3[i]+pc4*eof4[i];
    5461 
    5462                 //upate input:
    5463                 this->AddInput2(SealevelriseStericRateEnum,&steric_rate[0],P1Enum);
    5464                 */
    5465 
    5466         }
    5467         else{
    5468                 _error_("dslmodel " << dslmodel  << " not supported yet!");
    5469         }
    5470 }
    5471 /*}}}*/
    5472 void    Tria::UpdateStericRate(int dslmodel){ /*{{{*/
    5473 
    5474         IssmDouble dslrate = 0;
    5475         IssmDouble time;
    5476         if (dslmodel==1){
    5477                 //grab value of GlobalAverageThermostericSeaLevelChange directly:
    5478                 this->parameters->FindParam(&time,TimeEnum);
    5479                 this->parameters->FindParam(&dslrate,DslGlobalAverageThermostericSeaLevelChangeEnum,time);
    5480                 this->AddInput2(DslStericRateEnum,&dslrate,P0Enum);
    5481         }
    5482         else if (dslmodel==2){
    5483                 /*IssmDouble eof1[3],eof2[3],eof3[3],eof4[3];
    5484                 IssmDouble steric_rate[3];
    5485                 IssmDouble pc1,pc2,pc3,pc4;
    5486 
    5487                 Element::GetInputListOnVertices(&eof1[0],SealevelriseModeleoftrendEof1Enum);
    5488                 Element::GetInputListOnVertices(&eof2[0],SealevelriseModeleoftrendEof2Enum);
    5489                 Element::GetInputListOnVertices(&eof3[0],SealevelriseModeleoftrendEof3Enum);
    5490                 Element::GetInputListOnVertices(&eof4[0],SealevelriseModeleoftrendEof4Enum);
    5491 
    5492                 Element::GetInputValue(&pc1,SealevelriseModeleoftrendPc1Enum);
    5493                 Element::GetInputValue(&pc2,SealevelriseModeleoftrendPc2Enum);
    5494                 Element::GetInputValue(&pc3,SealevelriseModeleoftrendPc3Enum);
    5495                 Element::GetInputValue(&pc4,SealevelriseModeleoftrendPc4Enum);
    5496 
    5497                 for (int i=0;i<4;i++)steric_rate[i]=pc1*eof1[i]+pc2*eof2[i]+pc3*eof3[i]+pc4*eof4[i];
    5498 
    5499                 //upate input:
    5500                 this->AddInput2(SealevelriseStericRateEnum,&steric_rate[0],P1Enum);
    5501                 */
    5502         }
    5503         else{
    5504                 _error_("dslmodel " << dslmodel  << " not supported yet!");
    5505         }
    5506 }
    5507 /*}}}*/
    55085438IssmDouble    Tria::OceanArea(void){ /*{{{*/
    55095439
  • issm/trunk-jpl/src/c/classes/Elements/Tria.h

    r24469 r24481  
    163163                #endif
    164164                #ifdef _HAVE_SEALEVELRISE_
    165                 void UpdateDynamicRate(int dslmodel);
    166                 void UpdateStericRate(int dslmodel);
    167165                IssmDouble OceanArea(void);
    168166                IssmDouble OceanAverage(IssmDouble* Sg);
  • issm/trunk-jpl/src/c/cores/sealevelrise_core.cpp

    r24469 r24481  
    66#include "../toolkits/toolkits.h"
    77#include "../classes/classes.h"
     8#include "../classes/Inputs2/TriaInput2.h"
     9#include "../classes/Inputs2/TransientInput2.h"
    810#include "../shared/shared.h"
    911#include "../modules/modules.h"
     
    565567void GetDynamicRate(Vector<IssmDouble> ** pdynamic_rate_g, FemModel* femmodel){ /*{{{*/
    566568
    567         int dslmodel=0;
     569        int dslmodel=-1;
     570        IssmDouble time;
    568571
    569572        /*variables:*/
    570573        Vector<IssmDouble> *dynamic_rate_g  = NULL;
    571574
    572         /*Update dynamic rates before retrieving them on Vertex SID set:*/
     575        /*Update steric rates before retrieving them on Vertex SID set:*/
    573576        femmodel->parameters->FindParam(&dslmodel,DslModelEnum);
    574 
    575         for(int el=0;el<femmodel->elements->Size();el++){
    576                 Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(el));
    577                 element->UpdateDynamicRate(dslmodel);
    578         }
     577        femmodel->parameters->FindParam(&time,TimeEnum);
     578        if(dslmodel==1){
     579                TransientInput2* transient_input  = femmodel->inputs2->GetTransientInput(DslSeaSurfaceHeightChangeAboveGeoidEnum);
     580                TriaInput2* tria_input=transient_input->GetTriaInput(time);
     581                Input2* tria_input_copy=tria_input->copy();
     582                tria_input_copy->ChangeEnum(DslDynamicRateEnum);
     583                femmodel->inputs2->AddInput(tria_input_copy);
     584        }
     585        else _error_("not implemented yet");
    579586
    580587        GetVectorFromInputsx(&dynamic_rate_g,femmodel,DslDynamicRateEnum,VertexSIdEnum);
     
    585592
    586593        int dslmodel=-1;
     594        IssmDouble time;
    587595
    588596        /*variables:*/
     
    591599        /*Update steric rates before retrieving them on Vertex SID set:*/
    592600        femmodel->parameters->FindParam(&dslmodel,DslModelEnum);
    593 
    594         for(int el=0;el<femmodel->elements->Size();el++){
    595                 Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(el));
    596                 element->UpdateStericRate(dslmodel);
    597         }
     601        femmodel->parameters->FindParam(&time,TimeEnum);
     602        if(dslmodel==1){
     603                TransientInput2* transient_input  = femmodel->inputs2->GetTransientInput(DslGlobalAverageThermostericSeaLevelChangeEnum);
     604                TriaInput2* tria_input=transient_input->GetTriaInput(time);
     605                Input2* tria_input_copy=tria_input->copy();
     606                tria_input_copy->ChangeEnum(DslStericRateEnum);
     607                femmodel->inputs2->AddInput(tria_input_copy);
     608        }
     609        else _error_("not implemented yet");
     610
    598611        GetVectorFromInputsx(&steric_rate_g,femmodel,DslStericRateEnum,VertexSIdEnum);
    599612        *psteric_rate_g=steric_rate_g;
  • issm/trunk-jpl/src/c/shared/Enum/Enum.vim

    r24479 r24481  
    129129syn keyword cConstant DomainDimensionEnum
    130130syn keyword cConstant DomainTypeEnum
    131 syn keyword cConstant DslGlobalAverageThermostericSeaLevelChangeEnum
    132131syn keyword cConstant DslModelEnum
    133132syn keyword cConstant EarthIdEnum
     
    521520syn keyword cConstant DrivingStressXEnum
    522521syn keyword cConstant DrivingStressYEnum
     522syn keyword cConstant DslGlobalAverageThermostericSeaLevelChangeEnum
    523523syn keyword cConstant DslSeaSurfaceHeightChangeAboveGeoidEnum
    524524syn keyword cConstant DslStericRateEnum
     
    13291329syn keyword cType Cfsurfacesquare
    13301330syn keyword cType Channel
    1331 syn keyword cType classes
    13321331syn keyword cType Constraint
    13331332syn keyword cType Constraints
     
    13361335syn keyword cType ControlInput2
    13371336syn keyword cType Covertree
     1337syn keyword cType DataSetParam
    13381338syn keyword cType DatasetInput2
    1339 syn keyword cType DataSetParam
    13401339syn keyword cType Definition
    13411340syn keyword cType DependentObject
     
    13491348syn keyword cType ElementInput2
    13501349syn keyword cType ElementMatrix
     1350syn keyword cType ElementVector
    13511351syn keyword cType Elements
    1352 syn keyword cType ElementVector
    13531352syn keyword cType ExponentialVariogram
    13541353syn keyword cType ExternalResult
     
    13571356syn keyword cType Friction
    13581357syn keyword cType Gauss
    1359 syn keyword cType GaussianVariogram
    1360 syn keyword cType gaussobjects
    13611358syn keyword cType GaussPenta
    13621359syn keyword cType GaussSeg
    13631360syn keyword cType GaussTetra
    13641361syn keyword cType GaussTria
     1362syn keyword cType GaussianVariogram
    13651363syn keyword cType GenericExternalResult
    13661364syn keyword cType GenericOption
     
    13771375syn keyword cType IssmDirectApplicInterface
    13781376syn keyword cType IssmParallelDirectApplicInterface
    1379 syn keyword cType krigingobjects
    13801377syn keyword cType Load
    13811378syn keyword cType Loads
     
    13881385syn keyword cType Matice
    13891386syn keyword cType Matlitho
    1390 syn keyword cType matrixobjects
    13911387syn keyword cType MatrixParam
    13921388syn keyword cType Misfit
     
    14011397syn keyword cType Observations
    14021398syn keyword cType Option
     1399syn keyword cType OptionUtilities
    14031400syn keyword cType Options
    1404 syn keyword cType OptionUtilities
    14051401syn keyword cType Param
    14061402syn keyword cType Parameters
     
    14161412syn keyword cType Regionaloutput
    14171413syn keyword cType Results
     1414syn keyword cType RiftStruct
    14181415syn keyword cType Riftfront
    1419 syn keyword cType RiftStruct
    14201416syn keyword cType Seg
    14211417syn keyword cType SegInput2
     1418syn keyword cType SegRef
    14221419syn keyword cType Segment
    1423 syn keyword cType SegRef
    14241420syn keyword cType SpcDynamic
    14251421syn keyword cType SpcStatic
     
    14401436syn keyword cType Vertex
    14411437syn keyword cType Vertices
     1438syn keyword cType classes
     1439syn keyword cType gaussobjects
     1440syn keyword cType krigingobjects
     1441syn keyword cType matrixobjects
    14421442syn keyword cType AdjointBalancethickness2Analysis
    14431443syn keyword cType AdjointBalancethicknessAnalysis
     
    14581458syn keyword cType FreeSurfaceBaseAnalysis
    14591459syn keyword cType FreeSurfaceTopAnalysis
     1460syn keyword cType GLheightadvectionAnalysis
    14601461syn keyword cType GiaIvinsAnalysis
    1461 syn keyword cType GLheightadvectionAnalysis
    14621462syn keyword cType HydrologyDCEfficientAnalysis
    14631463syn keyword cType HydrologyDCInefficientAnalysis
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r24479 r24481  
    123123        DomainDimensionEnum,
    124124        DomainTypeEnum,
    125         DslGlobalAverageThermostericSeaLevelChangeEnum,
    126125        DslModelEnum,
    127126        EarthIdEnum,
     
    517516        DrivingStressXEnum,
    518517        DrivingStressYEnum,
     518        DslGlobalAverageThermostericSeaLevelChangeEnum,
    519519        DslSeaSurfaceHeightChangeAboveGeoidEnum,
    520520        DslSeaWaterPressureChangeAtSeaFloor,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r24479 r24481  
    131131                case DomainDimensionEnum : return "DomainDimension";
    132132                case DomainTypeEnum : return "DomainType";
    133                 case DslGlobalAverageThermostericSeaLevelChangeEnum : return "DslGlobalAverageThermostericSeaLevelChange";
    134133                case DslModelEnum : return "DslModel";
    135134                case EarthIdEnum : return "EarthId";
     
    523522                case DrivingStressXEnum : return "DrivingStressX";
    524523                case DrivingStressYEnum : return "DrivingStressY";
     524                case DslGlobalAverageThermostericSeaLevelChangeEnum : return "DslGlobalAverageThermostericSeaLevelChange";
    525525                case DslSeaSurfaceHeightChangeAboveGeoidEnum : return "DslSeaSurfaceHeightChangeAboveGeoid";
    526526                case DslStericRateEnum : return "DslStericRate";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r24479 r24481  
    131131              else if (strcmp(name,"DomainDimension")==0) return DomainDimensionEnum;
    132132              else if (strcmp(name,"DomainType")==0) return DomainTypeEnum;
    133               else if (strcmp(name,"DslGlobalAverageThermostericSeaLevelChange")==0) return DslGlobalAverageThermostericSeaLevelChangeEnum;
    134133              else if (strcmp(name,"DslModel")==0) return DslModelEnum;
    135134              else if (strcmp(name,"EarthId")==0) return EarthIdEnum;
     
    137136              else if (strcmp(name,"EsaHElastic")==0) return EsaHElasticEnum;
    138137              else if (strcmp(name,"EsaHemisphere")==0) return EsaHemisphereEnum;
     138              else if (strcmp(name,"EsaRequestedOutputs")==0) return EsaRequestedOutputsEnum;
    139139         else stage=2;
    140140   }
    141141   if(stage==2){
    142               if (strcmp(name,"EsaRequestedOutputs")==0) return EsaRequestedOutputsEnum;
    143               else if (strcmp(name,"EsaUElastic")==0) return EsaUElasticEnum;
     142              if (strcmp(name,"EsaUElastic")==0) return EsaUElasticEnum;
    144143              else if (strcmp(name,"ExtrapolationVariable")==0) return ExtrapolationVariableEnum;
    145144              else if (strcmp(name,"FemModelComm")==0) return FemModelCommEnum;
     
    260259              else if (strcmp(name,"MaterialsLithosphereShearModulus")==0) return MaterialsLithosphereShearModulusEnum;
    261260              else if (strcmp(name,"MaterialsMantleDensity")==0) return MaterialsMantleDensityEnum;
     261              else if (strcmp(name,"MaterialsMantleShearModulus")==0) return MaterialsMantleShearModulusEnum;
    262262         else stage=3;
    263263   }
    264264   if(stage==3){
    265               if (strcmp(name,"MaterialsMantleShearModulus")==0) return MaterialsMantleShearModulusEnum;
    266               else if (strcmp(name,"MaterialsMeltingpoint")==0) return MaterialsMeltingpointEnum;
     265              if (strcmp(name,"MaterialsMeltingpoint")==0) return MaterialsMeltingpointEnum;
    267266              else if (strcmp(name,"MaterialsMixedLayerCapacity")==0) return MaterialsMixedLayerCapacityEnum;
    268267              else if (strcmp(name,"MaterialsMuWater")==0) return MaterialsMuWaterEnum;
     
    383382              else if (strcmp(name,"SmbRunoffref")==0) return SmbRunoffrefEnum;
    384383              else if (strcmp(name,"SmbSealev")==0) return SmbSealevEnum;
     384              else if (strcmp(name,"SmbStepsPerStep")==0) return SmbStepsPerStepEnum;
    385385         else stage=4;
    386386   }
    387387   if(stage==4){
    388               if (strcmp(name,"SmbStepsPerStep")==0) return SmbStepsPerStepEnum;
    389               else if (strcmp(name,"SmbSwIdx")==0) return SmbSwIdxEnum;
     388              if (strcmp(name,"SmbSwIdx")==0) return SmbSwIdxEnum;
    390389              else if (strcmp(name,"SmbT0dry")==0) return SmbT0dryEnum;
    391390              else if (strcmp(name,"SmbT0wet")==0) return SmbT0wetEnum;
     
    506505              else if (strcmp(name,"CalvingFluxLevelset")==0) return CalvingFluxLevelsetEnum;
    507506              else if (strcmp(name,"CalvingMeltingFluxLevelset")==0) return CalvingMeltingFluxLevelsetEnum;
     507              else if (strcmp(name,"Converged")==0) return ConvergedEnum;
    508508         else stage=5;
    509509   }
    510510   if(stage==5){
    511               if (strcmp(name,"Converged")==0) return ConvergedEnum;
    512               else if (strcmp(name,"CrevasseDepth")==0) return CrevasseDepthEnum;
     511              if (strcmp(name,"CrevasseDepth")==0) return CrevasseDepthEnum;
    513512              else if (strcmp(name,"DamageD")==0) return DamageDEnum;
    514513              else if (strcmp(name,"DamageDOld")==0) return DamageDOldEnum;
     
    535534              else if (strcmp(name,"DrivingStressX")==0) return DrivingStressXEnum;
    536535              else if (strcmp(name,"DrivingStressY")==0) return DrivingStressYEnum;
     536              else if (strcmp(name,"DslGlobalAverageThermostericSeaLevelChange")==0) return DslGlobalAverageThermostericSeaLevelChangeEnum;
    537537              else if (strcmp(name,"DslSeaSurfaceHeightChangeAboveGeoid")==0) return DslSeaSurfaceHeightChangeAboveGeoidEnum;
    538538              else if (strcmp(name,"DslStericRate")==0) return DslStericRateEnum;
  • issm/trunk-jpl/src/m/classes/dsl.m

    r24469 r24481  
    99                global_average_thermosteric_sea_level_change; %corresponds to zostoga field in CMIP5 archives. Specified as a temporally variable global rate (mm/yr)
    1010                sea_surface_height_change_above_geoid; %corresponds to zos field in CMIP5 archives. Spatial average is 0. Specified as a spatio-temporally variable rate (mm/yr)
    11                 sea_water_pressure_change_at_sea_floor; %corresponds to bpo field in CMIP5 archives. Specified as a spatio-temporally variable rate (in Pa/yr)
     11                sea_water_pressure_change_at_sea_floor; %corresponds to bpo field in CMIP5 archives. Specified as a spatio-temporally variable rate (in mm/yr equivalent, not in Pa/yr!) for each ensemble
    1212
    1313        end
     
    3838                        %Early return
    3939                        if ~ismember('SealevelriseAnalysis',analyses), return; end
     40                        md = checkfield(md,'fieldname','dsl.global_average_thermosteric_sea_level_change','NaN',1,'Inf',1);
    4041                        md = checkfield(md,'fieldname','dsl.sea_surface_height_change_above_geoid','NaN',1,'Inf',1,'timeseries',1);
    4142                        md = checkfield(md,'fieldname','dsl.sea_water_pressure_change_at_sea_floor','NaN',1,'Inf',1,'timeseries',1);
     
    5354
    5455                        WriteData(fid,prefix,'name','md.dsl.model','data',1,'format','Integer');
    55                         WriteData(fid,prefix,'object',self,'fieldname','global_average_thermosteric_sea_level_change','format','DoubleMat','mattype',1,'timeserieslength',1+1,'yts',md.constants.yts,'scale',1e-3/md.constants.yts);
     56                        WriteData(fid,prefix,'object',self,'fieldname','global_average_thermosteric_sea_level_change','format','DoubleMat','mattype',1,'timeseries',1,'timeserieslength',2,'yts',md.constants.yts,'scale',1e-3/md.constants.yts);
    5657                        WriteData(fid,prefix,'object',self,'fieldname','sea_water_pressure_change_at_sea_floor','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1e-3/md.constants.yts);
    57                         WriteData(fid,prefix,'object',self,'fieldname','sea_surface_height_change_above_geoid','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
     58                        WriteData(fid,prefix,'object',self,'fieldname','sea_surface_height_change_above_geoid','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1e-3/md.constants.yts);
    5859
    5960                end % }}}
Note: See TracChangeset for help on using the changeset viewer.