/[escript]/branches/arrayview_from_1695_trunk/finley/src/ElementFile.h
ViewVC logotype

Diff of /branches/arrayview_from_1695_trunk/finley/src/ElementFile.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/finley/src/ElementFile.h revision 964 by gross, Tue Feb 13 05:10:26 2007 UTC temp_trunk_copy/finley/src/ElementFile.h revision 1384 by phornby, Fri Jan 11 02:29:38 2008 UTC
# Line 1  Line 1 
 /*  
  ************************************************************  
  *          Copyright 2006 by ACcESS MNRF                   *  
  *                                                          *  
  *              http://www.access.edu.au                    *  
  *       Primary Business: Queensland, Australia            *  
  *  Licensed under the Open Software License version 3.0    *  
  *     http://www.opensource.org/licenses/osl-3.0.php       *  
  *                                                          *  
  ************************************************************  
 */  
1    
2  /* Version: $Id$ */  /* $Id$ */
3    
4    /*******************************************************
5     *
6     *           Copyright 2003-2007 by ACceSS MNRF
7     *       Copyright 2007 by University of Queensland
8     *
9     *                http://esscc.uq.edu.au
10     *        Primary Business: Queensland, Australia
11     *  Licensed under the Open Software License version 3.0
12     *     http://www.opensource.org/licenses/osl-3.0.php
13     *
14     *******************************************************/
15    
16  #ifndef INC_FINLEY_ELEMENTFILE  #ifndef INC_FINLEY_ELEMENTFILE
17  #define INC_FINLEY_ELEMENTFILE  #define INC_FINLEY_ELEMENTFILE
# Line 22  Line 23 
23    
24  #ifdef PASO_MPI  #ifdef PASO_MPI
25  #include "paso/Paso_MPI.h"  #include "paso/Paso_MPI.h"
 #include "Distribution.h"  
