MOAB: Mesh Oriented datABase  (version 5.4.1)
V_GaussIntegration.hpp
Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Module:    $RCSfile: V_GaussIntegration.hpp,v $
00004 
00005   Copyright (c) 2006 Sandia Corporation.
00006   All rights reserved.
00007   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00008 
00009      This software is distributed WITHOUT ANY WARRANTY; without even
00010      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00011      PURPOSE.  See the above copyright notice for more information.
00012 
00013 =========================================================================*/
00014 
00015 /*
00016  *
00017  * GaussIntegration.hpp declaration of gauss integration functions
00018  *
00019  * This file is part of VERDICT
00020  *
00021  */
00022 
00023 #ifndef GAUSS_INTEGRATION_HPP
00024 #define GAUSS_INTEGRATION_HPP
00025 
00026 #include "moab/verdict.h"
00027 
00028 #define maxTotalNumberGaussPoints 27
00029 #define maxNumberNodes            20
00030 #define maxNumberGaussPoints      3
00031 #define maxNumberGaussPointsTri   6
00032 #define maxNumberGaussPointsTet   4
00033 
00034 namespace GaussIntegration
00035 {
00036 
00037 void get_signs_for_node_local_coord_hex( int node_id, double& sign_y1, double& sign_y2, double& sign_y3 );
00038 //- to get the signs for  coordinates of hex nodes in the local computational space
00039 
00040 // constructors
00041 void initialize( int n = 2, int m = 4, int dim = 2, int tri = 0 );
00042 
00043 // manipulators
00044 void get_gauss_pts_and_weight();
00045 //- get gauss point locations and weights
00046 
00047 void get_tri_rule_pts_and_weight();
00048 //- get integration points and weights for triangular rules
00049 
00050 void calculate_shape_function_2d_tri();
00051 //- calculate the shape functions and derivatives of shape functions
00052 //- at integration points for 2D triangular elements
00053 
00054 void calculate_shape_function_2d_quad();
00055 //- calculate the shape functions and derivatives of shape functions
00056 //- at gaussian points for 2D quad elements
00057 
00058 void get_shape_func( double shape_function[],
00059                      double dndy1_at_gauss_pts[],
00060                      double dndy2_at_gauss_ptsp[],
00061                      double gauss_weight[] );
00062 //- get shape functions and the derivatives
00063 
00064 void get_shape_func( double shape_function[],
00065                      double dndy1_at_gauss_pts[],
00066                      double dndy2_at_gauss_pts[],
00067                      double dndy3_at_gauss_pts[],
00068                      double gauss_weight[] );
00069 //- get shape functions and the derivatives for 3D elements
00070 
00071 void calculate_derivative_at_nodes( double dndy1_at_nodes[][maxNumberNodes], double dndy2_at_nodes[][maxNumberNodes] );
00072 //- calculate shape function derivatives at nodes
00073 
00074 void calculate_shape_function_3d_hex();
00075 //- calculate shape functions and derivatives of shape functions
00076 //- at gaussian points for 3D hex elements
00077 
00078 void calculate_derivative_at_nodes_3d( double dndy1_at_nodes[][maxNumberNodes],
00079                                        double dndy2_at_nodes[][maxNumberNodes],
00080                                        double dndy3_at_nodes[][maxNumberNodes] );
00081 //- calculate shape function derivatives at nodes for hex elements
00082 
00083 void calculate_derivative_at_nodes_2d_tri( double dndy1_at_nodes[][maxNumberNodes],
00084                                            double dndy2_at_nodes[][maxNumberNodes] );
00085 //- calculate shape function derivatives at nodes for triangular elements
00086 
00087 void calculate_shape_function_3d_tet();
00088 //- calculate shape functions and derivatives of shape functions
00089 //- at integration points for 3D tet elements
00090 
00091 void get_tet_rule_pts_and_weight();
00092 //- get integration points and weights for tetrhedron rules
00093 
00094 void calculate_derivative_at_nodes_3d_tet( double dndy1_at_nodes[][maxNumberNodes],
00095                                            double dndy2_at_nodes[][maxNumberNodes],
00096                                            double dndy3_at_nodes[][maxNumberNodes] );
00097 //- calculate shape function derivatives at nodes for tetrahedron elements
00098 
00099 void get_node_local_coord_tet( int node_id, double& y1, double& y2, double& y3, double& y4 );
00100 //- get nodal volume coordinates for tetrahedron element
00101 }  // namespace GaussIntegration
00102 
00103 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines