%PROGRAM d3d_input %R.P. Mulligan %this script writes the spatially varying wind and pressure fields for Delft3D.... %3 files are created, 1 for each of u, v and p. %below the example is for H. Ernesto ... function [] = d3d_input_uvpFieldsCL_FUN(StartDateIN,m,n,P,u,v,prep,tStep,fName,Times) %UNTITLED Summary of this function goes here % Detailed explanation goes here %user define the txt string for the start date and time: StartDate = [datestr(StartDateIN,'yyyy-mm-dd HH:MM:SS') ' +00:00']; %1. input grid parameters----------------- %these values are produced by "latlon_grid.m", run it first % m = %number of points in x-dir % n = %number of points in y-dir % dx = %dlon in deg % dy = %dlat in deg % gridloncentre = round(min(min(gridlon)),0)%deg % gridlatcentre = round(min(min(gridlat)),0)%deg %and arrays for u, v, P, prep that are (time, lon, lat) %and time index is ttt %write to d3d inputt grid...-------------------------- clear line1 line2 line3; d3dfile1 = [fName '.amp']; %output file names. d3dfile2 = [fName '.amu']; d3dfile3 = [fName '.amv']; d3dfile4 = [fName '.ampr']; curline1 = 1; line1{curline1,:} = ['FileVersion = 1.03'];curline1 = curline1 + 1; line1{curline1,:} = ['filetype = meteo_on_curvilinear_grid'] ;curline1 = curline1 + 1; line1{curline1,:} = ['NODATA_value = -999.000'] ;curline1 = curline1 + 1; line1{curline1,:} = ['grid_file = Cone7LRW.grd'] ;curline1 = curline1 + 1; line1{curline1,:} = ['first_data_value = grid_llcorner'] ;curline1 = curline1 + 1; line1{curline1,:} = ['data_row = grid_row'] ;curline1 = curline1 + 1; line1{curline1,:} = ['n_quantity = 1'] ;curline1 = curline1 + 1; line1{curline1,:} = ['quantity1 = air_pressure'] ;curline1 = curline1 + 1; line1{curline1,:} = ['unit1 = Pa'] ;curline1 = curline1 + 1; for ttt = 1:Times line1{curline1,:} = ['TIME = ',num2str((ttt-1).*tStep),'.0 hours since ',StartDate] ;curline1 = curline1 + 1; Psqueeze = squeeze(P(ttt,:,:)); % array is therefore (time, lon, lat) for jj = 1:m line1{curline1,:} = [num2str(Psqueeze(jj,1:end),'% 11.1f')];curline1 = curline1 + 1; end end% curline2 = 1; line2{curline2,:} = ['FileVersion = 1.03'];curline2 = curline2 + 1; line2{curline2,:} = ['filetype = meteo_on_curvilinear_grid'] ;curline2 = curline2 + 1; line2{curline2,:} = ['NODATA_value = -999.000'] ;curline2 = curline2 + 1; line2{curline2,:} = ['grid_file = Cone7LRW.grd'] ;curline2 = curline2 + 1; line2{curline2,:} = ['first_data_value = grid_llcorner'] ;curline2 = curline2 + 1; line2{curline2,:} = ['data_row = grid_row'] ;curline2 = curline2 + 1; line2{curline2,:} = ['n_quantity = 1'] ;curline2 = curline2 + 1; line2{curline2,:} = ['quantity1 = x_wind'] ;curline2 = curline2 + 1; line2{curline2,:} = ['unit1 = m s-1'] ;curline2 = curline2 + 1; for ttt = 1:Times line2{curline2,:} = ['TIME = ',num2str((ttt-1).*tStep),'.0 hours since ',StartDate] ;curline2 = curline2 + 1; usqueeze = squeeze(u(ttt,:,:)); for jj = 1:m line2{curline2,:} = [num2str(usqueeze(jj,1:end),'% 11.3f')];curline2 = curline2 + 1; end end curline3 = 1; line3{curline3,:} = ['FileVersion = 1.03'];curline3 = curline3 + 1; line3{curline3,:} = ['filetype = meteo_on_curvilinear_grid'] ;curline3 = curline3 + 1; line3{curline3,:} = ['NODATA_value = -999.000'] ;curline3 = curline3 + 1; line3{curline3,:} = ['grid_file = Cone7LRW.grd'] ;curline3 = curline3 + 1; line3{curline3,:} = ['first_data_value = grid_llcorner'] ;curline3 = curline3 + 1; line3{curline3,:} = ['data_row = grid_row'] ;curline3 = curline3 + 1; line3{curline3,:} = ['n_quantity = 1'] ;curline3 = curline3 + 1; line3{curline3,:} = ['quantity1 = y_wind'] ;curline3 = curline3 + 1; line3{curline3,:} = ['unit1 = m s-1'] ;curline3 = curline3 + 1; for ttt = 1:Times line3{curline3,:} = ['TIME = ',num2str((ttt-1).*tStep),'.0 hours since ',StartDate] ;curline3 = curline3 + 1; vsqueeze = squeeze(v(ttt,:,:)); for jj = 1:m line3{curline3,:} = [num2str(vsqueeze(jj,1:end),'% 11.3f')];curline3 = curline3 + 1; end end curline4 = 1; line4{curline4,:} = ['FileVersion = 1.03'];curline4 = curline4 + 1; line4{curline4,:} = ['filetype = meteo_on_curvilinear_grid'] ;curline4 = curline4 + 1; line4{curline4,:} = ['NODATA_value = -999.000'] ;curline4 = curline4 + 1; line4{curline4,:} = ['grid_file = Cone7LRW.grd'] ;curline4 = curline4 + 1; line4{curline4,:} = ['first_data_value = grid_llcorner'] ;curline4 = curline4 + 1; line4{curline4,:} = ['data_row = grid_row'] ;curline4 = curline4 + 1; line4{curline4,:} = ['n_quantity = 1'] ;curline4 = curline4 + 1; line4{curline4,:} = ['quantity1 = precipitation'] ;curline4 = curline4 + 1; line4{curline4,:} = ['unit1 = mm/h'] ;curline4 = curline4 + 1; for ttt = 1:Times line4{curline4,:} = ['TIME = ',num2str((ttt-1).*tStep),'.0 hours since ',StartDate] ;curline4 = curline4 + 1; prepsqueeze = squeeze(prep(ttt,:,:)); for jj = 1:m line4{curline4,:} = [num2str(prepsqueeze(jj,1:end),'% 11.4f')];curline4 = curline4 + 1; end end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %write text files, 1 for each met data fid = fopen(d3dfile1,'wt'); %should overwrite if file already exists for ii = 1:(curline1-1) len = size(line1{ii,:},2); countP = fprintf(fid,['%' num2str(len) 's\n'],line1{ii,:}); end fclose(fid); fid = fopen(d3dfile2,'wt'); %should overwrite if file already exists for ii = 1:(curline2-1) len = size(line2{ii,:},2); countu = fprintf(fid,['%' num2str(len) 's\n'],line2{ii,:}); end fclose(fid); fid = fopen(d3dfile3,'wt'); %should overwrite if file already exists for ii = 1:(curline3-1) len = size(line3{ii,:},2); countv = fprintf(fid,['%' num2str(len) 's\n'],line3{ii,:}); end fclose(fid); fid = fopen(d3dfile4,'wt'); %should overwrite if file already exists for ii = 1:(curline4-1) len = size(line4{ii,:},2); countv = fprintf(fid,['%' num2str(len) 's\n'],line4{ii,:}); end fclose(fid); fclose all end