From 9d914ccf1c73eb0a44cecf280311f02c8f78a044 Mon Sep 17 00:00:00 2001 From: Joshua Simmons Date: Thu, 28 Feb 2019 17:57:40 +1100 Subject: [PATCH] update to remove example material and improve file calling --- .gitignore | 10 ++ README.md | 18 ++- .../input_data/fielddata/stormdates_narra.mat | Bin 531 -> 0 bytes .../input_data/fielddata/stormdates_other.mat | Bin 331 -> 0 bytes .../fielddata/tide/code/tidedataget.m | 44 -------- .../fielddata/tide/code/tidedataget_other.m | 44 -------- .../processed/tidedata_narrabeen_2015.mat | Bin 2889 -> 0 bytes .../fielddata/wave/code/fmikeos2ns.m | 105 ------------------ .../fielddata/wave/code/run_OS_to_NS_mike21.m | 95 ---------------- .../wave/code/run_OS_to_NS_mike21_deewhy.m | 99 ----------------- .../run_OS_to_NS_mike21_end_effects_check.m | 105 ------------------ .../wave/code/run_OS_to_NS_mike21_other.m | 99 ----------------- .../processed/wavedata_narrabeen_2015.mat | Bin 24605 -> 0 bytes .../~$2007_survey_to_survey_wave_data.xlsx | Bin 165 -> 0 bytes .../processed/morphology_narrabeen_2015.mat | Bin 39411 -> 0 bytes fsbeach_runsetup.asv | 6 - sbeach_exe/{final_exe => }/SBEACH.exe | Bin writetofileang.m | 2 +- writetofilecfg.m | 2 +- writetofileelv.m | 2 +- writetofilehdb.m | 2 +- writetofilepri.m | 2 +- writetofileprm.m | 2 +- writetofilewav.m | 2 +- 24 files changed, 34 insertions(+), 605 deletions(-) create mode 100644 .gitignore delete mode 100644 example/input_data/fielddata/stormdates_narra.mat delete mode 100644 example/input_data/fielddata/stormdates_other.mat delete mode 100644 example/input_data/fielddata/tide/code/tidedataget.m delete mode 100644 example/input_data/fielddata/tide/code/tidedataget_other.m delete mode 100644 example/input_data/fielddata/tide/processed/tidedata_narrabeen_2015.mat delete mode 100644 example/input_data/fielddata/wave/code/fmikeos2ns.m delete mode 100644 example/input_data/fielddata/wave/code/run_OS_to_NS_mike21.m delete mode 100644 example/input_data/fielddata/wave/code/run_OS_to_NS_mike21_deewhy.m delete mode 100644 example/input_data/fielddata/wave/code/run_OS_to_NS_mike21_end_effects_check.m delete mode 100644 example/input_data/fielddata/wave/code/run_OS_to_NS_mike21_other.m delete mode 100644 example/input_data/fielddata/wave/processed/wavedata_narrabeen_2015.mat delete mode 100644 example/input_data/fielddata/wave/~$2007_survey_to_survey_wave_data.xlsx delete mode 100644 example/input_data/morphology/processed/morphology_narrabeen_2015.mat delete mode 100644 fsbeach_runsetup.asv rename sbeach_exe/{final_exe => }/SBEACH.exe (100%) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6475c29 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*~ +*.ini +*.py# +*.#* +*._* +.DS_Store +*.ipynb_checkpoints/ diff --git a/README.md b/README.md index d202570..c583822 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,19 @@ # sbeach_toolbox -Toolbox to assist in the use of the model SBEACH. \ No newline at end of file +Toolbox to assist in the use of the model SBEACH. + +Note this code is specifically written to align with (and borrows code from) the XBeach matlab toolbox so as to make the use of both models streamlined. + +Written by Joshua Simmons + +## Main code +* `RUN_sbeach_model.m`: this is an example function to call and use the SBEACH toolbox. It provides and + +* `SBEACH_GLUE_setup.m` - REMOVE +* `SBEACH_storm_setup.m` - REMOVE + +## Functions + +* `fsbeach_setupmodel`: used to construct the data files and config file needed for SBEACH to run in the folder specified + +## Example diff --git a/example/input_data/fielddata/stormdates_narra.mat b/example/input_data/fielddata/stormdates_narra.mat deleted file mode 100644 index 8009d0947c3a53f755c29785a0a76eb2c85f4a91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 531 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2cQV4Jk_w+L}(NSyj5-`93qo*%FkR1=i6>}aZCnW4(Jd)#Z zhVh6GkH7)0r^ZT&dJ1}aC-qPDnj0Ayw69EN>~4PIdf-#1tEy(F>PnuKm6{1sOg|cK zFr1V#v-x)5jHtl_w%3~#9OczRYQC-tUB5->iVUN9pMVp{ni#k>6%4qoF=>HX(_mq$ zud2FHMRbkP#uY55(h?ppCvmG(-}rEYnQ2Zyp+Z5#jJ3}^8td9-I{amL^qJoeWJfe{ zb~NJl3KQ5X4GiibHXRz_OO2d diff --git a/example/input_data/fielddata/stormdates_other.mat b/example/input_data/fielddata/stormdates_other.mat deleted file mode 100644 index 3a7a562fcd65185a2feeb36704e5141cdf262074..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 331 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2cQV4Jk_w+L}(NSGRxmWPGBL3-Hc~J$Ff>yj5-`93qo*%FkR1)g6>}aZCnQub9LaGw z!+6ApN8kY0Q)8t>Jq10zllrH6&5aC98doMWb~it9J@Bd1RaLW7btTWrO3ef*rXLMA zm`=)>*?enYP!F*Y;VAOHBBObsek;ccc?K(I!4DuS5{R>+l_)DrOuoEYVr1%G^mTpQ PR;_Hc0DFeq2;ndQ&?jVQ diff --git a/example/input_data/fielddata/tide/code/tidedataget.m b/example/input_data/fielddata/tide/code/tidedataget.m deleted file mode 100644 index fba5416..0000000 --- a/example/input_data/fielddata/tide/code/tidedataget.m +++ /dev/null @@ -1,44 +0,0 @@ -% Written by Joshua Simmons 04/01/2016 -% Description: used to tranform offshore to nearshore mike21 using the code -% OS2NS_MIKE21.m - -clear -clc - -%% Settings -%tide gauge data -guagedataloc = 'J:\Coastal\Data\Tide\Sydney\Processed\SydTideData.mat'; - -site = 'Narrabeen'; %embayment of interest - -%storm details -stormdatesloc = 'D:\7 Erosion Models\a_nb_model_comparison\input_data\fielddata\stormdates_narra.mat'; -storm = {'2007', '2011', '2014', '2015'}; - -% save? -savebool = 1; -% datasave location -saveloc = 'D:\7 Erosion Models\a_nb_model_comparison\input_data\fielddata\tide\processed\'; - -%% Code -%load buoy data,profile data and lookup table -guagedata = load(guagedataloc); - -stormdates = load(stormdatesloc); - -% narrow down to date range -for ii = 1:length(storm) - startdate = stormdates.(['storm_' storm{ii}]).startdate; - enddate = stormdates.(['storm_' storm{ii}]).enddate; - - validentries = find(guagedata.SydTideData.time>=startdate & guagedata.SydTideData.time<=enddate); - - tidedata.tide = guagedata.SydTideData.tide(validentries); - tidedata.time = guagedata.SydTideData.time(validentries); - - if savebool - save([saveloc 'tidedata_' lower(site) '_' storm{ii} '.mat'],'tidedata') - end - - clear tidedata startdate enddate validentries -end \ No newline at end of file diff --git a/example/input_data/fielddata/tide/code/tidedataget_other.m b/example/input_data/fielddata/tide/code/tidedataget_other.m deleted file mode 100644 index bc645a8..0000000 --- a/example/input_data/fielddata/tide/code/tidedataget_other.m +++ /dev/null @@ -1,44 +0,0 @@ -% Written by Joshua Simmons 04/01/2016 -% Description: used to tranform offshore to nearshore mike21 using the code -% OS2NS_MIKE21.m - -clear -clc - -%% Settings -%tide gauge data -guagedataloc = 'J:\Coastal\Data\Tide\Sydney\Processed\SydTideData.mat'; - -site = 'Monavale'; %embayment of interest - -%storm details -stormdatesloc = 'D:\7 Erosion Models\a_nb_model_comparison\input_data\fielddata\stormdates_other.mat'; -storm = {'2014', '2015'}; - -% save? -savebool = 1; -% datasave location -saveloc = 'D:\7 Erosion Models\a_nb_model_comparison\input_data\fielddata\tide\processed\'; - -%% Code -%load buoy data,profile data and lookup table -guagedata = load(guagedataloc); - -stormdates = load(stormdatesloc); - -% narrow down to date range -for ii = 1:length(storm) - startdate = stormdates.(['storm_' storm{ii}]).startdate; - enddate = stormdates.(['storm_' storm{ii}]).enddate; - - validentries = find(guagedata.SydTideData.time>=startdate & guagedata.SydTideData.time<=enddate); - - tidedata.tide = guagedata.SydTideData.tide(validentries); - tidedata.time = guagedata.SydTideData.time(validentries); - - if savebool - save([saveloc 'tidedata_' lower(site) '_' storm{ii} '.mat'],'tidedata') - end - - clear tidedata startdate enddate validentries -end \ No newline at end of file diff --git a/example/input_data/fielddata/tide/processed/tidedata_narrabeen_2015.mat b/example/input_data/fielddata/tide/processed/tidedata_narrabeen_2015.mat deleted file mode 100644 index 9e717187a01eacdb7041be37cd4028aceb048f81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2889 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 GkI7$$-5Cu4 diff --git a/example/input_data/fielddata/wave/code/fmikeos2ns.m b/example/input_data/fielddata/wave/code/fmikeos2ns.m deleted file mode 100644 index bf1042f..0000000 --- a/example/input_data/fielddata/wave/code/fmikeos2ns.m +++ /dev/null @@ -1,105 +0,0 @@ -function nswaves = fmikeos2ns(oswaves, LookUps, site, contour, location) - % Written by Joshua Simmons (WRL) 03/11/2014 - % to transform waves from offshore (OS) to nearshore (NS) using MIKE21 model - % oswaves - OS wave data - oswaves.Hsig(Significant wave height)/ - % oswaves.Tp1(Peak period)/oswaves.Wdir(Incident wave direction) - % LookUps - MIKE21 wave model output in file "OEH_ARC_PointOutput.mat" - % site - embayment of interest - i.e. 'Narrabeen' - % contour - 10 or 15 (m) contour for NS output - % location - either pure S co-ord (see Mitchell Harley's xyz2spz - % transformation) or location.E and location.N - refers to output - % location for NS waves (gets nearest MIKE21 point) - % - %V1.1 - updated by Joshua Simmons 21/01/2015 to patch Wamberal/Wanda - %error. - - %find site and contour indices - siteidx = getnameidx(LookUps(:,2), site); - - %apply fix for Wamberal and Wanda - % from TM on 21/01/2015: "I've found an error in the .mat file for the - % look-up tables; in the pdf I say that all output for all locations runs - % north to south - for Wamberal and Wanda it seems I've output them south to north. - % So if you are using output from these two sites, if you haven't realised already, - % alongshore gradients will look inverted." - for aa = 1:2; - LookUps{6,1}{aa,1} = flipud(LookUps{6,1}{aa,1}); LookUps{6,1}{aa,1}(:,1) = flipud(LookUps{6,1}{aa,1}(:,1)); - LookUps{7,1}{aa,1} = flipud(LookUps{7,1}{aa,1}); LookUps{7,1}{aa,1}(:,1) = flipud(LookUps{7,1}{aa,1}(:,1)); - end - - if contour == 10 - contouridx = 1; - elseif contour == 15; - contouridx = 2; - else - error('Contour information not available, select either 10 or 15m contour') - end - - %extract scenarios for easy lookup - scenariosidx = getnameidx(LookUps(:,2), 'Offshore Wave Scenarios'); - scenarios = LookUps{scenariosidx,1}; - - %get nearest location available for output - Eouts = LookUps{siteidx,1}{contouridx,1}(:,2); - Nouts = LookUps{siteidx,1}{contouridx,1}(:,3); - - if strcmp(site,'Narrabeen') - %compares closes alongshore spacing (s) for log-spiral narrabeen - xyz_data.x = cell2mat(Eouts); - xyz_data.y = cell2mat(Nouts); - xyz_data.z = zeros(size(Eouts)); - spz = xyz2spz(xyz_data,'NARRA'); - [~,locationidx] = min(abs(location-spz.s)); - else - %gets nearest output point - dists = sqrt((location.E-cell2mat(Eouts)).^2+(location.N-cell2mat(Nouts)).^2); - [~,locationidx] = min(abs(dists)); - end - - fcount = 1; - %loop through oswaves and lookup nswaves - for ii = 1:length(oswaves.Hsig) - tmpHs = oswaves.Hsig(ii); - tmpTp = oswaves.Tp1(ii); - tmpWdir = oswaves.Wdir(ii); - - %find closest scenario match - [~,Hsidx] = min(abs(tmpHs-scenarios(:,1))); - tmpHsround = scenarios(Hsidx,1); - [~,Tpidx] = min(abs(tmpTp-scenarios(:,2))); - tmpTpround = scenarios(Tpidx,2); - [~,Wdiridx] = min(abs(tmpWdir-scenarios(:,3))); - tmpWdirround = scenarios(Wdiridx,3); - - iter1ind = find(scenarios(:,3) == tmpWdirround); - iter2ind = find(scenarios(iter1ind,2) == tmpTpround); - iter3ind = find(scenarios(iter1ind(iter2ind),1) == tmpHsround); - - iter4ind = iter1ind(iter2ind(iter3ind)); - - %now get ns lookup information if available - if isempty(iter4ind) - %get the closest wave height to scenario chosen - [~,iter3ind] = min(abs(tmpHs-scenarios(iter1ind(iter2ind),1))); - iter4ind = iter1ind(iter2ind(iter3ind)); - diffHs = scenarios(iter4ind,1)-tmpHs; - disp(['No match found for oswaves(' num2str(ii) ') wave height off by ' num2str(diffHs) 'm']); - end - - nstmp = LookUps{siteidx,1}{contouridx,1}{locationidx,4}(iter4ind,:); - %store the values from the lookup table - nswaves.Hsig(ii,1) = nstmp(1); - nswaves.Hmax(ii,1) = nstmp(2); - nswaves.Tp1(ii,1) = nstmp(3); - nswaves.T01(ii,1) = nstmp(4); - nswaves.Wdir(ii,1) = nstmp(5); - nswaves.power(ii,1) = nstmp(6); - end - try - nswaves.date = oswaves.date; - nswaves.time = oswaves.time; - nswaves.datenums = oswaves.datenums; - catch - nswaves.datenums = oswaves.datenums; - end -end \ No newline at end of file diff --git a/example/input_data/fielddata/wave/code/run_OS_to_NS_mike21.m b/example/input_data/fielddata/wave/code/run_OS_to_NS_mike21.m deleted file mode 100644 index 5540332..0000000 --- a/example/input_data/fielddata/wave/code/run_OS_to_NS_mike21.m +++ /dev/null @@ -1,95 +0,0 @@ -% Written by Joshua Simmons 04/01/2016 -% Description: used to tranform offshore to nearshore mike21 using the code -% OS2NS_MIKE21.m - -clear -clc - -%% Settings -%buoy data -buoydataloc = 'J:\Coastal\Data\Wave\Sydney\Processed\SydneyProcessed_CSIROGapFill.mat'; -% the non CSIRO filtered data is the only data available after 2014 so fill -% from the recent data with gaps. -backupbuoydata = 'J:\Coastal\Data\Wave\Sydney\Processed\SydneyProcessed.mat'; - -%location of mike21 runcode -mike21loc = 'J:\Coastal\Tools\Nearshore Wave Transformations\MIKE21\'; -%location of MALT -maltloc = 'J:\Coastal\Tools\MALT Logspiral Transformation\'; -%location of profiles for which wave data is required. -profiledataloc = [437 850 1750 2606 3420]; % s co-ordinate - -site = 'Narrabeen'; %embayment of interest -contour = 10; %m - 10m or 15m contour? - -%storm details -stormdatesloc = 'D:\7 Erosion Models\a_nb_model_comparison\input_data\fielddata\stormdates_narra.mat'; -storm = {'2007', '2011', '2014', '2015'}; - -% save? -savebool = 1; -% datasave location -saveloc = 'D:\7 Erosion Models\a_nb_model_comparison\input_data\fielddata\wave\processed\'; - -%% Code -% for MIKE21 code and MALT -addpath(mike21loc); -addpath(maltloc); -%load buoy data,profile data and lookup table -buoydata = load(buoydataloc); -backupbuoydata = load(backupbuoydata); -load('OEH_ARC_PointOutput.mat'); -stormdates = load(stormdatesloc); - -% narrow down to date range -for ii = 1:length(storm) - startdate = stormdates.(['storm_' storm{ii}]).startdate; - enddate = stormdates.(['storm_' storm{ii}]).enddate; - - validentries = find(buoydata.dates>=startdate & buoydata.dates<=enddate); - % if nothing then revert to backup - if isempty(validentries) || validentries(end) == length(buoydata.dates) - validentries = find(backupbuoydata.dates>=startdate & backupbuoydata.dates<=enddate); - oswaves.Hsig = backupbuoydata.Hsig(validentries); - oswaves.Tp1 = backupbuoydata.Tp(validentries); - oswaves.Wdir = backupbuoydata.Wdir(validentries); - oswaves.datenums = backupbuoydata.dates(validentries); - else - oswaves.Hsig = buoydata.Hsig(validentries); - oswaves.Tp1 = buoydata.Tp(validentries); - oswaves.Wdir = buoydata.Wdir(validentries); - oswaves.datenums = buoydata.dates(validentries); - end - - fns1 = fieldnames(oswaves); - for kk = 1:length(fns1) - if any(isnan(oswaves.(fns1{kk}))) - error('NaN values in wave data') - end - end - - tic - parfor jj = 1:length(profiledataloc) - location = profiledataloc(jj); - nswaves = OS2NS_MIKE21(oswaves, LookUps, site, contour, location); - - % bug fix to ensure no inaccurate wave period estimates - nswaves.Tp1 = oswaves.Tp1; - - tmp(jj) = nswaves; - end - wavedata.ns.data = tmp; - toc - - wavedata.os = oswaves; - - wavedata.ns.model = 'MIKE21'; - wavedata.ns.contour = [num2str(contour) 'm']; - wavedata.ns.location = profiledataloc; - - if savebool - save([saveloc 'wavedata_' lower(site) '_' storm{ii} '.mat'],'wavedata') - end - - clear wavedata oswaves startdate enddate validentries tmp -end \ No newline at end of file diff --git a/example/input_data/fielddata/wave/code/run_OS_to_NS_mike21_deewhy.m b/example/input_data/fielddata/wave/code/run_OS_to_NS_mike21_deewhy.m deleted file mode 100644 index 17ca5d3..0000000 --- a/example/input_data/fielddata/wave/code/run_OS_to_NS_mike21_deewhy.m +++ /dev/null @@ -1,99 +0,0 @@ -% Written by Joshua Simmons 04/01/2016 -% Description: used to tranform offshore to nearshore mike21 using the code -% OS2NS_MIKE21.m - -clear -clc - -%% Settings -%buoy data -buoydataloc = 'J:\Coastal\Data\Wave\Sydney\Processed\SydneyProcessed_CSIROGapFill.mat'; -% the non CSIRO filtered data is the only data available after 2014 so fill -% from the recent data with gaps. -backupbuoydata = 'J:\Coastal\Data\Wave\Sydney\Processed\SydneyProcessed.mat'; - -%location of mike21 runcode -mike21loc = 'J:\Coastal\Tools\Nearshore Wave Transformations\MIKE21\'; -%location of MALT -maltloc = 'J:\Coastal\Tools\MALT Logspiral Transformation\'; -%location of profiles for which wave data is required. -% profiledataloc = [6275797.660794820 6275692.739810870 6275536.815570840]; % Northings co-ordinate - Bilgola (at 10m contour) -% profiledataloc = [6272148.185 6272338.391 6272389.496 6271924.185 6271823.724]; % Northings co-ordinate - Mona Vale (at 10m contour) -profiledataloc = [6264042.586 6264127.494 6263995.016 6263745.956 6263879.058]; % Northings co-ordinate - Dee Why (at 10m contour) -profiledataloc2 = [343633.9263 343038.1544 342940.1201 342757.2994 342848.2807]; % Eastings co-ordinate - Dee Why (at 10m contour) - -site = 'DeeWhy'; %embayment of interest -contour = 10; %m - 10m or 15m contour? - -%storm details -stormdatesloc = 'D:\7 Erosion Models\a_nb_model_comparison\input_data\fielddata\stormdates_other.mat'; -storm = {'2014', '2015'}; - -% save? -savebool = 1; -% datasave location -saveloc = 'D:\7 Erosion Models\a_nb_model_comparison\input_data\fielddata\wave\processed\'; - -%% Code -% for MIKE21 code and MALT -addpath(mike21loc); -addpath(maltloc); -%load buoy data,profile data and lookup table -buoydata = load(buoydataloc); -backupbuoydata = load(backupbuoydata); -load('OEH_ARC_PointOutput.mat'); -stormdates = load(stormdatesloc); - -% narrow down to date range -for ii = 1:length(storm) - startdate = stormdates.(['storm_' storm{ii}]).startdate; - enddate = stormdates.(['storm_' storm{ii}]).enddate; - - validentries = find(buoydata.dates>=startdate & buoydata.dates<=enddate); - % if nothing then revert to backup - if isempty(validentries) || validentries(end) == length(buoydata.dates) - validentries = find(backupbuoydata.dates>=startdate & backupbuoydata.dates<=enddate); - oswaves.Hsig = backupbuoydata.Hsig(validentries); - oswaves.Tp1 = backupbuoydata.Tp(validentries); - oswaves.Wdir = backupbuoydata.Wdir(validentries); - oswaves.datenums = backupbuoydata.dates(validentries); - else - oswaves.Hsig = buoydata.Hsig(validentries); - oswaves.Tp1 = buoydata.Tp(validentries); - oswaves.Wdir = buoydata.Wdir(validentries); - oswaves.datenums = buoydata.dates(validentries); - end - - fns1 = fieldnames(oswaves); - for kk = 1:length(fns1) - if any(isnan(oswaves.(fns1{kk}))) - error('NaN values in wave data') - end - end - - tic - for jj = 1:length(profiledataloc) - location.N = profiledataloc(jj); - location.E = profiledataloc2(jj); - nswaves = fmikeos2ns(oswaves, LookUps, site, contour, location); - - % bug fix to ensure no inaccurate wave period estimates - nswaves.Tp1 = oswaves.Tp1; - - tmp(jj) = nswaves; - end - wavedata.ns.data = tmp; - toc - - wavedata.os = oswaves; - - wavedata.ns.model = 'MIKE21'; - wavedata.ns.contour = [num2str(contour) 'm']; - wavedata.ns.location = profiledataloc; - - if savebool - save([saveloc 'wavedata_' lower(site) '_' storm{ii} '.mat'],'wavedata') - end - - clear wavedata oswaves startdate enddate validentries tmp -end \ No newline at end of file diff --git a/example/input_data/fielddata/wave/code/run_OS_to_NS_mike21_end_effects_check.m b/example/input_data/fielddata/wave/code/run_OS_to_NS_mike21_end_effects_check.m deleted file mode 100644 index 5dae8fa..0000000 --- a/example/input_data/fielddata/wave/code/run_OS_to_NS_mike21_end_effects_check.m +++ /dev/null @@ -1,105 +0,0 @@ -% Written by Joshua Simmons 04/01/2016 -% Description: used to tranform offshore to nearshore mike21 using the code -% OS2NS_MIKE21.m - -clear -clc - -%% Settings -%buoy data -buoydataloc = 'J:\Coastal\Data\Wave\Sydney\Processed\SydneyProcessed_CSIROGapFill.mat'; -% the non CSIRO filtered data is the only data available after 2014 so fill -% from the recent data with gaps. -backupbuoydata = 'J:\Coastal\Data\Wave\Sydney\Processed\SydneyProcessed.mat'; - -%location of mike21 runcode -mike21loc = 'J:\Coastal\Tools\Nearshore Wave Transformations\MIKE21\'; -%location of MALT -maltloc = 'J:\Coastal\Tools\MALT Logspiral Transformation\'; -%location of profiles for which wave data is required. -profiledataloc = [90:20:3870]; % s co-ordinate - -site = 'Narrabeen'; %embayment of interest -contour = 10; %m - 10m or 15m contour? - -%storm details -stormdatesloc = 'D:\7 Erosion Models\a_nb_model_comparison\input_data\fielddata\stormdates_narra.mat'; -storm = {'2007', '2011', '2014', '2015'}; - -% save? -savebool = 0; -% datasave location -saveloc = 'D:\7 Erosion Models\a_nb_model_comparison\input_data\fielddata\wave\processed\'; - -%% Code -% for MIKE21 code and MALT -addpath(mike21loc); -addpath(maltloc); -%load buoy data,profile data and lookup table -buoydata = load(buoydataloc); -backupbuoydata = load(backupbuoydata); -load('OEH_ARC_PointOutput.mat'); -stormdates = load(stormdatesloc); - -% narrow down to date range -for ii = 1:length(storm) - startdate = stormdates.(['storm_' storm{ii}]).startdate; - enddate = stormdates.(['storm_' storm{ii}]).enddate; - - validentries = find(buoydata.dates>=startdate & buoydata.dates<=enddate); - % if nothing then revert to backup - if isempty(validentries) || validentries(end) == length(buoydata.dates) - validentries = find(backupbuoydata.dates>=startdate & backupbuoydata.dates<=enddate); - oswaves.Hsig = backupbuoydata.Hsig(validentries); - oswaves.Tp1 = backupbuoydata.Tp(validentries); - oswaves.Wdir = backupbuoydata.Wdir(validentries); - oswaves.datenums = backupbuoydata.dates(validentries); - else - oswaves.Hsig = buoydata.Hsig(validentries); - oswaves.Tp1 = buoydata.Tp(validentries); - oswaves.Wdir = buoydata.Wdir(validentries); - oswaves.datenums = buoydata.dates(validentries); - end - - fns1 = fieldnames(oswaves); - for kk = 1:length(fns1) - if any(isnan(oswaves.(fns1{kk}))) - error('NaN values in wave data') - end - end - - tic - parfor jj = 1:length(profiledataloc) - location = profiledataloc(jj); - nswaves = OS2NS_MIKE21(oswaves, LookUps, site, contour, location); - - % bug fix to ensure no inaccurate wave period estimates - nswaves.Tp1 = oswaves.Tp1; - -% tmp(jj) = nswaves; - Hsig(:,jj) = nswaves.Hsig(:,1); - Wdir(:,jj) = nswaves.Wdir(:,1); - power(:,jj) = nswaves.power(:,1); - end - dataout(ii).s = profiledataloc; - dataout(ii).Hsig = Hsig; - dataout(ii).Wdir = Wdir; - dataout(ii).power = power; - dataout(ii).osWdir = oswaves.Wdir; - dataout(ii).osHsig = oswaves.Hsig; -% wavedata.ns.data = tmp; - toc - - wavedata.os = oswaves; - - wavedata.ns.model = 'MIKE21'; - wavedata.ns.contour = [num2str(contour) 'm']; - wavedata.ns.location = profiledataloc; - - if savebool - save([saveloc 'wavedata_' lower(site) '_' storm{ii} '.mat'],'wavedata') - end - - clear wavedata oswaves startdate enddate validentries - clear power s Hsig Wdir -end \ No newline at end of file diff --git a/example/input_data/fielddata/wave/code/run_OS_to_NS_mike21_other.m b/example/input_data/fielddata/wave/code/run_OS_to_NS_mike21_other.m deleted file mode 100644 index f3927e1..0000000 --- a/example/input_data/fielddata/wave/code/run_OS_to_NS_mike21_other.m +++ /dev/null @@ -1,99 +0,0 @@ -% Written by Joshua Simmons 04/01/2016 -% Description: used to tranform offshore to nearshore mike21 using the code -% OS2NS_MIKE21.m - -clear -clc - -%% Settings -%buoy data -buoydataloc = 'J:\Coastal\Data\Wave\Sydney\Processed\SydneyProcessed_CSIROGapFill.mat'; -% the non CSIRO filtered data is the only data available after 2014 so fill -% from the recent data with gaps. -backupbuoydata = 'J:\Coastal\Data\Wave\Sydney\Processed\SydneyProcessed.mat'; - -%location of mike21 runcode -mike21loc = 'J:\Coastal\Tools\Nearshore Wave Transformations\MIKE21\'; -%location of MALT -maltloc = 'J:\Coastal\Tools\MALT Logspiral Transformation\'; -%location of profiles for which wave data is required. -% profiledataloc = [6275797.660794820 6275692.739810870 6275536.815570840]; % Northings co-ordinate - Bilgola (at 10m contour) -% profiledataloc = [6272148.185 6272338.391 6272389.496 6271924.185 6271823.724]; % Northings co-ordinate - Mona Vale (at 10m contour) -profiledataloc = [6264042.586 6264127.494 6263995.016 6263745.956 6263879.058]; % Northings co-ordinate - Dee Why (at 10m contour) - - - -site = 'DeeWhy'; %embayment of interest -contour = 10; %m - 10m or 15m contour? - -%storm details -stormdatesloc = 'D:\7 Erosion Models\a_nb_model_comparison\input_data\fielddata\stormdates_other.mat'; -storm = {'2014', '2015'}; - -% save? -savebool = 1; -% datasave location -saveloc = 'D:\7 Erosion Models\a_nb_model_comparison\input_data\fielddata\wave\processed\'; - -%% Code -% for MIKE21 code and MALT -addpath(mike21loc); -addpath(maltloc); -%load buoy data,profile data and lookup table -buoydata = load(buoydataloc); -backupbuoydata = load(backupbuoydata); -load('OEH_ARC_PointOutput.mat'); -stormdates = load(stormdatesloc); - -% narrow down to date range -for ii = 1:length(storm) - startdate = stormdates.(['storm_' storm{ii}]).startdate; - enddate = stormdates.(['storm_' storm{ii}]).enddate; - - validentries = find(buoydata.dates>=startdate & buoydata.dates<=enddate); - % if nothing then revert to backup - if isempty(validentries) || validentries(end) == length(buoydata.dates) - validentries = find(backupbuoydata.dates>=startdate & backupbuoydata.dates<=enddate); - oswaves.Hsig = backupbuoydata.Hsig(validentries); - oswaves.Tp1 = backupbuoydata.Tp(validentries); - oswaves.Wdir = backupbuoydata.Wdir(validentries); - oswaves.datenums = backupbuoydata.dates(validentries); - else - oswaves.Hsig = buoydata.Hsig(validentries); - oswaves.Tp1 = buoydata.Tp(validentries); - oswaves.Wdir = buoydata.Wdir(validentries); - oswaves.datenums = buoydata.dates(validentries); - end - - fns1 = fieldnames(oswaves); - for kk = 1:length(fns1) - if any(isnan(oswaves.(fns1{kk}))) - error('NaN values in wave data') - end - end - - tic - for jj = 1:length(profiledataloc) - location = profiledataloc(jj); - nswaves = OS2NS_MIKE21(oswaves, LookUps, site, contour, location); - - % bug fix to ensure no inaccurate wave period estimates - nswaves.Tp1 = oswaves.Tp1; - - tmp(jj) = nswaves; - end - wavedata.ns.data = tmp; - toc - - wavedata.os = oswaves; - - wavedata.ns.model = 'MIKE21'; - wavedata.ns.contour = [num2str(contour) 'm']; - wavedata.ns.location = profiledataloc; - - if savebool - save([saveloc 'wavedata_' lower(site) '_' storm{ii} '.mat'],'wavedata') - end - - clear wavedata oswaves startdate enddate validentries tmp -end \ No newline at end of file diff --git a/example/input_data/fielddata/wave/processed/wavedata_narrabeen_2015.mat b/example/input_data/fielddata/wave/processed/wavedata_narrabeen_2015.mat deleted file mode 100644 index 15b3848474c80888b76538fe80752452b6583a0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24605 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�lvOMvl%ri)~5Ydxwz3h8y0^+vdyk&*`My=k%zdMcsU{2f?=op2 zOZ1I>)t+rs4WvFL=>96aKMq%ep4~k)^Cjk8S~0xe(Vyi@F^=Q_&62i6ca9vZS=J~L zXuJ;~9x~a;I%l(;%=QXwExx$_Xz^!bY&i9(?3Y+kk_$uKt>NDJu{Bw3FQd9P};1;?6C@Vu^GfhR| zgkycJi+0W_K;W|C3Kw3=$Pe{k zRWox`GleMQ?s%xZfz(**M%d|)1Gp#ho(EEU?!aZPBeUHSc7@Z}lLZ7NQ3}O>jH#U= zO?MiUV)1*YY({riIecwZOesY<$}{tl@thhnhYL4j>SpjP6iEVC(%(5V>$tXBYjqlL zZQF7J7sq!HDg|nO>czbunW(v9kJ~ObYI|B-$ajK`JN_LEfA5kBn&=^N!5xJs@Gjd+ zVJ^=-XDkTYotEbyy+&tHO`=$PdX-s2zakeQe8OnAK$STk?=fO0)weVxM`Dj~+P}l} zlUZ*?q|VZ*4zc$sC(YV!{Ph@xnGbE%mOU|%j-sf4hx|?OLv4LH?nrEu}JVmrI0%tC7PsD;9(GV80POPY?2~08_q! zR!L`*6YqOCM%N#o@9DvM)?HMwfm4GIQ~f>?9A0_&0}ZqL#Lz%y(-))bt9m_Xk>2*d zH`qqMy$~H-Ux-URMsUU+Zwz!!oqnVSCMEp!4xHBg88!Oo(n|eZbmihNlJ=e2azie$pWhk8ynRx;#lHxZkJeA1wp}*6vnBaJ4 zK_P~xv|~w%Ykq2MV*Z!C<<2Qe4Q0&IG5fZbDqz@h(skw)K zL%;_hhEm-q(@pqTHH~@)M(tH|!4yLPffakLH?olfF&~MpdtWxBT?pU^i6JW+TIVD! z3n(uF2hGyda9k=R!CsDYv=(eCM)5GYB4lWnDGX_3%M8u6(USPHkkKX uQ1*YcpG-SP1&RL8>F-`}4!ouQM|%tL{#KV5&Ycay8_fS&a$V<+?f(G%BJY#{ diff --git a/example/input_data/fielddata/wave/~$2007_survey_to_survey_wave_data.xlsx b/example/input_data/fielddata/wave/~$2007_survey_to_survey_wave_data.xlsx deleted file mode 100644 index fd0b6a9c09d5c7e6280b701c6daea513821cd22d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165 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 zΝ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 I&)G40zl4`O}`)Ajh7V3+m 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 diff --git a/fsbeach_runsetup.asv b/fsbeach_runsetup.asv deleted file mode 100644 index 315765d..0000000 --- a/fsbeach_runsetup.asv +++ /dev/null @@ -1,6 +0,0 @@ -% SBEACH toolbox -% Written by Joshua Simmons - -function out = fsbeach_runsetup() - -end \ No newline at end of file diff --git a/sbeach_exe/final_exe/SBEACH.exe b/sbeach_exe/SBEACH.exe similarity index 100% rename from sbeach_exe/final_exe/SBEACH.exe rename to sbeach_exe/SBEACH.exe diff --git a/writetofileang.m b/writetofileang.m index d8323c4..bde5b4d 100644 --- a/writetofileang.m +++ b/writetofileang.m @@ -1,5 +1,5 @@ function writetofileang(angfile, outpath, pfstring) - fid = fopen([outpath '\' pfstring '.ANG'],'w'); + fid = fopen(fullfile(outpath,[pfstring '.ANG']),'w'); fprintf(fid,'C> *******************************************************\r\n'); fprintf(fid,'C> * SBEACH wave input file: %s.ANG *\r\n',pfstring); fprintf(fid,'C> *******************************************************\r\n'); diff --git a/writetofilecfg.m b/writetofilecfg.m index 620bda5..31347c7 100644 --- a/writetofilecfg.m +++ b/writetofilecfg.m @@ -1,5 +1,5 @@ function writetofilecfg(OPT, outpath, pfstring) - fid = fopen([outpath '\' pfstring '.CFG'],'w'); + fid = fopen(fullfile(outpath,[pfstring '.CFG']),'w'); fprintf(fid,' *******************************************************\r\n'); fprintf(fid,' * SBEACH model configuration file: %s.CFG *\r\n',pfstring); fprintf(fid,' *******************************************************\r\n'); diff --git a/writetofileelv.m b/writetofileelv.m index e03712d..26a8c1b 100644 --- a/writetofileelv.m +++ b/writetofileelv.m @@ -1,5 +1,5 @@ function writetofileelv(elvfile, outpath, pfstring) - fid = fopen([outpath '\' pfstring '.ELV'],'w'); + fid = fopen(fullfile(outpath,[pfstring '.ELV']),'w'); fprintf(fid,'C> *******************************************************\r\n'); fprintf(fid,'C> * SBEACH water elevation input file: %s.ELV *\r\n',pfstring); fprintf(fid,'C> *******************************************************\r\n'); diff --git a/writetofilehdb.m b/writetofilehdb.m index 304e1c9..82e0563 100644 --- a/writetofilehdb.m +++ b/writetofilehdb.m @@ -1,5 +1,5 @@ function writetofilehdb(hdbfile, outpath, namestr) - fid = fopen([outpath '\' namestr '.HDB'],'w'); + fid = fopen(fullfile(outpath,[namestr '.HDB']),'w'); fprintf(fid,'C> *******************************************************\r\n'); fprintf(fid,'C> * SBEACH hard bottom input file: %s.HDB *\r\n',namestr); fprintf(fid,'C> *******************************************************\r\n'); diff --git a/writetofilepri.m b/writetofilepri.m index 69dff44..9203b06 100644 --- a/writetofilepri.m +++ b/writetofilepri.m @@ -1,5 +1,5 @@ function writetofilepri(prifile, outpath, namestr) - fid = fopen([outpath '\' namestr '.PRI'],'w'); + fid = fopen(fullfile(outpath,[namestr '.PRI']),'w'); fprintf(fid,'C> *******************************************************\r\n'); fprintf(fid,'C> * SBEACH initial profile input file: %s.PRI *\r\n',namestr); fprintf(fid,'C> *******************************************************\r\n'); diff --git a/writetofileprm.m b/writetofileprm.m index a5661a2..cfa0d55 100644 --- a/writetofileprm.m +++ b/writetofileprm.m @@ -1,5 +1,5 @@ function writetofileprm(prmfile, outpath, pfstring, rundescription) - fid = fopen([outpath pfstring '\' pfstring '_' rundescription '.PRM'],'w'); + fid = fopen(fullfile(outpath,pfstring, [pfstring '_' rundescription '.PRM']),'w'); fprintf(fid,'C> *******************************************************\n'); fprintf(fid,'C> * SBEACH initial profile input file: %s.PRM *\n',[pfstring '_' rundescription]); fprintf(fid,'C> *******************************************************\n'); diff --git a/writetofilewav.m b/writetofilewav.m index f7fe3a1..5368407 100644 --- a/writetofilewav.m +++ b/writetofilewav.m @@ -1,5 +1,5 @@ function writetofilewav(wavfile, outpath, pfstring) - fid = fopen([outpath '\' pfstring '.WAV'],'w'); + fid = fopen(fullfile(outpath,[pfstring '.WAV']),'w'); fprintf(fid,'C> *******************************************************\r\n'); fprintf(fid,'C> * SBEACH wave input file: %s.WAV *\r\n',pfstring); fprintf(fid,'C> *******************************************************\r\n');