Main Page | File List | File Members

mypde.c File Reference

Class PDE methods. More...

#include "mypde.h"

Functions

VPRIVATE void initAssemble (PDE *thee, int ip[], double rp[])
VPRIVATE void initElement (PDE *thee, int elementType, int chart, double tvx[][3], void *data)
VPRIVATE void initFace (PDE *thee, int face, int chart, double tnvec[])
VPRIVATE void initPoint (PDE *thee, int pointType, int chart, double txq[], double tU[], double tdU[][3], double phi[], double phix[][3])
VPRIVATE void Fu (PDE *thee, int key, double F[])
VPRIVATE double Ju (PDE *thee, int key)
VPRIVATE double Fu_v (PDE *thee, int key, double V[], double dV[][3])
VPRIVATE double DFu_wv (PDE *thee, int key, double W[], double dW[][3], double V[], double dV[][3])
VPRIVATE double p_wv (PDE *thee, int key, double W[], double V[])
VPRIVATE void u_D (PDE *thee, int type, int chart, double txq[], double F[])
VPRIVATE void u_T (PDE *thee, int type, int chart, double txq[], double F[])
VPRIVATE void bisectEdge (int dim, int dimII, int edgeType, int chart[], double vx[][3])
VPRIVATE int markSimplex (int dim, int dimII, int simplexType, int faceType[4], int vertexType[4], int chart[], double vx[][3], void *data)
VPRIVATE void oneChart (int dim, int dimII, int objType, int chart[], double vx[][3], int dimV)
VPRIVATE void mapBoundary (int dim, int dimII, int vertexType, int chart, double vx[3])
VPRIVATE void delta (PDE *thee, int type, int chart, double txq[], void *user, double F[])
VPUBLIC PDE * myPDE_ctor ()
VPUBLIC void myPDE_dtor (PDE *thee)
VPUBLIC double PDE_getTime (PDE *thee)
VPUBLIC Vusr * usr_ctor ()
VPUBLIC void usr_dtor (Vusr *thee)
VPUBLIC Vmodel * model_ctor ()
VPUBLIC void model_dtor (Vmodel *thee)

Variables

VPRIVATE double flux [3]
VPRIVATE double ndotflux
VPRIVATE double Diff
VPRIVATE double expp
VPRIVATE double paramM
VPRIVATE double paramA
VPRIVATE double tcurv
VPRIVATE double U [MAXV]
VPRIVATE double dU [MAXV][3]
VPRIVATE double Pot
VPRIVATE double dPot [3]
VPRIVATE double ddU [3]
VPRIVATE double nvec [3]
VPRIVATE double xq [3]
VPRIVATE double curv [3]
VPRIVATE int fType
VPRIVATE int ekey
VPRIVATE TT * myt
VPRIVATE Vmodel * model


Detailed Description

Class PDE methods.

Problem type: time-dependent, Diffusion-reaction Spatial dimension: 2 or 3 Product dimension: 1 Differential operator: Linear or nonlinear potential equation with symmetric or nonsymmetric linear part Boundary conditions: zero or nonzero Dirichlet conditions nonzero or zero Neumann/Robin conditions

Note: Equation for component i is defined as

sum(del(A_ij del(u_j))) = B_i in omega -n dot sum(A_ij del(u_j)) = C_i along natural boundaries

_____ \ ____ ____ \ \ /. A_ij \ / u_j = B_i in omega / \/ \/ /____ j

____ \ ____ \ -n . A_ij \ / u_j = C_i along natural boundaries / \/ /___ j

Author:
Yuhui Cheng, modified after Michael Holst, Nathan Baker, Kaihsu Tai & Jason Suen.
Version:
Id
mypde.c 1046 2007-07-10 16:58:40Z sobolevnrm
Attention:
 *
 * SMOL -- Adaptive Smoluchowski Solver
 *
 * Yuhui Cheng (ycheng@mccammon.ucsd.edu)
 * Dept. of Chemistry and Biochemistry
 * University of California, San Diego
 *
 * Additional contributing authors listed in the code documentation.
 *
 * Copyright (c) 2006-2007.  University of California, San Diego
 * All Rights Reserved.
 * Portions Copyright (c) 1995.  Michael Holst.
 *
 * This file is part of SMOL.
 *
 * SMOL is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
*
 * SMOL 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with SMOL; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 * USA
 *
 * Linking SMOL statically or dynamically with other modules is making a
 * combined work based on SMOL. Thus, the terms and conditions of the
 * GNU
 * General Public License cover the whole combination.
 *
 * SPECIAL GPL EXCEPTION
 * In addition, as a special exception, the copyright holders of SMOL
 * give you permission to combine the SMOL program with free software
 * programs and libraries that are released under the GNU LGPL or with
 * code included in releases of ISIM, Ion Simulator Interface, PMV,
 * PyMOL
 * VMD, and Vision. Such combined software may be linked with SMOL
 * and
 * redistributed together in original or modified form as mere
 * aggregation
 * without requirement that the entire work be under the scope of the
 * GNU
 * General Public License. This special exception permission is also
 * extended
 * to any software listed in the SPECIAL GPL EXCEPTION clauses by the
 * FEtk, MC, or MALOC libraries.
 *
 * Note that people who make modified versions of SMOL are not obligated
 * to grant this special exception for their modified versions; it is
 * their choice whether to do so. The GNU General Public License gives
 * permission to release a modified version without this exception; this
 * exception also makes it possible to release a modified version which
 * carries forward this exception.
 *
 * 

