queso-0.53.0
Public Member Functions | Public Attributes | Private Member Functions | List of all members
QUESO::GcmZTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M > Class Template Reference

#include <GcmZTildeInfo.h>

Collaboration diagram for QUESO::GcmZTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >:
Collaboration graph
[legend]

Public Member Functions

 GcmZTildeInfo (const GpmsaComputerModelOptions &gcmOptionsObj, const GcmJointInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M > &jj, const GcmZInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M > &z)
 
 GcmZTildeInfo (const GpmsaComputerModelOptions &gcmOptionsObj, const GcmJointInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M > &jj, const GcmZInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M > &z, const GcmSimulationTildeInfo< S_V, S_M, P_V, P_M, Q_V, Q_M > &st, const GcmJointTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M > &jt)
 
 ~GcmZTildeInfo ()
 

Public Attributes

const BaseEnvironmentm_env
 
D_M m_Cmat_tilde
 
VectorSpace< D_V, D_M > m_z_tilde_space
 
D_M m_Lmat
 
D_M m_Lmat_t
 
D_V m_Zvec_tilde_hat
 
D_M m_tmp_Smat_z_tilde
 
D_M m_tmp_Smat_extra_tilde
 
D_M m_tmp_Smat_z_tilde_hat
 
D_M m_tmp_Smat_z_tilde_hat_inv
 

Private Member Functions

void commonConstructor (const GcmZInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M > &z)
 

Detailed Description

template<class S_V = GslVector, class S_M = GslMatrix, class D_V = GslVector, class D_M = GslMatrix, class P_V = GslVector, class P_M = GslMatrix, class Q_V = GslVector, class Q_M = GslMatrix>
class QUESO::GcmZTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >

Definition at line 43 of file GcmZTildeInfo.h.

Constructor & Destructor Documentation

template<class S_V , class S_M , class D_V , class D_M , class P_V , class P_M , class Q_V , class Q_M >
QUESO::GcmZTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >::GcmZTildeInfo ( const GpmsaComputerModelOptions gcmOptionsObj,
const GcmJointInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M > &  jj,
const GcmZInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M > &  z 
)

Definition at line 32 of file GcmZTildeInfo.C.

References QUESO::BaseEnvironment::checkingLevel(), QUESO::GcmZTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >::commonConstructor(), QUESO::GcmZInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >::m_Cmat, QUESO::GcmZInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >::m_Cmat_rank, QUESO::GcmZTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >::m_Cmat_tilde, QUESO::GcmOptionsValues::m_dataOutputAllowedSet, QUESO::GcmZTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >::m_env, QUESO::GcmZTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >::m_Lmat, QUESO::GcmJointInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >::m_omega_space, QUESO::GpmsaComputerModelOptions::m_ov, QUESO::GcmZInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >::m_z_space, QUESO::scalarProduct(), QUESO::BaseEnvironment::subDisplayFile(), QUESO::BaseEnvironment::subId(), and QUESO::VectorSpace< V, M >::zeroVector().

