3D-RISM
&rism namelist variables¶
Keep in mind
-
A default 3drism input file can be created as follows:
-
3D-RISMcalculations are performed with therism3d.snglpntprogram built with AmberTools, written by Tyler Luchko. It is the most expensive, yet most statistical mechanically rigorous solvation model. See- Introduction to RISM for a thorough description RISM theory.
- General workflow for using 3D-RISM
- Practical considerations on:
- A sample 3drism input file is shown here
- A tutorial on binding free energy calculation with 3D-RISM is available here
- We have included more variables in 3D-RISM calculations than the ones available in the MMPBSA.py original code. That way, users can be more in control and tackle various issues (e.g., convergence issues).
- One advantage of
3D-RISMis that an arbitrary solvent can be chosen; you just need to change thexvvfilespecified on the command line (see-xvvfileflag in gmx_MMPBSA command line. The default solvent is$AMBERHOME/AmberTools/test/rism1d/tip3p-kh/tip3p.xvv.save. In case this file doesn't exist, a copypath_to_GMXMMPBSA/data/xvv_files/tip3p.xvvis used. You can find examples of precomputed.xvvfiles for SPC/E and TIP3P water in$AMBERHOME/AmberTools/test/rism1dorpath_to_GMXMMPBSA/data/xvv_filesfolders.
xvv(Default = "tip3p")-
Define the selected solvent for 3D-RISM. These solvent xvv files are contained in xBFreE, but you can define a new one simply adding the file path.
- tip3p
- spc
- spc-nacl-3
- spc_mmpbsa_py
Closure approximations¶
closure(Default = "kh")-
Comma separate list of closure approximations. If more than one closure is provided, the 3D-RISM solver will use the closures in order to obtain a solution for the last closure in the list when no previous solutions are available. The solution for the last closure in the list is used for all output. The use of several closures combined with different tolerances can be useful to overcome convergence issues (see §7.3.1)
- "kh": Kovalenko-Hirata
- "hnc": Hyper-netted chain equation
- "psen": Partial Series Expansion of order-n where “n” is a positive integer (e.g., "pse3")
Examples
closure = pse3closure = kh, pse3
Solvation free energy corrections¶
gfcorrection(Default = 0)-
Compute the Gaussian fluctuation excess chemical potential functional. See §7.1.2
- 0: Off
- 1: On
pcpluscorrection(Default = 0)-
Compute the PC+/3D-RISM excess chemical potential functional. See §7.2.4
- 0: Off
- 1: On
Long-range asymptotics¶
Info
Long-range asymptotics are used to analytically account for solvent distribution beyond the solvent box. Long-range asymptotics are always used when calculating a solution but can be omitted for the subsequent thermodynamic calculations, though it is not recommended.
noasympcorr(Default = 1)-
Use long-range asymptotic corrections for thermodynamic calculations.
- 0: Do not use long-range corrections
- 1: Use the long-range corrections
treeDCF(Default = 1)-
Use direct sum, or the treecode approximation to calculate the direct correlation function long-range asymptotic correction.
- 0: Use direct sum
- 1: Use treecode approximation
treeTCF(Default = 1)-
Use direct sum, or the treecode approximation to calculate the total correlation function long-range asymptotic correction.
- 0: Use direct sum
- 1: Use treecode approximation
treeCoulomb(Default = 1)-
Use direct sum, or the treecode approximation to calculate the Coulomb potential energy.
- 0: Use direct sum
- 1: Use treecode approximation
treeDCFMAC(Default = 0.1)- Treecode multipole acceptance criterion for the direct correlation function long-range asymptotic correction.
treeTCFMAC(Default = 0.1)- Treecode multipole acceptance criterion for the total correlation function long-range asymptotic correction.
treeCoulombMAC(Default = 0.1)- Treecode multipole acceptance criterion for the Coulomb potential energy.
treeDCFOrder(Default = 2)- Treecode Taylor series order for the direct correlation function long-range asymptotic correction.
treeTCFOrder(Default = 2)- Treecode Taylor series order for the total correlation function long-range asymptotic correction. Note that the Taylor expansion used does not converge exactly to the TCF long-range asymptotic correction, so a very high order will not necessarily increase accuracy.
treeCoulombOrder(Default = 2)- Treecode Taylor series order for the Coulomb potential energy.
treeDCFN0(Default = 500)- Maximum number of grid points contained within the treecode leaf clusters for the direct correlation function long-range asymptotic correction. This sets the depth of the hierarchical octtree.
treeTCFN0(Default = 500)- Maximum number of grid points contained within the treecode leaf clusters for the total correlation function long-range asymptotic correction. This sets the depth of the hierarchical octtree.
treeCoulombN0(Default = 500)- Maximum number of grid points contained within the treecode leaf clusters for the Coulomb potential energy. This sets the depth of the hierarchical octtree.
Solvation box¶
Info
The non-periodic solvation box super-cell can be defined as variable or fixed in size. When a variable box size is used, the box size will be adjusted to maintain a minimum buffer distance between the atoms of the solute and the box boundary. This has the advantage of maintaining the smallest possible box size while adapting to change of solute shape and orientation. Alternatively, the box size can be specified at run-time. This box size will be used for the duration of the sander calculation. Solvent box dimensions have a strong effect on the numerical precision of 3D-RISM. See §7.2.3 for recommendation on selecting an appropriate box size and resolution.
Variable box size¶
Keep in mind
It is recommended to avoid specifying a large, prime number of processes (≥ 7) when using a variable solvation box size.
buffer(Default = 14)-
Minimum distance (in Å) between solute and edge of solvation box. Specify this with
grdspcbelow. Mutually exclusive withngandsolvbox. See §7.2.3 for details on how this affects numerical accuracy and how this interacts withljTolerance, andtolerance- when < 0: Use fixed box size (see
ngandsolvboxbelow) - when >= 0: Use
bufferdistance
- when < 0: Use fixed box size (see
grdspc(Default = 0.5,0.5,0.5)- Grid spacing (in Å) of the solvation box. Specify this with
bufferabove. Mutually exclusive withngandsolvbox.
Fixed box size¶
ng(Default = -1,-1,-1)-
Comma separated number of grid points to use in the x, y, and z directions. Used only if buffer < 0. Mutually exclusive with
bufferandgrdspcabove, and paired withsolvboxbelow.Warning
No default, this must be set if buffer < 0. As a general requirement, the number of grids points in each dimension must be divisible by two, and the number of grid points in the z-axis must be divisible by the number of processes.
As an example: define like
ng=1000,1000,1000, where all numbers are divisible by two and you can use 1, 2, 4, 5, 8, 10... pocessors, all divisors of 1000 (value in the z-axis).Take into account that at a certain level, running RISM in parallel may actually hurt performance, since previous solutions are used as an initial guess for the next frame, hastening convergence. Running in parallel loses this advantage. Also, due to the overhead involved in which each thread is required to load every topology file when calculating energies, parallel scaling will begin to fall off as the number of threads reaches the number of frames.
solvbox(Default = -1,-1,-1)-
Sets the size in Å of the fixed size solvation box. Used only if
buffer< 0. Mutually exclusive withbufferandgrdspcabove, and paired withngabove.Warning
No default, this must be set if buffer < 0. Define like
solvbox=20,20,20 solvcut(Default = 14)- Cutoff used for solute-solvent interactions. The default value is that of buffer. Therefore, if you set
buffer< 0 and specifyngandsolvboxinstead, you must setsolvcutto a nonzero value; otherwise the program will quit in error.
Solution convergence¶
tolerance(Default = 0.00001)-
A comma-separated list of maximum residual values for solution convergence. This has a strong effect on the cost of 3D-RISM calculations (smaller value for tolerance -> more computation). When used in combination with a list of closures it is possible to define different tolerances for each of the closures. This can be useful for difficult to converge calculations (see §7.4.1). For the sake of efficiency, it is best to use as high a tolerance as possible for all but the last closure. See §7.2.3 for details on how this affects numerical accuracy and how this interacts with
ljTolerance,buffer, andsolvbox. Three formats of list are possible:- one tolerance: All closures but the last use a tolerance of 1. The last tolerance in the list is used by the last closure. In practice this is the most efficient.
- two tolerances: All closures but the last use the first tolerance in the list. The last tolerance in the list is used by the last closure.
- n tolerances: Tolerances from the list are assigned to the closure list in order.
Examples
closure = pse3, tolerance=0.00001A tolerance of
0.00001will be used for clousurepse3closure = kh, pse3, tolerance=0.00001A tolerance of
1will be used for clousurekh, while0.00001will be used for clousurepse3. Equivalent toclosure = kh, pse3, tolerance=1,0.00001closure = kh, pse2, pse3, tolerance=0.01, 0.00001A tolerance of
0.01will be used for clousureskhandpse2, while0.00001will be used for clousurepse3. Equivalent toclosure = kh, pse2, pse3, tolerance=0.01,0.01,0.00001closure = kh,pse2,pse3, tolerance=0.1,0.01,0.00001A tolerance of
0.1will be used for clousurekh,0.01will be used for clousurepse2, while0.00001will be used for clousurepse3. ljTolerance(Default = -1)- Lennard-Jones accuracy (Optional.) Determines the Lennard-Jones cutoff distance based on the desired accuracy of the calculation. See §7.2.3 for details on how this affects numerical accuracy and how this interacts with
tolerance,buffer, andsolvbox. asympKSpaceTolerance(Default = -1)-
Tolerance reciprocal space long range asymptotics accuracy (Optional.) Determines the reciprocal space long range asymptotic cutoff distance based on the desired accuracy of the calculation. See §7.2.3 for details on how this affects numerical accuracy. Possible values are:
when < 0: asympKSpaceTolerance = tolerance/10when = 0: no cutoffwhen > 0: given value determines the maximum error in the reciprocal-space long range asymptotics calculations
mdiis_del(Default = 0.7)- MDIIS step size.
mdiis_nvec(Default = 5)- Number of previous iterations MDIIS uses to predict a new solution.
mdiis_restart(Default = 10)- If the current residual is mdiis_restart times larger than the smallest residual in memory, then the MDIIS procedure is restarted using the lowest residual solution stored in memory. Increasing this number can sometimes help convergence.
maxstep(Default = 10000)- Maximum number of iterations allowed to converge on a solution.
npropagate(Default = 5)-
Number of previous solutions propagated forward to create an initial guess for this solute atom configuration.
- =0: Do not use any previous solutions
- = 1..5: Values greater than 0 but less than 4 or 5 will use less system memory but may introduce artifacts to the solution (e.g., energy drift).
Output¶
polardecomp(Default = 0)-
Decomposes solvation free energy into polar and non-polar components. Note that this typically requires 80% more computation time.
- 0: Don’t decompose solvation free energy into polar and non-polar components.
- 1: Decompose solvation free energy into polar and non-polar components.
entropicdecomp(Default = 0)-
Decomposes solvation free energy into energy and entropy components. Also performs temperature derivatives of other calculated quantities. Note that this typically requires 80% more computation time and requires a
.xvvfile version 1.000 or higher (available withinGMXMMPBSAdata folder). See §7.1.3 and §7.3- 0: No entropic decomposition
- 1: Entropic decomposition
rism_verbose(Default = 0)-
Level of output in temporary RISM output files. May be helpful for debugging or following convergence.
- 0: just print the final result
- 1: additionally prints the total number of iterations for each solution
- 2: additionally prints the residual for each iteration and details of the MDIIS solver (useful for debugging and convergence analyses)