Function Documentation

VPRIVATE void bisectEdge int  dim,
int  dimII,
int  edgeType,
int  chart[],
double  vx[][3]
 

Define the way manifold edges are bisected.

VPRIVATE void delta PDE *  thee,
int  type,
int  chart,
double  txq[],
void *  user,
double  F[]
 

At the single given point x, evaluate a delta function source term (if one is present): delta = g(x).

VPRIVATE double DFu_wv PDE *  thee,
int  key,
double  W[],
double  dW[][3],
double  V[],
double  dV[][3]
 

Evaluate the integrand DF(u)(w,v) of the functional <DF(u)w,v> at the single point x.

VPRIVATE void Fu PDE *  thee,
int  key,
double  F[]
 

Evaluate the strong form of the differential operator F(u) at the single point x.

For piecewise-linear basis functions, the Laplacian of the solution is zero. We've also assumed a constant isotropic diffusion coefficient, so we can simply distribute the divergence operator: Interior point residual

internal node contribution.

Inner non-reactive boundary form case. Neumann face residual: we could have two different face types here if we've implemented "radiative" reaction conditions.

Interior face residual: this is the "jump term" across simplices

VPRIVATE double Fu_v PDE *  thee,
int  key,
double  V[],
double  dV[][3]
 

Evaluate the integrand F(u)(v) of the functional <F(u),v> at the single point x.

VPRIVATE void initAssemble PDE *  thee,
int  ip[],
double  rp[]
 

< substrate diffusion coefficient

< parameter for adding the mass matrix M into the stiffness matrix A.

< parameter for the stiffness matrix A.

VPRIVATE void initElement PDE *  thee,
int  elementType,
int  chart,
double  tvx[][3],
void *  data
 

Do once-per-element initialization.

< the pointer for the current simplex.

VPRIVATE void initFace PDE *  thee,
int  face,
int  chart,
double  tnvec[]
 

Do once-per-face initialization.

< global face types in the current simplex

VPRIVATE void initPoint PDE *  thee,
int  pointType,
int  chart,
double  txq[],
double  tU[],
double  tdU[][3],
double  phi[],
double  phix[][3]
 

Do once-per-point initialization.

Load up the PMF and PMF gradient values here

Parameter for new diffusion coefficient under the potential.

flux in the active boundary.

VPRIVATE double Ju PDE *  thee,
int  key
 

Evaluate the integrand J_k(u) of the energy functional J(u) at the single point x. This is your nonlinear energy functional for which your weak form PDE below in Fu_v() is the Euler condition.

flux evaluated throught the active surface integral.

the area of the active surface.

substrate amount in the diffusion domain.

volume of the diffusion domain.

Flux evaluated throught volume integral

VPRIVATE int markSimplex int  dim,
int  dimII,
int  simplexType,
int  faceType[4],
int  vertexType[4],
int  chart[],
double  vx[][3],
void *  data
 

User-provided error estimator which allows the user to define his own refinement strategies rather than using the builtin a posteriori error estimators.

VPUBLIC Vmodel* model_ctor  ) 
 

construct model class.

VPUBLIC void model_dtor Vmodel *  thee  ) 
 

destroy model class.

VPUBLIC PDE* myPDE_ctor void   ) 
 

Construct the differential equation object.

Create some space for the pde object

PDE-specific parameters and function pointers

Manifold-specific function pointers

apbs stuff

return the new pde object

VPUBLIC void myPDE_dtor PDE *  thee  ) 
 

destroy the differential equation object.

VPRIVATE void oneChart int  dim,
int  dimII,
int  objType,
int  chart[],
double  vx[][3],
int  dimV
 

Select a single unified chart for a set of two or more vertices whose coordinates may be given with respect to different charts. Then transform all of the coordinates of the vertex set to be with respect to the single selected "unified" chart.

VPRIVATE double p_wv PDE *  thee,
int  key,
double  W[],
double  V[]
 

Evaluate the integrand p(w,v) of the functional <p w,v> at the single point x.

PRIMAL: interior form case

PRIMAL: boundary form case

DUAL: interior form case

DUAL: boundary form case

VPRIVATE void u_D PDE *  thee,
int  type,
int  chart,
double  txq[],
double  F[]
 

At the single given point x, evaluate the dirichlet boundary function: u_D = g(x).

VPRIVATE void u_T PDE *  thee,
int  type,
int  chart,
double  txq[],
double  F[]
 

At the single given point x, evaluate the true solution function (if you have one for your problem): u_T = u(x).

VPUBLIC Vusr* usr_ctor  ) 
 

construct user defined subroutine.

VPUBLIC void usr_dtor Vusr *  thee  ) 
 

destroy user defined subroutine.


Variable Documentation

VPRIVATE double Diff
 

Problem-specific variables for the Smoluchowski equation

VPRIVATE double expp
 

Problem-specific variables for the Smoluchowski equation

VPRIVATE double flux[3]
 

Problem-specific variables for the Smoluchowski equation

VPRIVATE double ndotflux
 

Problem-specific variables for the Smoluchowski equation

VPRIVATE double paramA
 

Problem-specific variables for the Smoluchowski equation

VPRIVATE double paramM
 

Problem-specific variables for the Smoluchowski equation

VPRIVATE double tcurv
 

Problem-specific variables for the Smoluchowski equation


Generated on Thu Jul 26 15:56:33 2007 by  doxygen 1.3.9.1