0001 function md=iceprognostic(md)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 iceglobal
0012
0013
0014 if strcmpi(md.cluster,'yes'), cluster=1; else cluster=0;end;
0015
0016
0017 if cluster,
0018 error('iceprognostic error message: parallel support not implemented yet');
0019 end
0020
0021
0022 params.sparsity=md.sparsity;
0023 params.solver_type=md.solver_type;
0024 params.eps_rel=md.eps_rel;
0025 params.eps_abs=md.eps_abs;
0026 params.debug=md.debug;
0027
0028
0029 m=CreateFemModel(md,'prognostic');
0030
0031
0032 u_g=zeros(gridset.gsize,1);
0033 u_g(1:6:end)=md.vx/md.yts;
0034 u_g(2:6:end)=md.vy/md.yts;
0035 u_g(3:6:end)=md.vz/md.yts;
0036
0037 if strcmpi(md.type,'3d'),
0038 velocity_average=HorizontalVelocityDepthAverage(md,u_g);
0039 else
0040
0041 velocity_average=u_g;
0042 end
0043
0044
0045 melting=zeros(gridset.gsize,1);
0046 accumulation=zeros(gridset.gsize,1);
0047 if strcmpi(md.type,'3d'),
0048 melting(1:6:end)=ShiftLayers(md,md.melting,1,1);
0049 accumulation(1:6:end)=ShiftLayers(md,md.accumulation,md.numlayers,1);
0050 else
0051 melting(1:6:end)=md.melting/md.yts;
0052 accumulation(1:6:end)=md.accumulation/md.yts;
0053 end
0054
0055
0056 thickness=zeros(gridset.gsize,1);thickness(1:6:end)=md.thickness;
0057
0058
0059 inputs=struct('thickness',thickness,'melting',melting,'accumulation',accumulation,'dt',md.dt,'velocity_average',velocity_average);
0060
0061
0062 h_g=iceprognostic_core(m,'prognostic',inputs);
0063
0064
0065 indx=1:6:m.gridset.gsize; indx=indx(m.tpart);
0066 if strcmpi(md.type,'3d'),
0067 md.new_thickness=project3d(md,project2d(md,h_g(indx),1),'node');
0068 else
0069 md.new_thickness=h_g(indx);
0070 end