| 1 | adcroft | 1.1 | function [hfacC,ddz] = hfac(dz,H,hfacmin,dzmin) | 
| 2 |  |  | %[hfacc]=hfac(dz,h,hfacmin,dzmin); | 
| 3 |  |  | %[hfacc,ddz]=hfac(dz,h,hfacmin,dzmin); | 
| 4 |  |  | % | 
| 5 |  |  | %Create hfacC(i,j,k) and dz(i,j,k) from dz(k), H(i,j) | 
| 6 |  |  | %using MITgcmUV model parameters hfacmin and dzmin | 
| 7 |  |  | % | 
| 8 |  |  | % hfacc corresponds to the non-dimensional thickness hFacC in MITgcm | 
| 9 |  |  | % ddz   is the dimensional thickness, ddz(i,j,k)=hfacc(i,j,k)*dz(k) | 
| 10 |  |  | % | 
| 11 |  |  | %e.g. | 
| 12 |  |  | %  [hfacC,ddz] = hfac(dz,H,hfacmin,dzmin) | 
| 13 |  |  | %e.g. To create a "p-mask" from above | 
| 14 |  |  | %  pmask=zeros(size(hfacC)); pmask( find(hfacC>0) )=1; | 
| 15 |  |  | % | 
| 16 |  |  | %Written by adcroft@mit.edu, 2001 | 
| 17 |  |  | %$Header: | 
| 18 |  |  |  | 
| 19 |  |  | [nx,ny,nt]=size(H); | 
| 20 |  |  | nz=prod(size(dz)); | 
| 21 |  |  | N=[nx ny nt nz]; | 
| 22 |  |  |  | 
| 23 |  |  | zf=[0 -cumsum(dz)]; | 
| 24 |  |  |  | 
| 25 |  |  | hfacC=zeros(N); | 
| 26 |  |  | ddz=zeros(N); | 
| 27 |  |  | for k=1:nz, | 
| 28 |  |  | hFacLim=max([ hfacmin min([1 dzmin/dz(k)]) ]); | 
| 29 |  |  | if hFacLim == 1 | 
| 30 |  |  | disp(sprintf('Level k=%3i  dz(k)=%8.2f  Full cell',k,dz(k))) | 
| 31 |  |  | else | 
| 32 |  |  | disp(sprintf('Level k=%3i  dz(k)=%8.2f  Lopping with min[hfacC(:,k)*dz(k)]=%8.2f',k,dz(k),hFacLim*dz(k))) | 
| 33 |  |  | end | 
| 34 |  |  | ddd=(zf(k)-H)/dz(k); | 
| 35 |  |  | ddd(find(ddd > 1)) = 1; | 
| 36 |  |  | %ddd(find(ddd < 0)) = 0; | 
| 37 |  |  | %ddd(find(ddd < hFacLim/2 & ddd ~= 0)) = 0; | 
| 38 |  |  | ddd(find(ddd < hFacLim/2)) = 0; % This should do the job of the above 2 lines | 
| 39 |  |  | ddd(find(ddd >= hFacLim/2 & ddd < hFacLim)) = hFacLim; | 
| 40 |  |  | hfacC(:,:,:,k)=ddd; | 
| 41 |  |  | ddz(:,:,:,k)=ddd*dz(k); | 
| 42 |  |  | end | 
| 43 |  |  |  | 
| 44 |  |  | hfacC=squeeze(hfacC); | 
| 45 |  |  | ddz=squeeze(ddz); |