| 1 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Some hardcoded parameters for this deck%%%%%%%%%%
|
|---|
| 2 |
|
|---|
| 3 | %some parameterization for this parameter file :)
|
|---|
| 4 | thicknesspath=options.thicknesspath;
|
|---|
| 5 | firnpath=options.firnpath;
|
|---|
| 6 | surfacepath=options.surfacepath;
|
|---|
| 7 | mosaicpath=options.mosaicpath;
|
|---|
| 8 | temperaturepath=options.temperaturepath;
|
|---|
| 9 | heatfluxpath=options.heatfluxpath;
|
|---|
| 10 |
|
|---|
| 11 | %Solution parameters
|
|---|
| 12 |
|
|---|
| 13 | %parallelization
|
|---|
| 14 | md.cluster=oshostname();
|
|---|
| 15 | md.np=8;
|
|---|
| 16 | md.time=60;
|
|---|
| 17 |
|
|---|
| 18 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|---|
| 19 |
|
|---|
| 20 | disp(' reading bedmap thicknesses');
|
|---|
| 21 | md.thickness=InterpFromFile(md.x,md.y,thicknesspath,10);
|
|---|
| 22 |
|
|---|
| 23 | disp(' reading firn layer');
|
|---|
| 24 | md.firn_layer=InterpFromFile(md.x,md.y,firnpath,0);
|
|---|
| 25 |
|
|---|
| 26 | disp(' reading Bamber dem');
|
|---|
| 27 | md.surface=InterpFromFile(md.x,md.y,surfacepath,10);
|
|---|
| 28 |
|
|---|
| 29 | %correct the surface by taking into account the firn layer
|
|---|
| 30 | rho_ice=917;
|
|---|
| 31 | rho_firn=830;
|
|---|
| 32 | firn_layer_correction=md.firn_layer*(1-rho_firn/rho_ice);
|
|---|
| 33 | md.surface=md.surface-firn_layer_correction;
|
|---|
| 34 |
|
|---|
| 35 | %Correct thickness by assuming hydrostatic equilibrium 10km down the grounding line
|
|---|
| 36 | md=ThicknessCorrection(md);
|
|---|
| 37 |
|
|---|
| 38 | %some corrections
|
|---|
| 39 | minsurf=1;
|
|---|
| 40 | pos=find(isnan(md.surface) | (md.surface<=0));
|
|---|
| 41 | md.surface(pos)=minsurf;
|
|---|
| 42 | pos=find(isnan(md.thickness) | (md.thickness<=0));
|
|---|
| 43 | md.thickness(pos)=minsurf/(1-md.rho_ice/md.rho_water);
|
|---|
| 44 | md.bed=md.surface-md.thickness;
|
|---|
| 45 |
|
|---|
| 46 | disp(' reading velocities from Rignot');
|
|---|
| 47 | md=plugvelocities(md,mosaicpath,0);
|
|---|
| 48 |
|
|---|
| 49 | %drag md.drag or stress
|
|---|
| 50 | md.drag_type=2; %0 none 1 plastic 2 viscous
|
|---|
| 51 | md.drag_coefficient=300*ones(md.numberofgrids,1); %q=1.
|
|---|
| 52 |
|
|---|
| 53 | %zones of high md.drag
|
|---|
| 54 | %[rhighmd.drag_coefficient]=ArgusContourToMesh(md.elements,md.x,md.y,'HighDrag.exp','node');
|
|---|
| 55 | %pos=find(highmd.drag);md.drag_coefficient(pos)=10^3;
|
|---|
| 56 |
|
|---|
| 57 | %Take care of iceshelves: no drag md.drag_coefficient
|
|---|
| 58 | pos=find(md.elementoniceshelf);
|
|---|
| 59 | md.drag_coefficient(md.elements(pos,:))=0;
|
|---|
| 60 | md.drag_p=ones(md.numberofelements,1);
|
|---|
| 61 | md.drag_q=ones(md.numberofelements,1);
|
|---|
| 62 |
|
|---|
| 63 | %Load md.temperature from Giovinetto:
|
|---|
| 64 | disp(' loading temperature');
|
|---|
| 65 | md.temperature=InterpFromFile(md.x,md.y,temperaturepath,253);
|
|---|
| 66 | while ~isempty(find(isnan(md.temperature))),
|
|---|
| 67 | pos=find(isnan(md.temperature));
|
|---|
| 68 | if ((pos+1)<=length(md.temperature)),
|
|---|
| 69 | md.temperature(pos)=md.temperature(pos+1);
|
|---|
| 70 | else
|
|---|
| 71 | md.temperature(pos)=md.temperature(pos-1);
|
|---|
| 72 | end
|
|---|
| 73 | end
|
|---|
| 74 |
|
|---|
| 75 | %flow law
|
|---|
| 76 | disp(' creating flow law paramters');
|
|---|
| 77 | md.rheology_n=3*ones(md.numberofelements,1);
|
|---|
| 78 | md.rheology_B=paterson(md.temperature);
|
|---|
| 79 |
|
|---|
| 80 | %zones of shear margin softening
|
|---|
| 81 | %[rweakb]=ArgusContourToMesh(md.elements,md.x,md.y,'Weakmd.BPIG.exp','node');
|
|---|
| 82 | %pos=find(weakb);md.rheology_B(pos)=.3*md.rheology_B(pos);
|
|---|
| 83 |
|
|---|
| 84 | %rifts: none for now.
|
|---|
| 85 | %if isstruct(rifts), %we have rifts, choose whether they are full of water or air.
|
|---|
| 86 | % for i=1:length(rifts),
|
|---|
| 87 | % rifts(i).fill='water'; %choice:'air','water','ice'
|
|---|
| 88 | % rifts(i).friction=10^11;
|
|---|
| 89 | % end
|
|---|
| 90 | %end
|
|---|
| 91 |
|
|---|
| 92 | disp(' creating accumulation rates');
|
|---|
| 93 | md.accumulation_rate=ones(md.numberofgrids,1); %1m/a
|
|---|
| 94 |
|
|---|
| 95 | %Deal with boundary conditions:
|
|---|
| 96 |
|
|---|
| 97 | disp(' thermal model');
|
|---|
| 98 | md.melting_rate=zeros(md.numberofgrids,1);
|
|---|
| 99 | md.observed_temperature=md.temperature;
|
|---|
| 100 |
|
|---|
| 101 | disp(' reading geothermal flux');
|
|---|
| 102 | load(heatfluxpath);
|
|---|
| 103 | md.geothermalflux=InterpFromGridToMesh(x_m,y_m,heatflux_Antarctica,md.x,md.y,80);
|
|---|
| 104 | pos=find(md.geothermalflux==0);md.geothermalflux(pos)=80;
|
|---|
| 105 | md.geothermalflux=md.geothermalflux/1000; %map is given in mW/m^2, we need it in W/m^2
|
|---|
| 106 |
|
|---|
| 107 | disp(' boundary conditions');
|
|---|
| 108 | md=SetMarineIceSheetBC(md);
|
|---|
| 109 |
|
|---|
| 110 |
|
|---|
| 111 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|---|
| 112 |
|
|---|
| 113 | md.counter=3;
|
|---|