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.firn_layer=10*ones(md.numberofgrids,1);
|
---|
8 | md.bed=0*md.thickness;
|
---|
9 | md.surface=md.bed+md.thickness;
|
---|
10 |
|
---|
11 | disp(' creating drag');
|
---|
12 | md.drag_type=2; %0 none 1 plastic 2 viscous
|
---|
13 | md.drag_coefficient=20*ones(md.numberofgrids,1); %q=1. %no drag is specified in the analytical solution
|
---|
14 | %Take care of iceshelves: no basal drag
|
---|
15 | pos=find(md.elementoniceshelf);
|
---|
16 | md.drag_coefficient(md.elements(pos,:))=0;
|
---|
17 | md.drag_p=ones(md.numberofelements,1);
|
---|
18 | md.drag_q=ones(md.numberofelements,1);
|
---|
19 |
|
---|
20 | disp(' creating temperatures');
|
---|
21 | tmin=238.15; %K
|
---|
22 | st=1.67*10^-2/1000; %k/m;
|
---|
23 | md.observed_temperature=(tmin+st*radius);
|
---|
24 | md.temperature=md.observed_temperature;
|
---|
25 | md.geothermalflux=4.2*10^-2*ones(md.numberofgrids,1);
|
---|
26 |
|
---|
27 | disp(' creating flow law paramter');
|
---|
28 | md.rheology_B=6.81*10^(7)*ones(md.numberofgrids,1); %to have the same B as the analytical solution
|
---|
29 | md.rheology_n=3*ones(md.numberofelements,1);
|
---|
30 |
|
---|
31 | disp(' creating accumulation rates');
|
---|
32 | acc_max=0.5; %m/yr
|
---|
33 | sb=10^-2/1000; %m/yr/m
|
---|
34 | rel=450*1000; %m
|
---|
35 | md.accumulation_rate=min(acc_max,sb*(rel-radius));
|
---|
36 |
|
---|
37 | disp(' creating velocities');
|
---|
38 | constant=0.3;
|
---|
39 | md.vx_obs=constant/2*md.x.*(md.thickness).^-1;
|
---|
40 | md.vy_obs=constant/2*md.y.*(md.thickness).^-1;
|
---|
41 | md.vel_obs=(sqrt((md.vx_obs).^2+(md.vy_obs).^2));
|
---|
42 | md.vx=zeros(md.numberofgrids,1);
|
---|
43 | md.vy=zeros(md.numberofgrids,1);
|
---|
44 | md.vz=zeros(md.numberofgrids,1);
|
---|
45 | md.pressure=zeros(md.numberofgrids,1);
|
---|
46 |
|
---|
47 | %Deal with boundary conditions:
|
---|
48 | disp(' boundary conditions for diagnostic model: ');
|
---|
49 | md=SetMarineIceSheetBC(md,'../Exp/RoundFrontEISMINT.exp');
|
---|
50 |
|
---|
51 | radius=sqrt((md.x).*md.x+(md.y).*md.y);
|
---|
52 | pos=find(radius==min(radius));
|
---|
53 | md.x(pos)=0; md.y(pos)=0; %the closest node to the center is changed to be exactly at the center
|
---|
54 |
|
---|
55 | md.spcvelocity(pos,1:3)=1;
|
---|
56 | md.spcvelocity(pos,4:6)=0;
|
---|
57 |
|
---|
58 | %parallel options
|
---|
59 | md.cluster=oshostname();
|
---|