Home > fvcom_prepro > read_fvcom_mesh.m

read_fvcom_mesh

PURPOSE ^

Read fvcom mesh file into Matlab mesh object

SYNOPSIS ^

function [Mobj] = read_fvcom_mesh(gridfile)

DESCRIPTION ^

 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
   
==============================================================================

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

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 global ftbverbose;
0029 if(ftbverbose);
0030   fprintf('\n')
0031   fprintf(['begin : ' subname '\n'])
0032 end;
0033 
0034 
0035 %------------------------------------------------------------------------------
0036 % Create a blank mesh object
0037 %------------------------------------------------------------------------------
0038 Mobj = make_blank_mesh();
0039 coordinate = 'cartesian';
0040 have_bath = false;
0041 have_xy = true;
0042 have_lonlat = false;
0043 
0044 
0045 %------------------------------------------------------------------------------
0046 % Read the mesh from the fvcom grid file
0047 %------------------------------------------------------------------------------
0048 
0049 
0050 fid = fopen(gridfile,'r');
0051 if(fid  < 0)
0052     error(['file: ' gridfile ' does not exist']);
0053 end;
0054 
0055 %----------------------------------------------------
0056 % read in the fvcom connectivity and vertices
0057 %----------------------------------------------------
0058 C = textscan(fid, '%s %s %s %d', 1); nVerts = C{4};
0059 C = textscan(fid, '%s %s %s %d', 1); nElems = C{4};
0060 tri = zeros(nElems,3); 
0061 x   = zeros(nVerts,1);
0062 y   = zeros(nVerts,1);
0063 h   = zeros(nVerts,1);
0064 lon = zeros(nVerts,1);
0065 lat = zeros(nVerts,1);
0066 ts  = zeros(nVerts,1);
0067 
0068 if(ftbverbose)
0069   fprintf('reading mesh file\n');
0070   fprintf('# nodes %d\n',nVerts);
0071   fprintf('# elems %d\n',nElems);
0072 end;
0073 for i=1:nElems
0074   C = textscan(fid,' %d %d %d %d %d\n',1);
0075   tri(i,1) = C{2};  tri(i,2) = C{3}; tri(i,3) = C{4};
0076 end;
0077 for i=1:nVerts 
0078   C = textscan(fid, '%d %f %f %f', 1);
0079   x(i) = C{2};
0080   y(i) = C{3};
0081 end;
0082 if(ftbverbose); fprintf('mesh read in\n'); end;
0083 fclose(fid);
0084 
0085 %------------------------------------------------------------------------------
0086 % Transfer to Mesh structure
0087 %------------------------------------------------------------------------------
0088 
0089 Mobj.nVerts  = nVerts;
0090 Mobj.nElems  = nElems;
0091 Mobj.nativeCoords = coordinate;
0092 
0093 if(have_lonlat)
0094     Mobj.have_lonlat  = have_lonlat;
0095 end;
0096 if(have_xy)
0097     Mobj.have_xy      = have_xy;
0098 end;
0099 if(have_bath)
0100     Mobj.have_bath    = have_bath;
0101 end;
0102 Mobj.x            = x;
0103 Mobj.y            = y;
0104 Mobj.ts           = ts;
0105 Mobj.lon          = lon;
0106 Mobj.lat          = lat;
0107 Mobj.h            = h;
0108 Mobj.tri          = tri;
0109 
0110 
0111 if(ftbverbose);
0112   fprintf(['end   : ' subname '\n'])
0113 end;
0114 
0115

Generated on Tue 04-Jun-2013 12:12:57 by m2html © 2005