Go to the source code of this file.
Defines | |
| #define | FS_MAX 1.728f |
| #define | COULOMB 332.0636f |
| #define | TA 0.333333333333333f |
| #define | TB 0.4f |
| #define | TC 0.428571428571428f |
| #define | TD 0.444444444444444f |
| #define | TE 0.454545454545454f |
| #define | DA 1.333333333333333f |
| #define | DB 2.4f |
| #define | DC 3.428571428571428f |
| #define | DD 4.444444444444444f |
| #define | DE 5.454545454545454f |
Typedefs | |
| typedef float | GBReal |
| typedef float | Mass |
Functions | |
| float | FastTanH (float x) |
| float | MassToRadius (Mass mi) |
| float | MassToScreen (Mass mi) |
| void | h0 (float r, float r2, float ri, float rc, float r0, float rs, float &h) |
| void | dh0 (float r, float r2, float ri, float rc, float r0, float rs, float &dh) |
| void | h1 (float r, float r2, float ri, float rc, float r0, float rs, float &h) |
| void | dh1 (float r, float r2, float ri, float rc, float r0, float rs, float &dh) |
| void | h2 (float r, float r2, float ri, float rc, float r0, float rs, float &h) |
| void | dh2 (float r, float r2, float ri, float rc, float r0, float rs, float &dh) |
| void | h3 (float r, float r2, float ri, float rc, float r0, float rs, float &h) |
| void | dh3 (float r, float r2, float ri, float rc, float r0, float rs, float &dh) |
| void | h4 (float r, float r2, float ri, float rc, float r0, float rs, float &h) |
| void | dh4 (float r, float r2, float ri, float rc, float r0, float rs, float &dh) |
| void | h5 (float r, float r2, float ri, float rc, float r0, float rs, float &h) |
| void | dh5 (float r, float r2, float ri, float rc, float r0, float rs, float &dh) |
| void | h6 (float r, float r2, float ri, float rc, float r0, float rs, float &h) |
| void | dh6 (float r, float r2, float ri, float rc, float r0, float rs, float &dh) |
| void | CalcH (float r, float r2, float ri, float rc, float r0, float rs, float &h, int &d) |
| void | CalcDH (float r, float r2, float ri, float rc, float r0, float rs, float &dh, int &d) |
| void | CalcHPair (float r, float r2, float ri, float rc, float ri0, float rjs, float rj0, float ris, int &dij, int &dji, float &hij, float &hji) |
| void | CalcDHPair (float r, float r2, float ri, float rc, float ri0, float rjs, float rj0, float ris, int &dij, int &dji, float &dhij, float &dhji) |
| void | Calc_dEdr_Pair (const float &r, const float &r2, const float &qiqj, const float &ai, const float &aj, const float &kappa, const float &epsilon_p_i, const float &epsilon_s_i, float &aiaj, float &expr2aiaj4, float &fij, float &f_i, float &expkappa, float &Dij, float &gbE, float &ddrGbE) |
| void | Calc_dEda_Pair (const float &r2, const float &ai, const float &aj, const float &qiqj, const float &kappa, const float &aiaj, const float &expkappa, const float &expr2aiaj4, const float &fij, const float &f_i, const float &Dij, const float &epsilon_s_i, float &dEdai, float &dEdaj) |
| void | Phase2_Pair (const float &r, const float &r2, const float &r_i, const float &qiqj, const float &ai, const float &aj, const float &epsilon_p_i, const float &epsilon_s_i, const float &kappa, const int &doFullElect, float &gbEij, float &ddrGbEij, float &dEdai, float &dEdaj) |
|
|
Definition at line 28 of file ComputeGBIS.inl. |
|
|
Definition at line 37 of file ComputeGBIS.inl. |
|
|
Definition at line 38 of file ComputeGBIS.inl. |
|
|
Definition at line 39 of file ComputeGBIS.inl. |
|
|
Definition at line 40 of file ComputeGBIS.inl. |
|
|
Definition at line 41 of file ComputeGBIS.inl. |
|
|
Definition at line 24 of file ComputeGBIS.inl. |
|
|
Definition at line 32 of file ComputeGBIS.inl. |
|
|
Definition at line 33 of file ComputeGBIS.inl. |
|
|
Definition at line 34 of file ComputeGBIS.inl. |
|
|
Definition at line 35 of file ComputeGBIS.inl. |
|
|
Definition at line 36 of file ComputeGBIS.inl. |
|
|
Copyright (c) 1995, 1996, 1997, 1998, 1999, 2000 by The Board of Trustees of the University of Illinois. All rights reserved. Definition at line 17 of file ComputeGBIS.inl. Referenced by ComputeNonbondedUtil::calcGBIS(), cuda_bind_patch_pairs(), ComputeNonbondedCUDA::doWork(), ComputeNonbondedCUDA::finishWork(), GBIS_Atom_Reduction_Kernel(), GBIS_P1_Kernel(), and GBIS_P2_Kernel(). |
|
|
Definition at line 20 of file ComputeGBIS.inl. Referenced by ARestraint::DistributeForce(), and ARestraint::UpdateCOMs(). |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Definition at line 486 of file ComputeGBIS.inl. Referenced by Phase2_Pair(). 00500 {
00501
00502 //float tmp_dEda = -0.5*COULOMB*qiqj*f_i*f_i
00503 float tmp_dEda = 0.5f*qiqj*f_i*f_i
00504 *(kappa*epsilon_s_i*expkappa-Dij*f_i)
00505 *(aiaj+0.25f*r2)*expr2aiaj4;//0
00506 dEdai = tmp_dEda/ai;
00507 dEdaj = tmp_dEda/aj;
00508 }
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Definition at line 436 of file ComputeGBIS.inl. Referenced by Phase2_Pair(). 00453 {
00454 //allocate local variables
00455 float aiaj4,ddrDij,ddrf_i,ddrfij;
00456
00457 //calculate GB energy
00458 aiaj = ai*aj;
00459 aiaj4 = 4.f*aiaj;
00460 //printf("exp(%e)\n",(-r2/aiaj4));
00461 expr2aiaj4 = exp(-r2/aiaj4);
00462 fij = sqrt(r2+aiaj*expr2aiaj4);
00463 f_i = 1/fij;
00464 expkappa = (kappa > 0.f) ? exp(-kappa*fij) : 1.f;
00465 Dij = epsilon_p_i - expkappa*epsilon_s_i;
00466 //gbE = -COULOMB*qiqj*Dij*f_i;
00467 gbE = qiqj*Dij*f_i;
00468
00469 //calculate energy derivatives
00470 ddrfij = r*f_i*(1.f - 0.25f*expr2aiaj4);
00471 ddrf_i = -ddrfij*f_i*f_i;
00472 ddrDij = kappa*expkappa*ddrfij*epsilon_s_i;
00473 //ddrGbE = -COULOMB*qiqj*(ddrDij*f_i+Dij*ddrf_i);
00474 ddrGbE = qiqj*(ddrDij*f_i+Dij*ddrf_i);
00475 }
|
|
||||||||||||||||||||||||||||||||||||
|
Definition at line 360 of file ComputeGBIS.inl. References dh0(), dh1(), dh2(), dh3(), dh4(), dh5(), and dh6(). Referenced by CalcDHPair(), and GBIS_P3_Kernel(). 00361 {
00362 if (r > 4*rs) {
00363 if( r < rc - rs) {//II
00364 dh2(r,r2,ri,rc,r0,rs,dh); d = 2;
00365 } else if (r < rc + rs) {//I
00366 dh1(r,r2,ri,rc,r0,rs,dh); d = 1;
00367 } else /*if (r > rc + rs)*/ {//0
00368 dh0(r,r2,ri,rc,r0,rs,dh); d = 0;
00369 }
00370 } else {
00371 if( r > r0 + rs ) {//III
00372 dh3(r,r2,ri,rc,r0,rs,dh); d = 3;
00373 } else if (r > (r0>rs?r0-rs:rs-r0) ) {//IV
00374 dh4(r,r2,ri,rc,r0,rs,dh); d = 4;
00375 } else if (r0 < rs ) {//V
00376 dh5(r,r2,ri,rc,r0,rs,dh); d = 5;
00377 } else {//VI
00378 dh6(r,r2,ri,rc,r0,rs,dh); d = 6;
00379 }
00380 }
00381 }
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Definition at line 409 of file ComputeGBIS.inl. References CalcDH(). Referenced by ComputeNonbondedUtil::calcGBIS(). 00421 {
00422 // swapped
00423 CalcDH(r,r2,ri,rc,ri0,rjs,dhij,dij);//hij
00424 CalcDH(r,r2,ri,rc,rj0,ris,dhji,dji);//hji
00425 }
|
|
||||||||||||||||||||||||||||||||||||
|
Definition at line 326 of file ComputeGBIS.inl. References h0(), h1(), h2(), h3(), h4(), h5(), and h6(). Referenced by CalcHPair(), and GBIS_P1_Kernel(). 00327 {
00328
00329 /*
00330 r - distance
00331 rc - alpha cutoff
00332 rs - screened radius
00333 */
00334
00335 if (r > 4*rs) { //change this to 1/4 r > rs
00336 if( r < rc - rs) {//II 68%
00337 h2(r,r2,ri,rc,r0,rs,h); d = 2;
00338 } else if (r < rc + rs) {//I 23%
00339 h1(r,r2,ri,rc,r0,rs,h); d = 1;
00340 } else /*if (r > rc + rs)*/ {//0 7%
00341 h0(r,r2,ri,rc,r0,rs,h); d = 0;
00342 }
00343 } else {
00344 if( r > r0 + rs ) {//III 1%
00345 h3(r,r2,ri,rc,r0,rs,h); d = 3;
00346 } else if ( r > (r0>rs?r0-rs:rs-r0) ) {//IV 0%
00347 h4(r,r2,ri,rc,r0,rs,h); d = 4;
00348 } else if (r0 < rs ) {//V 0%
00349 h5(r,r2,ri,rc,r0,rs,h); d = 5;
00350 } else {//VI 0%
00351 h6(r,r2,ri,rc,r0,rs,h); d = 6;
00352 }
00353 }
00354 }
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Definition at line 387 of file ComputeGBIS.inl. References CalcH(). Referenced by ComputeNonbondedUtil::calcGBIS(). 00400 {
00401 CalcH(r,r2,ri,rc,ri0,rjs,hij,dij);//hij
00402 CalcH(r,r2,ri,rc,rj0,ris,hji,dji);//hji
00403 }
|
|
||||||||||||||||||||||||||||||||
|
Definition at line 150 of file ComputeGBIS.inl. Referenced by CalcDH(). 00151 {
00152 dh = 0.f;
00153 }
|
|
||||||||||||||||||||||||||||||||
|
Definition at line 177 of file ComputeGBIS.inl. Referenced by CalcDH(). 00178 {
00179
00180 float rci = 1.f/rc;
00181 float rmrs = r-rs;// 4 times
00182 float rmrsi = 1.f/rmrs;
00183 float rmrs2 = rmrs*rmrs;
00184 float rs2 = rs*rs;
00185 float logr = log(rmrs*rci);
00186 float rci2 = rci*rci;
00187 dh = ri*ri*(-0.25f*logr - (rc*rc - rmrs2)*(rs2 + r2)*0.125f*rci2*rmrsi*rmrsi);
00188 }
|
|
||||||||||||||||||||||||||||||||
|
Definition at line 206 of file ComputeGBIS.inl. References DA, DB, DC, and DD. Referenced by CalcDH(). 00207 {
00208
00209 float k = rs*ri; k*=k;//k=(rs/r)^2
00210 dh = -rs*ri*ri*ri*k*(DA+k*(DB+k*(DC+k*(DD+k*DE))));
00211 }
|
|
||||||||||||||||||||||||||||||||
|
Definition at line 228 of file ComputeGBIS.inl. Referenced by CalcDH(). 00229 {
00230 float rs2 = rs*rs;
00231 float r2mrs2i = 1.f/(r2-rs2);
00232 dh = -0.25f*ri*(2.f*(r2+rs2)*rs*r2mrs2i*r2mrs2i + ri*log((r-rs)/(r+rs)));
00233 }
|
|
||||||||||||||||||||||||||||||||
|
Definition at line 257 of file ComputeGBIS.inl. Referenced by CalcDH(). 00258 {
00259 float ri2 = ri*ri;
00260 float r02 = r0*r0;
00261 float rs2 = rs*rs;
00262 float r0i = 1.f/r0;
00263 float rspri = 1.f/(r+rs);
00264 float logr = log(r0*rspri);
00265 float r02mrs2 = r02-rs2;
00266 float rilogr = ri*logr;
00267 dh = 0.25f*( (- 0.5f +(r2*r02mrs2 - 2.f*r*rs*rs2+rs2*r02mrs2)
00268 * 0.5f *ri2*rspri*rspri)*r0i*r0i - ri*rilogr );
00269 }
|
|
||||||||||||||||||||||||||||||||
|
Definition at line 291 of file ComputeGBIS.inl. Referenced by CalcDH(). 00292 {
00293 float rs2 = rs*rs;
00294 float r2mrs2i = 1.f/(r2-rs2);
00295 float rsr2mrs2i = rs*r2mrs2i;
00296 float rprs = r+rs;
00297 float rmrs = r-rs;
00298 float logr = 0.5f*ri*log(-rmrs/rprs);
00299 dh = -0.5f*ri*((rs2+r2)*rsr2mrs2i*r2mrs2i+logr );
00300 }
|
|
||||||||||||||||||||||||||||||||
|
Definition at line 316 of file ComputeGBIS.inl. Referenced by CalcDH(). 00317 {
00318 dh = 0;
00319 }
|
|
|
Definition at line 44 of file ComputeGBIS.inl. 00044 {
00045 float a = 2.f*x+0.02f;;
00046 a *= (6.f + a*(3.f + a));
00047 return (a)/(a+12.f);
00048 }
|
|
||||||||||||||||||||||||||||||||
|
Definition at line 141 of file ComputeGBIS.inl. Referenced by CalcH(). 00142 {
00143 h = 0.f;
00144 }
|
|
||||||||||||||||||||||||||||||||
|
Definition at line 160 of file ComputeGBIS.inl. Referenced by CalcH(). 00161 {
00162
00163 float rci = 1.f/rc;
00164 float rmrs = r-rs;
00165 float rmrsi = 1.f/rmrs;
00166 //float rmrs2 = rmrs*rmrs;
00167 float rs2 = rs*rs;
00168 float logr = log(rmrs*rci);
00169 float rci2 = rci*rci;
00170 h = 0.125f*ri*(1.f + 2.f*r*rmrsi + rci2*(r2 - 4.f*rc*r - rs2) + 2.f*logr);
00171 }
|
|
||||||||||||||||||||||||||||||||
|
Definition at line 195 of file ComputeGBIS.inl. References TA, TB, TC, and TD. Referenced by CalcH(). 00196 {
00197
00198 float k = rs*ri; k*=k;//k=(rs/r)^2
00199 h = rs*ri*ri*k*(TA+k*(TB+k*(TC+k*(TD+k*TE))));
00200 }
|
|
||||||||||||||||||||||||||||||||
|
Definition at line 218 of file ComputeGBIS.inl. Referenced by CalcH(). 00219 {
00220 float r2mrs2i = 1.f/(r2-rs*rs);
00221 h = 0.5f * ( rs*r2mrs2i + 0.5f * log((r-rs)/(r+rs))*ri );
00222 }
|
|
||||||||||||||||||||||||||||||||
|
Definition at line 240 of file ComputeGBIS.inl. Referenced by CalcH(). 00241 {
00242 //float ri2 = ri*ri;
00243 float r02 = r0*r0;
00244 float rs2 = rs*rs;
00245 float r0i = 1.f/r0;
00246 float rspri = 1.f/(r+rs);
00247 float logr = log(r0*rspri);
00248 //float r02mrs2 = r02-rs2;
00249 float rilogr = ri*logr;
00250 h = 0.25f*( r0i*(2.f- 0.5f*(r0i*ri*(r2 + r02 - rs2))) - rspri + rilogr );
00251 }
|
|
||||||||||||||||||||||||||||||||
|
Definition at line 276 of file ComputeGBIS.inl. Referenced by CalcH(). 00277 {
00278 float rs2 = rs*rs;
00279 float r2mrs2i = 1.f/(r2-rs2);
00280 float rsr2mrs2i = rs*r2mrs2i;
00281 float rprs = r+rs;
00282 float rmrs = r-rs;
00283 float logr = 0.5f*ri*log(-rmrs/rprs);
00284 h = 0.5f*( rsr2mrs2i + 2.f/r0 + logr );
00285 }
|
|
||||||||||||||||||||||||||||||||
|
Definition at line 307 of file ComputeGBIS.inl. Referenced by CalcH(). 00308 {
00309 h = 0;
00310 }
|
|
|
Definition at line 55 of file ComputeGBIS.inl. Referenced by ComputeGBISser::doWork(), and HomePatch::setGBISIntrinsicRadii(). 00055 {//, Mass mj) {
00056 return
00057 (mi < 2.50f ) ? 1.20f : // AtmNum = 1; Elem = H ; Mass = 1.00
00058 (mi < 5.47f ) ? 1.40f : // AtmNum = 2; Elem = He; Mass = 4.00
00059 (mi < 7.98f ) ? 1.82f : // AtmNum = 3; Elem = Li; Mass = 6.94
00060 (mi < 9.91f ) ? 2.13f : // AtmNum = 4; Elem = Be; Mass = 9.01
00061 (mi < 11.41f ) ? 2.13f : // AtmNum = 5; Elem = B ; Mass = 10.81
00062 (mi < 13.01f ) ? 1.70f : // AtmNum = 6; Elem = C ; Mass = 12.01
00063 (mi < 15.00f ) ? 1.55f : // AtmNum = 7; Elem = N ; Mass = 14.00
00064 (mi < 17.49f ) ? 1.50f : // AtmNum = 8; Elem = O ; Mass = 15.99
00065 (mi < 19.58f ) ? 1.50f : // AtmNum = 9; Elem = F ; Mass = 18.99
00066 (mi < 21.58f ) ? 1.54f : // AtmNum = 10; Elem = Ne; Mass = 20.17
00067 (mi < 23.64f ) ? 2.27f : // AtmNum = 11; Elem = Na; Mass = 22.98
00068 (mi < 25.64f ) ? 1.73f : // AtmNum = 12; Elem = Mg; Mass = 24.30
00069 (mi < 27.53f ) ? 2.51f : // AtmNum = 13; Elem = Al; Mass = 26.98
00070 (mi < 29.53f ) ? 2.10f : // AtmNum = 14; Elem = Si; Mass = 28.08
00071 (mi < 31.52f ) ? 1.85f : // AtmNum = 15; Elem = P ; Mass = 30.97
00072 (mi < 33.76f ) ? 1.80f : // AtmNum = 16; Elem = S ; Mass = 32.06
00073 (mi < 37.28f ) ? 1.70f : // AtmNum = 17; Elem = Cl; Mass = 35.45
00074 (mi < 39.29f ) ? 2.75f : // AtmNum = 19; Elem = K ; Mass = 39.10
00075 (mi < 49.09f ) ? 1.88f : // AtmNum = 18; Elem = Ar; Mass = 39.48
00076 (mi < 61.12f ) ? 1.63f : // AtmNum = 28; Elem = Ni; Mass = 58.69
00077 (mi < 64.46f ) ? 1.40f : // AtmNum = 29; Elem = Cu; Mass = 63.54
00078 (mi < 67.55f ) ? 1.39f : // AtmNum = 30; Elem = Zn; Mass = 65.38
00079 (mi < 71.18f ) ? 1.87f : // AtmNum = 31; Elem = Ga; Mass = 69.72
00080 (mi < 73.78f ) ? 2.19f : // AtmNum = 32; Elem = Ge; Mass = 72.64
00081 (mi < 76.94f ) ? 1.85f : // AtmNum = 33; Elem = As; Mass = 74.92
00082 (mi < 79.43f ) ? 1.90f : // AtmNum = 34; Elem = Se; Mass = 78.96
00083 (mi < 81.85f ) ? 1.85f : // AtmNum = 35; Elem = Br; Mass = 79.90
00084 (mi < 95.11f ) ? 2.02f : // AtmNum = 36; Elem = Kr; Mass = 83.79
00085 (mi < 107.14f ) ? 1.63f : // AtmNum = 46; Elem = Pd; Mass = 106.42
00086 (mi < 110.14f ) ? 1.72f : // AtmNum = 47; Elem = Ag; Mass = 107.86
00087 (mi < 113.61f ) ? 1.58f : // AtmNum = 48; Elem = Cd; Mass = 112.41
00088 (mi < 116.76f ) ? 1.93f : // AtmNum = 49; Elem = In; Mass = 114.81
00089 (mi < 120.24f ) ? 2.17f : // AtmNum = 50; Elem = Sn; Mass = 118.71
00090 (mi < 124.33f ) ? 2.09f : // AtmNum = 51; Elem = Sb; Mass = 121.76
00091 (mi < 127.25f ) ? 1.98f : // AtmNum = 53; Elem = I ; Mass = 126.90
00092 (mi < 129.45f ) ? 2.06f : // AtmNum = 52; Elem = Te; Mass = 127.60
00093 (mi < 163.19f ) ? 2.16f : // AtmNum = 54; Elem = Xe; Mass = 131.29
00094 (mi < 196.02f ) ? 1.75f : // AtmNum = 78; Elem = Pt; Mass = 195.08
00095 (mi < 198.78f ) ? 1.66f : // AtmNum = 79; Elem = Au; Mass = 196.96
00096 (mi < 202.49f ) ? 1.55f : // AtmNum = 80; Elem = Hg; Mass = 200.59
00097 (mi < 205.79f ) ? 1.96f : // AtmNum = 81; Elem = Tl; Mass = 204.38
00098 (mi < 222.61f ) ? 2.02f : // AtmNum = 82; Elem = Pb; Mass = 207.20
00099 (mi < 119.01f ) ? 1.86f : // AtmNum = 92; Elem = U ; Mass = 238.02
00100 1.50f ; // Unknown
00101 }
|
|
|
Definition at line 112 of file ComputeGBIS.inl. Referenced by ComputeGBISser::doWork(), and HomePatch::setGBISIntrinsicRadii(). 00112 {//, Mass mj) {
00113 return
00114 (mi < 1.500f) ? 0.85f : //H
00115 (mi < 12.500f) ? 0.72f : //C
00116 (mi < 14.500f) ? 0.79f : //N
00117 (mi < 16.500f) ? 0.85f : //O
00118 (mi < 19.500f) ? 0.88f : //F
00119 (mi < 31.500f) ? 0.86f : //P
00120 (mi < 32.500f) ? 0.96f : //S
00121 0.8f ; //all others
00122 }
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Definition at line 519 of file ComputeGBIS.inl. References Calc_dEda_Pair(), and Calc_dEdr_Pair(). 00538 {
00539
00540 //calculate GB energy and force
00541 float aiaj,expr2aiaj4,fij,f_i,expkappa,Dij;
00542 Calc_dEdr_Pair(r,r2,qiqj,ai,aj,
00543 kappa,epsilon_p_i,epsilon_s_i,
00544 aiaj,expr2aiaj4,fij,f_i,expkappa,
00545 Dij,gbEij,ddrGbEij);
00546
00547 //calculate dEda
00548 if (doFullElect) {
00549 Calc_dEda_Pair(r2,ai,aj,qiqj,kappa,
00550 aiaj,expkappa,expr2aiaj4,
00551 fij,f_i,Dij,epsilon_s_i,dEdai,dEdaj);
00552 } else {
00553 dEdai = 0.f;
00554 dEdaj = 0.f;
00555 }
00556 }
|
1.3.9.1