| /** | |
| * @defgroup global_mc global_mc class | |
| * @brief Global group for MC | |
| */ | |
| /** | |
| * @file mc_base.h | |
| * @ingroup global_mc | |
| * @brief The base (or foundation) header for MC. | |
| * @author Michael Holst | |
| * @note None | |
| * @version $Id: mc_base.h,v 1.30 2010/08/12 05:18:40 fetk Exp $ | |
| * | |
| * @attention | |
| * @verbatim | |
| * | |
| * MC = < Manifold Code > | |
| * Copyright (C) 1994-- Michael Holst | |
| * | |
| * This library is free software; you can redistribute it and/or | |
| * modify it under the terms of the GNU Lesser General Public | |
| * License as published by the Free Software Foundation; either | |
| * version 2.1 of the License, or (at your option) any later version. | |
| * | |
| * This library is distributed in the hope that it will be useful, | |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| * Lesser General Public License for more details. | |
| * | |
| * You should have received a copy of the GNU Lesser General Public | |
| * License along with this library; if not, write to the Free Software | |
| * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| * | |
| * @endverbatim | |
| */ | |
| /* | |
| * *************************************************************************** | |
| * Some parameters | |
| * *************************************************************************** | |
| */ | |
| /** @brief Some parameters */ | |
| /* define SPARSE_CUTOFF 60000 */ | |
| /* define SPARSE_CUTOFF 10000 */ | |
| /* define SPARSE_CUTOFF 1000 */ | |
| /* define SPARSE_CUTOFF 40 */ | |
| /* define SPARSE_CUTOFF 5 */ | |
| /** @brief max num of matrix blocks allowed */ | |
| /** @brief max num of boundary types allowed */ | |
| /** @brief max num of links per row in lnkmats */ | |
| /** @brief 3=max quadrature order (3=exact for cubics) */ | |
| /** @brief 20=max number of polys/coefs (20=up to 3D cubics) */ | |
| /** @brief 20=max number of quadrature points allowed */ | |
| /** @brief 10=max degrees of freedom per v/e/f/s allowed */ | |
| /** @brief permutations of (0,1,2) to label rows in Re::spmt */ | |
| /** @brief and Re::spmthi arrays, which describe automorphisms */ | |
| /** @brief of the set of surface quadrature points under */ | |
| /** @brief permutations of vertices of a triangular face */ | |
| /** @brief permutations of surface quadrature points */ | |
| /** @brief permutations of volumn quadrature points */ | |
| /** @brief struct quadInfo */ | |
| typedef struct quadInfo { | |
| /** @brief master element integration weight */ | |
| double w; | |
| /** @brief master element integration point */ | |
| double x[3]; | |
| /** @brief values of local basis funcs at integ pt */ | |
| double phi[VMAXP]; | |
| /** @brief x-derivs of local basis funcs at integ pt */ | |
| double phix[VMAXP]; | |
| /** @brief y-derivs of local basis funcs at integ pt */ | |
| double phiy[VMAXP]; | |
| /** @brief z-derivs of local basis funcs at integ pt */ | |
| double phiz[VMAXP]; | |
| } quadInfo; | |
| /** @brief struct simHelper */ | |
| typedef struct simHelper { | |
| /** @brief current color */ | |
| int color; | |
| /** @brief row sum for the matrix diagonal entry */ | |
| int diag; | |
| /** @brief global face numbers for global faces we keep */ | |
| int faceId[4]; | |
| /** @brief mass for the element */ | |
| double mass; | |
| /** @brief error estimate for the element */ | |
| double error; | |
| /** @brief baricenter */ | |
| double bc[3]; | |
| } simHelper; | |
| /** @brief struct Emat */ | |
| typedef struct Emat { | |
| /** @brief global index for the node */ | |
| int NI[MAXV][VMAXP]; | |
| /** @brief boundary type for the node */ | |
| int TP[MAXV][VMAXP]; | |
| /** @brief the element of the force block vector*/ | |
| double F[MAXV][VMAXP]; | |
| /** @brief the element of the stiffness matrix */ | |
| double A[MAXV][MAXV][VMAXP][VMAXP]; | |
| /** @brief the element of the mass matrix */ | |
| double M[MAXV][MAXV][VMAXP][VMAXP]; | |
| /** @brief the energy */ | |
| double J; | |
| } Emat; | |
| /* | |
| * *************************************************************************** | |
| * Inlining via macros for speed | |
| * *************************************************************************** | |
| */ | |
| /** @brief Inlining via macros for speed */ | |
| /** @brief Inlining via macros for speed */ | |
| /** @brief Inlining via macros for speed */ | |
| /** @brief Inlining via macros for speed */ | |
| /** @brief Inlining via macros for speed */ | |
| /** @brief Inlining via macros for speed */ | |
| /** @brief Inlining via macros for speed */ | |
| /** @brief Inlining via macros for speed */ | |
| /* | |
| * *************************************************************************** | |
| * General element support | |
| * *************************************************************************** | |
| */ | |
| /** @brief General element support */ | |
| /** @brief Some macros */ | |
| /** @brief Some macros */ | |
| /** @brief Some macros */ | |
| /** @brief Some macros */ | |