MOAB: Mesh Oriented datABase
(version 5.4.1)
|
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