1 | md=mesh(model,'../Exp/Square.exp',150000);
|
---|
2 | md=geography(md,'all','');
|
---|
3 | md=parameterize(md,'../Par/SquareShelf.par');
|
---|
4 | md=setelementstype(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.eps_res=10^-4;
|
---|
13 |
|
---|
14 | %needed later
|
---|
15 | ymin=min(md.y);
|
---|
16 | ymax=max(md.y);
|
---|
17 | xmin=min(md.x);
|
---|
18 | xmax=max(md.x);
|
---|
19 |
|
---|
20 | di=md.rho_ice/md.rho_water;
|
---|
21 |
|
---|
22 | h=1000;
|
---|
23 | md.thickness=h*ones(md.numberofgrids,1);
|
---|
24 | md.bed=-md.rho_ice/md.rho_water*md.thickness;
|
---|
25 | md.surface=md.bed+md.thickness;
|
---|
26 |
|
---|
27 | %Initial velocity and pressure
|
---|
28 | md.vx=zeros(md.numberofgrids,1);
|
---|
29 | md.vy=zeros(md.numberofgrids,1);
|
---|
30 | md.vz=zeros(md.numberofgrids,1);
|
---|
31 | md.pressure=zeros(md.numberofgrids,1);
|
---|
32 |
|
---|
33 | %Materials
|
---|
34 | md.observed_temperature=(273-20)*ones(md.numberofgrids,1);
|
---|
35 | md.rheology_B=paterson(md.observed_temperature);
|
---|
36 | md.rheology_n=3*ones(md.numberofelements,1);
|
---|
37 | md.temperature=md.observed_temperature;
|
---|
38 |
|
---|
39 | %Boundary conditions:
|
---|
40 | md.spcvelocity=zeros(md.numberofgrids,6);
|
---|
41 |
|
---|
42 | %constrain flanks to 0 normal velocity
|
---|
43 | pos=find(md.x==xmin | md.x==xmax);
|
---|
44 | md.spcvelocity(pos,1)=1;
|
---|
45 | md.spcvelocity(pos,3)=0;
|
---|
46 |
|
---|
47 | %constrain grounding line to 0 velocity
|
---|
48 | pos=find(md.y==ymin);
|
---|
49 | md.spcvelocity(pos,1:2)=1;
|
---|
50 | md.spcvelocity(pos,3:4)=0;
|
---|
51 |
|
---|
52 | %icefront
|
---|
53 | gridonicefront=zeros(md.numberofgrids,1);
|
---|
54 | pos=find(md.y==ymax); gridonicefront(pos)=1;
|
---|
55 | pos=find(gridonicefront(md.segments(:,1)) | gridonicefront(md.segments(:,2))); pressureload=md.segments(pos,:);
|
---|
56 | pressureload=[pressureload WaterEnum*md.elementoniceshelf(pressureload(:,end))];
|
---|
57 | md.pressureload=pressureload;
|
---|
58 |
|
---|
59 | md=solve(md,'analysis_type',DiagnosticSolutionEnum);
|
---|
60 |
|
---|
61 | %create analytical solution: strain rate is constant = ((rho_ice*g*h)/4B)^3 (Paterson, 4th Edition, page 292.
|
---|
62 | %ey_c=(md.rho_ice*md.g*(1-di)*md.thickness./(4*md.rheology_B)).^3;
|
---|
63 | %vy_c=ey_c.*md.y*md.yts;
|
---|
64 |
|
---|
65 | %Fields and tolerances to track changes
|
---|
66 | field_names ={'Vy'};
|
---|
67 | field_tolerances={1e-13};
|
---|
68 | field_values={PatchToVec(md.results.DiagnosticSolution.Vy)};
|
---|