Changeset 14735


Ignore:
Timestamp:
04/24/13 09:47:46 (12 years ago)
Author:
lemorzad
Message:

CHG: improved PDD adding a couple input parameter for the desertification effect

Location:
issm/trunk-jpl
Files:
1 added
16 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/externalpackages/vim/install.sh

    r13246 r14735  
    2323cd src/src
    2424./configure \
    25         --prefix "$ISSM_DIR/externalpackages/vim/install" \
    26         --with-gcc "/usr/bin/gcc"
     25        --prefix="$ISSM_DIR/externalpackages/vim/install" \
     26        --with-gcc="/usr/bin/gcc" \
     27        --with-tlib="/lib/"
    2728
    2829#Compile vim
  • issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h

    r14724 r14735  
    211211        SurfaceforcingsMassBalanceEnum,
    212212        SurfaceforcingsIspddEnum,
     213        SurfaceforcingsDesfacEnum,
     214        SurfaceforcingsS0pEnum,
    213215        SurfaceforcingsIssmbgradientsEnum,
    214216        SurfaceforcingsMonthlytemperaturesEnum,
  • issm/trunk-jpl/src/c/classes/objects/Elements/Penta.cpp

    r14663 r14735  
    24972497   IssmDouble monthlytemperatures[NUMVERTICES][12],monthlyprec[NUMVERTICES][12];
    24982498   IssmDouble h[NUMVERTICES],s[NUMVERTICES]; // ,b
    2499    IssmDouble rho_water,rho_ice;
     2499   IssmDouble rho_water,rho_ice,desfac,s0p;
    25002500
    25012501   /*Recover monthly temperatures and precipitation*/
     
    25242524  rho_water=matpar->GetRhoFreshwater();
    25252525
     2526  /*Get desertification effect parameters*/
     2527  desfac=matpar->GetDesFac();
     2528  s0p=matpar->GetS0p();
     2529
    25262530   /*measure the surface mass balance*/
    25272531   for (int iv = 0; iv < NUMVERTICES; iv++){
    2528      agd[iv]=PddSurfaceMassBlance(&monthlytemperatures[iv][0], &monthlyprec[iv][0], pdds, pds, signorm, yts, h[iv], s[iv], rho_ice, rho_water);
     2532     agd[iv]=PddSurfaceMassBlance(&monthlytemperatures[iv][0], &monthlyprec[iv][0], pdds, pds,
     2533                                  signorm, yts, h[iv], s[iv], rho_ice, rho_water, desfac, s0p);
     2534     //printf("mass balance %f \n",agd[iv]);
    25292535   }
    25302536
     
    26562662/*FUNCTION Penta::RequestedOutput{{{*/
    26572663void Penta::RequestedOutput(int output_enum,int step,IssmDouble time){
    2658 
    26592664        if(IsInput(output_enum)){
    26602665                /*just transfer this input to results, and we are done: */
     
    34733478        /*Now get the average SMB over the element*/
    34743479        Input* smb_input = inputs->GetInput(SurfaceforcingsMassBalanceEnum); _assert_(smb_input);
     3480
    34753481        smb_input->GetInputAverage(&smb);
    34763482        Total_Smb=rho_ice*base*smb;// smb on element in kg s-1
  • issm/trunk-jpl/src/c/classes/objects/Elements/Tria.cpp

    r14734 r14735  
    23642364   IssmDouble monthlytemperatures[NUMVERTICES][12],monthlyprec[NUMVERTICES][12];
    23652365   IssmDouble h[NUMVERTICES],s[NUMVERTICES];
    2366    IssmDouble rho_water,rho_ice;
     2366   IssmDouble rho_water,rho_ice,desfac,s0p;
    23672367
    23682368   /*Recover monthly temperatures and precipitation*/
     
    23902390  rho_ice=matpar->GetRhoIce();
    23912391  rho_water=matpar->GetRhoFreshwater();
     2392 
     2393  /*Get desertification effect parameters*/
     2394  desfac=matpar->GetDesFac();
     2395  s0p=matpar->GetS0p();
    23922396
    23932397   /*measure the surface mass balance*/
    23942398   for (int iv = 0; iv<NUMVERTICES; iv++){
    2395      agd[iv]=PddSurfaceMassBlance(&monthlytemperatures[iv][0], &monthlyprec[iv][0], pdds, pds, signorm, yts, h[iv], s[iv], rho_ice, rho_water);
     2399     agd[iv]=PddSurfaceMassBlance(&monthlytemperatures[iv][0], &monthlyprec[iv][0], pdds, pds, signorm, yts, h[iv], s[iv], rho_ice, rho_water, desfac, s0p);
    23962400   }
    23972401
  • issm/trunk-jpl/src/c/classes/objects/Materials/Matpar.cpp

    r14734 r14735  
    4242        iomodel->Constant(&this->thermal_exchange_velocity,MaterialsThermalExchangeVelocityEnum);
    4343        iomodel->Constant(&this->g,ConstantsGEnum);
     44        iomodel->Constant(&this->desfac,SurfaceforcingsDesfacEnum);
     45        iomodel->Constant(&this->s0p,SurfaceforcingsS0pEnum);
    4446
    4547        if(hydrology_model==HydrologyshreveEnum){
     
    99101        _printLine_("   thermal_exchange_velocity: " << thermal_exchange_velocity);
    100102        _printLine_("   g: " << g);
     103        _printLine_("   desfac: " << desfac);
     104        _printLine_("   s0p: " << s0p);
    101105        return;
    102106}
     
    203207                        this->g=constant;
    204208                        break;
     209                case  SurfaceforcingsDesfacEnum:
     210                        this->desfac=constant;
     211                        break;
     212                case SurfaceforcingsS0pEnum:
     213                        this->s0p=constant;
     214                        break;
    205215                default:
    206216                        break;
     
    287297IssmDouble Matpar::GetMuWater(){
    288298        return mu_water;
     299}
     300/*}}}*/
     301/*FUNCTION Matpar::GetDesFac {{{*/
     302IssmDouble Matpar::GetDesFac(){
     303        return desfac;
     304}
     305/*}}}*/
     306/*FUNCTION Matpar::GetS0p {{{*/
     307IssmDouble Matpar::GetS0p(){
     308        return s0p;
    289309}
    290310/*}}}*/
  • issm/trunk-jpl/src/c/classes/objects/Materials/Matpar.h

    r14734 r14735  
    2929                IssmDouble  thermal_exchange_velocity;
    3030                IssmDouble  g;
    31 
     31                IssmDouble  desfac;
     32                IssmDouble  s0p;
     33               
    3234                /*hydrology Shreve: */   
    3335                IssmDouble  hydro_kn;                   
     
    127129                void   EnthalpyToThermal(IssmDouble* ptemperature,IssmDouble* pwaterfraction,IssmDouble enthalpy,IssmDouble pressure);
    128130                void   ThermalToEnthalpy(IssmDouble* penthalpy,IssmDouble temperature,IssmDouble waterfraction,IssmDouble pressure);
     131                IssmDouble GetDesFac();
     132                IssmDouble GetS0p();
    129133                void   UnitConversion(void);
    130134                /*}}}*/
  • issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp

    r14724 r14735  
    216216                case SurfaceforcingsMassBalanceEnum : return "SurfaceforcingsMassBalance";
    217217                case SurfaceforcingsIspddEnum : return "SurfaceforcingsIspdd";
     218                case SurfaceforcingsDesfacEnum : return "SurfaceforcingsDesfac";
     219                case SurfaceforcingsS0pEnum : return "SurfaceforcingsS0p";
    218220                case SurfaceforcingsIssmbgradientsEnum : return "SurfaceforcingsIssmbgradients";
    219221                case SurfaceforcingsMonthlytemperaturesEnum : return "SurfaceforcingsMonthlytemperatures";
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp

    r14562 r14735  
    103103        parameters->AddObject(iomodel->CopyConstantObject(InversionTaoEnum));
    104104        parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsIspddEnum));
     105        parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsDesfacEnum));
     106        parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsS0pEnum));
    105107        parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsIsdelta18oEnum));
    106108        parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsIssmbgradientsEnum));
  • issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp

    r14724 r14735  
    220220              else if (strcmp(name,"SurfaceforcingsMassBalance")==0) return SurfaceforcingsMassBalanceEnum;
    221221              else if (strcmp(name,"SurfaceforcingsIspdd")==0) return SurfaceforcingsIspddEnum;
     222              else if (strcmp(name,"SurfaceforcingsDesfac")==0) return SurfaceforcingsDesfacEnum;
     223              else if (strcmp(name,"SurfaceforcingsS0p")==0) return SurfaceforcingsS0pEnum;
    222224              else if (strcmp(name,"SurfaceforcingsIssmbgradients")==0) return SurfaceforcingsIssmbgradientsEnum;
    223225              else if (strcmp(name,"SurfaceforcingsMonthlytemperatures")==0) return SurfaceforcingsMonthlytemperaturesEnum;
     
    259261              else if (strcmp(name,"BalancethicknessSolution")==0) return BalancethicknessSolutionEnum;
    260262              else if (strcmp(name,"WeakBalancethicknessAnalysis")==0) return WeakBalancethicknessAnalysisEnum;
    261               else if (strcmp(name,"WeakBalancethicknessSolution")==0) return WeakBalancethicknessSolutionEnum;
    262               else if (strcmp(name,"BedSlopeAnalysis")==0) return BedSlopeAnalysisEnum;
    263263         else stage=3;
    264264   }
    265265   if(stage==3){
    266               if (strcmp(name,"BedSlopeSolution")==0) return BedSlopeSolutionEnum;
     266              if (strcmp(name,"WeakBalancethicknessSolution")==0) return WeakBalancethicknessSolutionEnum;
     267              else if (strcmp(name,"BedSlopeAnalysis")==0) return BedSlopeAnalysisEnum;
     268              else if (strcmp(name,"BedSlopeSolution")==0) return BedSlopeSolutionEnum;
    267269              else if (strcmp(name,"BedSlopeXAnalysis")==0) return BedSlopeXAnalysisEnum;
    268270              else if (strcmp(name,"BedSlopeYAnalysis")==0) return BedSlopeYAnalysisEnum;
     
    382384              else if (strcmp(name,"Converged")==0) return ConvergedEnum;
    383385              else if (strcmp(name,"ExtToIu")==0) return ExtToIuEnum;
    384               else if (strcmp(name,"Fill")==0) return FillEnum;
    385               else if (strcmp(name,"FractionIncrement")==0) return FractionIncrementEnum;
    386386         else stage=4;
    387387   }
    388388   if(stage==4){
    389               if (strcmp(name,"Friction")==0) return FrictionEnum;
     389              if (strcmp(name,"Fill")==0) return FillEnum;
     390              else if (strcmp(name,"FractionIncrement")==0) return FractionIncrementEnum;
     391              else if (strcmp(name,"Friction")==0) return FrictionEnum;
    390392              else if (strcmp(name,"GroundinglineMeltingRate")==0) return GroundinglineMeltingRateEnum;
    391393              else if (strcmp(name,"Internal")==0) return InternalEnum;
     
    505507              else if (strcmp(name,"GLlevelset")==0) return GLlevelsetEnum;
    506508              else if (strcmp(name,"StokesSolver")==0) return StokesSolverEnum;
    507               else if (strcmp(name,"Adjoint")==0) return AdjointEnum;
    508               else if (strcmp(name,"Colinear")==0) return ColinearEnum;
    509509         else stage=5;
    510510   }
    511511   if(stage==5){
    512               if (strcmp(name,"ControlSteady")==0) return ControlSteadyEnum;
     512              if (strcmp(name,"Adjoint")==0) return AdjointEnum;
     513              else if (strcmp(name,"Colinear")==0) return ColinearEnum;
     514              else if (strcmp(name,"ControlSteady")==0) return ControlSteadyEnum;
    513515              else if (strcmp(name,"Fset")==0) return FsetEnum;
    514516              else if (strcmp(name,"Gradient1")==0) return Gradient1Enum;
  • issm/trunk-jpl/src/c/shared/Elements/PddSurfaceMassBalance.cpp

    r13758 r14735  
    55#include "./elements.h"
    66
    7 IssmDouble PddSurfaceMassBlance(IssmDouble* monthlytemperatures, IssmDouble* monthlyprec, IssmDouble* pdds, IssmDouble* pds, IssmDouble signorm, IssmDouble yts, IssmDouble h, IssmDouble s, IssmDouble rho_ice, IssmDouble rho_water){
     7IssmDouble PddSurfaceMassBlance(IssmDouble* monthlytemperatures, IssmDouble* monthlyprec, IssmDouble* pdds, IssmDouble* pds, IssmDouble signorm, IssmDouble yts, IssmDouble h, IssmDouble s, IssmDouble rho_ice, IssmDouble rho_water, IssmDouble desfac, IssmDouble s0p){
    88
    99  // output:
    1010  IssmDouble B;    // surface mass balance, melt+accumulation
    11 
    1211  int    iqj,imonth;
    1312
     
    2019  IssmDouble sconv; //rhow_rain/rhoi / 12 months
    2120
    22   IssmDouble lapser=6.5/1000., sealev=0.;    // lapse rate. degrees per meter. 7.5 lev's 99 paper, 9 Marshall 99 paper
    23   IssmDouble desfac = 0.5;                 // desert elevation factor
    24   IssmDouble s0p=0.;         // should be set to elevation from precip source
     21  IssmDouble lapser=6.5, sealev=0.;    // lapse rate. degrees per meter. 7.5 lev's 99 paper, 9 Marshall 99 paper
     22  // IssmDouble desfac = 0.5;                 // desert elevation factor
     23  // IssmDouble s0p=0.;         // should be set to elevation from precip source
    2524  IssmDouble s0t=0.;         // should be set to elevation from temperature source
    2625  IssmDouble st;             // elevation between altitude of the temp record and current altitude
     
    9695      // gaussian=T_m, so ndd=-(Tsurf-pdd)
    9796      if (iqj>5 &&  iqj<9){ Tsum=Tsum+tstar;}
     97
    9898      if (tstar >= siglim) {pdd = pdd + tstar*deltm;}
    9999      else if (tstar> -siglim){
     
    103103      else{frzndd = frzndd - tstar*deltm; }
    104104  } // end of seasonal loop
    105 
    106105  //******************************************************************
     106
    107107    saccu = qm;
    108108    prect = qmp;     // total precipitation during 1 year taking into account des. ef.
  • issm/trunk-jpl/src/c/shared/Elements/elements.h

    r14293 r14735  
    1414IssmDouble Arrhenius(IssmDouble temperature,IssmDouble depth,IssmDouble n);
    1515IssmDouble PddSurfaceMassBlance(IssmDouble* monthlytemperatures,  IssmDouble* monthlyprec, IssmDouble* pdds, IssmDouble* pds,
    16                                 IssmDouble signorm, IssmDouble yts, IssmDouble h, IssmDouble s, IssmDouble rho_ice, IssmDouble rho_water);
     16                                IssmDouble signorm, IssmDouble yts, IssmDouble h, IssmDouble s,
     17                                IssmDouble rho_ice, IssmDouble rho_water, IssmDouble desfac, IssmDouble s0p);
    1718void ComputeDelta18oTemperaturePrecipitation(IssmDouble Delta18oSurfacePresent, IssmDouble Delta18oSurfaceLgm, IssmDouble Delta18oSurfaceTime,
    1819                                     IssmDouble Delta18oPresent, IssmDouble Delta18oLgm, IssmDouble Delta18oTime,
  • issm/trunk-jpl/src/c/solutions/transient_core.cpp

    r14652 r14735  
    155155                                InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,SurfaceforcingsMonthlytemperaturesEnum);
    156156                                InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,SurfaceforcingsPrecipitationEnum);
     157                                InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,BasalFrictionEnum);
    157158                        }
    158159                        if(isgroundingline && (groundingline_migration==SubelementMigrationEnum || groundingline_migration==SubelementMigration2Enum)){
  • issm/trunk-jpl/src/m/classes/clusters/acenet.m

    r13278 r14735  
    1818                 time=10;
    1919                 % codepath='/usr/local/issm-r11321/bin'; % this one is for issm on acenet global
    20                  codepath='PATH'; % this one is for issm on my acenet directory
    21                  executionpath='/home/klemorza/issm/execution';
     20                 codepath='/home/klemorza/issm/trunk-jpl/bin'; % this one is for issm on my acenet directory
     21                 executionpath='/home/klemorza/issm/trunk-jpl/execution';
    2222                 %}}}
    2323         end
     
    6666                         fprintf(fid,'#$ -cwd\n');
    6767          fprintf(fid,'#$ -N issm\n');
    68           fprintf(fid,'#$ -l h_rt=10:0:0\n');
     68          fprintf(fid,'#$ -l h_rt=96:0:0\n');
    6969          fprintf(fid,'#$ -pe ompi* %i\n',cluster.np);
    7070          fprintf(fid,'#$ -j y\n');
  • issm/trunk-jpl/src/m/classes/surfaceforcings.m

    r14640 r14735  
    2121                temperatures_lgm = NaN;
    2222                precipitations_presentday = NaN;
     23                desfac = 0.5;
     24                s0p=0;
    2325        end
    2426        methods
     
    3739                  obj.issmbgradients=0;
    3840                  obj.isdelta18o=0;
    39 
     41                  obj.desfac=0.5;
     42                  obj.s0p=0;
    4043                end % }}}
    4144                function md = checkconsistency(obj,md,solution,analyses) % {{{
     
    4548                                md = checkfield(md,'surfaceforcings.issmbgradients','numel',[1],'values',[0 1]);
    4649                                if(obj.ispdd)
     50                                  md = checkfield(md,'surfaceforcings.desfac','<=',1);
     51                                  md = checkfield(md,'surfaceforcings.s0p','>=',0);
    4752                                        if(obj.isdelta18o==0)
    4853                                                md = checkfield(md,'surfaceforcings.monthlytemperatures','forcing',1,'NaN',1);
     
    7479                        fielddisplay(obj,'ispdd','is pdd activated (0 or 1, default is 0)');
    7580                        fielddisplay(obj,'isdelta18o','is temperature and precipitation delta18o parametrisation activated (0 or 1, default is 0)');
    76                         fielddisplay(obj,'monthlytemperatures','monthly surface temperatures [K], required if pdd is activated and delta18o not activated');
     81                        fielddisplay(obj,'desfac','desertification elevation factor (between 0 and 1, default is 0.5)');
     82                        fielddisplay(obj,'s0p','should be set to elevation from precip source (between 0 and a few 1000m (default is 0))');
     83                        fielddisplay(obj,'monthlytemperatures','monthly surface temperatures [Kelvin], required if pdd is activated and delta18o not activated');
    7784                        fielddisplay(obj,'precipitation','surface precipitation [m/yr water eq]');
    78                         fielddisplay(obj,'temperatures_presentday','monthly present day surface temperatures [K], required if pdd is activated and delta18o activated');
    79                         fielddisplay(obj,'temperatures_lgm','monthly LGM surface temperatures [K], required if pdd is activated and delta18o activated');
     85                        fielddisplay(obj,'temperatures_presentday','monthly present day surface temperatures [Kelvin], required if pdd is activated and delta18o activated');
     86                        fielddisplay(obj,'temperatures_lgm','monthly LGM surface temperatures [Kelvin], required if pdd is activated and delta18o activated');
    8087                        fielddisplay(obj,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if pdd is activated and delta18o activated');
    8188                        fielddisplay(obj,'delta18o','delta18o, required if pdd is activated and delta18o activated');
     
    94101                        WriteData(fid,'object',obj,'fieldname','isdelta18o','format','Boolean');
    95102                        if obj.ispdd,
    96                                 if obj.isdelta18o
     103                                WriteData(fid,'object',obj,'fieldname','desfac','format','Double');
     104                                WriteData(fid,'object',obj,'fieldname','s0p','format','Double');
     105                                if obj.isdelta18o
    97106                                        WriteData(fid,'object',obj,'fieldname','temperatures_presentday','format','DoubleMat','mattype',1);
    98107                                        WriteData(fid,'object',obj,'fieldname','temperatures_lgm','format','DoubleMat','mattype',1);
  • issm/trunk-jpl/src/m/enum/EnumDefinitions.py

    r14724 r14735  
    19991999        return StringToEnum('SurfaceforcingsIspdd')[0]
    20002000
     2001def SurfaceforcingsDesfacEnum():
     2002        """
     2003        SURFACEFORCINGSDESFACENUM - Enum of SurfaceforcingsDesfac
     2004
     2005           Usage:
     2006              macro=SurfaceforcingsDesfacEnum()
     2007        """
     2008
     2009        return StringToEnum('SurfaceforcingsDesfac')[0]
     2010
     2011def SurfaceforcingsS0pEnum():
     2012        """
     2013        SURFACEFORCINGSS0PENUM - Enum of SurfaceforcingsS0p
     2014
     2015           Usage:
     2016              macro=SurfaceforcingsS0pEnum()
     2017        """
     2018
     2019        return StringToEnum('SurfaceforcingsS0p')[0]
     2020
    20012021def SurfaceforcingsIssmbgradientsEnum():
    20022022        """
     
    52575277        """
    52585278
    5259         return 524
    5260 
     5279        return 526
     5280
  • issm/trunk-jpl/src/m/enum/MaximumNumberOfEnums.m

    r14724 r14735  
    99%      macro=MaximumNumberOfEnums()
    1010
    11 macro=524;
     11macro=526;
Note: See TracChangeset for help on using the changeset viewer.