[17467] | 1 | %Start defining model parameters here
|
---|
[17469] | 2 | x = md.mesh.x;
|
---|
| 3 | y = md.mesh.y;
|
---|
| 4 | xmin = min(x);
|
---|
| 5 | xmax = max(x);
|
---|
| 6 | ymin = min(y);
|
---|
| 7 | ymax = max(y);
|
---|
| 8 | Lx = (xmax-xmin);
|
---|
| 9 | Ly = (ymax-ymin);
|
---|
| 10 | xm = (xmin+xmax)/2.;
|
---|
| 11 | ym = (ymin+ymax)/2.;
|
---|
[17467] | 12 |
|
---|
| 13 | %Geometry: U-shaped valley in y direction
|
---|
[17469] | 14 | thk_center = 1000.;
|
---|
| 15 | thk_margin = 0.5*thk_center;
|
---|
| 16 | bmax = 0.;
|
---|
| 17 | bmin = -thk_center*md.materials.rho_ice/md.materials.rho_water;
|
---|
[17467] | 18 |
|
---|
[17469] | 19 | alpha = 2./3.;
|
---|
| 20 | slope = 0.9*(bmin-bmax)*(x-xmin)/(Lx*alpha) + 0.1*(bmin-bmax)*(y-ymin)/(Ly) + bmax;
|
---|
| 21 | md.geometry.surface = (thk_center+bmax) + slope ;
|
---|
[17590] | 22 | md.geometry.base = bmax + slope + 4./Ly^2*(thk_center-thk_margin)*(y-ym).^2;
|
---|
| 23 | md.geometry.thickness = md.geometry.surface - md.geometry.base;
|
---|
| 24 | md.geometry.bed = md.geometry.base;
|
---|
[17467] | 25 |
|
---|
| 26 | %Mask
|
---|
[17469] | 27 | md.mask.ice_levelset = x - alpha*Lx;
|
---|
[25836] | 28 | md.mask.ocean_levelset = ones(md.mesh.numberofvertices,1);
|
---|
[17467] | 29 |
|
---|
| 30 | %Initial velocity
|
---|
[17469] | 31 | md.initialization.vx = zeros(md.mesh.numberofvertices,1);
|
---|
| 32 | md.initialization.vy = zeros(md.mesh.numberofvertices,1);
|
---|
| 33 | md.initialization.vz = zeros(md.mesh.numberofvertices,1);
|
---|
| 34 | md.initialization.pressure = zeros(md.mesh.numberofvertices,1);
|
---|
[17467] | 35 |
|
---|
| 36 | %Materials
|
---|
[17469] | 37 | md.initialization.temperature = (273.15-5.)*ones(md.mesh.numberofvertices,1);
|
---|
| 38 | md.initialization.waterfraction = zeros(md.mesh.numberofvertices,1);
|
---|
| 39 | md.initialization.watercolumn = zeros(md.mesh.numberofvertices,1);
|
---|
| 40 | md.materials.rheology_B = paterson(md.initialization.temperature);
|
---|
| 41 | md.materials.rheology_n = 3.*ones(md.mesh.numberofelements,1);
|
---|
[17467] | 42 |
|
---|
| 43 | %Thermal
|
---|
[17469] | 44 | md.thermal.isenthalpy = 0;
|
---|
| 45 | md.thermal.spctemperature = NaN(md.mesh.numberofvertices,1);
|
---|
[17467] | 46 |
|
---|
| 47 | %Groundingline
|
---|
[17469] | 48 | md.groundingline.migration = 'SubelementMigration';
|
---|
[17467] | 49 |
|
---|
| 50 | %Surface mass balance and basal melting
|
---|
[20500] | 51 | md.smb.mass_balance = 0.3*ones(md.mesh.numberofvertices,1);
|
---|
| 52 | md.basalforcings.floatingice_melting_rate = md.smb.mass_balance;
|
---|
| 53 | md.basalforcings.groundedice_melting_rate = md.smb.mass_balance;
|
---|
[17467] | 54 |
|
---|
| 55 | %Friction
|
---|
[17469] | 56 | md.friction.coefficient = 20.*ones(md.mesh.numberofvertices,1);
|
---|
[25836] | 57 | md.friction.coefficient(find(md.mask.ocean_levelset<0.)) = 0.;
|
---|
[17469] | 58 | md.friction.p = ones(md.mesh.numberofelements,1);
|
---|
| 59 | md.friction.q = ones(md.mesh.numberofelements,1);
|
---|
[17467] | 60 |
|
---|
| 61 | %Transient
|
---|
[17469] | 62 | md.transient.isstressbalance = 1;
|
---|
[20500] | 63 | md.transient.ismovingfront = 1;
|
---|
[17469] | 64 | md.transient.ismasstransport = 0;
|
---|
| 65 | md.transient.isthermal = 0;
|
---|
| 66 | md.transient.isgroundingline = 1;
|
---|
[17467] | 67 |
|
---|
| 68 | %Stressbalance
|
---|
[17469] | 69 | md.stressbalance.maxiter = 100;
|
---|
| 70 | md.stressbalance.restol = 0.05;
|
---|
| 71 | md.stressbalance.reltol = 0.05;
|
---|
| 72 | md.stressbalance.abstol = NaN;
|
---|
[17467] | 73 |
|
---|
[17469] | 74 | %Masstransport;
|
---|
[19105] | 75 | md.calving.calvingrate = 0.*ones(md.mesh.numberofvertices,1);
|
---|
[24313] | 76 | md.frontalforcings.meltingrate = 0.*ones(md.mesh.numberofvertices,1);
|
---|
[20500] | 77 | md.levelset.spclevelset=NaN(md.mesh.numberofvertices,1);
|
---|
[17469] | 78 | md.masstransport.stabilization = 1.;
|
---|
[17467] | 79 |
|
---|
| 80 | %Numerical parameters
|
---|
[17469] | 81 | md.thermal.stabilization = 1.;
|
---|
| 82 | md.settings.waitonlock = 30;
|
---|
| 83 | md.steadystate.reltol = 0.05;
|
---|
| 84 | md.timestepping.time_step = 1.;
|
---|
| 85 | md.timestepping.final_time = 3.;
|
---|
[17467] | 86 |
|
---|
| 87 | %Verbose
|
---|
[17469] | 88 | md.verbose = verbose(0);
|
---|
[17467] | 89 |
|
---|
| 90 | %Deal with boundary conditions:
|
---|
[17469] | 91 | md = SetIceShelfBC(md);
|
---|
[17467] | 92 |
|
---|
[17469] | 93 | %Change name so that no test have the same name;
|
---|
[17467] | 94 | A = dbstack;
|
---|
| 95 | if (length(A)>2), md.miscellaneous.name=A(3).file(1:end-2); end
|
---|