36  :
37  m_env (jj.m_env),
38  m_Cmat_tilde (m_env,jj.m_omega_space.map(),z.m_Cmat_rank),
39  m_z_tilde_space (m_env, "z_tilde_", z.m_Cmat_rank, NULL),
40  m_Lmat (m_env,m_z_tilde_space.map(),z.m_Cmat->numCols()),
41  m_Lmat_t (m_env,z.m_z_space.map(),z.m_Cmat_rank),
47 {
48  if (m_env.subDisplayFile()) {
49  *m_env.subDisplayFile() << "Entering GcmZTildeInfo<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::constructor(1)"
50  << std::endl;
51  }
52 
53  std::set<unsigned int> tmpSet;
54  tmpSet.insert(m_env.subId());
55 
56  // Naive formation of 'm_Cmat_tilde'
57  D_M matU(z.m_Cmat->svdMatU());
58  unsigned int uMatRank = matU.rank(0.,1.e-8 ); // todo: should be an option
59  unsigned int uMatRank14 = matU.rank(0.,1.e-14);
60  if (m_env.subDisplayFile()) {
61  *m_env.subDisplayFile() << "In GcmZTildeInfo<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::constructor(1)"
62  << ": matU.numRowsLocal() = " << matU.numRowsLocal()
63  << ", matU.numCols() = " << matU.numCols()
64  << ", matU.rank(0.,1.e-8) = " << uMatRank
65  << ", matU.rank(0.,1.e-14) = " << uMatRank14
66  << std::endl;
67  }
68 
69  if (m_env.checkingLevel() >= 1) {
70  D_M matUcheck(z.m_z_space.zeroVector());
71  D_V vecI(jj.m_omega_space.zeroVector());
72  D_V vecJ(jj.m_omega_space.zeroVector());
73  for (unsigned int i = 0; i < matU.numCols(); ++i) {
74  matU.getColumn(i,vecI);
75  for (unsigned int j = i; j < matU.numCols(); ++j) {
76  matU.getColumn(j,vecJ);
77  matUcheck(i,j) = scalarProduct(vecI,vecJ);
78  }
79  }
80  matUcheck.setPrintHorizontally(false);
81  if (m_env.subDisplayFile()) {
82  *m_env.subDisplayFile() << "In GcmZTildeInfo<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::constructor(1)"
83  << ": m_Cmat_rank = " << z.m_Cmat_rank
84  << ", matUcheck.numRowsLocal() = " << matUcheck.numRowsLocal()
85  << ", matUcheck.numCols() = " << matUcheck.numCols()
86  << ", matUcheck =\n" << matUcheck
87  << std::endl;
88  }
89  }
90 
91  D_V vecJ(jj.m_omega_space.zeroVector());
92  for (unsigned int j = 0; j < z.m_Cmat_rank; ++j) {
93  matU.getColumn(j,vecJ);
94  m_Cmat_tilde.setColumn(j,vecJ);
95  }
96 
97  if (gcmOptionsObj.m_ov.m_dataOutputAllowedSet.find(m_env.subId()) != gcmOptionsObj.m_ov.m_dataOutputAllowedSet.end()) {
98  m_Cmat_tilde.subWriteContents("Ctilde",
99  "Ctilde2",
100  "m",
101  tmpSet);
102  }
103  if (m_env.subDisplayFile()) {
104  *m_env.subDisplayFile() << "In GcmZTildeInfo<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::constructor(1)"
105  << ": m_Cmat_tilde formed (2)"
106  << std::endl;
107  }
108 
109  // Naive formation of 'm_Lmat'
110  m_Cmat_tilde.svdSolve(*(z.m_Cmat),m_Lmat);
111 
113 }
const BaseEnvironment & m_env
Definition: GcmZTildeInfo.h:56
const Map & map() const
Map.
Definition: VectorSpace.C:157
const V & zeroVector() const
Returns a vector filled with zeros.
Definition: VectorSpace.C:189
double scalarProduct(const GslVector &x, const GslVector &y)
Definition: GslVector.C:1150
std::ofstream * subDisplayFile() const
Access function for m_subDisplayFile (displays file on stream).
Definition: Environment.C:274
unsigned int subId() const
Access function to the number of each sub-environment Id: m_subId.
Definition: Environment.C:295
unsigned int checkingLevel() const
Access function to private attribute m_checkingLevel.
Definition: Environment.C:410
void commonConstructor(const GcmZInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M > &z)
VectorSpace< D_V, D_M > m_z_tilde_space
Definition: GcmZTildeInfo.h:58
template<class S_V , class S_M , class D_V , class D_M , class P_V , class P_M , class Q_V , class Q_M >
QUESO::GcmZTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >::GcmZTildeInfo ( const GpmsaComputerModelOptions gcmOptionsObj,
const GcmJointInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M > &  jj,
const GcmZInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M > &  z,
const GcmSimulationTildeInfo< S_V, S_M, P_V, P_M, Q_V, Q_M > &  st,
const GcmJointTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M > &  jt 
)

Definition at line 116 of file GcmZTildeInfo.C.

