Changeset 11192


Ignore:
Timestamp:
01/24/12 15:19:29 (13 years ago)
Author:
seroussi
Message:

added md.prognostic.min_thickness to have better control of minimum ice thickness

Location:
issm/trunk-jpl/src
Files:
1 added
7 edited

Legend:

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

    r10975 r11192  
    126126        MiscellaneousNameEnum, //FIXME: only used by qmu, should not be marshalled (already in queueing script)
    127127        PrognosticHydrostaticAdjustmentEnum,
     128        PrognosticMinThicknessEnum,
    128129        PrognosticPenaltyFactorEnum,
    129130        PrognosticSpcthicknessEnum,
  • issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp

    r10975 r11192  
    130130                case MiscellaneousNameEnum : return "MiscellaneousName";
    131131                case PrognosticHydrostaticAdjustmentEnum : return "PrognosticHydrostaticAdjustment";
     132                case PrognosticMinThicknessEnum : return "PrognosticMinThickness";
    132133                case PrognosticPenaltyFactorEnum : return "PrognosticPenaltyFactor";
    133134                case PrognosticSpcthicknessEnum : return "PrognosticSpcthickness";
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp

    r10975 r11192  
    5151        parameters->AddObject(iomodel->CopyConstantObject(PrognosticStabilizationEnum));
    5252        parameters->AddObject(iomodel->CopyConstantObject(DiagnosticPenaltyFactorEnum));
     53        parameters->AddObject(iomodel->CopyConstantObject(PrognosticMinThicknessEnum));
    5354        parameters->AddObject(iomodel->CopyConstantObject(PrognosticPenaltyFactorEnum));
    5455        parameters->AddObject(iomodel->CopyConstantObject(ThermalPenaltyFactorEnum));
  • issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp

    r10975 r11192  
    128128        else if (strcmp(name,"MiscellaneousName")==0) return MiscellaneousNameEnum;
    129129        else if (strcmp(name,"PrognosticHydrostaticAdjustment")==0) return PrognosticHydrostaticAdjustmentEnum;
     130        else if (strcmp(name,"PrognosticMinThickness")==0) return PrognosticMinThicknessEnum;
    130131        else if (strcmp(name,"PrognosticPenaltyFactor")==0) return PrognosticPenaltyFactorEnum;
    131132        else if (strcmp(name,"PrognosticSpcthickness")==0) return PrognosticSpcthicknessEnum;
  • issm/trunk-jpl/src/c/objects/Elements/Penta.cpp

    r11189 r11192  
    17851785        int    i,hydroadjustment;
    17861786        int*   doflist = NULL;
    1787         double rho_ice,rho_water;
     1787        double rho_ice,rho_water,minthickness;
    17881788        double newthickness[numdof];
    17891789        double newbed[numdof];
     
    18011801
    18021802        /*Use the dof list to index into the solution vector and extrude it */
     1803        this->parameters->FindParam(&minthickness,PrognosticMinThicknessEnum);
    18031804        for(i=0;i<numdof2d;i++){
    18041805                newthickness[i]=solution[doflist[i]];
    18051806                if(isnan(newthickness[i])) _error_("NaN found in solution vector");
    18061807                /*Constrain thickness to be at least 1m*/
    1807                 if(newthickness[i]<1) newthickness[i]=1;
     1808                if(newthickness[i]<minthickness) newthickness[i]=minthickness;
    18081809                newthickness[i+numdof2d]=newthickness[i];
    18091810        }
  • issm/trunk-jpl/src/c/objects/Elements/Tria.cpp

    r11189 r11192  
    16031603        int       i,hydroadjustment;
    16041604        int*      doflist=NULL;
    1605         double    rho_ice,rho_water;
     1605        double    rho_ice,rho_water,minthickness;
    16061606        double    newthickness[numdof];
    16071607        double    newbed[numdof];
     
    16151615
    16161616        /*Use the dof list to index into the solution vector: */
     1617        this->parameters->FindParam(&minthickness,PrognosticMinThicknessEnum);
    16171618        for(i=0;i<numdof;i++){
    16181619                newthickness[i]=solution[doflist[i]];
    16191620                if(isnan(newthickness[i])) _error_("NaN found in solution vector");
    16201621                /*Constrain thickness to be at least 1m*/
    1621                 if(newthickness[i]<1) newthickness[i]=1;
     1622                if(newthickness[i]<minthickness) newthickness[i]=minthickness;
    16221623        }
    16231624
  • issm/trunk-jpl/src/m/classes/prognostic.m

    r10999 r11192  
    77        properties (SetAccess=public)
    88                 spcthickness           = NaN;
     9                 min_thickness          = 0;
    910                 hydrostatic_adjustment = 0;
    1011                 stabilization          = 0;
     
    3637                        obj.penalty_factor=3;
    3738
     39                        %Minimum ice thickness that can be used
     40                        obj.min_thickness=1;
     41
    3842                        %Hydrostatic adjustment
    3943                        obj.hydrostatic_adjustment='Absolute';
     
    4751                        checkfield(md,'prognostic.hydrostatic_adjustment','values',{'Absolute' 'Incremental'});
    4852                        checkfield(md,'prognostic.stabilization','values',[0 1 3]);
     53                        checkfield(md,'prognostic.min_thickness','>',0);
    4954
    5055                end % }}}
     
    5257                        disp(sprintf('   Prognostic solution parameters:'));
    5358                        fielddisplay(obj,'spcthickness','thickness constraints (NaN means no constraint)');
     59                        fielddisplay(obj,'min_thickness','minimum ice thickness allowed');
    5460                        fielddisplay(obj,'hydrostatic_adjustment','adjustment of ice shelves surface and bed elevations: ''Incremental'' or ''Absolute'' ');
    5561                        fielddisplay(obj,'stabilization','0->no, 1->artificial_diffusivity, 3->discontinuous Galerkin');
     
    6268                function marshall(obj,fid) % {{{
    6369                        WriteData(fid,'object',obj,'fieldname','spcthickness','format','DoubleMat','mattype',1);
     70                        WriteData(fid,'object',obj,'fieldname','min_thickness','format','Double');
    6471                        WriteData(fid,'data',StringToEnum(obj.hydrostatic_adjustment),'format','Integer','enum',PrognosticHydrostaticAdjustmentEnum);
    6572                        WriteData(fid,'object',obj,'fieldname','stabilization','format','Integer');
Note: See TracChangeset for help on using the changeset viewer.