Changeset 21752


Ignore:
Timestamp:
06/01/17 15:40:48 (8 years ago)
Author:
Eric.Larour
Message:

CHG: introduce steric rate in the SLR solution.

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

Legend:

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

    r21742 r21752  
    3636        iomodel->FetchDataToInput(elements,"md.slr.deltathickness",SealevelriseDeltathicknessEnum);
    3737        iomodel->FetchDataToInput(elements,"md.slr.sealevel",SealevelEnum,0);
     38        iomodel->FetchDataToInput(elements,"md.slr.steric_rate",SealevelriseStericRateEnum);
    3839
    3940}/*}}}*/
  • TabularUnified issm/trunk-jpl/src/c/cores/sealevelrise_core.cpp

    r21226 r21752  
    1515        Vector<IssmDouble> *Sg_absolute  = NULL;
    1616        Vector<IssmDouble> *Sg_eustatic  = NULL;
     17        Vector<IssmDouble> *steric_rate_g  = NULL;
    1718        Vector<IssmDouble> *U_radial  = NULL;
    1819        Vector<IssmDouble> *U_north   = NULL;
     
    3334        IssmDouble          *yy     = NULL;
    3435        IssmDouble          *zz     = NULL;
     36        IssmDouble          dt;
    3537
    3638        /*Recover some parameters: */
     
    4042        femmodel->parameters->FindParam(&isslr,TransientIsslrEnum);
    4143        femmodel->parameters->FindParam(&iscoupler,TransientIscouplerEnum);
    42 
     44       
    4345        /*first, recover lat,long and radius vectors from vertices: */
    4446        VertexCoordinatesx(&latitude,&longitude,&radius,femmodel->vertices,spherical);
     
    8082
    8183                Sg=sealevelrise_core_noneustatic(femmodel,Sg_eustatic); //ocean loading tems  (2nd and 5th terms on the RHS of Farrel and Clark)
    82                
    83                 /*get results into elements:*/
    84                 //InputUpdateFromSolutionx(femmodel,Sg);                // from Eric
    85                 InputUpdateFromVectorx(femmodel,Sg,SealevelEnum,VertexSIdEnum);
    86 
     84
     85                               
     86       
    8787                /*compute other geodetic signatures, such as absolute sea level chagne, components of 3-D crustal motion: */
    8888                /*Initialize:*/
     
    9595                femmodel->SealevelriseGeodetic(U_radial,U_north,U_east,Sg,latitude,longitude,radius,xx,yy,zz);
    9696
     97                /*Now deal with steric ocean expansion by just shifting Sg by a spatial rate pattern : */
     98                femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
     99                GetVectorFromInputsx(&steric_rate_g,femmodel,SealevelriseStericRateEnum,VertexPIdEnum);
     100                Sg->AXPY(steric_rate_g,dt);
     101               
    97102                /*compute: absolute sea level change = relative sea level change + vertical motion*/
    98103                Sg->Copy(Sg_absolute); Sg_absolute->AXPY(U_radial,1);
     
    102107                InputUpdateFromVectorx(femmodel,U_north,SealevelNmotionEnum,VertexSIdEnum);     // north motion
    103108                InputUpdateFromVectorx(femmodel,U_east,SealevelEmotionEnum,VertexSIdEnum);              // east motion
    104                 InputUpdateFromVectorx(femmodel,Sg_absolute,SealevelAbsoluteEnum,VertexSIdEnum);
     109                InputUpdateFromVectorx(femmodel,Sg_absolute,SealevelAbsoluteEnum,VertexSIdEnum); //absolute sea level
     110                InputUpdateFromVectorx(femmodel,Sg,SealevelEnum,VertexSIdEnum); //relative sea level
    105111               
    106112                if(save_results){
     
    119125                delete U_east;
    120126                delete Sg_absolute;
     127                delete steric_rate_g;
    121128                if(numoutputs){for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);}
    122129        }
  • TabularUnified issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r21738 r21752  
    803803        SealevelriseAngularVelocityEnum,
    804804        SealevelriseOceanAreaScalingEnum,
     805        SealevelriseStericRateEnum,
    805806        SealevelriseGElasticEnum,
    806807        SealevelriseUElasticEnum,
  • TabularUnified issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r21738 r21752  
    783783                case SealevelriseAngularVelocityEnum : return "SealevelriseAngularVelocity";
    784784                case SealevelriseOceanAreaScalingEnum : return "SealevelriseOceanAreaScaling";
     785                case SealevelriseStericRateEnum : return "SealevelriseStericRate";
    785786                case SealevelriseGElasticEnum : return "SealevelriseGElastic";
    786787                case SealevelriseUElasticEnum : return "SealevelriseUElastic";
  • TabularUnified issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r21738 r21752  
    801801              else if (strcmp(name,"SealevelriseAngularVelocity")==0) return SealevelriseAngularVelocityEnum;
    802802              else if (strcmp(name,"SealevelriseOceanAreaScaling")==0) return SealevelriseOceanAreaScalingEnum;
     803              else if (strcmp(name,"SealevelriseStericRate")==0) return SealevelriseStericRateEnum;
    803804              else if (strcmp(name,"SealevelriseGElastic")==0) return SealevelriseGElasticEnum;
    804805              else if (strcmp(name,"SealevelriseUElastic")==0) return SealevelriseUElasticEnum;
     
    874875              else if (strcmp(name,"SpcDynamic")==0) return SpcDynamicEnum;
    875876              else if (strcmp(name,"SpcStatic")==0) return SpcStaticEnum;
    876               else if (strcmp(name,"SpcTransient")==0) return SpcTransientEnum;
    877877         else stage=8;
    878878   }
    879879   if(stage==8){
    880               if (strcmp(name,"StringArrayParam")==0) return StringArrayParamEnum;
     880              if (strcmp(name,"SpcTransient")==0) return SpcTransientEnum;
     881              else if (strcmp(name,"StringArrayParam")==0) return StringArrayParamEnum;
    881882              else if (strcmp(name,"StringParam")==0) return StringParamEnum;
    882883              else if (strcmp(name,"Seg")==0) return SegEnum;
     
    997998              else if (strcmp(name,"P1xP3")==0) return P1xP3Enum;
    998999              else if (strcmp(name,"P2xP4")==0) return P2xP4Enum;
    999               else if (strcmp(name,"P1P1")==0) return P1P1Enum;
    10001000         else stage=9;
    10011001   }
    10021002   if(stage==9){
    1003               if (strcmp(name,"P1P1GLS")==0) return P1P1GLSEnum;
     1003              if (strcmp(name,"P1P1")==0) return P1P1Enum;
     1004              else if (strcmp(name,"P1P1GLS")==0) return P1P1GLSEnum;
    10041005              else if (strcmp(name,"MINI")==0) return MINIEnum;
    10051006              else if (strcmp(name,"MINIcondensed")==0) return MINIcondensedEnum;
  • TabularUnified issm/trunk-jpl/src/m/classes/slr.m

    r21530 r21752  
    2424                rotation       = 0;
    2525                ocean_area_scaling = 0;
     26                steric_rate    = 0; %rate of ocean expansion from steric effects.
    2627                degacc         = 0;
    2728                requested_outputs      = {};
     
    6869                %numerical discretization accuracy
    6970                self.degacc=.01;
    70                
     71
     72                %steric:
     73                self.steric_rate=0;
     74       
     75       
    7176                %output default:
    7277                self.requested_outputs={'default'};
     
    9398                        md = checkfield(md,'fieldname','slr.abstol','size',[1 1]);
    9499                        md = checkfield(md,'fieldname','slr.maxiter','size',[1 1],'>=',1);
     100                        md = checkfield(md,'fieldname','slr.steric_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
    95101                        md = checkfield(md,'fieldname','slr.degacc','size',[1 1],'>=',1e-10);
    96102                        md = checkfield(md,'fieldname','slr.requested_outputs','stringrow',1);
     
    134140                        fielddisplay(self,'rotation','earth rotational potential perturbation');
    135141                        fielddisplay(self,'ocean_area_scaling','correction for model representation of ocean area [default: No correction]');
     142                        fielddisplay(self,'steric_rate','rate of steric ocean expansion (in mm/yr)');
    136143                        fielddisplay(self,'degacc','accuracy (default .01 deg) for numerical discretization of the Green''s functions');
    137144                        fielddisplay(self,'transitions','indices into parts of the mesh that will be icecaps');
     
    159166                        WriteData(fid,prefix,'object',self,'fieldname','rotation','format','Boolean');
    160167                        WriteData(fid,prefix,'object',self,'fieldname','ocean_area_scaling','format','Boolean');
     168                        WriteData(fid,prefix,'object',self,'fieldname','steric_rate','format','DoubleMat','mattype',1,'scale',1e-3/md.constants.yts);
    161169                        WriteData(fid,prefix,'object',self,'fieldname','degacc','format','Double');
    162170                        WriteData(fid,prefix,'object',self,'fieldname','transitions','format','MatArray');
     
    192200                        writejsdouble(fid,[modelname '.slr.rotation'],self.rotation);
    193201                        writejsdouble(fid,[modelname '.slr.ocean_area_scaling'],self.ocean_area_scaling);
     202                        writejs1Darray(fid,[modelname '.slr.steric_rate'],self.steric_rate);
    194203                        writejsdouble(fid,[modelname '.slr.degacc'],self.degacc);
    195204                        writejscellstring(fid,[modelname '.slr.requested_outputs'],self.requested_outputs);
Note: See TracChangeset for help on using the changeset viewer.