aprx.h File Reference

Class Aprx: the APpRoXimation library object. More...

#include <mc/mc_base.h>
#include <mc/gem.h>
#include <mc/bam.h>
#include <mc/whb.h>
#include <mc/re.h>
#include <mc/node.h>
#include <mc/bnode.h>

Include dependency graph for aprx.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  sAprx
 Class Aprx: Parameters and datatypes Class Aprx: Definition. More...

Typedefs

typedef struct sAprx Aprx
 Declaration of the Aprx class as the Aprx structure.

Functions

AprxAprx_ctor (Vmem *vmem, Gem *tgm, PDE *tpde)
 Construct a linear Approximation object.
AprxAprx_ctor2 (Vmem *vmem, Gem *tgm, PDE *tpde, int order)
 Approximation object constructor.
void Aprx_dtor (Aprx **thee)
 Approximation object destructor.
int Aprx_numB (Aprx *thee)
 Return the number of blocks.
BmatAprx_P (Aprx *thee)
 Return a pointer to the current prolongation matrix.
int Aprx_read (Aprx *thee, int key, Vio *sock)
 Read in the user-specified initial mesh given in the "MCSF" or "MCEF" format, and transform into our internal datastructures.
Do a little more than a "Gem_read", in that we also initialize the extrinsic and intrinsic spatial dimensions corresponding to the input mesh, and we also then build the reference elements.
void Aprx_reset (Aprx *thee)
 Reset all of the datastructures.
void Aprx_initNodes (Aprx *thee)
 Make node information.
void Aprx_buildNodes (Aprx *thee)
 Determine the node types via a single fast traversal of the elements by looking at the element faces.
void Aprx_evalTrace (Aprx *thee, Bvec *Wud, Bvec *Wui, Bvec *Wut)
 Evaluate the trace information.
int Aprx_refine (Aprx *thee, int rkey, int bkey, int pkey)
 Refine the mesh.
int Aprx_unRefine (Aprx *thee, int rkey, int pkey)
 Unrefine the mesh.
int Aprx_deform (Aprx *thee, Bvec *def)
 Deform the mesh.
void Aprx_buildProlong (Aprx *thee, int numRc, int numR, int pkey)
 Create storage for and build prolongation operator; the operator prolongates a vector FROM a coarser level TO this level.
void Aprx_buildProlongBmat (Aprx *thee, Mat *p)
 Create block version of prolongation operator; also updates the Bnode object.
int Aprx_nodeCount (Aprx *thee, Re *re)
 Count up the total number of basis functions (nodes). This is basically an a priori count of the number of rows in the stiffness matrix.
void Aprx_interact (Aprx *thee, Re *re, Re *reT, int *numR, int *numO, int *numOYR, int **IJA, int **IJAYR)
 Count the number of basis (linear/quadratic/etc) functions which interact with a given basis function. This is basically an a priori count of the number of nonzeros per row in the stiffness matrix, and the number of nozeros per row above the diagonal (and thus the number of nonzeros per column below the diagonal if we have symmetric nonzero structure). By doing this count, we can one-time malloc storage for matrices before assembly, and avoid extra copies as well as avoid the use of linked list structures for representing matrices with a priori unknown nonzero structure.
void Aprx_interactBlock (Aprx *thee, Re *re[MAXV], Re *reT[MAXV], MATsym sym[MAXV][MAXV], MATmirror mirror[MAXV][MAXV], MATformat frmt[MAXV][MAXV], int numR[MAXV], int numO[MAXV][MAXV], int *IJA[MAXV][MAXV])
 Determine all basis function interations.
int Aprx_nodeIndex (Aprx *thee, Re *re, int i, int dim, int q)
 Compute global index of node of dimension dim in the matrix.
int Aprx_nodeIndexTT (Aprx *thee, Re *re, TT *t, int idf)
 Given an index of node DF within the simplex and its TT structure, compute global index for that node.
void Aprx_buildBRC (Aprx *thee, Bmat *A, Bmat *M)
 Build boundary Bnode information into two Bmats.
void Aprx_initSpace (Aprx *thee, int i, int r, double phi[], double phix[][3], double V[], double dV[][3])
 Initialize vector test function "i" and its gradient, generated by scalar test function "r" for this element.
void Aprx_initEmat (Aprx *thee, int bumpKey, TT *t, Emat *em)
 Initialize an element matrix.
