/[escript]/trunk/paso/src/Functions.h
ViewVC logotype

Contents of /trunk/paso/src/Functions.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 6939 - (show annotations)
Mon Jan 20 03:37:18 2020 UTC (20 months ago) by uqaeller
File MIME type: text/plain
File size: 1844 byte(s)
Updated the copyright header.


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 {
30 Function(const escript::JMPI& mpi_info);
31 virtual ~Function();
32
33 /// sets value=F(arg)
34 virtual SolverResult call(double* value, const double* arg, Performance* pp) = 0;
35
36 /// numerical calculation of the directional derivative J0w of F at x0 in
37 /// the direction w. f0 is the value of F at x0. setoff is workspace
38 SolverResult derivative(double* J0w, const double* w, const double* f0,
39 const double* x0, double* setoff, Performance* pp);
40
41 /// returns the length of the vectors used by this function
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
56 SystemMatrix_ptr mat;
57 double* tmp;
58 double* b;
59 dim_t n;
60 };
61
62 } // namespace paso
63
64 #endif // __PASO_FUNCTIONS_H__
65

  ViewVC Help
Powered by ViewVC 1.1.26