[5117] | 1 | disp(' creating thickness');
|
---|
| 2 | hmin=0.01;
|
---|
| 3 | hmax=2756.7;
|
---|
| 4 | radius=(sqrt((md.x).^2+(md.y).^2));
|
---|
| 5 | radiusmax=max(radius);
|
---|
| 6 | md.thickness=hmin*ones(size(md.x,1),1)+hmax*(4*((1/2)^(4/3)*ones(size(md.x,1),1)-((radius)./(2*radiusmax)).^(4/3))).^(3/8);
|
---|
| 7 | md.bed=0*md.thickness;
|
---|
| 8 | md.surface=md.bed+md.thickness;
|
---|
| 9 |
|
---|
| 10 | disp(' creating drag');
|
---|
[9610] | 11 | md.friction.coefficient=20*ones(md.numberofnodes,1); %q=1. %no drag is specified in the analytical solution
|
---|
[5117] | 12 | %Take care of iceshelves: no basal drag
|
---|
[9641] | 13 | pos=find(md.mask.elementonfloatingice);
|
---|
[9610] | 14 | md.friction.coefficient(md.elements(pos,:))=0;
|
---|
| 15 | md.friction.p=ones(md.numberofelements,1);
|
---|
| 16 | md.friction.q=ones(md.numberofelements,1);
|
---|
[5117] | 17 |
|
---|
| 18 | disp(' creating temperatures');
|
---|
| 19 | tmin=238.15; %K
|
---|
| 20 | st=1.67*10^-2/1000; %k/m;
|
---|
[9684] | 21 | md.initialization.temperature=(tmin+st*radius);
|
---|
[9611] | 22 | md.basalforcings.geothermalflux=4.2*10^-2*ones(md.numberofnodes,1);
|
---|
[5117] | 23 |
|
---|
| 24 | disp(' creating flow law paramter');
|
---|
[9636] | 25 | md.materials.rheology_B=6.81*10^(7)*ones(md.numberofnodes,1); %to have the same B as the analytical solution
|
---|
| 26 | md.materials.rheology_n=3*ones(md.numberofelements,1);
|
---|
[5117] | 27 |
|
---|
[8399] | 28 | disp(' creating surface mass balance');
|
---|
| 29 | smb_max=0.5; %m/yr
|
---|
[5117] | 30 | sb=10^-2/1000; %m/yr/m
|
---|
| 31 | rel=450*1000; %m
|
---|
[9607] | 32 | md.surfaceforcings.mass_balance=min(smb_max,sb*(rel-radius));
|
---|
[5117] | 33 |
|
---|
| 34 | disp(' creating velocities');
|
---|
| 35 | constant=0.3;
|
---|
[9681] | 36 | md.inversion.vx_obs=constant/2*md.x.*(md.thickness).^-1;
|
---|
| 37 | md.inversion.vy_obs=constant/2*md.y.*(md.thickness).^-1;
|
---|
| 38 | md.inversion.vel_obs=(sqrt((md.inversion.vx_obs).^2+(md.inversion.vy_obs).^2));
|
---|
[9684] | 39 | md.initialization.vx=zeros(md.numberofnodes,1);
|
---|
| 40 | md.initialization.vy=zeros(md.numberofnodes,1);
|
---|
| 41 | md.initialization.vz=zeros(md.numberofnodes,1);
|
---|
| 42 | md.initialization.pressure=zeros(md.numberofnodes,1);
|
---|
[5117] | 43 |
|
---|
| 44 | %Deal with boundary conditions:
|
---|
| 45 | disp(' boundary conditions for diagnostic model: ');
|
---|
| 46 | md=SetMarineIceSheetBC(md,'../Exp/RoundFrontEISMINT.exp');
|
---|
| 47 |
|
---|
| 48 | radius=sqrt((md.x).*md.x+(md.y).*md.y);
|
---|
| 49 | pos=find(radius==min(radius));
|
---|
| 50 | md.x(pos)=0; md.y(pos)=0; %the closest node to the center is changed to be exactly at the center
|
---|
| 51 |
|
---|
[9679] | 52 | md.diagnostic.spcvx(pos)=0;
|
---|
| 53 | md.diagnostic.spcvy(pos)=0;
|
---|
| 54 | md.diagnostic.spcvz(pos)=0;
|
---|