143 lines
5.9 KiB
Matlab
143 lines
5.9 KiB
Matlab
%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 |