ThicknessCorrection

PURPOSE ^

THICKNESSCORRECTION - correct the thickness of the ice shelf near the grounding line

SYNOPSIS ^

function md=ThicknessCorrection(md,filename,distance)

DESCRIPTION ^

THICKNESSCORRECTION - correct the thickness of the ice shelf near the grounding line

   This routine corrects the thickness and the bed at the transition ice sheet - shelf
   due to the assumption of hydrostatic equilibrium.
   it treats the area given by the Argus file given in input as follows:
   1: linearize the transition iceshelf ice sheet
    thickness = coeff * thickness_GL + (1-coeff) * thickness_shelf
    coeff = min(0,ditance to GL / distance)
   2: take the minimum between this linearized thickness and the previous thickness
    thickness = min(linearized thickness, previous thickness)

   Usage:
      md=ThicknessCorrection(md,filename,distance)

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function md=ThicknessCorrection(md,filename,distance)
0002 %THICKNESSCORRECTION - correct the thickness of the ice shelf near the grounding line
0003 %
0004 %   This routine corrects the thickness and the bed at the transition ice sheet - shelf
0005 %   due to the assumption of hydrostatic equilibrium.
0006 %   it treats the area given by the Argus file given in input as follows:
0007 %   1: linearize the transition iceshelf ice sheet
0008 %    thickness = coeff * thickness_GL + (1-coeff) * thickness_shelf
0009 %    coeff = min(0,ditance to GL / distance)
0010 %   2: take the minimum between this linearized thickness and the previous thickness
0011 %    thickness = min(linearized thickness, previous thickness)
0012 %
0013 %   Usage:
0014 %      md=ThicknessCorrection(md,filename,distance)
0015 
0016 %some checks
0017 if ~exist(filename),
0018     error(['ThicknessCorrection error message: the file ' filename  ' does not exist']);
0019 end
0020 
0021 in=ArgusContourToMesh(md.elements,md.x,md.y,expread(filename,1),'node',1);
0022 pos_shelf=find(in & md.gridoniceshelf);
0023 pos_sheet=find(in & ~md.gridoniceshelf);
0024 for i=1:length(pos_shelf)
0025     %search the grid on ice sheet the closest to i
0026     [d posd]=min(sqrt((md.x(pos_shelf(i))-md.x(pos_sheet)).^2+(md.y(pos_shelf(i))-md.y(pos_sheet)).^2));
0027     %thickness is minimum between hydrostatic equilibrium and thickness of the closest grid on ice sheet
0028     coeff=min(1,d/distance);
0029     md.thickness(pos_shelf(i))=min(coeff*md.thickness(pos_shelf(i))+(1-coeff)*md.thickness(pos_sheet(posd)),md.thickness(pos_shelf(i)));
0030 end
0031 
0032 %check the computed thickness
0033 di=md.rho_ice/md.rho_water;
0034 minth=1/(1-di);
0035 pos=find(isnan(md.thickness) | (md.thickness<=0));
0036 md.thickness(pos)=minth;
0037 
0038 %change bed to take into account the changes in thickness
0039 md.bed=md.surface-md.thickness;

Generated on Sun 29-Mar-2009 20:22:55 by m2html © 2003