| 1 |
function MakePcForcing(cplFiles,atmFiles,gridFiles,prevFocnFiles,... |
function MakePcForcing(cplFiles,atmFiles,gridFiles,prevFocnFiles,... |
| 2 |
period,outDir,FocnRoot,focnRoot,iter,... |
period,outDir,FocnRoot,focnRoot,iterO,iterA,... |
| 3 |
dtC,gWeight,FocnOnly,InspectFocn,Inspectfocn) |
dtC,dtA,gWeight,FocnOnly,InspectFocn,Inspectfocn) |
| 4 |
|
|
| 5 |
% Make fields for forcing ocean component of periodic coupling. |
% Make fields for forcing ocean component of periodic coupling. |
| 6 |
|
|
| 22 |
% Load Data % |
% Load Data % |
| 23 |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
| 24 |
|
|
| 25 |
datacpl = rdmnc(cplFiles,'iter','HFtave','TXtave','TYtave','FWtave','T'); |
% datacpl = rdmnc(cplFiles,'iter','HFtave','TXtave','TYtave','FWtave','T'); |
| 26 |
dataatm = rdmnc(atmFiles,'iter','THETA' ,'ALBVISDF','RADSWG' ,... |
% dataatm = rdmnc(atmFiles,'iter','THETA' ,'ALBVISDF','RADSWG' ,... |
| 27 |
'DWNLWG' ,'TS' ,'QS' ,... |
% 'DWNLWG' ,'TS' ,'QS' ,... |
| 28 |
'WINDS' ,'PRECON' ,'PRECLS','T'); |
% 'WINDS' ,'PRECON' ,'PRECLS','T'); |
| 29 |
datagrd = rdmnc(gridFiles,'rA','XG','YG','XC','YC','HFacC'); |
% datagrd = rdmnc(gridFiles,'rA','XG','YG','XC','YC','HFacC'); |
| 30 |
% save('DataPerCpl.mat','datacpl','dataatm','datagrd'); |
% save('DataPerCpl.mat','datacpl','dataatm','datagrd'); |
| 31 |
% load('DataPerCpl.mat'); |
load('DataPerCpl.mat'); |
| 32 |
nc = size(datagrd.rA,2); |
nc = size(datagrd.rA,2); |
| 33 |
RAC = datagrd.rA; |
RAC = datagrd.rA; |
| 34 |
mask = datagrd.HFacC(:,:,1); |
mask = datagrd.HFacC(:,:,1); |
| 57 |
% Select Coupled Field Data % |
% Select Coupled Field Data % |
| 58 |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
| 59 |
|
|
| 60 |
if ~isequal(datacpl.iter,dataatm.iter./8) |
if ~isequal(datacpl.iter,dataatm.iter./(dtC./dtA)) |
| 61 |
disp('datacpl.iter'); datacpl.iter |
disp('datacpl.iter'); datacpl.iter |
| 62 |
disp('dataatm.iter/8'); dataatm.iter./8 |
disp('dataatm.iter/dt_ratio'); dataatm.iter./(dtC./dtA) |
| 63 |
error('Iterations for coupled and atmospheric data do not match.'); |
error('Iterations for coupled and atmospheric data do not match.'); |
| 64 |
end |
end |
| 65 |
test = ismember(iter,datacpl.iter); |
test = ismember(iterO,datacpl.iter); |
| 66 |
index = ismember(datacpl.iter,iter); |
indexO = ismember(datacpl.iter,iterO); |
| 67 |
if ~isempty(find(test==0)) |
if ~isempty(find(test==0)) |
| 68 |
error('Specified indecies not present in cpl_tave.* files.'); |
error('Specified indecies not present in cpl_tave.* files.'); |
| 69 |
|
else |
| 70 |
|
for ifield = 1:length(fieldscpl) |
| 71 |
|
data.(fieldscpl{ifield}) = ... |
| 72 |
|
datacpl.(fieldscpl{ifield})(1:6*nc,1:nc,indexO); |
| 73 |
|
end |
| 74 |
end |
end |
| 75 |
for ifield = 1:length(fieldscpl) |
test = ismember(iterA,dataatm.iter); |
| 76 |
data.(fieldscpl{ifield}) = ... |
indexA = ismember(dataatm.iter,iterA); |
| 77 |
datacpl.(fieldscpl{ifield})(1:6*nc,1:nc,index); |
if ~isempty(find(test==0)) |
| 78 |
end |
error('Specified indecies not present in DiagAtmForcing.* files.'); |
| 79 |
for ifield = 1:length(fieldsatm) |
else |
| 80 |
data.(fieldsatm{ifield}) = ... |
for ifield = 1:length(fieldsatm) |
| 81 |
dataatm.(fieldsatm{ifield})(1:6*nc,1:nc,index); |
data.(fieldsatm{ifield}) = ... |
| 82 |
|
dataatm.(fieldsatm{ifield})(1:6*nc,1:nc,indexA); |
| 83 |
|
end |
| 84 |
end |
end |
| 85 |
% field = 'PREC'; |
% field = 'PREC'; |
| 86 |
% merccube_mod(XG,YG,dataCplSelect.(field)); |
% merccube_mod(XG,YG,dataCplSelect.(field)); |
| 133 |
|
|
| 134 |
if ~FocnOnly |
if ~FocnOnly |
| 135 |
|
|
| 136 |
years = iter.*dtC./31104000; |
years = iterO.*dtC./31104000; |
| 137 |
yrfrc = rem(years,floor(years)); |
yrfrc = rem(years,floor(years)); |
| 138 |
yrfrc(yrfrc == 0) = 1; |
yrfrc(yrfrc == 0) = 1; |
| 139 |
uyrfrc = sort(unique(yrfrc)); |
uyrfrc = sort(unique(yrfrc)); |