/[escript]/trunk/finley/src/Util.h
ViewVC logotype

Contents of /trunk/finley/src/Util.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 751 - (show annotations)
Mon Jun 26 01:46:34 2006 UTC (13 years, 2 months ago) by bcumming
File MIME type: text/plain
File size: 4707 byte(s)
Changes relating to the MPI version of escript
The standard OpenMP version of escript is unchanged

- updated data types (Finley_Mesh, Finley_NodeFile, etc) to store meshes
  over multiple MPI processes.
- added CommBuffer code in Paso for communication of Data associated
  with distributed meshes
- updates in Finley and Escript to support distributed data and operations
  on distributed data (such as interpolation).
- construction of RHS in MPI, so that simple explicit schemes (such as
  /docs/examples/wave.py without IO and the Locator) can run in MPI.
- updated mesh generation for first order line, rectangle and brick
  meshes and second order line meshes in MPI.        
- small changes to trunk/SConstruct and trunk/scons/ess_options.py to
  build the MPI version, these changes are turned off by default.

1 /*
2 ************************************************************
3 * Copyright 2006 by ACcESS MNRF *
4 * *
5 * http://www.access.edu.au *
6 * Primary Business: Queensland, Australia *
7 * Licensed under the Open Software License version 3.0 *
8 * http://www.opensource.org/licenses/osl-3.0.php *
9 * *
10 ************************************************************
11
12 */
13
14 /**************************************************************/
15
16 /* Some utility routines: */
17
18 /**************************************************************/
19
20 /* author: gross@access.edu.au */
21 /* Version: $Id$ */
22
23 /**************************************************************/
24
25 #ifndef INC_FINLEY_UTIL
26 #define INC_FINLEY_UTIL
27
28 #include "Finley.h"
29
30 /**************************************************************/
31
32 void Finley_Util_Gather_double(dim_t len,index_t* index,dim_t numData,double* in,double * out);
33 void Finley_Util_Gather_int(dim_t len,index_t* index,dim_t numData,index_t* in,index_t * out);
34 void Finley_Util_AddScatter(dim_t len,index_t* index,dim_t numData,double* in,double * out);
35 void Finley_Util_SmallMatMult(dim_t A1,dim_t A2, double* A, dim_t B2, double*B, double* C);
36 void Finley_Util_SmallMatSetMult(dim_t len,dim_t A1,dim_t A2, double* A, dim_t B2, double*B, double* C);
37 void Finley_Util_InvertSmallMat(dim_t len,dim_t dim,double* A,double *invA, double* det);
38 void Finley_Util_DetOfSmallMat(dim_t len,dim_t dim,double* A,double* det);
39 void Finley_NormalVector(dim_t len, dim_t dim, dim_t dim1, double* A,double* Normal);
40 void Finley_LengthOfNormalVector(dim_t len, dim_t dim, dim_t dim1, double* A,double* length);
41 void Finley_Util_InvertMap(dim_t, index_t*,dim_t, index_t*);
42 index_t Finley_Util_getMaxInt(dim_t dim,dim_t N,index_t* values);
43 index_t Finley_Util_getMinInt(dim_t dim,dim_t N,index_t* values);
44 dim_t Finley_Util_packMask(dim_t N,bool_t* mask,index_t* index);
45 bool_t Finley_Util_isAny(dim_t N,index_t* array,index_t value);
46 void Finley_copyDouble(dim_t n,double* source,double* target);
47 index_t Finley_Util_cumsum(dim_t,index_t*);
48 bool_t Finley_Util_anyNonZeroDouble(dim_t N,double* values);
49
50 #ifdef PASO_MPI
51 void Finley_Util_AddScatter_upperBound(dim_t len,index_t* index,dim_t numData,double* in,double * out, index_t upperBound);
52 void Finley_printDoubleArray( FILE *fid, dim_t n, double *array, char *name );
53 void Finley_printIntArray( FILE *fid, dim_t n, int *array, char *name );
54 void Finley_printMaskArray( FILE *fid, dim_t n, int *array, char *name );
55 #endif
56
57
58
59 /* Finley_Util_orderValueAndIndex is used to sort items by a value */
60 /* index points to the location of the original item array. */
61 /* it can be used to reorder the array */
62 struct Finley_Util_ValueAndIndex {
63 index_t index;
64 index_t value;
65 };
66 typedef struct Finley_Util_ValueAndIndex Finley_Util_ValueAndIndex;
67
68 void Finley_Util_sortValueAndIndex(dim_t n,Finley_Util_ValueAndIndex* array);
69 int Finley_Util_ValueAndIndex_compar(const void *, const void *);
70
71 #endif /* #ifndef INC_FINLEY_UTIL */
72
73 /*
74 * Revision 1.8 2005/08/12 01:45:43 jgs
75 * erge of development branch dev-02 back to main trunk on 2005-08-12
76 *
77 * Revision 1.7.2.2 2005/09/07 06:26:22 gross
78 * the solver from finley are put into the standalone package paso now
79 *
80 * Revision 1.7.2.1 2005/08/04 22:41:11 gross
81 * some extra routines for finley that might speed-up RHS assembling in some cases (not actived right now)
82 *
83 * Revision 1.7 2005/07/08 04:07:59 jgs
84 * Merge of development branch back to main trunk on 2005-07-08
85 *
86 * Revision 1.1.1.1.2.4 2005/06/29 02:34:57 gross
87 * some changes towards 64 integers in finley
88 *
89 * Revision 1.1.1.1.2.3 2005/03/02 23:35:06 gross
90 * reimplementation of the ILU in Finley. block size>1 still needs some testing
91 *
92 * Revision 1.1.1.1.2.2 2005/02/18 02:27:31 gross
93 * two function that will be used for a reimplementation of the ILU preconditioner
94 *
95 * Revision 1.1.1.1.2.1 2004/11/12 06:58:19 gross
96 * a lot of changes to get the linearPDE class running: most important change is that there is no matrix format exposed to the user anymore. the format is chosen by the Domain according to the solver and symmetry
97 *
98 * Revision 1.1.1.1 2004/10/26 06:53:57 jgs
99 * initial import of project esys2
100 *
101 * Revision 1.3 2004/08/26 12:03:52 gross
102 * Some other bug in Finley_Assemble_gradient fixed.
103 *
104 * Revision 1.2 2004/07/02 04:21:13 gross
105 * Finley C code has been included
106 *
107 * Revision 1.1.1.1 2004/06/24 04:00:40 johng
108 * Initial version of eys using boost-python.
109 *
110 *
111 */

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

  ViewVC Help
Powered by ViewVC 1.1.26