


Read fvcom mesh file into Matlab mesh object
[Mobj] = function read_fvcom_mesh(gridfile)
DESCRIPTION:
Read FVCOM Grid file (connectivity + nodes)
Store in a matlab mesh object
INPUT [keyword pairs]:
'gridfile' = fvcom mesh file
OUTPUT:
Mobj = matlab structure containing mesh data
EXAMPLE USAGE
Mobj = read_fvcom_mesh('tst_grd.dat')
Author(s):
Geoff Cowles (University of Massachusetts Dartmouth)
Revision history
==============================================================================

0001 function [Mobj] = read_fvcom_mesh(gridfile) 0002 0003 % Read fvcom mesh file into Matlab mesh object 0004 % 0005 % [Mobj] = function read_fvcom_mesh(gridfile) 0006 % 0007 % DESCRIPTION: 0008 % Read FVCOM Grid file (connectivity + nodes) 0009 % Store in a matlab mesh object 0010 % 0011 % INPUT [keyword pairs]: 0012 % 'gridfile' = fvcom mesh file 0013 % 0014 % OUTPUT: 0015 % Mobj = matlab structure containing mesh data 0016 % 0017 % EXAMPLE USAGE 0018 % Mobj = read_fvcom_mesh('tst_grd.dat') 0019 % 0020 % Author(s): 0021 % Geoff Cowles (University of Massachusetts Dartmouth) 0022 % 0023 % Revision history 0024 % 0025 %============================================================================== 0026 0027 subname = 'read_fvcom_mesh'; 0028 fprintf('\n') 0029 fprintf(['begin : ' subname '\n']) 0030 0031 0032 %------------------------------------------------------------------------------ 0033 % Create a blank mesh object 0034 %------------------------------------------------------------------------------ 0035 Mobj = make_blank_mesh(); 0036 coordinate = 'cartesian'; 0037 have_bath = false; 0038 have_xy = true; 0039 have_lonlat = false; 0040 0041 0042 %------------------------------------------------------------------------------ 0043 % Read the mesh from the fvcom grid file 0044 %------------------------------------------------------------------------------ 0045 0046 0047 fid = fopen(gridfile,'r'); 0048 if(fid < 0) 0049 error(['file: ' gridfile ' does not exist']); 0050 end; 0051 0052 %---------------------------------------------------- 0053 % read in the fvcom connectivity and vertices 0054 %---------------------------------------------------- 0055 C = textscan(fid, '%s %s %s %d', 1); nVerts = C{4}; 0056 C = textscan(fid, '%s %s %s %d', 1); nElems = C{4}; 0057 tri = zeros(nElems,3); 0058 x = zeros(nVerts,1); 0059 y = zeros(nVerts,1); 0060 h = zeros(nVerts,1); 0061 lon = zeros(nVerts,1); 0062 lat = zeros(nVerts,1); 0063 ts = zeros(nVerts,1); 0064 0065 fprintf('reading mesh file\n'); 0066 fprintf('# nodes %d\n',nVerts); 0067 fprintf('# elems %d\n',nElems); 0068 for i=1:nElems 0069 C = textscan(fid,' %d %d %d %d %d\n',1); 0070 tri(i,1) = C{2}; tri(i,2) = C{3}; tri(i,3) = C{4}; 0071 end; 0072 for i=1:nVerts 0073 C = textscan(fid, '%d %f %f %f', 1); 0074 x(i) = C{2}; 0075 y(i) = C{3}; 0076 end; 0077 fprintf('mesh read in\n'); 0078 fclose(fid); 0079 0080 %------------------------------------------------------------------------------ 0081 % Transfer to Mesh structure 0082 %------------------------------------------------------------------------------ 0083 0084 Mobj.nVerts = nVerts; 0085 Mobj.nElems = nElems; 0086 Mobj.nativeCoords = coordinate; 0087 0088 if(have_lonlat) 0089 Mobj.have_lonlat = have_lonlat; 0090 end; 0091 if(have_xy) 0092 Mobj.have_xy = have_xy; 0093 end; 0094 if(have_bath) 0095 Mobj.have_bath = have_bath; 0096 end; 0097 Mobj.x = x; 0098 Mobj.y = y; 0099 Mobj.ts = ts; 0100 Mobj.lon = lon; 0101 Mobj.lat = lat; 0102 Mobj.h = h; 0103 Mobj.tri = tri; 0104 0105 0106 fprintf(['end : ' subname '\n']) 0107 0108