Changeset 12293


Ignore:
Timestamp:
05/29/12 09:20:06 (13 years ago)
Author:
lemorzad
Message:
 
Location:
issm/trunk/src
Files:
1 added
12 edited
1 copied

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h

    r11995 r12293  
    484484        PatersonEnum,
    485485        ArrheniusEnum,
     486        SurfaceforcingsIspddEnum,
    486487        /*}}}*/
    487488        MaximumNumberOfEnums
  • issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp

    r11995 r12293  
    452452                case PatersonEnum : return "Paterson";
    453453                case ArrheniusEnum : return "Arrhenius";
     454                case SurfaceforcingsIspddEnum : return "SurfaceforcingsIspdd";
    454455                default : return "unknown";
    455456
  • issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp

    r11995 r12293  
    8989        parameters->AddObject(iomodel->CopyConstantObject(InversionIscontrolEnum));
    9090        parameters->AddObject(iomodel->CopyConstantObject(InversionTaoEnum));
     91        parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsIspddEnum));
    9192
    9293        /*some parameters that did not come with the iomodel: */
  • issm/trunk/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp

    r11995 r12293  
    2020        int    stabilization;
    2121        bool   dakota_analysis;
     22        bool   ispdd;
    2223
    2324        /*Fetch data needed: */
     
    2728        iomodel->Constant(&dakota_analysis,QmuIsdakotaEnum);
    2829        iomodel->FetchData(1,MeshElementsEnum);
     30        iomodel->Constant(&ispdd,SurfaceforcingsIspddEnum);
    2931
    3032        /*Update elements: */
     
    4446        iomodel->FetchDataToInput(elements,MaskElementonfloatingiceEnum);
    4547        iomodel->FetchDataToInput(elements,MaskElementonwaterEnum);
     48        iomodel->FetchDataToInput(elements,SurfaceforcingsPrecipitationEnum);
    4649        iomodel->FetchDataToInput(elements,SurfaceforcingsMassBalanceEnum);
    4750        iomodel->FetchDataToInput(elements,BasalforcingsMeltingRateEnum);
     
    6669                iomodel->FetchDataToInput(elements,TemperatureEnum);
    6770        }
    68 
     71        if(ispdd){
     72          iomodel->FetchDataToInput(elements,VyEnum);
     73          iomodel->FetchDataToInput(elements,ThermalSpctemperatureEnum);
     74          iomodel->FetchDataToInput(elements,SurfaceforcingsPrecipitationEnum);
     75        }
    6976        /*Free data: */
    7077        iomodel->DeleteData(1,MeshElementsEnum);
  • issm/trunk/src/c/modules/PositiveDegreeDayx/PositiveDegreeDayx.cpp

    r11778 r12293  
    2020//    monthly mean precip rate (m/yr water equivalent): vPrec(NA,NTIME)
    2121//    OUTPUT: mass-balance (m/yr ice): agd(NA)
    22 //    mean annual surface temperature (degrees C): Tsurf(NA)
     22//    mean annual sssurface temperature (degrees C): Tsurf(NA)
    2323
    2424  int    i, it, jj, itm;
     
    2626  double signorm = 5.5;      // signorm : sigma of the temperature distribution for a normal day
    2727  double siglim;       // sigma limit for the integration which is equal to 2.5 sigmanorm
    28   double signormc;     // sigma of the temperature distribution for cloudy day
    29   double siglimc=0, siglim0, siglim0c;
     28  double signormc = signorm - 0.5;     // sigma of the temperature distribution for cloudy day
     29  double siglimc, siglim0, siglim0c;
    3030  double tstep, tsint, tint, tstepc;
    3131  int    NPDMAX = 1504, NPDCMAX = 1454;
     
    4343  pds=(double*)xmalloc(NPDCMAX*sizeof(double)+1);
    4444 
    45  
    46   // PDD constant
    47   siglim = 2.5*signorm;
    48  
    4945  // initialize PDD (creation of a lookup table)
    5046  tstep = 0.1;
     
    5349  snormfac = 1.0/(signorm*sqrt(2.0*acos(-1.0)));
    5450  siglim = 2.5*signorm;
     51  siglimc = 2.5*signormc
     52  siglim0 =  siglim/DT + 0.5
     53  siglim0c =  siglimc/DT + 0.5
     54  PDup = siglimc+PDCUT
     55
    5556  itm = (int)(2*siglim/DT + 1.5);
    5657 
  • issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp

    r11995 r12293  
    462462              else if (strcmp(name,"Paterson")==0) return PatersonEnum;
    463463              else if (strcmp(name,"Arrhenius")==0) return ArrheniusEnum;
     464              else if (strcmp(name,"SurfaceforcingsIspdd")==0) return SurfaceforcingsIspddEnum;
    464465         else stage=5;
    465466   }
  • issm/trunk/src/c/modules/modules.h

    r11995 r12293  
    9393#include "./ConstraintsStatex/ConstraintsStatex.h"
    9494#include "./PointCloudFindNeighborsx/PointCloudFindNeighborsx.h"
     95#include "./PositiveDegreeDayx/PositiveDegreeDayx.h"
    9596#include "./PropagateFlagsFromConnectivityx/PropagateFlagsFromConnectivityx.h"
    9697#include "./Dakotax/Dakotax.h"
     
    122123#include "./VecMergex/VecMergex.h"
    123124
     125
    124126#endif
  • issm/trunk/src/c/objects/Elements/Penta.cpp

    r11995 r12293  
    24342434   // PDD and PD constants and variables
    24352435   double siglim;          // sigma limit for the integration which is equal to 2.5 sigmanorm
    2436    double siglimc=0, siglim0, siglim0c;
     2436   double signormc = signorm - 0.5;     // sigma of the temperature distribution for cloudy day
     2437   double siglimc, siglim0, siglim0c;
    24372438   double PDup, pddsig, PDCUT = 2.0; // PDcut: rain/snow cutoff temperature (C)
    24382439   double DT = 0.02;
     
    24802481   /*Get material parameters :*/
    24812482   rho_ice=matpar->GetRhoIce();
    2482    rho_water=matpar->GetRhoWater();
    2483    density=rho_ice/rho_water;
     2483   //rho_freshwater=matpar->GetRhoWater();
    24842484   
    2485    sconv=(rho_water/rho_ice)/12.; //rhow_rain/rhoi / 12 months
     2485   sconv=(1000/rho_ice)/12.; //rhow_rain/rhoi / 12 months
    24862486     
    24872487     /*PDD constant*/
    24882488   siglim = 2.5*signorm;
     2489   siglimc = 2.5*signormc
    24892490   siglim0 =  siglim/DT + 0.5;
    24902491   siglim0c =  siglimc/DT + 0.5;
  • issm/trunk/src/c/objects/Elements/Tria.cpp

    r11995 r12293  
    22382238
    22392239   int    i,iqj,imonth;
    2240    double agd[NUMVERTICES];  // surface and basal
     2240   double agd[NUMVERTICES];             // surface mass balance
    22412241   double saccu[NUMVERTICES] = {0};     // yearly surface accumulation
    22422242   double smelt[NUMVERTICES] = {0};     // yearly melt
     
    22472247   double sconv; //rhow_rain/rhoi / 12 months
    22482248
    2249    double  rho_water,rho_ice,density;
    2250    double lapser=6.5/1000, sealev=0;    // lapse rate. degrees per meter.
    2251    double desfac = 0.5;                 //desert elevation factor
    2252    double s0p[NUMVERTICES]={0};         //should be set to elevation from precip source
    2253    double s0t[NUMVERTICES]={0};         //should be set to elevation from temperature source
     2249   double rho_water,rho_ice,density;
     2250   double lapser=6.5/1000, sealev=0;    // lapse rate. degrees per meter. 7.5 lev's 99 paper, 9 Marshall 99 paper
     2251   double desfac = 0.5;                 // desert elevation factor
     2252   double s0p[NUMVERTICES]={0};         // should be set to elevation from precip source
     2253   double s0t[NUMVERTICES]={0};         // should be set to elevation from temperature source
    22542254   double st;             // elevation between altitude of the temp record and current altitude
    22552255   double sp;             // elevation between altitude of the prec record and current altitude
     
    22582258   // PDD and PD constants and variables
    22592259   double siglim;          // sigma limit for the integration which is equal to 2.5 sigmanorm
    2260    double siglimc=0, siglim0, siglim0c;
     2260   double signormc = signorm - 0.5;     // sigma of the temperature distribution for cloudy day
     2261   double siglimc, siglim0, siglim0c;
    22612262   double PDup, pddsig, PDCUT = 2.0; // PDcut: rain/snow cutoff temperature (C)
    22622263   double DT = 0.02;
     
    22752276   
    22762277   double h[NUMVERTICES],s[NUMVERTICES],ttmp[NUMVERTICES],prectmp[NUMVERTICES]; // ,b[NUMVERTICES]
    2277    double t[NUMVERTICES][12],prec[NUMVERTICES][12];
     2278   double t[NUMVERTICES+1][12],prec[NUMVERTICES+1][12];
    22782279   double deltm=1/12;
    22792280   int    ismon[12]={12,1,2,3,4,5,6,7,8,9,10,11};
     
    23042305   /*Get material parameters :*/
    23052306   rho_ice=matpar->GetRhoIce();
    2306    rho_water=matpar->GetRhoWater();
    2307    density=rho_ice/rho_water;
     2307   //rho_freshwater=matpar->GetRhoWater();
    23082308   
    2309    sconv=(rho_water/rho_ice)/12.; //rhow_rain/rhoi / 12 months
     2309   sconv=(1000/rho_ice)/12.; //rhow_rain/rhoi / 12 months
    23102310     
    23112311     /*PDD constant*/
    23122312   siglim = 2.5*signorm;
     2313   siglimc = 2.5*signormc
    23132314   siglim0 =  siglim/DT + 0.5;
    23142315   siglim0c =  siglimc/DT + 0.5;
     
    23352336       else {q = 1.0;}
    23362337       
    2337        qmt[i]= qmt[i] + prec[i][imonth]*sconv;  //*sconv to convert in m of ice equivalent
     2338       qmt[i]= qmt[i] + prec[i][imonth]*sconv;  //*sconv to convert in m of ice equivalent per month
    23382339       qmpt= q*prec[i][imonth]*sconv;           
    23392340       qmp[i]= qmp[i] + qmpt;
  • issm/trunk/src/c/solutions/prognostic_core.cpp

    r11995 r12293  
    1616        /*parameters: */
    1717        bool save_results;
     18        bool ispdd;
    1819
    1920        /*activate formulation: */
     
    2223        /*recover parameters: */
    2324        femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
     25        femmodel->parameters->FindParam(&ispdd,SurfaceforcingsIspddEnum);
     26
     27        if(ispdd){
     28          _printf_(VerboseSolution(),"   call positive degree day module\n");
     29          PositiveDegreeDayx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
     30        }       
    2431
    2532        _printf_(VerboseSolution(),"   call computational core\n");
    2633        solver_linear(femmodel);
    27                
     34       
    2835        if(save_results){
    2936                _printf_(VerboseSolution(),"   saving results\n");
  • issm/trunk/src/m/classes/surfaceforcings.m

    r11995 r12293  
    88                precipitation = NaN;
    99                mass_balance  = NaN;
     10                ispdd = NaN;
    1011        end
    1112        methods
     
    1920                end % }}}
    2021                function obj = setdefaultparameters(obj) % {{{
     22                 
     23                  %pdd methode not use in default mode
     24                  obj.ispdd=0;
    2125
    2226                end % }}}
     
    2933                                checkfield(md,'surfaceforcings.mass_balance','size',[md.mesh.numberofvertices 1],'NaN',1);
    3034                        end
     35                        if (ismember(PrognosticAnalysisEnum,analyses) & md.surfaceforcings.ispdd),
     36                          checkfield(md,'surfaceforcings.ispdd','numel',1,'values',[0 1]);
     37                        end
    3138                end % }}}
    3239                function disp(obj) % {{{
     
    3542                        fielddisplay(obj,'precipitation','surface precipitation [m/yr water eq]');
    3643                        fielddisplay(obj,'mass_balance','surface mass balance [m/yr ice eq]');
     44                        fielddisplay(obj,'ispdd','is pdd activated (0 or 1, default is 0)');
    3745
    3846                end % }}}
     
    4048                        WriteData(fid,'object',obj,'fieldname','precipitation','format','DoubleMat','mattype',1);
    4149                        WriteData(fid,'object',obj,'fieldname','mass_balance','format','DoubleMat','mattype',1);
     50                        WriteData(fid,'object',obj,'fieldname','ispdd','format','Boolean');
     51
    4252                end % }}}
    4353        end
  • issm/trunk/src/m/enum/EnumToModelField.m

    r11988 r12293  
    2121                case InversionVyObsEnum(), string='vy_obs'; return
    2222                case BasalforcingsMeltingRateEnum(), string='basal_melting_rate'; return
    23       case SurfaceforcingsAccumulationRateEnum(), string='surface_accumulation_rate'; return
    24                 case SurfaceforcingsAblationRateEnum(), string='surface_ablation_rate'; return
    2523                case SurfaceforcingsMassBalanceEnum(), string='surface_mass_balance'; return
    2624                otherwise, error(['Enum ' num2str(enum)  ' not found associated to any model field']);
  • issm/trunk/src/m/utils/BC/SetMarineIceSheetBC.m

    r11527 r12293  
    5858%segment on Neumann (Ice Front)
    5959pos=find(vertexonicefront(md.mesh.segments(:,1)) | vertexonicefront(md.mesh.segments(:,2)));
     60
    6061if (md.mesh.dimension==2)
    6162        pressureload=md.mesh.segments(pos,:);
     
    106107        disp('      no thermal boundary conditions created: no observed temperature found');
    107108end
     109
Note: See TracChangeset for help on using the changeset viewer.