References QUESO::GcmZTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >::commonConstructor(), QUESO::GcmJointTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >::m_Bmat_tilde, QUESO::GcmZTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >::m_Cmat_tilde, QUESO::GcmOptionsValues::m_dataOutputAllowedSet, QUESO::GcmZTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >::m_env, QUESO::GcmSimulationTildeInfo< S_V, S_M, P_V, P_M, Q_V, Q_M >::m_Kmat_tilde, QUESO::GcmJointTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >::m_Lbmat, QUESO::GcmSimulationTildeInfo< S_V, S_M, P_V, P_M, Q_V, Q_M >::m_Lkmat, QUESO::GcmZTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >::m_Lmat, QUESO::GpmsaComputerModelOptions::m_ov, QUESO::GcmZTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >::m_Zvec_tilde_hat, QUESO::GcmJointTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >::m_Zvec_tilde_hat_vu, QUESO::GcmSimulationTildeInfo< S_V, S_M, P_V, P_M, Q_V, Q_M >::m_Zvec_tilde_hat_w, QUESO::BaseEnvironment::subDisplayFile(), and QUESO::BaseEnvironment::subId().

122  :
123  m_env (jj.m_env),
124  m_Cmat_tilde (m_env,jj.m_omega_space.map(),z.m_Cmat_rank),
125  m_z_tilde_space (m_env, "z_tilde_", z.m_Cmat_rank, NULL),
126  m_Lmat (m_env,m_z_tilde_space.map(),z.m_Cmat->numCols()),
127  m_Lmat_t (m_env,z.m_z_space.map(),z.m_Cmat_rank),
133 {
134  if (m_env.subDisplayFile()) {
135  *m_env.subDisplayFile() << "Entering GcmZTildeInfo<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::constructor(2)"
136  << std::endl;
137  }
138 
139  std::set<unsigned int> tmpSet;
140  tmpSet.insert(m_env.subId());
141 
142  m_Cmat_tilde.cwSet(0.);
143  m_Cmat_tilde.cwSet( 0, 0,jt.m_Bmat_tilde);
144  m_Cmat_tilde.cwSet(jt.m_Bmat_tilde.numRowsLocal(),jt.m_Bmat_tilde.numCols(),st.m_Kmat_tilde);
145  if (gcmOptionsObj.m_ov.m_dataOutputAllowedSet.find(m_env.subId()) != gcmOptionsObj.m_ov.m_dataOutputAllowedSet.end()) {
146  m_Cmat_tilde.subWriteContents("Ctilde",
147  "Ctilde1",
148  "m",
149  tmpSet);
150  }
151  if (m_env.subDisplayFile()) {
152  *m_env.subDisplayFile() << "In GcmZTildeInfo<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::constructor(2)"
153  << ": m_Cmat_tilde formed (1)"
154  << std::endl;
155  }
156  m_Lmat.cwSet(0.);
157  m_Lmat.cwSet( 0, 0,jt.m_Lbmat);
158  m_Lmat.cwSet(jt.m_Lbmat.numRowsLocal(),jt.m_Lbmat.numCols(),st.m_Lkmat);
159  if (gcmOptionsObj.m_ov.m_dataOutputAllowedSet.find(m_env.subId()) != gcmOptionsObj.m_ov.m_dataOutputAllowedSet.end()) {
160  m_Lmat.subWriteContents("Lmat",
161  "Lmat",
162  "m",
163  tmpSet);
164  }
165  if (m_env.subDisplayFile()) {
166  *m_env.subDisplayFile() << "In GcmZTildeInfo<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::constructor(2)"
167  << ": m_Lmat_tilde formed"
168  << std::endl;
169  }
170 
171  m_Zvec_tilde_hat.cwSetConcatenated(jt.m_Zvec_tilde_hat_vu,st.m_Zvec_tilde_hat_w); // todo_rrr: not in constructor(1) ???
172 
174 }
const BaseEnvironment & m_env
Definition: GcmZTildeInfo.h:56
const Map & map() const
Map.
Definition: VectorSpace.C:157
const V & zeroVector() const
Returns a vector filled with zeros.
Definition: VectorSpace.C:189
std::ofstream * subDisplayFile() const
Access function for m_subDisplayFile (displays file on stream).
Definition: Environment.C:274
unsigned int subId() const
Access function to the number of each sub-environment Id: m_subId.
Definition: Environment.C:295
void commonConstructor(const GcmZInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M > &z)
VectorSpace< D_V, D_M > m_z_tilde_space
Definition: GcmZTildeInfo.h:58
template<class S_V , class S_M , class D_V , class D_M , class P_V , class P_M , class Q_V , class Q_M >
QUESO::GcmZTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >::~GcmZTildeInfo ( )

