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:

int main(int argc, char** argv) {
  BoutInitialise(argc, argv);

  BoutFinalise();
}
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.

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_settings is 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

BoutMonitor(BoutReal timestep = -1)#

SOLUTION MONITOR FUNCTION

Called each timestep by the solver

BoutMonitor(BoutReal timestep, Options &options)#

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#
BoutReal wall_limit#

Wall time limit in seconds.

BoutReal mpi_start_time#

Starting time.

bool stop_check#

Stop if file stop_check_name exists.

bool first_time = {true}#

Check if this is the first time the monitor is called.

std::string stop_check_name#

Filename for stop_check

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 a

If the matrix is singular (ill conditioned), the determinant is return. Otherwise, an empty std::optional is return

SNB model

namespace experimental

Typedefs

using SignalHandler = void (*)(int)#

Function type for handling signals.

struct CommandLineArgs#
#include <bout.hxx>

Results of parsing the command line arguments.

Public Members

int verbosity = {4}#
bool color_output = {false}#
std::filesystem::path data_dir = {"data"}#

Directory for data input/output.

std::filesystem::path opt_file = {"BOUT.inp"}#

Filename for the options file.

std::filesystem::path set_file = {"BOUT.settings"}#

Filename for the options file.

std::filesystem::path log_file = {"BOUT.log"}#

File name for the log file

std::vector<std::string> original_argv#

The original set of command line arguments.

std::vector<std::string> argv#

The “canonicalised” command line arguments, with single-letter arguments expanded