0001 function [Mobj] = read_fvcom_mesh(gridfile)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
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
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
0047
0048
0049
0050 fid = fopen(gridfile,'r');
0051 if(fid < 0)
0052 error(['file: ' gridfile ' does not exist']);
0053 end;
0054
0055
0056
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
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