26  #endif  #endif
27    
28  struct Finley_ElementFile_Jacobeans {  struct Finley_ElementFile_Jacobeans {
# Line 36  struct Finley_ElementFile_Jacobeans { Line 36  struct Finley_ElementFile_Jacobeans {
36  typedef struct Finley_ElementFile_Jacobeans Finley_ElementFile_Jacobeans;  typedef struct Finley_ElementFile_Jacobeans Finley_ElementFile_Jacobeans;
37    
38  struct Finley_ElementFile {  struct Finley_ElementFile {
 #ifdef PASO_MPI  
39    Paso_MPIInfo *MPIInfo;    Paso_MPIInfo *MPIInfo;
40    Finley_ElementDistribution *elementDistribution;    Paso_MPI_rank *Owner;
     index_t *Dom;  
 #endif  
41    
42    index_t isPrepared;                          /* UNKNOWN,  UNPREPARED, PREPARED to indicate that the element table has been pertpared for calculation (maybe not optimized) */    Finley_RefElement* ReferenceElement;           /* the reference element, see Reference element.c */
43    Finley_RefElement* ReferenceElement;           /* the reference element, see    Finley_RefElement* ReferenceElementReducedOrder;    /* the reference element with reduced integration order, see Reference element.c */
44                              Reference element.c */    Finley_RefElement* LinearReferenceElement;     /* the reference element for the linear mesh. it is vital that it is using the same quadrature scheme like ReferenceElement*/
45      Finley_RefElement* LinearReferenceElementReducedOrder;  /* the reference element for the linear mesh. it is vital that it is using the same quadrature
46    Finley_RefElement* LinearReferenceElement;     /* the reference element for  \                                                                scheme like LinearReferenceElementReducedIntegration*/
                             the linear mesh. it is  
                             vital that both are using  
                             the same quadrature  
                             scheme */  
47    
48    dim_t numElements;                             /* number of elements. */    dim_t numElements;                             /* number of elements. */
49        
# Line 67  struct Finley_ElementFile { Line 60  struct Finley_ElementFile {
60    index_t *Tag;                                /* Tag[i] is the tag of    index_t *Tag;                                /* Tag[i] is the tag of
61                              element i. */                              element i. */
62    
63    index_t *Nodes;                              /* Nodes[INDEX(k, i,    dim_t numNodes;                              /* number of nodes per element = ReferenceElement.Type.numNodes */
64                              ReferenceElement.Type.numNodes)    index_t *Nodes;                              /* Nodes[INDEX(k, i, numNodes)]
65                              is the k-the node in the                              is the k-the node in the
66                              i-the element. note that                              i-the element. note that
67                              in the way the nodes are                              in the way the nodes are
# Line 84  struct Finley_ElementFile { Line 77  struct Finley_ElementFile {
77                                /* are don't share a node so they can be processed simultaneously */                                /* are don't share a node so they can be processed simultaneously */
78                                                /* at anytime Color must provide a valid value. In any case one can set  */                                                /* at anytime Color must provide a valid value. In any case one can set  */
79                                                /* Color[e]=e  for all e */                                                /* Color[e]=e  for all e */
80    index_t order;                   /* order of the element */    index_t order;                   /* order of the element integration scheme*/
81      index_t reduced_order;                   /* order of the reduced element integration scheme*/
82    
83    Finley_ElementFile_Jacobeans* jacobeans;           /* element jacobeans */    Finley_ElementFile_Jacobeans* jacobeans;           /* element jacobeans */
84    Finley_ElementFile_Jacobeans* jacobeans_reducedS;  /* element jacobeans for reduced order of shape function*/    Finley_ElementFile_Jacobeans* jacobeans_reducedS;  /* element jacobeans for reduced order of shape function*/
# Line 94  struct Finley_ElementFile { Line 88  struct Finley_ElementFile {
88  };  };
89    
90  typedef struct Finley_ElementFile Finley_ElementFile;  typedef struct Finley_ElementFile Finley_ElementFile;
91    Finley_ElementFile* Finley_ElementFile_alloc( ElementTypeId, index_t, index_t, Paso_MPIInfo* );
92    void Finley_ElementFile_free(Finley_ElementFile*);
93    void Finley_ElementFile_allocTable(Finley_ElementFile*,dim_t);
94    void Finley_ElementFile_freeTable(Finley_ElementFile*);
95    void Finley_ElementFile_setElementDistribution(Finley_ElementFile* in, dim_t* distribution);
96    dim_t Finley_ElementFile_getGlobalNumElements(Finley_ElementFile* in);
97    dim_t Finley_ElementFile_getMyNumElements(Finley_ElementFile* in);
98    index_t Finley_ElementFile_getFirstElement(Finley_ElementFile* in);
99    void Finley_ElementFile_distributeByRankOfDOF(Finley_ElementFile* self, Paso_MPI_rank* mpiRankOfDOF, index_t *Id);
100    
101  #ifndef PASO_MPI  void Finley_ElementFile_createColoring(Finley_ElementFile* in,dim_t numNodes,dim_t* degreeOfFreedom);
102  Finley_ElementFile* Finley_ElementFile_alloc(ElementTypeId,dim_t);  void Finley_ElementFile_optimizeOrdering(Finley_ElementFile** in);
 #else  
 Finley_ElementFile* Finley_ElementFile_alloc( ElementTypeId, dim_t, Paso_MPIInfo* );  
 void Finley_ElementFile_setDomainFlags( Finley_ElementFile *in  );  
 #endif  
   
 void Finley_ElementFile_dealloc(Finley_ElementFile*);  
 void Finley_ElementFile_improveColoring(Finley_ElementFile* in,dim_t numNodes,dim_t* degreeOfFreedom);  
 void Finley_ElementFile_optimizeDistribution(Finley_ElementFile** in);  
103  void Finley_ElementFile_setNodeRange(dim_t*,dim_t*,Finley_ElementFile*);  void Finley_ElementFile_setNodeRange(dim_t*,dim_t*,Finley_ElementFile*);
104  void Finley_ElementFile_relableNodes(dim_t*,dim_t,Finley_ElementFile*);  void Finley_ElementFile_relableNodes(dim_t*,dim_t,Finley_ElementFile*);
105  void Finley_ElementFile_markNodes(dim_t*,dim_t,Finley_ElementFile*,dim_t);  void Finley_ElementFile_markNodes(dim_t*,dim_t,Finley_ElementFile*,dim_t);
106  void Finley_ElementFile_scatter(dim_t*,Finley_ElementFile*,Finley_ElementFile*);  void Finley_ElementFile_scatter(dim_t*,Finley_ElementFile*,Finley_ElementFile*);
107  void Finley_ElementFile_gather(dim_t*,Finley_ElementFile*,Finley_ElementFile*);  void Finley_ElementFile_gather(dim_t*,Finley_ElementFile*,Finley_ElementFile*);
108  void Finley_ElementFile_copyTable(dim_t,Finley_ElementFile*,dim_t,dim_t,Finley_ElementFile*);  void Finley_ElementFile_copyTable(dim_t,Finley_ElementFile*,dim_t,dim_t,Finley_ElementFile*);
109  void Finley_ElementFile_allocTable(Finley_ElementFile*,dim_t);  void Finley_ElementFile_markDOFsConnectedToRange(index_t* mask,index_t offset,index_t marker,index_t firstDOF,index_t lastDOF,index_t *dofIndex,Finley_ElementFile*in ,bool_t useLinear);
110  void Finley_ElementFile_deallocTable(Finley_ElementFile*);  
 void Finley_ElementFile_prepare(Finley_ElementFile** in,dim_t numNodes,dim_t* degreeOfFreedom);  
111  void Finley_ElementFile_setTags(Finley_ElementFile*,const int,escriptDataC*);  void Finley_ElementFile_setTags(Finley_ElementFile*,const int,escriptDataC*);
112  Finley_ElementFile_Jacobeans* Finley_ElementFile_Jacobeans_alloc(Finley_RefElement*);  Finley_ElementFile_Jacobeans* Finley_ElementFile_Jacobeans_alloc(Finley_RefElement*);
113  void Finley_ElementFile_Jacobeans_dealloc(Finley_ElementFile_Jacobeans*);  void Finley_ElementFile_Jacobeans_dealloc(Finley_ElementFile_Jacobeans*);
# Line 122  Finley_ElementFile_Jacobeans* Finley_Ele Line 116  Finley_ElementFile_Jacobeans* Finley_Ele
116    
117  #endif /* #ifndef INC_FINLEY_ELEMENTFILE */  #endif /* #ifndef INC_FINLEY_ELEMENTFILE */
118    
 /*  
  * $Log$  
  * Revision 1.3  2005/09/15 03:44:21  jgs  
  * Merge of development branch dev-02 back to main trunk on 2005-09-15  
  *  
  * Revision 1.2.2.1  2005/09/07 06:26:18  gross  
  * the solver from finley are put into the standalone package paso now  
  *  
  * Revision 1.2  2005/07/08 04:07:49  jgs  
  * Merge of development branch back to main trunk on 2005-07-08  
  *  
  * Revision 1.1.1.1.2.1  2005/06/29 02:34:49  gross  
  * some changes towards 64 integers in finley  
  *  
  * Revision 1.1.1.1  2004/10/26 06:53:57  jgs  
  * initial import of project esys2  
  *  
  * Revision 1.1.1.1  2004/06/24 04:00:40  johng  
  * Initial version of eys using boost-python.  
  *  
  *  
 */  

Legend:
Removed from v.964  
changed lines
  Added in v.1384

  ViewVC Help
Powered by ViewVC 1.1.26