Go to the documentation of this file.00001
00054 #ifndef _VFETK_H_
00055 #define _VFETK_H_
00056
00057 #include "maloc/maloc.h"
00058 #include "mc/mc.h"
00059 #include "apbs/vhal.h"
00060 #include "apbs/vatom.h"
00061
00062 #include "apbs/vcsm.h"
00063 #include "apbs/vpbe.h"
00064 #include "apbs/vunit.h"
00065 #include "apbs/vgreen.h"
00066 #include "apbs/vcap.h"
00067 #include "apbs/pbeparm.h"
00068 #include "apbs/femparm.h"
00069
00075 enum eVfetk_LsolvType {
00076 VLT_SLU=0,
00077 VLT_MG=1,
00078 VLT_CG=2,
00079 VLT_BCG=3
00080 };
00081
00086 typedef enum eVfetk_LsolvType Vfetk_LsolvType;
00087
00088
00093 enum eVfetk_MeshLoad {
00094 VML_DIRICUBE,
00095 VML_NEUMCUBE,
00096 VML_EXTERNAL
00097 };
00098
00103 typedef enum eVfetk_MeshLoad Vfetk_MeshLoad;
00104
00110 enum eVfetk_NsolvType {
00111 VNT_NEW=0,
00112 VNT_INC=1,
00113 VNT_ARC=2
00114 };
00115
00120 typedef enum eVfetk_NsolvType Vfetk_NsolvType;
00121
00127 enum eVfetk_GuessType {
00128 VGT_ZERO=0,
00129 VGT_DIRI=1,
00130 VGT_PREV=2
00131 };
00132
00137 typedef enum eVfetk_GuessType Vfetk_GuessType;
00138
00144 enum eVfetk_PrecType {
00145 VPT_IDEN=0,
00146 VPT_DIAG=1,
00147 VPT_MG=2
00148 };
00149
00154 typedef enum eVfetk_PrecType Vfetk_PrecType;
00155
00165 struct sVfetk {
00166
00167 Vmem *vmem;
00168 Gem *gm;
00171 AM *am;
00172 Aprx *aprx;
00173 PDE *pde;
00174 Vpbe *pbe;
00175 Vcsm *csm;
00176 Vfetk_LsolvType lkey;
00177 int lmax;
00178 double ltol;
00179 Vfetk_NsolvType nkey;
00180 int nmax;
00181 double ntol;
00182 Vfetk_GuessType gues;
00183 Vfetk_PrecType lprec;
00184 int pjac;
00186 PBEparm *pbeparm;
00187 FEMparm *feparm;
00188 Vhal_PBEType type;
00189 int level;
00191 };
00192
00196 typedef struct sVfetk Vfetk;
00197
00204 struct sVfetk_LocalVar {
00205 double nvec[VAPBS_DIM];
00206 double vx[4][VAPBS_DIM];
00207 double xq[VAPBS_DIM];
00208 double U[MAXV];
00209 double dU[MAXV][VAPBS_DIM];
00210 double W;
00211 double dW[VAPBS_DIM];
00212 double d2W;
00213 int sType;
00214 int fType;
00215 double diel;
00216 double ionacc;
00217 double A;
00218 double F;
00219 double B;
00220 double DB;
00221 double jumpDiel;
00222 Vfetk *fetk;
00223 Vgreen *green;
00224 int initGreen;
00226 SS *simp;
00228 VV *verts[4];
00229 int nverts;
00230 double ionConc[MAXION];
00231 double ionQ[MAXION];
00232 double ionRadii[MAXION];
00233 double zkappa2;
00234 double zks2;
00235 double ionstr;
00236 int nion;
00237 double Fu_v;
00238 double DFu_wv;
00239 double delta;
00240 double u_D;
00241 double u_T;
00242 };
00243
00248 typedef struct sVfetk_LocalVar Vfetk_LocalVar;
00249
00250 #if !defined(VINLINE_VFETK)
00251
00257 VEXTERNC Gem* Vfetk_getGem(
00258 Vfetk *thee
00259 );
00260
00266 VEXTERNC AM* Vfetk_getAM(
00267 Vfetk *thee
00268 );
00269
00275 VEXTERNC Vpbe* Vfetk_getVpbe(
00276 Vfetk *thee
00277 );
00278
00284 VEXTERNC Vcsm* Vfetk_getVcsm(
00285 Vfetk *thee
00286 );
00287
00294 VEXTERNC int Vfetk_getAtomColor(
00295 Vfetk *thee,
00296 int iatom
00297 );
00298
00299 #else
00300 # define Vfetk_getGem(thee) ((thee)->gm)
00301 # define Vfetk_getAM(thee) ((thee)->am)
00302 # define Vfetk_getVpbe(thee) ((thee)->pbe)
00303 # define Vfetk_getVcsm(thee) ((thee)->csm)
00304 # define Vfetk_getAtomColor(thee, iatom) (Vatom_getPartID(Valist_getAtom(Vpbe_getValist(thee->pbe), iatom)))
00305 #endif
00306
00307
00308
00310
00320
00321
00322
00323
00324
00334
00335
00336
00337
00338
00339
00345
00346
00347
00348
00354
00355
00356
00357
00367
00368
00369
00370
00371
00377
00378
00379
00380
00381
00382
00401
00402
00403
00407
00409
00410
00440
00441
00442
00446
00447
00465
00466
00467
00469
00470
00478
00479
00480
00481
00497
00498
00499
00500
00509
00510
00511
00512
00513
00519
00520
00521
00522
00523
00524
00525
00531
00532
00533
00534
00535
00536
00537
00538
00545
00546
00547
00548
00555
00556
00557
00558
00559
00566
00567
00568
00569
00576
00577
00578
00579
00585
00586
00587
00588
00589
00590
00597
00598
00599
00600
00603
00604
00605
00606
00612
00613
00614
00616
00618
00619
00620
00628
00629
00630
00631
00633
00634
00635
00636
00637
00655
00656
00657
00659
00660
00661
00672
00673
00674
00676
00677
00678
00679
00691
00692
00693
00695
00696
00697
00698
00699
00700
00707
00708
00709
00710
00711
00712
00713
00714
00715
00723
00724
00725
00726
00727
00728
00729
00730
00738
00739
00740
00741
00742
00743
00744
00745
00751
00752
00753
00754
00755
00757
00758
00759
00765
00766
00767
00768
00769
00770
00771
00772
00781
00782
00783
00784
00785
00786
00787
00788
00789
00790
00791
00797
00798
00799
00800
00801
00802
00803
00804
00805
00815
00816
00817
00818
00819
00827
00828
00830
00831
00832
00833
00896
00897
00899
00900
00902
00903
00904
00905
00913
00914
00916
00917
00918
00927
00928
00930
00931
00937
00938
00939
00940
00941
00942
00948
00949
00957
00958
00959
00960
00961
00962
00977
00978
00979
00981
00983
00984
00985
00986
00987
00988
00994
00995
00996
00997
00998
00999
01000