void Aprx_quadEmat (Aprx *thee, int evalKey, int energyKey, int residKey, int tangKey, int massKey, int bumpKey, int face, TT *t, Emat *em, Bvec *Wu, Bvec *Wud)
 Build an element matrix and an element load vector for a single given element, using quadrature.
void Aprx_fanEmat (Aprx *thee, int evalKey, int energyKey, int residKey, int tangKey, int massKey, int bumpKey, Emat *em, Bmat *A, Bmat *M, Bvec *F)
 Fan out an element matrix to the global matrix, and fan out an element vector to the global vector.
void Aprx_assemEmat (Aprx *thee, SS *sm, int evalKey, int energyKey, int residKey, int tangKey, int massKey, int bumpKey, Emat *em, Bvec *Wu, Bvec *Wud)
 Assemble one element matrix.
double Aprx_assem (Aprx *thee, int evalKey, int energyKey, int residKey, int tangKey, int massKey, int bumpKey, int ip[], double rp[], Bmat *A, Bmat *M, Bvec *F, Bvec *Wu, Bvec *Wud)
 Assemble the tangent matrix and nonlinear residual vector (which reduces to the normal stiffness matrix and load vector in the case of a linear problem) for a general nonlinear system of m components in spatial dimension d.
int Aprx_markRefine (Aprx *thee, int key, int color, int bkey, double elevel, Bvec *u, Bvec *ud, Bvec *f, Bvec *r)
 Mark simplices to be refined.
int Aprx_estRefine (Aprx *thee, int key, int color, int bkey, double elevel, Bvec *u, Bvec *ud, Bvec *f, Bvec *r)
 A posteriori error estimation via several different approaches.
int Aprx_markRefineFixed (Aprx *thee, int num2ref, int color)
 Selects a fixed number/fraction of simplicies to be refined.
void Aprx_evalFunc (Aprx *thee, Bvec *u, int block, int numPts, double *pts, double *vals, int *marks)
 Evaluate a finite element solution at a set of arbitrary points.
void Aprx_fe2fd (Aprx *thee, Bvec *u, int block, int nx, int ny, int nz, double x0, double y0, double z0, double dx, double dy, double dz, int derivs, int outTypeKey)
 Interpolates data onto finite difference grid.
void Aprx_bndIntegral (Aprx *thee, Bvec *u, Bvec *ud, Bvec *ut)
 Evaluate a given boundary integral.
void Aprx_admMass (Aprx *thee, Bvec *u, Bvec *ud, Bvec *ut, int block)
 Evaluate ADM mass from conformal factor.
double Aprx_evalError (Aprx *thee, int pcolor, int key, Bvec *u, Bvec *ud, Bvec *ut)
 Evaluate error in solution in one of several norms.
double Aprx_evalH1 (Aprx *thee, SS *sm, Bvec *u, Bvec *ud, Bvec *ut)
 Evaluate difference of two functions in H1 norm in one element.
void Aprx_writeGEOM (Aprx *thee, Vio *sock, int defKey, int colKey, int chartKey, double gluVal, int fkey, Bvec *u, char *format)
 Write a finite element mesh or mesh function in some format.
void Aprx_writeSOL (Aprx *thee, Vio *sock, Bvec *u, char *format)
 Write a finite element mesh or mesh function in some format.
int Aprx_partSet (Aprx *thee, int pcolor)
 Clear the partitioning (set all colors to pcolor).
int Aprx_partSmooth (Aprx *thee)
 Smooth the partitioning.
int Aprx_partInert (Aprx *thee, int pcolor, int numC, double *evec, simHelper *simH)
 Partition the domain using inertial bisection. Partition sets of points in R^d (d=2 or d=3) by viewing them as point masses of a rigid body, and by then employing the classical mechanics ideas of inertia and Euler axes.
int Aprx_partSpect (Aprx *thee, int pcolor, int numC, double *evec, simHelper *simH, int *ford, int *rord, int general)
 Partition the domain using spectral bisection.
int Aprx_part (Aprx *thee, int pkey, int pwht, int ppow)
 Do recursive bisection.
int Aprx_partOne (Aprx *thee, int pkey, int pwht, int pcolor, int poff)
 Do a single bisection step.


Detailed Description

Class Aprx: the APpRoXimation library object.

Author:
Michael Holst
Note:
None
Version:
Id
aprx.h,v 1.36 2010/07/13 13:22:28 fetk Exp

Attention:
 *
 * MC = < Manifold Code >
 * Copyright (C) 1994--2008 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
 *
 *  

Generated on Mon Aug 9 11:13:38 2010 for MC by  doxygen 1.5.6