Definition at line 177 of file GcmZTildeInfo.C.

178 {
179 }

Member Function Documentation

template<class S_V , class S_M , class D_V , class D_M , class P_V , class P_M , class Q_V , class Q_M >
void QUESO::GcmZTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >::commonConstructor ( const GcmZInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M > &  z)
private

Definition at line 183 of file GcmZTildeInfo.C.

References QUESO::GcmZInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >::m_Cmat, QUESO::GcmZInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >::m_Cmat_rank, queso_require_equal_to_msg, and queso_require_less_msg.

Referenced by QUESO::GcmZTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >::GcmZTildeInfo().

184 {
185  unsigned int cMatTildeRank = m_Cmat_tilde.rank(0.,1.e-8 ); // todo: should be an option
186  unsigned int cMatTildeRank14 = m_Cmat_tilde.rank(0.,1.e-14);
187  if (m_env.subDisplayFile()) {
188  *m_env.subDisplayFile() << "In GcmZTildeInfo<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::constructor()"
189  << ": m_Cmat_tilde.numRowsLocal() = " << m_Cmat_tilde.numRowsLocal()
190  << ", m_Cmat_tilde.numCols() = " << m_Cmat_tilde.numCols()
191  << ", m_Cmat_tilde.rank(0.,1.e-8) = " << cMatTildeRank
192  << ", m_Cmat_tilde.rank(0.,1.e-14) = " << cMatTildeRank14
193  << std::endl;
194  }
195  queso_require_equal_to_msg(cMatTildeRank, z.m_Cmat_rank, "'m_Cmat_tilde' should have full column rank");
196 
197  queso_require_less_msg(m_Lmat.numRowsGlobal(), m_Lmat.numCols(), "'m_Lmat' should be a 'horizontal' rectangular matrix");
198 
199  //******************************************************************************
200  // Tilde situation: form 'm_Lmat_t'
201  //******************************************************************************
202  m_Lmat_t.fillWithTranspose(0,0,m_Lmat,true,true);
203  unsigned int lMatRank = m_Lmat_t.rank(0.,1.e-8 ); // todo: should be an option
204  unsigned int lMatRank14 = m_Lmat_t.rank(0.,1.e-14);
205  if (m_env.subDisplayFile()) {
206  *m_env.subDisplayFile() << "In GcmZTildeInfo<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::commonConstructor()"
207  << ": m_Lmat.numRowsLocal() = " << m_Lmat.numRowsLocal()
208  << ", m_Lmat.numCols() = " << m_Lmat.numCols()
209  << ", m_Lmat.rank(0.,1.e-8) = " << lMatRank
210  << ", m_Lmat.rank(0.,1.e-14) = " << lMatRank14
211  << std::endl;
212  }
213 
214  queso_require_equal_to_msg(lMatRank, z.m_Cmat_rank, "'m_Lmat' should have full row rank");
215 
216  if (m_env.checkingLevel() >= 1) {
217  // Check if C == C_tilde * L
218  D_M tmpCmat(m_Cmat_tilde * m_Lmat);
219  tmpCmat -= *z.m_Cmat;
220  double cDiffNorm = tmpCmat.normFrob();
221  if (m_env.subDisplayFile()) {
222  *m_env.subDisplayFile() << "In GcmZTildeInfo<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::commonConstructor()"
223  << ": ||tmpC - C||_2 = " << cDiffNorm
224  << std::endl;
225  }
226  }
227 
228  return;
229 }
const BaseEnvironment & m_env
Definition: GcmZTildeInfo.h:56
#define queso_require_equal_to_msg(expr1, expr2, msg)
Definition: asserts.h:85
std::ofstream * subDisplayFile() const
Access function for m_subDisplayFile (displays file on stream).
Definition: Environment.C:274
#define queso_require_less_msg(expr1, expr2, msg)
Definition: asserts.h:87
unsigned int checkingLevel() const
Access function to private attribute m_checkingLevel.
Definition: Environment.C:410

