LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
getTranAvg.m
1function [QNclass_t, UNclass_t, TNclass_t] = getTranAvg(self,Qt,Ut,Tt)
2% [QNCLASS_T, UNCLASS_T, TNCLASS_T] = GETTRANAVG(SELF,QT,UT,TT)
3
4% Return transient average station metrics
5%
6% Copyright (c) 2012-2026, Imperial College London
7% All rights reserved.
8
9if nargin == 1
10 [Qt,Ut,Tt] = self.getTranHandles;
11end
12if nargin == 2
13 handles = Qt;
14 Qt=handles{1};
15 Ut=handles{2};
16 %Rt=handlers{3};
17 Tt=handles{3};
18end
19
20QNclass_t={};
21UNclass_t={};
22%RNclass_t={};
23TNclass_t={};
24
25options = self.options;
26
27sn = self.model.getStruct;
28minrate = min(sn.rates(isfinite(sn.rates)));
29if ~hasTranResults(self)
30 if length(options.timespan)<2
31 line_error(mfilename,'Timespan option requires to specify a two-dimensional vector, e.g., [0,1e3].\n');
32 end
33 if isinf(options.timespan(1)) && isinf(options.timespan(2))
34 options.timespan = [0,30/minrate];
35 line_warning(mfilename,'Timespan of transient analysis unspecified, setting the timespan option to [0, %d]. Use %s(model,''timespan'',[0,T]) to customize.\n',options.timespan(2),class(self));
36 end
37 if isinf(options.timespan(1))
38 line_warning(mfilename,'Start time of transient analysis unspecified, setting the timespan option to [0,%d].\n',options.timespan(2));
39 options.timespan(1) = 0;
40 end
41 if isinf(options.timespan(2))
42 options.timespan(2) = 30/minrate;
43 line_warning(mfilename,'End time of transient analysis unspecified, setting the timespan option to [%d,%d]. Use %s(model,''timespan'',[0,T]) to customize.\n',options.timespan(1),options.timespan(2),class(self));
44 end
45 runAnalyzer(self, options);
46end
47
48M = sn.nstations;
49K = sn.nclasses;
50
51% Check if transient results exist
52hasTran = isfield(self.result, 'Tran') && isfield(self.result.Tran, 'Avg');
53hasQ = hasTran && isfield(self.result.Tran.Avg, 'Q') && ~isempty(self.result.Tran.Avg.Q);
54hasU = hasTran && isfield(self.result.Tran.Avg, 'U') && ~isempty(self.result.Tran.Avg.U);
55hasT = hasTran && isfield(self.result.Tran.Avg, 'T') && ~isempty(self.result.Tran.Avg.T);
56
57if ~isempty(Qt)
58 QNclass_t = cell(M,K);
59 UNclass_t = cell(M,K);
60 %RNclass_t = cell(M,K);
61 TNclass_t = cell(M,K);
62 for k=1:K
63 for ist=1:M
64 %%
65 if ~Qt{ist,k}.disabled && hasQ
66 ret = self.result.Tran.Avg.Q{ist,k};
67 if ~isempty(ret) && size(ret,2) >= 2
68 metricVal = struct();
69 metricVal.handle = {self.model.stations{ist}, self.model.classes{k}};
70 metricVal.t = ret(:,2);
71 metricVal.metric = ret(:,1);
72 metricVal.isaggregate = true;
73 QNclass_t{ist,k} = metricVal;
74 else
75 QNclass_t{ist,k} = NaN;
76 end
77 else
78 QNclass_t{ist,k} = NaN;
79 end
80
81 %%
82 if ~Ut{ist,k}.disabled && hasU
83 ret = self.result.Tran.Avg.U{ist,k};
84 if ~isempty(ret) && size(ret,2) >= 2
85 metricVal = struct();
86 metricVal.handle = {self.model.stations{ist}, self.model.classes{k}};
87 metricVal.t = ret(:,2);
88 metricVal.metric = ret(:,1);
89 metricVal.isaggregate = true;
90 UNclass_t{ist,k} = metricVal;
91 else
92 UNclass_t{ist,k} = NaN;
93 end
94 else
95 UNclass_t{ist,k} = NaN;
96 end
97
98 %%
99 if ~Tt{ist,k}.disabled && hasT
100 ret = self.result.Tran.Avg.T{ist,k};
101 if ~isempty(ret) && size(ret,2) >= 2
102 metricVal = struct();
103 metricVal.handle = {self.model.stations{ist}, self.model.classes{k}};
104 metricVal.t = ret(:,2);
105 metricVal.metric = ret(:,1);
106 metricVal.isaggregate = true;
107 TNclass_t{ist,k} = metricVal;
108 else
109 TNclass_t{ist,k} = NaN;
110 end
111 else
112 TNclass_t{ist,k} = NaN;
113 end
114 end
115 end
116end
117end