PRISMS-PF Manual
Loading...
Searching...
No Matches
miscellaneous_parameters.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: © 2025 PRISMS Center at the University of Michigan
2// SPDX-License-Identifier: GNU Lesser General Public Version 2.1
3
4#pragma once
5
6#include <deal.II/base/mpi.h>
7#include <deal.II/base/parameter_handler.h>
8
11
13
14#include <prismspf/config.h>
15
16#include <mpi.h>
17#include <random>
18
20using RNGEngine = std::mt19937;
21
26{
27public:
31 void
33
37 void
39
43 void
44 set_random_seed(const unsigned int &_random_seed)
45 {
46 random_seed = _random_seed;
47 rng.seed(random_seed);
48 }
49
53 void
54 declare_parameters(dealii::ParameterHandler &parameter_handler) const;
55
59 void
60 assign_parameters(dealii::ParameterHandler &parameter_handler);
61
62 unsigned int random_seed = 2025;
63 // Use a different seed for each MPI process to avoid correlated events
65};
66
67inline void
70
71inline void
73{
75 << "================================================\n"
76 << " Miscellaneous Parameters\n"
77 << "================================================\n"
78 << "Random seed: " << random_seed << "\n"
79 << std::flush;
80}
81
82inline void
84 dealii::ParameterHandler &parameter_handler) const
85{
86 parameter_handler.enter_subsection("miscellaneous");
87 {
88 parameter_handler.declare_entry(
89 "random seed",
90 "2025",
91 dealii::Patterns::Integer(0, INT_MAX),
92 "The random seed for the simulation. "
93 "This is used to initialize the random number generator.");
94 }
95 parameter_handler.leave_subsection();
96}
97
98inline void
99MiscellaneousParameters::assign_parameters(dealii::ParameterHandler &parameter_handler)
100{
101 parameter_handler.enter_subsection("miscellaneous");
102 {
103 set_random_seed(static_cast<unsigned int>(
104 parameter_handler.get_integer("random seed") +
105 dealii::Utilities::MPI::this_mpi_process(MPI_COMM_WORLD)));
106 }
107 parameter_handler.leave_subsection();
108}
109
110PRISMS_PF_END_NAMESPACE
static dealii::ConditionalOStream & pout_summary()
Log output stream for writing a summary.log file.
Definition conditional_ostreams.cc:35
std::mt19937 RNGEngine
Definition miscellaneous_parameters.h:20
Definition conditional_ostreams.cc:20
Struct that holds miscellaneous parameters.
Definition miscellaneous_parameters.h:26
void print_parameter_summary() const
Print parameters to summary.log.
Definition miscellaneous_parameters.h:72
void assign_parameters(dealii::ParameterHandler &parameter_handler)
Assign the parameters read from an input file to this object.
Definition miscellaneous_parameters.h:99
void set_random_seed(const unsigned int &_random_seed)
Set the random seed and initialize the RNG.
Definition miscellaneous_parameters.h:44
void declare_parameters(dealii::ParameterHandler &parameter_handler) const
Declare the parameters to be read from an input file.
Definition miscellaneous_parameters.h:83
void postprocess_and_validate()
Postprocess and validate parameters.
Definition miscellaneous_parameters.h:68
RNGEngine rng
Definition miscellaneous_parameters.h:64
unsigned int random_seed
Definition miscellaneous_parameters.h:62