-
Notifications
You must be signed in to change notification settings - Fork 14
/
Extract_RAS_TS.m
116 lines (104 loc) · 5.01 KB
/
Extract_RAS_TS.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
%==============================================================================
% FluEgg -Fluvial Egg Drift Simulator
%==============================================================================
% Copyright (c) 2016 Santiago Santacruz and Tatiana Garcia
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License version 3 as published by
% the Free Software Foundation (currently at http://www.gnu.org/licenses/agpl.html)
% with a permitted obligation to maintain Appropriate Legal Notices.
% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
% You should have received a copy of the GNU General Public License
% along with this program. If not, see <http://www.gnu.org/licenses/>.
%%%:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::%
%% Extract output from HEC-RAS %
%:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::%
%-------------------------------------------------------------------------%
% This function is used to extract data from a HEC-RAS project and produces %
% References: %
% Goodell, C.R. 2014. %
% Breaking the HEC-RAS Code: A User's Guide to Automating HEC-RAS. A User's
% Guide to Automating HEC-RAS. h2ls. Portland, OR. %
%-------------------------------------------------------------------------%
% %
%-------------------------------------------------------------------------%
% Created by : Santiago Santacruz & Tatiana %
% Date : December 20, 2016 %
% Last Modified : July 11, 2017 %
%-------------------------------------------------------------------------%
% Inputs:
% Outputs:
% Copyright 2016 Santiago Santacruz & Tatiana Garcia
%:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::%
function [XS, hydrographs, profiles] = ...
Extract_RAS_TS(strRASProject, handles)%, Plan, RiverStation)
%% Creates a COM Server for the HEC-RAS Controller
% The command above depends on the version of HEC-RAS you have, in my case
% I am using version 5.0.3
try
RC = actxserver('RAS503.HECRASController');
catch
try %HECRAS 5.0.2
RC = actxserver('RAS502.HECRASController');
catch
try %HECRAS 5.0.1
RC = actxserver('RAS501.HECRASController');
catch
try %HECRAS 5.0.0
RC = actxserver('RAS500.HECRASController');
catch
end %HECRAS 5.0.0
end %HECRAS 5.0.1
end%HECRAS 5.0.2
end %HECRAS 5.0.3
%% get variables from GUI with user selection
lngRiverID = get(handles.popup_River,'Value'); % RiverID
lngReachID = get(handles.popup_Reach,'Value'); % ReachID
% Plan
list = get(handles.popupPlan,'String');
val = get(handles.popupPlan,'value');
Plan = list(val,:);
Plan = Plan{1};
% River Station
list = get(handles.popup_River_Station,'String');
val = get(handles.popup_River_Station,'value');
XS = list(val,:);
XS = XS{1};
%% Open the project
%strRASProject = 'D:\Asian Carp\Asian Carp_USGS_Project\Tributaries data\Sandusky River\SANDUSKY_Hec_RAS_mod\Sandusky_mod_II\BallvilleDam_Updated.prj';
RC.Project_Open(strRASProject); %open and show interface, no need to use RC.ShowRAS in Matlab
RC.Plan_SetCurrent(Plan); %Set Current Plan to selected Plan
%% Define Variables
lngNodeID = RC.Geometry_GetNode(lngRiverID, lngReachID, XS); % NodeID
%%
% Variables to be extracted
lngQChannelID = 7; % Flow in the main channel
lngWseID = 2; % Water Surface Elevation
%% Get data
[nProfiles, profiles] = RC.Output_GetProfiles(0, 0);
QChannel_TS = nan(nProfiles - 1, 1); % Discard MaxWSL profile
WSE = nan(nProfiles - 1, 1); % Discard MaxWSL profile
for i = 1:nProfiles-1 % Profile = 1 is for MaxWSL (to be discarded)
QChannel_TS(i) = RC.Output_NodeOutput(lngRiverID,...
lngReachID,...
lngNodeID,...
0,...
i + 1,...
lngQChannelID);
WSE(i) = RC.Output_NodeOutput(lngRiverID,...
lngReachID,...
lngNodeID,...
0,...
i + 1,...
lngWseID);
end
hydrographs = [(1:numel(WSE))', QChannel_TS, WSE];
profiles = {profiles{2:end}}'; %Don't save MaxWS profile
try
RC.QuitRAS
catch
end
delete(RC);
end