/[MITgcm]/MITgcm_contrib/enderton/Diagnostics/DiagLoad.m
ViewVC logotype

Diff of /MITgcm_contrib/enderton/Diagnostics/DiagLoad.m

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

--- MITgcm_contrib/enderton/Diagnostics/DiagLoad.m	2005/02/01 18:49:28	1.3
+++ MITgcm_contrib/enderton/Diagnostics/DiagLoad.m	2005/02/02 15:38:21	1.4
@@ -1,5 +1,5 @@
 function [data,xax,yax,time,pltslc] = ...
-    DiagLoad(fln,exp,dat,dad,grd,itr,tst,flu,ddf,gdf,avg,slc,pst,...
+    DiagLoad(fln,trl,dat,dad,grd,itr,tst,flu,ddf,gdf,avg,slc,pst,...
              LoadGridData,DiagDebug,GridSuffix,ZcordFile,Index,Dim,...
              Grads,Year0Iter,Months);
 
@@ -93,7 +93,7 @@
     data = squeeze(data(:,:,1,:));
     data = DiagAverage(data,fln,avg,months,ddf,Dim);
     [data,xax,yax,pltslc] = ...
-        DiagSlice(data,fln,exp,dat,dad,grd,itr,tst,flu,...
+        DiagSlice(data,fln,trl,dat,dad,grd,itr,tst,flu,...
                   ddf,gdf,avg,slc,pst,LoadGridData,GridSuffix,ZcordFile);
 
 % Load coupled fields.  Like AIM, the data is all stuffed into one file
@@ -126,7 +126,7 @@
     end
     data = DiagAverage(data,fln,avg,months,ddf,Dim);
     [data,xax,yax,pltslc] = ...
-        DiagSlice(data,fln,exp,dat,dad,grd,itr,tst,flu,...
+        DiagSlice(data,fln,trl,dat,dad,grd,itr,tst,flu,...
                   ddf,gdf,avg,slc,pst,LoadGridData,GridSuffix,ZcordFile);
 
 % Load ice parameters.  Note that as the ice variable names appear to be in
@@ -141,7 +141,7 @@
     end
     data = DiagAverage(data,fln,avg,months,ddf,Dim);
     [data,xax,yax,pltslc] = ...
-        DiagSlice(data,fln,exp,dat,dad,grd,itr,tst,flu,...
+        DiagSlice(data,fln,trl,dat,dad,grd,itr,tst,flu,...
                   ddf,gdf,avg,slc,pst,LoadGridData,GridSuffix,ZcordFile);
 
 % Load generic fields where no modifications are needed.
@@ -149,7 +149,7 @@
     data = DiagLoad_Local(fln,dat,dad,grd,itr,ddf,filesuffix,mnchandle);
     data = DiagAverage(data,fln,avg,months,ddf,Dim);
     [data,xax,yax,pltslc] = ...
-        DiagSlice(data,fln,exp,dat,dad,grd,itr,tst,...
+        DiagSlice(data,fln,trl,dat,dad,grd,itr,tst,...
                   flu,ddf,gdf,avg,slc,pst,LoadGridData,GridSuffix,ZcordFile);
 
 % Read vertical velocities, eta.  Convert from [P] to [hPa] in atmosphere.
@@ -158,7 +158,7 @@
     if isequal(flu,'A'), data = data./100; end
     data = DiagAverage(data,fln,avg,months,ddf,Dim);
     [data,xax,yax,pltslc] = ...
-        DiagSlice(data,fln,exp,dat,dad,grd,itr,tst,...
+        DiagSlice(data,fln,trl,dat,dad,grd,itr,tst,...
                   flu,ddf,gdf,avg,slc,pst,LoadGridData,GridSuffix,ZcordFile);
     
 % Load horizontal velocities, convert to lat-lon grid.
@@ -185,7 +185,7 @@
         data = V;
     end
     [data,xax,yax,pltslc] = ...
-        DiagSlice(data,fln,exp,dat,dad,grd,itr,tst,...
+        DiagSlice(data,fln,trl,dat,dad,grd,itr,tst,...
                   flu,ddf,gdf,avg,slc,pst,LoadGridData,GridSuffix,ZcordFile);
 
 % Meridional overturning.
@@ -235,7 +235,43 @@
         disp(['               Calculated range:  ',mat2str(datarange)]);
         disp(['               Given range:  ',mat2str(fixedrange)]);
     end
-  
+    
+    
+% Actual temperature and moist potential temperature.  Actual temperature
+% is calculated as T=Theta*(p/po)^(R/cp).  Moist potential temperature is
+% calculated as Theta_e=Theta*e^(L*q*/cp*T) where q*=(R/Rv)*(es/p) and
+% es=Ae^(beta*T).
+elseif ismember(fln,{'ActT','MoiPTc'})
+    if isequal('flu','O'),
+        error('Calculation may only be done for atmosphere!');
+    end
+    [XC,XG,YC,YG,Ylat,ZC,ZG,RAC,drC,drF,...
+     HFacC,HFacW,HFacS,dxG,dyG,dxC,dyC] = ...
+        DiagLoadGridData(LoadGridData,grd,gdf,flu,GridSuffix,ZcordFile);
+    if isequal(ddf,'MDS')
+        theta = DiagLoad_Local('T',dat,dad,grd,itr,ddf,...
+                               filesuffix,mnchandle);
+    elseif isequal(ddf,'MNC')
+        theta = DiagLoad_Local('Temp',dat,dad,grd,itr,...
+                               ddf,filesuffix,mnchandle);
+    end
+    theta = DiagAverage(theta,fln,avg,months,ddf,Dim);
+    if ismember(fln,{'ActT','MoiPTc'})
+        pres = NaN.*zeros(size(theta));
+        for iz=1:length(ZC), pres(:,:,iz)=ZC(iz); end
+        temp=theta.*(pres./presrefA).^(RdA/cpA);
+        if isequal(fln,'ActT'), data=temp; end
+    end
+    if isequal(fln,'MoiPTc')
+        es=A_CC.*exp(Beta_CC.*(temp-K2C));
+        qstar=(RdA/RvA).*(es./pres);
+        data=theta.*exp(LHvapA.*qstar./cpA./temp);
+    end
+    [data,xax,yax,pltslc] = ...
+        DiagSlice(data,fln,trl,dat,dad,grd,itr,tst,flu,ddf,gdf,...
+                  avg,slc,pst,LoadGridData,GridSuffix,ZcordFile);
+
+              
 % Read in variabilities.  Here we must make some simple calculations.  For
 % all the variablilty fields there is are (field)^2 fields from which we
 % can calculate the desired variabilities:  sqrt(field*field-(field)^2).
@@ -248,7 +284,7 @@
     data = sqrt(abs(ETA.*ETA-ETA2));
     data = DiagAverage(data,fln,avg,months,ddf,Dim);
     [data,xax,yax,pltslc] = ...
-        DiagSlice(data,fln,exp,dat,dad,grd,itr,tst,...
+        DiagSlice(data,fln,trl,dat,dad,grd,itr,tst,...
                   flu,ddf,gdf,avg,slc,pst,LoadGridData,GridSuffix,ZcordFile);
 elseif isequal(fln,'Tstd')
     T  = DiagLoad_Local('T' ,dat,dad,grd,itr,ddf,filesuffix,mnchandle);
@@ -256,7 +292,7 @@
     data = sqrt(abs(T.*T-TT));
     data = DiagAverage(data,fln,avg,months,ddf,Dim);
     [data,xax,yax,pltslc] = ...
-        DiagSlice(data,fln,exp,dat,dad,grd,itr,tst,...
+        DiagSlice(data,fln,trl,dat,dad,grd,itr,tst,...
                   flu,ddf,gdf,avg,slc,pst,LoadGridData,GridSuffix,ZcordFile);
 elseif isequal(fln,'KEpri')
     U  = DiagLoad_Local('uVel',dat,dad,grd,itr,ddf,filesuffix,mnchandle);
@@ -275,12 +311,12 @@
     VV = DiagAverage(VV,fln,avg,months,ddf,Dim);
     data = sqrt(abs((U.*U + V.*V) - (UU + VV)));
     [data,xax,yax,pltslc] = ...
-        DiagSlice(data,fln,exp,dat,dad,grd,itr,tst,...
+        DiagSlice(data,fln,trl,dat,dad,grd,itr,tst,...
                   flu,ddf,gdf,avg,slc,pst,LoadGridData,GridSuffix,ZcordFile);
            
 % If the field is not recognized, try best to try and open it.
 else
-    if DiagDebug, disp(['  Debug -- Unknown field, attempting to load.']); end
+    disp(['  Unknown field, attempting to load.']);
     data  = DiagLoad_Local(fln,dat,dad,grd,itr,ddf,filesuffix,mnchandle);
     if DiagDebug, disp(['  Debug -- ''data'' size after load:  ',mat2str(size(data))]); end
     if ~isequal(Index,0)
@@ -291,7 +327,7 @@
     data = DiagAverage(data,fln,avg,months,ddf,Dim);
     if DiagDebug, disp(['  Debug -- ''data'' size after average:  ',mat2str(size(data))]); end
     [data,xax,yax,pltslc] = ...
-        DiagSlice(data,fln,exp,dat,dad,grd,itr,tst,...
+        DiagSlice(data,fln,trl,dat,dad,grd,itr,tst,...
                   flu,ddf,gdf,avg,slc,pst,LoadGridData,GridSuffix,ZcordFile);
     if DiagDebug, disp(['  Debug -- ''data'' size after slice:  ',mat2str(size(data))]); end
     if DiagDebug, disp(['  Debug -- ''xax'' size:  ',mat2str(size(xax))]); end
@@ -311,7 +347,6 @@
 	if isequal(dfm,'MDS')
         data = rdmds([dad,'/',fln,filesuffix],itr);
 	elseif isequal(dfm,'MNC')
-        %[dad,mnchandle]
         iter = rdmnc_mod([dad,mnchandle],'T');
         iter = iter.T;
         [dummy,indecies] = ismember(itr,iter);

 

  ViewVC Help
Powered by ViewVC 1.1.22