queso-0.56.0
GpmsaComputerModel.C
Go to the documentation of this file.
1 //-----------------------------------------------------------------------bl-
2 //--------------------------------------------------------------------------
3 //
4 // QUESO - a library to support the Quantification of Uncertainty
5 // for Estimation, Simulation and Optimization
6 //
7 // Copyright (C) 2008-2015 The PECOS Development Team
8 //
9 // This library is free software; you can redistribute it and/or
10 // modify it under the terms of the Version 2.1 GNU Lesser General
11 // Public License as published by the Free Software Foundation.
12 //
13 // This library is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 // Lesser General Public License for more details.
17 //
18 // You should have received a copy of the GNU Lesser General Public
19 // License along with this library; if not, write to the Free Software
20 // Foundation, Inc. 51 Franklin Street, Fifth Floor,
21 // Boston, MA 02110-1301 USA
22 //
23 //-----------------------------------------------------------------------el-
24 
25 #include <unistd.h> // sleep
26 
27 #include <queso/GpmsaComputerModel.h>
28 #include <queso/GenericScalarFunction.h>
29 #include <queso/SequentialVectorRealizer.h>
30 #include <queso/GslVector.h>
31 #include <queso/GslMatrix.h>
32 #include <queso/BayesianJointPdf.h>
33 
34 namespace QUESO {
35 
36 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>
38  const char* prefix,
39  const GcmOptionsValues* alternativeOptionsValues, // dakota
40  const SimulationStorage <S_V,S_M,P_V,P_M,Q_V,Q_M>& simulationStorage,
41  const SimulationModel <S_V,S_M,P_V,P_M,Q_V,Q_M>& simulationModel,
42  const ExperimentStorage <S_V,S_M,D_V,D_M>* experimentStorage,
43  const ExperimentModel <S_V,S_M,D_V,D_M>* experimentModel,
44  const BaseVectorRV <P_V,P_M>* thetaPriorRv)
45  // Handle case of no experiments, that is, experiment pointers == NULL? (todo)
46  :
47  m_env (simulationStorage.env()),
48  m_optionsObj (alternativeOptionsValues),
49  m_s (NULL),
50  m_e (NULL),
51  m_j (NULL),
52  m_z (NULL),
53  m_t (NULL),
54  m_st (NULL),
55  m_jt (NULL),
56  m_zt (NULL),
57  m_thereIsExperimentalData ((experimentStorage != NULL) && (experimentModel != NULL) && (thetaPriorRv != NULL)),
58  m_allOutputsAreScalar (simulationStorage.outputSpace().dimLocal() == 1), // it might become 'false' if there are experiments
59  m_formCMatrix (true), // it will be updated
60  m_cMatIsRankDefficient (false),
61  m_likelihoodFunction (NULL),
62  m_like_counter (MiscUintDebugMessage(0,NULL))
63 {
64  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
65  *m_env.subDisplayFile() << "Entering GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::constructor()"
66  << ": prefix = " << prefix
67  << ", alternativeOptionsValues = " << alternativeOptionsValues
68  << ", m_env.optionsInputFileName() = " << m_env.optionsInputFileName()
69  << ", m_thereIsExperimentalData = " << m_thereIsExperimentalData
70  << std::endl;
71  }
72 
73  if ((experimentStorage == NULL) &&
74  (experimentModel == NULL) &&
75  (thetaPriorRv == NULL)) {
76  // Ok
78  queso_require_equal_to_msg(simulationModel.numBasis(), 1, "inconsistent numBasis (1)");
79  }
80  }
81  else if ((experimentStorage != NULL) &&
82  (experimentModel != NULL) &&
83  (thetaPriorRv != NULL)) {
84  // Ok
85  for (unsigned int i = 0; m_allOutputsAreScalar && (i < experimentStorage->numExperiments()); ++i) {
86  m_allOutputsAreScalar = m_allOutputsAreScalar && (experimentStorage->n_ys_transformed()[i] == 1);
87  }
89  queso_require_msg(!((simulationModel.numBasis() != 1) || (experimentModel->numBasis() != 1)), "inconsistent numBasis (2)");
90  }
91  }
92  else {
93  queso_error_msg("inconsistent experimental information");
94  }
95 
96  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
97  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::constructor()"
98  << ": prefix = " << prefix
99  << ", m_allOutputsAreScalar = " << m_allOutputsAreScalar
100  << std::endl;
101  }
102 
104 
105  //********************************************************************************
106  // Handle options
107  //********************************************************************************
108  // If NULL, we create one
109  if (m_optionsObj == NULL) {
110  GcmOptionsValues * tempOptions = new GcmOptionsValues(&m_env, prefix);
111 
112  // We did this dance because scanOptionsValues is not a const method, but
113  // m_optionsObj is a pointer to const
114  m_optionsObj = tempOptions;
115  }
116 
118 
119  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 3)) {
120  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::constructor()"
121  << ": prefix = " << prefix
122  << ", 'final' m_formCMatrix = " << m_formCMatrix
123  << std::endl;
124  }
125 
126  //********************************************************************************
127  // Open output file // todo_r: is this necessary???
128  //********************************************************************************
129  if ((m_optionsObj->m_dataOutputFileName != "." ) &&
132  UQ_FILE_EXTENSION_FOR_MATLAB_FORMAT, // Yes, always ".m"
134  false,
136  queso_require_msg(m_dataOutputFilePtrSet.ofsVar, "data output file could not be created");
137  }
138 
139  //********************************************************************************
140  // Instantiate:
141  // --> m_s
142  // --> m_e
143  // --> m_j
144  // --> m_z
145  // --> m_t
146  // --> m_st
147  // --> m_jt
148  // --> m_zt
149  //********************************************************************************
150  //********************************************************************************
151  // Instantiate Smat spaces
152  // \Sigma_v:
153  // --> Uses page 576-b
154  // --> Uses R(all x's;\rho_v_i[size p_x]) and formula (2) to "each pair" of experimental input settings
155  // --> \Sigma_v_i = (1/\lambda_v_i).I_|G_i| [X] R(...) is (n.|G_i|) x (n.|G_i|), i = 1,...,F
156  // --> \Sigma_v is (n.p_delta) x (n.p_delta)
157  // \Sigma_u:
158  // --> Uses page 576-b
159  // --> Uses R(all x's,one \theta;\rho_w_i[size p_x+p_t]) and formula (1) to "each pair" of experimental input settings (correlations depend only on x dimensions)
160  // --> \Sigma_u_i = (1/\lambda_w_i).R(...) is n x n, i = 1,...,p_eta
161  // --> \Sigma_u is (n.p_eta) x (n.p_eta)
162  // \Sigma_w:
163  // --> Uses page 575-a
164  // --> Uses R(all x^*'s,all t^*'s;\rho_w_i[size p_x+p_t]) and formula (1) to "each pair" of input settings in the design
165  // --> \Sigma_w_i = (1/\lambda_w_i).R(...) is m x m, i = 1,...,p_eta
166  // --> \Sigma_w is (m.p_eta) x (m.p_eta)
167  // \Sigma_u,w:
168  // --> Uses page 577-a
169  // --> Uses R(all x's,one \theta,all x^*'s,all t^*'s;\rho_w_i[size p_x+p_t]) and formula (1)
170  // --> \Sigma_u,w_i = (1/\lambda_w_i).R(...) is n x m, i = 1,...,p_eta
171  // --> \Sigma_u,w is (n.p_eta) x (m.p_eta)
172  //********************************************************************************
173 
174  // These old options are deprecated. We do this to preserve backwards
175  // compatibility.
176  GpmsaComputerModelOptions * gpmsaComputerModelOptions =
178  m_s = new GcmSimulationInfo<S_V,S_M,P_V,P_M,Q_V,Q_M>(*gpmsaComputerModelOptions,
179  m_allOutputsAreScalar, // csri (new GcmSimulationInfo)
180  simulationStorage,
181  simulationModel);
182  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 3)) {
183  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::constructor()"
184  << ": finished instantiating m_s"
185  << ", experimentStorage = " << experimentStorage
186  << ", experimentModel = " << experimentModel
187  << ", thetaPriorRv = " << thetaPriorRv
188  << std::endl;
189  }
190 
192  queso_require_equal_to_msg(simulationStorage.scenarioSpace().dimLocal(), experimentStorage->scenarioSpace().dimLocal(), "inconsistent dimension of scenario space");
193 
194  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 3)) {
195  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::constructor()"
196  << ": about to instantiate m_e"
197  << std::endl;
198  }
199 
200  m_e = new GcmExperimentInfo<S_V,S_M,D_V,D_M,P_V,P_M>(*gpmsaComputerModelOptions,
201  m_allOutputsAreScalar, // csri (new GcmExperimentInfo)
202  *experimentStorage,
203  *experimentModel,
204  *thetaPriorRv);
205  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 3)) {
206  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::constructor()"
207  << ": finished instantiating m_e"
208  << std::endl;
209  }
210 
211  m_j = new GcmJointInfo<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>(*gpmsaComputerModelOptions,
212  m_allOutputsAreScalar, // csri
213  *m_s,
214  *m_e);
215  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 3)) {
216  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::constructor()"
217  << ": finished instantiating m_j"
218  << std::endl;
219  }
220 
221  if (m_allOutputsAreScalar) {
223  *m_s,
224  *m_e);
225  }
226  else {
229  *m_s,
230  *m_e,
231  *m_j);
232  }
233  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 3)) {
234  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::constructor()"
235  << ": finished instantiating m_z"
236  << std::endl;
237  }
238 
240  *m_e);
241  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 3)) {
242  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::constructor()"
243  << ": finished instantiating m_t"
244  << std::endl;
245  }
246  }
247  else {
248  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 3)) {
249  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::constructor()"
250  << ": about to instantiate m_z (no experiments)"
251  << std::endl;
252  }
253 
256  *m_s);
257  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 3)) {
258  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::constructor()"
259  << ": finished instantiating m_z (no experiments)"
260  << std::endl;
261  }
262 
264  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 3)) {
265  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::constructor()"
266  << ": finished instantiating m_t (no experiments)"
267  << std::endl;
268  }
269  }
270 
271  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 3)) {
272  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::constructor()"
273  << ": finished instantiating non-tilde auxiliary structures"
274  << std::endl;
275  }
276 
277  this->memoryCheck(0);
278 
279  if (m_formCMatrix) {
280  //********************************************************************************
281  // 'm_Cmat' has been formed: check if it is rank defficient
282  //********************************************************************************
283  if (m_z->m_Cmat_rank < m_z->m_Cmat->numCols()) m_cMatIsRankDefficient = true;
284 
285  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 3)) {
286  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::constructor()"
287  << ": m_z->m_Cmat_rank = " << m_z->m_Cmat_rank
288  << ", m_z->m_Cmat = " << m_z->m_Cmat
289  << ", m_z->m_Cmat->numCols() = " << m_z->m_Cmat->numCols()
290  << ", m_cMatIsRankDefficient = " << m_cMatIsRankDefficient
291  << std::endl;
292  }
293 
294  if (m_cMatIsRankDefficient == true) {
295  //**********************************************************************************
296  // 'm_Cmat' is rank difficient
297  //**********************************************************************************
299  //********************************************************************************
300  // Use tilde logic
301  //********************************************************************************
303  //******************************************************************************
304  // Tilde situation: form 'm_Bmat_tilde'
305  // Tilde situation: form 'm_vu_tilde_space'
306  // Tilde situation: form 'm_Lbmat'
307  //******************************************************************************
308  m_jt = new GcmJointTildeInfo<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>(*gpmsaComputerModelOptions,*m_e,*m_j);
309 
310  //******************************************************************************
311  // Tilde situation: form 'm_Kmat_tilde'
312  // Tilde situation: form 'm_w_tilde_space'
313  // Tilde situation: form 'm_Lkmat'
314  //******************************************************************************
315  m_st = new GcmSimulationTildeInfo<S_V,S_M,P_V,P_M,Q_V,Q_M>(*gpmsaComputerModelOptions,*m_s);
316 
317  //******************************************************************************
318  // Tilde situation: form 'm_Cmat_tilde'
319  //******************************************************************************
320  m_zt = new GcmZTildeInfo<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>(*gpmsaComputerModelOptions,*m_j,*m_z,*m_st,*m_jt);
321  }
322  else {
323  queso_error_msg("incomplete code for the situation 'm_useTildeLogicForRankDefficientC == true' and 'm_thereIsExperimentalData == false'");
324  }
325  } // if (m_useTildeLogicForRankDefficientC)
326  else {
327  //********************************************************************************
328  // Do not use tilde logic
329  //********************************************************************************
331  //******************************************************************************
332  // Naive formation of 'm_Cmat_tilde'
333  //******************************************************************************
334  m_zt = new GcmZTildeInfo<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>(*gpmsaComputerModelOptions,*m_j,*m_z);
335  }
336  else {
337  queso_error_msg("incomplete code for the situation 'm_useTildeLogicForRankDefficientC == false' and 'm_thereIsExperimentalData == false'");
338  }
339  }
340  } // if (m_cMatIsRankDefficient)
341  else {
342  //**********************************************************************************
343  // 'm_Cmat' is full rank
344  //**********************************************************************************
345  // Ok. There is nothing extra to be done
346  }
347 
348  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 3)) {
349  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::constructor()"
350  << ": finished instantiating tilde auxiliary structures"
351  << std::endl;
352  }
353  } // if (m_formCMatrix)
354  else {
355  //********************************************************************************
356  // 'm_Cmat' will not be formed
357  //********************************************************************************
359  // Ok. There is nothing extra to be done
360  }
361  else {
362  // Ok. No experimental data. There is nothing extra to be done // checar
363 
364  // m_env.worldRank(),
365  // "GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::constructor()",
366  // "incomplete code for the situation 'm_thereIsExperimentalData == false'");
367  }
368  }
369 
370  this->memoryCheck(1);
371 
372  //********************************************************************************
373  // Generate prior sequence
374  //********************************************************************************
376  this->generatePriorSeq();
377  }
378 
379  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 3)) {
380  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::constructor()"
381  << ": finished generating prior sequence"
382  << std::endl;
383  }
384 
385  this->memoryCheck(2);
386 
387  //********************************************************************************
388  // Instantiate likelihood function object
389  //********************************************************************************
391  ("like_",
392  m_t->m_totalDomain,
394  (void *) this,
395  true); // routine computes [ln(function)]
396 
397  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 3)) {
398  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::constructor()"
399  << ": finished instantiating likelihood Function"
400  << std::endl;
401  }
402 
403  this->memoryCheck(3);
404 
405  // Done with the old options now, so deallocate
406  delete gpmsaComputerModelOptions;
407 
408  //********************************************************************************
409  // Leave constructor
410  //********************************************************************************
411  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
412  *m_env.subDisplayFile() << "Leaving GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::constructor()"
413  << ": prefix = " << m_optionsObj->m_prefix
414  << std::endl;
415  }
416 }
417 
418 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>
420 {
421  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
422  *m_env.subDisplayFile() << "Entering GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::destructor()..."
423  << std::endl;
424  }
425 
426  delete m_zt;
427  delete m_jt;
428  delete m_st;
429  delete m_t;
430  delete m_z;
431  delete m_j;
432  delete m_e;
433  delete m_s;
434 
435  delete m_dataOutputFilePtrSet.ofsVar;
436  if (m_optionsObj) delete m_optionsObj;
437 
438  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
439  *m_env.subDisplayFile() << "Leaving GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::destructor()"
440  << std::endl;
441  }
442 }
443 
444 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>
445 void
447  const MhOptionsValues* alternativeOptionsValues, // dakota
448  const P_V& totalInitialValues,
449  const P_M* totalInitialProposalCovMatrix)
450 {
451  struct timeval timevalBegin;
452  gettimeofday(&timevalBegin, NULL);
453 
454  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
455  *m_env.subDisplayFile() << "Entering GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::calibrateWithBayesMetropolisHastings()..."
456  << ": m_optionsObj->m_prefix.c_str() = " << m_optionsObj->m_prefix.c_str()
457  << ", m_env.subComm().NumProc() = " << m_env.subComm().NumProc()
458  << ", my subRank = " << m_env.subRank()
459  << ", totalInitialValues = " << totalInitialValues
460  << std::endl;
461  }
462 
463  m_env.fullComm().Barrier();
464  m_env.fullComm().syncPrintDebugMsg("Entering GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::calibrateWithBayesMetropolisHastings()",1,3000000);
465 
466  queso_require_equal_to_msg(m_t->m_totalPriorRv.imageSet().vectorSpace().dimLocal(), totalInitialValues.sizeLocal(), "'m_totalPriorRv' and 'totalInitialValues' should have equal dimensions");
467 
468  if (totalInitialProposalCovMatrix) {
469  queso_require_equal_to_msg(m_t->m_totalPriorRv.imageSet().vectorSpace().dimLocal(), totalInitialProposalCovMatrix->numRowsLocal(), "'m_totalPriorRv' and 'totalInitialProposalCovMatrix' should have equal dimensions");
470  queso_require_equal_to_msg(totalInitialProposalCovMatrix->numCols(), totalInitialProposalCovMatrix->numRowsGlobal(), "'totalInitialProposalCovMatrix' should be a square matrix");
471  }
472 
473 #if 0
474  P_V currPosition (totalInitialValues);
475  currPosition.cwSet(0.);
476  P_V epsilonVector (currPosition);
477  P_V plusVectorOfLnLikelihoods (currPosition);
478  P_V minusVectorOfLnLikelihoods(currPosition);
479  P_V deltaVectorOfLnLikelihoods(currPosition);
480  P_V vectorOfLnAbsGrads (currPosition);
481 
482  currPosition = totalInitialValues;
483  double referenceValue = staticLikelihoodRoutine(currPosition,
484  NULL,
485  (void *) this,
486  NULL,
487  NULL,
488  NULL);
489 
490  for (unsigned int paramId = 0; paramId < totalInitialValues.sizeLocal(); ++paramId) {
491  currPosition = totalInitialValues;
492  epsilonVector[paramId] = 1.e-8 * totalInitialValues[paramId];
493  if (epsilonVector[paramId] == 0.) epsilonVector[paramId] = 1.e-8;
494 
495  currPosition[paramId] = totalInitialValues[paramId] + epsilonVector[paramId];
496  plusVectorOfLnLikelihoods[paramId] = staticLikelihoodRoutine(currPosition,
497  NULL,
498  (void *) this,
499  NULL,
500  NULL,
501  NULL);
502 
503  currPosition[paramId] = totalInitialValues[paramId] - epsilonVector[paramId];
504  minusVectorOfLnLikelihoods[paramId] = staticLikelihoodRoutine(currPosition,
505  NULL,
506  (void *) this,
507  NULL,
508  NULL,
509  NULL);
510 
511  deltaVectorOfLnLikelihoods[paramId] = plusVectorOfLnLikelihoods[paramId] - minusVectorOfLnLikelihoods[paramId];
512  if (deltaVectorOfLnLikelihoods[paramId] > 0.) {
513  vectorOfLnAbsGrads[paramId] = minusVectorOfLnLikelihoods[paramId] + std::log( std::exp( deltaVectorOfLnLikelihoods[paramId]) - 1. ) - std::log(2.*epsilonVector[paramId]);
514  }
515  else if (deltaVectorOfLnLikelihoods[paramId] == 0.) {
516  vectorOfLnAbsGrads[paramId] = -INFINITY;
517  }
518  else {
519  vectorOfLnAbsGrads[paramId] = plusVectorOfLnLikelihoods [paramId] + std::log( std::exp(-deltaVectorOfLnLikelihoods[paramId]) - 1. ) - std::log(2.*epsilonVector[paramId]);
520  }
521  }
522  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
523  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::calibrateWithBayesMetropolisHastings()"
524  << ": referenceValue = " << referenceValue
525  << "\n epsilonVector = " << epsilonVector
526  << "\n plusVectorOfLnLikelihoods = " << plusVectorOfLnLikelihoods
527  << "\n minusVectorOfLnLikelihoods = " << minusVectorOfLnLikelihoods
528  << "\n deltaVectorOfLnLikelihoods = " << deltaVectorOfLnLikelihoods
529  << "\n vectorOfLnAbsGrads = " << vectorOfLnAbsGrads
530  << std::endl;
531  }
532 #endif
533 
534  //std::cout << "GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::calibrateWithBayesMetropolisHastings()"
535  // << ": passing at point 002"
536  // << std::endl;
537 
538  // Compute output pdf up to a multiplicative constant: Bayesian approach
539  m_t->m_solutionDomain = InstantiateIntersection(m_t->m_totalPriorRv.pdf().domainSet(),m_likelihoodFunction->domainSet());
540 
541  //std::cout << "GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::calibrateWithBayesMetropolisHastings()"
542  // << ": passing at point 003"
543  // << std::endl;
544 
545  m_t->m_solutionPdf = new BayesianJointPdf<P_V,P_M>(m_optionsObj->m_prefix.c_str(),
546  m_t->m_totalPriorRv.pdf(),
547  *m_likelihoodFunction,
548  1.,
549  *(m_t->m_solutionDomain));
550 
551  //std::cout << "GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::calibrateWithBayesMetropolisHastings()"
552  // << ": passing at point 004"
553  // << std::endl;
554 
555  m_t->m_totalPostRv.setPdf(*(m_t->m_solutionPdf));
556 
557  //std::cout << "GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::calibrateWithBayesMetropolisHastings()"
558  // << ": passing at point 005"
559  // << std::endl;
560 
561  // Compute output realizer: Metropolis-Hastings approach
562  m_t->m_chain = new SequenceOfVectors<P_V,P_M>(m_t->m_totalPostRv.imageSet().vectorSpace(),0,m_optionsObj->m_prefix+"chain");
563 
564  //std::cout << "GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::calibrateWithBayesMetropolisHastings()"
565  // << ": passing at point 006"
566  // << std::endl;
567 
568  m_t->m_mhSeqGenerator = new MetropolisHastingsSG<P_V,P_M>(m_optionsObj->m_prefix.c_str(), // dakota
569  alternativeOptionsValues,
570  m_t->m_totalPostRv,
571  totalInitialValues,
572  totalInitialProposalCovMatrix);
573 
574  //std::cout << "GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::calibrateWithBayesMetropolisHastings()"
575  // << ": passing at point 007"
576  // << std::endl;
577 
578  m_t->m_mhSeqGenerator->generateSequence(*(m_t->m_chain),NULL,NULL);
579 
580  // todo_rr
581  // m_totalPostMean
582  // m_totalPostMedian
583  // m_totalPostMode
584  // m_totalPostMaxLnValue
585  // m_totalMLE
586  // m_totalLikeMaxLnValue
587 
588  m_t->m_solutionRealizer = new SequentialVectorRealizer<P_V,P_M>(m_optionsObj->m_prefix.c_str(),
589  *(m_t->m_chain));
590 
591  m_t->m_totalPostRv.setRealizer(*(m_t->m_solutionRealizer));
592 
593  //m_env.fullComm().syncPrintDebugMsg("In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::calibrateWithBayesMetropolisHastings(), code place 1",3,3000000);
594 
595  //m_env.fullComm().syncPrintDebugMsg("Leaving GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::calibrateWithBayesMetropolisHastings()",1,3000000);
596  m_env.fullComm().Barrier();
597 
598  double totalTime = MiscGetEllapsedSeconds(&timevalBegin);
599  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
600  *m_env.subDisplayFile() << "Leaving GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::calibrateWithBayesMetropolisHastings()..."
601  << ": m_optionsObj->m_prefix.c_str() = " << m_optionsObj->m_prefix.c_str()
602  << ", m_env.subComm().NumProc() = " << m_env.subComm().NumProc()
603  << ", my subRank = " << m_env.subRank()
604  << ", after " << totalTime
605  << " seconds"
606  << std::endl;
607  }
608 
609  return;
610 }
611 
612 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>
613 void
615  const MhOptionsValues* alternativeOptionsValues, // dakota
616  const P_V& totalInitialValues,
617  const P_M* totalInitialProposalCovMatrix)
618 {
619  struct timeval timevalBegin;
620  gettimeofday(&timevalBegin, NULL);
621 
622  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
623  *m_env.subDisplayFile() << "Entering GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::calibrateWithLanlMcmc()..."
624  << ": m_optionsObj->m_prefix.c_str() = " << m_optionsObj->m_prefix.c_str()
625  << ", m_env.subComm().NumProc() = " << m_env.subComm().NumProc()
626  << ", my subRank = " << m_env.subRank()
627  << ", totalInitialValues = " << totalInitialValues
628  << std::endl;
629  }
630 
631  m_env.fullComm().Barrier();
632  m_env.fullComm().syncPrintDebugMsg("Entering GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::calibrateWithLanlMcmc()",1,3000000);
633 
634  // ppp
635 
636  m_env.fullComm().syncPrintDebugMsg("Leaving GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::calibrateWithLanlMcmc()",1,3000000);
637  m_env.fullComm().Barrier();
638 
639  double totalTime = MiscGetEllapsedSeconds(&timevalBegin);
640  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
641  *m_env.subDisplayFile() << "Leaving GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::calibrateWithLanlMcmc()..."
642  << ": m_optionsObj->m_prefix.c_str() = " << m_optionsObj->m_prefix.c_str()
643  << ", m_env.subComm().NumProc() = " << m_env.subComm().NumProc()
644  << ", my subRank = " << m_env.subRank()
645  << ", after " << totalTime
646  << " seconds"
647  << std::endl;
648  }
649 
650  return;
651 }
652 
653 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>
654 void
656 {
657  struct timeval timevalBegin;
658  gettimeofday(&timevalBegin, NULL);
659 
660  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
661  *m_env.subDisplayFile() << "Entering GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::calibrateWithBayesMLSampling()..."
662  << ": m_optionsObj->m_prefix.c_str() = " << m_optionsObj->m_prefix.c_str()
663  << ", m_env.subComm().NumProc() = " << m_env.subComm().NumProc()
664  << ", my subRank = " << m_env.subRank()
665  << std::endl;
666  }
667 
668  m_env.fullComm().Barrier();
669  m_env.fullComm().syncPrintDebugMsg("Entering GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::calibrateWithBayesMLSampling()",1,3000000);
670 
671  // ppp
672  m_t->m_solutionDomain = InstantiateIntersection(m_t->m_totalPriorRv.pdf().domainSet(),m_likelihoodFunction->domainSet());
673 
674  //std::cout << "GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::calibrateWithBayesMetropolisHastings()"
675  // << ": passing at point 003"
676  // << std::endl;
677 
678  m_t->m_solutionPdf = new BayesianJointPdf<P_V,P_M>(m_optionsObj->m_prefix.c_str(),
679  m_t->m_totalPriorRv.pdf(),
680  *m_likelihoodFunction,
681  1.,
682  *(m_t->m_solutionDomain));
683 
684  //std::cout << "GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::calibrateWithBayesMetropolisHastings()"
685  // << ": passing at point 004"
686  // << std::endl;
687 
688  m_t->m_totalPostRv.setPdf(*(m_t->m_solutionPdf));
689 
690  //std::cout << "GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::calibrateWithBayesMetropolisHastings()"
691  // << ": passing at point 005"
692  // << std::endl;
693 
694  // Compute output realizer: Metropolis-Hastings approach
695  m_t->m_chain = new SequenceOfVectors<P_V,P_M>(m_t->m_totalPostRv.imageSet().vectorSpace(),0,m_optionsObj->m_prefix+"chain");
696 
697  //std::cout << "GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::calibrateWithBayesMetropolisHastings()"
698  // << ": passing at point 006"
699  // << std::endl;
700 
701  m_t->m_mlSampler = new MLSampling<P_V,P_M>(m_optionsObj->m_prefix.c_str(),
702  m_t->m_totalPriorRv,
703  *m_likelihoodFunction);
704 
705  //std::cout << "GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::calibrateWithBayesMetropolisHastings()"
706  // << ": passing at point 007"
707  // << std::endl;
708 
709  m_t->m_mlSampler->generateSequence(*(m_t->m_chain),NULL,NULL);
710 
711  // todo_rr
712  // m_totalPostMean
713  // m_totalPostMedian
714  // m_totalPostMode
715  // m_totalPostMaxLnValue
716  // m_totalMLE
717  // m_totalLikeMaxLnValue
718 
719  m_t->m_solutionRealizer = new SequentialVectorRealizer<P_V,P_M>(m_optionsObj->m_prefix.c_str(),
720  *(m_t->m_chain));
721 
722  m_t->m_totalPostRv.setRealizer(*(m_t->m_solutionRealizer));
723 
724  m_env.fullComm().syncPrintDebugMsg("Leaving GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::calibrateWithBayesMLSampling()",1,3000000);
725  m_env.fullComm().Barrier();
726 
727  double totalTime = MiscGetEllapsedSeconds(&timevalBegin);
728  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
729  *m_env.subDisplayFile() << "Leaving GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::calibrateWithBayesMLSampling()..."
730  << ": m_optionsObj->m_prefix.c_str() = " << m_optionsObj->m_prefix.c_str()
731  << ", m_env.subComm().NumProc() = " << m_env.subComm().NumProc()
732  << ", my subRank = " << m_env.subRank()
733  << ", after " << totalTime
734  << " seconds"
735  << std::endl;
736  }
737 
738  return;
739 }
740 
741 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>
742 void
744  const S_V& newScenarioVec,
745  const P_V& newParameterVec,
746  P_V& vuMeanVec,
747  P_M& vuCovMatrix,
748  P_V& vMeanVec,
749  P_M& vCovMatrix,
750  P_V& uMeanVec,
751  P_M& uCovMatrix)
752 {
753  struct timeval timevalBegin;
754  gettimeofday(&timevalBegin, NULL);
755 
756  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
757  *m_env.subDisplayFile() << "Entering GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::predictVUsAtGridPoint(1)"
758  << ", m_predVU_counter = " << m_j->m_predVU_counter
759  << ", newScenarioVec = " << newScenarioVec
760  << ", newParameterVec = " << newParameterVec
761  << std::endl;
762  }
763 
764  queso_require_equal_to_msg(newScenarioVec.sizeLocal(), m_s->m_paper_p_x, "invalid 'newScenarioVec'");
765 
766  queso_require_equal_to_msg(newParameterVec.sizeLocal(), m_s->m_paper_p_t, "invalid 'newParameterVec'");
767 
768  queso_require_equal_to_msg(vuMeanVec.sizeLocal(), (m_e->m_paper_p_delta+m_s->m_paper_p_eta), "invalid 'vuMeanVec'");
769 
770  queso_require_equal_to_msg(vuCovMatrix.numRowsLocal(), (m_e->m_paper_p_delta + m_s->m_paper_p_eta), "invalid 'vuCovMatrix.numRowsLocal()'");
771 
772  queso_require_equal_to_msg(vuCovMatrix.numCols(), (m_e->m_paper_p_delta + m_s->m_paper_p_eta), "invalid 'vuCovMatrix.numCols()'");
773 
774  queso_require_equal_to_msg(vMeanVec.sizeLocal(), m_e->m_paper_p_delta, "invalid 'vMeanVec'");
775 
776  queso_require_equal_to_msg(vCovMatrix.numRowsLocal(), m_e->m_paper_p_delta, "invalid 'vCovMatrix.numRowsLocal()'");
777 
778  queso_require_equal_to_msg(vCovMatrix.numCols(), m_e->m_paper_p_delta, "invalid 'vCovMatrix.numCols()'");
779 
780  queso_require_equal_to_msg(uMeanVec.sizeLocal(), m_s->m_paper_p_eta, "invalid 'uMeanVec'");
781 
782  queso_require_equal_to_msg(uCovMatrix.numRowsLocal(), m_s->m_paper_p_eta, "invalid 'uCovMatrix.numRowsLocal()'");
783 
784  queso_require_equal_to_msg(uCovMatrix.numCols(), m_s->m_paper_p_eta, "invalid 'uCovMatrix.numCols()'");
785 
786  if (m_optionsObj->m_predVUsBySamplingRVs) {
787  }
788 
789  if (m_optionsObj->m_predVUsBySummingRVs) {
790  unsigned int numSamples = (unsigned int) ((double) m_t->m_totalPostRv.realizer().subPeriod())/((double) m_optionsObj->m_predLag);
791  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
792  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::predictVUsAtGridPoint(1)"
793  << ": m_t->m_totalPostRv.realizer().subPeriod() = " << m_t->m_totalPostRv.realizer().subPeriod()
794  << ", m_optionsObj->m_predLag = " << m_optionsObj->m_predLag
795  << std::endl;
796  }
797 
798  SequenceOfVectors<P_V,P_M> unique_vu_means(m_j->m_unique_vu_space,numSamples,m_optionsObj->m_prefix+"vu_means");
799  P_M mean_of_unique_vu_covMatrices(m_j->m_unique_vu_space.zeroVector());
800 
801  P_V totalSample(m_t->m_totalSpace.zeroVector());
802  P_V muVec1 (m_z->m_z_space.zeroVector());
803  P_V muVec2 (m_j->m_vu_space.zeroVector());
804  P_M sigmaMat11 (m_z->m_z_space.zeroVector());
805  P_M sigmaMat12 (m_env,muVec1.map(),muVec2.sizeGlobal());
806  P_M sigmaMat21 (m_env,muVec2.map(),muVec1.sizeGlobal());
807  P_M sigmaMat22 (m_j->m_vu_space.zeroVector());
808 
809  P_M here_Smat_z_hat_v_asterisk (m_env, m_z->m_z_space.map(), m_e->m_paper_p_delta);
810  P_M here_Smat_z_hat_v_asterisk_t(m_env, m_e->m_unique_v_space.map(), m_z->m_z_size );
811  P_M here_Smat_z_hat_u_asterisk (m_env, m_z->m_z_space.map(), m_s->m_paper_p_eta );
812  P_M here_Smat_z_hat_u_asterisk_t(m_env, m_j->m_unique_u_space.map(), m_z->m_z_size );
813 
814  // We cast to (P_M *) here to get around a compilation error with gcc 4.8.4
815  // but this code is on the way out and being replaced by the GPMSA factory
816  // code instead, so it's not too awful a solution
817  std::vector<const P_M*> twoMats_uw(2,(P_M *)NULL);
818  std::vector<const P_M*> twoMats_12(2,(P_M *)NULL);
819  std::vector<const P_M*> twoMats_21(2,(P_M *)NULL);
820  std::vector<const P_M*> twoMats_22(2,(P_M *)NULL);
821  for (unsigned int sampleId = 0; sampleId < numSamples; ++sampleId) {
822  m_j->m_predVU_counter++;
823 
824  if (sampleId > 0) {
825  for (unsigned int i = 1; i < m_optionsObj->m_predLag; ++i) { // Yes, '1'
826  m_t->m_totalPostRv.realizer().realization(totalSample);
827  }
828  }
829  m_t->m_totalPostRv.realizer().realization(totalSample);
830 
831  unsigned int currPosition = 0;
832  totalSample.cwExtract(currPosition,m_s->m_tmp_1lambdaEtaVec); // Total of '1' in paper
833  currPosition += m_s->m_tmp_1lambdaEtaVec.sizeLocal();
834  totalSample.cwExtract(currPosition,m_s->m_tmp_2lambdaWVec); // Total of 'p_eta' in paper
835  currPosition += m_s->m_tmp_2lambdaWVec.sizeLocal();
836  totalSample.cwExtract(currPosition,m_s->m_tmp_3rhoWVec); // Total of 'p_eta*(p_x+p_t)' in paper
837  currPosition += m_s->m_tmp_3rhoWVec.sizeLocal();
838  totalSample.cwExtract(currPosition,m_s->m_tmp_4lambdaSVec); // Total of 'p_eta' in matlab code
839  currPosition += m_s->m_tmp_4lambdaSVec.sizeLocal();
840  totalSample.cwExtract(currPosition,m_e->m_tmp_5lambdaYVec); // Total of '1' in paper
841  currPosition += m_e->m_tmp_5lambdaYVec.sizeLocal();
842  totalSample.cwExtract(currPosition,m_e->m_tmp_6lambdaVVec); // Total of 'F' in paper
843  currPosition += m_e->m_tmp_6lambdaVVec.sizeLocal();
844  totalSample.cwExtract(currPosition,m_e->m_tmp_7rhoVVec); // Total of 'F*p_x' in paper
845  currPosition += m_e->m_tmp_7rhoVVec.sizeLocal();
846  totalSample.cwExtract(currPosition,m_e->m_tmp_8thetaVec); // Application specific
847  currPosition += m_e->m_tmp_8thetaVec.sizeLocal();
848  queso_require_equal_to_msg(currPosition, totalSample.sizeLocal(), "'currPosition' and 'totalSample.sizeLocal()' should be equal");
849 
850  //********************************************************************************
851  // Submatrix (1,1): Compute '\Sigma_z_hat' matrix
852  //********************************************************************************
853  // Fill m_Rmat_v_is, m_Smat_v_is, m_Smat_v
854  // Fill m_Rmat_u_is, m_Smat_u_is, m_Smat_u
855  // Fill m_Rmat_w_is, m_Smat_w_is, m_Smat_w
856  // Fill m_Rmat_uw_is, m_Smat_uw_is, m_Smat_uw
857  // Then fill m_tmp_Smat_z
858  // Fill m_Rmat_extra
859  // Then fill m_tmp_Smat_z_hat
860  this->formSigma_z_hat(m_s->m_tmp_1lambdaEtaVec, // todo_rr0: necessary to recompute for every posterior sample?
861  m_s->m_tmp_2lambdaWVec,
862  m_s->m_tmp_3rhoWVec,
863  m_s->m_tmp_4lambdaSVec,
864  m_e->m_tmp_5lambdaYVec,
865  m_e->m_tmp_6lambdaVVec,
866  m_e->m_tmp_7rhoVVec,
867  newParameterVec, //m_e->m_tmp_8thetaVec,
868  m_j->m_predVU_counter);
869 
870  //********************************************************************************
871  // Submatrix (1,2): Compute '\Sigma_z_hat_v_asterisk' matrix
872  // Submatrix (2,1): Compute '\Sigma_z_hat_v_asterisk' transpose matrix
873  //********************************************************************************
874  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
875  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::predictVUsAtGridPoint(1)"
876  << ", m_predVU_counter = " << m_j->m_predVU_counter
877  << ": about to populate 'm_Smat_v_hat_v_asterisk'"
878  << ", m_e->m_Smat_v_hat_v_asterisk_is.size() = " << m_e->m_Smat_v_hat_v_asterisk_is.size() // 13
879  << ", m_e->m_tmp_rho_v_vec.sizeLocal() = " << m_e->m_tmp_rho_v_vec.sizeLocal() // 1
880  << ", m_e->m_tmp_7rhoVVec.sizeLocal() = " << m_e->m_tmp_7rhoVVec.sizeLocal() // 1
881  << std::endl;
882  }
883  queso_require_equal_to_msg((m_e->m_Smat_v_hat_v_asterisk_is.size() * m_e->m_tmp_rho_v_vec.sizeLocal()), m_e->m_tmp_7rhoVVec.sizeLocal(), "invalid size for 'v' variables");
884  unsigned int initialPos = 0;
885  for (unsigned int i = 0; i < m_e->m_Smat_v_hat_v_asterisk_is.size(); ++i) {
886  m_e->m_tmp_7rhoVVec.cwExtract(initialPos,m_e->m_tmp_rho_v_vec);
887  initialPos += m_e->m_tmp_rho_v_vec.sizeLocal();
888  m_e->m_Rmat_v_hat_v_asterisk_is[i]->cwSet(0.);
889  this->fillR_formula2_for_Sigma_v_hat_v_asterisk(m_s->m_paper_xs_asterisks_standard,
890  m_s->m_paper_ts_asterisks_standard,
891  newScenarioVec,
892  newParameterVec, //m_e->m_tmp_8thetaVec,
893  m_e->m_tmp_rho_v_vec,
894  *(m_e->m_Rmat_v_hat_v_asterisk_is[i]), // IMPORTANT-28
895  m_j->m_predVU_counter);
896  m_e->m_Smat_v_hat_v_asterisk_is[i]->cwSet(0.);
897  // IMPORTANT-28
898  *(m_e->m_Smat_v_hat_v_asterisk_is[i]) = (1./m_e->m_tmp_6lambdaVVec[i]) * *(m_e->m_Rmat_v_hat_v_asterisk_is[i]);
899  }
900  m_e->m_Smat_v_hat_v_asterisk.cwSet(0.);
901  m_e->m_Smat_v_hat_v_asterisk.fillWithBlocksDiagonally(0,0,m_e->m_Smat_v_hat_v_asterisk_is,true,true);
902  m_e->m_Smat_v_hat_v_asterisk_t.fillWithTranspose(0,0,m_e->m_Smat_v_hat_v_asterisk,true,true);
903 
904  here_Smat_z_hat_v_asterisk.cwSet(0.);
905  here_Smat_z_hat_v_asterisk.cwSet(0,0,m_e->m_Smat_v_hat_v_asterisk); // checar
906  here_Smat_z_hat_v_asterisk_t.fillWithTranspose(0,0,here_Smat_z_hat_v_asterisk,true,true);
907 
908  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
909  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::predictVUsAtGridPoint(1)"
910  << ", m_predVU_counter = " << m_j->m_predVU_counter
911  << ": finished instantiating 'm_Smat_v_hat_v_asterisk'"
912  << std::endl;
913  }
914 
915  //********************************************************************************
916  // Submatrix (1,3): Compute '\Sigma_z_hat_u_asterisk' matrix
917  // Submatrix (3,1): Compute '\Sigma_z_hat_u_asterisk' transpose matrix
918  //********************************************************************************
919  initialPos = 0;
920  for (unsigned int i = 0; i < m_j->m_Smat_u_hat_u_asterisk_is.size(); ++i) {
921  m_s->m_tmp_3rhoWVec.cwExtract(initialPos,m_s->m_tmp_rho_w_vec);
922  initialPos += m_s->m_tmp_rho_w_vec.sizeLocal();
923 
924  m_j->m_Rmat_u_hat_u_asterisk_is[i]->cwSet(0.);
925  this->fillR_formula1_for_Sigma_u_hat_u_asterisk(m_s->m_paper_xs_asterisks_standard,
926  m_s->m_paper_ts_asterisks_standard,
927  newScenarioVec,
928  newParameterVec, //m_e->m_tmp_8thetaVec,
929  m_s->m_tmp_rho_w_vec,
930  *(m_j->m_Rmat_u_hat_u_asterisk_is[i]),
931  m_j->m_predVU_counter);
932  m_j->m_Smat_u_hat_u_asterisk_is[i]->cwSet(0.);
933  *(m_j->m_Smat_u_hat_u_asterisk_is[i]) = (1./m_s->m_tmp_2lambdaWVec[i]) * *(m_j->m_Rmat_u_hat_u_asterisk_is[i]);
934 
935  m_j->m_Rmat_w_hat_u_asterisk_is[i]->cwSet(0.);
936  this->fillR_formula1_for_Sigma_w_hat_u_asterisk(m_s->m_paper_xs_asterisks_standard,
937  m_s->m_paper_ts_asterisks_standard,
938  newScenarioVec,
939  newParameterVec, //m_e->m_tmp_8thetaVec,
940  m_s->m_tmp_rho_w_vec,
941  *(m_j->m_Rmat_w_hat_u_asterisk_is[i]),
942  m_j->m_predVU_counter);
943  m_j->m_Smat_w_hat_u_asterisk_is[i]->cwSet(0.);
944  *(m_j->m_Smat_w_hat_u_asterisk_is[i]) = (1./m_s->m_tmp_2lambdaWVec[i]) * *(m_j->m_Rmat_w_hat_u_asterisk_is[i]);
945  }
946 
947  m_j->m_Smat_u_hat_u_asterisk.cwSet(0.);
948  m_j->m_Smat_u_hat_u_asterisk.fillWithBlocksDiagonally(0,0,m_j->m_Smat_u_hat_u_asterisk_is,true,true);
949  m_j->m_Smat_u_hat_u_asterisk_t.fillWithTranspose(0,0,m_j->m_Smat_u_hat_u_asterisk,true,true);
950 
951  m_j->m_Smat_w_hat_u_asterisk.cwSet(0.);
952  m_j->m_Smat_w_hat_u_asterisk.fillWithBlocksDiagonally(0,0,m_j->m_Smat_w_hat_u_asterisk_is,true,true);
953  m_j->m_Smat_w_hat_u_asterisk_t.fillWithTranspose(0,0,m_j->m_Smat_w_hat_u_asterisk,true,true);
954 
955  twoMats_uw[0] = &m_j->m_Smat_u_hat_u_asterisk;
956  twoMats_uw[1] = &m_j->m_Smat_w_hat_u_asterisk;
957  here_Smat_z_hat_u_asterisk.cwSet(0.);
958  here_Smat_z_hat_u_asterisk.fillWithBlocksVertically(m_e->m_v_size,0,twoMats_uw,true,true); // checar
959  here_Smat_z_hat_u_asterisk_t.fillWithTranspose(0,0,here_Smat_z_hat_u_asterisk,true,true);
960 
961  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
962  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::predictVUsAtGridPoint(1)"
963  << ", m_predVU_counter = " << m_j->m_predVU_counter
964  << ": finished instantiating '>m_Smat_z_hat_u_asterisk'"
965  << std::endl;
966  }
967 
968  //********************************************************************************
969  // Submatrix (2,2): Compute '\Sigma_v_asterisk_v_asterisk' matrix
970  //********************************************************************************
971  queso_require_equal_to_msg(m_e->m_Smat_v_asterisk_v_asterisk.numRowsLocal(), m_e->m_paper_p_delta, "invalid 'm_Smat_v_asterisk_v_asterisk.numRowsLocal()'");
972  queso_require_equal_to_msg(m_e->m_tmp_6lambdaVVec.sizeLocal(), m_e->m_paper_p_delta, "invalid 'm_tmp_6lambdaVVec.sizeLocal()'");
973 
974  m_e->m_Smat_v_asterisk_v_asterisk.cwSet(0.);
975  for (unsigned int i = 0; i < m_e->m_paper_p_delta; ++i) {
976  m_e->m_Smat_v_asterisk_v_asterisk(i,i) = 1./m_e->m_tmp_6lambdaVVec[i];
977  }
978 
979  //********************************************************************************
980  // Submatrix (3,3): Compute '\Sigma_u_asterisk_u_asterisk' matrix
981  //********************************************************************************
982  queso_require_equal_to_msg(m_j->m_Smat_u_asterisk_u_asterisk.numRowsLocal(), m_s->m_paper_p_eta, "invalid 'm_Smat_u_asterisk_u_asterisk.numRowsLocal()'");
983  queso_require_equal_to_msg(m_s->m_tmp_2lambdaWVec.sizeLocal(), m_s->m_paper_p_eta, "invalid 'm_tmp_2lambdaWVec.sizeLocal()'");
984 
985  m_j->m_Smat_u_asterisk_u_asterisk.cwSet(0.);
986  for (unsigned int i = 0; i < m_s->m_paper_p_eta; ++i) {
987  m_j->m_Smat_u_asterisk_u_asterisk(i,i) = 1./m_s->m_tmp_2lambdaWVec[i] + 1/m_s->m_tmp_4lambdaSVec[i]; // lambda_s
988  }
989 
990  //********************************************************************************
991  // For the current parameter sample, compute the mean vector and the covariance
992  // matrix of the corresponding Gassian RVs 'v' and 'u' conditioned on 'z_hat'
993  // Use the already computed (in constructor) 'm_Zvec_hat'
994  //********************************************************************************
995  P_V unique_vu_vec(m_j->m_unique_vu_space.zeroVector());
996  P_M unique_vu_mat(m_j->m_unique_vu_space.zeroVector());
997 
998  twoMats_12[0] = &here_Smat_z_hat_v_asterisk_t;
999  twoMats_12[1] = &here_Smat_z_hat_u_asterisk_t;
1000  twoMats_21[0] = &here_Smat_z_hat_v_asterisk;
1001  twoMats_21[1] = &here_Smat_z_hat_u_asterisk;
1002  twoMats_22[0] = &m_e->m_Smat_v_asterisk_v_asterisk;
1003  twoMats_22[1] = &m_j->m_Smat_u_asterisk_u_asterisk;
1004 
1005  sigmaMat11 = m_z->m_tmp_Smat_z_hat;
1006  sigmaMat12.fillWithBlocksHorizontally(0,0,twoMats_12,true,true);
1007  sigmaMat21.fillWithBlocksVertically (0,0,twoMats_21,true,true);
1008  sigmaMat22.fillWithBlocksDiagonally (0,0,twoMats_22,true,true);
1009  ComputeConditionalGaussianVectorRV(muVec1,muVec2,sigmaMat11,sigmaMat12,sigmaMat21,sigmaMat22,m_z->m_Zvec_hat,unique_vu_vec,unique_vu_mat);
1010 
1011  unique_vu_means.setPositionValues(sampleId,unique_vu_vec);
1012  m_j->m_predVU_summingRVs_mean_of_unique_vu_covMatrices += unique_vu_mat;
1013  }
1014 
1015  //********************************************************************************
1016  // Final calculations
1017  //********************************************************************************
1018  m_j->m_predVU_summingRVs_mean_of_unique_vu_covMatrices *= (1./(double) numSamples);
1019 
1020  m_j->m_predVU_summingRVs_unique_vu_meanVec = unique_vu_means.unifiedMeanPlain();
1021 
1022  m_j->m_predVU_summingRVs_covMatrix_of_unique_vu_means.cwSet(0.);
1023  m_j->m_predVU_summingRVs_corrMatrix_of_unique_vu_means.cwSet(0.);
1025  unique_vu_means,
1026  unique_vu_means.subSequenceSize(),
1027  m_j->m_predVU_summingRVs_covMatrix_of_unique_vu_means,
1028  m_j->m_predVU_summingRVs_corrMatrix_of_unique_vu_means);
1029 
1030  vuMeanVec = m_j->m_predVU_summingRVs_unique_vu_meanVec;
1031  vuMeanVec.cwExtract(0,vMeanVec);
1032  vuMeanVec.cwExtract(m_e->m_paper_p_delta,uMeanVec);
1033 
1034  P_M vuCovMatrix(m_j->m_unique_vu_space.zeroVector());
1035  vuCovMatrix = m_j->m_predVU_summingRVs_mean_of_unique_vu_covMatrices + m_j->m_predVU_summingRVs_covMatrix_of_unique_vu_means;
1036  vuCovMatrix.cwExtract(0,0,vCovMatrix); // checar
1037  vuCovMatrix.cwExtract(m_e->m_paper_p_delta,m_e->m_paper_p_delta,uCovMatrix); // checar
1038 
1039  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 3)) {
1040  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::predictVUsAtGridPoint(1)"
1041  << ", m_predVU_counter = " << m_j->m_predVU_counter
1042  << ": finished computing all means and covariances"
1043  << "\n vuMeanVec = " << vuMeanVec
1044  << "\n m_predW_summingRVs_covMatrix_of_unique_vu_means = " << m_j->m_predVU_summingRVs_covMatrix_of_unique_vu_means
1045  << "\n m_predW_summingRVs_mean_of_unique_vu_covMatrices = " << m_j->m_predVU_summingRVs_mean_of_unique_vu_covMatrices
1046  << "\n vuCovMatrix = " << vuCovMatrix
1047  << std::endl;
1048 
1049  }
1050 
1051  mean_of_unique_vu_covMatrices *= (1./(double) numSamples);
1052  }
1053 
1054  if (m_optionsObj->m_predVUsAtKeyPoints) {
1055  }
1056 
1057  double totalTime = MiscGetEllapsedSeconds(&timevalBegin);
1058  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
1059  *m_env.subDisplayFile() << "Leaving GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::predictVUsAtGridPoint(1)"
1060  << ", m_predVU_counter = " << m_j->m_predVU_counter
1061  << ", newScenarioVec = " << newScenarioVec
1062  << ", after " << totalTime
1063  << " seconds"
1064  << std::endl;
1065  }
1066 
1067  return;
1068 }
1069 
1070 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>
1071 void
1073  const S_V& newScenarioVec,
1074  const P_V& newParameterVec,
1075  const P_V* forcingSampleVecForDebug, // Usually NULL
1076  P_V& wMeanVec,
1077  P_M& wCovMatrix)
1078 {
1079  struct timeval timevalBegin;
1080  gettimeofday(&timevalBegin, NULL);
1081 
1082  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
1083  *m_env.subDisplayFile() << "Entering GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::predictWsAtGridPoint()"
1084  << ", m_predW_counter = " << m_s->m_predW_counter
1085  << ", newScenarioVec = " << newScenarioVec
1086  << ", newParameterVec = " << newParameterVec
1087  << std::endl;
1088  }
1089 
1090  queso_require_equal_to_msg(newScenarioVec.sizeLocal(), m_s->m_paper_p_x, "invalid 'newScenarioVec'");
1091 
1092  queso_require_equal_to_msg(newParameterVec.sizeLocal(), m_s->m_paper_p_t, "invalid 'newParameterVec'");
1093 
1094  queso_require_equal_to_msg(wMeanVec.sizeLocal(), m_s->m_paper_p_eta, "invalid 'wMeanVec'");
1095 
1096  queso_require_equal_to_msg(wCovMatrix.numRowsLocal(), m_s->m_paper_p_eta, "invalid 'wCovMatrix.numRowsLocal()'");
1097 
1098  queso_require_equal_to_msg(wCovMatrix.numCols(), m_s->m_paper_p_eta, "invalid 'wCovMatrix.numCols()'");
1099 
1100  if (m_optionsObj->m_predWsBySamplingRVs) {
1101  }
1102 
1103  if (m_optionsObj->m_predWsBySummingRVs) {
1104  unsigned int numSamples = (unsigned int) ((double) m_t->m_totalPostRv.realizer().subPeriod())/((double) m_optionsObj->m_predLag);
1105  if (forcingSampleVecForDebug) {
1106  numSamples = 1;
1107  }
1108  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
1109  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::predictWsAtGridPoint()"
1110  << ": m_t->m_totalPostRv.realizer().subPeriod() = " << m_t->m_totalPostRv.realizer().subPeriod()
1111  << ", m_optionsObj->m_predLag = " << m_optionsObj->m_predLag
1112  << ", numSamples = " << numSamples
1113  << std::endl;
1114  }
1115 
1116  SequenceOfVectors<P_V,P_M> unique_w_means(m_s->m_unique_w_space,numSamples,m_optionsObj->m_prefix+"w_means");
1117 
1118  P_V totalSample(m_t->m_totalSpace.zeroVector());
1119  P_V muVec1 (m_s->m_unique_w_space.zeroVector());
1120  P_V muVec2 (m_s->m_w_space.zeroVector());
1121  P_M sigmaMat11 (m_s->m_unique_w_space.zeroVector());
1122  P_M sigmaMat12 (m_env,muVec1.map(),muVec2.sizeGlobal());
1123  P_M sigmaMat21 (m_env,muVec2.map(),muVec1.sizeGlobal());
1124  P_M sigmaMat22 (m_s->m_w_space.zeroVector());
1125  for (unsigned int sampleId = 0; sampleId < numSamples; ++sampleId) {
1126  m_s->m_predW_counter++;
1127 
1128  if (sampleId > 0) {
1129  for (unsigned int i = 1; i < m_optionsObj->m_predLag; ++i) { // Yes, '1'
1130  m_t->m_totalPostRv.realizer().realization(totalSample);
1131  }
1132  }
1133  m_t->m_totalPostRv.realizer().realization(totalSample);
1134  if (forcingSampleVecForDebug) {
1135  totalSample = *forcingSampleVecForDebug;
1136  }
1137 
1138  unsigned int currPosition = 0;
1139  totalSample.cwExtract(currPosition,m_s->m_tmp_1lambdaEtaVec); // Total of '1' in paper
1140  currPosition += m_s->m_tmp_1lambdaEtaVec.sizeLocal();
1141  totalSample.cwExtract(currPosition,m_s->m_tmp_2lambdaWVec); // Total of 'p_eta' in paper
1142  currPosition += m_s->m_tmp_2lambdaWVec.sizeLocal();
1143  totalSample.cwExtract(currPosition,m_s->m_tmp_3rhoWVec); // Total of 'p_eta*(p_x+p_t)' in paper
1144  currPosition += m_s->m_tmp_3rhoWVec.sizeLocal();
1145  totalSample.cwExtract(currPosition,m_s->m_tmp_4lambdaSVec); // Total of 'p_eta' in matlab code
1146  currPosition += m_s->m_tmp_4lambdaSVec.sizeLocal();
1147  totalSample.cwExtract(currPosition,m_e->m_tmp_5lambdaYVec); // Total of '1' in paper
1148  currPosition += m_e->m_tmp_5lambdaYVec.sizeLocal();
1149  totalSample.cwExtract(currPosition,m_e->m_tmp_6lambdaVVec); // Total of 'F' in paper
1150  currPosition += m_e->m_tmp_6lambdaVVec.sizeLocal();
1151  totalSample.cwExtract(currPosition,m_e->m_tmp_7rhoVVec); // Total of 'F*p_x' in paper
1152  currPosition += m_e->m_tmp_7rhoVVec.sizeLocal();
1153  totalSample.cwExtract(currPosition,m_e->m_tmp_8thetaVec); // Application specific
1154  currPosition += m_e->m_tmp_8thetaVec.sizeLocal();
1155  queso_require_equal_to_msg(currPosition, totalSample.sizeLocal(), "'currPosition' and 'totalSample.sizeLocal()' should be equal");
1156 
1157  //********************************************************************************
1158  // Submatrix (1,1): Compute '\Sigma_w_hat' matrix
1159  //********************************************************************************
1160  // Fill m_Rmat_w_is, m_Smat_w_is, m_Smat_w
1161  // Then add to m_Smat_w in order to obtain m_Smat_w_hat
1162  this->formSigma_w_hat(m_s->m_tmp_1lambdaEtaVec,
1163  m_s->m_tmp_2lambdaWVec,
1164  m_s->m_tmp_3rhoWVec,
1165  m_s->m_tmp_4lambdaSVec,
1166  newParameterVec, // todo_rr0
1167  m_s->m_predW_counter);
1168 
1169  if (forcingSampleVecForDebug) {
1170  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
1171  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::predictWsAtGridPoint()"
1172  << ": m_s->m_Smat_w_hat = " << m_s->m_Smat_w_hat
1173  << std::endl;
1174  }
1175  }
1176 
1177  //********************************************************************************
1178  // Submatrix (1,2): Compute '\Sigma_w_hat_w_asterisk' matrix
1179  // Submatrix (2,1): Compute '\Sigma_w_hat_w_asterisk' transpose matrix
1180  //********************************************************************************
1181  unsigned int initialPos = 0;
1182  for (unsigned int i = 0; i < m_s->m_Smat_w_hat_w_asterisk_is.size(); ++i) {
1183  m_s->m_tmp_3rhoWVec.cwExtract(initialPos,m_s->m_tmp_rho_w_vec);
1184  initialPos += m_s->m_tmp_rho_w_vec.sizeLocal();
1185  m_s->m_Rmat_w_hat_w_asterisk_is[i]->cwSet(0.); // This matrix is rectangular: m_paper_m X 1
1186  this->fillR_formula1_for_Sigma_w_hat_w_asterisk(m_s->m_paper_xs_asterisks_standard, // IMPORTANT
1187  m_s->m_paper_ts_asterisks_standard,
1188  newScenarioVec,
1189  newParameterVec,
1190  m_s->m_tmp_rho_w_vec,
1191  *(m_s->m_Rmat_w_hat_w_asterisk_is[i]),
1192  m_s->m_predW_counter);
1193  m_s->m_Smat_w_hat_w_asterisk_is[i]->cwSet(0.);
1194  *(m_s->m_Smat_w_hat_w_asterisk_is[i]) = (1./m_s->m_tmp_2lambdaWVec[i]) * *(m_s->m_Rmat_w_hat_w_asterisk_is[i]);
1195  }
1196  m_s->m_Smat_w_hat_w_asterisk.cwSet(0.);
1197  m_s->m_Smat_w_hat_w_asterisk.fillWithBlocksDiagonally(0,0,m_s->m_Smat_w_hat_w_asterisk_is,true,true);
1198  m_s->m_Smat_w_hat_w_asterisk_t.fillWithTranspose(0,0,m_s->m_Smat_w_hat_w_asterisk,true,true);
1199  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
1200  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::predictWsAtGridPoint()"
1201  << ", m_predW_counter = " << m_s->m_predW_counter
1202  << ": finished instantiating 'm_Smat_w_hat_w_asterisk'"
1203  << std::endl;
1204  }
1205 
1206  if (forcingSampleVecForDebug) {
1207  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
1208  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::predictWsAtGridPoint()"
1209  << ": m_s->m_Smat_w_hat_w_asterisk = " << m_s->m_Smat_w_hat_w_asterisk
1210  << std::endl;
1211  }
1212  }
1213 
1214  //********************************************************************************
1215  // Submatrix (2,2): Compute '\Sigma_w_asterisk_w_asterisk' matrix
1216  //********************************************************************************
1217  queso_require_equal_to_msg(m_s->m_Smat_w_asterisk_w_asterisk.numRowsLocal(), m_s->m_paper_p_eta, "invalid 'm_Smat_w_asterisk_w_asterisk.numRowsLocal()'");
1218  queso_require_equal_to_msg(m_s->m_tmp_2lambdaWVec.sizeLocal(), m_s->m_paper_p_eta, "invalid 'm_tmp_2lambdaWVec.sizeLocal()'");
1219 
1220  m_s->m_Smat_w_asterisk_w_asterisk.cwSet(0.);
1221  for (unsigned int i = 0; i < m_s->m_paper_p_eta; ++i) {
1222  m_s->m_Smat_w_asterisk_w_asterisk(i,i) = 1./m_s->m_tmp_2lambdaWVec[i] + 1/m_s->m_tmp_4lambdaSVec[i]; // lambda_s
1223  }
1224 
1225  if (forcingSampleVecForDebug) {
1226  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
1227  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::predictWsAtGridPoint()"
1228  << ": m_s->m_Smat_w_asterisk_w_asterisk = " << m_s->m_Smat_w_asterisk_w_asterisk
1229  << std::endl;
1230  }
1231  }
1232 
1233  //********************************************************************************
1234  // For the current parameter sample, compute the mean vector and the covariance
1235  // matrix of the corresponding Gassian RV 'w' conditioned on 'w_hat'
1236  // Use the already computed (in constructor) 'm_Zvec_hat_w'
1237  //********************************************************************************
1238  if (forcingSampleVecForDebug) {
1239  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
1240  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::predictWsAtGridPoint()"
1241  << ": muVec1 = " << muVec1
1242  << ", muVec2 = " << muVec2
1243  << ", m_s->m_Zvec_hat_w = " << m_s->m_Zvec_hat_w
1244  << std::endl;
1245  }
1246  }
1247 
1248  P_V unique_w_vec(m_s->m_unique_w_space.zeroVector());
1249  P_M unique_w_mat(m_s->m_unique_w_space.zeroVector());
1250 
1251  sigmaMat11 = m_s->m_Smat_w_asterisk_w_asterisk;
1252  sigmaMat12 = m_s->m_Smat_w_hat_w_asterisk_t;
1253  sigmaMat21 = m_s->m_Smat_w_hat_w_asterisk;
1254  sigmaMat22 = m_s->m_Smat_w_hat;
1255  ComputeConditionalGaussianVectorRV(muVec1,muVec2,sigmaMat11,sigmaMat12,sigmaMat21,sigmaMat22,m_s->m_Zvec_hat_w,unique_w_vec,unique_w_mat);
1256 
1257  if (forcingSampleVecForDebug) {
1258  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
1259  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::predictWsAtGridPoint()"
1260  << ", unique_w_vec = " << unique_w_vec
1261  << ", unique_w_mat = " << unique_w_mat
1262  << std::endl;
1263  }
1264  }
1265 
1266  unique_w_means.setPositionValues(sampleId,unique_w_vec);
1267  m_s->m_predW_summingRVs_mean_of_unique_w_covMatrices += unique_w_mat;
1268 
1269  // aqui: display periodic message
1270  }
1271 
1272  //********************************************************************************
1273  // Final calculations
1274  //********************************************************************************
1275  m_s->m_predW_summingRVs_mean_of_unique_w_covMatrices *= (1./(double) numSamples);
1276 
1277  m_s->m_predW_summingRVs_unique_w_meanVec = unique_w_means.unifiedMeanPlain();
1278 
1279  m_s->m_predW_summingRVs_covMatrix_of_unique_w_means.cwSet(0.);
1280  m_s->m_predW_summingRVs_corrMatrix_of_unique_w_means.cwSet(0.);
1282  unique_w_means,
1283  unique_w_means.subSequenceSize(),
1284  m_s->m_predW_summingRVs_covMatrix_of_unique_w_means,
1285  m_s->m_predW_summingRVs_corrMatrix_of_unique_w_means);
1286 
1287  wMeanVec = m_s->m_predW_summingRVs_unique_w_meanVec;
1288  wCovMatrix = m_s->m_predW_summingRVs_mean_of_unique_w_covMatrices + m_s->m_predW_summingRVs_covMatrix_of_unique_w_means;
1289 
1290  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
1291  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::predictWsAtGridPoint()"
1292  << ", m_predW_counter = " << m_s->m_predW_counter
1293  << ": finished computing all means and covariances"
1294  << "\n wMeanVec = " << wMeanVec
1295  << "\n m_predW_summingRVs_covMatrix_of_unique_w_means = " << m_s->m_predW_summingRVs_covMatrix_of_unique_w_means
1296  << "\n m_predW_summingRVs_mean_of_unique_w_covMatrices = " << m_s->m_predW_summingRVs_mean_of_unique_w_covMatrices
1297  << "\n wCovMatrix = " << wCovMatrix
1298  << std::endl;
1299 
1300  }
1301  }
1302 
1303  if (m_optionsObj->m_predWsAtKeyPoints) {
1304  }
1305 
1306  double totalTime = MiscGetEllapsedSeconds(&timevalBegin);
1307  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
1308  *m_env.subDisplayFile() << "Leaving GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::predictWsAtGridPoint()"
1309  << ", m_predW_counter = " << m_s->m_predW_counter
1310  << ", newScenarioVec = " << newScenarioVec
1311  << ", newParameterVec = " << newParameterVec
1312  << ", after " << totalTime
1313  << " seconds"
1314  << std::endl;
1315  }
1316 
1317  return;
1318 }
1319 
1320 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>
1321 void
1323  const S_V& newScenarioVec,
1324  const D_M& newKmat_interp,
1325  const D_M& newDmat,
1326  D_V& simulationOutputMeanVec, // todo_rr: pass as pointer
1327  D_V& discrepancyMeanVec) // todo_rr: pass as pointer
1328 {
1329  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
1330  *m_env.subDisplayFile() << "Entering GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::predictExperimentResults()"
1331  << std::endl;
1332  }
1333 
1334  queso_require_equal_to_msg(newScenarioVec.sizeLocal(), m_s->m_paper_p_x, "invalid 'newScenarioVec'");
1335 
1336  queso_require_msg(!((newKmat_interp.numRowsLocal() != m_s->m_paper_n_eta) || (newKmat_interp.numCols() != m_s->m_paper_p_eta)), "invalid 'newKmat_interp'");
1337 
1338  queso_require_msg(!((newDmat.numRowsLocal() != m_s->m_paper_n_eta) || (newDmat.numCols() != m_e->m_paper_p_delta)), "invalid 'newDmat'");
1339 
1340  queso_require_equal_to_msg(simulationOutputMeanVec.sizeLocal(), m_s->m_paper_n_eta, "invalid 'simulationOutputMeanVec'");
1341 
1342  queso_require_equal_to_msg(discrepancyMeanVec.sizeLocal(), m_s->m_paper_n_eta, "invalid 'discrepancyMeanVec'");
1343 
1344  P_V vMeanVec (m_e->m_unique_v_space.zeroVector());
1345  P_M vCovMatrix(m_e->m_unique_v_space.zeroVector());
1346 
1347  // Damon: Had to change m_unique_u_space to m_unique_w_space below. I hope
1348  // it's right. m_s doesn't have a m_unique_u_space
1349  P_V uMeanVec (m_s->m_unique_w_space.zeroVector());
1350  P_M uCovMatrix(m_s->m_unique_w_space.zeroVector());
1351 #if 0
1352  this->predictVUsAtGridPoint(newScenarioVec,
1353  vMeanVec,
1354  vCovMatrix,
1355  uMeanVec,
1356  uCovMatrix);
1357 #endif
1358  simulationOutputMeanVec = newKmat_interp * uMeanVec;
1359  discrepancyMeanVec = newDmat * vMeanVec;
1360 
1361  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
1362  *m_env.subDisplayFile() << "Leaving GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::predictExperimentResults()"
1363  << std::endl;
1364  }
1365 
1366  return;
1367 }
1368 
1369 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>
1370 void
1372  const S_V& newScenarioVec,
1373  const P_V& newParameterVec,
1374  Q_V& simulationOutputMeanVec)
1375 {
1376  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
1377  *m_env.subDisplayFile() << "Entering GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::predictSimulationOutputs()"
1378  << std::endl;
1379  }
1380 
1381  queso_require_equal_to_msg(newScenarioVec.sizeLocal(), m_s->m_paper_p_x, "invalid 'newScenarioVec'");
1382 
1383  queso_require_equal_to_msg(newParameterVec.sizeLocal(), m_s->m_paper_p_t, "invalid 'newParameterVec'");
1384 
1385  queso_require_equal_to_msg(simulationOutputMeanVec.sizeLocal(), m_s->m_paper_n_eta, "invalid 'simulationOutputMeanVec'");
1386 
1387  P_V wMeanVec (m_s->m_unique_w_space.zeroVector());
1388  P_M wCovMatrix(m_s->m_unique_w_space.zeroVector());
1389  this->predictWsAtGridPoint(newScenarioVec,
1390  newParameterVec,
1391  NULL, // Damon: Adding NULL here; Ernesto left this out
1392  wMeanVec,
1393  wCovMatrix);
1394 
1395  // todo_rr (Should one denormalize qoi here???
1396 
1397  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
1398  *m_env.subDisplayFile() << "Leaving GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::predictSimulationOutputs()"
1399  << std::endl;
1400  }
1401 
1402  return;
1403 }
1404 
1405 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>
1406 const VectorSpace<P_V,P_M>&
1408 {
1409  queso_require_msg(m_t, "m_t is NULL");
1410  return m_t->m_totalSpace;
1411 }
1412 
1413 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>
1414 const VectorSpace<P_V,P_M>&
1416 {
1417  queso_require_msg(m_j, "m_j is NULL");
1418  return m_j->m_unique_vu_space;
1419 }
1420 
1421 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>
1422 const BaseVectorRV<P_V,P_M>&
1424 {
1425  queso_require_msg(m_t, "m_t is NULL");
1426  return m_t->m_totalPriorRv;
1427 }
1428 
1429 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>
1432 {
1433  queso_require_msg(m_t, "m_t is NULL");
1434  return m_t->m_totalPostRv;
1435 }
1436 
1437 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>
1438 void
1440 {
1441  return;
1442 }
1443 
1444 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>
1445 void
1447 {
1448 #if 0
1449  std::cout << "Entering memoryCheck(), m_like_counter = " << m_like_counter << ", codePositionId = " << codePositionId << std::endl;
1450 
1451  double sumZ = 0.;
1452  for (unsigned int i = 0; i < m_z->m_tmp_Smat_z.numRowsLocal(); ++i) {
1453  //std::cout << "i = " << i << std::endl;
1454  for (unsigned int j = 0; j < m_z->m_tmp_Smat_z.numCols(); ++j) {
1455  //std::cout << "j = " << j << std::endl;
1456  sumZ += m_z->m_tmp_Smat_z(i,j);
1457  }
1458  }
1459  //std::cout << "Aqui 000-000, sumZ = " << sumZ << std::endl;
1460 
1461  double sumV = 0.;
1462  for (unsigned int i = 0; i < m_e->m_Smat_v.numRowsLocal(); ++i) {
1463  for (unsigned int j = 0; j < m_e->m_Smat_v.numCols(); ++j) {
1464  sumV += m_e->m_Smat_v(i,j);
1465  }
1466  }
1467 
1468  double sumU = 0.;
1469  for (unsigned int i = 0; i < m_j->m_Smat_u.numRowsLocal(); ++i) {
1470  for (unsigned int j = 0; j < m_j->m_Smat_u.numCols(); ++j) {
1471  sumU += m_j->m_Smat_u(i,j);
1472  }
1473  }
1474 
1475  double sumW = 0.;
1476  for (unsigned int i = 0; i < m_s->m_Smat_w.numRowsLocal(); ++i) {
1477  for (unsigned int j = 0; j < m_s->m_Smat_w.numCols(); ++j) {
1478  sumW += m_s->m_Smat_w(i,j);
1479  }
1480  }
1481 
1482  double sumUW = 0.;
1483  for (unsigned int i = 0; i < m_j->m_Smat_uw.numRowsLocal(); ++i) {
1484  for (unsigned int j = 0; j < m_j->m_Smat_uw.numCols(); ++j) {
1485  sumUW += m_j->m_Smat_uw(i,j);
1486  }
1487  }
1488 
1489  double sumUW_T = 0.;
1490  for (unsigned int i = 0; i < m_j->m_Smat_uw_t.numRowsLocal(); ++i) {
1491  for (unsigned int j = 0; j < m_j->m_Smat_uw_t.numCols(); ++j) {
1492  sumUW_T += m_j->m_Smat_uw_t(i,j);
1493  }
1494  }
1495 
1496  std::cout << "Leaving memoryCheck(), m_like_counter = " << m_like_counter << ", codePositionId = " << codePositionId << std::endl;
1497 #endif
1498  return;
1499 }
1500 
1501 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>
1502 void
1504 {
1505  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
1506  *m_env.subDisplayFile() << "Entering GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::generatePriorSeq()..."
1507  << ": m_optionsObj->m_prefix.c_str() = " << m_optionsObj->m_prefix.c_str()
1508  << ", m_optionsObj->m_priorSeqNumSamples = " << m_optionsObj->m_priorSeqNumSamples
1509  << std::endl;
1510  }
1511 
1512  SequenceOfVectors<P_V,P_M> priorSeq(m_t->m_totalSpace,m_optionsObj->m_priorSeqNumSamples,m_optionsObj->m_prefix+"priorSeq");
1513  P_V totalSample(m_t->m_totalSpace.zeroVector());
1514  for (unsigned int sampleId = 0; sampleId < m_optionsObj->m_priorSeqNumSamples; ++sampleId) {
1515  m_t->m_totalPriorRv.realizer().realization(totalSample);
1516  priorSeq.setPositionValues(sampleId,totalSample);
1517  }
1518  priorSeq.unifiedWriteContents(m_optionsObj->m_priorSeqDataOutputFileName,
1519  m_optionsObj->m_priorSeqDataOutputFileType);
1520 
1521  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
1522  *m_env.subDisplayFile() << "Leaving GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::generatePriorSeq()..."
1523  << ": m_optionsObj->m_prefix.c_str() = " << m_optionsObj->m_prefix.c_str()
1524  << std::endl;
1525  }
1526 
1527  return;
1528 }
1529 
1530 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>
1531 double
1533  const P_V& totalValues,
1534  const P_V* totalDirection,
1535  const void* functionDataPtr,
1536  P_V* gradVector,
1537  P_M* hessianMatrix,
1538  P_V* hessianEffect)
1539 {
1540  return ((GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>*) functionDataPtr)->likelihoodRoutine(totalValues,
1541  totalDirection,
1542  functionDataPtr,
1543  gradVector,
1544  hessianMatrix,
1545  hessianEffect);
1546 }
1547 
1548 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>
1549 double
1551  const P_V& totalValues,
1552  const P_V* totalDirection,
1553  const void* functionDataPtr,
1554  P_V* gradVector,
1555  P_M* hessianMatrix,
1556  P_V* hessianEffect)
1557 {
1558  struct timeval timevalBegin;
1559  gettimeofday(&timevalBegin, NULL);
1560 
1561  m_like_counter++;
1562  //std::cout << "Entering GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::likelihoodRoutine(), m_like_counter = " << m_like_counter << std::endl;
1563  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
1564  *m_env.subDisplayFile() << "Entering GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::likelihoodRoutine()..."
1565  << ": m_like_counter = " << m_like_counter
1566  << ", totalValues = " << totalValues
1567  << ", m_env.subComm().NumProc() = " << m_env.subComm().NumProc()
1568  << ", my subRank = " << m_env.subRank()
1569  << ", m_formCMatrix = " << m_formCMatrix
1570  << ", m_cMatIsRankDefficient = " << m_cMatIsRankDefficient
1571  << std::endl;
1572  }
1573 
1574  double lnLikelihoodValue = 0.;
1575 
1576  if (totalDirection &&
1577  functionDataPtr &&
1578  gradVector &&
1579  hessianMatrix &&
1580  hessianEffect) {
1581  // Just to eliminate INTEL compiler warnings
1582  }
1583 
1584  //********************************************************************************
1585  // Total values = (\lambda_eta[1],\lambda_w[p_eta],\rho_w[(p_x+p_t).p_eta],\lambda_y[1],\lambda_v[F],\rho_v[F.p_x],\theta)
1586  //********************************************************************************
1587  queso_require_equal_to(m_s->m_1lambdaEtaSpace.dimLocal(), 1);
1588 
1589  queso_require_equal_to(m_s->m_2lambdaWSpace.dimLocal(),
1590  m_s->m_paper_p_eta);
1591 
1592  queso_require_equal_to(m_s->m_3rhoWSpace.dimLocal(),
1593  (m_s->m_paper_p_eta*(m_s->m_paper_p_x+m_s->m_paper_p_t)));
1594  queso_require_equal_to(m_s->m_4lambdaSSpace.dimLocal(), m_s->m_paper_p_eta);
1595 
1596  if (m_thereIsExperimentalData) {
1597  queso_require_equal_to(m_e->m_5lambdaYSpace.dimLocal(), 1);
1598 
1599  queso_require_equal_to(m_e->m_6lambdaVSpace.dimLocal(),
1600  m_e->m_paper_F);
1601 
1602  queso_require_equal_to(m_e->m_7rhoVSpace.dimLocal(),
1603  m_e->m_paper_F*m_s->m_paper_p_x);
1604  }
1605 
1606  this->memoryCheck(50);
1607 
1608  unsigned int currPosition = 0;
1609  totalValues.cwExtract(currPosition,m_s->m_tmp_1lambdaEtaVec); // Total of '1' in paper
1610  currPosition += m_s->m_tmp_1lambdaEtaVec.sizeLocal();
1611  totalValues.cwExtract(currPosition,m_s->m_tmp_2lambdaWVec); // Total of 'p_eta' in paper
1612  currPosition += m_s->m_tmp_2lambdaWVec.sizeLocal();
1613  totalValues.cwExtract(currPosition,m_s->m_tmp_3rhoWVec); // Total of 'p_eta*(p_x+p_t)' in paper
1614  currPosition += m_s->m_tmp_3rhoWVec.sizeLocal();
1615  totalValues.cwExtract(currPosition,m_s->m_tmp_4lambdaSVec); // Total of 'p_eta' in matlab code
1616  currPosition += m_s->m_tmp_4lambdaSVec.sizeLocal();
1617 
1618  if (m_thereIsExperimentalData) {
1619  totalValues.cwExtract(currPosition,m_e->m_tmp_5lambdaYVec); // Total of '1' in paper
1620  currPosition += m_e->m_tmp_5lambdaYVec.sizeLocal();
1621  totalValues.cwExtract(currPosition,m_e->m_tmp_6lambdaVVec); // Total of 'F' in paper
1622  currPosition += m_e->m_tmp_6lambdaVVec.sizeLocal();
1623  totalValues.cwExtract(currPosition,m_e->m_tmp_7rhoVVec); // Total of 'F*p_x' in paper
1624  currPosition += m_e->m_tmp_7rhoVVec.sizeLocal();
1625  totalValues.cwExtract(currPosition,m_e->m_tmp_8thetaVec); // Application specific
1626  currPosition += m_e->m_tmp_8thetaVec.sizeLocal();
1627  }
1628  queso_require_equal_to_msg(currPosition, totalValues.sizeLocal(), "'currPosition' and 'totalValues.sizeLocal()' should be equal");
1629 
1630  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 99)) {
1631  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::likelihoodRoutine()"
1632  << ", m_like_counter = " << m_like_counter
1633  << ": finished extracting components from 'totalValues'"
1634  << ", m_tmp_1lambdaEtaVec = " << m_s->m_tmp_1lambdaEtaVec
1635  << ", m_tmp_2lambdaWVec = " << m_s->m_tmp_2lambdaWVec
1636  << ", m_tmp_3rhoWVec = " << m_s->m_tmp_3rhoWVec
1637  << ", m_tmp_4lambdaSVec = " << m_s->m_tmp_4lambdaSVec;
1638  if (m_thereIsExperimentalData) {
1639  *m_env.subDisplayFile() << ", m_tmp_5lambdaYVec = " << m_e->m_tmp_5lambdaYVec
1640  << ", m_tmp_6lambdaVVec = " << m_e->m_tmp_6lambdaVVec
1641  << ", m_tmp_7rhoVVec = " << m_e->m_tmp_7rhoVVec
1642  << ", m_tmp_8thetaVec = " << m_e->m_tmp_8thetaVec;
1643  }
1644  *m_env.subDisplayFile() << std::endl;
1645  }
1646 
1647  //********************************************************************************
1648  // Check if current 'totalValues' has any common values with previous 'totalValues' (todo)
1649  //********************************************************************************
1650  bool here_1_repeats = false;
1651  bool here_2_repeats = false;
1652  bool here_3_repeats = false;
1653  bool here_4_repeats = false;
1654  bool here_5_repeats = false;
1655  bool here_6_repeats = false;
1656  bool here_7_repeats = false;
1657  bool here_8_repeats = false;
1658  if ((m_optionsObj->m_checkAgainstPreviousSample) &&
1659  (m_like_counter == 1 )) {
1660  here_1_repeats = (m_s->m_like_previous1 == m_s->m_tmp_1lambdaEtaVec);
1661  here_2_repeats = (m_s->m_like_previous2 == m_s->m_tmp_2lambdaWVec);
1662  here_3_repeats = (m_s->m_like_previous3 == m_s->m_tmp_3rhoWVec);
1663  here_4_repeats = (m_s->m_like_previous2 == m_s->m_tmp_4lambdaSVec);
1664  if (m_thereIsExperimentalData) {
1665  here_5_repeats = (m_e->m_like_previous5 == m_e->m_tmp_5lambdaYVec);
1666  here_6_repeats = (m_e->m_like_previous6 == m_e->m_tmp_6lambdaVVec);
1667  here_7_repeats = (m_e->m_like_previous7 == m_e->m_tmp_7rhoVVec);
1668  here_8_repeats = (m_e->m_like_previous8 == m_e->m_tmp_8thetaVec);
1669  }
1670  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
1671  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::likelihoodRoutine()"
1672  << ", m_like_counter = " << m_like_counter
1673  << "\n m_like_previous1 = " << m_s->m_like_previous1
1674  << "\n m_like_previous2 = " << m_s->m_like_previous2
1675  << "\n m_like_previous3 = " << m_s->m_like_previous3;
1676  if (m_thereIsExperimentalData) {
1677  *m_env.subDisplayFile() << "\n m_like_previous5 = " << m_e->m_like_previous5
1678  << "\n m_like_previous6 = " << m_e->m_like_previous6
1679  << "\n m_like_previous7 = " << m_e->m_like_previous7
1680  << "\n m_like_previous8 = " << m_e->m_like_previous8;
1681  }
1682  *m_env.subDisplayFile() << std::endl;
1683  }
1684  if (here_1_repeats ||
1685  here_2_repeats ||
1686  here_3_repeats ||
1687  here_4_repeats ||
1688  here_5_repeats ||
1689  here_6_repeats ||
1690  here_7_repeats ||
1691  here_8_repeats) {}; // just to remove compiler warning
1692  }
1693 
1694  lnLikelihoodValue = 0.;
1695  if ((m_formCMatrix ) &&
1696  (m_cMatIsRankDefficient)) {
1697  //********************************************************************************
1698  // 'm_Cmat' is rank defficient
1699  //********************************************************************************
1700  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 3/*99*/)) {
1701  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::likelihoodRoutine(tilde)"
1702  << ", m_like_counter = " << m_like_counter
1703  << ": going through true 'm_cMatIsRankDefficient' case"
1704  << std::endl;
1705  }
1706 
1707  this->memoryCheck(57);
1708 
1709  if (m_optionsObj->m_useTildeLogicForRankDefficientC) {
1710  //********************************************************************************
1711  // Compute '\Sigma_z_tilde_hat' matrix
1712  //********************************************************************************
1713  // Fill m_Rmat_v_is, m_Smat_v_is, m_Smat_v
1714  // Fill m_Rmat_u_is, m_Smat_u_is, m_Smat_u
1715  // Fill m_Rmat_w_is, m_Smat_w_is, m_Smat_w
1716  // Fill m_Rmat_uw_is, m_Smat_uw_is, m_Smat_uw
1717  // Then fill m_tmp_Smat_z
1718  // Fill m_Rmat_extra
1719  // Then fill m_tmp_Smat_z_tilde_hat
1720  this->formSigma_z_tilde_hat(m_s->m_tmp_1lambdaEtaVec,
1721  m_s->m_tmp_2lambdaWVec,
1722  m_s->m_tmp_3rhoWVec,
1723  m_s->m_tmp_4lambdaSVec,
1724  m_e->m_tmp_5lambdaYVec,
1725  m_e->m_tmp_6lambdaVVec,
1726  m_e->m_tmp_7rhoVVec,
1727  m_e->m_tmp_8thetaVec,
1728  m_like_counter);
1729 
1730  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 3/*99*/)) {
1731  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::likelihoodRoutine(tilde)"
1732  << ", m_like_counter = " << m_like_counter
1733  << ": finished computing 'm_tmp_Smat_z_tilde_hat' =\n" << m_zt->m_tmp_Smat_z_tilde_hat
1734  << std::endl;
1735  }
1736 
1737  this->memoryCheck(58);
1738 
1739  //********************************************************************************
1740  // Compute the determinant of '\Sigma_z_tilde_hat' matrix
1741  //********************************************************************************
1742  double Smat_z_tilde_hat_lnDeterminant = m_zt->m_tmp_Smat_z_tilde_hat.lnDeterminant();
1743 
1744  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 3)) {
1745  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::likelihoodRoutine(tilde)"
1746  << ", m_like_counter = " << m_like_counter
1747  << ": finished computing 'm_tmp_Smat_z_tilde_hat->lnDeterminant()' = " << Smat_z_tilde_hat_lnDeterminant
1748  << std::endl;
1749  }
1750  lnLikelihoodValue += -0.5*Smat_z_tilde_hat_lnDeterminant;
1751 
1752  this->memoryCheck(59);
1753 
1754  //********************************************************************************
1755  // Compute Gaussian contribution
1756  //********************************************************************************
1757  double tmpValue1 = scalarProduct(m_zt->m_Zvec_tilde_hat,m_zt->m_tmp_Smat_z_tilde_hat.invertMultiply(m_zt->m_Zvec_tilde_hat)); // inversion savings
1758  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 3/*99*/)) {
1759  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::likelihoodRoutine(tilde)"
1760  << ", m_like_counter = " << m_like_counter
1761  << ": finished computing 'tmpValue1 = " << tmpValue1
1762  << std::endl;
1763  }
1764  lnLikelihoodValue += -0.5*tmpValue1;
1765 
1766  this->memoryCheck(60);
1767 
1768  //********************************************************************************
1769  // Include effect of exponent modifiers
1770  //********************************************************************************
1771  double tmpValue2 = m_st->m_a_eta_modifier_tilde*std::log(m_s->m_tmp_1lambdaEtaVec[0]) - m_st->m_b_eta_modifier_tilde*m_s->m_tmp_1lambdaEtaVec[0];
1772  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 3/*99*/)) {
1773  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::likelihoodRoutine(tilde)"
1774  << ", m_like_counter = " << m_like_counter
1775  << ": finished computing 'tmpValue2 = " << tmpValue2
1776  << std::endl;
1777  }
1778  lnLikelihoodValue += tmpValue2;
1779 
1780  this->memoryCheck(61);
1781 
1782  double tmpValue3 = m_jt->m_a_y_modifier_tilde*std::log(m_e->m_tmp_5lambdaYVec[0]) - m_jt->m_b_y_modifier_tilde*m_e->m_tmp_5lambdaYVec[0];
1783  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 3/*99*/)) {
1784  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::likelihoodRoutine(tilde)"
1785  << ", m_like_counter = " << m_like_counter
1786  << ": finished computing 'tmpValue3 = " << tmpValue3
1787  << std::endl;
1788  }
1789  lnLikelihoodValue += tmpValue3;
1790 
1791  this->memoryCheck(62);
1792  }
1793  else { // if (m_optionsObj->m_useTildeLogicForRankDefficientC)
1794  queso_error_msg("incomplete code for situation 'm_useTildeLogicForRankDefficientC == false'");
1795  }
1796  }
1797  else { // if (m_formCMatrix) && (m_cMatIsRankDefficient)
1798  //********************************************************************************
1799  // 'm_Cmat' (i) does not exist or (ii) is full rank
1800  //********************************************************************************
1801  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 99)) {
1802  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::likelihoodRoutine(non-tilde)"
1803  << ", m_like_counter = " << m_like_counter
1804  << ": going through case where C matrix (i) does not exist or (ii) is full rank"
1805  << ", m_thereIsExperimentalData = " << m_thereIsExperimentalData
1806  << std::endl;
1807  }
1808 
1809  this->memoryCheck(51);
1810 
1811  //********************************************************************************
1812  // Compute '\Sigma_z_hat' matrix
1813  //********************************************************************************
1814  // Fill m_Rmat_v_is, m_Smat_v_is, m_Smat_v
1815  // Fill m_Rmat_u_is, m_Smat_u_is, m_Smat_u
1816  // Fill m_Rmat_w_is, m_Smat_w_is, m_Smat_w
1817  // Fill m_Rmat_uw_is, m_Smat_uw_is, m_Smat_uw
1818  // Then fill m_tmp_Smat_z
1819  // Fill m_Rmat_extra
1820  // Then fill m_tmp_Smat_z_hat
1821 
1822  if (m_thereIsExperimentalData) {
1823  this->formSigma_z_hat(m_s->m_tmp_1lambdaEtaVec,
1824  m_s->m_tmp_2lambdaWVec,
1825  m_s->m_tmp_3rhoWVec,
1826  m_s->m_tmp_4lambdaSVec,
1827  m_e->m_tmp_5lambdaYVec,
1828  m_e->m_tmp_6lambdaVVec,
1829  m_e->m_tmp_7rhoVVec,
1830  m_e->m_tmp_8thetaVec,
1831  m_like_counter);
1832  }
1833  else {
1834  queso_error_msg("incomplete code for situation 'm_thereIsExperimentalData == false'");
1835 
1836  this->formSigma_z_hat(m_s->m_tmp_1lambdaEtaVec,
1837  m_s->m_tmp_2lambdaWVec,
1838  m_s->m_tmp_3rhoWVec,
1839  m_s->m_tmp_4lambdaSVec,
1840  m_like_counter);
1841  }
1842 
1843  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 99)) {
1844  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::likelihoodRoutine(non-tilde)"
1845  << ", m_like_counter = " << m_like_counter
1846  << ": finished computing 'm_tmp_Smat_z_hat' =\n" << m_z->m_tmp_Smat_z_hat
1847  << std::endl;
1848  }
1849 
1850  this->memoryCheck(52);
1851 
1852  //********************************************************************************
1853  // Compute the determinant of '\Sigma_z_hat' matrix
1854  //********************************************************************************
1855  double Smat_z_hat_lnDeterminant = m_z->m_tmp_Smat_z_hat.lnDeterminant();
1856 
1857  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 3)) {
1858  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::likelihoodRoutine(non-tilde)"
1859  << ", m_like_counter = " << m_like_counter
1860  << ": finished computing 'm_tmp_Smat_z_hat.lnDeterminant()' = " << Smat_z_hat_lnDeterminant
1861  << std::endl;
1862  }
1863  lnLikelihoodValue += -0.5*Smat_z_hat_lnDeterminant;
1864 
1865  this->memoryCheck(53);
1866 
1867  //********************************************************************************
1868  // Compute Gaussian contribution
1869  //********************************************************************************
1870  double tmpValue1 = scalarProduct(m_z->m_Zvec_hat,m_z->m_tmp_Smat_z_hat.invertMultiply(m_z->m_Zvec_hat)); // inversion savings
1871  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 3)) {
1872  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::likelihoodRoutine(non-tilde)"
1873  << ", m_like_counter = " << m_like_counter
1874  << ": finished computing 'tmpValue1 = " << tmpValue1
1875  << std::endl;
1876  }
1877  lnLikelihoodValue += -0.5*tmpValue1;
1878 
1879  this->memoryCheck(54);
1880 
1881  if (m_allOutputsAreScalar) {
1882  // Do nothing
1883  }
1884  else {
1885  //********************************************************************************
1886  // Include effect of exponent modifiers
1887  //********************************************************************************
1888  double tmpValue2 = m_s->m_a_eta_modifier*std::log(m_s->m_tmp_1lambdaEtaVec[0]) - m_s->m_b_eta_modifier*m_s->m_tmp_1lambdaEtaVec[0];
1889  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 3)) {
1890  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::likelihoodRoutine(non-tilde)"
1891  << ", m_like_counter = " << m_like_counter
1892  << ": finished computing 'tmpValue2 = " << tmpValue2
1893  << std::endl;
1894  }
1895  lnLikelihoodValue += tmpValue2;
1896 
1897  this->memoryCheck(55);
1898 
1899  double tmpValue3 = m_j->m_a_y_modifier*std::log(m_e->m_tmp_5lambdaYVec[0]) - m_j->m_b_y_modifier*m_e->m_tmp_5lambdaYVec[0];
1900  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 3)) {
1901  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::likelihoodRoutine(non-tilde)"
1902  << ", m_like_counter = " << m_like_counter
1903  << ": finished computing 'tmpValue3 = " << tmpValue3
1904  << std::endl;
1905  }
1906  lnLikelihoodValue += tmpValue3;
1907 
1908  this->memoryCheck(56);
1909 
1910  //for (unsigned int i = 0; i < m_paper_p_eta; ++i) {
1911  // for (unsigned int j = 0; j < (m_paper_p_x + m_paper_p_t); ++j) {
1912  // }
1913  //}
1914  }
1915  }
1916  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 3/*99*/)) {
1917  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::likelihoodRoutine()"
1918  << ", m_like_counter = " << m_like_counter
1919  << ": finished computing ln(likelihood)"
1920  << ", lnLikelihoodValue = " << lnLikelihoodValue
1921  << std::endl;
1922  }
1923 
1924  this->memoryCheck(63);
1925 
1926  //******************************************************************************
1927  // Prepare to return
1928  //******************************************************************************
1929  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
1930  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::likelihoodRoutine()"
1931  << ", m_like_counter = " << m_like_counter
1932  << ": starting saving current samples as previous"
1933  << std::endl;
1934  }
1935 
1936  m_t->m_like_previousTotal = totalValues;
1937  m_s->m_like_previous1 = m_s->m_tmp_1lambdaEtaVec;
1938  m_s->m_like_previous2 = m_s->m_tmp_2lambdaWVec;
1939  m_s->m_like_previous3 = m_s->m_tmp_3rhoWVec;
1940  m_s->m_like_previous2 = m_s->m_tmp_4lambdaSVec;
1941  m_e->m_like_previous5 = m_e->m_tmp_5lambdaYVec;
1942  m_e->m_like_previous6 = m_e->m_tmp_6lambdaVVec;
1943  m_e->m_like_previous7 = m_e->m_tmp_7rhoVVec;
1944  m_e->m_like_previous8 = m_e->m_tmp_8thetaVec;
1945 
1946  double totalTime = MiscGetEllapsedSeconds(&timevalBegin);
1947 
1948  //std::cout << "Leaving GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::likelihoodRoutine(), m_like_counter = " << m_like_counter << std::endl;
1949  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
1950  *m_env.subDisplayFile() << "Leaving GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::likelihoodRoutine()"
1951  << ": m_like_counter = " << m_like_counter
1952  << ", totalValues = " << totalValues
1953  << ", lnLikelihoodValue = " << lnLikelihoodValue
1954  << " after " << totalTime
1955  << " seconds"
1956  << std::endl;
1957  }
1958 
1959  if (m_env.subRank() == 0) {
1960 #if 0
1961  std::cout << "Leaving GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::likelihoodRoutine()"
1962  << ", m_like_counter = " << m_like_counter
1963  << ": totalValues = " << totalValues
1964  << ", lnLikelihoodValue = " << lnLikelihoodValue
1965  << " after " << totalTime
1966  << " seconds"
1967  << std::endl;
1968 #else
1969  //sprintf(syncMsg,"In likelihoodRoutine(), likeCount = %u, total = %11.4e, lnL = %11.4e, time = %11.4e",
1970  // m_like_counter,
1971  // totalValues[0],
1972  // lnLikelihoodValue,
1973  // totalTime);
1974  //m_env.inter0Comm().syncPrintDebugMsg(syncMsg, 0, 1000);
1975 #endif
1976  }
1977 
1978  m_env.subComm().Barrier();
1979 
1980  if (gradVector) {
1981  if (gradVector->sizeLocal() >= 4) {
1982  (*gradVector)[0] = lnLikelihoodValue;
1983  (*gradVector)[1] = 0.;
1984  (*gradVector)[2] = 0.;
1985  (*gradVector)[3] = 0.;
1986  }
1987  }
1988 
1989  if (m_like_counter == 0) {
1990  sleep(1);
1991  queso_error_msg("Exiting in likelihoodRoutine(), on purpose...");
1992  }
1993 
1994  return lnLikelihoodValue;
1995 }
1996 
1997 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>
1998 void
2000  const P_V& input_1lambdaEtaVec,
2001  const P_V& input_2lambdaWVec,
2002  const P_V& input_3rhoWVec,
2003  const P_V& input_4lambdaSVec,
2004  const P_V& input_5lambdaYVec,
2005  const P_V& input_6lambdaVVec,
2006  const P_V& input_7rhoVVec,
2007  const P_V& input_8thetaVec,
2008  unsigned int outerCounter)
2009 {
2010  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
2011  *m_env.subDisplayFile() << "Entering GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z_hat(1)"
2012  << ", outerCounter = " << outerCounter
2013  << ": m_formCMatrix = " << m_formCMatrix
2014  << ", m_optionsObj->m_useTildeLogicForRankDefficientC = " << m_optionsObj->m_useTildeLogicForRankDefficientC
2015  << ", m_Cmat = " << m_z->m_Cmat
2016  << ", m_cMatIsRankDefficient = " << m_cMatIsRankDefficient
2017  << std::endl;
2018  }
2019 
2020  queso_require_msg(!m_optionsObj->m_useTildeLogicForRankDefficientC,
2021  "'m_useTildeLogicForRankDefficientC' should be 'false'");
2022 
2023  //********************************************************************************
2024  // Form '\Sigma_z' matrix
2025  //********************************************************************************
2026  // Fill m_Rmat_v_is, m_Smat_v_is, m_Smat_v
2027  // Fill m_Rmat_u_is, m_Smat_u_is, m_Smat_u
2028  // Fill m_Rmat_w_is, m_Smat_w_is, m_Smat_w
2029  // Fill m_Rmat_uw_is, m_Smat_uw_is, m_Smat_uw
2030  this->formSigma_z(input_2lambdaWVec,
2031  input_3rhoWVec,
2032  input_4lambdaSVec,
2033  input_6lambdaVVec,
2034  input_7rhoVVec,
2035  input_8thetaVec,
2036  outerCounter);
2037 
2038  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 99)) {
2039  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z_hat(1)"
2040  << ", outerCounter = " << outerCounter
2041  << ": finished forming 'm_tmp_Smat_z'"
2042  << "\n m_tmp_Smat_z contents = " << m_z->m_tmp_Smat_z
2043  << std::endl;
2044  }
2045 
2046  if (m_env.displayVerbosity() >= 4) {
2047  double sigmaZLnDeterminant = m_z->m_tmp_Smat_z.lnDeterminant();
2048  unsigned int sigmaZRank = m_z->m_tmp_Smat_z.rank(0.,1.e-8 ); // todo: should be an option
2049  unsigned int sigmaZRank14 = m_z->m_tmp_Smat_z.rank(0.,1.e-14);
2050  if (m_env.subDisplayFile()) {
2051  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z_hat(1)"
2052  << ", outerCounter = " << outerCounter
2053  << ", m_tmp_Smat_z.numRowsLocal() = " << m_z->m_tmp_Smat_z.numRowsLocal()
2054  << ", m_tmp_Smat_z.numCols() = " << m_z->m_tmp_Smat_z.numCols()
2055  << ", m_tmp_Smat_z.lnDeterminant() = " << sigmaZLnDeterminant
2056  << ", m_tmp_Smat_z.rank(0.,1.e-8) = " << sigmaZRank
2057  << ", m_tmp_Smat_z.rank(0.,1.e-14) = " << sigmaZRank14
2058  << std::endl;
2059  }
2060  }
2061 
2062  std::set<unsigned int> tmpSet;
2063  tmpSet.insert(m_env.subId());
2064  if (outerCounter == 1) {
2065  if (m_optionsObj->m_dataOutputAllowedSet.find(m_env.subId()) != m_optionsObj->m_dataOutputAllowedSet.end()) {
2066  m_z->m_tmp_Smat_z.subWriteContents("Sigma_z",
2067  "mat_Sigma_z",
2068  "m",
2069  tmpSet);
2070  }
2071  }
2072 
2073  //********************************************************************************
2074  // Form '\Sigma_{extra}' matrix
2075  //********************************************************************************
2076  if (m_allOutputsAreScalar) {
2077  // ppp
2078  }
2079  else {
2080  m_z->m_tmp_Smat_extra.cwSet(0.);
2081  m_z->m_tmp_Smat_extra.cwSet( 0, 0,(1./input_5lambdaYVec [0]) * *m_j->m_Bop_t__Wy__Bop__inv);
2082  m_z->m_tmp_Smat_extra.cwSet(m_j->m_Bop_t__Wy__Bop__inv->numRowsLocal(),m_j->m_Bop_t__Wy__Bop__inv->numCols(),(1./input_1lambdaEtaVec[0]) * *m_s->m_Kt_K_inv );
2083  }
2084 
2085  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 99)) {
2086  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z_hat(1)"
2087  << ", outerCounter = " << outerCounter
2088  << ": finished forming 'm_tmp_Smat_extra'"
2089  << ", input_5lambdaYVec[0] = " << input_5lambdaYVec[0]
2090  << ", input_1lambdaEtaVec[0] = " << input_1lambdaEtaVec[0]
2091  << "\n m_Bop_t__Wy__Bop__inv = " << *m_j->m_Bop_t__Wy__Bop__inv
2092  << "\n m_Kt_K_inv = " << *m_s->m_Kt_K_inv
2093  << "\n m_tmp_Smat_extra contents = " << m_z->m_tmp_Smat_extra
2094  << std::endl;
2095  }
2096 
2097  if (m_env.displayVerbosity() >= 4) {
2098  double extraLnDeterminant = m_z->m_tmp_Smat_extra.lnDeterminant();
2099  unsigned int extraRank = m_z->m_tmp_Smat_extra.rank(0.,1.e-8 ); // todo: should be an option
2100  unsigned int extraRank14 = m_z->m_tmp_Smat_extra.rank(0.,1.e-14);
2101  if (m_env.subDisplayFile()) {
2102  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z_hat(1)"
2103  << ", outerCounter = " << outerCounter
2104  << ", m_tmp_Smat_extra.numRowsLocal() = " << m_z->m_tmp_Smat_extra.numRowsLocal()
2105  << ", m_tmp_Smat_extra.numCols() = " << m_z->m_tmp_Smat_extra.numCols()
2106  << ", m_tmp_Smat_extra.lnDeterminant() = " << extraLnDeterminant
2107  << ", m_tmp_Smat_extra.rank(0.,1.e-8) = " << extraRank
2108  << ", m_tmp_Smat_extra.rank(0.,1.e-14) = " << extraRank14
2109  << std::endl;
2110  }
2111  }
2112 
2113  if (outerCounter == 1) {
2114  if (m_optionsObj->m_dataOutputAllowedSet.find(m_env.subId()) != m_optionsObj->m_dataOutputAllowedSet.end()) {
2115  m_z->m_tmp_Smat_extra.subWriteContents("Sigma_extra",
2116  "mat_Sigma_extra",
2117  "m",
2118  tmpSet);
2119  }
2120  }
2121 
2122  //********************************************************************************
2123  // Compute '\Sigma_z_hat' matrix
2124  //********************************************************************************
2125  m_z->m_tmp_Smat_z_hat = m_z->m_tmp_Smat_z + m_z->m_tmp_Smat_extra;
2126 
2127  if (m_env.displayVerbosity() >= 4) {
2128  double zHatLnDeterminant = m_z->m_tmp_Smat_z_hat.lnDeterminant();
2129  unsigned int zHatRank = m_z->m_tmp_Smat_z_hat.rank(0.,1.e-8 ); // todo: should be an option
2130  unsigned int zHatRank14 = m_z->m_tmp_Smat_z_hat.rank(0.,1.e-14);
2131  if (m_env.subDisplayFile()) {
2132  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z_hat(1)"
2133  << ", outerCounter = " << outerCounter
2134  << ", m_tmp_Smat_z_hat.numRowsLocal() = " << m_z->m_tmp_Smat_z_hat.numRowsLocal()
2135  << ", m_tmp_Smat_z_hat.numCols() = " << m_z->m_tmp_Smat_z_hat.numCols()
2136  << ", m_tmp_Smat_z_hat.lnDeterminant() = " << zHatLnDeterminant
2137  << ", m_tmp_Smat_z_hat.rank(0.,1.e-8) = " << zHatRank
2138  << ", m_tmp_Smat_z_hat.rank(0.,1.e-14) = " << zHatRank14
2139  << std::endl;
2140  }
2141  }
2142 
2143  if (outerCounter == 1) {
2144  if (m_optionsObj->m_dataOutputAllowedSet.find(m_env.subId()) != m_optionsObj->m_dataOutputAllowedSet.end()) {
2145  m_z->m_tmp_Smat_z_hat.subWriteContents("Sigma_z_hat",
2146  "mat_Sigma_z_hat",
2147  "m",
2148  tmpSet);
2149  }
2150  }
2151 
2152  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
2153  *m_env.subDisplayFile() << "Leaving GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z_hat(1)"
2154  << ", outerCounter = " << outerCounter
2155  << std::endl;
2156  }
2157 
2158  return;
2159 }
2160 
2161 // Case with no experimental data // checar
2162 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>
2163 void
2165  const P_V& input_1lambdaEtaVec,
2166  const P_V& input_2lambdaWVec,
2167  const P_V& input_3rhoWVec,
2168  const P_V& input_4lambdaSVec,
2169  unsigned int outerCounter)
2170 {
2171  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
2172  *m_env.subDisplayFile() << "Entering GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z_hat(2)"
2173  << ", outerCounter = " << outerCounter
2174  << ": m_formCMatrix = " << m_formCMatrix
2175  << ", m_optionsObj->m_useTildeLogicForRankDefficientC = " << m_optionsObj->m_useTildeLogicForRankDefficientC
2176  << ", m_Cmat = " << m_z->m_Cmat
2177  << ", m_cMatIsRankDefficient = " << m_cMatIsRankDefficient
2178  << std::endl;
2179  }
2180 
2181  queso_require_msg(!m_optionsObj->m_useTildeLogicForRankDefficientC,
2182  "'m_useTildeLogicForRankDefficientC' should be 'false'");
2183 
2184  //********************************************************************************
2185  // Form '\Sigma_z' matrix
2186  //********************************************************************************
2187  // Fill m_Rmat_v_is, m_Smat_v_is, m_Smat_v
2188  // Fill m_Rmat_u_is, m_Smat_u_is, m_Smat_u
2189  // Fill m_Rmat_w_is, m_Smat_w_is, m_Smat_w
2190  // Fill m_Rmat_uw_is, m_Smat_uw_is, m_Smat_uw
2191  this->formSigma_z(input_2lambdaWVec,
2192  input_3rhoWVec,
2193  input_4lambdaSVec,
2194  outerCounter);
2195 
2196  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 99)) {
2197  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z_hat(2)"
2198  << ", outerCounter = " << outerCounter
2199  << ": finished forming 'm_tmp_Smat_z'"
2200  << "\n m_tmp_Smat_z contents = " << m_z->m_tmp_Smat_z
2201  << std::endl;
2202  }
2203 
2204  if (m_env.displayVerbosity() >= 4) {
2205  double sigmaZLnDeterminant = m_z->m_tmp_Smat_z.lnDeterminant();
2206  unsigned int sigmaZRank = m_z->m_tmp_Smat_z.rank(0.,1.e-8 ); // todo: should be an option
2207  unsigned int sigmaZRank14 = m_z->m_tmp_Smat_z.rank(0.,1.e-14);
2208  if (m_env.subDisplayFile()) {
2209  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z_hat(2)"
2210  << ", outerCounter = " << outerCounter
2211  << ", m_tmp_Smat_z.numRowsLocal() = " << m_z->m_tmp_Smat_z.numRowsLocal()
2212  << ", m_tmp_Smat_z.numCols() = " << m_z->m_tmp_Smat_z.numCols()
2213  << ", m_tmp_Smat_z.lnDeterminant() = " << sigmaZLnDeterminant
2214  << ", m_tmp_Smat_z.rank(0.,1.e-8) = " << sigmaZRank
2215  << ", m_tmp_Smat_z.rank(0.,1.e-14) = " << sigmaZRank14
2216  << std::endl;
2217  }
2218  }
2219 
2220 #if 0 // Case with no experimental data // checar
2221  //********************************************************************************
2222  // Form '\Sigma_{extra}' matrix
2223  //********************************************************************************
2224  if (m_allOutputsAreScalar) {
2225  // ppp
2226  }
2227  else {
2228  m_z->m_tmp_Smat_extra.cwSet(0.);
2229  m_z->m_tmp_Smat_extra.cwSet( 0, 0,(1./input_5lambdaYVec [0]) * *m_j->m_Bop_t__Wy__Bop__inv);
2230  m_z->m_tmp_Smat_extra.cwSet(m_j->m_Bop_t__Wy__Bop__inv->numRowsLocal(),m_j->m_Bop_t__Wy__Bop__inv->numCols(),(1./input_1lambdaEtaVec[0]) * *m_s->m_Kt_K_inv );
2231  }
2232 
2233  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 99)) {
2234  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z_hat(2)"
2235  << ", outerCounter = " << outerCounter
2236  << ": finished forming 'm_tmp_Smat_extra'"
2237  << ", input_5lambdaYVec[0] = " << input_5lambdaYVec[0]
2238  << ", input_1lambdaEtaVec[0] = " << input_1lambdaEtaVec[0]
2239  << "\n m_Bop_t__Wy__Bop__inv = " << *m_j->m_Bop_t__Wy__Bop__inv
2240  << "\n m_Kt_K_inv = " << *m_s->m_Kt_K_inv
2241  << "\n m_tmp_Smat_extra contents = " << m_z->m_tmp_Smat_extra
2242  << std::endl;
2243  }
2244 
2245  if (m_env.displayVerbosity() >= 4) {
2246  double extraLnDeterminant = m_z->m_tmp_Smat_extra.lnDeterminant();
2247  unsigned int extraRank = m_z->m_tmp_Smat_extra.rank(0.,1.e-8 ); // todo: should be an option
2248  unsigned int extraRank14 = m_z->m_tmp_Smat_extra.rank(0.,1.e-14);
2249  if (m_env.subDisplayFile()) {
2250  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z_hat(2)"
2251  << ", outerCounter = " << outerCounter
2252  << ", m_tmp_Smat_extra.numRowsLocal() = " << m_z->m_tmp_Smat_extra.numRowsLocal()
2253  << ", m_tmp_Smat_extra.numCols() = " << m_z->m_tmp_Smat_extra.numCols()
2254  << ", m_tmp_Smat_extra.lnDeterminant() = " << extraLnDeterminant
2255  << ", m_tmp_Smat_extra.rank(0.,1.e-8) = " << extraRank
2256  << ", m_tmp_Smat_extra.rank(0.,1.e-14) = " << extraRank14
2257  << std::endl;
2258  }
2259  }
2260 
2261  //********************************************************************************
2262  // Compute '\Sigma_z_hat' matrix
2263  //********************************************************************************
2264  m_z->m_tmp_Smat_z_hat = m_z->m_tmp_Smat_z + m_z->m_tmp_Smat_extra;
2265 
2266  if (m_env.displayVerbosity() >= 4) {
2267  double zHatLnDeterminant = m_z->m_tmp_Smat_z_hat.lnDeterminant();
2268  unsigned int zHatRank = m_z->m_tmp_Smat_z_hat.rank(0.,1.e-8 ); // todo: should be an option
2269  unsigned int zHatRank14 = m_z->m_tmp_Smat_z_hat.rank(0.,1.e-14);
2270  if (m_env.subDisplayFile()) {
2271  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z_hat(2)"
2272  << ", outerCounter = " << outerCounter
2273  << ", m_tmp_Smat_z_hat.numRowsLocal() = " << m_z->m_tmp_Smat_z_hat.numRowsLocal()
2274  << ", m_tmp_Smat_z_hat.numCols() = " << m_z->m_tmp_Smat_z_hat.numCols()
2275  << ", m_tmp_Smat_z_hat.lnDeterminant() = " << zHatLnDeterminant
2276  << ", m_tmp_Smat_z_hat.rank(0.,1.e-8) = " << zHatRank
2277  << ", m_tmp_Smat_z_hat.rank(0.,1.e-14) = " << zHatRank14
2278  << std::endl;
2279  }
2280  }
2281 #endif
2282  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
2283  *m_env.subDisplayFile() << "Leaving GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z_hat(2)"
2284  << ", outerCounter = " << outerCounter
2285  << std::endl;
2286  }
2287 
2288  return;
2289 }
2290 
2291 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>
2292 void
2294  const P_V& input_1lambdaEtaVec,
2295  const P_V& input_2lambdaWVec,
2296  const P_V& input_3rhoWVec,
2297  const P_V& input_4lambdaSVec,
2298  const P_V& input_5lambdaYVec,
2299  const P_V& input_6lambdaVVec,
2300  const P_V& input_7rhoVVec,
2301  const P_V& input_8thetaVec,
2302  unsigned int outerCounter)
2303 {
2304  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
2305  *m_env.subDisplayFile() << "Entering GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z_tilde_hat()"
2306  << ", outerCounter = " << outerCounter
2307  << ": m_formCMatrix = " << m_formCMatrix
2308  << ", m_optionsObj->m_useTildeLogicForRankDefficientC = " << m_optionsObj->m_useTildeLogicForRankDefficientC
2309  << ", m_Cmat = " << m_z->m_Cmat
2310  << ", m_cMatIsRankDefficient = " << m_cMatIsRankDefficient
2311  << std::endl;
2312  }
2313 
2314  queso_require_msg(m_formCMatrix, "'m_Cmat' should have been requested");
2315 
2316  queso_require_msg(m_z->m_Cmat, "'m_Cmat' should have been formed");
2317 
2318  queso_require_msg(m_cMatIsRankDefficient, "'m_Cmat' should be rank defficient");
2319 
2320  queso_require_msg(m_optionsObj->m_useTildeLogicForRankDefficientC, "'m_useTildeLogicForRankDefficientC' should be 'true'");
2321 
2322  //********************************************************************************
2323  // Form '\Sigma_z' matrix
2324  //********************************************************************************
2325  // Fill m_Rmat_v_is, m_Smat_v_is, m_Smat_v
2326  // Fill m_Rmat_u_is, m_Smat_u_is, m_Smat_u
2327  // Fill m_Rmat_w_is, m_Smat_w_is, m_Smat_w
2328  // Fill m_Rmat_uw_is, m_Smat_uw_is, m_Smat_uw
2329  this->formSigma_z(input_2lambdaWVec,
2330  input_3rhoWVec,
2331  input_4lambdaSVec,
2332  input_6lambdaVVec,
2333  input_7rhoVVec,
2334  input_8thetaVec,
2335  outerCounter);
2336 
2337  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 99)) {
2338  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z_tilde_hat()"
2339  << ", outerCounter = " << outerCounter
2340  << ": finished forming 'm_tmp_Smat_z'"
2341  << "\n m_tmp_Smat_z contents = " << m_z->m_tmp_Smat_z
2342  << std::endl;
2343  }
2344 
2345  if (m_env.displayVerbosity() >= 4) {
2346  double sigmaZLnDeterminant = m_z->m_tmp_Smat_z.lnDeterminant();
2347  unsigned int sigmaZRank = m_z->m_tmp_Smat_z.rank(0.,1.e-8 ); // todo: should be an option
2348  unsigned int sigmaZRank14 = m_z->m_tmp_Smat_z.rank(0.,1.e-14);
2349  if (m_env.subDisplayFile()) {
2350  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z_tilde_hat()"
2351  << ", outerCounter = " << outerCounter
2352  << ", m_tmp_Smat_z.numRowsLocal() = " << m_z->m_tmp_Smat_z.numRowsLocal()
2353  << ", m_tmp_Smat_z.numCols() = " << m_z->m_tmp_Smat_z.numCols()
2354  << ", m_tmp_Smat_z.lnDeterminant() = " << sigmaZLnDeterminant
2355  << ", m_tmp_Smat_z.rank(0.,1.e-8) = " << sigmaZRank
2356  << ", m_tmp_Smat_z.rank(0.,1.e-14) = " << sigmaZRank14
2357  << std::endl;
2358  }
2359  }
2360 
2361  //********************************************************************************
2362  // Form 'L . \Sigma_z . L^T' matrix
2363  //********************************************************************************
2364  m_zt->m_tmp_Smat_z_tilde = m_zt->m_Lmat * (m_z->m_tmp_Smat_z * m_zt->m_Lmat_t);
2365 
2366  if (m_env.displayVerbosity() >= 4) {
2367  double sigmaZTildeLnDeterminant = m_zt->m_tmp_Smat_z_tilde.lnDeterminant();
2368  unsigned int sigmaZTildeRank = m_zt->m_tmp_Smat_z_tilde.rank(0.,1.e-8 ); // todo: should be an option
2369  unsigned int sigmaZTildeRank14 = m_zt->m_tmp_Smat_z_tilde.rank(0.,1.e-14);
2370  if (m_env.subDisplayFile()) {
2371  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z_tilde_hat()"
2372  << ", outerCounter = " << outerCounter
2373  << ", m_tmp_Smat_z_tilde->numRowsLocal() = " << m_zt->m_tmp_Smat_z_tilde.numRowsLocal()
2374  << ", m_tmp_Smat_z_tilde->numCols() = " << m_zt->m_tmp_Smat_z_tilde.numCols()
2375  << ", m_tmp_Smat_z_tilde->lnDeterminant() = " << sigmaZTildeLnDeterminant
2376  << ", m_tmp_Smat_z_tilde->rank(0.,1.e-8) = " << sigmaZTildeRank
2377  << ", m_tmp_Smat_z_tilde->rank(0.,1.e-14) = " << sigmaZTildeRank14
2378  << std::endl;
2379  }
2380  }
2381 
2382  //********************************************************************************
2383  // Form '\Sigma_{extra}_tilde' matrix
2384  //********************************************************************************
2385  m_zt->m_tmp_Smat_extra_tilde.cwSet(0.);
2386  m_zt->m_tmp_Smat_extra_tilde.cwSet( 0, 0,(1./input_5lambdaYVec [0]) * (m_jt->m_Btildet_Wy_Btilde_inv));
2387  m_zt->m_tmp_Smat_extra_tilde.cwSet(m_jt->m_Btildet_Wy_Btilde_inv.numRowsLocal(),m_jt->m_Btildet_Wy_Btilde_inv.numCols(),(1./input_1lambdaEtaVec[0]) * (m_st->m_Ktildet_Ktilde_inv) );
2388 
2389  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 99)) {
2390  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z_tilde_hat()"
2391  << ", outerCounter = " << outerCounter
2392  << ": finished forming 'm_tmp_Smat_extra_tilde'"
2393  << ", input_5lambdaYVec[0] = " << input_5lambdaYVec[0]
2394  << ", input_1lambdaEtaVec[0] = " << input_1lambdaEtaVec[0]
2395  << "\n m_Btildet_Wy_Btilde_inv = " << m_jt->m_Btildet_Wy_Btilde_inv
2396  << "\n m_Ktildet_Ktilde_inv = " << m_st->m_Ktildet_Ktilde_inv
2397  << "\n m_tmp_Smat_extra_tilde contents = " << m_zt->m_tmp_Smat_extra_tilde
2398  << std::endl;
2399  }
2400 
2401  if (m_env.displayVerbosity() >= 4) {
2402  double extraTildeLnDeterminant = m_zt->m_tmp_Smat_extra_tilde.lnDeterminant();
2403  unsigned int extraTildeRank = m_zt->m_tmp_Smat_extra_tilde.rank(0.,1.e-8 ); // todo: should be an option
2404  unsigned int extraTildeRank14 = m_zt->m_tmp_Smat_extra_tilde.rank(0.,1.e-14);
2405  if (m_env.subDisplayFile()) {
2406  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z_tilde_hat()"
2407  << ", outerCounter = " << outerCounter
2408  << ", m_tmp_Smat_extra_tilde.numRowsLocal() = " << m_zt->m_tmp_Smat_extra_tilde.numRowsLocal()
2409  << ", m_tmp_Smat_extra_tilde.numCols() = " << m_zt->m_tmp_Smat_extra_tilde.numCols()
2410  << ", m_tmp_Smat_extra_tilde.lnDeterminant() = " << extraTildeLnDeterminant
2411  << ", m_tmp_Smat_extra_tilde.rank(0.,1.e-8) = " << extraTildeRank
2412  << ", m_tmp_Smat_extra_tilde.rank(0.,1.e-14) = " << extraTildeRank14
2413  << std::endl;
2414  }
2415  }
2416 
2417  //********************************************************************************
2418  // Compute '\Sigma_z_tilde_hat' matrix
2419  //********************************************************************************
2420  m_zt->m_tmp_Smat_z_tilde_hat = m_zt->m_tmp_Smat_z_tilde + m_zt->m_tmp_Smat_extra_tilde;
2421 
2422  if (m_env.displayVerbosity() >= 4) {
2423  double zTildeHatLnDeterminant = m_zt->m_tmp_Smat_z_tilde_hat.lnDeterminant();
2424  unsigned int zTildeHatRank = m_zt->m_tmp_Smat_z_tilde_hat.rank(0.,1.e-8 ); // todo: should be an option
2425  unsigned int zTildeHatRank14 = m_zt->m_tmp_Smat_z_tilde_hat.rank(0.,1.e-14);
2426  if (m_env.subDisplayFile()) {
2427  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z_tilde_hat()"
2428  << ", outerCounter = " << outerCounter
2429  << ", m_tmp_Smat_z_tilde_hat->numRowsLocal() = " << m_zt->m_tmp_Smat_z_tilde_hat.numRowsLocal()
2430  << ", m_tmp_Smat_z_tilde_hat->numCols() = " << m_zt->m_tmp_Smat_z_tilde_hat.numCols()
2431  << ", m_tmp_Smat_z_tilde_hat->lnDeterminant() = " << zTildeHatLnDeterminant
2432  << ", m_tmp_Smat_z_tilde_hat->rank(0.,1.e-8) = " << zTildeHatRank
2433  << ", m_tmp_Smat_z_tilde_hat->rank(0.,1.e-14) = " << zTildeHatRank14
2434  << std::endl;
2435  }
2436  }
2437 
2438  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
2439  *m_env.subDisplayFile() << "Leaving GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z_tilde_hat()"
2440  << ", outerCounter = " << outerCounter
2441  << std::endl;
2442  }
2443 
2444  return;
2445 }
2446 
2447 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>
2448 void
2450  const P_V& input_2lambdaWVec,
2451  const P_V& input_3rhoWVec,
2452  const P_V& input_4lambdaSVec,
2453  const P_V& input_6lambdaVVec,
2454  const P_V& input_7rhoVVec,
2455  const P_V& input_8thetaVec,
2456  unsigned int outerCounter)
2457 {
2458  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
2459  *m_env.subDisplayFile() << "Entering GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z(1)"
2460  << ", outerCounter = " << outerCounter
2461  << std::endl;
2462  }
2463 
2464  std::set<unsigned int> tmpSet;
2465  tmpSet.insert(m_env.subId());
2466 
2467  this->memoryCheck(90);
2468 
2469  // Fill m_Rmat_v_is, m_Smat_v_is, m_Smat_v
2470  // Fill m_Rmat_u_is, m_Smat_u_is, m_Smat_u
2471  // Fill m_Rmat_w_is, m_Smat_w_is, m_Smat_w
2472  // Fill m_Rmat_uw_is, m_Smat_uw_is, m_Smat_uw
2473  //********************************************************************************
2474  // Compute '\Sigma' matrices
2475  // \Sigma_v:
2476  // --> Uses page 576-b
2477  // --> Uses R(all x's;\rho_v_i[size p_x]) and formula (2) to "each pair" of experimental input settings
2478  // --> \Sigma_v_i = (1/\lambda_v_i).I_|G_i| [X] R(...) is (n.|G_i|) x (n.|G_i|), i = 1,...,F
2479  // --> \Sigma_v is (n.p_delta) x (n.p_delta)
2480  // \Sigma_u:
2481  // --> Uses page 576-b
2482  // --> Uses R(all x's,one \theta;\rho_w_i[size p_x+p_t]) and formula (1) to "each pair" of experimental input settings (correlations depend only on x dimensions)
2483  // --> \Sigma_u_i = (1/\lambda_w_i).R(...) is n x n, i = 1,...,p_eta
2484  // --> \Sigma_u is (n.p_eta) x (n.p_eta)
2485  // \Sigma_w:
2486  // --> Uses page 575-a
2487  // --> Uses R(all x^*'s,all t^*'s;\rho_w_i[size p_x+p_t]) and formula (1) to "each pair" of input settings in the design
2488  // --> \Sigma_w_i = (1/\lambda_w_i).R(...) is m x m, i = 1,...,p_eta
2489  // --> \Sigma_w is (m.p_eta) x (m.p_eta)
2490  // \Sigma_u,w:
2491  // --> Uses page 577-a
2492  // --> Uses R(all x's,one \theta,all x^*'s,all t^*'s;\rho_w_i[size p_x+p_t]) and formula (1)
2493  // --> \Sigma_u,w_i = (1/\lambda_w_i).R(...) is n x m, i = 1,...,p_eta
2494  // --> \Sigma_u,w is (n.p_eta) x (m.p_eta)
2495  //********************************************************************************
2496  unsigned int initialPos = 0;
2497  for (unsigned int i = 0; i < m_e->m_Smat_v_i_spaces.size(); ++i) {
2498  input_7rhoVVec.cwExtract(initialPos,m_e->m_tmp_rho_v_vec);
2499  initialPos += m_e->m_tmp_rho_v_vec.sizeLocal();
2500  m_e->m_Rmat_v_is[i]->cwSet(0.);
2501  this->fillR_formula2_for_Sigma_v(m_e->m_paper_xs_standard,
2502  m_e->m_tmp_rho_v_vec,
2503  *(m_e->m_Rmat_v_is[i]), // IMPORTANT-28
2504  outerCounter);
2505 
2506  m_e->m_Smat_v_is[i]->cwSet(0.);
2507  m_e->m_Smat_v_is[i]->fillWithTensorProduct(0,0,*(m_e->m_Imat_v_is[i]),*(m_e->m_Rmat_v_is[i]),true,true); // IMPORTANT-28
2508  *(m_e->m_Smat_v_is[i]) *= (1./input_6lambdaVVec[i]);
2509  }
2510  m_e->m_Smat_v.cwSet(0.);
2511  m_e->m_Smat_v.fillWithBlocksDiagonally(0,0,m_e->m_Smat_v_is,true,true);
2512  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
2513  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z(1)"
2514  << ", outerCounter = " << outerCounter
2515  << ": finished instantiating 'm_Smat_v'"
2516  << std::endl;
2517  }
2518 
2519  if (outerCounter == 1) {
2520  if (m_optionsObj->m_dataOutputAllowedSet.find(m_env.subId()) != m_optionsObj->m_dataOutputAllowedSet.end()) {
2521  m_e->m_Smat_v.subWriteContents("Sigma_v",
2522  "mat_Sigma_v",
2523  "m",
2524  tmpSet);
2525  }
2526  }
2527 
2528  this->memoryCheck(91);
2529 
2530  initialPos = 0;
2531  for (unsigned int i = 0; i < m_j->m_Smat_u_is.size(); ++i) {
2532  input_3rhoWVec.cwExtract(initialPos,m_s->m_tmp_rho_w_vec);
2533  initialPos += m_s->m_tmp_rho_w_vec.sizeLocal();
2534  m_j->m_Rmat_u_is[i]->cwSet(0.);
2535  this->fillR_formula1_for_Sigma_u(m_e->m_paper_xs_standard,
2536  input_8thetaVec,
2537  m_s->m_tmp_rho_w_vec,
2538  *(m_j->m_Rmat_u_is[i]),
2539  outerCounter);
2540 
2541  m_j->m_Smat_u_is[i]->cwSet(0.);
2542  *(m_j->m_Smat_u_is[i]) = (1./input_2lambdaWVec[i]) * *(m_j->m_Rmat_u_is[i]);
2543  for (unsigned int j = 0; j < m_j->m_Smat_u_is[i]->numRowsLocal(); ++j) {
2544  (*(m_j->m_Smat_u_is[i]))(j,j) += 1/m_s->m_tmp_4lambdaSVec[i]; // lambda_s
2545  }
2546  }
2547  m_j->m_Smat_u.cwSet(0.);
2548  m_j->m_Smat_u.fillWithBlocksDiagonally(0,0,m_j->m_Smat_u_is,true,true);
2549  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
2550  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z(1)"
2551  << ", outerCounter = " << outerCounter
2552  << ": finished instantiating 'm_Smat_u'"
2553  << std::endl;
2554  }
2555 
2556  if (outerCounter == 1) {
2557  if (m_optionsObj->m_dataOutputAllowedSet.find(m_env.subId()) != m_optionsObj->m_dataOutputAllowedSet.end()) {
2558  m_j->m_Smat_u.subWriteContents("Sigma_u",
2559  "mat_Sigma_u",
2560  "m",
2561  tmpSet);
2562  }
2563  }
2564 
2565  this->memoryCheck(92);
2566 
2567  initialPos = 0;
2568  for (unsigned int i = 0; i < m_s->m_Smat_w_is.size(); ++i) {
2569  input_3rhoWVec.cwExtract(initialPos,m_s->m_tmp_rho_w_vec);
2570  initialPos += m_s->m_tmp_rho_w_vec.sizeLocal();
2571  m_s->m_Rmat_w_is[i]->cwSet(0.); // This matrix is square: m_paper_m X m_paper_m
2572  this->fillR_formula1_for_Sigma_w(m_s->m_paper_xs_asterisks_standard, // IMPORTANT
2573  m_s->m_paper_ts_asterisks_standard,
2574  m_s->m_tmp_rho_w_vec,
2575  *(m_s->m_Rmat_w_is[i]),
2576  outerCounter);
2577 
2578  m_s->m_Smat_w_is[i]->cwSet(0.);
2579  *(m_s->m_Smat_w_is[i]) = (1./input_2lambdaWVec[i]) * *(m_s->m_Rmat_w_is[i]);
2580 
2581  if ((outerCounter == 1) &&
2582  (i == 0)) {
2583  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
2584  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z(1)"
2585  << ", outerCounter = " << outerCounter
2586  << ": during the calculation of 'm_Smat_w'"
2587  << "\n m_s->m_paper_xs_asterisks_standard.size() = " << m_s->m_paper_xs_asterisks_standard.size();
2588  for (unsigned int tmpId = 0; tmpId < m_s->m_paper_xs_asterisks_standard.size(); ++tmpId) {
2589  *m_env.subDisplayFile() << "\n m_s->m_paper_xs_asterisks_standard[" << tmpId << "] = "
2590  << *(m_s->m_paper_xs_asterisks_standard[tmpId])
2591  << std::endl;
2592  }
2593  *m_env.subDisplayFile() << "\n m_s->m_paper_ts_asterisks_standard.size() = " << m_s->m_paper_ts_asterisks_standard.size();
2594  for (unsigned int tmpId = 0; tmpId < m_s->m_paper_ts_asterisks_standard.size(); ++tmpId) {
2595  *m_env.subDisplayFile() << "\n m_s->m_paper_ts_asterisks_standard[" << tmpId << "] = "
2596  << *(m_s->m_paper_ts_asterisks_standard[tmpId])
2597  << std::endl;
2598  }
2599  *m_env.subDisplayFile() << "\n m_s->m_tmp_rho_w_vec = " << m_s->m_tmp_rho_w_vec
2600  << "\n (*(m_s->m_Rmat_w_is[i=0]))(0,0) = " << (*(m_s->m_Rmat_w_is[i]))(0,0)
2601  << "\n input_2lambdaWVec[i=0] = " << input_2lambdaWVec[i]
2602  << "\n (*(m_s->m_Smat_w_is[i=0]))(0,0) = " << (*(m_s->m_Smat_w_is[i]))(0,0)
2603  << "\n m_s->m_tmp_4lambdaSVec[i=0] = " << m_s->m_tmp_4lambdaSVec[i]
2604  << std::endl;
2605  }
2606  }
2607 
2608  for (unsigned int j = 0; j < m_s->m_Smat_w_is[i]->numRowsLocal(); ++j) {
2609  (*(m_s->m_Smat_w_is[i]))(j,j) += 1/m_s->m_tmp_4lambdaSVec[i]; // lambda_s
2610  }
2611 
2612  if ((outerCounter == 1) &&
2613  (i == 0)) {
2614  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
2615  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z(1)"
2616  << ", outerCounter = " << outerCounter
2617  << ": during the calculation of 'm_Smat_w'"
2618  << "\n (*(m_s->m_Smat_w_is[i=0]))(0,0) = " << (*(m_s->m_Smat_w_is[i]))(0,0)
2619  << std::endl;
2620  }
2621  }
2622  }
2623  m_s->m_Smat_w.cwSet(0.);
2624  m_s->m_Smat_w.fillWithBlocksDiagonally(0,0,m_s->m_Smat_w_is,true,true);
2625  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
2626  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z(1)"
2627  << ", outerCounter = " << outerCounter
2628  << ": finished instantiating 'm_Smat_w'"
2629  << std::endl;
2630  }
2631 
2632  if (outerCounter == 1) {
2633  if (m_optionsObj->m_dataOutputAllowedSet.find(m_env.subId()) != m_optionsObj->m_dataOutputAllowedSet.end()) {
2634  m_s->m_Smat_w.subWriteContents("Sigma_w",
2635  "mat_Sigma_w",
2636  "m",
2637  tmpSet);
2638  }
2639  }
2640 
2641  this->memoryCheck(93);
2642 
2643  initialPos = 0;
2644  for (unsigned int i = 0; i < m_j->m_Smat_uw_is.size(); ++i) {
2645  input_3rhoWVec.cwExtract(initialPos,m_s->m_tmp_rho_w_vec);
2646  initialPos += m_s->m_tmp_rho_w_vec.sizeLocal();
2647  m_j->m_Rmat_uw_is[i]->cwSet(0.);
2648  this->fillR_formula1_for_Sigma_uw(m_e->m_paper_xs_standard,
2649  input_8thetaVec,
2650  m_s->m_paper_xs_asterisks_standard,
2651  m_s->m_paper_ts_asterisks_standard,
2652  m_s->m_tmp_rho_w_vec,*(m_j->m_Rmat_uw_is[i]),
2653  outerCounter);
2654 
2655  m_j->m_Smat_uw_is[i]->cwSet(0.);
2656  *(m_j->m_Smat_uw_is[i]) = (1./input_2lambdaWVec[i]) * *(m_j->m_Rmat_uw_is[i]);
2657  }
2658  m_j->m_Smat_uw.cwSet(0.);
2659  m_j->m_Smat_uw.fillWithBlocksDiagonally(0,0,m_j->m_Smat_uw_is,true,true);
2660  m_j->m_Smat_uw_t.fillWithTranspose(0,0,m_j->m_Smat_uw,true,true);
2661  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
2662  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z(1)"
2663  << ", outerCounter = " << outerCounter
2664  << ": finished instantiating 'm_j->m_Smat_uw'"
2665  << std::endl;
2666  }
2667 
2668  if (outerCounter == 1) {
2669  if (m_optionsObj->m_dataOutputAllowedSet.find(m_env.subId()) != m_optionsObj->m_dataOutputAllowedSet.end()) {
2670  m_j->m_Smat_uw.subWriteContents("Sigma_uw",
2671  "mat_Sigma_uw",
2672  "m",
2673  tmpSet);
2674  }
2675  }
2676 
2677  this->memoryCheck(94);
2678 
2679  //********************************************************************************
2680  // Form '\Sigma_z' matrix
2681  //********************************************************************************
2682  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
2683  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z(1)"
2684  << ", outerCounter = " << outerCounter
2685  << ": m_tmp_Smat_z.numRowsLocal() = " << m_z->m_tmp_Smat_z.numRowsLocal()
2686  << ", m_tmp_Smat_z.numCols() = " << m_z->m_tmp_Smat_z.numCols()
2687  << ", m_Smat_v.numRowsLocal() = " << m_e->m_Smat_v.numRowsLocal()
2688  << ", m_Smat_v.numCols() = " << m_e->m_Smat_v.numCols()
2689  << ", m_Smat_u.numRowsLocal() = " << m_j->m_Smat_u.numRowsLocal()
2690  << ", m_Smat_u.numCols() = " << m_j->m_Smat_u.numCols()
2691  << ", m_Smat_w.numRowsLocal() = " << m_s->m_Smat_w.numRowsLocal()
2692  << ", m_Smat_w.numCols() = " << m_s->m_Smat_w.numCols()
2693  << ", m_Smat_uw.numRowsLocal() = " << m_j->m_Smat_uw.numRowsLocal()
2694  << ", m_Smat_uw.numCols() = " << m_j->m_Smat_uw.numCols()
2695  << ", m_Smat_v_i_spaces.size() = " << m_e->m_Smat_v_i_spaces.size()
2696  << ", m_Smat_u_is.size() = " << m_j->m_Smat_u_is.size()
2697  << ", m_Smat_w_is.size() = " << m_s->m_Smat_w_is.size()
2698  << std::endl;
2699  }
2700 
2701  this->memoryCheck(95);
2702 
2703  m_z->m_tmp_Smat_z.cwSet(0.);
2704  if (m_allOutputsAreScalar) {
2705  // ppp
2706  }
2707  else {
2708  m_z->m_tmp_Smat_z.cwSet(0,0,m_e->m_Smat_v);
2709  m_z->m_tmp_Smat_z.cwSet(m_e->m_Smat_v.numRowsLocal(), m_e->m_Smat_v.numCols(), m_j->m_Smat_u);
2710  m_z->m_tmp_Smat_z.cwSet(m_e->m_Smat_v.numRowsLocal(), m_e->m_Smat_v.numCols()+m_j->m_Smat_u.numCols(),m_j->m_Smat_uw);
2711  m_z->m_tmp_Smat_z.cwSet(m_e->m_Smat_v.numRowsLocal()+m_j->m_Smat_u.numRowsLocal(),m_e->m_Smat_v.numCols(), m_j->m_Smat_uw_t);
2712  m_z->m_tmp_Smat_z.cwSet(m_e->m_Smat_v.numRowsLocal()+m_j->m_Smat_u.numRowsLocal(),m_e->m_Smat_v.numCols()+m_j->m_Smat_u.numCols(),m_s->m_Smat_w);
2713  }
2714 
2715  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
2716  *m_env.subDisplayFile() << "Leaving GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z(1)"
2717  << ", outerCounter = " << outerCounter
2718  << std::endl;
2719  }
2720 
2721  return;
2722 }
2723 
2724 // Case with no experimental data // checar
2725 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>
2726 void
2728  const P_V& input_2lambdaWVec,
2729  const P_V& input_3rhoWVec,
2730  const P_V& input_4lambdaSVec,
2731  unsigned int outerCounter)
2732 {
2733  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
2734  *m_env.subDisplayFile() << "Entering GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z(2)"
2735  << ", outerCounter = " << outerCounter
2736  << std::endl;
2737  }
2738 
2739  std::set<unsigned int> tmpSet;
2740  tmpSet.insert(m_env.subId());
2741 
2742  this->memoryCheck(90);
2743 
2744  // Fill m_Rmat_v_is, m_Smat_v_is, m_Smat_v
2745  // Fill m_Rmat_u_is, m_Smat_u_is, m_Smat_u
2746  // Fill m_Rmat_w_is, m_Smat_w_is, m_Smat_w
2747  // Fill m_Rmat_uw_is, m_Smat_uw_is, m_Smat_uw
2748  //********************************************************************************
2749  // Compute '\Sigma' matrices
2750  // \Sigma_v:
2751  // --> Uses page 576-b
2752  // --> Uses R(all x's;\rho_v_i[size p_x]) and formula (2) to "each pair" of experimental input settings
2753  // --> \Sigma_v_i = (1/\lambda_v_i).I_|G_i| [X] R(...) is (n.|G_i|) x (n.|G_i|), i = 1,...,F
2754  // --> \Sigma_v is (n.p_delta) x (n.p_delta)
2755  // \Sigma_u:
2756  // --> Uses page 576-b
2757  // --> Uses R(all x's,one \theta;\rho_w_i[size p_x+p_t]) and formula (1) to "each pair" of experimental input settings (correlations depend only on x dimensions)
2758  // --> \Sigma_u_i = (1/\lambda_w_i).R(...) is n x n, i = 1,...,p_eta
2759  // --> \Sigma_u is (n.p_eta) x (n.p_eta)
2760  // \Sigma_w:
2761  // --> Uses page 575-a
2762  // --> Uses R(all x^*'s,all t^*'s;\rho_w_i[size p_x+p_t]) and formula (1) to "each pair" of input settings in the design
2763  // --> \Sigma_w_i = (1/\lambda_w_i).R(...) is m x m, i = 1,...,p_eta
2764  // --> \Sigma_w is (m.p_eta) x (m.p_eta)
2765  // \Sigma_u,w:
2766  // --> Uses page 577-a
2767  // --> Uses R(all x's,one \theta,all x^*'s,all t^*'s;\rho_w_i[size p_x+p_t]) and formula (1)
2768  // --> \Sigma_u,w_i = (1/\lambda_w_i).R(...) is n x m, i = 1,...,p_eta
2769  // --> \Sigma_u,w is (n.p_eta) x (m.p_eta)
2770  //********************************************************************************
2771 #if 0 // Case with no experimental data // checar
2772  unsigned int initialPos = 0;
2773  for (unsigned int i = 0; i < m_e->m_Smat_v_i_spaces.size(); ++i) {
2774  input_7rhoVVec.cwExtract(initialPos,m_e->m_tmp_rho_v_vec);
2775  initialPos += m_e->m_tmp_rho_v_vec.sizeLocal();
2776  m_e->m_Rmat_v_is[i]->cwSet(0.);
2777  this->fillR_formula2_for_Sigma_v(m_e->m_paper_xs_standard,
2778  m_e->m_tmp_rho_v_vec,
2779  *(m_e->m_Rmat_v_is[i]),
2780  outerCounter);
2781 
2782  m_e->m_Smat_v_is[i]->cwSet(0.);
2783  m_e->m_Smat_v_is[i]->fillWithTensorProduct(0,0,*(m_e->m_Imat_v_is[i]),*(m_e->m_Rmat_v_is[i]),true,true);
2784  *(m_e->m_Smat_v_is[i]) *= (1./input_6lambdaVVec[i]);
2785  }
2786  m_e->m_Smat_v.cwSet(0.);
2787  m_e->m_Smat_v.fillWithBlocksDiagonally(0,0,m_e->m_Smat_v_is,true,true);
2788  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
2789  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z(2)"
2790  << ", outerCounter = " << outerCounter
2791  << ": finished instantiating 'm_Smat_v'"
2792  << std::endl;
2793  }
2794 
2795  if (outerCounter == 1) {
2796  if (m_optionsObj->m_dataOutputAllowedSet.find(m_env.subId()) != m_optionsObj->m_dataOutputAllowedSet.end()) {
2797  m_e->m_Smat_v.subWriteContents("Sigma_v",
2798  "mat_Sigma_v",
2799  "m",
2800  tmpSet);
2801  }
2802  }
2803  this->memoryCheck(91);
2804 
2805  initialPos = 0;
2806  for (unsigned int i = 0; i < m_j->m_Smat_u_is.size(); ++i) {
2807  input_3rhoWVec.cwExtract(initialPos,m_s->m_tmp_rho_w_vec);
2808  initialPos += m_s->m_tmp_rho_w_vec.sizeLocal();
2809  m_j->m_Rmat_u_is[i]->cwSet(0.);
2810  this->fillR_formula1_for_Sigma_u(m_e->m_paper_xs_standard,
2811  input_8thetaVec,
2812  m_s->m_tmp_rho_w_vec,
2813  *(m_j->m_Rmat_u_is[i]),
2814  outerCounter);
2815 
2816  m_j->m_Smat_u_is[i]->cwSet(0.);
2817  *(m_j->m_Smat_u_is[i]) = (1./input_2lambdaWVec[i]) * *(m_j->m_Rmat_u_is[i]);
2818  for (unsigned int j = 0; j < m_j->m_Smat_u_is[i]->numRowsLocal(); ++j) {
2819  (*(m_j->m_Smat_u_is[i]))(j,j) += 1/m_s->m_tmp_4lambdaSVec[i]; // lambda_s
2820  }
2821  }
2822  m_j->m_Smat_u.cwSet(0.);
2823  m_j->m_Smat_u.fillWithBlocksDiagonally(0,0,m_j->m_Smat_u_is,true,true);
2824  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
2825  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z(2)"
2826  << ", outerCounter = " << outerCounter
2827  << ": finished instantiating 'm_Smat_u'"
2828  << std::endl;
2829  }
2830 
2831  if (outerCounter == 1) {
2832  if (m_optionsObj->m_dataOutputAllowedSet.find(m_env.subId()) != m_optionsObj->m_dataOutputAllowedSet.end()) {
2833  m_j->m_Smat_u.subWriteContents("Sigma_u",
2834  "mat_Sigma_u",
2835  "m",
2836  tmpSet);
2837  }
2838  }
2839 
2840  this->memoryCheck(92);
2841 
2842  initialPos = 0;
2843  for (unsigned int i = 0; i < m_s->m_Smat_w_is.size(); ++i) {
2844  input_3rhoWVec.cwExtract(initialPos,m_s->m_tmp_rho_w_vec);
2845  initialPos += m_s->m_tmp_rho_w_vec.sizeLocal();
2846  m_s->m_Rmat_w_is[i]->cwSet(0.); // This matrix is square: m_paper_m X m_paper_m
2847  this->fillR_formula1_for_Sigma_w(m_s->m_paper_xs_asterisks_standard,
2848  m_s->m_paper_ts_asterisks_standard,
2849  m_s->m_tmp_rho_w_vec,
2850  *(m_s->m_Rmat_w_is[i]),
2851  outerCounter);
2852 
2853  m_s->m_Smat_w_is[i]->cwSet(0.);
2854  *(m_s->m_Smat_w_is[i]) = (1./input_2lambdaWVec[i]) * *(m_s->m_Rmat_w_is[i]);
2855  for (unsigned int j = 0; j < m_s->m_Smat_w_is[i]->numRowsLocal(); ++j) {
2856  (*(m_s->m_Smat_w_is[i]))(j,j) += 1/m_s->m_tmp_4lambdaSVec[i]; // lambda_s
2857  }
2858  }
2859  m_s->m_Smat_w.cwSet(0.);
2860  m_s->m_Smat_w.fillWithBlocksDiagonally(0,0,m_s->m_Smat_w_is,true,true);
2861  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
2862  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z(2)"
2863  << ", outerCounter = " << outerCounter
2864  << ": finished instantiating 'm_Smat_w'"
2865  << std::endl;
2866  }
2867 
2868  if (outerCounter == 1) {
2869  if (m_optionsObj->m_dataOutputAllowedSet.find(m_env.subId()) != m_optionsObj->m_dataOutputAllowedSet.end()) {
2870  m_s->m_Smat_w.subWriteContents("Sigma_w",
2871  "mat_Sigma_w",
2872  "m",
2873  tmpSet);
2874  }
2875  }
2876 
2877  this->memoryCheck(93);
2878 
2879  initialPos = 0;
2880  for (unsigned int i = 0; i < m_j->m_Smat_uw_is.size(); ++i) {
2881  input_3rhoWVec.cwExtract(initialPos,m_s->m_tmp_rho_w_vec);
2882  initialPos += m_s->m_tmp_rho_w_vec.sizeLocal();
2883  m_j->m_Rmat_uw_is[i]->cwSet(0.);
2884  this->fillR_formula1_for_Sigma_uw(m_e->m_paper_xs_standard,
2885  input_8thetaVec,
2886  m_s->m_paper_xs_asterisks_standard,
2887  m_s->m_paper_ts_asterisks_standard,
2888  m_s->m_tmp_rho_w_vec,*(m_j->m_Rmat_uw_is[i]),
2889  outerCounter);
2890 
2891  m_j->m_Smat_uw_is[i]->cwSet(0.);
2892  *(m_j->m_Smat_uw_is[i]) = (1./input_2lambdaWVec[i]) * *(m_j->m_Rmat_uw_is[i]);
2893  }
2894  m_j->m_Smat_uw.cwSet(0.);
2895  m_j->m_Smat_uw.fillWithBlocksDiagonally(0,0,m_j->m_Smat_uw_is,true,true);
2896  m_j->m_Smat_uw_t.fillWithTranspose(0,0,m_j->m_Smat_uw,true,true);
2897  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
2898  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z(2)"
2899  << ", outerCounter = " << outerCounter
2900  << ": finished instantiating 'm_j->m_Smat_uw'"
2901  << std::endl;
2902  }
2903 
2904  if (outerCounter == 1) {
2905  if (m_optionsObj->m_dataOutputAllowedSet.find(m_env.subId()) != m_optionsObj->m_dataOutputAllowedSet.end()) {
2906  m_j->m_Smat_uw.subWriteContents("Sigma_uw",
2907  "mat_Sigma_uw",
2908  "m",
2909  tmpSet);
2910  }
2911  }
2912 #endif
2913  this->memoryCheck(94);
2914 
2915  //********************************************************************************
2916  // Form '\Sigma_z' matrix
2917  //********************************************************************************
2918  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
2919  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z(2)"
2920  << ", outerCounter = " << outerCounter
2921  << ": m_tmp_Smat_z.numRowsLocal() = " << m_z->m_tmp_Smat_z.numRowsLocal()
2922  << ", m_tmp_Smat_z.numCols() = " << m_z->m_tmp_Smat_z.numCols()
2923  << ", m_Smat_v.numRowsLocal() = " << m_e->m_Smat_v.numRowsLocal()
2924  << ", m_Smat_v.numCols() = " << m_e->m_Smat_v.numCols()
2925  << ", m_Smat_u.numRowsLocal() = " << m_j->m_Smat_u.numRowsLocal()
2926  << ", m_Smat_u.numCols() = " << m_j->m_Smat_u.numCols()
2927  << ", m_Smat_w.numRowsLocal() = " << m_s->m_Smat_w.numRowsLocal()
2928  << ", m_Smat_w.numCols() = " << m_s->m_Smat_w.numCols()
2929  << ", m_Smat_uw.numRowsLocal() = " << m_j->m_Smat_uw.numRowsLocal()
2930  << ", m_Smat_uw.numCols() = " << m_j->m_Smat_uw.numCols()
2931  << ", m_Smat_v_i_spaces.size() = " << m_e->m_Smat_v_i_spaces.size()
2932  << ", m_Smat_u_is.size() = " << m_j->m_Smat_u_is.size()
2933  << ", m_Smat_w_is.size() = " << m_s->m_Smat_w_is.size()
2934  << std::endl;
2935  }
2936 
2937  this->memoryCheck(95);
2938 
2939  m_z->m_tmp_Smat_z.cwSet(0.);
2940  if (m_allOutputsAreScalar) {
2941  // ppp
2942  }
2943  else {
2944  m_z->m_tmp_Smat_z.cwSet(0,0,m_e->m_Smat_v);
2945  m_z->m_tmp_Smat_z.cwSet(m_e->m_Smat_v.numRowsLocal(), m_e->m_Smat_v.numCols(), m_j->m_Smat_u);
2946  m_z->m_tmp_Smat_z.cwSet(m_e->m_Smat_v.numRowsLocal(), m_e->m_Smat_v.numCols()+m_j->m_Smat_u.numCols(),m_j->m_Smat_uw);
2947  m_z->m_tmp_Smat_z.cwSet(m_e->m_Smat_v.numRowsLocal()+m_j->m_Smat_u.numRowsLocal(),m_e->m_Smat_v.numCols(), m_j->m_Smat_uw_t);
2948  m_z->m_tmp_Smat_z.cwSet(m_e->m_Smat_v.numRowsLocal()+m_j->m_Smat_u.numRowsLocal(),m_e->m_Smat_v.numCols()+m_j->m_Smat_u.numCols(),m_s->m_Smat_w);
2949  }
2950 
2951  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
2952  *m_env.subDisplayFile() << "Leaving GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_z(2)"
2953  << ", outerCounter = " << outerCounter
2954  << std::endl;
2955  }
2956 
2957  return;
2958 }
2959 
2960 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>
2961 void
2963  const P_V& input_1lambdaEtaVec,
2964  const P_V& input_2lambdaWVec,
2965  const P_V& input_3rhoWVec,
2966  const P_V& input_4lambdaSVec,
2967  const P_V& input_8thetaVec,
2968  unsigned int outerCounter)
2969 {
2970  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
2971  *m_env.subDisplayFile() << "Entering GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_w_hat()"
2972  << ", outerCounter = " << outerCounter
2973  << std::endl;
2974  }
2975 
2976  unsigned int initialPos = 0;
2977  for (unsigned int i = 0; i < m_s->m_Smat_w_is.size(); ++i) {
2978  input_3rhoWVec.cwExtract(initialPos,m_s->m_tmp_rho_w_vec);
2979  initialPos += m_s->m_tmp_rho_w_vec.sizeLocal();
2980  m_s->m_Rmat_w_is[i]->cwSet(0.); // This matrix is square: m_paper_m X m_paper_m
2981  this->fillR_formula1_for_Sigma_w(m_s->m_paper_xs_asterisks_standard,
2982  m_s->m_paper_ts_asterisks_standard,
2983  m_s->m_tmp_rho_w_vec,
2984  *(m_s->m_Rmat_w_is[i]),
2985  outerCounter);
2986 
2987  m_s->m_Smat_w_is[i]->cwSet(0.);
2988  *(m_s->m_Smat_w_is[i]) = (1./input_2lambdaWVec[i]) * *(m_s->m_Rmat_w_is[i]);
2989  for (unsigned int j = 0; j < m_s->m_Smat_w_is[i]->numRowsLocal(); ++j) {
2990  (*(m_s->m_Smat_w_is[i]))(j,j) += 1/m_s->m_tmp_4lambdaSVec[i]; // lambda_s
2991  }
2992  }
2993  m_s->m_Smat_w.cwSet(0.);
2994  m_s->m_Smat_w.fillWithBlocksDiagonally(0,0,m_s->m_Smat_w_is,true,true);
2995  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
2996  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_w_hat()"
2997  << ", outerCounter = " << outerCounter
2998  << ": finished instantiating 'm_Smat_w'"
2999  << std::endl;
3000  }
3001 
3002  if (m_allOutputsAreScalar) {
3003  // ppp
3004  }
3005  else {
3006  m_s->m_Smat_w_hat = m_s->m_Smat_w + (1./input_1lambdaEtaVec[0]) * (*m_s->m_Kt_K_inv);
3007  }
3008 
3009  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
3010  *m_env.subDisplayFile() << "Leaving GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::formSigma_w_hat()"
3011  << ", outerCounter = " << outerCounter
3012  << std::endl;
3013  }
3014 
3015  return;
3016 }
3017 
3018 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>
3019 void
3021  const std::vector<const S_V* >& xVecs,
3022  const P_V& rho_v_vec,
3023  D_M& Rmat,
3024  unsigned int outerCounter)
3025 {
3026  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
3027  *m_env.subDisplayFile() << "Entering GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::fillR_formula2_for_Sigma_v()"
3028  << ", outerCounter = " << outerCounter
3029  << std::endl;
3030  }
3031 
3032  queso_require_equal_to_msg(xVecs.size(), m_e->m_paper_n, "xVecs.size() is wrong");
3033  for (unsigned int i = 0; i < xVecs.size(); ++i) {
3034  queso_require_equal_to_msg(xVecs[i]->sizeLocal(), m_s->m_paper_p_x, "xVecs[i]->sizeLocal() is wrong");
3035  }
3036  queso_require_msg(!((rho_v_vec.sizeLocal() == 0) || (rho_v_vec.sizeLocal() > m_s->m_paper_p_x)), "rho_v_vec.sizeLocal() is wrong");
3037  queso_require_equal_to_msg(Rmat.numRowsLocal(), m_e->m_paper_n, "Rmat.numRowsLocal() is wrong");
3038  queso_require_equal_to_msg(Rmat.numCols(), m_e->m_paper_n, "Rmat.numCols() is wrong");
3039 
3040  S_V vecI(*(xVecs[0]));
3041  S_V vecJ(*(xVecs[0]));
3042  for (unsigned int i = 0; i < m_e->m_paper_n; ++i) {
3043  vecI = *(xVecs[i]);
3044  for (unsigned int j = 0; j < m_e->m_paper_n; ++j) {
3045  vecJ = *(xVecs[j]);
3046  Rmat(i,j) = 1.;
3047  for (unsigned int k = 0; k < m_s->m_paper_p_x; ++k) {
3048  double diffTerm = vecI[k] - vecJ[k];
3049  Rmat(i,j) *= std::pow(rho_v_vec[k],4.*diffTerm*diffTerm);
3050  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 99)) {
3051  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::fillR_formula2_for_Sigma_v()"
3052  << ", outerCounter = " << outerCounter
3053  << ": i = " << i
3054  << ", j = " << j
3055  << ", k = " << k
3056  << ", vecI[k] = " << vecI[k]
3057  << ", vecJ[k] = " << vecJ[k]
3058  << ", diffTerm = " << diffTerm
3059  << ", rho_v_vec[k] = " << rho_v_vec[k]
3060  << std::endl;
3061  }
3062  }
3063  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 99)) {
3064  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::fillR_formula2_for_Sigma_v()"
3065  << ", outerCounter = " << outerCounter
3066  << ": i = " << i
3067  << ", j = " << j
3068  << ", Rmat(i,j) = " << Rmat(i,j)
3069  << std::endl;
3070  }
3071  }
3072  }
3073 
3074  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
3075  *m_env.subDisplayFile() << "Leaving GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::fillR_formula2_for_Sigma_v()"
3076  << ", outerCounter = " << outerCounter
3077  << std::endl;
3078  }
3079 
3080  return;
3081 }
3082 
3083 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>
3084 void
3086  const std::vector<const S_V* >& xVecs,
3087  const P_V& tVec,
3088  const P_V& rho_w_vec,
3089  D_M& Rmat,
3090  unsigned int outerCounter)
3091 {
3092  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
3093  *m_env.subDisplayFile() << "Entering GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::fillR_formula1_for_Sigma_u()"
3094  << ", outerCounter = " << outerCounter
3095  << std::endl;
3096  }
3097 
3098  queso_require_equal_to_msg(xVecs.size(), m_e->m_paper_n, "xVecs.size() is wrong");
3099  for (unsigned int i = 0; i < xVecs.size(); ++i) {
3100  queso_require_equal_to_msg(xVecs[i]->sizeLocal(), m_s->m_paper_p_x, "xVecs[i]->sizeLocal() is wrong");
3101  }
3102  queso_require_equal_to_msg(tVec.sizeLocal(), m_s->m_paper_p_t, "tVec.sizeLocal() is wrong");
3103  queso_require_equal_to_msg(rho_w_vec.sizeLocal(), (m_s->m_paper_p_x+m_s->m_paper_p_t), "rho_w_vec.sizeLocal() is wrong");
3104  queso_require_equal_to_msg(Rmat.numRowsLocal(), m_e->m_paper_n, "Rmat.numRowsLocal() is wrong");
3105  queso_require_equal_to_msg(Rmat.numCols(), m_e->m_paper_n, "Rmat.numCols() is wrong");
3106 
3107  S_V vecI(*(xVecs[0]));
3108  S_V vecJ(*(xVecs[0]));
3109  for (unsigned int i = 0; i < m_e->m_paper_n; ++i) {
3110  vecI = *(xVecs[i]);
3111  for (unsigned int j = 0; j < m_e->m_paper_n; ++j) {
3112  vecJ = *(xVecs[j]);
3113  Rmat(i,j) = 1.;
3114  for (unsigned int k = 0; k < m_s->m_paper_p_x; ++k) { // Yes, just 'p_x', instead of 'p_x + p_t', since 't' is the same for all pairs
3115  double diffTerm = vecI[k] - vecJ[k];
3116  Rmat(i,j) *= std::pow(rho_w_vec[k],4.*diffTerm*diffTerm);
3117  }
3118  }
3119  }
3120 
3121  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
3122  *m_env.subDisplayFile() << "Leaving GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::fillR_formula1_for_Sigma_u()"
3123  << ", outerCounter = " << outerCounter
3124  << std::endl;
3125  }
3126 
3127  return;
3128 }
3129 
3130 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>
3131 void
3133  const std::vector<const S_V* >& xVecs,
3134  const std::vector<const P_V* >& tVecs,
3135  const P_V& rho_w_vec,
3136  D_M& Rmat,
3137  unsigned int outerCounter)
3138 {
3139  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
3140  *m_env.subDisplayFile() << "Entering GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::fillR_formula1_for_Sigma_w()"
3141  << ", outerCounter = " << outerCounter
3142  << std::endl;
3143  }
3144 
3145  queso_require_equal_to_msg(xVecs.size(), m_s->m_paper_m, "xVecs.size() is wrong");
3146  for (unsigned int i = 0; i < xVecs.size(); ++i) {
3147  queso_require_equal_to_msg(xVecs[i]->sizeLocal(), m_s->m_paper_p_x, "xVecs[i]->sizeLocal() is wrong");
3148  }
3149  queso_require_equal_to_msg(tVecs.size(), m_s->m_paper_m, "tVecs.size() is wrong");
3150  for (unsigned int i = 0; i < tVecs.size(); ++i) {
3151  queso_require_equal_to_msg(tVecs[i]->sizeLocal(), m_s->m_paper_p_t, "tVecs[i]->sizeLocal() is wrong");
3152  }
3153  queso_require_equal_to_msg(rho_w_vec.sizeLocal(), (m_s->m_paper_p_x+m_s->m_paper_p_t), "rho_w_vec.sizeLocal() is wrong");
3154  queso_require_equal_to_msg(Rmat.numRowsLocal(), m_s->m_paper_m, "Rmat.numRowsLocal() is wrong");
3155  queso_require_equal_to_msg(Rmat.numCols(), m_s->m_paper_m, "Rmat.numCols() is wrong");
3156 
3157  S_V xVecI(*(xVecs[0]));
3158  S_V xVecJ(*(xVecs[0]));
3159  P_V tVecI(*(tVecs[0]));
3160  P_V tVecJ(*(tVecs[0]));
3161  for (unsigned int i = 0; i < m_s->m_paper_m; ++i) {
3162  xVecI = *(xVecs[i]);
3163  tVecI = *(tVecs[i]);
3164  for (unsigned int j = 0; j < m_s->m_paper_m; ++j) {
3165  xVecJ = *(xVecs[j]);
3166  tVecJ = *(tVecs[j]);
3167  Rmat(i,j) = 1.;
3168  for (unsigned int k = 0; k < m_s->m_paper_p_x; ++k) {
3169  double diffTerm = xVecI[k] - xVecJ[k];
3170  Rmat(i,j) *= std::pow(rho_w_vec[k],4.*diffTerm*diffTerm);
3171  }
3172  for (unsigned int k = 0; k < m_s->m_paper_p_t; ++k) {
3173  double diffTerm = tVecI[k] - tVecJ[k];
3174  Rmat(i,j) *= std::pow(rho_w_vec[m_s->m_paper_p_x+k],4.*diffTerm*diffTerm);
3175  }
3176  }
3177  }
3178 
3179  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
3180  *m_env.subDisplayFile() << "Leaving GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::fillR_formula1_for_Sigma_w()"
3181  << ", outerCounter = " << outerCounter
3182  << std::endl;
3183  }
3184 
3185  return;
3186 }
3187 
3188 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>
3189 void
3191  const std::vector<const S_V* >& xVecs1,
3192  const P_V& tVec1,
3193  const std::vector<const S_V* >& xVecs2,
3194  const std::vector<const P_V* >& tVecs2,
3195  const P_V& rho_w_vec,
3196  D_M& Rmat,
3197  unsigned int outerCounter)
3198 {
3199  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
3200  *m_env.subDisplayFile() << "Entering GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::fillR_formula1_for_Sigma_uw()"
3201  << ", outerCounter = " << outerCounter
3202  << std::endl;
3203  }
3204 
3205  queso_require_equal_to_msg(xVecs1.size(), m_e->m_paper_n, "xVecs1.size() is wrong");
3206  for (unsigned int i = 0; i < xVecs1.size(); ++i) {
3207  queso_require_equal_to_msg(xVecs1[i]->sizeLocal(), m_s->m_paper_p_x, "xVecs1[i]->sizeLocal() is wrong");
3208  }
3209  queso_require_equal_to_msg(tVec1.sizeLocal(), m_s->m_paper_p_t, "tVec1.sizeLocal() is wrong");
3210  queso_require_equal_to_msg(xVecs2.size(), m_s->m_paper_m, "xVecs2.size() is wrong");
3211  for (unsigned int i = 0; i < xVecs2.size(); ++i) {
3212  queso_require_equal_to_msg(xVecs2[i]->sizeLocal(), m_s->m_paper_p_x, "xVecs2[i]->sizeLocal() is wrong");
3213  }
3214  queso_require_equal_to_msg(tVecs2.size(), m_s->m_paper_m, "tVecs2.size() is wrong");
3215  for (unsigned int i = 0; i < tVecs2.size(); ++i) {
3216  queso_require_equal_to_msg(tVecs2[i]->sizeLocal(), m_s->m_paper_p_t, "tVecs2[i]->sizeLocal() is wrong");
3217  }
3218  queso_require_equal_to_msg(rho_w_vec.sizeLocal(), (m_s->m_paper_p_x+m_s->m_paper_p_t), "rho_w_vec.sizeLocal() is wrong");
3219  queso_require_equal_to_msg(Rmat.numRowsLocal(), m_e->m_paper_n, "Rmat.numRowsLocal() is wrong");
3220  queso_require_equal_to_msg(Rmat.numCols(), m_s->m_paper_m, "Rmat.numCols() is wrong");
3221 
3222  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
3223  *m_env.subDisplayFile() << "In GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::fillR_formula1_for_Sigma_uw()"
3224  << ", outerCounter = " << outerCounter
3225  << std::endl;
3226  }
3227 
3228  S_V xVecI(*(xVecs1[0]));
3229  S_V xVecJ(*(xVecs2[0]));
3230  P_V tVecI(tVec1);
3231  P_V tVecJ(*(tVecs2[0]));
3232  for (unsigned int i = 0; i < m_e->m_paper_n; ++i) {
3233  xVecI = *(xVecs1[i]);
3234  tVecI = tVec1;
3235  for (unsigned int j = 0; j < m_s->m_paper_m; ++j) {
3236  xVecJ = *(xVecs2[j]);
3237  tVecJ = *(tVecs2[j]);
3238  Rmat(i,j) = 1.;
3239  for (unsigned int k = 0; k < m_s->m_paper_p_x; ++k) {
3240  double diffTerm = xVecI[k] - xVecJ[k];
3241  Rmat(i,j) *= std::pow(rho_w_vec[k],4.*diffTerm*diffTerm);
3242  }
3243  for (unsigned int k = 0; k < m_s->m_paper_p_t; ++k) {
3244  double diffTerm = tVecI[k] - tVecJ[k];
3245  Rmat(i,j) *= std::pow(rho_w_vec[m_s->m_paper_p_x+k],4.*diffTerm*diffTerm);
3246  }
3247  }
3248  }
3249 
3250  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
3251  *m_env.subDisplayFile() << "Leaving GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::fillR_formula1_for_Sigma_uw()"
3252  << ", outerCounter = " << outerCounter
3253  << std::endl;
3254  }
3255 
3256  return;
3257 }
3258 
3259 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>
3260 void
3262  const std::vector<const S_V* >& xVecs1,
3263  const std::vector<const P_V* >& tVecs1,
3264  const S_V& xVec2,
3265  const P_V& tVec2,
3266  const P_V& rho_v_vec,
3267  D_M& Rmat,
3268  unsigned int outerCounter)
3269 {
3270  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
3271  *m_env.subDisplayFile() << "Entering GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::fillR_formula2_for_Sigma_v_hat_v_asterisk()"
3272  << ", outerCounter = " << outerCounter
3273  << std::endl;
3274  }
3275 
3276  queso_require_equal_to_msg(xVecs1.size(), m_s->m_paper_m, "xVecs1.size() is wrong");
3277  for (unsigned int i = 0; i < xVecs1.size(); ++i) {
3278  queso_require_equal_to_msg(xVecs1[i]->sizeLocal(), m_s->m_paper_p_x, "xVecs1[i]->sizeLocal() is wrong");
3279  }
3280  queso_require_equal_to_msg(tVecs1.size(), m_s->m_paper_m, "tVecs1.size() is wrong");
3281  for (unsigned int i = 0; i < tVecs1.size(); ++i) {
3282  queso_require_equal_to_msg(tVecs1[i]->sizeLocal(), m_s->m_paper_p_t, "tVecs1[i]->sizeLocal() is wrong");
3283  }
3284  queso_require_equal_to_msg(xVec2.sizeLocal(), m_s->m_paper_p_x, "xVec2.sizeLocal() is wrong");
3285  queso_require_equal_to_msg(tVec2.sizeLocal(), m_s->m_paper_p_t, "tVec2.sizeLocal() is wrong");
3286  queso_require_msg(!((rho_v_vec.sizeLocal() == 0) || (rho_v_vec.sizeLocal() > m_s->m_paper_p_x)), "rho_v_vec.sizeLocal() is wrong");
3287  queso_require_equal_to_msg(Rmat.numRowsLocal(), m_e->m_paper_n, "Rmat.numRowsLocal() is wrong");
3288  queso_require_equal_to_msg(Rmat.numCols(), 1, "Rmat.numCols() is wrong");
3289 
3290  S_V xVecI(*(xVecs1[0]));
3291  S_V xVecJ(xVec2);
3292  P_V tVecI(*(tVecs1[0]));
3293  P_V tVecJ(tVec2);
3294  for (unsigned int i = 0; i < m_e->m_paper_n; ++i) {
3295  xVecI = *(xVecs1[i]);
3296  tVecI = *(tVecs1[i]);
3297  for (unsigned int j = 0; j < 1; ++j) { // Yes, only '1'
3298  xVecJ = xVec2;
3299  tVecJ = tVec2;
3300  Rmat(i,j) = 1.;
3301  // checar
3302  for (unsigned int k = 0; k < m_s->m_paper_p_x; ++k) {
3303  double diffTerm = xVecI[k] - xVecJ[k];
3304  Rmat(i,j) *= std::pow(rho_v_vec[k],4.*diffTerm*diffTerm);
3305  }
3306  }
3307  }
3308  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
3309  *m_env.subDisplayFile() << "Leaving GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::fillR_formula2_for_Sigma_v_hat_v_asterisk()"
3310  << ", outerCounter = " << outerCounter
3311  << std::endl;
3312  }
3313 
3314  return;
3315 }
3316 
3317 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>
3318 void
3320  const std::vector<const S_V* >& xVecs1,
3321  const std::vector<const P_V* >& tVecs1,
3322  const S_V& xVec2,
3323  const P_V& tVec2,
3324  const P_V& rho_w_vec,
3325  D_M& Rmat,
3326  unsigned int outerCounter)
3327 {
3328  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
3329  *m_env.subDisplayFile() << "Entering GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::fillR_formula1_for_Sigma_u_hat_u_asterisk()"
3330  << ", outerCounter = " << outerCounter
3331  << std::endl;
3332  }
3333  queso_require_equal_to_msg(xVecs1.size(), m_s->m_paper_m, "xVecs1.size() is wrong");
3334  for (unsigned int i = 0; i < xVecs1.size(); ++i) {
3335  queso_require_equal_to_msg(xVecs1[i]->sizeLocal(), m_s->m_paper_p_x, "xVecs1[i]->sizeLocal() is wrong");
3336  }
3337  queso_require_equal_to_msg(tVecs1.size(), m_s->m_paper_m, "tVecs1.size() is wrong");
3338  for (unsigned int i = 0; i < tVecs1.size(); ++i) {
3339  queso_require_equal_to_msg(tVecs1[i]->sizeLocal(), m_s->m_paper_p_t, "tVecs1[i]->sizeLocal() is wrong");
3340  }
3341  queso_require_equal_to_msg(xVec2.sizeLocal(), m_s->m_paper_p_x, "xVec2.sizeLocal() is wrong");
3342  queso_require_equal_to_msg(tVec2.sizeLocal(), m_s->m_paper_p_t, "tVec2.sizeLocal() is wrong");
3343  queso_require_equal_to_msg(rho_w_vec.sizeLocal(), (m_s->m_paper_p_x+m_s->m_paper_p_t), "rho_w_vec.sizeLocal() is wrong");
3344  queso_require_equal_to_msg(Rmat.numRowsLocal(), m_s->m_paper_m, "Rmat.numRowsLocal() is wrong");
3345  queso_require_equal_to_msg(Rmat.numCols(), 1, "Rmat.numCols() is wrong");
3346 
3347  S_V xVecI(*(xVecs1[0]));
3348  S_V xVecJ(xVec2);
3349  P_V tVecI(*(tVecs1[0]));
3350  P_V tVecJ(tVec2);
3351  for (unsigned int i = 0; i < m_s->m_paper_m; ++i) {
3352  xVecI = *(xVecs1[i]);
3353  tVecI = *(tVecs1[i]);
3354  for (unsigned int j = 0; j < 1; ++j) { // Yes, only '1'
3355  xVecJ = xVec2;
3356  tVecJ = tVec2;
3357  Rmat(i,j) = 1.;
3358  // checar
3359  for (unsigned int k = 0; k < m_s->m_paper_p_x; ++k) {
3360  double diffTerm = xVecI[k] - xVecJ[k];
3361  Rmat(i,j) *= std::pow(rho_w_vec[k],4.*diffTerm*diffTerm);
3362  }
3363  for (unsigned int k = 0; k < m_s->m_paper_p_t; ++k) {
3364  double diffTerm = tVecI[k] - tVecJ[k];
3365  Rmat(i,j) *= std::pow(rho_w_vec[m_s->m_paper_p_x+k],4.*diffTerm*diffTerm);
3366  }
3367  }
3368  }
3369  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
3370  *m_env.subDisplayFile() << "Leaving GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::fillR_formula1_for_Sigma_u_hat_u_asterisk()"
3371  << ", outerCounter = " << outerCounter
3372  << std::endl;
3373  }
3374 
3375  return;
3376 }
3377 
3378 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>
3379 void
3381  const std::vector<const S_V* >& xVecs1,
3382  const std::vector<const P_V* >& tVecs1,
3383  const S_V& xVec2,
3384  const P_V& tVec2,
3385  const P_V& rho_w_vec,
3386  D_M& Rmat,
3387  unsigned int outerCounter)
3388 {
3389  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
3390  *m_env.subDisplayFile() << "Entering GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::fillR_formula1_for_Sigma_w_hat_u_asterisk()"
3391  << ", outerCounter = " << outerCounter
3392  << std::endl;
3393  }
3394  queso_require_equal_to_msg(xVecs1.size(), m_s->m_paper_m, "xVecs1.size() is wrong");
3395  for (unsigned int i = 0; i < xVecs1.size(); ++i) {
3396  queso_require_equal_to_msg(xVecs1[i]->sizeLocal(), m_s->m_paper_p_x, "xVecs1[i]->sizeLocal() is wrong");
3397  }
3398  queso_require_equal_to_msg(tVecs1.size(), m_s->m_paper_m, "tVecs1.size() is wrong");
3399  for (unsigned int i = 0; i < tVecs1.size(); ++i) {
3400  queso_require_equal_to_msg(tVecs1[i]->sizeLocal(), m_s->m_paper_p_t, "tVecs1[i]->sizeLocal() is wrong");
3401  }
3402  queso_require_equal_to_msg(xVec2.sizeLocal(), m_s->m_paper_p_x, "xVec2.sizeLocal() is wrong");
3403  queso_require_equal_to_msg(tVec2.sizeLocal(), m_s->m_paper_p_t, "tVec2.sizeLocal() is wrong");
3404  queso_require_equal_to_msg(rho_w_vec.sizeLocal(), (m_s->m_paper_p_x+m_s->m_paper_p_t), "rho_w_vec.sizeLocal() is wrong");
3405  queso_require_equal_to_msg(Rmat.numRowsLocal(), m_s->m_paper_m, "Rmat.numRowsLocal() is wrong");
3406  queso_require_equal_to_msg(Rmat.numCols(), 1, "Rmat.numCols() is wrong");
3407 
3408  S_V xVecI(*(xVecs1[0]));
3409  S_V xVecJ(xVec2);
3410  P_V tVecI(*(tVecs1[0]));
3411  P_V tVecJ(tVec2);
3412  for (unsigned int i = 0; i < m_s->m_paper_m; ++i) {
3413  xVecI = *(xVecs1[i]);
3414  tVecI = *(tVecs1[i]);
3415  for (unsigned int j = 0; j < 1; ++j) { // Yes, only '1'
3416  xVecJ = xVec2;
3417  tVecJ = tVec2;
3418  Rmat(i,j) = 1.;
3419  // checar
3420  for (unsigned int k = 0; k < m_s->m_paper_p_x; ++k) {
3421  double diffTerm = xVecI[k] - xVecJ[k];
3422  Rmat(i,j) *= std::pow(rho_w_vec[k],4.*diffTerm*diffTerm);
3423  }
3424  for (unsigned int k = 0; k < m_s->m_paper_p_t; ++k) {
3425  double diffTerm = tVecI[k] - tVecJ[k];
3426  Rmat(i,j) *= std::pow(rho_w_vec[m_s->m_paper_p_x+k],4.*diffTerm*diffTerm);
3427  }
3428  }
3429  }
3430  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
3431  *m_env.subDisplayFile() << "Leaving GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::fillR_formula1_for_Sigma_w_hat_u_asterisk()"
3432  << ", outerCounter = " << outerCounter
3433  << std::endl;
3434  }
3435 
3436  return;
3437 }
3438 
3439 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>
3440 void
3442  const std::vector<const S_V* >& xVecs1,
3443  const std::vector<const P_V* >& tVecs1,
3444  const S_V& xVec2,
3445  const P_V& tVec2,
3446  const P_V& rho_w_vec,
3447  D_M& Rmat,
3448  unsigned int outerCounter)
3449 {
3450  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
3451  *m_env.subDisplayFile() << "Entering GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::fillR_formula1_for_Sigma_w_hat_w_asterisk()"
3452  << ", outerCounter = " << outerCounter
3453  << std::endl;
3454  }
3455 
3456  queso_require_equal_to_msg(xVecs1.size(), m_s->m_paper_m, "xVecs1.size() is wrong");
3457  for (unsigned int i = 0; i < xVecs1.size(); ++i) {
3458  queso_require_equal_to_msg(xVecs1[i]->sizeLocal(), m_s->m_paper_p_x, "xVecs1[i]->sizeLocal() is wrong");
3459  }
3460  queso_require_equal_to_msg(tVecs1.size(), m_s->m_paper_m, "tVecs1.size() is wrong");
3461  for (unsigned int i = 0; i < tVecs1.size(); ++i) {
3462  queso_require_equal_to_msg(tVecs1[i]->sizeLocal(), m_s->m_paper_p_t, "tVecs1[i]->sizeLocal() is wrong");
3463  }
3464  queso_require_equal_to_msg(xVec2.sizeLocal(), m_s->m_paper_p_x, "xVec2.sizeLocal() is wrong");
3465  queso_require_equal_to_msg(tVec2.sizeLocal(), m_s->m_paper_p_t, "tVec2.sizeLocal() is wrong");
3466  queso_require_equal_to_msg(rho_w_vec.sizeLocal(), (m_s->m_paper_p_x+m_s->m_paper_p_t), "rho_w_vec.sizeLocal() is wrong");
3467  queso_require_equal_to_msg(Rmat.numRowsLocal(), m_s->m_paper_m, "Rmat.numRowsLocal() is wrong");
3468  queso_require_equal_to_msg(Rmat.numCols(), 1, "Rmat.numCols() is wrong");
3469 
3470  S_V xVecI(*(xVecs1[0]));
3471  S_V xVecJ(xVec2);
3472  P_V tVecI(*(tVecs1[0]));
3473  P_V tVecJ(tVec2);
3474  for (unsigned int i = 0; i < m_s->m_paper_m; ++i) {
3475  xVecI = *(xVecs1[i]);
3476  tVecI = *(tVecs1[i]);
3477  for (unsigned int j = 0; j < 1; ++j) { // Yes, only '1'
3478  xVecJ = xVec2;
3479  tVecJ = tVec2;
3480  Rmat(i,j) = 1.;
3481  for (unsigned int k = 0; k < m_s->m_paper_p_x; ++k) {
3482  double diffTerm = xVecI[k] - xVecJ[k];
3483  Rmat(i,j) *= std::pow(rho_w_vec[k],4.*diffTerm*diffTerm);
3484  }
3485  for (unsigned int k = 0; k < m_s->m_paper_p_t; ++k) {
3486  double diffTerm = tVecI[k] - tVecJ[k];
3487  Rmat(i,j) *= std::pow(rho_w_vec[m_s->m_paper_p_x+k],4.*diffTerm*diffTerm);
3488  }
3489  }
3490  }
3491 
3492  if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 4)) {
3493  *m_env.subDisplayFile() << "Leaving GpmsaComputerModel<S_V,S_M,D_V,D_M,P_V,P_M,Q_V,Q_M>::fillR_formula1_for_Sigma_w_hat_w_asterisk()"
3494  << ", outerCounter = " << outerCounter
3495  << std::endl;
3496  }
3497 
3498  return;
3499 }
3500 
3501 } // End namespace QUESO
3502 
const GcmOptionsValues * m_optionsObj
GcmJointInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M > * m_j
const BaseVectorRV< P_V, P_M > & totalPriorRv() const
A class for handling sequential draws (sampling) from probability density distributions.
void predictSimulationOutputs(const S_V &newScenarioVec, const P_V &newParameterVec, Q_V &simulationOutputMeanVec)
void memoryCheck(unsigned int codePositionId)
void setPositionValues(unsigned int posId, const V &vec)
Set the values in vec at position posId of the sequence.
GcmJointTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M > * m_jt
double MiscGetEllapsedSeconds(struct timeval *timeval0)
std::ofstream * subDisplayFile() const
Access function for m_subDisplayFile (displays file on stream).
Definition: Environment.C:320
BaseScalarFunction< P_V, P_M > * m_likelihoodFunction
std::string optionsInputFileName() const
Access to the attribute m_optionsInputFileName, which stores the name of the input file passed by the...
Definition: Environment.C:353
std::set< unsigned int > m_dataOutputAllowedSet
void fillR_formula1_for_Sigma_w_hat_u_asterisk(const std::vector< const S_V * > &xVecs1, const std::vector< const P_V * > &tVecs1, const S_V &xVec2, const P_V &tVec2, const P_V &rho_w_vec, D_M &Rmat, unsigned int outerCounter)
void formSigma_z_hat(const P_V &input_1lambdaEtaVec, const P_V &input_2lambdaWVec, const P_V &input_3rhoWVec, const P_V &input_4lambdaSVec, const P_V &input_5lambdaYVec, const P_V &input_6lambdaVVec, const P_V &input_7rhoVVec, const P_V &input_8thetaVec, unsigned int outerCounter)
VectorSet< V, M > * InstantiateIntersection(const VectorSet< V, M > &domain1, const VectorSet< V, M > &domain2)
This method calculates the intersection of domain1 and domain2.
A class for handling generic scalar functions.
unsigned int subSequenceSize() const
Size of the sub-sequence of vectors.
void fillR_formula1_for_Sigma_uw(const std::vector< const S_V * > &xVecs1, const P_V &tVec1, const std::vector< const S_V * > &xVecs2, const std::vector< const P_V * > &tVecs2, const P_V &rho_w_vec, D_M &Rmat, unsigned int outerCounter)
#define queso_require_equal_to_msg(expr1, expr2, msg)
Definition: asserts.h:73
GcmSimulationInfo< S_V, S_M, P_V, P_M, Q_V, Q_M > * m_s
void calibrateWithLanlMcmc(const MhOptionsValues *alternativeOptionsValues, const P_V &totalInitialValues, const P_M *totalInitialProposalCovMatrix)
const std::vector< unsigned int > & n_ys_transformed() const
void ComputeConditionalGaussianVectorRV(const V &muVec1, const V &muVec2, const M &sigmaMat11, const M &sigmaMat12, const M &sigmaMat21, const M &sigmaMat22, const V &sampleVec2, V &muVec1_cond_on_2, M &sigmaMat11_cond_on_2)
int k
Definition: ann_sample.cpp:53
unsigned int subId() const
Access function to the number of each sub-environment Id: m_subId.
Definition: Environment.C:341
unsigned int numExperiments() const
A templated class that represents a Metropolis-Hastings generator of samples.
void formSigma_z_tilde_hat(const P_V &input_1lambdaEtaVec, const P_V &input_2lambdaWVec, const P_V &input_3rhoWVec, const P_V &input_4lambdaSVec, const P_V &input_5lambdaYVec, const P_V &input_6lambdaVVec, const P_V &input_7rhoVVec, const P_V &input_8thetaVec, unsigned int outerCounter)
GcmTotalInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M > * m_t
void calibrateWithBayesMetropolisHastings(const MhOptionsValues *alternativeOptionsValues, const P_V &totalInitialValues, const P_M *totalInitialProposalCovMatrix)
GcmSimulationTildeInfo< S_V, S_M, P_V, P_M, Q_V, Q_M > * m_st
void formSigma_w_hat(const P_V &input_1lambdaEtaVec, const P_V &input_2lambdaWVec, const P_V &input_3rhoWVec, const P_V &input_4lambdaSVec, const P_V &input_8thetaVec, unsigned int outerCounter)
FilePtrSetStruct m_dataOutputFilePtrSet
void fillR_formula1_for_Sigma_u(const std::vector< const S_V * > &xVecs, const P_V &tVec, const P_V &rho_w_vec, D_M &Rmat, unsigned int outerCounter)
GcmExperimentInfo< S_V, S_M, D_V, D_M, P_V, P_M > * m_e
static double staticLikelihoodRoutine(const P_V &totalValues, const P_V *totalDirection, const void *functionDataPtr, P_V *gradVector, P_M *hessianMatrix, P_V *hessianEffect)
#define queso_require_equal_to(expr1, expr2)
Definition: asserts.h:113
void fillR_formula1_for_Sigma_w_hat_w_asterisk(const std::vector< const S_V * > &xVecs1, const std::vector< const P_V * > &tVecs1, const S_V &xVec2, const P_V &tVec2, const P_V &rho_w_vec, D_M &Rmat, unsigned int outerCounter)
GcmZInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M > * m_z
const VectorSpace< S_V, S_M > & scenarioSpace() const
void generateSequence(BaseVectorSequence< P_V, P_M > &workingChain, ScalarSequence< double > *workingLogLikelihoodValues, ScalarSequence< double > *workingLogTargetValues)
Method to generate the chain.
Definition: MLSampling.C:4030
std::ofstream * ofsVar
Provides a stream interface to write data to files.
Definition: Environment.h:85
void unifiedWriteContents(const std::string &fileName, const std::string &fileType) const
bool openOutputFile(const std::string &fileName, const std::string &fileType, const std::set< unsigned int > &allowedSubEnvIds, bool writeOver, FilePtrSetStruct &filePtrSet) const
Opens an output file for each sub-environment that was chosen to send data to the file...
Definition: Environment.C:520
double scalarProduct(const GslVector &x, const GslVector &y)
Definition: GslVector.C:1136
const BaseEnvironment & m_env
const VectorSpace< P_V, P_M > & unique_vu_space() const
unsigned int displayVerbosity() const
Definition: Environment.C:449
void print(std::ostream &os) const
#define UQ_FILE_EXTENSION_FOR_MATLAB_FORMAT
Definition: Defines.h:102
double likelihoodRoutine(const P_V &totalValues, const P_V *totalDirection, const void *functionDataPtr, P_V *gradVector, P_M *hessianMatrix, P_V *hessianEffect)
#define queso_require_msg(asserted, msg)
Definition: asserts.h:69
void fillR_formula1_for_Sigma_w(const std::vector< const S_V * > &xVecs, const std::vector< const P_V * > &tVecs, const P_V &rho_w_vec, D_M &Rmat, unsigned int outerCounter)
unsigned int MiscUintDebugMessage(unsigned int value, const char *message)
void ComputeCovCorrMatricesBetweenVectorSequences(const BaseVectorSequence< P_V, P_M > &subPSeq, const BaseVectorSequence< Q_V, Q_M > &subQSeq, unsigned int subNumSamples, P_M &pqCovMatrix, P_M &pqCorrMatrix)
const V & unifiedMeanPlain() const
Finds the mean value of the unified sequence.
const GenericVectorRV< P_V, P_M > & totalPostRv() const
GpmsaComputerModel(const char *prefix, const GcmOptionsValues *alternativeOptionsValues, const SimulationStorage< S_V, S_M, P_V, P_M, Q_V, Q_M > &simulationStorage, const SimulationModel< S_V, S_M, P_V, P_M, Q_V, Q_M > &simulationModel, const ExperimentStorage< S_V, S_M, D_V, D_M > *experimentStorage, const ExperimentModel< S_V, S_M, D_V, D_M > *experimentModel, const BaseVectorRV< P_V, P_M > *thetaPriorRv)
void predictVUsAtGridPoint(const S_V &newScenarioVec, const P_V &newParameterVec, P_V &vuMeanVec, P_M &vuCovMatrix, P_V &vMeanVec, P_M &vCovMatrix, P_V &uMeanVec, P_M &uCovMatrix)
#define queso_error_msg(msg)
Definition: asserts.h:47
This class provides options for the Metropolis-Hastings generator of samples if no input file is avai...
void formSigma_z(const P_V &input_2lambdaWVec, const P_V &input_3rhoWVec, const P_V &input_4lambdaSVec, const P_V &input_6lambdaVVec, const P_V &input_7rhoVVec, const P_V &input_8thetaVec, unsigned int outerCounter)
unsigned int numBasis() const
void fillR_formula1_for_Sigma_u_hat_u_asterisk(const std::vector< const S_V * > &xVecs1, const std::vector< const P_V * > &tVecs1, const S_V &xVec2, const P_V &tVec2, const P_V &rho_w_vec, D_M &Rmat, unsigned int outerCounter)
void fillR_formula2_for_Sigma_v(const std::vector< const S_V * > &xVecs, const P_V &rho_v_vec, D_M &Rmat, unsigned int outerCounter)
void generateSequence(BaseVectorSequence< P_V, P_M > &workingChain, ScalarSequence< double > *workingLogLikelihoodValues, ScalarSequence< double > *workingLogTargetValues)
Method to generate the chain.
A templated class that represents a Multilevel generator of samples.
Definition: MLSampling.h:122
void predictWsAtGridPoint(const S_V &newScenarioVec, const P_V &newParameterVec, const P_V *forcingSampleVecForDebug, P_V &wMeanVec, P_M &wCovMatrix)
void fillR_formula2_for_Sigma_v_hat_v_asterisk(const std::vector< const S_V * > &xVecs1, const std::vector< const P_V * > &tVecs1, const S_V &xVec2, const P_V &tVec2, const P_V &rho_v_vec, D_M &Rmat, unsigned int outerCounter)
unsigned int numBasis() const
GcmZTildeInfo< S_V, S_M, D_V, D_M, P_V, P_M, Q_V, Q_M > * m_zt
const VectorSpace< P_V, P_M > & totalSpace() const
void predictExperimentResults(const S_V &newScenarioVec, const D_M &newKmat_interp, const D_M &newDmat, D_V &simulationOutputMeanVec, D_V &discrepancyMeanVec)
unsigned int dimLocal() const
Definition: VectorSpace.C:170

Generated on Tue Nov 29 2016 10:53:10 for queso-0.56.0 by  doxygen 1.8.5