Files | |
file | vfetk.c |
Class Vfetk methods. | |
file | vfetk.h |
Contains declarations for class Vfetk. | |
Data Structures | |
struct | sVfetk |
Contains public data members for Vfetk class/module. More... | |
struct | sVfetk_LocalVar |
Vfetk LocalVar subclass Contains variables used when solving the PDE with FEtk. More... | |
Defines | |
#define | VRINGMAX 1000 |
Maximum number of simplices in a simplex ring. | |
#define | VATOMMAX 1000000 |
Maximum number of atoms associated with a vertex. | |
Typedefs | |
typedef enum eVfetk_LsolvType | Vfetk_LsolvType |
Declare FEMparm_LsolvType type. | |
typedef enum eVfetk_MeshLoad | Vfetk_MeshLoad |
Declare FEMparm_GuessType type. | |
typedef enum eVfetk_NsolvType | Vfetk_NsolvType |
Declare FEMparm_NsolvType type. | |
typedef enum eVfetk_GuessType | Vfetk_GuessType |
Declare FEMparm_GuessType type. | |
typedef enum eVfetk_PrecType | Vfetk_PrecType |
Declare FEMparm_GuessType type. | |
typedef sVfetk_LocalVar | Vfetk_LocalVar |
Declaration of the Vfetk_LocalVar subclass as the Vfetk_LocalVar structure. | |
typedef sVfetk | Vfetk |
Declaration of the Vfetk class as the Vfetk structure. | |
Enumerations | |
enum | eVfetk_LsolvType { VLT_SLU = 0, VLT_MG = 1, VLT_CG = 2, VLT_BCG = 3 } |
Linear solver type. More... | |
enum | eVfetk_MeshLoad { VML_DIRICUBE, VML_NEUMCUBE, VML_EXTERNAL } |
Mesh loading operation. More... | |
enum | eVfetk_NsolvType { VNT_NEW = 0, VNT_INC = 1, VNT_ARC = 2 } |
Non-linear solver type. More... | |
enum | eVfetk_GuessType { VGT_ZERO = 0, VGT_DIRI = 1, VGT_PREV = 2 } |
Initial guess type. More... | |
enum | eVfetk_PrecType { VPT_IDEN = 0, VPT_DIAG = 1, VPT_MG = 2 } |
Preconditioner type. More... | |
Functions | |
Gem * | Vfetk_getGem (Vfetk *thee) |
Get a pointer to the Gem (grid manager) object. | |
AM * | Vfetk_getAM (Vfetk *thee) |
Get a pointer to the AM (algebra manager) object. | |
Vpbe * | Vfetk_getVpbe (Vfetk *thee) |
Get a pointer to the Vpbe (PBE manager) object. | |
Vcsm * | Vfetk_getVcsm (Vfetk *thee) |
Get a pointer to the Vcsm (charge-simplex map) object. | |
int | Vfetk_getAtomColor (Vfetk *thee, int iatom) |
Get the partition information for a particular atom. | |
Vfetk * | Vfetk_ctor (Vpbe *pbe, Vhal_PBEType type) |
Constructor for Vfetk object. | |
int | Vfetk_ctor2 (Vfetk *thee, Vpbe *pbe, Vhal_PBEType type) |
FORTRAN stub constructor for Vfetk object. | |
void | Vfetk_dtor (Vfetk **thee) |
Object destructor. | |
void | Vfetk_dtor2 (Vfetk *thee) |
FORTRAN stub object destructor. | |
double * | Vfetk_getSolution (Vfetk *thee, int *length) |
Create an array containing the solution (electrostatic potential in units of ![]() | |
void | Vfetk_setParameters (Vfetk *thee, PBEparm *pbeparm, FEMparm *feparm) |
Set the parameter objects. | |
double | Vfetk_energy (Vfetk *thee, int color, int nonlin) |
Return the total electrostatic energy. | |
double | Vfetk_dqmEnergy (Vfetk *thee, int color) |
Get the "mobile charge" and "polarization" contributions to the electrostatic energy. | |
double | Vfetk_qfEnergy (Vfetk *thee, int color) |
Get the "fixed charge" contribution to the electrostatic energy. | |
unsigned long int | Vfetk_memChk (Vfetk *thee) |
Return the memory used by this structure (and its contents) in bytes. | |
void | Vfetk_setAtomColors (Vfetk *thee) |
Transfer color (partition ID) information frmo a partitioned mesh to the atoms. | |
void | Bmat_printHB (Bmat *thee, char *fname) |
Writes a Bmat to disk in Harwell-Boeing sparse matrix format. | |
Vrc_Codes | Vfetk_genCube (Vfetk *thee, double center[3], double length[3], Vfetk_MeshLoad meshType) |
Construct a rectangular mesh (in the current Vfetk object). | |
Vrc_Codes | Vfetk_loadMesh (Vfetk *thee, double center[3], double length[3], Vfetk_MeshLoad meshType, Vio *sock) |
Loads a mesh into the Vfetk (and associated) object(s). | |
PDE * | Vfetk_PDE_ctor (Vfetk *fetk) |
Constructs the FEtk PDE object. | |
int | Vfetk_PDE_ctor2 (PDE *thee, Vfetk *fetk) |
Intializes the FEtk PDE object. | |
void | Vfetk_PDE_dtor (PDE **thee) |
Destroys FEtk PDE object. | |
void | Vfetk_PDE_dtor2 (PDE *thee) |
FORTRAN stub: destroys FEtk PDE object. | |
void | Vfetk_PDE_initAssemble (PDE *thee, int ip[], double rp[]) |
Do once-per-assembly initialization. | |
void | Vfetk_PDE_initElement (PDE *thee, int elementType, int chart, double tvx[][VAPBS_DIM], void *data) |
Do once-per-element initialization. | |
void | Vfetk_PDE_initFace (PDE *thee, int faceType, int chart, double tnvec[]) |
Do once-per-face initialization. | |
void | Vfetk_PDE_initPoint (PDE *thee, int pointType, int chart, double txq[], double tU[], double tdU[][VAPBS_DIM]) |
Do once-per-point initialization. | |
void | Vfetk_PDE_Fu (PDE *thee, int key, double F[]) |
Evaluate strong form of PBE. For interior points, this is:
where
where | |
double | Vfetk_PDE_Fu_v (PDE *thee, int key, double V[], double dV[][VAPBS_DIM]) |
This is the weak form of the PBE; i.e. the strong form integrated with a test function to give:
| |
double | Vfetk_PDE_DFu_wv (PDE *thee, int key, double W[], double dW[][VAPBS_DIM], double V[], double dV[][VAPBS_DIM]) |
This is the linearization of the weak form of the PBE; e.g., for use in a Newton iteration. This is the functional linearization of the strong form integrated with a test function to give:
where | |
void | Vfetk_PDE_delta (PDE *thee, int type, int chart, double txq[], void *user, double F[]) |
Evaluate a (discretized) delta function source term at the given point. | |
void | Vfetk_PDE_u_D (PDE *thee, int type, int chart, double txq[], double F[]) |
Evaluate the Dirichlet boundary condition at the given point. | |
void | Vfetk_PDE_u_T (PDE *thee, int type, int chart, double txq[], double F[]) |
Evaluate the "true solution" at the given point for comparison with the numerical solution. | |
void | Vfetk_PDE_bisectEdge (int dim, int dimII, int edgeType, int chart[], double vx[][VAPBS_DIM]) |
Define the way manifold edges are bisected. | |
void | Vfetk_PDE_mapBoundary (int dim, int dimII, int vertexType, int chart, double vx[VAPBS_DIM]) |
Map a boundary point to some pre-defined shape. | |
int | Vfetk_PDE_markSimplex (int dim, int dimII, int simplexType, int faceType[VAPBS_NVS], int vertexType[VAPBS_NVS], int chart[], double vx[][VAPBS_DIM], void *simplex) |
User-defined error estimator -- in our case, a geometry-based refinement method; forcing simplex refinement at the dielectric boundary and (for non-regularized PBE) the charges. | |
void | Vfetk_PDE_oneChart (int dim, int dimII, int objType, int chart[], double vx[][VAPBS_DIM], int dimV) |
Unify the chart for different coordinate systems -- a no-op for us. | |
double | Vfetk_PDE_Ju (PDE *thee, int key) |
Energy functional. This returns the energy (less delta function terms) in the form:
for a 1:1 electrolyte where | |
void | Vfetk_externalUpdateFunction (SS **simps, int num) |
External hook to simplex subdivision routines in Gem. Called each time a simplex is subdivided (we use it to update the charge-simplex map). | |
int | Vfetk_PDE_simplexBasisInit (int key, int dim, int comp, int *ndof, int dof[]) |
Initialize the bases for the trial or the test space, for a particular component of the system, at all quadrature points on the master simplex element. | |
void | Vfetk_PDE_simplexBasisForm (int key, int dim, int comp, int pdkey, double xq[], double basis[]) |
Evaluate the bases for the trial or test space, for a particular component of the system, at all quadrature points on the master simplex element. | |
void | Vfetk_readMesh (Vfetk *thee, int skey, Vio *sock) |
Read in mesh and initialize associated internal structures. | |
void | Vfetk_dumpLocalVar () |
Debugging routine to print out local variables used by PDE object. | |
int | Vfetk_fillArray (Vfetk *thee, Bvec *vec, Vdata_Type type) |
Fill an array with the specified data. | |
int | Vfetk_write (Vfetk *thee, const char *iodev, const char *iofmt, const char *thost, const char *fname, Bvec *vec, Vdata_Format format) |
Write out data. | |
Vrc_Codes | Vfetk_loadGem (Vfetk *thee, Gem *gm) |
Load a Gem geometry manager object into Vfetk. |
|
Initial guess type.
|
|
Linear solver type.
|
|
Mesh loading operation.
|
|
Non-linear solver type.
|
|
Preconditioner type.
|
|
Writes a Bmat to disk in Harwell-Boeing sparse matrix format.
|
|
Constructor for Vfetk object.
|
Here is the call graph for this function:
|
FORTRAN stub constructor for Vfetk object.
|
Here is the call graph for this function:
|
Get the "mobile charge" and "polarization" contributions to the electrostatic energy. Using the solution at the finest mesh level, get the electrostatic energy due to the interaction of the mobile charges with the potential and polarization of the dielectric medium:
for the NPBE and
for the LPBE. Here
|
|
Object destructor.
|
Here is the call graph for this function:
|
FORTRAN stub object destructor.
|
Here is the call graph for this function:
|
Debugging routine to print out local variables used by PDE object.
|
|
Return the total electrostatic energy.
Using the solution at the finest mesh level, get the electrostatic energy using the free energy functional for the Poisson-Boltzmann equation without removing any self-interaction terms (i.e., removing the reference state of isolated charges present in an infinite dielectric continuum with the same relative permittivity as the interior of the protein) and return the result in units of
|
Here is the call graph for this function:
|
External hook to simplex subdivision routines in Gem. Called each time a simplex is subdivided (we use it to update the charge-simplex map).
|
Here is the call graph for this function:
|
Fill an array with the specified data.
|
Here is the call graph for this function:
|
Construct a rectangular mesh (in the current Vfetk object).
|
|
Get a pointer to the AM (algebra manager) object.
|
|
Get the partition information for a particular atom.
|
Here is the call graph for this function:
|
Get a pointer to the Gem (grid manager) object.
|
|
Create an array containing the solution (electrostatic potential in units of
|
|
Get a pointer to the Vcsm (charge-simplex map) object.
|
|
Get a pointer to the Vpbe (PBE manager) object.
|
|
Load a Gem geometry manager object into Vfetk.
|
|
Loads a mesh into the Vfetk (and associated) object(s).
|
Here is the call graph for this function:
|
Return the memory used by this structure (and its contents) in bytes.
|
Here is the call graph for this function:
|
Define the way manifold edges are bisected.
|
|
Constructs the FEtk PDE object.
|
Here is the call graph for this function:
|
Intializes the FEtk PDE object.
|
Here is the call graph for this function:
|
Evaluate a (discretized) delta function source term at the given point.
|
Here is the call graph for this function:
|
This is the linearization of the weak form of the PBE; e.g., for use in a Newton iteration. This is the functional linearization of the strong form integrated with a test function to give:
where
|
|
Destroys FEtk PDE object.
|
Here is the call graph for this function:
|
FORTRAN stub: destroys FEtk PDE object.
|
|
Evaluate strong form of PBE. For interior points, this is:
where
where
|
|
This is the weak form of the PBE; i.e. the strong form integrated with a test function to give:
where
|
|
Do once-per-assembly initialization.
|
Here is the call graph for this function:
|
Do once-per-element initialization.
|
|
Do once-per-face initialization.
|
|
Do once-per-point initialization.
|
|
Energy functional. This returns the energy (less delta function terms) in the form:
for a 1:1 electrolyte where
|
Here is the call graph for this function:
|
Map a boundary point to some pre-defined shape.
|
|
User-defined error estimator -- in our case, a geometry-based refinement method; forcing simplex refinement at the dielectric boundary and (for non-regularized PBE) the charges.
|
|
Unify the chart for different coordinate systems -- a no-op for us.
|
|
Evaluate the bases for the trial or test space, for a particular component of the system, at all quadrature points on the master simplex element.
|
|
Initialize the bases for the trial or the test space, for a particular component of the system, at all quadrature points on the master simplex element.
|
|
Evaluate the Dirichlet boundary condition at the given point.
|
|
Evaluate the "true solution" at the given point for comparison with the numerical solution.
|
|
Get the "fixed charge" contribution to the electrostatic energy. Using the solution at the finest mesh level, get the electrostatic energy due to the interaction of the fixed charges with the potential:
and return the result in units of
|
Here is the call graph for this function:
|
Read in mesh and initialize associated internal structures.
|
|
Transfer color (partition ID) information frmo a partitioned mesh to the atoms. Transfer color information from partitioned mesh to the atoms. In the case that a charge is shared between two partitions, the partition color of the first simplex is selected. Due to the arbitrary nature of this selection, THIS METHOD SHOULD ONLY BE USED IMMEDIATELY AFTER PARTITIONING!!!
|
Here is the call graph for this function:
|
Set the parameter objects.
|
|
Write out data.
|