| 1 | disp(' creating thickness');
|
|---|
| 2 | hmin=0.01;
|
|---|
| 3 | hmax=2756.7;
|
|---|
| 4 | radius=sqrt((md.mesh.x).^2+(md.mesh.y).^2);
|
|---|
| 5 | radiusmax=max(radius);
|
|---|
| 6 | radius(find(radius>(1.-10^-9)*radiusmax))=radiusmax; %eliminate roundoff issues in next statement
|
|---|
| 7 | md.geometry.thickness=hmin*ones(size(md.mesh.x,1),1)+hmax*(4.*((1./2.)^(4./3.)*ones(size(md.mesh.x,1),1)-((radius)./(2.*radiusmax)).^(4./3.))).^(3./8.);
|
|---|
| 8 | md.geometry.base=0.*md.geometry.thickness;
|
|---|
| 9 | md.geometry.surface=md.geometry.base+md.geometry.thickness;
|
|---|
| 10 |
|
|---|
| 11 | disp(' creating drag');
|
|---|
| 12 | md.friction.coefficient=20.*ones(md.mesh.numberofvertices,1);
|
|---|
| 13 | md.friction.coefficient(find(md.mask.groundedice_levelset<0.))=0.;
|
|---|
| 14 | md.friction.p=ones(md.mesh.numberofelements,1);
|
|---|
| 15 | md.friction.q=ones(md.mesh.numberofelements,1);
|
|---|
| 16 |
|
|---|
| 17 | disp(' creating temperatures');
|
|---|
| 18 | tmin=238.15; %K
|
|---|
| 19 | st=1.67*10^-2/1000.; %k/m
|
|---|
| 20 | md.initialization.temperature=tmin+st*radius;
|
|---|
| 21 | md.basalforcings.geothermalflux=4.2*10^-2*ones(md.mesh.numberofvertices,1);
|
|---|
| 22 |
|
|---|
| 23 | disp(' creating flow law parameter');
|
|---|
| 24 | md.materials.rheology_B=6.81*10^7*ones(md.mesh.numberofvertices,1); %to have the same B as the analytical solution
|
|---|
| 25 | md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
|
|---|
| 26 |
|
|---|
| 27 | disp(' creating surface mass balance');
|
|---|
| 28 | smb_max=0.5; %m/yr
|
|---|
| 29 | sb=10^-2/1000.; %m/yr/m
|
|---|
| 30 | rel=450.*1000.; %m
|
|---|
| 31 | md.smb.mass_balance=min(smb_max,sb*(rel-radius));
|
|---|
| 32 |
|
|---|
| 33 | disp(' creating velocities');
|
|---|
| 34 | constant=0.3;
|
|---|
| 35 | md.inversion.vx_obs=constant/2.*md.mesh.x.*(md.geometry.thickness).^-1;
|
|---|
| 36 | md.inversion.vy_obs=constant/2.*md.mesh.y.*(md.geometry.thickness).^-1;
|
|---|
| 37 | md.inversion.vel_obs=sqrt((md.inversion.vx_obs).^2+(md.inversion.vy_obs).^2);
|
|---|
| 38 | md.initialization.vx=zeros(md.mesh.numberofvertices,1);
|
|---|
| 39 | md.initialization.vy=zeros(md.mesh.numberofvertices,1);
|
|---|
| 40 | md.initialization.vz=zeros(md.mesh.numberofvertices,1);
|
|---|
| 41 | md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
|
|---|
| 42 |
|
|---|
| 43 | %Deal with boundary conditions:
|
|---|
| 44 | disp(' boundary conditions for stressbalance model:');
|
|---|
| 45 | md=SetMarineIceSheetBC(md,'../Exp/RoundFrontEISMINT.exp');
|
|---|
| 46 |
|
|---|
| 47 | radius=sqrt((md.mesh.x).^2+(md.mesh.y).^2);
|
|---|
| 48 | pos=find(radius==min(radius));
|
|---|
| 49 | md.mesh.x(pos)=0.; md.mesh.y(pos)=0.; %the closest node to the center is changed to be exactly at the center
|
|---|
| 50 |
|
|---|
| 51 | md.stressbalance.spcvx(pos)=0.;
|
|---|
| 52 | md.stressbalance.spcvy(pos)=0.;
|
|---|
| 53 | md.stressbalance.spcvz(pos)=0.;
|
|---|