In the off-line stage, snapshot solutions
\({\textbf{q}}_i^{(0)}({\varvec{\omega }}_n) = {\textbf{q}}_i^{(0)} (\mu _{r,n})\) and
\({\textbf{q}}_i^{(1)}(\varvec{\omega }_n)\), corresponding to the finite element solution coefficients for
\(\tilde{\varvec{\theta }}^{(0,hp)}_i(\mu _{r,n})\) and
\(\varvec{\theta }^{(1,hp)}_i(\varvec{\omega }_n)\), are first obtained for a small number of sets of snapshot parameters
\(\varvec{\omega }_n= [\omega _n, \mu _{r,n}]\),
\(n=1,\ldots ,N\), by solving systems of the form (
6). Based on previous experience in [
5], we choose the snapshot parameters
\(\varvec{\omega }_n\) to be logarithmically spaced over a two dimensional grid. In addition, the solution snapshots
\({\textbf{q}}^{(0)}_i \left( \mu _{r,n} \right)\) were post-processed by applying a post-processing Poisson projection [
15]:
$$\begin{aligned} \tilde{\varvec{\theta }}_i^{(0,hp)} \rightarrow \nabla \Delta ^{-1} \textrm{div}\left( \tilde{\varvec{\theta }}_i^{(0,hp)}\right) , \end{aligned}$$
(8)
which improves the gauging of
\(\tilde{\varvec{\theta }}_i^{(0,hp)}\) without changing
\(\nabla \times \tilde{\varvec{\theta }}_i^{(0,hp)}\). The matrices
\({\textbf{D}}^{(0)}_i\in {\mathbb {R}}^{N_{dof} \times N}\) and
\({\textbf{D}}^{(1)}_i\in {\mathbb {C}}^{N_{dof} \times N}\),
\(i=1,2,3\), are then defined as a concatenation of
\({\textbf{q}}_i^{(0)}(\varvec{\omega }_n)\) or
\({\textbf{q}}_i^{(1)}(\varvec{\omega }_n)\) as
$$\begin{aligned} {\textbf{D}}^{(s)}_i:= \left[ {\textbf{q}}^{(s)}_i \left( \varvec{\omega }_1 \right) , {\textbf{q}}^{(s)}_i \left( \varvec{\omega }_2 \right) , {\textbf{q}}^{(s)}_i \left( \varvec{\omega }_3 \right) ,\ldots , {\textbf{q}}^{(s)}_i \left( \varvec{\omega }_ N \right) \right] . \end{aligned}$$
(9)
For the on-line stages of the PODP and POD–NN approaches, discussed in Sects.
4.2 and
4.3 respectively, the off-line stage continues with a singular value decomposition (SVD) applied to each
\({\textbf{D}}^{(s)}_i\) in order to extract modal information
$$\begin{aligned} {\textbf{D}}^{(s)}_i = \mathbf {U\Sigma V}^\textrm{H} \approx {\textbf{U}}^M \mathbf {\Sigma }^M \left( {\textbf{V}}^M\right) ^\textrm{H}, \end{aligned}$$
(10)
where we omit the dependence of
i and (
s) on the SVD matrices and their truncated counterparts for simplicity of presentation. In the above,
\(\textrm{H}\) is the Hermitian and in the approximation
\(M<N\) corresponds to the level of truncation, which is determined by prescribing a tolerance
TOL on the ordered relative singular values contained in the diagonal elements of
\(\mathbf {\Sigma }\). This truncation, results in a truncated matrix
\({\textbf{U}}^M \in {\mathbb {C}}^{N_{dof} \times M}\) containing the first
M columns of the unitary matrix
\({\textbf{U}}\), a square matrix
\(\mathbf {\Sigma }^M \in {\mathbb {R}}^{M\times M}\) containing the truncated singular values on the diagonal and,
\({\textbf{V}}^M \in {\mathbb {C}}^{N\times M}\), which is obtained by taking the first
M columns of the unitary matrix
\({\textbf{V}}\). Using (
10), we recover an approximation to
\({\textbf{q}}_i^{(s)}(\varvec{\omega }_n)\) as follows:
$$\begin{aligned} {\textbf{q}}_i ^{(s)} \left( \varvec{\omega }_n \right) \approx {\textbf{U}}^M \mathbf {\Sigma }^M \left( \left( {\textbf{V}}^M\right) ^\textrm{H}\right) _{:,n}, \end{aligned}$$
(11)
where
\(\left( \left( {\textbf{V}}^M\right) ^\textrm{H}\right) _{:,n}\) refers to the
nth column of
\(\left( {\textbf{V}}^M\right) ^\textrm{H}\). Note that in the case of
\(s=0\), the matrices
\(\textbf{U}^M\) and
\(\textbf{V}^M\) are real and so
\(\textrm{H}\) can be replaced with transpose.