| 1 | adcroft | 1.1 | function [GRID] = loadgrid(varargin) | 
| 2 |  |  | %loadgrid() | 
| 3 |  |  | %loadgrid(DIRECTORY) | 
| 4 |  |  | % | 
| 5 |  |  | %Reads MITgcm output files and input "data" file to create a GRID structure | 
| 6 |  |  | %If DIRECTORY is not specified the current working directory is used. | 
| 7 |  |  | % | 
| 8 |  |  | %e.g. | 
| 9 |  |  | %>> GRID=loadgrid | 
| 10 |  |  | %GRID = | 
| 11 |  |  | %     drf: [50 70 100 140 190 240 290 340 390 440 490 540 590 640 690] | 
| 12 |  |  | %     drc: [25 60 85 120 165 215 265 315 365 415 465 515 565 615 665] | 
| 13 |  |  | %      rf: [1x16 double] | 
| 14 |  |  | %      rc: [1x15 double] | 
| 15 |  |  | %      xc: [90x40 double] | 
| 16 |  |  | %      yc: [90x40 double] | 
| 17 |  |  | %      xg: [90x40 double] | 
| 18 |  |  | %      yg: [90x40 double] | 
| 19 |  |  | %     dxg: [90x40 double] | 
| 20 |  |  | %     dyg: [90x40 double] | 
| 21 |  |  | %     rac: [90x40 double] | 
| 22 |  |  | %   hfacc: [90x40x15 double] | 
| 23 |  |  | %   hfacw: [90x40x15 double] | 
| 24 |  |  | %   hfacs: [90x40x15 double] | 
| 25 |  |  | %    mskc: [90x40x15 double] | 
| 26 |  |  | %    mAtl: [90x40 double] | 
| 27 |  |  | %    matl: [90x40 double] | 
| 28 |  |  | %    mPac: [90x40 double] | 
| 29 |  |  | %    mpac: [90x40 double] | 
| 30 |  |  | %    msoc: [90x40 double] | 
| 31 |  |  | %>> GRID2=loadgrid('/scratch/john/run2/'); | 
| 32 |  |  | % | 
| 33 |  |  | %Most elements of the structure are named to corresponding to MITgcm | 
| 34 |  |  | %variables. | 
| 35 |  |  | % | 
| 36 |  |  | %Lower case regional masks (matl, mpac and msoc) denote Atlantic and Pacific | 
| 37 |  |  | %Southern Ocean regions only and are exclusive (i.e. matl does not extend | 
| 38 |  |  | %into the Southern Ocean). | 
| 39 |  |  | %Upper case regional masks (mAtl and mPac) denotes sectors and do include the | 
| 40 |  |  | %Southern Ocean. | 
| 41 |  |  | %  sum(sum( GRID.mskc(:,:,1) )) = sum( GRID.mAtl(:) + GRID.mPac(:) ) | 
| 42 |  |  | %           = sum( GRID.matl(:) + GRID.mpac(:) + GRID.msoc(:) ) | 
| 43 |  |  | % | 
| 44 |  |  | %Written by adcroft@mit.edu, 2001 | 
| 45 |  |  | %$Header: | 
| 46 |  |  |  | 
| 47 |  |  | if nargin==0 | 
| 48 |  |  | Dir='./'; | 
| 49 |  |  | elseif nargin==1 | 
| 50 |  |  | Dir=[varargin{1} '/']; | 
| 51 |  |  | else | 
| 52 |  |  | error('I don''t know what to do with the second argument'); | 
| 53 |  |  | end | 
| 54 |  |  |  | 
| 55 |  |  | % Extract drF from "data" file | 
| 56 |  |  | datafile=[Dir 'data']; | 
| 57 |  |  | fid=fopen(datafile,'r'); | 
| 58 |  |  | if fid==-1 | 
| 59 |  |  | error(['Could not open file:' datafile ' for reading']); | 
| 60 |  |  | end | 
| 61 |  |  | fclose(fid); | 
| 62 |  |  | drf=evalc([ ... | 
| 63 |  |  | '!awk ''/[dD[eE][lL][rRzZpP]/,/XXX/ {printf "%s",$0}'' ' datafile ... | 
| 64 |  |  | '| sed ''s/[dD][eE][lL][zZrRpP][ ]*=\([0-9,. ]*\).*/\1/''  ' ... | 
| 65 |  |  | '| sed ''s/[ ]//g''  ' ... | 
| 66 |  |  | '| sed ''s/,/ /g''  ' ... | 
| 67 |  |  | ';' | 
| 68 |  |  | ]); | 
| 69 |  |  | eval(['drf=[' drf '];']) | 
| 70 |  |  | drf=drf; | 
| 71 |  |  | drc=(drf([1 1:end-1])+drf)/2; drc(1)=drc(1)/2; | 
| 72 |  |  |  | 
| 73 |  |  | %% % Extract drC from output file | 
| 74 |  |  | %% outputfile='output.txt'; | 
| 75 |  |  | %% drc=evalc(['!head -1000 ' outputfile ... | 
| 76 |  |  | %%            ' | awk ''/drC/,/;/ {print $3}'' -' ... | 
| 77 |  |  | %%            ' | egrep "e|E"' ... | 
| 78 |  |  | %%            ' | sed ''s/,//'' ']); | 
| 79 |  |  | %% eval(['drc=[' drc '];']) | 
| 80 |  |  | %% drc=drc'; | 
| 81 |  |  | %% % Extract drF from output file | 
| 82 |  |  | %% drf=evalc('!head -1000 output.txt | awk "/drF/,/;/ {print \$3}" - | egrep "e|E" | sed s/,// '); | 
| 83 |  |  | %% eval(['drf=[' drf '];']) | 
| 84 |  |  | %% drf=drf'; | 
| 85 |  |  |  | 
| 86 |  |  | rf=-cumsum([0 drf]); | 
| 87 |  |  | rc=-cumsum([drc]); | 
| 88 |  |  |  | 
| 89 |  |  | GRID.drf=drf; | 
| 90 |  |  | GRID.drc=drc; | 
| 91 |  |  | GRID.rf=rf; | 
| 92 |  |  | GRID.rc=rc; | 
| 93 |  |  |  | 
| 94 |  |  | xc=rdmds([Dir 'XC']); GRID.xc=xc; | 
| 95 |  |  | yc=rdmds([Dir 'YC']); GRID.yc=yc; | 
| 96 |  |  | xg=rdmds([Dir 'XG']); GRID.xg=xg; | 
| 97 |  |  | yg=rdmds([Dir 'YG']); GRID.yg=yg; | 
| 98 |  |  |  | 
| 99 |  |  | dxg=rdmds([Dir 'DXG']); GRID.dxg=dxg; | 
| 100 |  |  | dyg=rdmds([Dir 'DYG']); GRID.dyg=dyg; | 
| 101 |  |  |  | 
| 102 |  |  | rac=rdmds([Dir 'RAC']); GRID.rac=rac; | 
| 103 |  |  |  | 
| 104 |  |  | hfacc=rdmds([Dir 'hFacC']); GRID.hfacc=hfacc; | 
| 105 |  |  | hfacw=rdmds([Dir 'hFacW']); GRID.hfacw=hfacw; | 
| 106 |  |  | hfacs=rdmds([Dir 'hFacS']); GRID.hfacs=hfacs; | 
| 107 |  |  |  | 
| 108 |  |  | mskc=hfacc; mskc(find(hfacc~=0))=1; GRID.mskc=mskc; | 
| 109 |  |  |  | 
| 110 |  |  | mskc=mskc(:,:,1); | 
| 111 |  |  | j=[]; | 
| 112 |  |  | %j=[j find( yc>-32.5 & xc>290 )']; | 
| 113 |  |  | %j=[j find( yc>-32.5 & xc<25 )']; | 
| 114 |  |  | j=[j find( xc>290 )']; | 
| 115 |  |  | j=[j find( xc<25 & xc>290-360 )']; | 
| 116 |  |  | j=[j find( yc>9 & yc<60 & (yc-9)+(xc-276)>0 )']; | 
| 117 |  |  | j=[j find( yc>9 & yc<60 & (yc-9)+(xc-276+360)>0 & xc<30 )']; | 
| 118 |  |  | j=[j find( yc>17 & yc<60 & xc>261 )']; | 
| 119 |  |  | j=[j find( yc>50 & (yc-70)-(xc-270)<0 )']; | 
| 120 |  |  | j=[j find( yc>31 & xc<38 & xc>-90 )']; | 
| 121 |  |  | j=[j find( yc>31 & xc>360-90 )']; | 
| 122 |  |  | j=[j find( yc>64 )']; | 
| 123 |  |  | matl=0*mskc; | 
| 124 |  |  | matl(j)=1; | 
| 125 |  |  | matl=matl.*mskc; | 
| 126 |  |  | GRID.mAtl=matl; | 
| 127 |  |  |  | 
| 128 |  |  | j=[]; | 
| 129 |  |  | j=[j find( yc>-32.5 )']; | 
| 130 |  |  | matl=0*mskc; | 
| 131 |  |  | matl(j)=1; | 
| 132 |  |  | matl=GRID.mAtl.*matl.*mskc; | 
| 133 |  |  | GRID.matl=matl; | 
| 134 |  |  |  | 
| 135 |  |  | mpac=(1-matl).*mskc; | 
| 136 |  |  | j=[]; | 
| 137 |  |  | j=[j find( yc<65 )']; | 
| 138 |  |  | mpac=0*mskc; | 
| 139 |  |  | mpac(j)=1; | 
| 140 |  |  | mpac=mpac.*mskc.*(1-GRID.mAtl); | 
| 141 |  |  | GRID.mPac=mpac; | 
| 142 |  |  |  | 
| 143 |  |  | j=[]; | 
| 144 |  |  | j=[j find( yc>-32.5 )']; | 
| 145 |  |  | mpac=0*mskc; | 
| 146 |  |  | mpac(j)=1; | 
| 147 |  |  | mpac=GRID.mPac.*mpac.*mskc; | 
| 148 |  |  | GRID.mpac=mpac; | 
| 149 |  |  |  | 
| 150 |  |  | msoc=(1-matl).*(1-mpac).*mskc; | 
| 151 |  |  | j=[]; | 
| 152 |  |  | j=[j find( yc<0 )']; | 
| 153 |  |  | GRID.msoc=msoc.*mskc.*(1-mpac).*(1-matl); | 
| 154 |  |  |  |