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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4856 - (show annotations)
Wed Apr 9 06:46:55 2014 UTC (5 years, 7 months ago) by caltinay
File MIME type: text/plain
File size: 1805 byte(s)
some mopping in paso

1
2 /*****************************************************************************
3 *
4 * Copyright (c) 2003-2014 by University of Queensland
5 * http://www.uq.edu.au
6 *
7 * Primary Business: Queensland, Australia
8 * Licensed under the Open Software License version 3.0
9 * http://www.opensource.org/licenses/osl-3.0.php
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 by Centre for Geoscience Computing (GeoComp)
14 *
15 *****************************************************************************/
16
17
18 #ifndef __PASO_FUNCTIONS_H__
19 #define __PASO_FUNCTIONS_H__
20
21 #include "Common.h"
22 #include "esysUtils/Esys_MPI.h"
23 #include "performance.h"
24 #include "SystemMatrix.h"
25
26 namespace paso {
27
28 struct Function
29 {
30 Function(Esys_MPIInfo* mpi_info);
31 virtual ~Function();
32
33 /// sets value=F(arg)
34 virtual err_t call(double* value, const double* arg,
35 Paso_Performance* pp) = 0;
36
37 /// numerical calculation of the directional derivative J0w of F at x0 in
38 /// the direction w. f0 is the value of F at x0. setoff is workspace
39 err_t derivative(double* J0w, const double* w, const double* f0,
40 const double* x0, double* setoff, Paso_Performance* pp);
41
42 /// returns the length of the vectors used by this function
43 virtual dim_t getLen() = 0;
44
45 Esys_MPIInfo* mpi_info;
46 };
47
48 struct LinearSystem : public Function
49 {
50 LinearSystem(SystemMatrix_ptr A, double* b, Options* options);
51 virtual ~LinearSystem();
52
53 virtual err_t call(double* value, const double* arg, Paso_Performance* pp);
54
55 virtual dim_t getLen() { return n; }
56
57 SystemMatrix_ptr mat;
58 double* tmp;
59 double* b;
60 dim_t n;
61 };
62
63 } // namespace paso
64
65 #endif // __PASO_FUNCTIONS_H__
66

  ViewVC Help
Powered by ViewVC 1.1.26