| 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)); |