Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef INC_DUDLEY_ELEMENTFILE
00015 #define INC_DUDLEY_ELEMENTFILE
00016
00017 #include "Dudley.h"
00018 #include "NodeFile.h"
00019 #include "ElementType.h"
00020 #include "escript/DataC.h"
00021
00022 #ifdef ESYS_MPI
00023 #include "esysUtils/Esys_MPI.h"
00024 #endif
00025
00026 typedef struct {
00027 Dudley_Status_t status;
00028 dim_t numDim;
00029 dim_t numQuad;
00030 dim_t numShapes;
00031 dim_t numElements;
00032 double *absD;
00033 double quadweight;
00034 double *DSDX;
00035 } Dudley_ElementFile_Jacobeans;
00036
00037 struct Dudley_ElementFile {
00038 Esys_MPIInfo *MPIInfo;
00039 Esys_MPI_rank *Owner;
00040
00041 dim_t numElements;
00042
00043 index_t *Id;
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053 index_t *Tag;
00054
00055 index_t *tagsInUse;
00056 dim_t numTagsInUse;
00057
00058 dim_t numNodes;
00059 index_t *Nodes;
00060
00061
00062
00063
00064
00065
00066
00067
00068 index_t minColor;
00069 index_t maxColor;
00070 index_t *Color;
00071
00072
00073
00074
00075 Dudley_ElementFile_Jacobeans *jacobeans;
00076 Dudley_ElementFile_Jacobeans *jacobeans_reducedQ;
00077 dim_t numDim;
00078 dim_t numLocalDim;
00079 Dudley_ElementTypeId etype;
00080 const char *ename;
00081 dim_t numShapes;
00082 };
00083
00084 typedef struct Dudley_ElementFile Dudley_ElementFile;
00085 Dudley_ElementFile *Dudley_ElementFile_alloc(Dudley_ElementTypeId etype, Esys_MPIInfo * MPIInfo);
00086 void Dudley_ElementFile_free(Dudley_ElementFile *);
00087 void Dudley_ElementFile_allocTable(Dudley_ElementFile *, dim_t);
00088 void Dudley_ElementFile_freeTable(Dudley_ElementFile *);
00089 void Dudley_ElementFile_setElementDistribution(Dudley_ElementFile * in, dim_t * distribution);
00090 dim_t Dudley_ElementFile_getGlobalNumElements(Dudley_ElementFile * in);
00091 dim_t Dudley_ElementFile_getMyNumElements(Dudley_ElementFile * in);
00092 index_t Dudley_ElementFile_getFirstElement(Dudley_ElementFile * in);
00093 void Dudley_ElementFile_distributeByRankOfDOF(Dudley_ElementFile * self, Esys_MPI_rank * mpiRankOfDOF, index_t * Id);
00094
00095 void Dudley_ElementFile_createColoring(Dudley_ElementFile * in, dim_t numNodes, dim_t * degreeOfFreedom);
00096 void Dudley_ElementFile_optimizeOrdering(Dudley_ElementFile ** in);
00097 void Dudley_ElementFile_setNodeRange(dim_t *, dim_t *, Dudley_ElementFile *);
00098 void Dudley_ElementFile_relableNodes(dim_t *, dim_t, Dudley_ElementFile *);
00099 void Dudley_ElementFile_markNodes(dim_t *, dim_t, dim_t, Dudley_ElementFile *, dim_t);
00100 void Dudley_ElementFile_scatter(dim_t *, Dudley_ElementFile *, Dudley_ElementFile *);
00101 void Dudley_ElementFile_gather(dim_t *, Dudley_ElementFile *, Dudley_ElementFile *);
00102 void Dudley_ElementFile_copyTable(dim_t, Dudley_ElementFile *, dim_t, dim_t, Dudley_ElementFile *);
00103 void Dudley_ElementFile_markDOFsConnectedToRange(index_t * mask, index_t offset, index_t marker, index_t firstDOF,
00104 index_t lastDOF, index_t * dofIndex, Dudley_ElementFile * in,
00105 bool_t useLinear);
00106
00107 void Dudley_ElementFile_setTags(Dudley_ElementFile *, const int, escriptDataC *);
00108 Dudley_ElementFile_Jacobeans *Dudley_ElementFile_Jacobeans_alloc(void);
00109 void Dudley_ElementFile_Jacobeans_dealloc(Dudley_ElementFile_Jacobeans *);
00110 Dudley_ElementFile_Jacobeans *Dudley_ElementFile_borrowJacobeans(Dudley_ElementFile *, Dudley_NodeFile *, bool_t);
00111 void Dudley_ElementFile_setTagsInUse(Dudley_ElementFile * in);
00112
00113 #endif