ESYS13
Revision_
|
00001 00002 /******************************************************* 00003 * 00004 * Copyright (c) 2003-2012 by University of Queensland 00005 * Earth Systems Science Computational Center (ESSCC) 00006 * http://www.uq.edu.au/esscc 00007 * 00008 * Primary Business: Queensland, Australia 00009 * Licensed under the Open Software License version 3.0 00010 * http://www.opensource.org/licenses/osl-3.0.php 00011 * 00012 *******************************************************/ 00013 00014 /**************************************************************/ 00015 00016 /* assemblage routines: header file */ 00017 00018 /**************************************************************/ 00019 00020 #ifndef INC_DUDLEY_ASSEMBLE 00021 #define INC_DUDLEY_ASSEMBLE 00022 00023 /**************************************************************/ 00024 00025 #include "Dudley.h" 00026 #include "ElementFile.h" 00027 #include "NodeFile.h" 00028 #include "escript/DataC.h" 00029 #include "paso/SystemMatrix.h" 00030 00031 struct Dudley_Assemble_Parameters { 00032 dim_t numQuad; /* number of quadrature nodes */ 00033 dim_t numDim; /* spatial dimension */ 00034 dim_t NN; /* leading dimension of element node table */ 00035 dim_t numElements; /* number of elements */ 00036 00037 dim_t numEqu; 00038 index_t *row_DOF; 00039 dim_t row_DOF_UpperBound; 00040 Dudley_ElementFile_Jacobeans *row_jac; 00041 dim_t numShapes; 00042 00043 dim_t numComp; 00044 index_t *col_DOF; 00045 dim_t col_DOF_UpperBound; 00046 00047 const double *shapeFns; 00048 }; 00049 00050 typedef struct Dudley_Assemble_Parameters Dudley_Assemble_Parameters; 00051 00052 #define Dudley_Assemble_reducedIntegrationOrder(__in__) ( (getFunctionSpaceType(__in__) == DUDLEY_REDUCED_ELEMENTS) || (getFunctionSpaceType(__in__) == DUDLEY_REDUCED_FACE_ELEMENTS) ) 00053 00054 void Dudley_Assemble_PDE(Dudley_NodeFile *, Dudley_ElementFile *, Paso_SystemMatrix *, escriptDataC *, 00055 escriptDataC *, escriptDataC *, escriptDataC *, escriptDataC *, escriptDataC *, 00056 escriptDataC *); 00057 00058 00059 void Dudley_Assemble_getAssembleParameters(Dudley_NodeFile *, Dudley_ElementFile *, Paso_SystemMatrix *, escriptDataC *, 00060 bool_t, Dudley_Assemble_Parameters *); 00061 void Dudley_Assemble_PDE_System2_3D(Dudley_Assemble_Parameters, Dudley_ElementFile *, Paso_SystemMatrix *, escriptDataC *, 00062 escriptDataC *, escriptDataC *, escriptDataC *, escriptDataC *, escriptDataC *, 00063 escriptDataC *); 00064 void Dudley_Assemble_PDE_System2_2D(Dudley_Assemble_Parameters, Dudley_ElementFile *, Paso_SystemMatrix *, escriptDataC *, 00065 escriptDataC *, escriptDataC *, escriptDataC *, escriptDataC *, escriptDataC *, 00066 escriptDataC *); 00067 void Dudley_Assemble_PDE_System2_1D(Dudley_Assemble_Parameters, Dudley_ElementFile *, Paso_SystemMatrix *, escriptDataC *, 00068 escriptDataC *, escriptDataC *, escriptDataC *, escriptDataC *, escriptDataC *, 00069 escriptDataC *); 00070 00071 void Dudley_Assemble_PDE_Single2_3D(Dudley_Assemble_Parameters, Dudley_ElementFile *, Paso_SystemMatrix *, escriptDataC *, 00072 escriptDataC *, escriptDataC *, escriptDataC *, escriptDataC *, escriptDataC *, 00073 escriptDataC *); 00074 void Dudley_Assemble_PDE_Single2_2D(Dudley_Assemble_Parameters, Dudley_ElementFile *, Paso_SystemMatrix *, escriptDataC *, 00075 escriptDataC *, escriptDataC *, escriptDataC *, escriptDataC *, escriptDataC *, 00076 escriptDataC *); 00077 void Dudley_Assemble_PDE_Single2_1D(Dudley_Assemble_Parameters, Dudley_ElementFile *, Paso_SystemMatrix *, escriptDataC *, 00078 escriptDataC *, escriptDataC *, escriptDataC *, escriptDataC *, escriptDataC *, 00079 escriptDataC *); 00080 void Dudley_Assemble_PDE_Points(Dudley_Assemble_Parameters, Dudley_ElementFile *, Paso_SystemMatrix *, escriptDataC *, escriptDataC *, escriptDataC *); 00081 00082 void Dudley_Assemble_NodeCoordinates(Dudley_NodeFile *, escriptDataC *); 00083 void Dudley_Assemble_setNormal(Dudley_NodeFile *, Dudley_ElementFile *, escriptDataC *); 00084 void Dudley_Assemble_interpolate(Dudley_NodeFile *, Dudley_ElementFile *, escriptDataC *, escriptDataC *); 00085 void Dudley_Assemble_gradient(Dudley_NodeFile *, Dudley_ElementFile *, escriptDataC *, escriptDataC *); 00086 void Dudley_Assemble_integrate(Dudley_NodeFile *, Dudley_ElementFile *, escriptDataC *, double *); 00087 void Dudley_Assemble_getSize(Dudley_NodeFile *, Dudley_ElementFile *, escriptDataC *); 00088 void Dudley_Assemble_CopyNodalData(Dudley_NodeFile * nodes, escriptDataC * out, escriptDataC * in); 00089 void Dudley_Assemble_CopyElementData(Dudley_ElementFile * elements, escriptDataC * out, escriptDataC * in); 00090 void Dudley_Assemble_AverageElementData(Dudley_ElementFile * elements, escriptDataC * out, escriptDataC * in); 00091 void Dudley_Assemble_addToSystemMatrix(Paso_SystemMatrix * in, const dim_t NN_Equa, const index_t * Nodes_Equa, const dim_t num_Equa, 00092 const dim_t NN_Sol, const index_t * Nodes_Sol, const dim_t num_Sol, const double *array); 00093 00094 void Dudley_Assemble_jacobeans_2D(double *, dim_t, dim_t, dim_t, index_t *, double *, double *abs_D, double *quadweight, 00095 index_t *); 00096 void Dudley_Assemble_jacobeans_2D_M1D_E1D(double *, dim_t, dim_t, dim_t, index_t *, double *, double *abs_D, 00097 double *quadweight, index_t *); 00098 void Dudley_Assemble_jacobeans_3D(double *, dim_t, dim_t, dim_t, index_t *, double *, double *abs_D, double *quadweight, 00099 index_t *); 00100 void Dudley_Assemble_jacobeans_3D_M2D_E2D(double *, dim_t, dim_t, dim_t, index_t *, double *, double *abs_D, 00101 double *quadweight, index_t *); 00102 00103 void Dudley_Assemble_LumpedSystem(Dudley_NodeFile * nodes, Dudley_ElementFile * elements, escriptDataC * lumpedMat, 00104 escriptDataC * D, const bool_t useHRZ); 00105 #endif /* #ifndef INC_DUDLEY_ASSEMBLE */