Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef INC_FINLEY_ELEMENTFILE
00016 #define INC_FINLEY_ELEMENTFILE
00017
00018 #include "Finley.h"
00019 #include "NodeFile.h"
00020 #include "ReferenceElementSets.h"
00021 #include "escript/DataC.h"
00022
00023 #ifdef ESYS_MPI
00024 #include "esysUtils/Esys_MPI.h"
00025 #endif
00026
00027
00028 struct Finley_ElementFile_Jacobeans {
00029 Finley_Status_t status;
00030 dim_t numDim;
00031 Finley_ShapeFunction* BasisFunctions;
00032 dim_t numQuadTotal;
00033 dim_t numSides;
00034 index_t* offsets;
00035 dim_t numSub;
00036 dim_t numShapesTotal;
00037 index_t* node_selection;
00038 dim_t numElements;
00039 double* volume;
00040 double* DSDX;
00041 };
00042
00043 typedef struct Finley_ElementFile_Jacobeans Finley_ElementFile_Jacobeans;
00044
00045 struct Finley_ElementFile {
00046 Esys_MPIInfo *MPIInfo;
00047 Esys_MPI_rank *Owner;
00048
00049 Finley_ReferenceElementSet *referenceElementSet;
00050
00051 dim_t numElements;
00052
00053 index_t *Id;
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063 index_t *Tag;
00064
00065 index_t *tagsInUse;
00066 dim_t numTagsInUse;
00067
00068
00069 dim_t numNodes;
00070 index_t *Nodes;
00071
00072
00073
00074
00075
00076
00077
00078 index_t minColor;
00079 index_t maxColor;
00080 index_t *Color;
00081
00082
00083
00084
00085 Finley_ElementFile_Jacobeans* jacobeans;
00086 Finley_ElementFile_Jacobeans* jacobeans_reducedS;
00087 Finley_ElementFile_Jacobeans* jacobeans_reducedQ;
00088 Finley_ElementFile_Jacobeans* jacobeans_reducedS_reducedQ;
00089
00090 };
00091
00092 typedef struct Finley_ElementFile Finley_ElementFile;
00093 Finley_ElementFile* Finley_ElementFile_alloc(Finley_ReferenceElementSet* referenceElementSet, Esys_MPIInfo *MPIInfo);
00094 void Finley_ElementFile_free(Finley_ElementFile*);
00095 void Finley_ElementFile_allocTable(Finley_ElementFile*,dim_t);
00096 void Finley_ElementFile_freeTable(Finley_ElementFile*);
00097 void Finley_ElementFile_setElementDistribution(Finley_ElementFile* in, dim_t* distribution);
00098 dim_t Finley_ElementFile_getGlobalNumElements(Finley_ElementFile* in);
00099 dim_t Finley_ElementFile_getMyNumElements(Finley_ElementFile* in);
00100 index_t Finley_ElementFile_getFirstElement(Finley_ElementFile* in);
00101 void Finley_ElementFile_distributeByRankOfDOF(Finley_ElementFile* self, Esys_MPI_rank* mpiRankOfDOF, index_t *Id);
00102
00103 void Finley_ElementFile_createColoring(Finley_ElementFile* in,dim_t numNodes,dim_t* degreeOfFreedom);
00104 void Finley_ElementFile_optimizeOrdering(Finley_ElementFile** in);
00105 void Finley_ElementFile_setNodeRange(dim_t*,dim_t*,Finley_ElementFile*);
00106 void Finley_ElementFile_relableNodes(dim_t*,dim_t,Finley_ElementFile*);
00107 void Finley_ElementFile_markNodes(dim_t*,dim_t,dim_t,Finley_ElementFile*,dim_t);
00108 void Finley_ElementFile_scatter(dim_t*,Finley_ElementFile*,Finley_ElementFile*);
00109 void Finley_ElementFile_gather(dim_t*,Finley_ElementFile*,Finley_ElementFile*);
00110 void Finley_ElementFile_copyTable(dim_t,Finley_ElementFile*,dim_t,dim_t,Finley_ElementFile*);
00111 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);
00112
00113 void Finley_ElementFile_setTags(Finley_ElementFile* ,const int, escriptDataC*);
00114 Finley_ElementFile_Jacobeans* Finley_ElementFile_Jacobeans_alloc(Finley_ShapeFunction* );
00115 void Finley_ElementFile_Jacobeans_dealloc(Finley_ElementFile_Jacobeans*);
00116 Finley_ElementFile_Jacobeans* Finley_ElementFile_borrowJacobeans(Finley_ElementFile*, Finley_NodeFile*, bool_t, bool_t);
00117 void Finley_ElementFile_setTagsInUse(Finley_ElementFile* in);
00118
00119
00120 #endif
00121