1 |
function MakePcForcing(cplFiles,atmFiles,gridFiles,prevFocnFiles,period,... |
function MakePcForcing(cplFiles,atmFiles,gridFiles,prevFocnFiles,... |
2 |
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 |
test = ismember(iter,datacpl.iter); |
if ~isequal(datacpl.iter,dataatm.iter./(dtC./dtA)) |
61 |
index = ismember(datacpl.iter,iter); |
disp('datacpl.iter'); datacpl.iter |
62 |
|
disp('dataatm.iter/dt_ratio'); dataatm.iter./(dtC./dtA) |
63 |
|
error('Iterations for coupled and atmospheric data do not match.'); |
64 |
|
end |
65 |
|
test = ismember(iterO,datacpl.iter); |
66 |
|
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)); |