Member Data Documentation

template<class S_V = GslVector, class S_M = GslMatrix, class D_V = GslVector, class D_M = GslMatrix, class P_V = GslVector, class P_M = GslMatrix, class Q_V = GslVector, class Q_M = GslMatrix>
D_M QUESO::GcmZTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >::m_Cmat_tilde
template<class S_V = GslVector, class S_M = GslMatrix, class D_V = GslVector, class D_M = GslMatrix, class P_V = GslVector, class P_M = GslMatrix, class Q_V = GslVector, class Q_M = GslMatrix>
const BaseEnvironment& QUESO::GcmZTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >::m_env
template<class S_V = GslVector, class S_M = GslMatrix, class D_V = GslVector, class D_M = GslMatrix, class P_V = GslVector, class P_M = GslMatrix, class Q_V = GslVector, class Q_M = GslMatrix>
D_M QUESO::GcmZTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >::m_Lmat
template<class S_V = GslVector, class S_M = GslMatrix, class D_V = GslVector, class D_M = GslMatrix, class P_V = GslVector, class P_M = GslMatrix, class Q_V = GslVector, class Q_M = GslMatrix>
D_M QUESO::GcmZTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >::m_Lmat_t

Definition at line 60 of file GcmZTildeInfo.h.

template<class S_V = GslVector, class S_M = GslMatrix, class D_V = GslVector, class D_M = GslMatrix, class P_V = GslVector, class P_M = GslMatrix, class Q_V = GslVector, class Q_M = GslMatrix>
D_M QUESO::GcmZTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >::m_tmp_Smat_extra_tilde

Definition at line 64 of file GcmZTildeInfo.h.

template<class S_V = GslVector, class S_M = GslMatrix, class D_V = GslVector, class D_M = GslMatrix, class P_V = GslVector, class P_M = GslMatrix, class Q_V = GslVector, class Q_M = GslMatrix>
D_M QUESO::GcmZTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >::m_tmp_Smat_z_tilde

Definition at line 63 of file GcmZTildeInfo.h.

template<class S_V = GslVector, class S_M = GslMatrix, class D_V = GslVector, class D_M = GslMatrix, class P_V = GslVector, class P_M = GslMatrix, class Q_V = GslVector, class Q_M = GslMatrix>
D_M QUESO::GcmZTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >::m_tmp_Smat_z_tilde_hat

Definition at line 65 of file GcmZTildeInfo.h.

template<class S_V = GslVector, class S_M = GslMatrix, class D_V = GslVector, class D_M = GslMatrix, class P_V = GslVector, class P_M = GslMatrix, class Q_V = GslVector, class Q_M = GslMatrix>
D_M QUESO::GcmZTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >::m_tmp_Smat_z_tilde_hat_inv

Definition at line 66 of file GcmZTildeInfo.h.

template<class S_V = GslVector, class S_M = GslMatrix, class D_V = GslVector, class D_M = GslMatrix, class P_V = GslVector, class P_M = GslMatrix, class Q_V = GslVector, class Q_M = GslMatrix>
VectorSpace<D_V,D_M> QUESO::GcmZTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >::m_z_tilde_space

Definition at line 58 of file GcmZTildeInfo.h.

template<class S_V = GslVector, class S_M = GslMatrix, class D_V = GslVector, class D_M = GslMatrix, class P_V = GslVector, class P_M = GslMatrix, class Q_V = GslVector, class Q_M = GslMatrix>
D_V QUESO::GcmZTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M >::m_Zvec_tilde_hat

The documentation for this class was generated from the following files:

Generated on Thu Jun 11 2015 13:52:34 for queso-0.53.0 by  doxygen 1.8.5