[27250] | 1 | %Test Name: SquareShelfSMBarma
|
---|
[26487] | 2 | md=triangle(model(),'../Exp/Square.exp',80000.);
|
---|
| 3 | md=setmask(md,'all','');
|
---|
| 4 | md=parameterize(md,'../Par/SquareShelfConstrained.par');
|
---|
| 5 | md=setflowequation(md,'SSA','all');
|
---|
| 6 | md.cluster=generic('name',oshostname(),'np',3);
|
---|
[26553] | 7 | md.transient.requested_outputs={'default','IceVolume','SmbMassBalance'};
|
---|
[26487] | 8 |
|
---|
| 9 | ymax = max(md.mesh.y);
|
---|
| 10 | xmax = max(md.mesh.x);
|
---|
| 11 | %Generate basin IDs for 3 basins
|
---|
| 12 | idbasin = zeros(md.mesh.numberofelements,1);
|
---|
| 13 | iid1 = find(md.mesh.y>=2/3*ymax);
|
---|
| 14 | iid2 = intersect(find(md.mesh.y<2/3*ymax),find(md.mesh.x>=1/3*xmax));
|
---|
| 15 | iid3 = intersect(find(md.mesh.y<2/3*ymax),find(md.mesh.x<1/3*xmax));
|
---|
| 16 | for ii=1:md.mesh.numberofelements
|
---|
| 17 | for vertex=1:3
|
---|
| 18 | if any(iid1==md.mesh.elements(ii,vertex)) %one vertex in basin 1
|
---|
| 19 | idbasin(ii) = 1;
|
---|
| 20 | end
|
---|
| 21 | end
|
---|
| 22 | if idbasin(ii)==0 %no vertex was found in basin 1
|
---|
| 23 | for vertex=1:3
|
---|
| 24 | if any(iid2==md.mesh.elements(ii,vertex)) %one vertex in basin 2
|
---|
| 25 | idbasin(ii) = 2;
|
---|
| 26 | end
|
---|
| 27 | end
|
---|
| 28 | end
|
---|
| 29 | if idbasin(ii)==0 %no vertex was found in basin 1 and 2
|
---|
| 30 | idbasin(ii) = 3;
|
---|
| 31 | end
|
---|
| 32 | end
|
---|
| 33 |
|
---|
[26495] | 34 | %SMB parameters
|
---|
[27318] | 35 | numparams = 2;
|
---|
| 36 | numbreaks = 1;
|
---|
| 37 | intercept = [0.5,1.0;1.0,0.6;,2.0,3.0]; %intercept values of SMB in basins [m ice eq./yr]
|
---|
| 38 | trendlin = [0.0,0.0;0.01,0.001;-0.01,0]; %trend values of SMB in basins [m ice eq./yr^2]
|
---|
| 39 | polynomialparams = cat(3,intercept,trendlin);
|
---|
| 40 | datebreaks = [3;3;3];
|
---|
| 41 |
|
---|
[26495] | 42 | md.timestepping.start_time = 0;
|
---|
| 43 | md.timestepping.time_step = 1;
|
---|
[27318] | 44 | md.timestepping.final_time = 7;
|
---|
[27250] | 45 | md.smb = SMBarma();
|
---|
| 46 | md.smb.num_basins = 3; %number of basins
|
---|
| 47 | md.smb.basin_id = idbasin; %prescribe basin ID number to elements
|
---|
[27318] | 48 | md.smb.num_params = numparams; %number of parameters in the polynomial
|
---|
| 49 | md.smb.num_breaks = numbreaks; %number of breakpoints
|
---|
| 50 | md.smb.polynomialparams = polynomialparams;
|
---|
| 51 | md.smb.datebreaks = datebreaks;
|
---|
[27250] | 52 | md.smb.ar_order = 4;
|
---|
| 53 | md.smb.ma_order = 1;
|
---|
| 54 | md.smb.arma_timestep = 2.0; %timestep of the ARMA model [yr]
|
---|
| 55 | md.smb.arlag_coefs = [[0.2,0.1,0.05,0.01];[0.4,0.2,-0.2,0.1];[0.4,-0.4,0.1,-0.1]];
|
---|
[27260] | 56 | md.smb.malag_coefs = [1.0;0;0.2];
|
---|
[27250] | 57 | md.smb.lapserates = [0.01,0.0;0.01,-0.01;0.0,-0.01];
|
---|
| 58 | md.smb.elevationbins = [100;150;100];
|
---|
[26495] | 59 |
|
---|
[26526] | 60 | %Stochastic forcing
|
---|
| 61 | md.stochasticforcing.isstochasticforcing = 1;
|
---|
[27250] | 62 | md.stochasticforcing.fields = [{'SMBarma'}];
|
---|
[26526] | 63 | md.stochasticforcing.covariance = [[0.15 0.08 -0.02];[0.08 0.12 -0.05];[-0.02 -0.05 0.1]]; %global covariance among- and between-fields
|
---|
| 64 | md.stochasticforcing.randomflag = 0; %fixed random seeds
|
---|
[26947] | 65 | md.stochasticforcing.stochastictimestep = 1.0;
|
---|
[26526] | 66 |
|
---|
[26487] | 67 | md=solve(md,'Transient');
|
---|
| 68 |
|
---|
| 69 | %Fields and tolerances to track changes
|
---|
| 70 | field_names ={'Vx1','Vy1','Vel1','Thickness1','Volume1','SmbMassBalance1','Vx2','Vy2','Vel2','Thickness2','Volume2','SmbMassBalance2','Vx3','Vy3','Vel3','Thickness3','Volume3','SmbMassBalance3'};
|
---|
| 71 | field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
|
---|
| 72 | 1e-13,1e-13,1e-13,1e-13,1e-13,1e-13...
|
---|
[27318] | 73 | 1e-12,1e-12,1e-12,1e-12,1e-12,1e-12};
|
---|
[26487] | 74 | field_values={...
|
---|
| 75 | (md.results.TransientSolution(1).Vx),...
|
---|
| 76 | (md.results.TransientSolution(1).Vy),...
|
---|
| 77 | (md.results.TransientSolution(1).Vel),...
|
---|
| 78 | (md.results.TransientSolution(1).Thickness),...
|
---|
| 79 | (md.results.TransientSolution(1).IceVolume),...
|
---|
[26553] | 80 | (md.results.TransientSolution(1).SmbMassBalance),...
|
---|
[26487] | 81 | (md.results.TransientSolution(2).Vx),...
|
---|
| 82 | (md.results.TransientSolution(2).Vy),...
|
---|
| 83 | (md.results.TransientSolution(2).Vel),...
|
---|
| 84 | (md.results.TransientSolution(2).Thickness),...
|
---|
| 85 | (md.results.TransientSolution(2).IceVolume),...
|
---|
[26553] | 86 | (md.results.TransientSolution(2).SmbMassBalance),...
|
---|
[27318] | 87 | (md.results.TransientSolution(7).Vx),...
|
---|
| 88 | (md.results.TransientSolution(7).Vy),...
|
---|
| 89 | (md.results.TransientSolution(7).Vel),...
|
---|
| 90 | (md.results.TransientSolution(7).Thickness),...
|
---|
| 91 | (md.results.TransientSolution(7).IceVolume),...
|
---|
| 92 | (md.results.TransientSolution(7).SmbMassBalance),...
|
---|
[26487] | 93 | };
|
---|