/[MITgcm]/MITgcm_contrib/gael/matlab_class/gcmfaces_smooth/diffsmooth2D_extrap_fwd.m
ViewVC logotype

Contents of /MITgcm_contrib/gael/matlab_class/gcmfaces_smooth/diffsmooth2D_extrap_fwd.m

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.4 - (show annotations) (download)
Wed Aug 1 01:48:33 2012 UTC (12 years, 11 months ago) by gforget
Branch: MAIN
CVS Tags: checkpoint65x, checkpoint65r, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, HEAD
Changes since 1.3: +11 -31 lines
- diffsmooth2D_extrap_fwd.m : use gcmfaces_timestep.m
- diffsmooth2D_extrap_inv.m : rm unused DXG/DYG.

1 function [FLD]=diffsmooth2D_extrap_fwd(fld,mskOut,eps);
2 %object: extrapolate an incomplete field to create a full field, by
3 % time-stepping a diffusion equation to near-equilibrium.
4 %inputs: fld incomplete field of interest (masked with NaN)
5 % mskOut land mask (1s and NaNs) for the full field (output)
6 % eps convergence criterium
7 %output: FLD full field
8
9 global mygrid;
10
11 dxC=mygrid.DXC; dyC=mygrid.DYC;
12 rA=mygrid.RAC;
13
14 dxCsm=dxC; dyCsm=dyC;
15
16 %mask of points which values will evolve
17 doStep=1*(isnan(fld));
18
19 %put first guess:
20 x=convert2array(mygrid.XC);
21 y=convert2array(mygrid.YC);
22 z=convert2array(fld);
23 m=convert2array(mskOut);
24 tmp1=find(~isnan(z));
25 tmp2=find(~isnan(m));
26 zz=z;
27 zz(tmp2) = griddata(x(tmp1),y(tmp1),z(tmp1),x(tmp2),y(tmp2),'nearest');
28 fld=convert2array(zz);
29
30 %put 0 first guess if needed and switch land mask:
31 fld(find(isnan(fld)))=0; fld=fld.*mskOut;
32
33 %scale the diffusive operator:
34 tmp0=dxCsm./dxC; tmp0(isnan(mskOut))=NaN; tmp00=nanmax(tmp0);
35 tmp0=dyCsm./dyC; tmp0(isnan(mskOut))=NaN; tmp00=max([tmp00 nanmax(tmp0)]);
36 smooth2D_nbt=tmp00;
37 smooth2D_nbt=ceil(1.1*2*smooth2D_nbt^2);
38
39 smooth2D_dt=1;
40 smooth2D_T=smooth2D_nbt*smooth2D_dt;
41 smooth2D_Kux=dxCsm.*dxCsm/smooth2D_T/2;
42 smooth2D_Kvy=dyCsm.*dyCsm/smooth2D_T/2;
43
44 %setup problem:
45 myOp.dt=1;
46 myOp.eps=eps;
47 myOp.Kux=smooth2D_Kux;
48 myOp.Kvy=smooth2D_Kvy;
49 myOp.doStep=doStep;
50
51 %time step problem:
52 FLD=gcmfaces_timestep(myOp,fld);
53
54

  ViewVC Help
Powered by ViewVC 1.1.22