Changeset 8399


Ignore:
Timestamp:
05/23/11 18:46:37 (14 years ago)
Author:
schlegel
Message:

change accumulation rate to surface mass balance; introduce surface ablation and surface accumulation

Location:
issm/trunk
Files:
3 added
1 deleted
40 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/examples/Bumps/Bump1_surface_bed/Square.par

    r8394 r8399  
    6868        md.rheology_n=3*ones(md.numberofelements,1);
    6969
    70         disp('      creating accumulation rates');
    71         md.accumulation_rate=ones(md.numberofgrids,1)/md.yts; %1m/a
     70        disp('      creating surface mass balance');
     71        md.surface_mass_balance=ones(md.numberofgrids,1)/md.yts; %1m/a
    7272        md.basal_melting_rate=0*ones(md.numberofgrids,1)/md.yts; %1m/a
    7373
  • issm/trunk/examples/Bumps/Bump1_surface_bed/runme.m

    r8392 r8399  
    1212        md.vx=PatchToVec(md.results.DiagnosticSolution.Vx);
    1313        md.vy=PatchToVec(md.results.DiagnosticSolution.Vy);
    14         md.accumulation_rate(:)=0;
     14        md.surface_mass_balance(:)=0;
    1515        md.basal_melting_rate(:)=0;
    1616        md.thickness(:)=1;
  • issm/trunk/examples/SquareIceShelf/runme.m

    r8364 r8399  
    66md.dt=1;
    77md.ndt=3;
    8 md.forcings.AccumulationRate=[ones(md.numberofnodes,1),2*ones(md.numberofnodes,1),3*ones(md.numberofnodes,1)];
    9 md.forcings.AccumulationRate(end+1,:)=[1.5 2.5 5.5]*md.yts;
    10 md.forcings.MeltingRate=md.forcings.AccumulationRate;
     8md.forcings.surface_mass_balance=[ones(md.numberofnodes,1),2*ones(md.numberofnodes,1),3*ones(md.numberofnodes,1)];
     9md.forcings.surface_mass_balance(end+1,:)=[1.5 2.5 5.5]*md.yts;
     10md.forcings.basal_melting_rate=md.forcings.surface_mass_balance;
    1111md=solve(md,Transient2DSolutionEnum);
  • issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h

    r8392 r8399  
    175175        /*}}}*/
    176176        /*Inputs {{{1*/
    177         AccumulationRateEnum,
    178177        AdjointxEnum,
    179178        AdjointyEnum,
     
    247246        StabilizeConstraintsEnum,
    248247        StokesReconditioningEnum,
     248   SurfaceAccumulationRateEnum,
     249        SurfaceAblationRateEnum,
    249250        SurfaceAreaEnum,
    250251        SurfaceEnum,
     252        SurfaceMassBalanceEnum,
    251253        SurfaceSlopeXEnum,
    252254        SurfaceSlopeYEnum,
  • issm/trunk/src/c/EnumDefinitions/EnumToModelField.cpp

    r8392 r8399  
    2323                case VyObsEnum : return "vy_obs";
    2424                case GroundingLineMigrationEnum : return "gl_migration";
    25                 case AccumulationRateEnum: return "accumulation_rate";
    2625                case BasalMeltingRateEnum: return "basal_melting_rate";
     26      case SurfaceAccumulationRateEnum: return "surface_accumulation_rate";
     27                case SurfaceAblationRateEnum: return "surface_ablation_rate";
     28                case SurfaceMassBalanceEnum: return "surface_mass_balance";
    2729                default : _error_("No model field is associated to enum %s",EnumToStringx(en));
    2830        }
  • issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp

    r8392 r8399  
    143143                case OpenEnum : return "Open";
    144144                case ClosedEnum : return "Closed";
    145                 case AccumulationRateEnum : return "AccumulationRate";
    146145                case AdjointxEnum : return "Adjointx";
    147146                case AdjointyEnum : return "Adjointy";
     
    215214                case StabilizeConstraintsEnum : return "StabilizeConstraints";
    216215                case StokesReconditioningEnum : return "StokesReconditioning";
     216                case SurfaceAccumulationRateEnum : return "SurfaceAccumulationRate";
     217                case SurfaceAblationRateEnum : return "SurfaceAblationRate";
    217218                case SurfaceAreaEnum : return "SurfaceArea";
    218219                case SurfaceEnum : return "Surface";
     220                case SurfaceMassBalanceEnum : return "SurfaceMassBalance";
    219221                case SurfaceSlopeXEnum : return "SurfaceSlopeX";
    220222                case SurfaceSlopeYEnum : return "SurfaceSlopeY";
  • issm/trunk/src/c/modules/ModelProcessorx/Balancethickness/UpdateElementsBalancethickness.cpp

    r8392 r8399  
    3030        IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy");
    3131        IoModelFetchData(&iomodel->basal_melting_rate,NULL,NULL,iomodel_handle,"basal_melting_rate");
    32         IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate");
     32   IoModelFetchData(&iomodel->surface_accumulation_rate,NULL,NULL,iomodel_handle,"surface_accumulation_rate");
     33        IoModelFetchData(&iomodel->surface_ablation_rate,NULL,NULL,iomodel_handle,"surface_ablation_rate");
     34        IoModelFetchData(&iomodel->surface_mass_balance,NULL,NULL,iomodel_handle,"surface_mass_balance");
    3335        IoModelFetchData(&iomodel->dhdt,NULL,NULL,iomodel_handle,"dhdt");
    3436        if (iomodel->dim==3){
     
    5961        xfree((void**)&iomodel->vy);
    6062        xfree((void**)&iomodel->basal_melting_rate);
    61         xfree((void**)&iomodel->accumulation_rate);
     63   xfree((void**)&iomodel->surface_accumulation_rate);
     64        xfree((void**)&iomodel->surface_ablation_rate);
     65        xfree((void**)&iomodel->surface_mass_balance);
    6266}
  • issm/trunk/src/c/modules/ModelProcessorx/Balancevelocities/UpdateElementsBalancevelocities.cpp

    r8392 r8399  
    3030        IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy");
    3131        IoModelFetchData(&iomodel->basal_melting_rate,NULL,NULL,iomodel_handle,"basal_melting_rate");
    32         IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate");
     32        IoModelFetchData(&iomodel->surface_accumulation_rate,NULL,NULL,iomodel_handle,"surface_accumulation_rate");
     33        IoModelFetchData(&iomodel->surface_ablation_rate,NULL,NULL,iomodel_handle,"surface_ablation_rate");
     34        IoModelFetchData(&iomodel->surface_mass_balance,NULL,NULL,iomodel_handle,"surface_mass_balance");
    3335
    3436        if (iomodel->dim==3){
     
    6062        xfree((void**)&iomodel->vz);
    6163        xfree((void**)&iomodel->basal_melting_rate);
    62         xfree((void**)&iomodel->accumulation_rate);
     64        xfree((void**)&iomodel->surface_accumulation_rate);
     65        xfree((void**)&iomodel->surface_ablation_rate);
     66        xfree((void**)&iomodel->surface_mass_balance);
    6367}
  • issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp

    r8392 r8399  
    4545                IoModelFetchData(&iomodel->elementonsurface,NULL,NULL,iomodel_handle,"elementonsurface");
    4646                IoModelFetchData(&iomodel->vz,NULL,NULL,iomodel_handle,"vz");
    47                 IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate");
     47                IoModelFetchData(&iomodel->surface_accumulation_rate,NULL,NULL,iomodel_handle,"surface_accumulation_rate");
     48                IoModelFetchData(&iomodel->surface_ablation_rate,NULL,NULL,iomodel_handle,"surface_ablation_rate");
     49                IoModelFetchData(&iomodel->surface_mass_balance,NULL,NULL,iomodel_handle,"surface_mass_balance");
    4850                IoModelFetchData(&iomodel->basal_melting_rate,NULL,NULL,iomodel_handle,"basal_melting_rate");
    4951                IoModelFetchData(&iomodel->nodeonstokes,NULL,NULL,iomodel_handle,"nodeonstokes");
     
    8183        xfree((void**)&iomodel->elementonsurface);
    8284        xfree((void**)&iomodel->elementonwater);
    83         xfree((void**)&iomodel->accumulation_rate);
     85   xfree((void**)&iomodel->surface_accumulation_rate);
     86        xfree((void**)&iomodel->surface_ablation_rate);
     87        xfree((void**)&iomodel->surface_mass_balance);
    8488        xfree((void**)&iomodel->basal_melting_rate);
    8589        xfree((void**)&iomodel->nodeonstokes);
  • issm/trunk/src/c/modules/ModelProcessorx/DiagnosticVert/UpdateElementsDiagnosticVert.cpp

    r8392 r8399  
    3434        IoModelFetchData(&iomodel->elementonwater,NULL,NULL,iomodel_handle,"elementonwater");
    3535        IoModelFetchData(&iomodel->basal_melting_rate,NULL,NULL,iomodel_handle,"basal_melting_rate");
    36         IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate");
     36        IoModelFetchData(&iomodel->surface_accumulation_rate,NULL,NULL,iomodel_handle,"surface_accumulation_rate");
     37        IoModelFetchData(&iomodel->surface_ablation_rate,NULL,NULL,iomodel_handle,"surface_ablation_rate");
     38        IoModelFetchData(&iomodel->surface_mass_balance,NULL,NULL,iomodel_handle,"surface_mass_balance");
    3739        IoModelFetchData(&iomodel->vx,NULL,NULL,iomodel_handle,"vx");
    3840        IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy");
     
    6062        xfree((void**)&iomodel->elementonwater);
    6163        xfree((void**)&iomodel->basal_melting_rate);
    62         xfree((void**)&iomodel->accumulation_rate);
     64        xfree((void**)&iomodel->surface_accumulation_rate);
     65        xfree((void**)&iomodel->surface_ablation_rate);
     66        xfree((void**)&iomodel->surface_mass_balance);
    6367        xfree((void**)&iomodel->vx);
    6468        xfree((void**)&iomodel->vy);
  • issm/trunk/src/c/modules/ModelProcessorx/Melting/UpdateElementsMelting.cpp

    r8392 r8399  
    3838        IoModelFetchData(&iomodel->rheology_B,NULL,NULL,iomodel_handle,"rheology_B");
    3939        IoModelFetchData(&iomodel->rheology_n,NULL,NULL,iomodel_handle,"rheology_n");
    40         IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate");
     40   IoModelFetchData(&iomodel->surface_accumulation_rate,NULL,NULL,iomodel_handle,"surface_accumulation_rate");
     41        IoModelFetchData(&iomodel->surface_ablation_rate,NULL,NULL,iomodel_handle,"surface_ablation_rate");
     42        IoModelFetchData(&iomodel->surface_mass_balance,NULL,NULL,iomodel_handle,"surface_mass_balance");
    4143        IoModelFetchData(&iomodel->basal_melting_rate,NULL,NULL,iomodel_handle,"basal_melting_rate");
    4244        IoModelFetchData(&iomodel->pressure,NULL,NULL,iomodel_handle,"pressure");
     
    6870        xfree((void**)&iomodel->rheology_B);
    6971        xfree((void**)&iomodel->rheology_n);
    70         xfree((void**)&iomodel->accumulation_rate);
    7172        xfree((void**)&iomodel->basal_melting_rate);
     73   xfree((void**)&iomodel->surface_accumulation_rate);
     74        xfree((void**)&iomodel->surface_ablation_rate);
     75        xfree((void**)&iomodel->surface_mass_balance);
    7276        xfree((void**)&iomodel->pressure);
    7377}
  • issm/trunk/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp

    r8392 r8399  
    2727        IoModelFetchData(&iomodel->elementoniceshelf,NULL,NULL,iomodel_handle,"elementoniceshelf");
    2828        IoModelFetchData(&iomodel->elementonwater,NULL,NULL,iomodel_handle,"elementonwater");
    29         IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate");
     29   IoModelFetchData(&iomodel->surface_accumulation_rate,NULL,NULL,iomodel_handle,"surface_accumulation_rate");
     30        IoModelFetchData(&iomodel->surface_ablation_rate,NULL,NULL,iomodel_handle,"surface_ablation_rate");
     31        IoModelFetchData(&iomodel->surface_mass_balance,NULL,NULL,iomodel_handle,"surface_mass_balance");
    3032        IoModelFetchData(&iomodel->basal_melting_rate,NULL,NULL,iomodel_handle,"basal_melting_rate");
    3133        if(iomodel->basal_melting_rate_correction_apply)IoModelFetchData(&iomodel->basal_melting_rate_correction,NULL,NULL,iomodel_handle,"basal_melting_rate_correction");
     
    5961        xfree((void**)&iomodel->elementonsurface);
    6062        xfree((void**)&iomodel->elementonwater);
    61         xfree((void**)&iomodel->accumulation_rate);
     63   xfree((void**)&iomodel->surface_accumulation_rate);
     64        xfree((void**)&iomodel->surface_ablation_rate);
     65        xfree((void**)&iomodel->surface_mass_balance);
    6266        xfree((void**)&iomodel->basal_melting_rate);
    6367        xfree((void**)&iomodel->basal_melting_rate_correction);
  • issm/trunk/src/c/modules/ModelProcessorx/Transient/UpdateElementsTransient.cpp

    r8371 r8399  
    4949
    5050                        /*we now have the forcing for the corresponding time step, for all the nodes. Use this
    51                          *to write over the existing accumulation input: */
     51                         *to write over the existing smb input: */
    5252                        counter=0;
    5353                        for (k=0;k<iomodel->numberofelements;k++){
  • issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp

    r8392 r8399  
    141141        else if (strcmp(name,"Open")==0) return OpenEnum;
    142142        else if (strcmp(name,"Closed")==0) return ClosedEnum;
    143         else if (strcmp(name,"AccumulationRate")==0) return AccumulationRateEnum;
    144143        else if (strcmp(name,"Adjointx")==0) return AdjointxEnum;
    145144        else if (strcmp(name,"Adjointy")==0) return AdjointyEnum;
     
    213212        else if (strcmp(name,"StabilizeConstraints")==0) return StabilizeConstraintsEnum;
    214213        else if (strcmp(name,"StokesReconditioning")==0) return StokesReconditioningEnum;
     214        else if (strcmp(name,"SurfaceAccumulationRate")==0) return SurfaceAccumulationRateEnum;
     215        else if (strcmp(name,"SurfaceAblationRate")==0) return SurfaceAblationRateEnum;
    215216        else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum;
    216217        else if (strcmp(name,"Surface")==0) return SurfaceEnum;
     218        else if (strcmp(name,"SurfaceMassBalance")==0) return SurfaceMassBalanceEnum;
    217219        else if (strcmp(name,"SurfaceSlopeX")==0) return SurfaceSlopeXEnum;
    218220        else if (strcmp(name,"SurfaceSlopeY")==0) return SurfaceSlopeYEnum;
  • issm/trunk/src/c/objects/Elements/Penta.cpp

    r8392 r8399  
    40074007                this->inputs->AddInput(new PentaVertexInput(BasalMeltingRateEnum,nodeinputs));
    40084008        }
    4009         if (iomodel->accumulation_rate) {
    4010                 for(i=0;i<6;i++)nodeinputs[i]=iomodel->accumulation_rate[penta_vertex_ids[i]-1]/iomodel->yts;
    4011                 this->inputs->AddInput(new PentaVertexInput(AccumulationRateEnum,nodeinputs));
     4009        if (iomodel->surface_accumulation_rate) {
     4010                for(i=0;i<6;i++)nodeinputs[i]=iomodel->surface_accumulation_rate[penta_vertex_ids[i]-1]/iomodel->yts;
     4011                this->inputs->AddInput(new PentaVertexInput(SurfaceAccumulationRateEnum,nodeinputs));
     4012        }
     4013        if (iomodel->surface_ablation_rate) {
     4014                for(i=0;i<6;i++)nodeinputs[i]=iomodel->surface_ablation_rate[penta_vertex_ids[i]-1]/iomodel->yts;
     4015                this->inputs->AddInput(new PentaVertexInput(SurfaceAblationRateEnum,nodeinputs));
     4016        }
     4017        if (iomodel->surface_mass_balance) {
     4018                for(i=0;i<6;i++)nodeinputs[i]=iomodel->surface_mass_balance[penta_vertex_ids[i]-1]/iomodel->yts;
     4019                this->inputs->AddInput(new PentaVertexInput(SurfaceMassBalanceEnum,nodeinputs));
    40124020        }
    40134021        if (iomodel->geothermalflux) {
     
    53075315                                name==SurfaceSlopeYEnum ||
    53085316                                name==BasalMeltingRateEnum ||
    5309                                 name==AccumulationRateEnum ||
     5317                                name==SurfaceMassBalanceEnum ||
    53105318                                name==GeothermalFluxEnum ||
    53115319                                name==SurfaceAreaEnum||
     
    62856293
    62866294        if(step==0){
    6287                 /*This is the first time we are trying to replace the accumulation penta vertex input by an accumulation pentav vertex
    6288                  *forcing, which is essentially a penta vertex input that can vary with time. So firt, if there is already
     6295                /*This is the first time we are trying to replace the smb penta vertex input by a smb pentav vertex
     6296                 *forcing, which is essentially a penta vertex input that can vary with time. So first, if there is already
    62896297                 an input with enum FieldEnum, squash it: */
    62906298                this->inputs->AddInput(new PentaVertexForcing(FieldEnum,nodeinputs,time,iomodel->forcing_numtimesteps,this->parameters));
  • issm/trunk/src/c/objects/Elements/Tria.cpp

    r8392 r8399  
    16611661        int        i,j,ig;
    16621662        double     xyz_list[NUMVERTICES][3];
    1663         double     dhdt_g,melting_g,accumulation_g,Jdettria;
     1663        double     dhdt_g,basal_melting_g,surface_mass_balance_g,Jdettria;
    16641664        double     L[NUMVERTICES];
    16651665        GaussTria* gauss=NULL;
     
    16701670        /*Retrieve all inputs and parameters*/
    16711671        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    1672         Input* accumulation_input=inputs->GetInput(AccumulationRateEnum); _assert_(accumulation_input);
    1673         Input* melting_input=inputs->GetInput(BasalMeltingRateEnum);           _assert_(melting_input);
     1672        Input* surface_mass_balance_input=inputs->GetInput(SurfaceMassBalanceEnum); _assert_(surface_mass_balance_input);
     1673        Input* basal_melting_input=inputs->GetInput(BasalMeltingRateEnum);           _assert_(basal_melting_input);
    16741674        Input* dhdt_input=inputs->GetInput(DhDtEnum);                     _assert_(dhdt_input);
    16751675       
     
    16801680                gauss->GaussPoint(ig);
    16811681
    1682                 accumulation_input->GetParameterValue(&accumulation_g,gauss);
    1683                 melting_input->GetParameterValue(&melting_g,gauss);
     1682                surface_mass_balance_input->GetParameterValue(&surface_mass_balance_g,gauss);
     1683                basal_melting_input->GetParameterValue(&basal_melting_g,gauss);
    16841684                dhdt_input->GetParameterValue(&dhdt_g,gauss);
    16851685
     
    16871687                GetL(&L[0], &xyz_list[0][0], gauss,NDOF1);
    16881688
    1689                 for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(accumulation_g-melting_g-dhdt_g)*L[i];
     1689                for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(surface_mass_balance_g-basal_melting_g-dhdt_g)*L[i];
    16901690        }
    16911691
     
    17041704        int        i,j,ig;
    17051705        double     xyz_list[NUMVERTICES][3];
    1706         double     melting_g,accumulation_g,dhdt_g,Jdettria;
     1706        double     basal_melting_g,surface_mass_balance_g,dhdt_g,Jdettria;
    17071707        double     L[NUMVERTICES];
    17081708        GaussTria* gauss=NULL;
     
    17131713        /*Retrieve all inputs and parameters*/
    17141714        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    1715         Input* accumulation_input=inputs->GetInput(AccumulationRateEnum); _assert_(accumulation_input);
    1716         Input* melting_input=inputs->GetInput(BasalMeltingRateEnum);           _assert_(melting_input);
     1715        Input* surface_mass_balance_input=inputs->GetInput(SurfaceMassBalanceEnum); _assert_(surface_mass_balance_input);
     1716        Input* basal_melting_input=inputs->GetInput(BasalMeltingRateEnum);           _assert_(basal_melting_input);
    17171717        Input* dhdt_input=inputs->GetInput(DhDtEnum);                     _assert_(dhdt_input);
    17181718
     
    17231723                gauss->GaussPoint(ig);
    17241724
    1725                 accumulation_input->GetParameterValue(&accumulation_g,gauss);
    1726                 melting_input->GetParameterValue(&melting_g,gauss);
     1725                surface_mass_balance_input->GetParameterValue(&surface_mass_balance_g,gauss);
     1726                basal_melting_input->GetParameterValue(&basal_melting_g,gauss);
    17271727                dhdt_input->GetParameterValue(&dhdt_g,gauss);
    17281728
     
    17301730                GetL(&L[0], &xyz_list[0][0], gauss,NDOF1);
    17311731
    1732                 for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(accumulation_g-melting_g-dhdt_g)*L[i];
     1732                for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(surface_mass_balance_g-basal_melting_g-dhdt_g)*L[i];
    17331733        }
    17341734
     
    17471747        int        i,j,ig;
    17481748        double     xyz_list[NUMVERTICES][3];
    1749         double     Jdettria,accumulation_g,melting_g;
     1749        double     Jdettria,surface_mass_balance_g,basal_melting_g;
    17501750        double     L[NUMVERTICES];
    17511751        GaussTria* gauss=NULL;
     
    17561756        /*Retrieve all inputs and parameters*/
    17571757        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    1758         Input* accumulation_input=inputs->GetInput(AccumulationRateEnum); _assert_(accumulation_input);
    1759         Input* melting_input=inputs->GetInput(BasalMeltingRateEnum);           _assert_(melting_input);
     1758        Input* surface_mass_balance_input=inputs->GetInput(SurfaceMassBalanceEnum); _assert_(surface_mass_balance_input);
     1759        Input* basal_melting_input=inputs->GetInput(BasalMeltingRateEnum);           _assert_(basal_melting_input);
    17601760
    17611761        /* Start  looping on the number of gaussian points: */
     
    17681768                GetL(&L[0], &xyz_list[0][0], gauss,NDOF1);
    17691769
    1770                 accumulation_input->GetParameterValue(&accumulation_g,gauss);
    1771                 melting_input->GetParameterValue(&melting_g,gauss);
    1772 
    1773                 for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(accumulation_g-melting_g)*L[i];
     1770                surface_mass_balance_input->GetParameterValue(&surface_mass_balance_g,gauss);
     1771                basal_melting_input->GetParameterValue(&basal_melting_g,gauss);
     1772
     1773                for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(surface_mass_balance_g-basal_melting_g)*L[i];
    17741774        }
    17751775
     
    17901790        double     xyz_list[NUMVERTICES][3];
    17911791        double     Jdet;
    1792         double     vx,vy,vz,dbdx,dbdy,meltingvalue;
     1792        double     vx,vy,vz,dbdx,dbdy,basalmeltingvalue;
    17931793        double     slope[2];
    17941794        double     L[NUMVERTICES];
     
    18021802        inputs->GetParameterValue(&approximation,ApproximationEnum);
    18031803        Input* bed_input=inputs->GetInput(BedEnum);             _assert_(bed_input);
    1804         Input* melting_input=inputs->GetInput(BasalMeltingRateEnum); _assert_(melting_input);
     1804        Input* basal_melting_input=inputs->GetInput(BasalMeltingRateEnum); _assert_(basal_melting_input);
    18051805        Input* vx_input=inputs->GetInput(VxEnum);               _assert_(vx_input);
    18061806        Input* vy_input=inputs->GetInput(VyEnum);               _assert_(vy_input);
     
    18161816                gauss->GaussPoint(ig);
    18171817
    1818                 melting_input->GetParameterValue(&meltingvalue, gauss);
     1818                basal_melting_input->GetParameterValue(&basalmeltingvalue, gauss);
    18191819                bed_input->GetParameterDerivativeValue(&slope[0],&xyz_list[0][0],gauss);
    18201820                vx_input->GetParameterValue(&vx, gauss);
     
    18311831                GetL(&L[0], &xyz_list[0][0], gauss,NDOF1);
    18321832
    1833                 for(i=0;i<numdof;i++) pe->values[i]+=-Jdet*gauss->weight*(vx*dbdx+vy*dbdy-vz-meltingvalue)*L[i];
     1833                for(i=0;i<numdof;i++) pe->values[i]+=-Jdet*gauss->weight*(vx*dbdx+vy*dbdy-vz-basalmeltingvalue)*L[i];
    18341834        }
    18351835
     
    23892389        int        i,j,ig;
    23902390        double     Jdettria,dt;
    2391         double     melting_g;
     2391        double     basal_melting_g;
    23922392        double     old_watercolumn_g;
    23932393        double     xyz_list[NUMVERTICES][3];
     
    24012401        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    24022402        this->parameters->FindParam(&dt,DtEnum);
    2403         Input* melting_input=inputs->GetInput(BasalMeltingRateEnum);           _assert_(melting_input);
     2403        Input* basal_melting_input=inputs->GetInput(BasalMeltingRateEnum);           _assert_(basal_melting_input);
    24042404        Input* old_watercolumn_input=inputs->GetInput(WaterColumnOldEnum);_assert_(old_watercolumn_input);
    24052405
    2406         /*Initialize melting_correction_g to 0, do not forget!:*/
     2406        /*Initialize basal_melting_correction_g to 0, do not forget!:*/
    24072407        /* Start  looping on the number of gaussian points: */
    24082408        gauss=new GaussTria(2);
     
    24142414                GetL(&L[0], &xyz_list[0][0], gauss,NDOF1);
    24152415
    2416                 melting_input->GetParameterValue(&melting_g,gauss);
     2416                basal_melting_input->GetParameterValue(&basal_melting_g,gauss);
    24172417                old_watercolumn_input->GetParameterValue(&old_watercolumn_g,gauss);
    24182418       
    2419                 if(dt)for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(old_watercolumn_g+dt*melting_g)*L[i];
    2420                 else  for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*melting_g*L[i];
     2419                if(dt)for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(old_watercolumn_g+dt*basal_melting_g)*L[i];
     2420                else  for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*basal_melting_g*L[i];
    24212421        }
    24222422               
     
    24352435        int        i,j,ig;
    24362436        double     Jdettria,dt;
    2437         double     accumulation_g,melting_g,melting_correction_g,thickness_g;
     2437        double     surface_mass_balance_g,basal_melting_g,basal_melting_correction_g,thickness_g;
    24382438        double     xyz_list[NUMVERTICES][3];
    24392439        double     L[NUMVERTICES];
     
    24462446        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    24472447        this->parameters->FindParam(&dt,DtEnum);
    2448         Input* accumulation_input=inputs->GetInput(AccumulationRateEnum); _assert_(accumulation_input);
    2449         Input* melting_input=inputs->GetInput(BasalMeltingRateEnum);           _assert_(melting_input);
    2450         Input* melting_correction_input=inputs->GetInput(BasalMeltingRateCorrectionEnum);
     2448        Input* surface_mass_balance_input=inputs->GetInput(SurfaceMassBalanceEnum); _assert_(surface_mass_balance_input);
     2449        Input* basal_melting_input=inputs->GetInput(BasalMeltingRateEnum);           _assert_(basal_melting_input);
     2450        Input* basal_melting_correction_input=inputs->GetInput(BasalMeltingRateCorrectionEnum);
    24512451        Input* thickness_input=inputs->GetInput(ThicknessEnum);           _assert_(thickness_input);
    24522452
    2453         /*Initialize melting_correction_g to 0, do not forget!:*/
     2453        /*Initialize basal_melting_correction_g to 0, do not forget!:*/
    24542454        /* Start  looping on the number of gaussian points: */
    24552455        gauss=new GaussTria(2);
     
    24612461                GetL(&L[0], &xyz_list[0][0], gauss,NDOF1);
    24622462
    2463                 accumulation_input->GetParameterValue(&accumulation_g,gauss);
    2464                 melting_input->GetParameterValue(&melting_g,gauss);
     2463                surface_mass_balance_input->GetParameterValue(&surface_mass_balance_g,gauss);
     2464                basal_melting_input->GetParameterValue(&basal_melting_g,gauss);
    24652465                thickness_input->GetParameterValue(&thickness_g,gauss);
    2466                 if(melting_correction_input) melting_correction_input->GetParameterValue(&melting_correction_g,gauss);
    2467 
    2468                 for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(thickness_g+dt*(accumulation_g-melting_g-melting_correction_g))*L[i];
     2466                if(basal_melting_correction_input) basal_melting_correction_input->GetParameterValue(&basal_melting_correction_g,gauss);
     2467
     2468                for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(thickness_g+dt*(surface_mass_balance_g-basal_melting_g-basal_melting_correction_g))*L[i];
    24692469        }
    24702470
     
    24832483        int        i,j,ig;
    24842484        double     Jdettria,dt;
    2485         double     accumulation_g,melting_g,thickness_g;
     2485        double     surface_mass_balance_g,basal_melting_g,thickness_g;
    24862486        double     xyz_list[NUMVERTICES][3];
    24872487        double     L[NUMVERTICES];
     
    24942494        this->parameters->FindParam(&dt,DtEnum);
    24952495        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
    2496         Input* accumulation_input=inputs->GetInput(AccumulationRateEnum); _assert_(accumulation_input);
    2497         Input* melting_input=inputs->GetInput(BasalMeltingRateEnum);           _assert_(melting_input);
     2496        Input* surface_mass_balance_input=inputs->GetInput(SurfaceMassBalanceEnum); _assert_(surface_mass_balance_input);
     2497        Input* basal_melting_input=inputs->GetInput(BasalMeltingRateEnum);           _assert_(basal_melting_input);
    24982498        Input* thickness_input=inputs->GetInput(ThicknessEnum);           _assert_(thickness_input);
    24992499
     
    25072507                GetL(&L[0], &xyz_list[0][0], gauss,NDOF1);
    25082508
    2509                 accumulation_input->GetParameterValue(&accumulation_g,gauss);
    2510                 melting_input->GetParameterValue(&melting_g,gauss);
     2509                surface_mass_balance_input->GetParameterValue(&surface_mass_balance_g,gauss);
     2510                basal_melting_input->GetParameterValue(&basal_melting_g,gauss);
    25112511                thickness_input->GetParameterValue(&thickness_g,gauss);
    25122512
    2513                 for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(thickness_g+dt*(accumulation_g-melting_g))*L[i];
     2513                for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(thickness_g+dt*(surface_mass_balance_g-basal_melting_g))*L[i];
    25142514        }
    25152515
     
    38853885                this->inputs->AddInput(new TriaVertexInput(WaterColumnOldEnum,nodeinputs));
    38863886        }
    3887 
    3888         if (iomodel->accumulation_rate) {
    3889                 for(i=0;i<3;i++)nodeinputs[i]=iomodel->accumulation_rate[tria_vertex_ids[i]-1]/iomodel->yts;
    3890                 this->inputs->AddInput(new TriaVertexInput(AccumulationRateEnum,nodeinputs));
     3887        if (iomodel->surface_accumulation_rate) {
     3888                for(i=0;i<3;i++)nodeinputs[i]=iomodel->surface_accumulation_rate[tria_vertex_ids[i]-1]/iomodel->yts;
     3889                this->inputs->AddInput(new TriaVertexInput(SurfaceAccumulationRateEnum,nodeinputs));
     3890        }
     3891        if (iomodel->surface_ablation_rate) {
     3892                for(i=0;i<3;i++)nodeinputs[i]=iomodel->surface_ablation_rate[tria_vertex_ids[i]-1]/iomodel->yts;
     3893                this->inputs->AddInput(new TriaVertexInput(SurfaceAblationRateEnum,nodeinputs));
     3894        }
     3895        if (iomodel->surface_mass_balance) {
     3896                for(i=0;i<3;i++)nodeinputs[i]=iomodel->surface_mass_balance[tria_vertex_ids[i]-1]/iomodel->yts;
     3897                this->inputs->AddInput(new TriaVertexInput(SurfaceMassBalanceEnum,nodeinputs));
    38913898        }
    38923899        if (iomodel->geothermalflux) {
     
    45304537                                name==BasalMeltingRateEnum ||
    45314538                                name==WaterColumnEnum ||
    4532                                 name==AccumulationRateEnum ||
     4539                                name==SurfaceMassBalanceEnum ||
    45334540                                name==SurfaceAreaEnum||
    45344541                                name==VxEnum ||
     
    51465153    this->inputs->AddInput(new BoolInput(ElementOnIceShelfEnum,elementonshelf));
    51475154
    5148         /*If this element just  became ungrounded, set its melting rate at 50 m/yr:*/
     5155        /*If this element just  became ungrounded, set its basal melting rate at 50 m/yr:*/
    51495156        if(swap){
    51505157                Input* basal_melting_rate_input     =inputs->GetInput(BasalMeltingRateEnum);     _assert_(basal_melting_rate_input);
     
    58865893
    58875894        if(step==0){
    5888                 /*This is the first time we are trying to replace the accumulation tria vertex input by an accumulation triav vertex
    5889                  *forcing, which is essentially a tria vertex input that can vary with time. So firt, if there is already
     5895                /*This is the first time we are trying to replace the smb tria vertex input by a smb triav vertex
     5896                 *forcing, which is essentially a tria vertex input that can vary with time. So first, if there is already
    58905897                 an input with enum FieldEnum, squash it: */
    58915898                this->inputs->AddInput(new TriaVertexForcing(FieldEnum,nodeinputs,time,iomodel->forcing_numtimesteps,this->parameters));
  • issm/trunk/src/c/objects/IoModel.cpp

    r8392 r8399  
    8888        xfree((void**)&this->watercolumn);
    8989        xfree((void**)&this->basal_melting_rate_correction);
    90         xfree((void**)&this->accumulation_rate);
     90        xfree((void**)&this->surface_accumulation_rate);
     91        xfree((void**)&this->surface_ablation_rate);
     92        xfree((void**)&this->surface_mass_balance);
    9193        xfree((void**)&this->forcingtypes);
    9294        xfree((void**)&this->forcing);
     
    398400        this->penalties=NULL;
    399401
    400         /*!basal: */
    401         this->accumulation_rate=NULL;
     402        /*!surface: */
     403        this->surface_mass_balance=NULL;
     404   this->surface_accumulation_rate=NULL;
     405        this->surface_ablation_rate=NULL;
    402406        this->dhdt=NULL;
    403407
  • issm/trunk/src/c/objects/IoModel.h

    r8392 r8399  
    194194                double*  basal_melting_rate_correction;
    195195                int      basal_melting_rate_correction_apply;
    196                 double*  accumulation_rate;
     196                double*  surface_mass_balance;
     197                double*  surface_accumulation_rate;
     198                double*  surface_ablation_rate;
     199
    197200                double*  dhdt;
    198201
  • issm/trunk/src/c/shared/Numerics/UnitConversion.cpp

    r8392 r8399  
    6868                case VelObsEnum:      scale=yts;break; //m/yr
    6969                case DhDtEnum:        scale=yts;break; //m/yr
    70                 case BasalMeltingRateEnum: scale=yts;break; //m/yr
    71                 case AccumulationRateEnum: scale=yts;break; //m/yr
     70                case BasalMeltingRateEnum:        scale=yts;break; //m/yr
     71                case SurfaceAccumulationRateEnum: scale=yts;break; //m/yr
     72                case SurfaceAblationRateEnum:     scale=yts;break; //m/yr
     73                case SurfaceMassBalanceEnum:      scale=yts;break; //m/yr
    7274                case MisfitEnum:      scale=pow(yts,2);break; //(m/yr)^2
    7375                case MassFluxEnum:    scale=pow(10,-12)*yts;break; // (GigaTon/year)
  • issm/trunk/src/c/solutions/transient2d_core.cpp

    r8392 r8399  
    8686                        InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,SurfaceEnum,step,time);
    8787                        InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,BedEnum,step,time);
    88                         InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,AccumulationRateEnum,step,time);
     88                        InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,SurfaceMassBalanceEnum,step,time);
    8989                        InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,BasalMeltingRateEnum,step,time);
    9090                        if(gl_migration!=NoneEnum)InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ElementOnIceShelfEnum,step,time);
  • issm/trunk/src/m/classes/model.m

    r8392 r8399  
    176176                 vel_bal=NaN;
    177177                 vel_obs_raw=NaN;
    178                  accumulation_rate=NaN;
     178                 surface_accumulation_rate=NaN;
     179                 surface_ablation_rate=NaN;
     180                 surface_mass_balance=NaN;
    179181                 dhdt=NaN;
    180182                 geothermalflux=NaN;
     
    373375                 n;
    374376                 melting;
     377                 melting_rate;
     378                 accumulation_rate;
    375379                 accumulation;
    376380                 type;
     
    426430                                 if isfield(structmd,'n'), md.rheology_n=structmd.n; end
    427431                                 if isfield(structmd,'melting'), md.basal_melting_rate=structmd.melting; end
    428                                  if isfield(structmd,'accumulation'), md.accumulation_rate=structmd.accumulation; end
     432                                 if isfield(structmd,'melting_rate'), md.basal_melting_rate=structmd.melting_rate; end
     433                                 if isfield(structmd,'accumulation'), md.surface_mass_balance=structmd.accumulation; end
     434                                 if isfield(structmd,'accumulation_rate'), md.surface_mass_balance=structmd.accumulation_rate; end
    429435                                 if isfield(structmd,'numberofgrids'), md.numberofnodes=structmd.numberofgrids; end
    430436                                 if isfield(structmd,'numberofgrids2d'), md.numberofnodes2d=structmd.numberofgrids2d; end
  • issm/trunk/src/m/enum/EnumToModelField.m

    r8392 r8399  
    2121                case VyObsEnum(), string='vy_obs'; return
    2222                case GroundingLineMigrationEnum(), string='gl_migration'; return
    23                 case AccumulationRateEnum(), string='accumulation_rate'; return
    2423                case BasalMeltingRateEnum(), string='basal_melting_rate'; return
     24      case SurfaceAccumulationRateEnum(), string='surface_accumulation_rate'; return
     25                case SurfaceAblationRateEnum(), string='surface_ablation_rate'; return
     26                case SurfaceMassBalanceEnum(), string='surface_mass_balance'; return
    2527                otherwise, error(['Enum ' num2str(enum)  ' not found associated to any model field']);
    2628
  • issm/trunk/src/m/model/collapse.m

    r8392 r8399  
    2929if ~isnan(md.vy_obs), md.vy_obs=project2d(md,md.vy_obs,md.numlayers); end;
    3030if ~isnan(md.vel_obs), md.vel_obs=project2d(md,md.vel_obs,md.numlayers); end;
    31 if ~isnan(md.accumulation_rate), md.accumulation_rate=project2d(md,md.accumulation_rate,md.numlayers); end;
     31if ~isnan(md.surface_mass_balance), md.surface_mass_balance=project2d(md,md.surface_mass_balance,md.numlayers); end;
    3232if ~isnan(md.dhdt), md.dhdt=project2d(md,md.dhdt,md.numlayers); end;
    3333if ~isnan(md.firn_layer), md.firn_layer=project2d(md,md.firn_layer,md.numlayers); end;
  • issm/trunk/src/m/model/display/displayobservations.m

    r3763 r8399  
    1717fielddisplay(md,'vy_obs_raw','raw observed velocity y component [m/a]');
    1818fielddisplay(md,'vel_obs_raw','raw observed magnitude [m/a]');
    19 fielddisplay(md,'accumulation_rate','surface accumulation rate [m/a]');
     19fielddisplay(md,'surface_mass_balance','surface mass balance [m/a]');
    2020fielddisplay(md,'dhdt','surface dhdt rate [m/a]');
    2121fielddisplay(md,'observed_temperature','observed temperature [K]');
  • issm/trunk/src/m/model/extrude.m

    r8392 r8399  
    150150md.vel_bal=project3d(md,md.vel_bal,'node');
    151151md.vel_obs_raw=project3d(md,md.vel_obs_raw,'node');
    152 md.accumulation_rate=project3d(md,md.accumulation_rate,'node');
     152md.surface_mass_balance=project3d(md,md.surface_mass_balance,'node');
    153153md.dhdt=project3d(md,md.dhdt,'node');
    154154md.firn_layer=project3d(md,md.firn_layer,'node',md.numlayers);
  • issm/trunk/src/m/model/ismodelselfconsistent.m

    r8392 r8399  
    9292%}}}
    9393%SIZE NUMBEROFNODES {{{1
    94 fields={'x','y','z','rheology_B','drag_coefficient','basal_melting_rate','accumulation_rate','surface','thickness','bed','nodeonbed','nodeonsurface'};
     94fields={'x','y','z','rheology_B','drag_coefficient','basal_melting_rate','surface_mass_balance','surface','thickness','bed','nodeonbed','nodeonsurface'};
    9595checksize(md,fields,[md.numberofnodes 1]);
    9696%}}}
     
    505505
    506506                                %INITIAL TEMPERATURE, MELTING AND ACCUMULATION
    507                                 fields={'temperature','accumulation_rate','basal_melting_rate'};
     507                                fields={'temperature','surface_mass_balance','basal_melting_rate'};
    508508                                checksize(md,fields,[md.numberofnodes 1]);
    509509                                checknan(md,fields);
     
    521521                        % {{{2
    522522                        %VELOCITIES MELTING AND ACCUMULATION
    523                         fields={'vx','vy','accumulation_rate','basal_melting_rate','dhdt'};
     523                        fields={'vx','vy','surface_mass_balance','basal_melting_rate','dhdt'};
    524524                        checksize(md,fields,[md.numberofnodes 1]);
    525525                        checknan(md,fields);
     
    540540                        % {{{2
    541541                        %VELOCITIES MELTING AND ACCUMULATION
    542                         fields={'vx','vy','accumulation_rate','basal_melting_rate'};
     542                        fields={'vx','vy','surface_mass_balance','basal_melting_rate'};
    543543                        checksize(md,fields,[md.numberofnodes 1]);
    544544                        checknan(md,fields);
  • issm/trunk/src/m/model/marshall.m

    r8392 r8399  
    8989
    9090WriteData(fid,md.geothermalflux,'Mat','geothermalflux');
    91 WriteData(fid,md.accumulation_rate,'Mat','accumulation_rate');
     91WriteData(fid,md.surface_accumulation_rate,'Mat','surface_accumulation_rate');
     92WriteData(fid,md.surface_ablation_rate,'Mat','surface_ablation_rate');
     93WriteData(fid,md.surface_mass_balance,'Mat','surface_mass_balance');
    9294WriteData(fid,md.gl_melting_rate,'Scalar','gl_melting_rate');
    9395WriteData(fid,md.basal_melting_rate,'Mat','basal_melting_rate');
     
    101103        for i=1:numforcings,
    102104                switch (forcingnames{i})
    103                         case 'accumulation_rate'
    104                                 forcingtypes(i)=AccumulationRateEnum;
     105                        case 'surface_accumulation_rate'
     106                                forcingtypes(i)=SurfaceAccumulationRateEnum;
     107                        case 'surface_ablation_rate'
     108                                forcingtypes(i)=SurfaceAblationRateEnum;
     109                        case 'surface_mass_balance'
     110                                forcingtypes(i)=SurfaceMassBalanceEnum;
    105111                        case 'basal_melting_rate'
    106112                                forcingtypes(i)=BasalMeltingRateEnum;
  • issm/trunk/src/m/model/modeldefault/defaultparams.m

    r8392 r8399  
    8888        %end
    8989
    90         disp('      creating accumulation rates');
    91         md.accumulation_rate=ones(md.numberofnodes,1); %1m/a
    92        
     90        disp('      creating surface balance rates');
     91        md.surface_accumulation_rate=ones(md.numberofnodes,1); %1m/a
     92        md.surface_ablation_rate=ones(md.numberofnodes,0); %0m/a
     93        md.surface_mass_balance=ones(md.numberofnodes,1); %1m/a
     94
    9395        %Deal with boundary conditions:
    9496
  • issm/trunk/src/m/model/structtomodel.m

    r8392 r8399  
    2626if isfield(structmd,'n'), md.rheology_n=structmd.n; end
    2727if isfield(structmd,'melting'), md.basal_melting_rate=structmd.melting; end
    28 if isfield(structmd,'accumulation'), md.accumulation_rate=structmd.accumulation; end
     28if isfield(structmd,'melting_rate'), md.basal_melting_rate=structmd.melting_rate; end
     29if isfield(structmd,'accumulation'), md.surface_mass_balance=structmd.accumulation; end
     30if isfield(structmd,'accumulation_rate'), md.surface_mass_balance=structmd.accumulation_rate; end
    2931if isfield(structmd,'numberofgrids'), md.numberofnodes=structmd.numberofgrids; end
    3032if isfield(structmd,'numberofgrids2d'), md.numberofnodes2d=structmd.numberofgrids2d; end
  • issm/trunk/src/m/utils/BC/SetIceSheetBC.m

    r8392 r8399  
    2828end
    2929
    30 %Create zeros basal_melting_rate and accumulation_rate if not specified
    31 if isnan(md.accumulation_rate),
    32         md.accumulation_rate=zeros(md.numberofnodes,1);
    33         md.forcings.accumulation_rate=[zeros(md.numberofnodes+1,1)];
    34         disp('      no accumulation_rate specified: values set as zero');
     30%Create zeros basal_melting_rate and surface mass balance if not specified
     31if isnan(md.surface_accumulation_rate),
     32        md.surface_accumulation_rate=zeros(md.numberofnodes,1);
     33        md.forcings.surface_accumulation_rate=zeros(md.numberofnodes+1,1);
     34        disp('      no surface_accumulation_rate specified: values set as zero');
     35end
     36if isnan(md.surface_ablation_rate),
     37        md.surface_ablation_rate=zeros(md.numberofnodes,1);
     38        md.forcings.surface_ablation_rate=zeros(md.numberofnodes+1,1);
     39        disp('      no surface_ablation_rate specified: values set as zero');
     40end
     41if isnan(md.surface_mass_balance),
     42        md.surface_mass_balance=zeros(md.numberofnodes,1);
     43        md.forcings.surface_mass_balance=zeros(md.numberofnodes+1,1);
     44        disp('      no surface_mass_balance specified: values set as zero');
    3545end
    3646if isnan(md.basal_melting_rate),
  • issm/trunk/src/m/utils/BC/SetIceShelfBC.m

    r8392 r8399  
    5959md.pressureload=pressureload;
    6060
    61 %Create zeros basal_melting_rate and accumulation_rate if not specified
    62 if isnan(md.accumulation_rate),
    63         md.accumulation_rate=zeros(md.numberofnodes,1);
    64         md.forcings.accumulation_rate=zeros(md.numberofnodes+1,1);
    65         disp('      no accumulation_rate specified: values set as zero');
     61%Create zeros basal_melting_rate, surface_ablation_rate, surface_accumulation_rate
     62% and surface_mass_balance if not specified
     63if isnan(md.surface_accumulation_rate),
     64        md.surface_accumulation_rate=zeros(md.numberofnodes,1);
     65        md.forcings.surface_accumulation_rate=zeros(md.numberofnodes+1,1);
     66        disp('      no surface_accumulation_rate specified: values set as zero');
     67end
     68if isnan(md.surface_ablation_rate),
     69        md.surface_ablation_rate=zeros(md.numberofnodes,1);
     70        md.forcings.surface_ablation_rate=zeros(md.numberofnodes+1,1);
     71        disp('      no surface_ablation_rate specified: values set as zero');
     72end
     73if isnan(md.surface_mass_balance),
     74        md.surface_mass_balance=zeros(md.numberofnodes,1);
     75        md.forcings.surface_mass_balance=zeros(md.numberofnodes+1,1);
     76        disp('      no surface_mass_balance specified: values set as zero');
    6677end
    6778if isnan(md.basal_melting_rate),
  • issm/trunk/src/m/utils/BC/SetMarineIceSheetBC.m

    r8392 r8399  
    6969md.pressureload=pressureload;
    7070
    71 %Create zeros basal_melting_rate and accumulation_rate if not specified
    72 if isnan(md.accumulation_rate),
    73         md.accumulation_rate=zeros(md.numberofnodes,1);
    74         md.forcings.accumulation_rate=zeros(md.numberofnodes+1,1);
    75         disp('      no accumulation_rate specified: values set as zero');
     71
     72%Create zeros basal_melting_rate, surface_ablation_rate, surface_accumulation_rate
     73% and surface_mass_balance if not specified
     74if isnan(md.surface_accumulation_rate),
     75        md.surface_accumulation_rate=zeros(md.numberofnodes,1);
     76        md.forcings.surface_accumulation_rate=zeros(md.numberofnodes+1,1);
     77        disp('      no surface_accumulation_rate specified: values set as zero');
     78end
     79if isnan(md.surface_ablation_rate),
     80        md.surface_ablation_rate=zeros(md.numberofnodes,1);
     81        md.forcings.surface_ablation_rate=zeros(md.numberofnodes+1,1);
     82        disp('      no surface_ablation_rate specified: values set as zero');
     83end
     84if isnan(md.surface_mass_balance),
     85        md.surface_mass_balance=zeros(md.numberofnodes,1);
     86        md.forcings.surface_mass_balance=zeros(md.numberofnodes+1,1);
     87        disp('      no surface_mass_balance specified: values set as zero');
    7688end
    7789if isnan(md.basal_melting_rate),
  • issm/trunk/test/Par/79North.par

    r8392 r8399  
    2323md.drag_q=ones(md.numberofelements,1);
    2424
    25 %Ice shelf melting and accumulation
     25%Ice shelf melting and surface mass balance
    2626md.basal_melting_rate=zeros(md.numberofnodes,1);
    2727pos=zeros(md.numberofnodes,1);
    2828pos(md.elements(find(md.elementoniceshelf),:))=1;
    2929md.basal_melting_rate(find(pos))=10;
    30 md.accumulation_rate=15*ones(md.numberofnodes,1);
    31 md.forcings.accumulation_rate=[15*ones(md.numberofnodes,1);1];
     30md.surface_mass_balance=15*ones(md.numberofnodes,1);
     31md.forcings.surface_mass_balance=[15*ones(md.numberofnodes,1);1];
    3232
    3333%Numerical parameters
  • issm/trunk/test/Par/RoundSheetEISMINT.par

    r8368 r8399  
    2323md.rheology_n=3*ones(md.numberofelements,1);
    2424
    25 disp('      creating accumulation rates');
    26 acc_max=0.5; %m/yr
     25disp('      creating surface mass balance');
     26smb_max=0.5; %m/yr
    2727sb=10^-2/1000; %m/yr/m
    2828rel=450*1000; %m
    29 md.accumulation_rate=min(acc_max,sb*(rel-radius));
    30 md.forcings.accumulation_rate=[min(acc_max,sb*(rel-radius));1];
     29md.surface_mass_balance=min(smb_max,sb*(rel-radius));
     30md.forcings.surface_mass_balance=[min(smb_max,sb*(rel-radius));1];
    3131
    3232disp('      creating velocities');
  • issm/trunk/test/Par/RoundSheetShelf.par

    r8392 r8399  
    4545md.temperature=md.observed_temperature;
    4646
    47 %Accumulation and melting
    48 md.accumulation_rate=-10*ones(md.numberofnodes,1);
    49 md.forcings.accumulation_rate=[-10*ones(md.numberofnodes,1);1];
     47%Surface mass balance and basal melting
     48md.surface_mass_balance=-10*ones(md.numberofnodes,1);
     49md.forcings.surface_mass_balance=[-10*ones(md.numberofnodes,1);1];
    5050md.basal_melting_rate=zeros(md.numberofnodes,1);
    5151pos=find(md.nodeoniceshelf);md.basal_melting_rate(pos)=10;
  • issm/trunk/test/Par/RoundSheetStaticEISMINT.par

    r8368 r8399  
    2929md.rheology_n=3*ones(md.numberofelements,1);
    3030
    31 disp('      creating accumulation rates');
    32 acc_max=0.5; %m/yr
     31disp('      creating surface mass balance');
     32smb_max=0.5; %m/yr
    3333sb=10^-2/1000; %m/yr/m
    3434rel=450*1000; %m
    35 md.accumulation_rate=min(acc_max,sb*(rel-radius));
    36 md.forcings.accumulation_rate=[min(acc_max,sb*(rel-radius));1];
     35md.surface_mass_balance=min(smb_max,sb*(rel-radius));
     36md.forcings.surface_mass_balance=[min(smb_max,sb*(rel-radius));1];
    3737
    3838disp('      creating velocities');
  • issm/trunk/test/Par/SquareEISMINT.par

    r8392 r8399  
    2626md.rheology_n=3*ones(md.numberofelements,1);
    2727
    28 disp('      creating accumulation rates');
    29 md.accumulation_rate=0.2*ones(md.numberofnodes,1); %0m/a
    30 md.forcings.accumulation_rate=[0.2*ones(md.numberofnodes,1);1]; %0m/a
     28disp('      creating surface mass balance');
     29md.surface_mass_balance=0.2*ones(md.numberofnodes,1); %0m/a
     30md.forcings.surface_mass_balance=[0.2*ones(md.numberofnodes,1);1]; %0m/a
    3131md.basal_melting_rate=0*ones(md.numberofnodes,1); %0m/a
    3232
  • issm/trunk/test/Par/SquareSheetShelf.par

    r8392 r8399  
    2828
    2929%Accumulation and melting
    30 md.accumulation_rate=10*ones(md.numberofnodes,1);
    31 md.forcings.accumulation_rate=[10*ones(md.numberofnodes,1);1];
     30md.surface_mass_balance=10*ones(md.numberofnodes,1);
     31md.forcings.surface_mass_balance=[10*ones(md.numberofnodes,1);1];
    3232md.basal_melting_rate=5*ones(md.numberofnodes,1);
    3333
  • issm/trunk/test/Par/SquareShelfConstrained.par

    r8392 r8399  
    2424md.temperature=md.observed_temperature;
    2525
    26 %Accumulation and melting
    27 md.accumulation_rate=10*ones(md.numberofnodes,1);
    28 md.forcings.accumulation_rate=[10*ones(md.numberofnodes,1);1];
     26%Surface mass balance and basal melting
     27md.surface_mass_balance=10*ones(md.numberofnodes,1);
     28md.forcings.surface_mass_balance=[10*ones(md.numberofnodes,1);1];
    2929md.basal_melting_rate=5*ones(md.numberofnodes,1);
    3030
  • issm/trunk/test/Par/SquareThermal.par

    r8392 r8399  
    3333md.rheology_n=3*ones(md.numberofelements,1);
    3434
    35 disp('      creating accumulation rates');
    36 md.accumulation_rate=ones(md.numberofnodes,1)/md.yts; %1m/a
    37 md.forcings.accumulation_rate=[ones(md.numberofnodes,1)/md.yts;1]; %1m/a
     35disp('      creating surface_mass_balance');
     36md.surface_mass_balance=ones(md.numberofnodes,1)/md.yts; %1m/a
     37md.forcings.surface_mass_balance=[ones(md.numberofnodes,1)/md.yts;1]; %1m/a
    3838md.basal_melting_rate=0*ones(md.numberofnodes,1)/md.yts; %1m/a
    3939
Note: See TracChangeset for help on using the changeset viewer.