File bout.hxx#
Functions
-
int BoutInitialise(int &argc, char **&argv)
BOUT++ initialisation. This function must be called first, passing command-line arguments.
This will call MPI_Initialize, and if BOUT++ has been configured with external libraries such as PETSc then these will be initialised as well.
Example
A minimal BOUT++ program consists of:
Usually this function is called in a standard main() function, either by including boutmain.hxx or by including bout/physicsmodel.hxx and using the BOUTMAIN macro.int main(int argc, char** argv) { BoutInitialise(argc, argv); BoutFinalise(); }
Initialise BOUT++
Inputs
The command-line arguments argc and argv are passed by reference, and pointers to these will be stored in various places in BOUT++.
Outputs
Any non-zero return value should halt the simulation. If the return value is less than zero, the exit status from BOUT++ is 0, otherwise it is the return value of BoutInitialise.
-
int BoutFinalise(bool write_settings = true)
BOUT++ finalisation. This should be called at the end of the program.
Frees memory, flushes buffers, and closes files. If BOUT++ initialised MPI or external libraries, then these are also finalised.
If
write_settingsis true, output the settings, showing which options were used. This overwrites the file written during initialisation (BOUT.settings by default)
-
class BoutMonitor : public Monitor#
- #include <bout.hxx>
Monitor class for output. Called by the solver every output timestep.
This is added to the solver in bout/physicsmodel.hxx
Public Functions
Private Functions
-
virtual int call(Solver *solver, BoutReal t, int iter, int NOUT) override#
Callback function for the solver, called after timestep_ has passed
- Parameters:
solver – [in] The solver calling this monitor
time – [in] The current simulation time
iter – [in] The current simulation iteration
nout – [in] The total number of iterations for this simulation
- Returns:
non-zero if simulation should be stopped
Private Members
-
RunMetrics run_data#
-
bool stop_check#
Stop if file
stop_check_nameexists.
-
bool first_time = {true}#
Check if this is the first time the monitor is called.
-
virtual int call(Solver *solver, BoutReal t, int iter, int NOUT) override#
-
namespace bout
Provides access to the Hypre library, handling initialisation and finalisation.
Usage
#include <bout/hyprelib.hxx>
class MyClass { public:
private: HypreLib lib; };
This will then automatically initialise Hypre the first time an object is created, and finalise it when the last object is destroyed.
Copyright 2012 B.D.Dudson, S.Farley, M.V.Umansky, X.Q.Xu
Contact: Ben Dudson, bd512@york.ac.uk
This file is part of BOUT++.
BOUT++ is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
BOUT++ is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with BOUT++. If not, see http://www.gnu.org/licenses/.
Explicit inversion of a 3x3 matrix
aIf the matrix is singular (ill conditioned), the determinant is return. Otherwise, an empty
std::optionalis returnSNB model