00001
00060 #ifndef _VFETK_H_
00061 #define _VFETK_H_
00062
00063 #include "maloc/maloc.h"
00064 #include "mc/mc.h"
00065 #include "apbs/vhal.h"
00066 #include "apbs/vatom.h"
00067
00068 #include "apbs/vcsm.h"
00069 #include "apbs/vpbe.h"
00070 #include "apbs/vunit.h"
00071 #include "apbs/vgreen.h"
00072 #include "apbs/vcap.h"
00073 #include "apbs/pbeparm.h"
00074 #include "apbs/femparm.h"
00075
00081 enum eVfetk_LsolvType {
00082 VLT_SLU=0,
00083 VLT_MG=1,
00084 VLT_CG=2,
00085 VLT_BCG=3
00086 };
00087
00092 typedef enum eVfetk_LsolvType Vfetk_LsolvType;
00093
00094
00099 enum eVfetk_MeshLoad {
00100 VML_DIRICUBE,
00101 VML_NEUMCUBE,
00102 VML_EXTERNAL
00103 };
00104
00109 typedef enum eVfetk_MeshLoad Vfetk_MeshLoad;
00110
00116 enum eVfetk_NsolvType {
00117 VNT_NEW=0,
00118 VNT_INC=1,
00119 VNT_ARC=2
00120 };
00121
00126 typedef enum eVfetk_NsolvType Vfetk_NsolvType;
00127
00133 enum eVfetk_GuessType {
00134 VGT_ZERO=0,
00135 VGT_DIRI=1,
00136 VGT_PREV=2
00137 };
00138
00143 typedef enum eVfetk_GuessType Vfetk_GuessType;
00144
00150 enum eVfetk_PrecType {
00151 VPT_IDEN=0,
00152 VPT_DIAG=1,
00153 VPT_MG=2
00154 };
00155
00160 typedef enum eVfetk_PrecType Vfetk_PrecType;
00161
00171 struct sVfetk {
00172
00173 Vmem *vmem;
00174 Gem *gm;
00177 AM *am;
00178 Aprx *aprx;
00179 PDE *pde;
00180 Vpbe *pbe;
00181 Vcsm *csm;
00182 Vfetk_LsolvType lkey;
00183 int lmax;
00184 double ltol;
00185 Vfetk_NsolvType nkey;
00186 int nmax;
00187 double ntol;
00188 Vfetk_GuessType gues;
00189 Vfetk_PrecType lprec;
00190 int pjac;
00192 PBEparm *pbeparm;
00193 FEMparm *feparm;
00194 Vhal_PBEType type;
00195 int level;
00197 };
00198
00202 typedef struct sVfetk Vfetk;
00203
00210 struct sVfetk_LocalVar {
00211 double nvec[VAPBS_DIM];
00212 double vx[4][VAPBS_DIM];
00213 double xq[VAPBS_DIM];
00214 double U[MAXV];
00215 double dU[MAXV][VAPBS_DIM];
00216 double W;
00217 double dW[VAPBS_DIM];
00218 double d2W;
00219 int sType;
00220 int fType;
00221 double diel;
00222 double ionacc;
00223 double A;
00224 double F;
00225 double B;
00226 double DB;
00227 double jumpDiel;
00228 Vfetk *fetk;
00229 Vgreen *green;
00230 int initGreen;
00232 SS *simp;
00234 VV *verts[4];
00235 int nverts;
00236 double ionConc[MAXION];
00237 double ionQ[MAXION];
00238 double ionRadii[MAXION];
00239 double zkappa2;
00240 double zks2;
00241 double ionstr;
00242 int nion;
00243 double Fu_v;
00244 double DFu_wv;
00245 double delta;
00246 double u_D;
00247 double u_T;
00248 };
00249
00254 typedef struct sVfetk_LocalVar Vfetk_LocalVar;
00255
00256 #if !defined(VINLINE_VFETK)
00257
00263 Gem* Vfetk_getGem(
00264 Vfetk *thee
00265 );
00266
00272 AM* Vfetk_getAM(
00273 Vfetk *thee
00274 );
00275
00281 Vpbe* Vfetk_getVpbe(
00282 Vfetk *thee
00283 );
00284
00290 Vcsm* Vfetk_getVcsm(
00291 Vfetk *thee
00292 );
00293
00302 int Vfetk_getAtomColor(
00303 Vfetk *thee,
00304 int iatom
00305 );
00306
00307 #else
00308 # define Vfetk_getGem(thee) ((thee)->gm)
00309 # define Vfetk_getAM(thee) ((thee)->am)
00310 # define Vfetk_getVpbe(thee) ((thee)->pbe)
00311 # define Vfetk_getVcsm(thee) ((thee)->csm)
00312 # define Vfetk_getAtomColor(thee, iatom) (Vatom_getPartID(Valist_getAtom(Vpbe_getValist(thee->pbe), iatom)))
00313 #endif
00314
00315
00316
00318
00328
00329
00330
00331
00332
00342
00343
00344
00345
00346
00347
00353
00354
00355
00356
00362
00363
00364
00365
00375
00376
00377
00378
00379
00385
00386
00387
00388
00389
00390
00409
00410
00411
00415
00417
00418
00448
00449
00450
00454
00455
00473
00474
00475
00477
00478
00486
00487
00488
00489
00505
00506
00507
00508
00517
00518
00519
00520
00521
00527
00528
00529
00530
00531
00532
00533
00539
00540
00541
00542
00543
00544
00545
00546
00553
00554
00555
00556
00563
00564
00565
00566
00567
00574
00575
00576
00577
00584
00585
00586
00587
00593
00594
00595
00596
00597
00598
00605
00606
00607
00608
00611
00612
00613
00614
00620
00621
00622
00624
00626
00627
00628
00636
00637
00638
00639
00641
00642
00643
00644
00645
00663
00664
00665
00667
00668
00669
00680
00681
00682
00684
00685
00686
00687
00699
00700
00701
00703
00704
00705
00706
00707
00708
00715
00716
00717
00718
00719
00720
00721
00722
00723
00731
00732
00733
00734
00735
00736
00737
00738
00746
00747
00748
00749
00750
00751
00752
00753
00759
00760
00761
00762
00763
00765
00766
00767
00773
00774
00775
00776
00777
00778
00779
00780
00789
00790
00791
00792
00793
00794
00795
00796
00797
00798
00799
00805
00806
00807
00808
00809
00810
00811
00812
00813
00823
00824
00825
00826
00827
00835
00836
00838
00839
00840
00841
00904
00905
00907
00908
00910
00911
00912
00913
00921
00922
00924
00925
00926
00935
00936
00938
00939
00945
00946
00947
00948
00949
00950
00956
00957
00965
00966
00967
00968
00969
00970
00985
00986
00987
00989
00991
00992
00993
00994
00995
00996
01002
01003
01004
01005
01006
01007
01008
01009