escript  Revision_
Functions.h
Go to the documentation of this file.
1 
2 /*****************************************************************************
3 *
4 * Copyright (c) 2003-2020 by The University of Queensland
5 * http://www.uq.edu.au
6 *
7 * Primary Business: Queensland, Australia
8 * Licensed under the Apache License, version 2.0
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Development until 2012 by Earth Systems Science Computational Center (ESSCC)
12 * Development 2012-2013 by School of Earth Sciences
13 * Development from 2014-2017 by Centre for Geoscience Computing (GeoComp)
14 * Development from 2019 by School of Earth and Environmental Sciences
15 **
16 *****************************************************************************/
17 
18 
19 #ifndef __PASO_FUNCTIONS_H__
20 #define __PASO_FUNCTIONS_H__
21 
22 #include "Paso.h"
23 #include "performance.h"
24 #include "SystemMatrix.h"
25 
26 namespace paso {
27 
28 struct Function
29 {
31  virtual ~Function();
32 
34  virtual SolverResult call(double* value, const double* arg, Performance* pp) = 0;
35 
38  SolverResult derivative(double* J0w, const double* w, const double* f0,
39  const double* x0, double* setoff, Performance* pp);
40 
42  virtual dim_t getLen() = 0;
43 
44  const escript::JMPI mpi_info;
45 };
46 
47 struct LinearSystem : public Function
48 {
49  LinearSystem(SystemMatrix_ptr A, double* b, Options* options);
50  virtual ~LinearSystem();
51 
52  virtual SolverResult call(double* value, const double* arg, Performance* pp);
53 
54  virtual dim_t getLen() { return n; }
55 
57  double* tmp;
58  double* b;
59  dim_t n;
60 };
61 
62 } // namespace paso
63 
64 #endif // __PASO_FUNCTIONS_H__
65 
paso::EPSILON
static const real_t EPSILON
Definition: ReactiveSolver.cpp:55
escript::DataTypes::real_t
double real_t
type of all real-valued scalars in escript
Definition: DataTypes.h:79
paso::util::lsup
double lsup(dim_t n, const double *x, escript::JMPI mpiinfo)
returns the global Lsup of x
Definition: PasoUtil.cpp:495
paso::Function::derivative
SolverResult derivative(double *J0w, const double *w, const double *f0, const double *x0, double *setoff, Performance *pp)
Definition: Functions.cpp:47
performance.h
paso::LinearSystem::n
dim_t n
Definition: Functions.h:73
paso::SystemMatrix_ptr
boost::shared_ptr< SystemMatrix > SystemMatrix_ptr
Definition: SystemMatrix.h:55
paso::LinearSystem::tmp
double * tmp
Definition: Functions.h:71
escript::fabs
escript::DataTypes::real_t fabs(const escript::DataTypes::cplx_t c)
Definition: ArrayOps.h:645
MPI_MAX
#define MPI_MAX
Definition: EsysMPI.h:54
paso::Function::call
virtual SolverResult call(double *value, const double *arg, Performance *pp)=0
sets value=F(arg)
Solver.h
paso::LinearSystem
Definition: Functions.h:61
Paso.h
paso::util::update
void update(dim_t n, double a, double *x, double b, const double *y)
Definition: PasoUtil.cpp:368
paso::LinearSystem::mat
SystemMatrix_ptr mat
Definition: Functions.h:70
escript::DataTypes::dim_t
index_t dim_t
Definition: DataTypes.h:93
paso::Function
Definition: Functions.h:42
escript::JMPI
boost::shared_ptr< JMPI_ > JMPI
Definition: EsysMPI.h:72
paso::SolverResult
SolverResult
Definition: Paso.h:57
paso::LinearSystem::getLen
virtual dim_t getLen()
returns the length of the vectors used by this function
Definition: Functions.h:68
paso::LinearSystem::~LinearSystem
virtual ~LinearSystem()
Definition: Solver_Function.cpp:51
SystemMatrix.h
paso::util::linearCombination
void linearCombination(dim_t n, double *z, double a, const double *x, double b, const double *y)
Definition: PasoUtil.cpp:417
paso::Function::~Function
virtual ~Function()
Definition: Functions.cpp:43
MPI_DOUBLE
#define MPI_DOUBLE
Definition: EsysMPI.h:47
paso::Function::Function
Function(const escript::JMPI &mpi_info)
Definition: Functions.cpp:38
paso::LinearSystem::call
virtual SolverResult call(double *value, const double *arg, Performance *pp)
sets value=F(arg)
Definition: Solver_Function.cpp:59
paso::LinearSystem::b
double * b
Definition: Functions.h:72
PasoUtil.h
paso::util::zeroes
void zeroes(dim_t n, double *x)
fills array x with zeroes
Definition: PasoUtil.cpp:348
escript::DataTypes::real_t_eps
real_t real_t_eps()
Returns the machine epsilon for the real_t type.
Definition: DataTypes.h:126
paso::LinearSystem::LinearSystem
LinearSystem(SystemMatrix_ptr A, double *b, Options *options)
Definition: Solver_Function.cpp:41
Functions.h
paso::Function::getLen
virtual dim_t getLen()=0
returns the length of the vectors used by this function
paso::Function::mpi_info
const escript::JMPI mpi_info
Definition: Functions.h:72
paso
Definition: BiCGStab.cpp:26
paso::NoError
@ NoError
Definition: Paso.h:72
paso::Options
Definition: Options.h:78
paso::Performance
Definition: performance.h:69