1 | md=triangle(model,'../Exp/Square.exp',150000);
|
---|
2 | md=setmask(md,'all','');
|
---|
3 | md=parameterize(md,'../Par/SquareShelf.par');
|
---|
4 | md=setflowequation(md,'macayeal','all');
|
---|
5 | md.cluster=none;
|
---|
6 |
|
---|
7 | %redo the parameter file for this special shelf.
|
---|
8 | %constant thickness, constrained (vy=0) flow into an icefront,
|
---|
9 | %from 0 m/yr at the grounding line.
|
---|
10 |
|
---|
11 | %tighten
|
---|
12 | md.diagnostic.restol=10^-4;
|
---|
13 |
|
---|
14 | %needed later
|
---|
15 | ymin=min(md.mesh.y);
|
---|
16 | ymax=max(md.mesh.y);
|
---|
17 | xmin=min(md.mesh.x);
|
---|
18 | xmax=max(md.mesh.x);
|
---|
19 |
|
---|
20 | di=md.materials.rho_ice/md.materials.rho_water;
|
---|
21 |
|
---|
22 | h=1000;
|
---|
23 | md.geometry.thickness=h*ones(md.mesh.numberofvertices,1);
|
---|
24 | md.geometry.bed=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
|
---|
25 | md.geometry.surface=md.geometry.bed+md.geometry.thickness;
|
---|
26 |
|
---|
27 | %Initial velocity and pressure
|
---|
28 | md.initialization.vx=zeros(md.mesh.numberofvertices,1);
|
---|
29 | md.initialization.vy=zeros(md.mesh.numberofvertices,1);
|
---|
30 | md.initialization.vz=zeros(md.mesh.numberofvertices,1);
|
---|
31 | md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
|
---|
32 |
|
---|
33 | %Materials
|
---|
34 | md.initialization.temperature=(273-20)*ones(md.mesh.numberofvertices,1);
|
---|
35 | md.materials.rheology_B=paterson(md.initialization.temperature);
|
---|
36 | md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
|
---|
37 |
|
---|
38 | %Boundary conditions:
|
---|
39 | md.diagnostic.spcvx=NaN*ones(md.mesh.numberofvertices,1);
|
---|
40 | md.diagnostic.spcvy=NaN*ones(md.mesh.numberofvertices,1);
|
---|
41 | md.diagnostic.spcvz=NaN*ones(md.mesh.numberofvertices,1);
|
---|
42 |
|
---|
43 | %constrain flanks to 0 normal velocity
|
---|
44 | pos=find(md.mesh.x==xmin | md.mesh.x==xmax);
|
---|
45 | md.diagnostic.spcvx(pos)=0;
|
---|
46 | md.diagnostic.spcvz(pos)=NaN;
|
---|
47 |
|
---|
48 | %constrain grounding line to 0 velocity
|
---|
49 | pos=find(md.mesh.y==ymin);
|
---|
50 | md.diagnostic.spcvx(pos)=0;
|
---|
51 | md.diagnostic.spcvy(pos)=0;
|
---|
52 |
|
---|
53 | %icefront
|
---|
54 | nodeonicefront=zeros(md.mesh.numberofvertices,1);
|
---|
55 | pos=find(md.mesh.y==ymax); nodeonicefront(pos)=1;
|
---|
56 | pos=find(nodeonicefront(md.mesh.segments(:,1)) | nodeonicefront(md.mesh.segments(:,2))); diagnostic.icefront=md.mesh.segments(pos,:);
|
---|
57 | diagnostic.icefront=[diagnostic.icefront 1*md.mask.elementonfloatingice(diagnostic.icefront(:,end))];
|
---|
58 | md.diagnostic.icefront=diagnostic.icefront;
|
---|
59 |
|
---|
60 | md=solve(md,DiagnosticSolutionEnum);
|
---|
61 |
|
---|
62 | %create analytical solution: strain rate is constant = ((rho_ice*g*h)/4B)^3 (Paterson, 4th Edition, page 292.
|
---|
63 | %ey_c=(md.materials.rho_ice*md.constants.g*(1-di)*md.geometry.thickness./(4*md.materials.rheology_B)).^3;
|
---|
64 | %vy_c=ey_c.*md.mesh.y*md.constants.yts;
|
---|
65 |
|
---|
66 | %Fields and tolerances to track changes
|
---|
67 | field_names ={'Vy'};
|
---|
68 | field_tolerances={1e-13};
|
---|
69 | field_values={(md.results.DiagnosticSolution.Vy)};
|
---|