1 /*  _______________________________________________________________________
2 
3     DAKOTA: Design Analysis Kit for Optimization and Terascale Applications
4     Copyright 2014-2020 National Technology & Engineering Solutions of Sandia, LLC (NTESS).
5     This software is distributed under the GNU Lesser General Public License.
6     For more information, see the README file in the top Dakota directory.
7     _______________________________________________________________________ */
8 
9 //- Class:	 NonDLHSInterval
10 //- Description: Class for the Interval theory methods within DAKOTA/UQ
11 //- Owner:	 Laura Swiler
12 //- Checked by:
13 //- Version:
14 
15 #ifndef NOND_LHS_INTERVAL_H
16 #define NOND_LHS_INTERVAL_H
17 
18 #include "dakota_data_types.hpp"
19 #include "NonDInterval.hpp"
20 #include "DakotaModel.hpp"
21 
22 namespace Dakota {
23 
24 
25 /// Class for the LHS-based interval methods within DAKOTA/UQ
26 
27 /** The NonDLHSInterval class implements the propagation of epistemic
28     uncertainty using LHS-based methods. */
29 
30 class NonDLHSInterval: public NonDInterval
31 {
32 public:
33 
34   //
35   //- Heading: Constructors and destructor
36   //
37 
38   NonDLHSInterval(ProblemDescDB& problem_db, Model& model); ///< constructor
39   ~NonDLHSInterval();                                       ///< destructor
40 
41   //
42   //- Heading: Virtual function redefinitions
43   //
44 
45   void derived_init_communicators(ParLevLIter pl_iter);
46   void derived_set_communicators(ParLevLIter pl_iter);
47   void derived_free_communicators(ParLevLIter pl_iter);
48 
49   /// performs an epistemic uncertainty propagation using LHS samples
50   void core_run();
51 
52 protected:
53 
54   //
55   //- Heading: New virtual functions
56   //
57 
58   /// perform any required initialization
59   virtual void initialize();
60   /// post-process the output from executing lhsSampler
61   virtual void post_process_samples() = 0;
62 
63   //
64   // - Heading: Data
65   //
66 
67   Iterator  lhsSampler; ///< the LHS sampler instance
68   const int seedSpec;   ///< the user seed specification (default is 0)
69   int       numSamples; ///< the number of samples used
70   String    rngName;	///< name of the random number generator
71 
72 private:
73 
74   //
75   // - Heading: Data
76   //
77 
78 };
79 
80 } // namespace Dakota
81 
82 #endif
83