do_surface_plot.m 3.21 KB
Newer Older
1
function [Plots]=do_surface_plot(plotOPTS,FVCOM)
Pierre Cazenave's avatar
Pierre Cazenave committed
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
%
% Function to display color maps of FVCOM variables (i.e. temperature)
%
%  [Plots]=do_surface_plot(plotOPTS,FVCOM)
%
% DESCRIPTION:
%    Generates maps of variables using m_map toolbox (patch
%
% INPUT:
%   plotOPTS   = structure array with predefined options for generating the
%   maps
%   FVCOM  = data extracted from FVCOM NC file. See read_netCDF_FVCOM for
%   details
%
%   plotOPTS.range_lat: [50.1000 50.4000]
%   plotOPTS.range_lon: [-4.5000 -3.8500]
%   plotOPTS.fig_name: 'co2_S5_slowleak'
%   plotOPTS.mesh: [1x1 struct]
%   plotOPTS.coastline_file: '../mat/tamar3_0coast.mat'
%   plotOPTS.zone: 30
%   plotOPTS.ell: 'grs80'
%   plotOPTS.var_plot: 'PH'
%   plotOPTS.clims: [6 8]
%   plotOPTS.do_mesh: 0
%   plotOPTS.nz_plot: 1
%   plotOPTS.figure: 1
%   plotOPTS.Time_record: 7.3271e+05
%   plotOPTS.nz_plot_vec: 1
%   plotOPTS.data_dec: 5
%   plotOPTS.vel_sca: 5
%   plotOPTS.pause: 0.5000

%
% OUTPUT:
%   Plots = structure array with figure handles
%
% EXAMPLE USAGE
%    [Plots]=do_surface_plot(plotOPTS,FVCOM)
%
% Author(s):
%    Ricardo Torres and Pierre Cazenave (Plymouth Marine Laboratory)
%
% Revision history
%
%==============================================================================
%
48
m_mappath;
Pierre Cazenave's avatar
Pierre Cazenave committed
49 50
% adds m_map to matlab paths. file is in utilities directory.
% amend according to your m_map installation paths
51

Pierre Cazenave's avatar
Pierre Cazenave committed
52 53 54 55
figure(plotOPTS.figure);clf
% generate figure with correct projection lat and lon range ellipsoid and
% zone.
m_proj('UTM','lon',[ plotOPTS.range_lon],'lat',[plotOPTS.range_lat],'zon',plotOPTS.zone,'ell',plotOPTS.ell)
56
m_grid('box','fancy')
Pierre Cazenave's avatar
Pierre Cazenave committed
57 58 59 60 61 62 63 64 65 66
% add coastline if present
if (isfield(plotOPTS,'coastline_file') && ~isempty(plotOPTS.coastline_file) )
    m_usercoast(plotOPTS.coastline_file,'Color','k','LineWidth',3);
end

[X,Y]=m_ll2xy(plotOPTS.mesh.lon,plotOPTS.mesh.lat,'clip','on');
%------------------------------------------------------------------------------
% Generate maps at a give level
%------------------------------------------------------------------------------

67
for aa=1:length(plotOPTS.Time_record)
Pierre Cazenave's avatar
Pierre Cazenave committed
68 69
    fprintf('Time step %i of %i\n',aa,length(plotOPTS.Time_record));
    %plot map
70
    hold on
Pierre Cazenave's avatar
Pierre Cazenave committed
71 72 73
    Plots(plotOPTS.figure).handles=patch('Vertices',[X,Y],'Faces',plotOPTS.mesh.tri,...
        'Cdata',squeeze(FVCOM.(plotOPTS.var_plot)(:,plotOPTS.nz_plot,aa)),'edgecolor','interp','facecolor','interp');

74 75 76 77
    caxis(plotOPTS.clims)
    colorbar
    % check if mesh elements are required
    if plotOPTS.do_mesh
Pierre Cazenave's avatar
Pierre Cazenave committed
78
        %plot vertices
79
        [X,Y]=m_ll2xy(plotOPTS.mesh.lon,plotOPTS.mesh.lat,'clip','on');
Pierre Cazenave's avatar
Pierre Cazenave committed
80 81 82
        Plots(plotOPTS.figure).mesh=patch('Vertices',[X,Y],'Faces',plotOPTS.mesh.tri,...
            'EdgeColor',[0.6 0.6 0.6],'FaceColor','none');hold on

83
    end
Pierre Cazenave's avatar
Pierre Cazenave committed
84 85 86 87 88
    %-----------------------------------------------------------------------
    % Only in my case it needs adding 6 because proj automatically determines a
    % reference long in strides of 6deg while m_map doesn't
    %------------------------------------------------------------------------
    pause(.2)
89
    if aa~=length(plotOPTS.Time_record)
Pierre Cazenave's avatar
Pierre Cazenave committed
90
        delete(Plots(plotOPTS.figure).handles(:))
91
    end
Pierre Cazenave's avatar
Pierre Cazenave committed
92

93 94 95 96
end

return