├── .gitattributes ├── .gitignore ├── PEG-in-vacuum ├── PEG.jpg ├── README.md ├── ff │ ├── charmm35r.itp │ └── peg.itp ├── inputs │ └── nvt.mdp ├── peg.gro └── topol.top ├── README.md ├── sodium_chloride_solution ├── NaCl.jpg ├── README.md ├── build │ ├── .ipynb_checkpoints │ │ └── generate_configuration_gromacs-checkpoint.ipynb │ ├── build_multiple_folder.sh │ └── generate_configuration_gromacs.ipynb ├── cs_5M │ ├── conf.gro │ └── topol.top ├── ff │ ├── atomtypes.atp │ ├── ffbonded.itp │ ├── ffnonbonded.itp │ ├── forcefield.itp │ ├── ions.itp │ ├── molecules.rtp │ └── tip4peps.itp └── input │ ├── npt.mdp │ ├── nvt.mdp │ └── prod.mdp ├── water-in-box ├── README.md ├── bulkwater.jpg ├── conf.gro ├── diff_coeff_mda.py ├── ff │ ├── forcefield.itp │ └── tip4peps.itp ├── generate_system.py ├── input │ ├── npt.mdp │ ├── nvt.mdp │ ├── run.mdp │ └── visco.mdp └── topol.top └── water-in-salt-slit ├── Na2SO4_1M ├── ConfigurationGenerator.py ├── Na2SO4 │ ├── Angle.dat │ ├── Bond.dat │ └── Position.dat ├── conf.gro ├── log.err ├── log.out ├── npt.mdp ├── npt.top ├── run_bigfoot_pore.sh ├── runall.sh └── topol.top ├── NaCl_0M ├── ConfigurationGenerator.py ├── NaCl │ └── Position.dat ├── conf.gro ├── log.err ├── log.out ├── npt.mdp ├── npt.top ├── run_bigfoot_pore.sh ├── runall.sh └── topol.top ├── NaCl_1M ├── ConfigurationGenerator.py ├── NaCl │ └── Position.dat ├── conf.gro ├── log.err ├── log.out ├── npt.mdp ├── npt.top ├── run_bigfoot_pore.sh ├── runall.sh └── topol.top ├── NaCl_4M ├── ConfigurationGenerator.py ├── NaCl │ └── Position.dat ├── conf.gro ├── energy.xvg ├── log.err ├── log.out ├── npt.mdp ├── npt.top ├── nvt.cpt ├── nvt.edr ├── nvt.log ├── nvt.mdp ├── nvt.top ├── nvt.tpr ├── run_bigfoot_pore.sh ├── runall.sh ├── state.vmd └── topol.top ├── README.md ├── ff ├── atomtypes.atp ├── ffbonded.itp ├── ffnonbonded.itp ├── forcefield.itp ├── ions.itp ├── molecules.rtp └── tip4peps.itp └── input ├── npt.mdp ├── nvt.mdp ├── prodHR.mdp └── prodLR.mdp /.gitattributes: -------------------------------------------------------------------------------- 1 | * linguist-vendored 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | **/*.xtc 2 | **/*.tpr 3 | **/*.log 4 | **/*.trr 5 | **/*.edr 6 | **/*.cpt 7 | **/min.gro 8 | **/nvt.gro 9 | **/npt.gro 10 | **/pro.gro 11 | **/min.gro 12 | **/nvt.gro 13 | **/npt.gro 14 | **/temp/ 15 | **/*#* 16 | **/step*pdb 17 | try 18 | docs/doc-sphinx/build 19 | **/__pycache__ 20 | -------------------------------------------------------------------------------- /PEG-in-vacuum/PEG.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simongravelle/gromacs-input-files/0bb814cc9b2e3f357b95d96982b128edb5535689/PEG-in-vacuum/PEG.jpg -------------------------------------------------------------------------------- /PEG-in-vacuum/README.md: -------------------------------------------------------------------------------- 1 | # PEG in vacuum 2 | 3 | 4 | 5 | ### Description 6 | 7 | The system is a small PEG molecule in vacuum (or rather implicit water with dielectric permittivity of 80). 8 | 9 | ### How to 10 | 11 | Run gromacs using 12 | 13 | ``` 14 | gmx grompp -f inputs/nvt.mdp -c peg.gro -p topol.top -o nvt -maxwarn 1 15 | gmx mdrun -v -deffnm nvt 16 | ``` 17 | 18 | ### Output 19 | 20 | This [video](https://youtu.be/8ldIHP175TI) has been made with this script. 21 | 22 | ### Contact 23 | 24 | Feel free to contact me by email if you have inquiries. You can find contact details on my [personal page](https://simongravelle.github.io/). 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /PEG-in-vacuum/ff/charmm35r.itp: -------------------------------------------------------------------------------- 1 | [ atomtypes ] 2 | ;name at.num mass charge ptype c6 c12 3 | C 6 12.0110 -0.010 A 0.0019777255 4.1734223e-06 4 | OE 8 15.9994 -0.340 A 0.0010807004 6.9784497e-07 5 | H 1 1.00800 0.090 A 0.0001085175 2.0103758e-08 6 | OT 8 15.9994 -0.834 A 0.0024895404 2.4347674e-06 7 | HT 1 1.00800 0.417 A 3.15397e-09 1.29213e-17 8 | 9 | ; atomtypes for water models 10 | ; calculated using gmx sigeps -sig 3.15058e-01 -eps 6.36386e-01 11 | OW 8 15.999400 -0.834 A 2.48957e-03 2.43482e-06 ; TIP3p O 12 | HW 1 1.008000 0.417 A 0.0 0.0 ; TIP3p H 13 | 14 | [ nonbond_params ] 15 | ; i j func c6 c12 16 | C OE 1 0.00146196 1.70658e-06 17 | C H 1 0.000463268 2.89658e-07 18 | C OT 1 0.00221892 3.18768e-06 19 | C HT 1 2.49754e-06 7.34343e-12 20 | OE H 1 0.000342454 1.18445e-07 21 | OE OT 1 0.00164026 1.30349e-06 22 | OE HT 1 1.84621e-06 3.00284e-12 23 | H OT 1 0.000519767 2.21242e-07 24 | H HT 1 5.8503e-07 5.09673e-13 25 | OT HT 1 2.80213e-06 5.60895e-12 26 | 27 | 28 | -------------------------------------------------------------------------------- /PEG-in-vacuum/inputs/nvt.mdp: -------------------------------------------------------------------------------- 1 | integrator = md 2 | dt = 0.001 3 | nsteps = 5000 4 | 5 | nstenergy = 1000 6 | nstlog = 1000 7 | nstxout = 1 8 | 9 | constraints = hbonds 10 | 11 | coulombtype = pme 12 | rcoulomb = 1.0 13 | rlist = 1.0 14 | 15 | vdwtype = Cut-off 16 | rvdw = 1.0 17 | 18 | tcoupl = v-rescale 19 | tau_t = 0.1 20 | ref_t = 300 21 | tc_grps = PEG 22 | 23 | gen_vel = yes 24 | gen-temp = 300 25 | gen-seed = 65823 26 | 27 | comm-mode = angular 28 | 29 | epsilon-r = 80 30 | -------------------------------------------------------------------------------- /PEG-in-vacuum/peg.gro: -------------------------------------------------------------------------------- 1 | PEG in water 2 | 86 3 | 1PEG H 1 2.032 1.593 1.545 0.6568 2.5734 1.2192 4 | 1PEG C 2 1.929 1.614 1.508 0.1558 -0.2184 0.8547 5 | 1PEG H1 3 1.902 1.721 1.523 -3.6848 -0.3932 -3.0658 6 | 1PEG H2 4 1.921 1.588 1.400 -1.5891 1.4960 0.5057 7 | 1PEG O 5 1.831 1.544 1.576 0.0564 -0.5300 -0.6094 8 | 1PEG H3 6 1.676 1.665 1.494 -2.6585 -0.5997 0.3128 9 | 1PEG C1 7 1.699 1.559 1.519 0.6996 0.0066 0.2900 10 | 1PEG H4 8 1.699 1.500 1.425 4.2893 1.6837 -0.9462 11 | 1PEG H5 9 1.502 1.543 1.578 1.3303 1.7486 -1.1622 12 | 1PEG C2 10 1.598 1.510 1.623 0.4066 0.3592 -0.1336 13 | 1PEG H6 11 1.602 1.554 1.725 -2.6187 -0.1895 0.3258 14 | 1PEG O1 12 1.603 1.363 1.623 -0.1776 -0.0020 -0.0899 15 | 1PEG H7 13 1.393 1.314 1.669 -0.0947 0.0684 0.0712 16 | 1PEG C3 14 1.498 1.300 1.703 -0.2057 0.7610 0.7141 17 | 1PEG H8 15 1.501 1.335 1.809 -0.0161 -0.9788 1.3167 18 | 1PEG H9 16 1.426 1.104 1.753 -0.4509 0.1150 0.5531 19 | 1PEG C4 17 1.523 1.150 1.723 -0.3943 0.0846 0.6894 20 | 1PEG H10 18 1.535 1.109 1.622 -1.0253 -1.1778 1.0939 21 | 1PEG O2 19 1.636 1.115 1.802 -0.0583 0.0268 -0.3353 22 | 1PEG H11 20 1.697 0.952 1.903 -1.7200 1.5809 0.3153 23 | 1PEG C5 21 1.665 0.972 1.799 -0.0791 -0.1231 -0.5862 24 | 1PEG H12 22 1.571 0.914 1.787 0.3571 -0.6238 -1.8080 25 | 1PEG H13 23 1.774 0.822 1.702 1.2447 0.4928 0.6419 26 | 1PEG C6 24 1.761 0.931 1.694 0.4869 0.3383 -0.2744 27 | 1PEG H14 25 1.854 0.978 1.731 1.4196 -0.9046 -0.9738 28 | 1PEG O3 26 1.743 0.971 1.557 0.1563 0.2726 -0.3537 29 | 1PEG H15 27 1.854 0.813 1.485 -0.6991 -0.1432 2.1393 30 | 1PEG C7 28 1.859 0.924 1.479 0.4287 -0.2527 0.0436 31 | 1PEG H16 29 1.956 0.950 1.525 1.6711 -1.5638 -1.6808 32 | 1PEG H17 30 1.848 1.101 1.339 -0.6918 -0.0488 -0.8265 33 | 1PEG C8 31 1.838 0.990 1.342 -0.0193 -0.1000 -0.1814 34 | 1PEG H18 32 1.927 0.948 1.293 0.8813 1.1249 0.3367 35 | 1PEG O4 33 1.716 0.946 1.277 0.1208 0.1713 -0.1534 36 | 1PEG H19 34 1.684 1.113 1.155 -0.1424 -0.1358 1.8617 37 | 1PEG C9 35 1.706 1.004 1.149 0.1405 -0.0094 0.2534 38 | 1PEG H20 36 1.795 0.985 1.085 -1.7112 0.7171 -2.7245 39 | 1PEG H21 37 1.603 0.833 1.095 1.4338 0.2813 -0.5773 40 | 1PEG C10 38 1.592 0.940 1.067 0.6001 0.2381 -0.4444 41 | 1PEG H22 39 1.610 0.963 0.960 -0.2312 -0.2985 -0.7063 42 | 1PEG O5 40 1.466 0.987 1.117 -0.2148 -0.3325 0.1596 43 | 1PEG H23 41 1.357 0.826 1.026 0.6107 0.0522 1.1743 44 | 1PEG C11 42 1.354 0.936 1.040 -0.0091 0.2551 -0.4228 45 | 1PEG H24 43 1.345 0.996 0.947 -0.0423 0.8640 -0.0331 46 | 1PEG H25 44 1.138 0.950 1.032 -0.2858 2.8250 -0.3461 47 | 1PEG C12 45 1.219 0.960 1.107 0.0680 -0.1547 -0.2231 48 | 1PEG H26 46 1.209 0.886 1.189 0.4913 -1.1433 -1.0425 49 | 1PEG O6 47 1.223 1.096 1.158 0.2216 0.7724 -0.4694 50 | 1PEG H27 48 1.183 1.123 1.359 0.0466 -0.8976 -0.6364 51 | 1PEG C13 49 1.129 1.110 1.263 0.0391 -0.5138 -0.6822 52 | 1PEG H28 50 1.059 1.025 1.274 0.2618 -0.8095 -1.4633 53 | 1PEG H29 51 0.991 1.232 1.138 -0.1167 1.8513 0.7346 54 | 1PEG C14 52 1.042 1.230 1.236 -0.1117 0.2698 0.7386 55 | 1PEG H30 53 0.968 1.236 1.319 -1.4177 0.0546 -0.3711 56 | 1PEG O7 54 1.119 1.350 1.240 -0.4407 0.2275 0.7391 57 | 1PEG H31 55 0.970 1.446 1.111 -1.3651 -0.6114 0.9876 58 | 1PEG C15 56 1.047 1.464 1.189 0.0833 0.1406 -0.5338 59 | 1PEG H32 57 0.995 1.519 1.271 0.6443 -0.5819 0.3204 60 | 1PEG H33 58 1.087 1.659 1.092 0.2941 -0.8296 -1.0519 61 | 1PEG C16 59 1.139 1.573 1.141 0.9879 0.1188 -0.0842 62 | 1PEG H34 60 1.210 1.532 1.066 0.7009 2.7735 -1.9601 63 | 1PEG O8 61 1.217 1.635 1.244 0.4538 -0.0351 0.2097 64 | 1PEG H35 62 1.319 1.743 1.107 -0.5192 -1.4478 -0.0020 65 | 1PEG C17 63 1.339 1.689 1.202 0.6296 0.3689 0.8390 66 | 1PEG H36 64 1.412 1.607 1.186 -0.3249 -0.1704 -1.1088 67 | 1PEG H37 65 1.413 1.700 1.405 -1.0764 -0.1952 -0.3833 68 | 1PEG C18 66 1.406 1.771 1.320 -0.0679 -0.2688 -0.5376 69 | 1PEG H38 67 1.504 1.797 1.275 1.4789 -0.5698 2.4586 70 | 1PEG O9 68 1.327 1.882 1.354 -0.0543 0.4879 -0.4802 71 | 1PEG H39 69 1.451 1.924 1.525 -0.6963 0.8121 -0.1322 72 | 1PEG C19 70 1.394 1.972 1.444 0.3030 0.2768 -1.1694 73 | 1PEG H40 71 1.457 2.046 1.388 0.9758 1.5095 1.1360 74 | 1PEG H41 72 1.230 2.082 1.406 -0.0151 -2.0577 -0.5014 75 | 1PEG C20 73 1.287 2.054 1.497 -0.7215 -0.6252 0.4174 76 | 1PEG H42 74 1.330 2.146 1.543 -1.8737 -0.9199 2.2249 77 | 1PEG O10 75 1.199 1.998 1.595 -0.2326 -0.4867 -0.4768 78 | 1PEG H43 76 1.019 2.073 1.603 0.5775 0.5085 -0.5227 79 | 1PEG C21 77 1.112 2.083 1.663 0.1930 0.1202 0.1516 80 | 1PEG H44 78 1.148 2.187 1.655 0.3424 -0.0686 -2.1644 81 | 1PEG H45 79 1.035 2.103 1.850 2.2693 2.0650 0.1667 82 | 1PEG C22 80 1.113 2.039 1.806 0.2481 -0.7233 0.3397 83 | 1PEG H46 81 1.082 1.935 1.829 -3.1745 0.4660 1.6921 84 | 1PEG O11 82 1.242 2.081 1.854 -0.2620 -0.4716 -0.0803 85 | 1PEG H47 83 1.350 2.094 2.024 0.2058 -3.5468 1.7514 86 | 1PEG C23 84 1.247 2.064 1.997 -0.3147 -0.1542 -0.7945 87 | 1PEG H48 85 1.161 2.109 2.052 -0.0791 -0.6997 0.0396 88 | 1PEG H49 86 1.230 1.957 2.023 -2.4724 0.2719 -0.2221 89 | 3.00000 3.00000 3.00000 90 | -------------------------------------------------------------------------------- /PEG-in-vacuum/topol.top: -------------------------------------------------------------------------------- 1 | [ defaults ] 2 | ; nbfunc comb-rule gen-pairs fudgeLJ fudgeQQ 3 | 1 1 no 1.0 1.0 4 | 5 | ; Include forcefield parameters 6 | #include "ff/charmm35r.itp" 7 | #include "ff/peg.itp" 8 | 9 | [ system ] 10 | ; Name 11 | PEG 12 | 13 | [ molecules ] 14 | ; Compound #mols 15 | PEG 1 16 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # GROMACS input files 2 | 3 |

4 | 5 | 6 | 7 |

8 | 9 | You can also have a look at [Gromacs Tutorials](https://gromacstutorials.github.io/) if you are new to Gromacs. 10 | -------------------------------------------------------------------------------- /sodium_chloride_solution/NaCl.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simongravelle/gromacs-input-files/0bb814cc9b2e3f357b95d96982b128edb5535689/sodium_chloride_solution/NaCl.jpg -------------------------------------------------------------------------------- /sodium_chloride_solution/README.md: -------------------------------------------------------------------------------- 1 | # Bulk sodium chloride solution 2 | 3 | 4 | 5 | ### Description 6 | 7 | The simulation consists in a cubic box filled with water molecule and 8 | Na Cl ions. The force field for the water is [tip4p/epsilon](https://doi.org/10.1021/jp410865y). The force field for the ions is from [Loche et al.](https://doi.org/10.1021/acs.jpcb.1c05303) 9 | 10 | ### How to 11 | 12 | From the build/ folder, execute generate_configuration_gromacs.ipynb using jupyter-notebook to generate 13 | the initial configuration, or use the build_multiple_folder.sh bash script. 14 | 15 | Then, run gromacs using 16 | ``` 17 | gmx grompp -f ../input/nvt.mdp -o nvt -pp nvt -po nvt 18 | gmx mdrun -v -deffnm nvt 19 | mv nvt.gro conf.gro 20 | 21 | gmx grompp -f ../input/npt.mdp -o npt -pp npt -po npt 22 | gmx mdrun -v -deffnm npt 23 | mv npt.gro conf.gro 24 | 25 | gmx grompp -f ../input/prod.mdp -o prod -pp prod -po prod 26 | gmx mdrun -v -deffnm prod 27 | ``` 28 | 29 | ### Contact 30 | 31 | Feel free to contact me by email if you have inquiries. You can find contact 32 | details on my [personal page](https://simongravelle.github.io/). 33 | -------------------------------------------------------------------------------- /sodium_chloride_solution/build/build_multiple_folder.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | jupyter nbconvert --to script 'generate_configuration_gromacs.ipynb' 6 | 7 | for cions in 1 2 3 4 5; 8 | do 9 | newline='c = '$cions 10 | linetoreplace=$(cat generate_configuration_gromacs.py | grep 'c =') 11 | sed -i '/'"$linetoreplace"'/c\'"$newline" generate_configuration_gromacs.py 12 | 13 | DIRNAME=cs_${cions}M 14 | if [ ! -d "../$DIRNAME" ]; then 15 | echo "creating folder" 16 | mkdir ../$DIRNAME 17 | fi 18 | 19 | python3 generate_configuration_gromacs.py 20 | 21 | mv conf.gro topol.top ../$DIRNAME 22 | done 23 | 24 | rm generate_configuration_gromacs.py 25 | -------------------------------------------------------------------------------- /sodium_chloride_solution/cs_5M/topol.top: -------------------------------------------------------------------------------- 1 | #include "../ff/forcefield.itp" 2 | #include "../ff/tip4peps.itp" 3 | #include "../ff/ions.itp" 4 | 5 | [ System ] 6 | Bulk Na Cl electrolyte 7 | 8 | [ Molecules ] 9 | 10 | Cl 83 11 | Na 83 12 | SOL 1834 13 | -------------------------------------------------------------------------------- /sodium_chloride_solution/ff/atomtypes.atp: -------------------------------------------------------------------------------- 1 | ; atom types ==== masses ====== ; description 2 | Na 22.9900 ; sodium (Na) 3 | Cl 35.4500 ; chlorine (Cl) 4 | HW 1.0080 ; water hydrogen (HW) 5 | OW 15.9994 ; water oxygen (OW) 6 | MW 0.0000 ; water virtual site (MW) 7 | O 15.9994 ; oxygen SO4 (O) 8 | S 32.0600 ; sulfure SO4 (S) 9 | -------------------------------------------------------------------------------- /sodium_chloride_solution/ff/ffbonded.itp: -------------------------------------------------------------------------------- 1 | [ bondtypes ] 2 | ; i j func b0 kb 3 | S O 1 0.15 3.7656e4 4 | 5 | [ angletypes ] 6 | ; i j func b0 kb 7 | O S O 1 109.5 520 8 | -------------------------------------------------------------------------------- /sodium_chloride_solution/ff/ffnonbonded.itp: -------------------------------------------------------------------------------- 1 | [ atomtypes ] 2 | ; name at.num mass charge ptype sigma epsilon 3 | ; ---------- salts parameters 4 | Na 11 22.990 0.0000 A 0.23100 0.45000 5 | Cl 17 35.450 0.0000 A 0.43000 0.42000 6 | O 8 15.9994 0.0000 A 0.386 0.12 7 | S 16 32.0600 0.0000 A 0.355 1.0465 8 | 9 | ; ---------- water parameters 10 | HW 1 1.0079 0.0000 A 0.00000 0.00000 11 | OW 8 15.9994 0.0000 A 0.31650 0.77323 12 | MW 0 0.000 0.0000 D 0.00000 0.00000 13 | -------------------------------------------------------------------------------- /sodium_chloride_solution/ff/forcefield.itp: -------------------------------------------------------------------------------- 1 | [ defaults ] 2 | ; nbfunc comb-rule gen-pairs fudgeLJ fudgeQQ 3 | 1 2 no 1.0 0.833 4 | 5 | #include "ffnonbonded.itp" 6 | #include "ffbonded.itp" 7 | -------------------------------------------------------------------------------- /sodium_chloride_solution/ff/ions.itp: -------------------------------------------------------------------------------- 1 | [ moleculetype ] 2 | ; molname nrexcl 3 | Na 1 4 | 5 | [ atoms ] 6 | ; id at type res nr residu name at name cg nr charge 7 | 1 Na 1 Na Na 1 1 8 | 9 | #ifdef POSRES_ION 10 | [ position_restraints ] 11 | ; ai funct fcx fcy fcz 12 | 1 1 0 0 1000 13 | #endif 14 | 15 | [ moleculetype ] 16 | ; molname nrexcl 17 | Naf 1 18 | 19 | [ atoms ] 20 | ; id at type res nr residu name at name cg nr charge 21 | 1 Na 1 Na Na 1 1 22 | 23 | #ifdef POSRES_Na 24 | [ position_restraints ] 25 | ; ai funct fcx fcy fcz 26 | 1 1 0 0 1000 27 | #endif 28 | 29 | [ moleculetype ] 30 | ; molname nrexcl 31 | Cl 1 32 | 33 | [ atoms ] 34 | ; id at type res nr residu name at name cg nr charge 35 | 1 Cl 1 Cl Cl 1 -1 36 | 37 | #ifdef POSRES_ION 38 | 39 | [ position_restraints ] 40 | ; ai funct fcx fcy fcz 41 | 1 1 1000 1000 1000 ; restrains to a point 42 | 43 | #endif 44 | 45 | [ moleculetype ] 46 | ; molname nrexcl 47 | Clf 1 48 | 49 | [ atoms ] 50 | ; id at type res nr residu name at name cg nr charge 51 | 1 Cl 1 Cl Cl 1 -1 52 | 53 | #ifdef POSRES_Clf 54 | 55 | [ position_restraints ] 56 | ; ai funct fcx fcy fcz 57 | 1 1 1000 1000 1000 ; restrains to a point 58 | 59 | #endif 60 | 61 | [moleculetype] 62 | ; name nrexcl 63 | SO4 1 64 | 65 | [atoms] 66 | ;nr type resnr residu atom cgnr charge 67 | 1 O 1 SO4 O1 1 -1 15.9994 68 | 2 O 1 SO4 O2 1 -1 15.9994 69 | 3 O 1 SO4 O3 1 -1 15.9994 70 | 4 O 1 SO4 O4 1 -1 15.9994 71 | 5 S 1 SO4 S 1 2 32.0600 72 | 73 | [ bonds ] 74 | ; ai aj funct c0 c1 75 | 1 5 1 0.1520 3.7656e4 76 | 2 5 1 0.1520 3.7656e4 77 | 3 5 1 0.1520 3.7656e4 78 | 4 5 1 0.1520 3.7656e4 79 | 80 | [ angles ] 81 | ; ai aj ak funct angle fc 82 | 1 5 2 1 109.5 520 83 | 1 5 3 1 109.5 520 84 | 1 5 4 1 109.5 520 85 | 2 5 3 1 109.5 520 86 | 2 5 4 1 109.5 520 87 | 3 5 4 1 109.5 520 88 | 89 | [exclusions] 90 | 1 2 3 4 5 91 | 2 1 3 4 5 92 | 3 1 2 4 5 93 | 4 1 2 3 5 94 | 5 1 2 3 4 95 | 96 | [moleculetype] 97 | ; name nrexcl 98 | SO4f 1 99 | 100 | [atoms] 101 | ;nr type resnr residu atom cgnr charge 102 | 1 O 1 SO4f O1 1 -1 15.9994 103 | 2 O 1 SO4f O2 1 -1 15.9994 104 | 3 O 1 SO4f O3 1 -1 15.9994 105 | 4 O 1 SO4f O4 1 -1 15.9994 106 | 5 S 1 SO4f S 1 2 32.0600 107 | 108 | [ bonds ] 109 | ; ai aj funct c0 c1 110 | 1 5 1 0.1520 3.7656e4 111 | 2 5 1 0.1520 3.7656e4 112 | 3 5 1 0.1520 3.7656e4 113 | 4 5 1 0.1520 3.7656e4 114 | 115 | [ angles ] 116 | ; ai aj ak funct angle fc 117 | 1 5 2 1 109.5 520 118 | 1 5 3 1 109.5 520 119 | 1 5 4 1 109.5 520 120 | 2 5 3 1 109.5 520 121 | 2 5 4 1 109.5 520 122 | 3 5 4 1 109.5 520 123 | 124 | [exclusions] 125 | 1 2 3 4 5 126 | 2 1 3 4 5 127 | 3 1 2 4 5 128 | 4 1 2 3 5 129 | 5 1 2 3 4 130 | 131 | ; Include Position restraint file 132 | #ifdef POSRES 133 | #include "posre_SO4f.itp" 134 | #endif 135 | 136 | -------------------------------------------------------------------------------- /sodium_chloride_solution/ff/molecules.rtp: -------------------------------------------------------------------------------- 1 | [ HO4 ] 2 | [ atoms ] 3 | OW OW 0.00 0 4 | HW1 HW 0.5564 0 5 | HW2 HW 0.5564 0 6 | MW MW -1.1128 0 7 | [ bonds ] 8 | OW HW1 9 | OW HW2 10 | 11 | [ Na ] 12 | [ atoms ] 13 | Na Na 1.00000 1 14 | 15 | [ Cl ] 16 | [ atoms ] 17 | Cl Cl -1.00000 1 18 | 19 | [ SO4 ] 20 | [ atoms ] 21 | O1 O -1 1 22 | O2 O -1 1 23 | O3 O -1 1 24 | O4 O -1 1 25 | S S 2 1 26 | 27 | [ bonds ] 28 | S O1 29 | S O2 30 | S O3 31 | S O4 32 | 33 | [ angles ] 34 | O1 S O2 35 | O1 S O3 36 | O1 S O4 37 | O2 S O3 38 | O2 S O4 39 | O3 S O4 40 | 41 | [ exclusions ] 42 | O2 O3 O4 S 43 | O1 O3 O4 S 44 | O1 O2 O4 S 45 | O1 O2 O3 S 46 | O1 O2 O3 O4 47 | -------------------------------------------------------------------------------- /sodium_chloride_solution/ff/tip4peps.itp: -------------------------------------------------------------------------------- 1 | [ moleculetype ] 2 | ; molname nrexcl 3 | SOL 2 4 | 5 | [ atoms ] 6 | ; id at type res nr res name at name cg nr charge mass 7 | 1 OW 1 SOL OW 1 0 15.9994 8 | 2 HW 1 SOL HW1 1 0.527 1.0079 9 | 3 HW 1 SOL HW2 1 0.527 1.0079 10 | 4 MW 1 SOL MW 1 -1.054 0.0000 11 | 12 | [ settles ] 13 | ; i funct doh dhh 14 | 1 1 0.09572 0.15139 15 | 16 | [ virtual_sites3 ] 17 | ; Vsite from funct a b 18 | 4 1 2 3 1 0.089608 0.089608 19 | 20 | [ exclusions ] 21 | 1 2 3 4 22 | 2 1 3 4 23 | 3 1 2 4 24 | 4 1 2 3 25 | 26 | ; The position of the virtual site is computed as follows: 27 | ; 28 | ; O 29 | ; 30 | ; V 31 | ; 32 | ; H H 33 | ; 34 | ; const = distance (OV) / [ cos (angle(VOH)) * distance (OH) ] / 2 35 | ; = 0.0105 nm / [ cos (52.26 deg) * 0.09572 nm ] * 2 36 | ; = 0.17922 / 2 37 | ; = 0.089608 38 | ; 39 | ; Vsite pos x4 = x1 + a*(x2-x1) + b*(x3-x1) 40 | -------------------------------------------------------------------------------- /sodium_chloride_solution/input/npt.mdp: -------------------------------------------------------------------------------- 1 | ;======================= running ============= ; description 2 | integrator = md ; leap-frog algorithm for integrating Newton’s equations of motion. 3 | nsteps = 250000 ; maximum number of steps to integrate or minimize (2 ns) 4 | dt = 0.001 ; time step for integration (1 fs) 5 | comm_mode = linear ; remove center of mass translation 6 | comm_grps = system ; group(s) for center of mass motion removal 7 | gen-vel = no ; generate velocities according to a Maxwell distribution 8 | gen-temp = 293.15 ; temperature for Maxwell distribution (K) 9 | 10 | ;======================= neighbor searching == ; description 11 | cutoff-scheme = Verlet ; generate a pair list with buffering 12 | nstlist = 10 ; frequency to update the neighbor list 13 | ns_type = grid 14 | 15 | ;======================= output ============== ; description 16 | nstlog = 10000 ; number of steps that elapse between writing energies to the log file 17 | nstenergy = 10000 ; number of steps that elapse between writing energies to energy file 18 | nstxout-compressed = 10000 ; frequency to write coordinates to xtc trajectory 19 | 20 | ;======================= van der Waals ======= ; description 21 | vdw-type = Cut-off ; plain cut-off with rlist >= rvdw 22 | rvdw = 1.4 ; distance for the LJ cut-off (nm) 23 | 24 | ; ====================== electrostatics ====== ; description 25 | coulombtype = pme ; fast smooth Particle-Mesh Ewald (SPME) electrostatics 26 | fourierspacing = 0.1 ; this should give an accuracy of about 2-3*10^-4 27 | pme-order = 4 ; interpolation order for PME (4 = cubic interpolation) 28 | rcoulomb = 1.4 ; distance for the Coulomb cut-off (nm) 29 | 30 | ; ====================== constraints ========= ; description 31 | constraint-algorithm = lincs ; more stable and faster than SHAKE 32 | constraints = hbonds ; convert the bonds with H-atoms to constraints 33 | continuation = yes ; apply or not constraints to the start configuration 34 | 35 | ; ====================== temp. coupling ====== ; description 36 | tcoupl = v-rescale ; Berendsen + stochastic term = proper canonical ensemble 37 | ld-seed = 48456 ; seed 38 | tc-grps = Water non-Water ; groups to couple to separate temperature baths 39 | tau-t = 0.5 0.5 ; time constant for coupling (ps) 40 | ref-t = 293.15 293.15 ; reference temperature for coupling (K) 41 | nhchainlength = 1 ; number of chained Nose-Hoover thermostats 42 | 43 | ; ====================== press. coupling ===== ; description 44 | pcoupl = berendsen ; exponential relaxation pressure coupling with time constant 45 | Pcoupltype = isotropic ; isotropic pressure coupling 46 | tau_p = 1.0 ; time constant for pressure coupling (ps) 47 | ref_p = 1.0 ; reference pressure for coupling (bar) 48 | compressibility = 4.5e-5 ; compressibility (bar-1) 49 | -------------------------------------------------------------------------------- /sodium_chloride_solution/input/nvt.mdp: -------------------------------------------------------------------------------- 1 | ;======================= running ============= ; description 2 | integrator = md ; leap-frog algorithm for integrating Newton’s equations of motion. 3 | nsteps = 50000 ; maximum number of steps to integrate or minimize (2 ns) 4 | dt = 0.001 ; time step for integration (1 fs) 5 | comm_mode = linear ; remove center of mass translation 6 | comm_grps = system ; group(s) for center of mass motion removal 7 | gen-vel = yes ; generate velocities according to a Maxwell distribution 8 | gen-temp = 293.15 ; temperature for Maxwell distribution (K) 9 | 10 | ;======================= neighbor searching == ; description 11 | cutoff-scheme = Verlet ; generate a pair list with buffering 12 | nstlist = 10 ; frequency to update the neighbor list 13 | ns_type = grid 14 | 15 | ;======================= output ============== ; description 16 | nstlog = 10000 ; number of steps that elapse between writing energies to the log file 17 | nstenergy = 10000 ; number of steps that elapse between writing energies to energy file 18 | nstxout-compressed = 10000 ; frequency to write coordinates to xtc trajectory 19 | 20 | ;======================= van der Waals ======= ; description 21 | vdw-type = Cut-off ; plain cut-off with rlist >= rvdw 22 | rvdw = 1.4 ; distance for the LJ cut-off (nm) 23 | 24 | ; ====================== electrostatics ====== ; description 25 | coulombtype = pme ; fast smooth Particle-Mesh Ewald (SPME) electrostatics 26 | fourierspacing = 0.1 ; this should give an accuracy of about 2-3*10^-4 27 | pme-order = 4 ; interpolation order for PME (4 = cubic interpolation) 28 | rcoulomb = 1.4 ; distance for the Coulomb cut-off (nm) 29 | 30 | ; ====================== constraints ========= ; description 31 | constraint-algorithm = lincs ; more stable and faster than SHAKE 32 | constraints = hbonds ; convert the bonds with H-atoms to constraints 33 | continuation = no ; apply or not constraints to the start configuration 34 | 35 | ; ====================== temp. coupling ====== ; description 36 | tcoupl = v-rescale ; Berendsen + stochastic term = proper canonical ensemble 37 | ld-seed = 48456 ; seed 38 | tc-grps = Water non-Water ; groups to couple to separate temperature baths 39 | tau-t = 0.5 0.5 ; time constant for coupling (ps) 40 | ref-t = 293.15 293.15 ; reference temperature for coupling (K) 41 | nhchainlength = 1 ; number of chained Nose-Hoover thermostats 42 | -------------------------------------------------------------------------------- /sodium_chloride_solution/input/prod.mdp: -------------------------------------------------------------------------------- 1 | ;======================= running ============= ; description 2 | integrator = md ; leap-frog algorithm for integrating Newton’s equations of motion. 3 | nsteps = 2000000 ; maximum number of steps to integrate or minimize (2 ns) 4 | dt = 0.001 ; time step for integration (1 fs) 5 | comm_mode = linear ; remove center of mass translation 6 | comm_grps = system ; group(s) for center of mass motion removal 7 | gen-vel = no ; generate velocities according to a Maxwell distribution 8 | gen-temp = 293.15 ; temperature for Maxwell distribution (K) 9 | 10 | ;======================= neighbor searching == ; description 11 | cutoff-scheme = Verlet ; generate a pair list with buffering 12 | nstlist = 10 ; frequency to update the neighbor list 13 | ns_type = grid 14 | 15 | ;======================== output ============== ; description 16 | nstlog = 10000 ; number of steps that elapse between writing energies to the log file 17 | nstenergy = 10000 ; number of steps that elapse between writing energies to energy file 18 | nstxout-compressed = 50 ; frequency to write coordinates to xtc trajectory 19 | 20 | ;======================= van der Waals ======= ; description 21 | vdw-type = Cut-off ; plain cut-off with rlist >= rvdw 22 | rvdw = 1.4 ; distance for the LJ cut-off (nm) 23 | 24 | ; ====================== electrostatics ====== ; description 25 | coulombtype = pme ; fast smooth Particle-Mesh Ewald (SPME) electrostatics 26 | fourierspacing = 0.1 ; this should give an accuracy of about 2-3*10^-4 27 | pme-order = 4 ; interpolation order for PME (4 = cubic interpolation) 28 | rcoulomb = 1.4 ; distance for the Coulomb cut-off (nm) 29 | 30 | ; ====================== constraints ========= ; description 31 | constraint-algorithm = lincs ; more stable and faster than SHAKE 32 | constraints = hbonds ; convert the bonds with H-atoms to constraints 33 | continuation = yes ; apply or not constraints to the start configuration 34 | 35 | ; ====================== temp. coupling ====== ; description 36 | tcoupl = v-rescale ; Berendsen + stochastic term = proper canonical ensemble 37 | ld-seed = 48456 ; seed 38 | tc-grps = Water non-Water ; groups to couple to separate temperature baths 39 | tau-t = 0.5 0.5 ; time constant for coupling (ps) 40 | ref-t = 293.15 293.15 ; reference temperature for coupling (K) 41 | nhchainlength = 1 ; number of chained Nose-Hoover thermostats 42 | 43 | ; ====================== press. coupling ===== ; description 44 | pcoupl = berendsen ; exponential relaxation pressure coupling with time constant 45 | Pcoupltype = isotropic ; isotropic pressure coupling 46 | tau_p = 1.0 ; time constant for pressure coupling (ps) 47 | ref_p = 1.0 ; reference pressure for coupling (bar) 48 | compressibility = 4.5e-5 ; compressibility (bar-1) 49 | -------------------------------------------------------------------------------- /water-in-box/README.md: -------------------------------------------------------------------------------- 1 | # Diffusion coefficient of bulk water 2 | 3 | 4 | 5 | ### Description 6 | 7 | The simulation consists in a cubic box filled with water molecule. 8 | The force field for the water is [tip4p/epsilon](https://doi.org/10.1021/jp410865y). 9 | 10 | ### How to 11 | 12 | Execute generate_system.py using python to generate the initial configuration. 13 | 14 | Then, run gromacs using 15 | ``` 16 | gmx grompp -f input/nvt.mdp -o nvt -pp nvt -po nvt 17 | gmx mdrun -v -deffnm nvt 18 | mv nvt.gro conf.gro 19 | 20 | gmx grompp -f input/npt.mdp -o npt -pp npt -po npt 21 | gmx mdrun -v -deffnm npt 22 | mv npt.gro conf.gro 23 | 24 | gmx grompp -f input/run.mdp -o run -pp run -po run 25 | gmx mdrun -v -deffnm run 26 | ``` 27 | 28 | ### Diffusion coefficient measurement 29 | 30 | #### Method 1 - using GROMACS 31 | 32 | Execute the following command in the terminal: 33 | ``` 34 | gmx msd -f run.xtc -s run.tpr 35 | ``` 36 | 37 | #### Method 2 - using MDAnalysis 38 | 39 | Convert the trajectory to remove the periodic boundary conditions using: 40 | ``` 41 | gmx trjconv -f run.xtc -o trajectory.xtc -pbc nojump 42 | ``` 43 | 44 | Using python, run 45 | 46 | ``` 47 | python diff_coeff_mda.py 48 | ``` 49 | 50 | ### Contact 51 | 52 | Feel free to contact me by email if you have inquiries. You can find contact details on my [personal page](https://simongravelle.github.io/). 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /water-in-box/bulkwater.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simongravelle/gromacs-input-files/0bb814cc9b2e3f357b95d96982b128edb5535689/water-in-box/bulkwater.jpg -------------------------------------------------------------------------------- /water-in-box/diff_coeff_mda.py: -------------------------------------------------------------------------------- 1 | import MDAnalysis as mda 2 | import MDAnalysis.analysis.msd as msd 3 | import numpy as np 4 | 5 | u=mda.Universe('conf.gro', 'trajectory.xtc'); 6 | 7 | MSD=msd.EinsteinMSD(u, select='name OW1', msd_type='xyz', fft=True) 8 | MSD.run(); 9 | ResMSDXY=MSD.timeseries; 10 | nframes=MSD.n_frames; 11 | timestep=np.round(u.trajectory.dt, 2); # actual time between frames, ps 12 | lagtimes=np.arange(nframes)*timestep # make the lag-time axis 13 | z = np.polyfit(lagtimes[int(nframes*0.1):int(nframes*0.9)], ResMSDXY[int(nframes*0.1):int(nframes*0.9)], 1) 14 | d=3; # number of dimensions 15 | D=z[0]/(2*d); # A^2/ps 16 | print('The diffusion coefficient is '+str(D*1e-16/1e-12)+' cm^2/s') 17 | -------------------------------------------------------------------------------- /water-in-box/ff/forcefield.itp: -------------------------------------------------------------------------------- 1 | [ defaults ] 2 | ;nbfunc comb-rule gen-pairs fudgeLJ fudgeQQ 3 | 1 2 yes 1.0 1.0 4 | 5 | ; TIP4P/e water model (J. Phys. Chem. B 2014, 118, 5, 1263–1272, https://doi.org/10.1021/jp410865y) 6 | [atomtypes] 7 | ;name mass charge ptype sigma epsilon 8 | MW 0 -1.054 D 0.0 0.0 9 | OW 15.9994 0 A 0.3165 0.77324 10 | HW 1.0079 0.527 A 0.0 0.0 11 | 12 | 13 | -------------------------------------------------------------------------------- /water-in-box/ff/tip4peps.itp: -------------------------------------------------------------------------------- 1 | [ moleculetype ] 2 | ; molname nrexcl 3 | SOL 2 4 | 5 | [ atoms ] 6 | ; id at type res nr res name at name cg nr charge mass 7 | 1 OW 1 SOL OW 1 0 15.9994 8 | 2 HW 1 SOL HW1 1 0.527 1.0079 9 | 3 HW 1 SOL HW2 1 0.527 1.0079 10 | 4 MW 1 SOL MW 1 -1.054 0.0000 11 | 12 | [ settles ] 13 | ; i funct doh dhh 14 | 1 1 0.09572 0.15139 15 | 16 | [ virtual_sites3 ] 17 | ; Vsite from funct a b 18 | 4 1 2 3 1 0.089608 0.089608 19 | 20 | [ exclusions ] 21 | 1 2 3 4 22 | 2 1 3 4 23 | 3 1 2 4 24 | 4 1 2 3 25 | 26 | ; The position of the virtual site is computed as follows: 27 | ; 28 | ; O 29 | ; 30 | ; V 31 | ; 32 | ; H H 33 | ; 34 | ; const = distance (OV) / [ cos (angle(VOH)) * distance (OH) ] / 2 35 | ; = 0.0105 nm / [ cos (52.26 deg) * 0.09572 nm ] * 2 36 | ; = 0.17922 / 2 37 | ; = 0.089608 38 | ; 39 | ; Vsite pos x4 = x1 + a*(x2-x1) + b*(x3-x1) 40 | -------------------------------------------------------------------------------- /water-in-box/generate_system.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | 4 | import numpy as np 5 | import matplotlib.pyplot as plt 6 | import random 7 | import copy 8 | 9 | Na = 6.022e23 #constants.Avogadro 10 | Mh2o = 0.018053 # kg/mol - water 11 | nwater = 800 12 | dw = 3.1 13 | 14 | # ### loop 15 | attemps = 0 16 | cptH2O = 0 17 | while cptH2O < nwater: 18 | 19 | Lx, Ly, Lz = 20+attemps*dw, 20+attemps*dw, 20+attemps*dw 20 | txlo, txhi = 0, Lx 21 | tylo, tyhi = 0, Ly 22 | tzlo, tzhi = 0, Lz 23 | 24 | cptatom = 0 25 | cptbond = 0 26 | cptangle = 0 27 | cptmol = 0 28 | cptH2O = 0 29 | cptres = 1 30 | 31 | # allocate memory 32 | XYZ = np.zeros((1000000,3)) 33 | Typ = ["" for x in range(1000000)] 34 | ResName = ["" for x in range(1000000)] 35 | ResNum = np.zeros((1000000,1)) 36 | 37 | cptH2O = 0 38 | # create water 39 | rOH = 0.9572 40 | rOM = 0.1546 41 | thetaHOH = 104.52 42 | PosH2O = np.array([[0, 0, 0], [rOH*np.cos((thetaHOH/2)*np.pi/180), rOH*np.sin((thetaHOH/2)*np.pi/180), 0.0], [rOH*np.cos((thetaHOH/2)*np.pi/180), -rOH*np.sin((thetaHOH/2)*np.pi/180), 0.0], [rOM, 0.0, 0.0]]) 43 | 44 | TypH2O = ['OW', 'HW1', 'HW2', 'MW'] 45 | for x in np.arange(txlo+dw/2,txhi,dw): 46 | for y in np.arange(tylo+dw/2,tyhi,dw): 47 | for z in np.arange(tzlo+dw/2,tzhi,dw): 48 | if cptH2O < nwater: 49 | for j in range(4): 50 | XYZ[cptatom] = [x,y,z]+np.array(PosH2O[j]) 51 | Typ[cptatom] = TypH2O[j] 52 | ResNum[cptatom] = cptres 53 | ResName[cptatom] = 'SOL' 54 | cptatom += 1 55 | cptH2O += 1 56 | cptres += 1 57 | attemps += 1 58 | 59 | print('Lx = '+str(Lx/10)+' nm, Ly = '+str(Ly/10)+' nm, Lz = '+str(Lz/10)+' nm') 60 | print(str(cptH2O)+' water molecules') 61 | 62 | 63 | # ### write conf.gro 64 | f = open('conf.gro', 'w') 65 | f.write('Pure water\n') 66 | f.write(str(cptatom)+'\n') 67 | for n in range(cptatom): 68 | f.write("{: >5}".format(str(np.int32(ResNum[n][0])))) # residue number (5 positions, integer) 69 | f.write("{: >5}".format(str(ResName[n]))) # residue name (5 characters) 70 | f.write("{: >5}".format(str(Typ[n]))) # atom name (5 characters) 71 | f.write("{: >5}".format(str(np.int32(n+1)))) # atom number (5 positions, integer) 72 | f.write("{: >8}".format(str("{:.3f}".format(XYZ[n][0]/10)))) # position (in nm, x y z in 3 columns, each 8 positions with 3 decimal places) 73 | f.write("{: >8}".format(str("{:.3f}".format(XYZ[n][1]/10)))) # position (in nm, x y z in 3 columns, each 8 positions with 3 decimal places) 74 | f.write("{: >8}".format(str("{:.3f}".format(XYZ[n][2]/10)))) # position (in nm, x y z in 3 columns, each 8 positions with 3 decimal places) 75 | f.write("\n") 76 | f.write("{: >10}".format(str("{:.5f}".format(Lx/10)))) 77 | f.write("{: >10}".format(str("{:.5f}".format(Ly/10)))) 78 | f.write("{: >10}".format(str("{:.5f}".format(Lz/10)))) 79 | f.close() 80 | 81 | 82 | # ### write topol.top 83 | f = open('topol.top', 'w') 84 | f.write('#include "ff/forcefield.itp"\n') 85 | f.write('#include "ff/tip4peps.itp"\n') 86 | f.write('[ System ]\n') 87 | f.write('Pure water\n\n') 88 | f.write('[ Molecules ]\n') 89 | f.write('SOL '+ str(cptH2O)+'\n') 90 | f.close() 91 | 92 | -------------------------------------------------------------------------------- /water-in-box/input/npt.mdp: -------------------------------------------------------------------------------- 1 | ;======================== running ============= ; description 2 | integrator = md ; leap-frog algorithm for integrating Newton’s equations of motion. 3 | nsteps = 250000 ; maximum number of steps to integrate or minimize 4 | dt = 0.001 ; time step for integration (1 fs) 5 | comm_mode = linear ; remove center of mass translation 6 | comm_grps = system ; group(s) for center of mass motion removal 7 | gen-vel = no ; generate velocities according to a Maxwell distribution 8 | gen-temp = 293.15 ; temperature for Maxwell distribution (K) 9 | 10 | ;======================== neighbor searching == ; description 11 | cutoff-scheme = Verlet ; generate a pair list with buffering 12 | nstlist = 10 ; frequency to update the neighbor list 13 | ns_type = grid 14 | 15 | ;======================== output ============== ; description 16 | nstlog = 10000 ; number of steps that elapse between writing energies to the log file 17 | nstenergy = 10000 ; number of steps that elapse between writing energies to energy file 18 | nstxout-compressed = 10000 ; frequency to write coordinates to xtc trajectory 19 | 20 | ;======================== van der Waals ======= ; description 21 | vdw-type = Cut-off ; plain cut-off with rlist >= rvdw 22 | rvdw = 1.4 ; distance for the LJ cut-off (nm) 23 | 24 | ; ======================= electrostatics ======= ; description 25 | coulombtype = pme ; fast smooth Particle-Mesh Ewald (SPME) electrostatics 26 | fourierspacing = 0.1 ; this should give an accuracy of about 2-3*10^-4 27 | pme-order = 4 ; interpolation order for PME (4 = cubic interpolation) 28 | rcoulomb = 1.4 ; distance for the Coulomb cut-off (nm) 29 | 30 | ; ======================= constraints ========= ; description 31 | constraint-algorithm = lincs ; more stable and faster than SHAKE 32 | constraints = hbonds ; convert the bonds with H-atoms to constraints 33 | continuation = yes ; apply or not constraints to the start configuration 34 | 35 | ; ======================= temp. coupling ======= ; description 36 | tcoupl = v-rescale ; Berendsen + stochastic term = proper canonical ensemble 37 | ld-seed = 48456 ; seed 38 | tc-grps = Water ; groups to couple to separate temperature baths 39 | tau-t = 0.5 ; time constant for coupling (ps) 40 | ref-t = 293.15 ; reference temperature for coupling (K) 41 | nhchainlength = 1 ; number of chained Nose-Hoover thermostats 42 | 43 | ; ======================= press. coupling ===== ; description 44 | pcoupl = berendsen ; exponential relaxation pressure coupling with time constant 45 | Pcoupltype = isotropic ; isotropic pressure coupling 46 | tau_p = 1.0 ; time constant for pressure coupling (ps) 47 | ref_p = 1.0 ; reference pressure for coupling (bar) 48 | compressibility = 4.5e-5 ; compressibility (bar-1) 49 | -------------------------------------------------------------------------------- /water-in-box/input/nvt.mdp: -------------------------------------------------------------------------------- 1 | ;======================== running ============= ; description 2 | integrator = md ; leap-frog algorithm for integrating Newton’s equations of motion. 3 | nsteps = 50000 ; maximum number of steps to integrate or minimize 4 | dt = 0.001 ; time step for integration (1 fs) 5 | comm_mode = linear ; remove center of mass translation 6 | comm_grps = system ; group(s) for center of mass motion removal 7 | gen-vel = yes ; generate velocities according to a Maxwell distribution 8 | gen-temp = 293.15 ; temperature for Maxwell distribution (K) 9 | 10 | ;======================== neighbor searching == ; description 11 | cutoff-scheme = Verlet ; generate a pair list with buffering 12 | nstlist = 10 ; frequency to update the neighbor list 13 | ns_type = grid 14 | 15 | ;======================== output ============== ; description 16 | nstlog = 10000 ; number of steps that elapse between writing energies to the log file 17 | nstenergy = 10000 ; number of steps that elapse between writing energies to energy file 18 | nstxout-compressed = 10000 ; frequency to write coordinates to xtc trajectory 19 | 20 | ;======================== van der Waals ======= ; description 21 | vdw-type = Cut-off ; plain cut-off with rlist >= rvdw 22 | rvdw = 1.4 ; distance for the LJ cut-off (nm) 23 | 24 | ; ======================= electrostatics ======= ; description 25 | coulombtype = pme ; fast smooth Particle-Mesh Ewald (SPME) electrostatics 26 | fourierspacing = 0.1 ; this should give an accuracy of about 2-3*10^-4 27 | pme-order = 4 ; interpolation order for PME (4 = cubic interpolation) 28 | rcoulomb = 1.4 ; distance for the Coulomb cut-off (nm) 29 | 30 | ; ======================= constraints ========= ; description 31 | constraint-algorithm = lincs ; more stable and faster than SHAKE 32 | constraints = hbonds ; convert the bonds with H-atoms to constraints 33 | continuation = no ; apply or not constraints to the start configuration 34 | 35 | ; ======================= temp. coupling ======= ; description 36 | tcoupl = v-rescale ; Berendsen + stochastic term = proper canonical ensemble 37 | ld-seed = 48456 ; seed 38 | tc-grps = Water ; groups to couple to separate temperature baths 39 | tau-t = 0.5 ; time constant for coupling (ps) 40 | ref-t = 293.15 ; reference temperature for coupling (K) 41 | nhchainlength = 1 ; number of chained Nose-Hoover thermostats 42 | -------------------------------------------------------------------------------- /water-in-box/input/run.mdp: -------------------------------------------------------------------------------- 1 | ;======================== running ============= ; description 2 | integrator = md ; leap-frog algorithm for integrating Newton’s equations of motion. 3 | nsteps = 2000000 ; maximum number of steps to integrate or minimize (2 ns) 4 | dt = 0.001 ; time step for integration (1 fs) 5 | comm_mode = linear ; remove center of mass translation 6 | comm_grps = system ; group(s) for center of mass motion removal 7 | gen-vel = no ; generate velocities according to a Maxwell distribution 8 | gen-temp = 293.15 ; temperature for Maxwell distribution (K) 9 | 10 | ;======================== neighbor searching == ; description 11 | cutoff-scheme = Verlet ; generate a pair list with buffering 12 | nstlist = 10 ; frequency to update the neighbor list 13 | ns_type = grid 14 | 15 | ;======================== output ============== ; description 16 | nstlog = 10000 ; number of steps that elapse between writing energies to the log file 17 | nstenergy = 10000 ; number of steps that elapse between writing energies to energy file 18 | nstxout-compressed = 50 ; frequency to write coordinates to xtc trajectory 19 | 20 | ;======================== van der Waals ======= ; description 21 | vdw-type = Cut-off ; plain cut-off with rlist >= rvdw 22 | rvdw = 1.4 ; distance for the LJ cut-off (nm) 23 | 24 | ; ======================= electrostatics ======= ; description 25 | coulombtype = pme ; fast smooth Particle-Mesh Ewald (SPME) electrostatics 26 | fourierspacing = 0.1 ; this should give an accuracy of about 2-3*10^-4 27 | pme-order = 4 ; interpolation order for PME (4 = cubic interpolation) 28 | rcoulomb = 1.4 ; distance for the Coulomb cut-off (nm) 29 | 30 | ; ======================= constraints ========= ; description 31 | constraint-algorithm = lincs ; more stable and faster than SHAKE 32 | constraints = hbonds ; convert the bonds with H-atoms to constraints 33 | continuation = yes ; apply or not constraints to the start configuration 34 | 35 | ; ======================= temp. coupling ======= ; description 36 | tcoupl = v-rescale ; Berendsen + stochastic term = proper canonical ensemble 37 | ld-seed = 48456 ; seed 38 | tc-grps = Water ; groups to couple to separate temperature baths 39 | tau-t = 0.5 ; time constant for coupling (ps) 40 | ref-t = 293.15 ; reference temperature for coupling (K) 41 | nhchainlength = 1 ; number of chained Nose-Hoover thermostats 42 | 43 | ; ======================= press. coupling ===== ; description 44 | pcoupl = berendsen ; exponential relaxation pressure coupling with time constant 45 | Pcoupltype = isotropic ; isotropic pressure coupling 46 | tau_p = 1.0 ; time constant for pressure coupling (ps) 47 | ref_p = 1.0 ; reference pressure for coupling (bar) 48 | compressibility = 4.5e-5 ; compressibility (bar-1) 49 | -------------------------------------------------------------------------------- /water-in-box/input/visco.mdp: -------------------------------------------------------------------------------- 1 | ;======================== running ============= ; description 2 | integrator = md ; leap-frog algorithm for integrating Newton’s equations of motion. 3 | nsteps = 50000000 ; maximum number of steps to integrate or minimize (50 ns) 4 | dt = 0.001 ; time step for integration (1 fs) 5 | comm_mode = linear ; remove center of mass translation 6 | comm_grps = system ; group(s) for center of mass motion removal 7 | gen-vel = no ; generate velocities according to a Maxwell distribution 8 | gen-temp = 293.15 ; temperature for Maxwell distribution (K) 9 | 10 | ;======================== neighbor searching == ; description 11 | cutoff-scheme = Verlet ; generate a pair list with buffering 12 | nstlist = 10 ; frequency to update the neighbor list 13 | ns_type = grid 14 | 15 | ;======================== output ============== ; description 16 | nstlog = 50000 ; number of steps that elapse between writing energies to the log file 17 | nstenergy = 50000 ; number of steps that elapse between writing energies to energy file 18 | nstxout-compressed = 50000 ; frequency to write coordinates to xtc trajectory 19 | 20 | ;======================== van der Waals ======= ; description 21 | vdw-type = Cut-off ; plain cut-off with rlist >= rvdw 22 | rvdw = 1.4 ; distance for the LJ cut-off (nm) 23 | 24 | ; ======================= electrostatics ======= ; description 25 | coulombtype = pme ; fast smooth Particle-Mesh Ewald (SPME) electrostatics 26 | fourierspacing = 0.1 ; this should give an accuracy of about 2-3*10^-4 27 | pme-order = 4 ; interpolation order for PME (4 = cubic interpolation) 28 | rcoulomb = 1.4 ; distance for the Coulomb cut-off (nm) 29 | 30 | ; ======================= constraints ========= ; description 31 | constraint-algorithm = lincs ; more stable and faster than SHAKE 32 | constraints = hbonds ; convert the bonds with H-atoms to constraints 33 | continuation = yes ; apply or not constraints to the start configuration 34 | 35 | ; ======================= temp. coupling ======= ; description 36 | tcoupl = v-rescale ; Berendsen + stochastic term = proper canonical ensemble 37 | ld-seed = 48456 ; seed 38 | tc-grps = Water ; groups to couple to separate temperature baths 39 | tau-t = 0.5 ; time constant for coupling (ps) 40 | ref-t = 293.15 ; reference temperature for coupling (K) 41 | nhchainlength = 1 ; number of chained Nose-Hoover thermostats 42 | 43 | ; ======================= press. coupling ===== ; description 44 | pcoupl = berendsen ; exponential relaxation pressure coupling with time constant 45 | Pcoupltype = isotropic ; isotropic pressure coupling 46 | tau_p = 1.0 ; time constant for pressure coupling (ps) 47 | ref_p = 1.0 ; reference pressure for coupling (bar) 48 | compressibility = 4.5e-5 ; compressibility (bar-1) 49 | 50 | ; ======================= non-equilibrium ===== ; description 51 | cos-acceleration = 0.05 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /water-in-box/topol.top: -------------------------------------------------------------------------------- 1 | #include "ff/forcefield.itp" 2 | #include "ff/tip4peps.itp" 3 | [ System ] 4 | Pure water 5 | 6 | [ Molecules ] 7 | SOL 800 8 | -------------------------------------------------------------------------------- /water-in-salt-slit/Na2SO4_1M/Na2SO4/Angle.dat: -------------------------------------------------------------------------------- 1 | 1 1 14 9 15 2 | 2 1 14 9 25 3 | 3 1 14 9 27 4 | 4 1 15 9 25 5 | 5 1 15 9 27 6 | 6 1 25 9 27 7 | 7 1 26 10 13 8 | 8 1 26 10 28 9 | 9 1 26 10 16 10 | 10 1 13 10 28 11 | 11 1 13 10 16 12 | 12 1 28 10 16 13 | 13 1 19 11 17 14 | 14 1 19 11 22 15 | 15 1 19 11 23 16 | 16 1 17 11 22 17 | 17 1 17 11 23 18 | 18 1 22 11 23 19 | 19 1 21 12 20 20 | 20 1 21 12 18 21 | 21 1 21 12 24 22 | 22 1 20 12 18 23 | 23 1 20 12 24 24 | 24 1 18 12 24 25 | -------------------------------------------------------------------------------- /water-in-salt-slit/Na2SO4_1M/Na2SO4/Bond.dat: -------------------------------------------------------------------------------- 1 | 1 1 9 14 2 | 2 1 9 15 3 | 3 1 9 25 4 | 4 1 9 27 5 | 5 1 10 26 6 | 6 1 10 13 7 | 7 1 10 28 8 | 8 1 10 16 9 | 9 1 11 19 10 | 10 1 11 17 11 | 11 1 11 22 12 | 12 1 11 23 13 | 13 1 12 21 14 | 14 1 12 20 15 | 15 1 12 18 16 | 16 1 12 24 17 | -------------------------------------------------------------------------------- /water-in-salt-slit/Na2SO4_1M/Na2SO4/Position.dat: -------------------------------------------------------------------------------- 1 | 1 1 1 1 2.855150 2.852250 5.270630 2 | 2 1 1 1 2.855150 6.208250 1.756880 3 | 3 1 1 1 2.855150 0.000000 3.513750 4 | 4 1 1 1 2.855150 0.000000 0.000000 5 | 5 1 1 1 0.000000 7.382500 5.270630 6 | 6 1 1 1 0.000000 1.678000 1.756880 7 | 7 1 1 1 0.000000 4.530250 3.513750 8 | 8 1 1 1 0.000000 4.530250 0.000000 9 | 14 1 3 -1 2.855150 6.760950 4.059790 10 | 15 1 3 -1 2.855150 6.760950 6.481460 11 | 25 1 3 -1 4.073730 5.022240 5.270630 12 | 27 1 3 -1 1.636570 5.022240 5.270630 13 | 9 1 2 2 2.855150 5.903820 5.270630 14 | 26 1 3 -1 1.636570 4.038260 1.756880 15 | 13 1 3 -1 2.855150 2.299560 0.546037 16 | 28 1 3 -1 4.073730 4.038260 1.756880 17 | 16 1 3 -1 2.855150 2.299560 2.967710 18 | 10 1 2 2 2.855150 3.156680 1.756880 19 | 19 1 3 -1 -1.188800 0.508288 5.122010 20 | 17 1 3 -1 1.218580 0.491985 5.270630 21 | 22 1 3 -1 0.000000 2.230700 4.059790 22 | 23 1 3 -1 0.000000 2.230700 6.481460 23 | 11 1 2 2 0.000000 1.373570 5.270630 24 | 21 1 3 -1 0.000000 6.829800 0.546037 25 | 20 1 3 -1 1.218580 8.568510 1.756880 26 | 18 1 3 -1 -1.312250 8.271130 1.900150 27 | 24 1 3 -1 0.000000 6.829800 2.967710 28 | 12 1 2 2 0.000000 7.686930 1.756880 29 | -------------------------------------------------------------------------------- /water-in-salt-slit/Na2SO4_1M/log.out: -------------------------------------------------------------------------------- 1 | Generated 28 of the 28 non-bonded parameter combinations 2 | 3 | Excluding 1 bonded neighbours molecule type 'SO4fi' 4 | 5 | turning H bonds into constraints... 6 | 7 | Excluding 1 bonded neighbours molecule type 'SO4' 8 | 9 | turning H bonds into constraints... 10 | 11 | Excluding 1 bonded neighbours molecule type 'SO4fp' 12 | 13 | turning H bonds into constraints... 14 | 15 | Excluding 1 bonded neighbours molecule type 'Nafi' 16 | 17 | turning H bonds into constraints... 18 | 19 | Excluding 1 bonded neighbours molecule type 'Na' 20 | 21 | turning H bonds into constraints... 22 | 23 | Excluding 2 bonded neighbours molecule type 'SOL' 24 | 25 | turning H bonds into constraints... 26 | 27 | Cleaning up constraints and constant bonded interactions with virtual sites 28 | Analysing residue names: 29 | There are: 912 Other residues 30 | There are: 3930 Water residues 31 | Analysing residues not classified as Protein/DNA/RNA/Water and splitting into groups... 32 | 33 | The largest distance between excluded atoms is 0.250 nm between atom 662 and 663 34 | 35 | Determining Verlet buffer for a tolerance of 0.005 kJ/mol/ps at 293.15 K 36 | 37 | Calculated rlist for 1x1 atom pair-list as 1.411 nm, buffer size 0.011 nm 38 | 39 | Set rlist, assuming 4x4 atom pair-list, to 1.400 nm, buffer size 0.000 nm 40 | 41 | Note that mdrun will redetermine rlist based on the actual pair-list setup 42 | Calculating fourier grid dimensions for X Y Z 43 | Using a fourier grid of 40x48x96, spacing 0.100 0.094 0.092 44 | 45 | Estimate for the relative computational load of the PME mesh part: 0.14 46 | 47 | This run will generate roughly 24 Mb of data 48 | -------------------------------------------------------------------------------- /water-in-salt-slit/Na2SO4_1M/npt.mdp: -------------------------------------------------------------------------------- 1 | ; 2 | ; File 'npt.mdp' was generated 3 | ; By user: unknown (1862325) 4 | ; On host: bigfoot12 5 | ; At date: Tue May 16 17:18:17 2023 6 | ; 7 | ; Created by: 8 | ; :-) GROMACS - gmx grompp, 2023 (-: 9 | ; 10 | ; Executable: /home/gravells/softwares/gromacs-2023/build-gpu/bin/gmx 11 | ; Data prefix: /home/gravells/softwares/gromacs-2023 (source tree) 12 | ; Working dir: /bettik/gravells/water-in-salt-slit/Na2SO4_1M 13 | ; Command line: 14 | ; gmx grompp -f ../input/npt.mdp -p topol.top -o npt -pp npt -po npt -r conf.gro -maxwarn 2 15 | 16 | ; VARIOUS PREPROCESSING OPTIONS 17 | ; Preprocessor information: use cpp syntax. 18 | ; e.g.: -I/home/joe/doe -I/home/mary/roe 19 | include = 20 | ; e.g.: -DPOSRES -DFLEXIBLE (note these variable names are case sensitive) 21 | define = 22 | 23 | ; RUN CONTROL PARAMETERS 24 | integrator = md 25 | ; Start time and timestep in ps 26 | tinit = 0 27 | dt = 0.001 28 | nsteps = 50000000 29 | ; For exact run continuation or redoing part of a run 30 | init-step = 0 31 | ; Part index is updated automatically on checkpointing (keeps files separate) 32 | simulation-part = 1 33 | ; Multiple time-stepping 34 | mts = no 35 | ; mode for center of mass motion removal 36 | comm_mode = linear 37 | ; number of steps for center of mass motion removal 38 | nstcomm = 100 39 | ; group(s) for center of mass motion removal 40 | comm_grps = system 41 | 42 | ; LANGEVIN DYNAMICS OPTIONS 43 | ; Friction coefficient (amu/ps) and random seed 44 | bd-fric = 0 45 | ld-seed = 48456 46 | 47 | ; ENERGY MINIMIZATION OPTIONS 48 | ; Force tolerance and initial step-size 49 | emtol = 10 50 | emstep = 0.01 51 | ; Max number of iterations in relax-shells 52 | niter = 20 53 | ; Step size (ps^2) for minimization of flexible constraints 54 | fcstep = 0 55 | ; Frequency of steepest descents steps when doing CG 56 | nstcgsteep = 1000 57 | nbfgscorr = 10 58 | 59 | ; TEST PARTICLE INSERTION OPTIONS 60 | rtpi = 0.05 61 | 62 | ; OUTPUT CONTROL OPTIONS 63 | ; Output frequency for coords (x), velocities (v) and forces (f) 64 | nstxout = 0 65 | nstvout = 0 66 | nstfout = 0 67 | ; Output frequency for energies to log file and energy file 68 | nstlog = 200000 69 | nstcalcenergy = 100 70 | nstenergy = 200000 71 | ; Output frequency and precision for .xtc file 72 | nstxout-compressed = 200000 73 | compressed-x-precision = 1000 74 | ; This selects the subset of atoms for the compressed 75 | ; trajectory file. You can select multiple groups. By 76 | ; default, all atoms will be written. 77 | compressed-x-grps = 78 | ; Selection of energy groups 79 | energygrps = 80 | 81 | ; NEIGHBORSEARCHING PARAMETERS 82 | ; cut-off scheme (Verlet: particle based cut-offs) 83 | cutoff-scheme = Verlet 84 | ; nblist update frequency 85 | nstlist = 10 86 | ; Periodic boundary conditions: xyz, no, xy 87 | pbc = xyz 88 | periodic-molecules = no 89 | ; Allowed energy error due to the Verlet buffer in kJ/mol/ps per atom, 90 | ; a value of -1 means: use rlist 91 | verlet-buffer-tolerance = 0.005 92 | ; nblist cut-off 93 | rlist = 1 94 | ; long-range cut-off for switched potentials 95 | 96 | ; OPTIONS FOR ELECTROSTATICS AND VDW 97 | ; Method for doing electrostatics 98 | coulombtype = pme 99 | coulomb-modifier = Potential-shift-Verlet 100 | rcoulomb-switch = 0 101 | rcoulomb = 1.4 102 | ; Relative dielectric constant for the medium and the reaction field 103 | epsilon-r = 1 104 | epsilon-rf = 0 105 | ; Method for doing Van der Waals 106 | vdw-type = Cut-off 107 | vdw-modifier = Potential-shift-Verlet 108 | ; cut-off lengths 109 | rvdw-switch = 0 110 | rvdw = 1.4 111 | ; Apply long range dispersion corrections for Energy and Pressure 112 | DispCorr = No 113 | ; Extension of the potential lookup tables beyond the cut-off 114 | table-extension = 1 115 | ; Separate tables between energy group pairs 116 | energygrp-table = 117 | ; Spacing for the PME/PPPM FFT grid 118 | fourierspacing = 0.1 119 | ; FFT grid size, when a value is 0 fourierspacing will be used 120 | fourier-nx = 0 121 | fourier-ny = 0 122 | fourier-nz = 0 123 | ; EWALD/PME/PPPM parameters 124 | pme-order = 4 125 | ewald-rtol = 1e-05 126 | ewald-rtol-lj = 0.001 127 | lj-pme-comb-rule = Geometric 128 | ewald-geometry = 3d 129 | epsilon-surface = 0 130 | implicit-solvent = no 131 | 132 | ; OPTIONS FOR WEAK COUPLING ALGORITHMS 133 | ensemble-temperature-setting = auto 134 | ensemble-temperature = -1 135 | ; Temperature coupling 136 | tcoupl = v-rescale 137 | nsttcouple = -1 138 | nhchainlength = 1 139 | print-nose-hoover-chain-variables = no 140 | ; Groups to couple separately 141 | tc-grps = Water non-Water 142 | ; Time constant (ps) and reference temperature (K) 143 | tau-t = 0.5 0.5 144 | ref-t = 293.15 293.15 145 | ; pressure coupling 146 | pcoupl = berendsen 147 | Pcoupltype = anisotropic 148 | nstpcouple = -1 149 | ; Time constant (ps), compressibility (1/bar) and reference P (bar) 150 | tau_p = 1. 151 | compressibility = 4.5e-5 4.5e-5 4.5e-5 0 0 0 152 | ref_p = 1. 1. 1. 0. 0. 0. 153 | ; Scaling of reference coordinates, No, All or COM 154 | refcoord-scaling = No 155 | 156 | ; OPTIONS FOR QMMM calculations 157 | QMMM = no 158 | ; Groups treated with MiMiC 159 | QMMM-grps = 160 | 161 | ; SIMULATED ANNEALING 162 | ; Type of annealing for each temperature group (no/single/periodic) 163 | annealing = 164 | ; Number of time points to use for specifying annealing in each group 165 | annealing-npoints = 166 | ; List of times at the annealing points for each group 167 | annealing-time = 168 | ; Temp. at each annealing point, for each group. 169 | annealing-temp = 170 | 171 | ; GENERATE VELOCITIES FOR STARTUP RUN 172 | gen-vel = no 173 | gen-temp = 293.15 174 | gen-seed = -965214594 175 | 176 | ; OPTIONS FOR BONDS 177 | constraints = hbonds 178 | ; Type of constraint algorithm 179 | constraint-algorithm = lincs 180 | ; Do not constrain the start configuration 181 | continuation = yes 182 | ; Use successive overrelaxation to reduce the number of shake iterations 183 | Shake-SOR = no 184 | ; Relative tolerance of shake 185 | shake-tol = 0.0001 186 | ; Highest order in the expansion of the constraint coupling matrix 187 | lincs-order = 4 188 | ; Number of iterations in the final step of LINCS. 1 is fine for 189 | ; normal simulations, but use 2 to conserve energy in NVE runs. 190 | ; For energy minimization with constraints it should be 4 to 8. 191 | lincs-iter = 1 192 | ; Lincs will write a warning to the stderr if in one step a bond 193 | ; rotates over more degrees than 194 | lincs-warnangle = 30 195 | ; Convert harmonic bonds to morse potentials 196 | morse = no 197 | 198 | ; ENERGY GROUP EXCLUSIONS 199 | ; Pairs of energy groups for which all non-bonded interactions are excluded 200 | energygrp-excl = 201 | 202 | ; WALLS 203 | ; Number of walls, type, atom types, densities and box-z scale factor for Ewald 204 | nwall = 0 205 | wall-type = 9-3 206 | wall-r-linpot = -1 207 | wall-atomtype = 208 | wall-density = 209 | wall-ewald-zfac = 3 210 | 211 | ; COM PULLING 212 | pull = no 213 | 214 | ; AWH biasing 215 | awh = no 216 | 217 | ; ENFORCED ROTATION 218 | ; Enforced rotation: No or Yes 219 | rotation = no 220 | 221 | ; Group to display and/or manipulate in interactive MD session 222 | IMD-group = 223 | 224 | ; NMR refinement stuff 225 | ; Distance restraints type: No, Simple or Ensemble 226 | disre = No 227 | ; Force weighting of pairs in one distance restraint: Conservative or Equal 228 | disre-weighting = Conservative 229 | ; Use sqrt of the time averaged times the instantaneous violation 230 | disre-mixed = no 231 | disre-fc = 1000 232 | disre-tau = 0 233 | ; Output frequency for pair distances to energy file 234 | nstdisreout = 100 235 | ; Orientation restraints: No or Yes 236 | orire = no 237 | ; Orientation restraints force constant and tau for time averaging 238 | orire-fc = 0 239 | orire-tau = 0 240 | orire-fitgrp = 241 | ; Output frequency for trace(SD) and S to energy file 242 | nstorireout = 100 243 | 244 | ; Free energy variables 245 | free-energy = no 246 | couple-moltype = 247 | couple-lambda0 = vdw-q 248 | couple-lambda1 = vdw-q 249 | couple-intramol = no 250 | init-lambda = -1 251 | init-lambda-state = -1 252 | delta-lambda = 0 253 | nstdhdl = 50 254 | fep-lambdas = 255 | mass-lambdas = 256 | coul-lambdas = 257 | vdw-lambdas = 258 | bonded-lambdas = 259 | restraint-lambdas = 260 | temperature-lambdas = 261 | calc-lambda-neighbors = 1 262 | init-lambda-weights = 263 | dhdl-print-energy = no 264 | sc-function = beutler 265 | sc-alpha = 0 266 | sc-power = 1 267 | sc-r-power = 6 268 | sc-sigma = 0.3 269 | sc-coul = no 270 | sc-gapsys-scale-linpoint-lj = 0.85 271 | sc-gapsys-scale-linpoint-q = 0.3 272 | sc-gapsys-sigma-lj = 0.3 273 | separate-dhdl-file = yes 274 | dhdl-derivatives = yes 275 | dh_hist_size = 0 276 | dh_hist_spacing = 0.1 277 | 278 | ; Non-equilibrium MD stuff 279 | acc-grps = 280 | accelerate = 281 | freezegrps = 282 | freezedim = 283 | cos-acceleration = 0 284 | deform = 285 | 286 | ; simulated tempering variables 287 | simulated-tempering = no 288 | simulated-tempering-scaling = geometric 289 | sim-temp-low = 300 290 | sim-temp-high = 300 291 | 292 | ; Ion/water position swapping for computational electrophysiology setups 293 | ; Swap positions along direction: no, X, Y, Z 294 | swapcoords = no 295 | adress = no 296 | 297 | ; User defined thingies 298 | user1-grps = 299 | user2-grps = 300 | userint1 = 0 301 | userint2 = 0 302 | userint3 = 0 303 | userint4 = 0 304 | userreal1 = 0 305 | userreal2 = 0 306 | userreal3 = 0 307 | userreal4 = 0 308 | ; Electric fields 309 | ; Format for electric-field-x, etc. is: four real variables: 310 | ; amplitude (V/nm), frequency omega (1/ps), time for the pulse peak (ps), 311 | ; and sigma (ps) width of the pulse. Omega = 0 means static field, 312 | ; sigma = 0 means no pulse, leaving the field to be a cosine function. 313 | electric-field-x = 0 0 0 0 314 | electric-field-y = 0 0 0 0 315 | electric-field-z = 0 0 0 0 316 | 317 | ; Density guided simulation 318 | density-guided-simulation-active = false 319 | 320 | ; QM/MM with CP2K 321 | qmmm-cp2k-active = false 322 | -------------------------------------------------------------------------------- /water-in-salt-slit/Na2SO4_1M/npt.top: -------------------------------------------------------------------------------- 1 | [ defaults ] 2 | ; nbfunc comb-rule gen-pairs fudgeLJ fudgeQQ 3 | 1 2 no 1.0 0.833 4 | 5 | [ atomtypes ] 6 | ; salts parameters 7 | ; name at.num mass charge ptype sigma epsilon 8 | Na 11 22.990 0.0000 A 0.23100 0.45000 9 | Cl 17 35.450 0.0000 A 0.43000 0.42000 10 | O 8 15.9994 0.0000 A 0.386 0.12 11 | S 16 32.0600 0.0000 A 0.355 1.0465 12 | 13 | ; water paramters 14 | ; name at.num mass charge ptype sigma epsilon 15 | HW 1 1.008 0.0000 A 0.00000 0.00000 16 | OW 8 16.000 0.0000 A 0.31650 0.76849 17 | 18 | ; DUMMY atoms 19 | ; name at.num mass charge ptype sigma epsilon 20 | MW 0 0.000 0.0000 D 0.00000 0.00000 21 | 22 | 23 | 24 | [ bondtypes ] 25 | ; i j func b0 kb 26 | S O 1 0.15 3.7656e4 27 | 28 | [ angletypes ] 29 | ; i j func b0 kb 30 | O S O 1 109.5 520 31 | [ moleculetype ] 32 | ; molname nrexcl 33 | SOL 2 34 | 35 | [ atoms ] 36 | ; id at type res nr res name at name cg nr charge mass 37 | 1 OW 1 SOL OW 1 0 15.9994 38 | 2 HW 1 SOL HW1 1 0.527 1.0079 39 | 3 HW 1 SOL HW2 1 0.527 1.0079 40 | 4 MW 1 SOL MW 1 -1.054 0.0000 41 | 42 | [ settles ] 43 | ; i funct doh dhh 44 | 1 1 0.09572 0.15139 45 | 46 | [ virtual_sites3 ] 47 | ; Vsite from funct a b 48 | 4 1 2 3 1 0.089608 0.089608 49 | 50 | [ exclusions ] 51 | 1 2 3 4 52 | 2 1 3 4 53 | 3 1 2 4 54 | 4 1 2 3 55 | 56 | ; The position of the virtual site is computed as follows: 57 | ; 58 | ; O 59 | ; 60 | ; V 61 | ; 62 | ; H H 63 | ; 64 | ; const = distance (OV) / [ cos (angle(VOH)) * distance (OH) ] / 2 65 | ; = 0.0105 nm / [ cos (52.26 deg) * 0.09572 nm ] * 2 66 | ; = 0.17922 / 2 67 | ; = 0.089608 68 | ; 69 | ; Vsite pos x4 = x1 + a*(x2-x1) + b*(x3-x1) 70 | [ moleculetype ] 71 | ; molname nrexcl 72 | Na 1 73 | 74 | [ atoms ] 75 | ; id at type res nr residu name at name cg nr charge 76 | 1 Na 1 Na Na 1 1 77 | 78 | 79 | [ moleculetype ] 80 | ; molname nrexcl 81 | Nafi 1 82 | 83 | [ atoms ] 84 | ; id at type res nr residu name at name cg nr charge 85 | 1 Na 1 Na Na 1 1 86 | 87 | 88 | [ moleculetype ] 89 | ; molname nrexcl 90 | Naf 1 91 | 92 | [ atoms ] 93 | ; id at type res nr residu name at name cg nr charge 94 | 1 Na 1 Na Na 1 1 95 | 96 | [ moleculetype ] 97 | ; molname nrexcl 98 | Cl 1 99 | 100 | [ atoms ] 101 | ; id at type res nr residu name at name cg nr charge 102 | 1 Cl 1 Cl Cl 1 -1 103 | 104 | 105 | [ moleculetype ] 106 | ; molname nrexcl 107 | Clf 1 108 | 109 | [ atoms ] 110 | ; id at type res nr residu name at name cg nr charge 111 | 1 Cl 1 Cl Cl 1 -1 112 | 113 | [ position_restraints ] 114 | ; ai funct fcx fcy fcz 115 | 1 1 20000 20000 20000 ; restrains to a point 116 | 117 | [moleculetype] 118 | ; name nrexcl 119 | SO4 1 120 | 121 | [atoms] 122 | ;nr type resnr residu atom cgnr charge 123 | 1 O 1 SO4 O1 1 -1 15.9994 124 | 2 O 1 SO4 O2 1 -1 15.9994 125 | 3 O 1 SO4 O3 1 -1 15.9994 126 | 4 O 1 SO4 O4 1 -1 15.9994 127 | 5 S 1 SO4 S 1 2 32.0600 128 | 129 | [ bonds ] 130 | ; ai aj funct c0 c1 131 | 1 5 1 0.1520 3.7656e4 132 | 2 5 1 0.1520 3.7656e4 133 | 3 5 1 0.1520 3.7656e4 134 | 4 5 1 0.1520 3.7656e4 135 | 136 | [ angles ] 137 | ; ai aj ak funct angle fc 138 | 1 5 2 1 109.5 520 139 | 1 5 3 1 109.5 520 140 | 1 5 4 1 109.5 520 141 | 2 5 3 1 109.5 520 142 | 2 5 4 1 109.5 520 143 | 3 5 4 1 109.5 520 144 | 145 | [exclusions] 146 | 1 2 3 4 5 147 | 2 1 3 4 5 148 | 3 1 2 4 5 149 | 4 1 2 3 5 150 | 5 1 2 3 4 151 | 152 | [moleculetype] 153 | ; name nrexcl 154 | SO4fp 1 155 | 156 | [atoms] 157 | ;nr type resnr residu atom cgnr charge 158 | 1 O 1 SO4f O1 1 -1 15.9994 159 | 2 O 1 SO4f O2 1 -1 15.9994 160 | 3 O 1 SO4f O3 1 -1 15.9994 161 | 4 O 1 SO4f O4 1 -1 15.9994 162 | 5 S 1 SO4f S 1 2 32.0600 163 | 164 | [ bonds ] 165 | ; ai aj funct c0 c1 166 | 1 5 1 0.1520 3.7656e4 167 | 2 5 1 0.1520 3.7656e4 168 | 3 5 1 0.1520 3.7656e4 169 | 4 5 1 0.1520 3.7656e4 170 | 171 | [ angles ] 172 | ; ai aj ak funct angle fc 173 | 1 5 2 1 109.5 520 174 | 1 5 3 1 109.5 520 175 | 1 5 4 1 109.5 520 176 | 2 5 3 1 109.5 520 177 | 2 5 4 1 109.5 520 178 | 3 5 4 1 109.5 520 179 | 180 | [exclusions] 181 | 1 2 3 4 5 182 | 2 1 3 4 5 183 | 3 1 2 4 5 184 | 4 1 2 3 5 185 | 5 1 2 3 4 186 | 187 | ; Include Position restraint file 188 | 189 | 190 | 191 | 192 | 193 | [moleculetype] 194 | ; name nrexcl 195 | SO4fi 1 196 | 197 | [atoms] 198 | ;nr type resnr residu atom cgnr charge 199 | 1 O 1 SO4f O1 1 -1 15.9994 200 | 2 O 1 SO4f O2 1 -1 15.9994 201 | 3 O 1 SO4f O3 1 -1 15.9994 202 | 4 O 1 SO4f O4 1 -1 15.9994 203 | 5 S 1 SO4f S 1 2 32.0600 204 | 205 | [ bonds ] 206 | ; ai aj funct c0 c1 207 | 1 5 1 0.1520 3.7656e4 208 | 2 5 1 0.1520 3.7656e4 209 | 3 5 1 0.1520 3.7656e4 210 | 4 5 1 0.1520 3.7656e4 211 | 212 | [ angles ] 213 | ; ai aj ak funct angle fc 214 | 1 5 2 1 109.5 520 215 | 1 5 3 1 109.5 520 216 | 1 5 4 1 109.5 520 217 | 2 5 3 1 109.5 520 218 | 2 5 4 1 109.5 520 219 | 3 5 4 1 109.5 520 220 | 221 | [exclusions] 222 | 1 2 3 4 5 223 | 2 1 3 4 5 224 | 3 1 2 4 5 225 | 4 1 2 3 5 226 | 5 1 2 3 4 227 | 228 | 229 | 230 | 231 | [ System ] 232 | SO4Na2 slit pore 233 | 234 | [ Molecules ] 235 | 236 | SO4fi 279 237 | SO4 24 238 | SO4fp 1 239 | Nafi 560 240 | Na 48 241 | SOL 3930 242 | -------------------------------------------------------------------------------- /water-in-salt-slit/Na2SO4_1M/run_bigfoot_pore.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #OAR -n mixture-nanopore 3 | #OAR -l /nodes=1/gpu=1/cpu=1/core=8,walltime=48:00:00 4 | #OAR -p gpumodel='A100' 5 | #OAR --stdout log.out 6 | #OAR --stderr log.err 7 | #OAR --project tamtam 8 | 9 | export GMX_MAXBACKUP=-1 10 | 11 | gmx=/home/gravells/softwares/gromacs-2023/build-gpu/bin/gmx 12 | 13 | #${gmx} grompp -f ../input/nvt.mdp -p topol.top -o nvt -pp nvt -po nvt -r conf.gro 14 | #${gmx} mdrun -deffnm nvt -v -rdd 1 -nt 8 -pin on 15 | #cp nvt.gro conf.gro 16 | 17 | ${gmx} grompp -f ../input/npt.mdp -p topol.top -o npt -pp npt -po npt -r conf.gro -maxwarn 2 18 | ${gmx} mdrun -deffnm npt -v -rdd 1 -nt 8 -pin on 19 | cp npt.gro conf.gro 20 | 21 | -------------------------------------------------------------------------------- /water-in-salt-slit/Na2SO4_1M/runall.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # path to gromacs 4 | gmx=/work/sgravelle/Softwares/gromacs-install/bin/gmx 5 | 6 | ${gmx} grompp -f ../input/nvt.mdp -o nvt -pp nvt -po nvt -r conf.gro 7 | ${gmx} mdrun -v -deffnm nvt 8 | mv nvt.gro conf.gro 9 | 10 | ${gmx} grompp -f ../input/npt.mdp -o npt -pp npt -po npt -r conf.gro 11 | ${gmx} mdrun -v -deffnm npt 12 | mv npt.gro conf.gro 13 | 14 | ${gmx} grompp -f ../input/prodHR.mdp -o prodHR -pp prodHR -po prodHR -r conf.gro 15 | ${gmx} mdrun -v -deffnm prodHR 16 | 17 | ${gmx} grompp -f ../input/prodLR.mdp -o prodLR -pp prodLR -po prodLR -r conf.gro 18 | ${gmx} mdrun -v -deffnm prodLR 19 | 20 | -------------------------------------------------------------------------------- /water-in-salt-slit/Na2SO4_1M/topol.top: -------------------------------------------------------------------------------- 1 | #include "../ff/forcefield.itp" 2 | #include "../ff/tip4peps.itp" 3 | #include "../ff/ions.itp" 4 | 5 | [ System ] 6 | SO4Na2 slit pore 7 | 8 | [ Molecules ] 9 | 10 | SO4fi 279 11 | SO4 24 12 | SO4fp 1 13 | Nafi 560 14 | Na 48 15 | SOL 3930 16 | -------------------------------------------------------------------------------- /water-in-salt-slit/NaCl_0M/ConfigurationGenerator.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | 4 | # In[1]: 5 | 6 | 7 | import numpy as np 8 | import matplotlib.pyplot as plt 9 | import random 10 | import copy 11 | from numpy.linalg import norm 12 | 13 | def neighborsearch(neighbor,molecule,cptatm, x, y, z, Lx, Ly, Lz): 14 | '''Search all neighbor to a molecule in a box and return the closest distance''' 15 | box = np.array([Lx, Ly, Lz]) 16 | minr = 10 17 | for m in molecule.T: 18 | x0 = m[0] + x 19 | y0 = m[1] + y 20 | z0 = m[2] + z 21 | dxdydz = np.remainder(neighbor[:cptatm].T - np.array([x0,y0,z0]) + box/2., box) - box/2. 22 | minr = np.min([minr,np.min(norm(dxdydz,axis=1))]) 23 | return minr 24 | 25 | Na = 6.022e23 #constants.Avogadro 26 | Mh2o = 0.018053 # kg/mol - water 27 | 28 | N = 4000 29 | 30 | # desired concentration in mol/L 31 | c = 0 32 | nion = c*N*Mh2o/(2*(1+Mh2o*c)) # desired number for each ion 33 | nwater = N - 2*nion 34 | 35 | # choose the initial box dimensions 36 | dnacl = 2.84 37 | nx = 14 38 | ny = 14 39 | nz = 4 40 | dw = 3.1 41 | layer = nz*dnacl 42 | h = 5 43 | Lx = nx*dnacl 44 | Ly = ny*dnacl 45 | 46 | cptH2O = 0 47 | nCl = 0 48 | nNa = 0 49 | 50 | txlo, txhi = 0, Lx 51 | tylo, tyhi = 0, Ly 52 | 53 | attemps = 0 54 | 55 | while cptH2O+nNa+nCl < N: 56 | 57 | 58 | Lz = layer + h + dw*attemps 59 | tzlo, tzhi = 0,Lz 60 | 61 | cptatom = 0 62 | cptbond = 0 63 | cptangle = 0 64 | cptmol = 0 65 | cptNa = 0 66 | cptH2O = 0 67 | cptCl = 0 68 | cptClf = 0 69 | cptNaf = 0 70 | cptres = 1 71 | nCl = 0 72 | nNa = 0 73 | 74 | box = np.array([Lx, Ly, Lz]) 75 | 76 | # allocate memory 77 | XYZ = np.zeros((1000000,3)) 78 | Typ = ["" for x in range(1000000)] 79 | ResName = ["" for x in range(1000000)] 80 | ResNum = np.zeros((1000000,1)) 81 | 82 | # Load NaCl positions for the wall crystal structure 83 | wallNaCl = np.zeros((10000,7)) 84 | file1 = open('NaCl/Position.dat', 'r') 85 | Lines = file1.readlines() 86 | count = 0 87 | for line in Lines: 88 | wallNaCl[count]=line.strip().split(' ') 89 | count += 1 90 | wallNaCl = wallNaCl[0:count] 91 | 92 | # replicate the initial structure 93 | wallNaClrep = copy.deepcopy(wallNaCl) 94 | for xx in np.arange(txlo+dnacl/2,txhi,2*dnacl): 95 | for yy in np.arange(tylo+dnacl/2,tyhi,2*dnacl): 96 | for zz in np.arange(tzlo+dnacl/2,tzlo+layer,2*dnacl): 97 | wallNaClrep = np.append(wallNaClrep,wallNaCl+[0,0,0,0,xx,yy,zz], axis=0) 98 | wallNaClrep = wallNaClrep[8:] 99 | assert len(wallNaClrep[wallNaClrep.T[2]==1]) == len(wallNaClrep[wallNaClrep.T[2]==2]) 100 | 101 | for n in range(len(wallNaClrep)): 102 | wallNaClrep[n,0] = np.int64(n+1) 103 | 104 | shift = np.min(wallNaClrep.T[6]) 105 | wallNaClrep.T[6] -= shift 106 | layer = np.max(wallNaClrep.T[6]) - np.min(wallNaClrep.T[6]) 107 | 108 | wallCl = wallNaClrep[wallNaClrep.T[2] == 2] 109 | 110 | # choose the Cl to maintain fix all over the production run (just one atom) 111 | selection = wallCl[(wallCl.T[6]>layer*0.3) & (wallCl.T[6]0 113 | 114 | for n in np.arange(selection[0], selection[0]+1,1): 115 | id0 = np.where(wallNaClrep.T[0] == n) 116 | wallNaClrep[id0,2] += 1 117 | 118 | wallCl = [] 119 | wallCl = wallNaClrep[wallNaClrep.T[2] > 1] 120 | wallNa = wallNaClrep[wallNaClrep.T[2] == 1] 121 | 122 | # place the Cl of the wall 123 | for m in wallCl: 124 | if m[2] == 2: 125 | x0 = m[4] 126 | y0 = m[5] 127 | z0 = m[6] 128 | XYZ[cptatom] = [x0,y0,z0] 129 | Typ[cptatom] = 'Cl' 130 | ResNum[cptatom] = cptres 131 | ResName[cptatom] = 'Cl' 132 | cptCl += 1 133 | cptres += 1 134 | cptatom += 1 135 | 136 | # add Cl randomly 137 | fail = 0 138 | while (nCl < nion) & (fail < 1e4): 139 | x = random.randint(1,1000)/1000*(txhi-txlo)+txlo 140 | y = random.randint(1,1000)/1000*(tyhi-tylo)+tylo 141 | z = random.randint(1,1000)/1000*(tzhi-tzlo)+tzlo 142 | pos = np.array([x,y,z]) 143 | 144 | dxdydz = np.remainder((pos - XYZ[0:cptatom]) + box/2., box) - box/2. 145 | d = np.min(norm(dxdydz,axis=1)) 146 | 147 | if d > 3 and z>tzlo+layer+3 and z 3 and z>tzlo+layer+1.5 and z dw and z>tzlo+layer+3 and z5}".format(str(np.int32(ResNum[n][0])))) # residue number (5 positions, integer) 259 | f.write("{: >5}".format(str(ResName[n]))) # residue name (5 characters) 260 | f.write("{: >5}".format(str(Typ[n]))) # atom name (5 characters) 261 | f.write("{: >5}".format(str(np.int32(n+1)))) # atom number (5 positions, integer) 262 | f.write("{: >8}".format(str("{:.3f}".format(XYZ[n][0]/10)))) # position (in nm, x y z in 3 columns, each 8 positions with 3 decimal places) 263 | f.write("{: >8}".format(str("{:.3f}".format(XYZ[n][1]/10)))) # position (in nm, x y z in 3 columns, each 8 positions with 3 decimal places) 264 | f.write("{: >8}".format(str("{:.3f}".format(XYZ[n][2]/10)))) # position (in nm, x y z in 3 columns, each 8 positions with 3 decimal places) 265 | f.write("\n") 266 | f.write("{: >10}".format(str("{:.5f}".format(Lx/10)))) 267 | f.write("{: >10}".format(str("{:.5f}".format(Ly/10)))) 268 | f.write("{: >10}".format(str("{:.5f}".format(Lz/10)))) 269 | f.close() 270 | # write topol.top 271 | f = open('topol.top', 'w') 272 | f.write('#include "../ff/forcefield.itp"\n') 273 | f.write('#include "../ff/tip4peps.itp"\n') 274 | f.write('#include "../ff/ions.itp"\n\n') 275 | f.write('[ System ]\n') 276 | f.write('SO4Na2 slit\n\n') 277 | f.write('[ Molecules ]\n\n') 278 | f.write('Cl '+ str(cptCl)+'\n') 279 | f.write('Clf '+ str(cptClf)+'\n') 280 | f.write('Naf '+ str(cptNaf)+'\n') 281 | f.write('Na '+ str(cptNa)+'\n') 282 | f.write('SOL '+ str(cptH2O)+'\n') 283 | f.close() 284 | 285 | 286 | # In[ ]: 287 | 288 | 289 | 290 | 291 | -------------------------------------------------------------------------------- /water-in-salt-slit/NaCl_0M/NaCl/Position.dat: -------------------------------------------------------------------------------- 1 | 1 1 1 1 0. 0. 0. 2 | 2 2 2 -1 0. 2.84 0. 3 | 3 3 2 -1 2.84 0. 0. 4 | 4 4 1 1 2.84 2.84 0. 5 | 5 5 2 -1 0. 0. 2.84 6 | 6 6 1 1 0. 2.84 2.84 7 | 7 7 1 1 2.84 0. 2.84 8 | 8 8 2 -1 2.84 2.84 2.84 9 | -------------------------------------------------------------------------------- /water-in-salt-slit/NaCl_0M/log.out: -------------------------------------------------------------------------------- 1 | Generated 28 of the 28 non-bonded parameter combinations 2 | 3 | Excluding 1 bonded neighbours molecule type 'Cl' 4 | 5 | turning H bonds into constraints... 6 | 7 | Excluding 1 bonded neighbours molecule type 'Clf' 8 | 9 | turning H bonds into constraints... 10 | 11 | Excluding 1 bonded neighbours molecule type 'Naf' 12 | 13 | turning H bonds into constraints... 14 | 15 | Excluding 1 bonded neighbours molecule type 'Na' 16 | 17 | turning H bonds into constraints... 18 | 19 | Excluding 2 bonded neighbours molecule type 'SOL' 20 | 21 | turning H bonds into constraints... 22 | 23 | Cleaning up constraints and constant bonded interactions with virtual sites 24 | Analysing residue names: 25 | There are: 784 Other residues 26 | There are: 4000 Water residues 27 | Analysing residues not classified as Protein/DNA/RNA/Water and splitting into groups... 28 | 29 | The largest distance between excluded atoms is 0.152 nm between atom 1746 and 1747 30 | 31 | Determining Verlet buffer for a tolerance of 0.005 kJ/mol/ps at 293.15 K 32 | 33 | Calculated rlist for 1x1 atom pair-list as 1.412 nm, buffer size 0.012 nm 34 | 35 | Set rlist, assuming 4x4 atom pair-list, to 1.400 nm, buffer size 0.000 nm 36 | 37 | Note that mdrun will redetermine rlist based on the actual pair-list setup 38 | Calculating fourier grid dimensions for X Y Z 39 | Using a fourier grid of 40x40x96, spacing 0.099 0.099 0.095 40 | 41 | Estimate for the relative computational load of the PME mesh part: 0.13 42 | 43 | This run will generate roughly 22 Mb of data 44 | -------------------------------------------------------------------------------- /water-in-salt-slit/NaCl_0M/npt.mdp: -------------------------------------------------------------------------------- 1 | ; 2 | ; File 'npt.mdp' was generated 3 | ; By user: unknown (1862325) 4 | ; On host: bigfoot9 5 | ; At date: Tue May 16 20:18:00 2023 6 | ; 7 | ; Created by: 8 | ; :-) GROMACS - gmx grompp, 2023 (-: 9 | ; 10 | ; Executable: /home/gravells/softwares/gromacs-2023/build-gpu/bin/gmx 11 | ; Data prefix: /home/gravells/softwares/gromacs-2023 (source tree) 12 | ; Working dir: /bettik/gravells/water-in-salt-slit/NaCl_0M 13 | ; Command line: 14 | ; gmx grompp -f ../input/npt.mdp -p topol.top -o npt -pp npt -po npt -r conf.gro -maxwarn 2 15 | 16 | ; VARIOUS PREPROCESSING OPTIONS 17 | ; Preprocessor information: use cpp syntax. 18 | ; e.g.: -I/home/joe/doe -I/home/mary/roe 19 | include = 20 | ; e.g.: -DPOSRES -DFLEXIBLE (note these variable names are case sensitive) 21 | define = 22 | 23 | ; RUN CONTROL PARAMETERS 24 | integrator = md 25 | ; Start time and timestep in ps 26 | tinit = 0 27 | dt = 0.001 28 | nsteps = 50000000 29 | ; For exact run continuation or redoing part of a run 30 | init-step = 0 31 | ; Part index is updated automatically on checkpointing (keeps files separate) 32 | simulation-part = 1 33 | ; Multiple time-stepping 34 | mts = no 35 | ; mode for center of mass motion removal 36 | comm_mode = linear 37 | ; number of steps for center of mass motion removal 38 | nstcomm = 100 39 | ; group(s) for center of mass motion removal 40 | comm_grps = system 41 | 42 | ; LANGEVIN DYNAMICS OPTIONS 43 | ; Friction coefficient (amu/ps) and random seed 44 | bd-fric = 0 45 | ld-seed = 48456 46 | 47 | ; ENERGY MINIMIZATION OPTIONS 48 | ; Force tolerance and initial step-size 49 | emtol = 10 50 | emstep = 0.01 51 | ; Max number of iterations in relax-shells 52 | niter = 20 53 | ; Step size (ps^2) for minimization of flexible constraints 54 | fcstep = 0 55 | ; Frequency of steepest descents steps when doing CG 56 | nstcgsteep = 1000 57 | nbfgscorr = 10 58 | 59 | ; TEST PARTICLE INSERTION OPTIONS 60 | rtpi = 0.05 61 | 62 | ; OUTPUT CONTROL OPTIONS 63 | ; Output frequency for coords (x), velocities (v) and forces (f) 64 | nstxout = 0 65 | nstvout = 0 66 | nstfout = 0 67 | ; Output frequency for energies to log file and energy file 68 | nstlog = 200000 69 | nstcalcenergy = 100 70 | nstenergy = 200000 71 | ; Output frequency and precision for .xtc file 72 | nstxout-compressed = 200000 73 | compressed-x-precision = 1000 74 | ; This selects the subset of atoms for the compressed 75 | ; trajectory file. You can select multiple groups. By 76 | ; default, all atoms will be written. 77 | compressed-x-grps = 78 | ; Selection of energy groups 79 | energygrps = 80 | 81 | ; NEIGHBORSEARCHING PARAMETERS 82 | ; cut-off scheme (Verlet: particle based cut-offs) 83 | cutoff-scheme = Verlet 84 | ; nblist update frequency 85 | nstlist = 10 86 | ; Periodic boundary conditions: xyz, no, xy 87 | pbc = xyz 88 | periodic-molecules = no 89 | ; Allowed energy error due to the Verlet buffer in kJ/mol/ps per atom, 90 | ; a value of -1 means: use rlist 91 | verlet-buffer-tolerance = 0.005 92 | ; nblist cut-off 93 | rlist = 1 94 | ; long-range cut-off for switched potentials 95 | 96 | ; OPTIONS FOR ELECTROSTATICS AND VDW 97 | ; Method for doing electrostatics 98 | coulombtype = pme 99 | coulomb-modifier = Potential-shift-Verlet 100 | rcoulomb-switch = 0 101 | rcoulomb = 1.4 102 | ; Relative dielectric constant for the medium and the reaction field 103 | epsilon-r = 1 104 | epsilon-rf = 0 105 | ; Method for doing Van der Waals 106 | vdw-type = Cut-off 107 | vdw-modifier = Potential-shift-Verlet 108 | ; cut-off lengths 109 | rvdw-switch = 0 110 | rvdw = 1.4 111 | ; Apply long range dispersion corrections for Energy and Pressure 112 | DispCorr = No 113 | ; Extension of the potential lookup tables beyond the cut-off 114 | table-extension = 1 115 | ; Separate tables between energy group pairs 116 | energygrp-table = 117 | ; Spacing for the PME/PPPM FFT grid 118 | fourierspacing = 0.1 119 | ; FFT grid size, when a value is 0 fourierspacing will be used 120 | fourier-nx = 0 121 | fourier-ny = 0 122 | fourier-nz = 0 123 | ; EWALD/PME/PPPM parameters 124 | pme-order = 4 125 | ewald-rtol = 1e-05 126 | ewald-rtol-lj = 0.001 127 | lj-pme-comb-rule = Geometric 128 | ewald-geometry = 3d 129 | epsilon-surface = 0 130 | implicit-solvent = no 131 | 132 | ; OPTIONS FOR WEAK COUPLING ALGORITHMS 133 | ensemble-temperature-setting = auto 134 | ensemble-temperature = -1 135 | ; Temperature coupling 136 | tcoupl = v-rescale 137 | nsttcouple = -1 138 | nhchainlength = 1 139 | print-nose-hoover-chain-variables = no 140 | ; Groups to couple separately 141 | tc-grps = Water non-Water 142 | ; Time constant (ps) and reference temperature (K) 143 | tau-t = 0.5 0.5 144 | ref-t = 293.15 293.15 145 | ; pressure coupling 146 | pcoupl = berendsen 147 | Pcoupltype = anisotropic 148 | nstpcouple = -1 149 | ; Time constant (ps), compressibility (1/bar) and reference P (bar) 150 | tau_p = 1. 151 | compressibility = 4.5e-5 4.5e-5 4.5e-5 0 0 0 152 | ref_p = 1. 1. 1. 0. 0. 0. 153 | ; Scaling of reference coordinates, No, All or COM 154 | refcoord-scaling = No 155 | 156 | ; OPTIONS FOR QMMM calculations 157 | QMMM = no 158 | ; Groups treated with MiMiC 159 | QMMM-grps = 160 | 161 | ; SIMULATED ANNEALING 162 | ; Type of annealing for each temperature group (no/single/periodic) 163 | annealing = 164 | ; Number of time points to use for specifying annealing in each group 165 | annealing-npoints = 166 | ; List of times at the annealing points for each group 167 | annealing-time = 168 | ; Temp. at each annealing point, for each group. 169 | annealing-temp = 170 | 171 | ; GENERATE VELOCITIES FOR STARTUP RUN 172 | gen-vel = no 173 | gen-temp = 293.15 174 | gen-seed = -1241858234 175 | 176 | ; OPTIONS FOR BONDS 177 | constraints = hbonds 178 | ; Type of constraint algorithm 179 | constraint-algorithm = lincs 180 | ; Do not constrain the start configuration 181 | continuation = yes 182 | ; Use successive overrelaxation to reduce the number of shake iterations 183 | Shake-SOR = no 184 | ; Relative tolerance of shake 185 | shake-tol = 0.0001 186 | ; Highest order in the expansion of the constraint coupling matrix 187 | lincs-order = 4 188 | ; Number of iterations in the final step of LINCS. 1 is fine for 189 | ; normal simulations, but use 2 to conserve energy in NVE runs. 190 | ; For energy minimization with constraints it should be 4 to 8. 191 | lincs-iter = 1 192 | ; Lincs will write a warning to the stderr if in one step a bond 193 | ; rotates over more degrees than 194 | lincs-warnangle = 30 195 | ; Convert harmonic bonds to morse potentials 196 | morse = no 197 | 198 | ; ENERGY GROUP EXCLUSIONS 199 | ; Pairs of energy groups for which all non-bonded interactions are excluded 200 | energygrp-excl = 201 | 202 | ; WALLS 203 | ; Number of walls, type, atom types, densities and box-z scale factor for Ewald 204 | nwall = 0 205 | wall-type = 9-3 206 | wall-r-linpot = -1 207 | wall-atomtype = 208 | wall-density = 209 | wall-ewald-zfac = 3 210 | 211 | ; COM PULLING 212 | pull = no 213 | 214 | ; AWH biasing 215 | awh = no 216 | 217 | ; ENFORCED ROTATION 218 | ; Enforced rotation: No or Yes 219 | rotation = no 220 | 221 | ; Group to display and/or manipulate in interactive MD session 222 | IMD-group = 223 | 224 | ; NMR refinement stuff 225 | ; Distance restraints type: No, Simple or Ensemble 226 | disre = No 227 | ; Force weighting of pairs in one distance restraint: Conservative or Equal 228 | disre-weighting = Conservative 229 | ; Use sqrt of the time averaged times the instantaneous violation 230 | disre-mixed = no 231 | disre-fc = 1000 232 | disre-tau = 0 233 | ; Output frequency for pair distances to energy file 234 | nstdisreout = 100 235 | ; Orientation restraints: No or Yes 236 | orire = no 237 | ; Orientation restraints force constant and tau for time averaging 238 | orire-fc = 0 239 | orire-tau = 0 240 | orire-fitgrp = 241 | ; Output frequency for trace(SD) and S to energy file 242 | nstorireout = 100 243 | 244 | ; Free energy variables 245 | free-energy = no 246 | couple-moltype = 247 | couple-lambda0 = vdw-q 248 | couple-lambda1 = vdw-q 249 | couple-intramol = no 250 | init-lambda = -1 251 | init-lambda-state = -1 252 | delta-lambda = 0 253 | nstdhdl = 50 254 | fep-lambdas = 255 | mass-lambdas = 256 | coul-lambdas = 257 | vdw-lambdas = 258 | bonded-lambdas = 259 | restraint-lambdas = 260 | temperature-lambdas = 261 | calc-lambda-neighbors = 1 262 | init-lambda-weights = 263 | dhdl-print-energy = no 264 | sc-function = beutler 265 | sc-alpha = 0 266 | sc-power = 1 267 | sc-r-power = 6 268 | sc-sigma = 0.3 269 | sc-coul = no 270 | sc-gapsys-scale-linpoint-lj = 0.85 271 | sc-gapsys-scale-linpoint-q = 0.3 272 | sc-gapsys-sigma-lj = 0.3 273 | separate-dhdl-file = yes 274 | dhdl-derivatives = yes 275 | dh_hist_size = 0 276 | dh_hist_spacing = 0.1 277 | 278 | ; Non-equilibrium MD stuff 279 | acc-grps = 280 | accelerate = 281 | freezegrps = 282 | freezedim = 283 | cos-acceleration = 0 284 | deform = 285 | 286 | ; simulated tempering variables 287 | simulated-tempering = no 288 | simulated-tempering-scaling = geometric 289 | sim-temp-low = 300 290 | sim-temp-high = 300 291 | 292 | ; Ion/water position swapping for computational electrophysiology setups 293 | ; Swap positions along direction: no, X, Y, Z 294 | swapcoords = no 295 | adress = no 296 | 297 | ; User defined thingies 298 | user1-grps = 299 | user2-grps = 300 | userint1 = 0 301 | userint2 = 0 302 | userint3 = 0 303 | userint4 = 0 304 | userreal1 = 0 305 | userreal2 = 0 306 | userreal3 = 0 307 | userreal4 = 0 308 | ; Electric fields 309 | ; Format for electric-field-x, etc. is: four real variables: 310 | ; amplitude (V/nm), frequency omega (1/ps), time for the pulse peak (ps), 311 | ; and sigma (ps) width of the pulse. Omega = 0 means static field, 312 | ; sigma = 0 means no pulse, leaving the field to be a cosine function. 313 | electric-field-x = 0 0 0 0 314 | electric-field-y = 0 0 0 0 315 | electric-field-z = 0 0 0 0 316 | 317 | ; Density guided simulation 318 | density-guided-simulation-active = false 319 | 320 | ; QM/MM with CP2K 321 | qmmm-cp2k-active = false 322 | -------------------------------------------------------------------------------- /water-in-salt-slit/NaCl_0M/npt.top: -------------------------------------------------------------------------------- 1 | [ defaults ] 2 | ; nbfunc comb-rule gen-pairs fudgeLJ fudgeQQ 3 | 1 2 no 1.0 0.833 4 | 5 | [ atomtypes ] 6 | ; salts parameters 7 | ; name at.num mass charge ptype sigma epsilon 8 | Na 11 22.990 0.0000 A 0.23100 0.45000 9 | Cl 17 35.450 0.0000 A 0.43000 0.42000 10 | O 8 15.9994 0.0000 A 0.386 0.12 11 | S 16 32.0600 0.0000 A 0.355 1.0465 12 | 13 | ; water paramters 14 | ; name at.num mass charge ptype sigma epsilon 15 | HW 1 1.008 0.0000 A 0.00000 0.00000 16 | OW 8 16.000 0.0000 A 0.31650 0.76849 17 | 18 | ; DUMMY atoms 19 | ; name at.num mass charge ptype sigma epsilon 20 | MW 0 0.000 0.0000 D 0.00000 0.00000 21 | 22 | 23 | 24 | [ bondtypes ] 25 | ; i j func b0 kb 26 | S O 1 0.15 3.7656e4 27 | 28 | [ angletypes ] 29 | ; i j func b0 kb 30 | O S O 1 109.5 520 31 | [ moleculetype ] 32 | ; molname nrexcl 33 | SOL 2 34 | 35 | [ atoms ] 36 | ; id at type res nr res name at name cg nr charge mass 37 | 1 OW 1 SOL OW 1 0 15.9994 38 | 2 HW 1 SOL HW1 1 0.527 1.0079 39 | 3 HW 1 SOL HW2 1 0.527 1.0079 40 | 4 MW 1 SOL MW 1 -1.054 0.0000 41 | 42 | [ settles ] 43 | ; i funct doh dhh 44 | 1 1 0.09572 0.15139 45 | 46 | [ virtual_sites3 ] 47 | ; Vsite from funct a b 48 | 4 1 2 3 1 0.089608 0.089608 49 | 50 | [ exclusions ] 51 | 1 2 3 4 52 | 2 1 3 4 53 | 3 1 2 4 54 | 4 1 2 3 55 | 56 | ; The position of the virtual site is computed as follows: 57 | ; 58 | ; O 59 | ; 60 | ; V 61 | ; 62 | ; H H 63 | ; 64 | ; const = distance (OV) / [ cos (angle(VOH)) * distance (OH) ] / 2 65 | ; = 0.0105 nm / [ cos (52.26 deg) * 0.09572 nm ] * 2 66 | ; = 0.17922 / 2 67 | ; = 0.089608 68 | ; 69 | ; Vsite pos x4 = x1 + a*(x2-x1) + b*(x3-x1) 70 | [ moleculetype ] 71 | ; molname nrexcl 72 | Na 1 73 | 74 | [ atoms ] 75 | ; id at type res nr residu name at name cg nr charge 76 | 1 Na 1 Na Na 1 1 77 | 78 | 79 | [ moleculetype ] 80 | ; molname nrexcl 81 | Nafi 1 82 | 83 | [ atoms ] 84 | ; id at type res nr residu name at name cg nr charge 85 | 1 Na 1 Na Na 1 1 86 | 87 | 88 | [ moleculetype ] 89 | ; molname nrexcl 90 | Naf 1 91 | 92 | [ atoms ] 93 | ; id at type res nr residu name at name cg nr charge 94 | 1 Na 1 Na Na 1 1 95 | 96 | [ moleculetype ] 97 | ; molname nrexcl 98 | Cl 1 99 | 100 | [ atoms ] 101 | ; id at type res nr residu name at name cg nr charge 102 | 1 Cl 1 Cl Cl 1 -1 103 | 104 | 105 | [ moleculetype ] 106 | ; molname nrexcl 107 | Clf 1 108 | 109 | [ atoms ] 110 | ; id at type res nr residu name at name cg nr charge 111 | 1 Cl 1 Cl Cl 1 -1 112 | 113 | [ position_restraints ] 114 | ; ai funct fcx fcy fcz 115 | 1 1 20000 20000 20000 ; restrains to a point 116 | 117 | [moleculetype] 118 | ; name nrexcl 119 | SO4 1 120 | 121 | [atoms] 122 | ;nr type resnr residu atom cgnr charge 123 | 1 O 1 SO4 O1 1 -1 15.9994 124 | 2 O 1 SO4 O2 1 -1 15.9994 125 | 3 O 1 SO4 O3 1 -1 15.9994 126 | 4 O 1 SO4 O4 1 -1 15.9994 127 | 5 S 1 SO4 S 1 2 32.0600 128 | 129 | [ bonds ] 130 | ; ai aj funct c0 c1 131 | 1 5 1 0.1520 3.7656e4 132 | 2 5 1 0.1520 3.7656e4 133 | 3 5 1 0.1520 3.7656e4 134 | 4 5 1 0.1520 3.7656e4 135 | 136 | [ angles ] 137 | ; ai aj ak funct angle fc 138 | 1 5 2 1 109.5 520 139 | 1 5 3 1 109.5 520 140 | 1 5 4 1 109.5 520 141 | 2 5 3 1 109.5 520 142 | 2 5 4 1 109.5 520 143 | 3 5 4 1 109.5 520 144 | 145 | [exclusions] 146 | 1 2 3 4 5 147 | 2 1 3 4 5 148 | 3 1 2 4 5 149 | 4 1 2 3 5 150 | 5 1 2 3 4 151 | 152 | [moleculetype] 153 | ; name nrexcl 154 | SO4fp 1 155 | 156 | [atoms] 157 | ;nr type resnr residu atom cgnr charge 158 | 1 O 1 SO4f O1 1 -1 15.9994 159 | 2 O 1 SO4f O2 1 -1 15.9994 160 | 3 O 1 SO4f O3 1 -1 15.9994 161 | 4 O 1 SO4f O4 1 -1 15.9994 162 | 5 S 1 SO4f S 1 2 32.0600 163 | 164 | [ bonds ] 165 | ; ai aj funct c0 c1 166 | 1 5 1 0.1520 3.7656e4 167 | 2 5 1 0.1520 3.7656e4 168 | 3 5 1 0.1520 3.7656e4 169 | 4 5 1 0.1520 3.7656e4 170 | 171 | [ angles ] 172 | ; ai aj ak funct angle fc 173 | 1 5 2 1 109.5 520 174 | 1 5 3 1 109.5 520 175 | 1 5 4 1 109.5 520 176 | 2 5 3 1 109.5 520 177 | 2 5 4 1 109.5 520 178 | 3 5 4 1 109.5 520 179 | 180 | [exclusions] 181 | 1 2 3 4 5 182 | 2 1 3 4 5 183 | 3 1 2 4 5 184 | 4 1 2 3 5 185 | 5 1 2 3 4 186 | 187 | ; Include Position restraint file 188 | 189 | 190 | 191 | 192 | 193 | [moleculetype] 194 | ; name nrexcl 195 | SO4fi 1 196 | 197 | [atoms] 198 | ;nr type resnr residu atom cgnr charge 199 | 1 O 1 SO4f O1 1 -1 15.9994 200 | 2 O 1 SO4f O2 1 -1 15.9994 201 | 3 O 1 SO4f O3 1 -1 15.9994 202 | 4 O 1 SO4f O4 1 -1 15.9994 203 | 5 S 1 SO4f S 1 2 32.0600 204 | 205 | [ bonds ] 206 | ; ai aj funct c0 c1 207 | 1 5 1 0.1520 3.7656e4 208 | 2 5 1 0.1520 3.7656e4 209 | 3 5 1 0.1520 3.7656e4 210 | 4 5 1 0.1520 3.7656e4 211 | 212 | [ angles ] 213 | ; ai aj ak funct angle fc 214 | 1 5 2 1 109.5 520 215 | 1 5 3 1 109.5 520 216 | 1 5 4 1 109.5 520 217 | 2 5 3 1 109.5 520 218 | 2 5 4 1 109.5 520 219 | 3 5 4 1 109.5 520 220 | 221 | [exclusions] 222 | 1 2 3 4 5 223 | 2 1 3 4 5 224 | 3 1 2 4 5 225 | 4 1 2 3 5 226 | 5 1 2 3 4 227 | 228 | 229 | 230 | 231 | [ System ] 232 | SO4Na2 slit 233 | 234 | [ Molecules ] 235 | 236 | Cl 391 237 | Clf 1 238 | Naf 392 239 | Na 0 240 | SOL 4000 241 | -------------------------------------------------------------------------------- /water-in-salt-slit/NaCl_0M/run_bigfoot_pore.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #OAR -n mixture-nanopore 3 | #OAR -l /nodes=1/gpu=1/cpu=1/core=8,walltime=48:00:00 4 | #OAR -p gpumodel='A100' 5 | #OAR --stdout log.out 6 | #OAR --stderr log.err 7 | #OAR --project tamtam 8 | 9 | export GMX_MAXBACKUP=-1 10 | 11 | gmx=/home/gravells/softwares/gromacs-2023/build-gpu/bin/gmx 12 | 13 | #${gmx} grompp -f ../input/nvt.mdp -p topol.top -o nvt -pp nvt -po nvt -r conf.gro 14 | #${gmx} mdrun -deffnm nvt -v -rdd 1 -nt 8 -pin on 15 | #cp nvt.gro conf.gro 16 | 17 | ${gmx} grompp -f ../input/npt.mdp -p topol.top -o npt -pp npt -po npt -r conf.gro -maxwarn 2 18 | ${gmx} mdrun -deffnm npt -v -rdd 1 -nt 8 -pin on 19 | cp npt.gro conf.gro 20 | 21 | -------------------------------------------------------------------------------- /water-in-salt-slit/NaCl_0M/runall.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # path to gromacs 4 | gmx=/work/sgravelle/Softwares/gromacs-install/bin/gmx 5 | 6 | ${gmx} grompp -f ../input/nvt.mdp -o nvt -pp nvt -po nvt -r conf.gro 7 | ${gmx} mdrun -v -deffnm nvt 8 | mv nvt.gro conf.gro 9 | 10 | ${gmx} grompp -f ../input/npt.mdp -o npt -pp npt -po npt -r conf.gro 11 | ${gmx} mdrun -v -deffnm npt 12 | mv npt.gro conf.gro 13 | 14 | ${gmx} grompp -f ../input/prodHR.mdp -o prodHR -pp prodHR -po prodHR -r conf.gro 15 | ${gmx} mdrun -v -deffnm prodHR 16 | 17 | ${gmx} grompp -f ../input/prodLR.mdp -o prodLR -pp prodLR -po prodLR -r conf.gro 18 | ${gmx} mdrun -v -deffnm prodLR 19 | 20 | -------------------------------------------------------------------------------- /water-in-salt-slit/NaCl_0M/topol.top: -------------------------------------------------------------------------------- 1 | #include "../ff/forcefield.itp" 2 | #include "../ff/tip4peps.itp" 3 | #include "../ff/ions.itp" 4 | 5 | [ System ] 6 | SO4Na2 slit 7 | 8 | [ Molecules ] 9 | 10 | Cl 391 11 | Clf 1 12 | Naf 392 13 | Na 0 14 | SOL 4000 15 | -------------------------------------------------------------------------------- /water-in-salt-slit/NaCl_1M/ConfigurationGenerator.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | 4 | # In[1]: 5 | 6 | 7 | import numpy as np 8 | import matplotlib.pyplot as plt 9 | import random 10 | import copy 11 | from numpy.linalg import norm 12 | 13 | def neighborsearch(neighbor,molecule,cptatm, x, y, z, Lx, Ly, Lz): 14 | '''Search all neighbor to a molecule in a box and return the closest distance''' 15 | box = np.array([Lx, Ly, Lz]) 16 | minr = 10 17 | for m in molecule.T: 18 | x0 = m[0] + x 19 | y0 = m[1] + y 20 | z0 = m[2] + z 21 | dxdydz = np.remainder(neighbor[:cptatm].T - np.array([x0,y0,z0]) + box/2., box) - box/2. 22 | minr = np.min([minr,np.min(norm(dxdydz,axis=1))]) 23 | return minr 24 | 25 | Na = 6.022e23 #constants.Avogadro 26 | Mh2o = 0.018053 # kg/mol - water 27 | 28 | N = 4000 29 | 30 | # desired concentration in mol/L 31 | c = 1 32 | nion = c*N*Mh2o/(2*(1+Mh2o*c)) # desired number for each ion 33 | nwater = N - 2*nion 34 | 35 | # choose the initial box dimensions 36 | dnacl = 2.84 37 | nx = 14 38 | ny = 14 39 | nz = 4 40 | dw = 3.1 41 | layer = nz*dnacl 42 | h = 5 43 | Lx = nx*dnacl 44 | Ly = ny*dnacl 45 | 46 | cptH2O = 0 47 | nCl = 0 48 | nNa = 0 49 | 50 | txlo, txhi = 0, Lx 51 | tylo, tyhi = 0, Ly 52 | 53 | attemps = 0 54 | 55 | while cptH2O+nNa+nCl < N: 56 | 57 | 58 | Lz = layer + h + dw*attemps 59 | tzlo, tzhi = 0,Lz 60 | 61 | cptatom = 0 62 | cptbond = 0 63 | cptangle = 0 64 | cptmol = 0 65 | cptNa = 0 66 | cptH2O = 0 67 | cptCl = 0 68 | cptClf = 0 69 | cptNaf = 0 70 | cptres = 1 71 | nCl = 0 72 | nNa = 0 73 | 74 | box = np.array([Lx, Ly, Lz]) 75 | 76 | # allocate memory 77 | XYZ = np.zeros((1000000,3)) 78 | Typ = ["" for x in range(1000000)] 79 | ResName = ["" for x in range(1000000)] 80 | ResNum = np.zeros((1000000,1)) 81 | 82 | # Load NaCl positions for the wall crystal structure 83 | wallNaCl = np.zeros((10000,7)) 84 | file1 = open('NaCl/Position.dat', 'r') 85 | Lines = file1.readlines() 86 | count = 0 87 | for line in Lines: 88 | wallNaCl[count]=line.strip().split(' ') 89 | count += 1 90 | wallNaCl = wallNaCl[0:count] 91 | 92 | # replicate the initial structure 93 | wallNaClrep = copy.deepcopy(wallNaCl) 94 | for xx in np.arange(txlo+dnacl/2,txhi,2*dnacl): 95 | for yy in np.arange(tylo+dnacl/2,tyhi,2*dnacl): 96 | for zz in np.arange(tzlo+dnacl/2,tzlo+layer,2*dnacl): 97 | wallNaClrep = np.append(wallNaClrep,wallNaCl+[0,0,0,0,xx,yy,zz], axis=0) 98 | wallNaClrep = wallNaClrep[8:] 99 | assert len(wallNaClrep[wallNaClrep.T[2]==1]) == len(wallNaClrep[wallNaClrep.T[2]==2]) 100 | 101 | for n in range(len(wallNaClrep)): 102 | wallNaClrep[n,0] = np.int64(n+1) 103 | 104 | shift = np.min(wallNaClrep.T[6]) 105 | wallNaClrep.T[6] -= shift 106 | layer = np.max(wallNaClrep.T[6]) - np.min(wallNaClrep.T[6]) 107 | 108 | wallCl = wallNaClrep[wallNaClrep.T[2] == 2] 109 | 110 | # choose the Cl to maintain fix all over the production run (just one atom) 111 | selection = wallCl[(wallCl.T[6]>layer*0.3) & (wallCl.T[6]0 113 | 114 | for n in np.arange(selection[0], selection[0]+1,1): 115 | id0 = np.where(wallNaClrep.T[0] == n) 116 | wallNaClrep[id0,2] += 1 117 | 118 | wallCl = [] 119 | wallCl = wallNaClrep[wallNaClrep.T[2] > 1] 120 | wallNa = wallNaClrep[wallNaClrep.T[2] == 1] 121 | 122 | # place the Cl of the wall 123 | for m in wallCl: 124 | if m[2] == 2: 125 | x0 = m[4] 126 | y0 = m[5] 127 | z0 = m[6] 128 | XYZ[cptatom] = [x0,y0,z0] 129 | Typ[cptatom] = 'Cl' 130 | ResNum[cptatom] = cptres 131 | ResName[cptatom] = 'Cl' 132 | cptCl += 1 133 | cptres += 1 134 | cptatom += 1 135 | 136 | # add Cl randomly 137 | fail = 0 138 | while (nCl < nion) & (fail < 1e4): 139 | x = random.randint(1,1000)/1000*(txhi-txlo)+txlo 140 | y = random.randint(1,1000)/1000*(tyhi-tylo)+tylo 141 | z = random.randint(1,1000)/1000*(tzhi-tzlo)+tzlo 142 | pos = np.array([x,y,z]) 143 | 144 | dxdydz = np.remainder((pos - XYZ[0:cptatom]) + box/2., box) - box/2. 145 | d = np.min(norm(dxdydz,axis=1)) 146 | 147 | if d > 3 and z>tzlo+layer+3 and z 3 and z>tzlo+layer+1.5 and z dw and z>tzlo+layer+3 and z5}".format(str(np.int32(ResNum[n][0])))) # residue number (5 positions, integer) 259 | f.write("{: >5}".format(str(ResName[n]))) # residue name (5 characters) 260 | f.write("{: >5}".format(str(Typ[n]))) # atom name (5 characters) 261 | f.write("{: >5}".format(str(np.int32(n+1)))) # atom number (5 positions, integer) 262 | f.write("{: >8}".format(str("{:.3f}".format(XYZ[n][0]/10)))) # position (in nm, x y z in 3 columns, each 8 positions with 3 decimal places) 263 | f.write("{: >8}".format(str("{:.3f}".format(XYZ[n][1]/10)))) # position (in nm, x y z in 3 columns, each 8 positions with 3 decimal places) 264 | f.write("{: >8}".format(str("{:.3f}".format(XYZ[n][2]/10)))) # position (in nm, x y z in 3 columns, each 8 positions with 3 decimal places) 265 | f.write("\n") 266 | f.write("{: >10}".format(str("{:.5f}".format(Lx/10)))) 267 | f.write("{: >10}".format(str("{:.5f}".format(Ly/10)))) 268 | f.write("{: >10}".format(str("{:.5f}".format(Lz/10)))) 269 | f.close() 270 | # write topol.top 271 | f = open('topol.top', 'w') 272 | f.write('#include "../ff/forcefield.itp"\n') 273 | f.write('#include "../ff/tip4peps.itp"\n') 274 | f.write('#include "../ff/ions.itp"\n\n') 275 | f.write('[ System ]\n') 276 | f.write('SO4Na2 slit\n\n') 277 | f.write('[ Molecules ]\n\n') 278 | f.write('Cl '+ str(cptCl)+'\n') 279 | f.write('Clf '+ str(cptClf)+'\n') 280 | f.write('Naf '+ str(cptNaf)+'\n') 281 | f.write('Na '+ str(cptNa)+'\n') 282 | f.write('SOL '+ str(cptH2O)+'\n') 283 | f.close() 284 | 285 | 286 | # In[ ]: 287 | 288 | 289 | 290 | 291 | -------------------------------------------------------------------------------- /water-in-salt-slit/NaCl_1M/NaCl/Position.dat: -------------------------------------------------------------------------------- 1 | 1 1 1 1 0. 0. 0. 2 | 2 2 2 -1 0. 2.84 0. 3 | 3 3 2 -1 2.84 0. 0. 4 | 4 4 1 1 2.84 2.84 0. 5 | 5 5 2 -1 0. 0. 2.84 6 | 6 6 1 1 0. 2.84 2.84 7 | 7 7 1 1 2.84 0. 2.84 8 | 8 8 2 -1 2.84 2.84 2.84 9 | -------------------------------------------------------------------------------- /water-in-salt-slit/NaCl_1M/log.out: -------------------------------------------------------------------------------- 1 | Generated 28 of the 28 non-bonded parameter combinations 2 | 3 | Excluding 1 bonded neighbours molecule type 'Cl' 4 | 5 | turning H bonds into constraints... 6 | 7 | Excluding 1 bonded neighbours molecule type 'Clf' 8 | 9 | turning H bonds into constraints... 10 | 11 | Excluding 1 bonded neighbours molecule type 'Naf' 12 | 13 | turning H bonds into constraints... 14 | 15 | Excluding 1 bonded neighbours molecule type 'Na' 16 | 17 | turning H bonds into constraints... 18 | 19 | Excluding 2 bonded neighbours molecule type 'SOL' 20 | 21 | turning H bonds into constraints... 22 | 23 | Cleaning up constraints and constant bonded interactions with virtual sites 24 | Analysing residue names: 25 | There are: 856 Other residues 26 | There are: 3930 Water residues 27 | Analysing residues not classified as Protein/DNA/RNA/Water and splitting into groups... 28 | 29 | The largest distance between excluded atoms is 0.153 nm between atom 11054 and 11055 30 | 31 | Determining Verlet buffer for a tolerance of 0.005 kJ/mol/ps at 293.15 K 32 | 33 | Calculated rlist for 1x1 atom pair-list as 1.412 nm, buffer size 0.012 nm 34 | 35 | Set rlist, assuming 4x4 atom pair-list, to 1.400 nm, buffer size 0.000 nm 36 | 37 | Note that mdrun will redetermine rlist based on the actual pair-list setup 38 | Calculating fourier grid dimensions for X Y Z 39 | Using a fourier grid of 40x40x96, spacing 0.099 0.099 0.098 40 | 41 | Estimate for the relative computational load of the PME mesh part: 0.13 42 | 43 | This run will generate roughly 22 Mb of data 44 | -------------------------------------------------------------------------------- /water-in-salt-slit/NaCl_1M/npt.mdp: -------------------------------------------------------------------------------- 1 | ; 2 | ; File 'npt.mdp' was generated 3 | ; By user: unknown (1862325) 4 | ; On host: bigfoot12 5 | ; At date: Tue May 16 17:18:07 2023 6 | ; 7 | ; Created by: 8 | ; :-) GROMACS - gmx grompp, 2023 (-: 9 | ; 10 | ; Executable: /home/gravells/softwares/gromacs-2023/build-gpu/bin/gmx 11 | ; Data prefix: /home/gravells/softwares/gromacs-2023 (source tree) 12 | ; Working dir: /bettik/gravells/water-in-salt-slit/NaCl_1M 13 | ; Command line: 14 | ; gmx grompp -f ../input/npt.mdp -p topol.top -o npt -pp npt -po npt -r conf.gro -maxwarn 2 15 | 16 | ; VARIOUS PREPROCESSING OPTIONS 17 | ; Preprocessor information: use cpp syntax. 18 | ; e.g.: -I/home/joe/doe -I/home/mary/roe 19 | include = 20 | ; e.g.: -DPOSRES -DFLEXIBLE (note these variable names are case sensitive) 21 | define = 22 | 23 | ; RUN CONTROL PARAMETERS 24 | integrator = md 25 | ; Start time and timestep in ps 26 | tinit = 0 27 | dt = 0.001 28 | nsteps = 50000000 29 | ; For exact run continuation or redoing part of a run 30 | init-step = 0 31 | ; Part index is updated automatically on checkpointing (keeps files separate) 32 | simulation-part = 1 33 | ; Multiple time-stepping 34 | mts = no 35 | ; mode for center of mass motion removal 36 | comm_mode = linear 37 | ; number of steps for center of mass motion removal 38 | nstcomm = 100 39 | ; group(s) for center of mass motion removal 40 | comm_grps = system 41 | 42 | ; LANGEVIN DYNAMICS OPTIONS 43 | ; Friction coefficient (amu/ps) and random seed 44 | bd-fric = 0 45 | ld-seed = 48456 46 | 47 | ; ENERGY MINIMIZATION OPTIONS 48 | ; Force tolerance and initial step-size 49 | emtol = 10 50 | emstep = 0.01 51 | ; Max number of iterations in relax-shells 52 | niter = 20 53 | ; Step size (ps^2) for minimization of flexible constraints 54 | fcstep = 0 55 | ; Frequency of steepest descents steps when doing CG 56 | nstcgsteep = 1000 57 | nbfgscorr = 10 58 | 59 | ; TEST PARTICLE INSERTION OPTIONS 60 | rtpi = 0.05 61 | 62 | ; OUTPUT CONTROL OPTIONS 63 | ; Output frequency for coords (x), velocities (v) and forces (f) 64 | nstxout = 0 65 | nstvout = 0 66 | nstfout = 0 67 | ; Output frequency for energies to log file and energy file 68 | nstlog = 200000 69 | nstcalcenergy = 100 70 | nstenergy = 200000 71 | ; Output frequency and precision for .xtc file 72 | nstxout-compressed = 200000 73 | compressed-x-precision = 1000 74 | ; This selects the subset of atoms for the compressed 75 | ; trajectory file. You can select multiple groups. By 76 | ; default, all atoms will be written. 77 | compressed-x-grps = 78 | ; Selection of energy groups 79 | energygrps = 80 | 81 | ; NEIGHBORSEARCHING PARAMETERS 82 | ; cut-off scheme (Verlet: particle based cut-offs) 83 | cutoff-scheme = Verlet 84 | ; nblist update frequency 85 | nstlist = 10 86 | ; Periodic boundary conditions: xyz, no, xy 87 | pbc = xyz 88 | periodic-molecules = no 89 | ; Allowed energy error due to the Verlet buffer in kJ/mol/ps per atom, 90 | ; a value of -1 means: use rlist 91 | verlet-buffer-tolerance = 0.005 92 | ; nblist cut-off 93 | rlist = 1 94 | ; long-range cut-off for switched potentials 95 | 96 | ; OPTIONS FOR ELECTROSTATICS AND VDW 97 | ; Method for doing electrostatics 98 | coulombtype = pme 99 | coulomb-modifier = Potential-shift-Verlet 100 | rcoulomb-switch = 0 101 | rcoulomb = 1.4 102 | ; Relative dielectric constant for the medium and the reaction field 103 | epsilon-r = 1 104 | epsilon-rf = 0 105 | ; Method for doing Van der Waals 106 | vdw-type = Cut-off 107 | vdw-modifier = Potential-shift-Verlet 108 | ; cut-off lengths 109 | rvdw-switch = 0 110 | rvdw = 1.4 111 | ; Apply long range dispersion corrections for Energy and Pressure 112 | DispCorr = No 113 | ; Extension of the potential lookup tables beyond the cut-off 114 | table-extension = 1 115 | ; Separate tables between energy group pairs 116 | energygrp-table = 117 | ; Spacing for the PME/PPPM FFT grid 118 | fourierspacing = 0.1 119 | ; FFT grid size, when a value is 0 fourierspacing will be used 120 | fourier-nx = 0 121 | fourier-ny = 0 122 | fourier-nz = 0 123 | ; EWALD/PME/PPPM parameters 124 | pme-order = 4 125 | ewald-rtol = 1e-05 126 | ewald-rtol-lj = 0.001 127 | lj-pme-comb-rule = Geometric 128 | ewald-geometry = 3d 129 | epsilon-surface = 0 130 | implicit-solvent = no 131 | 132 | ; OPTIONS FOR WEAK COUPLING ALGORITHMS 133 | ensemble-temperature-setting = auto 134 | ensemble-temperature = -1 135 | ; Temperature coupling 136 | tcoupl = v-rescale 137 | nsttcouple = -1 138 | nhchainlength = 1 139 | print-nose-hoover-chain-variables = no 140 | ; Groups to couple separately 141 | tc-grps = Water non-Water 142 | ; Time constant (ps) and reference temperature (K) 143 | tau-t = 0.5 0.5 144 | ref-t = 293.15 293.15 145 | ; pressure coupling 146 | pcoupl = berendsen 147 | Pcoupltype = anisotropic 148 | nstpcouple = -1 149 | ; Time constant (ps), compressibility (1/bar) and reference P (bar) 150 | tau_p = 1. 151 | compressibility = 4.5e-5 4.5e-5 4.5e-5 0 0 0 152 | ref_p = 1. 1. 1. 0. 0. 0. 153 | ; Scaling of reference coordinates, No, All or COM 154 | refcoord-scaling = No 155 | 156 | ; OPTIONS FOR QMMM calculations 157 | QMMM = no 158 | ; Groups treated with MiMiC 159 | QMMM-grps = 160 | 161 | ; SIMULATED ANNEALING 162 | ; Type of annealing for each temperature group (no/single/periodic) 163 | annealing = 164 | ; Number of time points to use for specifying annealing in each group 165 | annealing-npoints = 166 | ; List of times at the annealing points for each group 167 | annealing-time = 168 | ; Temp. at each annealing point, for each group. 169 | annealing-temp = 170 | 171 | ; GENERATE VELOCITIES FOR STARTUP RUN 172 | gen-vel = no 173 | gen-temp = 293.15 174 | gen-seed = -138412675 175 | 176 | ; OPTIONS FOR BONDS 177 | constraints = hbonds 178 | ; Type of constraint algorithm 179 | constraint-algorithm = lincs 180 | ; Do not constrain the start configuration 181 | continuation = yes 182 | ; Use successive overrelaxation to reduce the number of shake iterations 183 | Shake-SOR = no 184 | ; Relative tolerance of shake 185 | shake-tol = 0.0001 186 | ; Highest order in the expansion of the constraint coupling matrix 187 | lincs-order = 4 188 | ; Number of iterations in the final step of LINCS. 1 is fine for 189 | ; normal simulations, but use 2 to conserve energy in NVE runs. 190 | ; For energy minimization with constraints it should be 4 to 8. 191 | lincs-iter = 1 192 | ; Lincs will write a warning to the stderr if in one step a bond 193 | ; rotates over more degrees than 194 | lincs-warnangle = 30 195 | ; Convert harmonic bonds to morse potentials 196 | morse = no 197 | 198 | ; ENERGY GROUP EXCLUSIONS 199 | ; Pairs of energy groups for which all non-bonded interactions are excluded 200 | energygrp-excl = 201 | 202 | ; WALLS 203 | ; Number of walls, type, atom types, densities and box-z scale factor for Ewald 204 | nwall = 0 205 | wall-type = 9-3 206 | wall-r-linpot = -1 207 | wall-atomtype = 208 | wall-density = 209 | wall-ewald-zfac = 3 210 | 211 | ; COM PULLING 212 | pull = no 213 | 214 | ; AWH biasing 215 | awh = no 216 | 217 | ; ENFORCED ROTATION 218 | ; Enforced rotation: No or Yes 219 | rotation = no 220 | 221 | ; Group to display and/or manipulate in interactive MD session 222 | IMD-group = 223 | 224 | ; NMR refinement stuff 225 | ; Distance restraints type: No, Simple or Ensemble 226 | disre = No 227 | ; Force weighting of pairs in one distance restraint: Conservative or Equal 228 | disre-weighting = Conservative 229 | ; Use sqrt of the time averaged times the instantaneous violation 230 | disre-mixed = no 231 | disre-fc = 1000 232 | disre-tau = 0 233 | ; Output frequency for pair distances to energy file 234 | nstdisreout = 100 235 | ; Orientation restraints: No or Yes 236 | orire = no 237 | ; Orientation restraints force constant and tau for time averaging 238 | orire-fc = 0 239 | orire-tau = 0 240 | orire-fitgrp = 241 | ; Output frequency for trace(SD) and S to energy file 242 | nstorireout = 100 243 | 244 | ; Free energy variables 245 | free-energy = no 246 | couple-moltype = 247 | couple-lambda0 = vdw-q 248 | couple-lambda1 = vdw-q 249 | couple-intramol = no 250 | init-lambda = -1 251 | init-lambda-state = -1 252 | delta-lambda = 0 253 | nstdhdl = 50 254 | fep-lambdas = 255 | mass-lambdas = 256 | coul-lambdas = 257 | vdw-lambdas = 258 | bonded-lambdas = 259 | restraint-lambdas = 260 | temperature-lambdas = 261 | calc-lambda-neighbors = 1 262 | init-lambda-weights = 263 | dhdl-print-energy = no 264 | sc-function = beutler 265 | sc-alpha = 0 266 | sc-power = 1 267 | sc-r-power = 6 268 | sc-sigma = 0.3 269 | sc-coul = no 270 | sc-gapsys-scale-linpoint-lj = 0.85 271 | sc-gapsys-scale-linpoint-q = 0.3 272 | sc-gapsys-sigma-lj = 0.3 273 | separate-dhdl-file = yes 274 | dhdl-derivatives = yes 275 | dh_hist_size = 0 276 | dh_hist_spacing = 0.1 277 | 278 | ; Non-equilibrium MD stuff 279 | acc-grps = 280 | accelerate = 281 | freezegrps = 282 | freezedim = 283 | cos-acceleration = 0 284 | deform = 285 | 286 | ; simulated tempering variables 287 | simulated-tempering = no 288 | simulated-tempering-scaling = geometric 289 | sim-temp-low = 300 290 | sim-temp-high = 300 291 | 292 | ; Ion/water position swapping for computational electrophysiology setups 293 | ; Swap positions along direction: no, X, Y, Z 294 | swapcoords = no 295 | adress = no 296 | 297 | ; User defined thingies 298 | user1-grps = 299 | user2-grps = 300 | userint1 = 0 301 | userint2 = 0 302 | userint3 = 0 303 | userint4 = 0 304 | userreal1 = 0 305 | userreal2 = 0 306 | userreal3 = 0 307 | userreal4 = 0 308 | ; Electric fields 309 | ; Format for electric-field-x, etc. is: four real variables: 310 | ; amplitude (V/nm), frequency omega (1/ps), time for the pulse peak (ps), 311 | ; and sigma (ps) width of the pulse. Omega = 0 means static field, 312 | ; sigma = 0 means no pulse, leaving the field to be a cosine function. 313 | electric-field-x = 0 0 0 0 314 | electric-field-y = 0 0 0 0 315 | electric-field-z = 0 0 0 0 316 | 317 | ; Density guided simulation 318 | density-guided-simulation-active = false 319 | 320 | ; QM/MM with CP2K 321 | qmmm-cp2k-active = false 322 | -------------------------------------------------------------------------------- /water-in-salt-slit/NaCl_1M/npt.top: -------------------------------------------------------------------------------- 1 | [ defaults ] 2 | ; nbfunc comb-rule gen-pairs fudgeLJ fudgeQQ 3 | 1 2 no 1.0 0.833 4 | 5 | [ atomtypes ] 6 | ; salts parameters 7 | ; name at.num mass charge ptype sigma epsilon 8 | Na 11 22.990 0.0000 A 0.23100 0.45000 9 | Cl 17 35.450 0.0000 A 0.43000 0.42000 10 | O 8 15.9994 0.0000 A 0.386 0.12 11 | S 16 32.0600 0.0000 A 0.355 1.0465 12 | 13 | ; water paramters 14 | ; name at.num mass charge ptype sigma epsilon 15 | HW 1 1.008 0.0000 A 0.00000 0.00000 16 | OW 8 16.000 0.0000 A 0.31650 0.76849 17 | 18 | ; DUMMY atoms 19 | ; name at.num mass charge ptype sigma epsilon 20 | MW 0 0.000 0.0000 D 0.00000 0.00000 21 | 22 | 23 | 24 | [ bondtypes ] 25 | ; i j func b0 kb 26 | S O 1 0.15 3.7656e4 27 | 28 | [ angletypes ] 29 | ; i j func b0 kb 30 | O S O 1 109.5 520 31 | [ moleculetype ] 32 | ; molname nrexcl 33 | SOL 2 34 | 35 | [ atoms ] 36 | ; id at type res nr res name at name cg nr charge mass 37 | 1 OW 1 SOL OW 1 0 15.9994 38 | 2 HW 1 SOL HW1 1 0.527 1.0079 39 | 3 HW 1 SOL HW2 1 0.527 1.0079 40 | 4 MW 1 SOL MW 1 -1.054 0.0000 41 | 42 | [ settles ] 43 | ; i funct doh dhh 44 | 1 1 0.09572 0.15139 45 | 46 | [ virtual_sites3 ] 47 | ; Vsite from funct a b 48 | 4 1 2 3 1 0.089608 0.089608 49 | 50 | [ exclusions ] 51 | 1 2 3 4 52 | 2 1 3 4 53 | 3 1 2 4 54 | 4 1 2 3 55 | 56 | ; The position of the virtual site is computed as follows: 57 | ; 58 | ; O 59 | ; 60 | ; V 61 | ; 62 | ; H H 63 | ; 64 | ; const = distance (OV) / [ cos (angle(VOH)) * distance (OH) ] / 2 65 | ; = 0.0105 nm / [ cos (52.26 deg) * 0.09572 nm ] * 2 66 | ; = 0.17922 / 2 67 | ; = 0.089608 68 | ; 69 | ; Vsite pos x4 = x1 + a*(x2-x1) + b*(x3-x1) 70 | [ moleculetype ] 71 | ; molname nrexcl 72 | Na 1 73 | 74 | [ atoms ] 75 | ; id at type res nr residu name at name cg nr charge 76 | 1 Na 1 Na Na 1 1 77 | 78 | 79 | [ moleculetype ] 80 | ; molname nrexcl 81 | Nafi 1 82 | 83 | [ atoms ] 84 | ; id at type res nr residu name at name cg nr charge 85 | 1 Na 1 Na Na 1 1 86 | 87 | 88 | [ moleculetype ] 89 | ; molname nrexcl 90 | Naf 1 91 | 92 | [ atoms ] 93 | ; id at type res nr residu name at name cg nr charge 94 | 1 Na 1 Na Na 1 1 95 | 96 | [ moleculetype ] 97 | ; molname nrexcl 98 | Cl 1 99 | 100 | [ atoms ] 101 | ; id at type res nr residu name at name cg nr charge 102 | 1 Cl 1 Cl Cl 1 -1 103 | 104 | 105 | [ moleculetype ] 106 | ; molname nrexcl 107 | Clf 1 108 | 109 | [ atoms ] 110 | ; id at type res nr residu name at name cg nr charge 111 | 1 Cl 1 Cl Cl 1 -1 112 | 113 | [ position_restraints ] 114 | ; ai funct fcx fcy fcz 115 | 1 1 20000 20000 20000 ; restrains to a point 116 | 117 | [moleculetype] 118 | ; name nrexcl 119 | SO4 1 120 | 121 | [atoms] 122 | ;nr type resnr residu atom cgnr charge 123 | 1 O 1 SO4 O1 1 -1 15.9994 124 | 2 O 1 SO4 O2 1 -1 15.9994 125 | 3 O 1 SO4 O3 1 -1 15.9994 126 | 4 O 1 SO4 O4 1 -1 15.9994 127 | 5 S 1 SO4 S 1 2 32.0600 128 | 129 | [ bonds ] 130 | ; ai aj funct c0 c1 131 | 1 5 1 0.1520 3.7656e4 132 | 2 5 1 0.1520 3.7656e4 133 | 3 5 1 0.1520 3.7656e4 134 | 4 5 1 0.1520 3.7656e4 135 | 136 | [ angles ] 137 | ; ai aj ak funct angle fc 138 | 1 5 2 1 109.5 520 139 | 1 5 3 1 109.5 520 140 | 1 5 4 1 109.5 520 141 | 2 5 3 1 109.5 520 142 | 2 5 4 1 109.5 520 143 | 3 5 4 1 109.5 520 144 | 145 | [exclusions] 146 | 1 2 3 4 5 147 | 2 1 3 4 5 148 | 3 1 2 4 5 149 | 4 1 2 3 5 150 | 5 1 2 3 4 151 | 152 | [moleculetype] 153 | ; name nrexcl 154 | SO4fp 1 155 | 156 | [atoms] 157 | ;nr type resnr residu atom cgnr charge 158 | 1 O 1 SO4f O1 1 -1 15.9994 159 | 2 O 1 SO4f O2 1 -1 15.9994 160 | 3 O 1 SO4f O3 1 -1 15.9994 161 | 4 O 1 SO4f O4 1 -1 15.9994 162 | 5 S 1 SO4f S 1 2 32.0600 163 | 164 | [ bonds ] 165 | ; ai aj funct c0 c1 166 | 1 5 1 0.1520 3.7656e4 167 | 2 5 1 0.1520 3.7656e4 168 | 3 5 1 0.1520 3.7656e4 169 | 4 5 1 0.1520 3.7656e4 170 | 171 | [ angles ] 172 | ; ai aj ak funct angle fc 173 | 1 5 2 1 109.5 520 174 | 1 5 3 1 109.5 520 175 | 1 5 4 1 109.5 520 176 | 2 5 3 1 109.5 520 177 | 2 5 4 1 109.5 520 178 | 3 5 4 1 109.5 520 179 | 180 | [exclusions] 181 | 1 2 3 4 5 182 | 2 1 3 4 5 183 | 3 1 2 4 5 184 | 4 1 2 3 5 185 | 5 1 2 3 4 186 | 187 | ; Include Position restraint file 188 | 189 | 190 | 191 | 192 | 193 | [moleculetype] 194 | ; name nrexcl 195 | SO4fi 1 196 | 197 | [atoms] 198 | ;nr type resnr residu atom cgnr charge 199 | 1 O 1 SO4f O1 1 -1 15.9994 200 | 2 O 1 SO4f O2 1 -1 15.9994 201 | 3 O 1 SO4f O3 1 -1 15.9994 202 | 4 O 1 SO4f O4 1 -1 15.9994 203 | 5 S 1 SO4f S 1 2 32.0600 204 | 205 | [ bonds ] 206 | ; ai aj funct c0 c1 207 | 1 5 1 0.1520 3.7656e4 208 | 2 5 1 0.1520 3.7656e4 209 | 3 5 1 0.1520 3.7656e4 210 | 4 5 1 0.1520 3.7656e4 211 | 212 | [ angles ] 213 | ; ai aj ak funct angle fc 214 | 1 5 2 1 109.5 520 215 | 1 5 3 1 109.5 520 216 | 1 5 4 1 109.5 520 217 | 2 5 3 1 109.5 520 218 | 2 5 4 1 109.5 520 219 | 3 5 4 1 109.5 520 220 | 221 | [exclusions] 222 | 1 2 3 4 5 223 | 2 1 3 4 5 224 | 3 1 2 4 5 225 | 4 1 2 3 5 226 | 5 1 2 3 4 227 | 228 | 229 | 230 | 231 | [ System ] 232 | SO4Na2 slit 233 | 234 | [ Molecules ] 235 | 236 | Cl 427 237 | Clf 1 238 | Naf 392 239 | Na 36 240 | SOL 3930 241 | -------------------------------------------------------------------------------- /water-in-salt-slit/NaCl_1M/run_bigfoot_pore.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #OAR -n mixture-nanopore 3 | #OAR -l /nodes=1/gpu=1/cpu=1/core=8,walltime=48:00:00 4 | #OAR -p gpumodel='A100' 5 | #OAR --stdout log.out 6 | #OAR --stderr log.err 7 | #OAR --project tamtam 8 | 9 | export GMX_MAXBACKUP=-1 10 | 11 | gmx=/home/gravells/softwares/gromacs-2023/build-gpu/bin/gmx 12 | 13 | #${gmx} grompp -f ../input/nvt.mdp -p topol.top -o nvt -pp nvt -po nvt -r conf.gro 14 | #${gmx} mdrun -deffnm nvt -v -rdd 1 -nt 8 -pin on 15 | #cp nvt.gro conf.gro 16 | 17 | ${gmx} grompp -f ../input/npt.mdp -p topol.top -o npt -pp npt -po npt -r conf.gro -maxwarn 2 18 | ${gmx} mdrun -deffnm npt -v -rdd 1 -nt 8 -pin on 19 | cp npt.gro conf.gro 20 | 21 | -------------------------------------------------------------------------------- /water-in-salt-slit/NaCl_1M/runall.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # path to gromacs 4 | gmx=/work/sgravelle/Softwares/gromacs-install/bin/gmx 5 | 6 | ${gmx} grompp -f ../input/nvt.mdp -o nvt -pp nvt -po nvt -r conf.gro 7 | ${gmx} mdrun -v -deffnm nvt 8 | mv nvt.gro conf.gro 9 | 10 | ${gmx} grompp -f ../input/npt.mdp -o npt -pp npt -po npt -r conf.gro 11 | ${gmx} mdrun -v -deffnm npt 12 | mv npt.gro conf.gro 13 | 14 | ${gmx} grompp -f ../input/prodHR.mdp -o prodHR -pp prodHR -po prodHR -r conf.gro 15 | ${gmx} mdrun -v -deffnm prodHR 16 | 17 | ${gmx} grompp -f ../input/prodLR.mdp -o prodLR -pp prodLR -po prodLR -r conf.gro 18 | ${gmx} mdrun -v -deffnm prodLR 19 | 20 | -------------------------------------------------------------------------------- /water-in-salt-slit/NaCl_1M/topol.top: -------------------------------------------------------------------------------- 1 | #include "../ff/forcefield.itp" 2 | #include "../ff/tip4peps.itp" 3 | #include "../ff/ions.itp" 4 | 5 | [ System ] 6 | SO4Na2 slit 7 | 8 | [ Molecules ] 9 | 10 | Cl 427 11 | Clf 1 12 | Naf 392 13 | Na 36 14 | SOL 3930 15 | -------------------------------------------------------------------------------- /water-in-salt-slit/NaCl_4M/ConfigurationGenerator.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | 4 | # In[1]: 5 | 6 | 7 | import numpy as np 8 | import matplotlib.pyplot as plt 9 | import random 10 | import copy 11 | from numpy.linalg import norm 12 | 13 | def neighborsearch(neighbor,molecule,cptatm, x, y, z, Lx, Ly, Lz): 14 | '''Search all neighbor to a molecule in a box and return the closest distance''' 15 | box = np.array([Lx, Ly, Lz]) 16 | minr = 10 17 | for m in molecule.T: 18 | x0 = m[0] + x 19 | y0 = m[1] + y 20 | z0 = m[2] + z 21 | dxdydz = np.remainder(neighbor[:cptatm].T - np.array([x0,y0,z0]) + box/2., box) - box/2. 22 | minr = np.min([minr,np.min(norm(dxdydz,axis=1))]) 23 | return minr 24 | 25 | Na = 6.022e23 #constants.Avogadro 26 | Mh2o = 0.018053 # kg/mol - water 27 | 28 | N = 4000 29 | 30 | # desired concentration in mol/L 31 | c = 4 32 | nion = c*N*Mh2o/(2*(1+Mh2o*c)) # desired number for each ion 33 | nwater = N - 2*nion 34 | 35 | # choose the initial box dimensions 36 | dnacl = 2.84 37 | nx = 14 38 | ny = 14 39 | nz = 4 40 | dw = 3.1 41 | layer = nz*dnacl 42 | h = 5 43 | Lx = nx*dnacl 44 | Ly = ny*dnacl 45 | 46 | cptH2O = 0 47 | nCl = 0 48 | nNa = 0 49 | 50 | txlo, txhi = 0, Lx 51 | tylo, tyhi = 0, Ly 52 | 53 | attemps = 0 54 | 55 | while cptH2O+nNa+nCl < N: 56 | 57 | 58 | Lz = layer + h + dw*attemps 59 | tzlo, tzhi = 0,Lz 60 | 61 | cptatom = 0 62 | cptbond = 0 63 | cptangle = 0 64 | cptmol = 0 65 | cptNa = 0 66 | cptH2O = 0 67 | cptCl = 0 68 | cptClf = 0 69 | cptNaf = 0 70 | cptres = 1 71 | nCl = 0 72 | nNa = 0 73 | 74 | box = np.array([Lx, Ly, Lz]) 75 | 76 | # allocate memory 77 | XYZ = np.zeros((1000000,3)) 78 | Typ = ["" for x in range(1000000)] 79 | ResName = ["" for x in range(1000000)] 80 | ResNum = np.zeros((1000000,1)) 81 | 82 | # Load NaCl positions for the wall crystal structure 83 | wallNaCl = np.zeros((10000,7)) 84 | file1 = open('NaCl/Position.dat', 'r') 85 | Lines = file1.readlines() 86 | count = 0 87 | for line in Lines: 88 | wallNaCl[count]=line.strip().split(' ') 89 | count += 1 90 | wallNaCl = wallNaCl[0:count] 91 | 92 | # replicate the initial structure 93 | wallNaClrep = copy.deepcopy(wallNaCl) 94 | for xx in np.arange(txlo+dnacl/2,txhi,2*dnacl): 95 | for yy in np.arange(tylo+dnacl/2,tyhi,2*dnacl): 96 | for zz in np.arange(tzlo+dnacl/2,tzlo+layer,2*dnacl): 97 | wallNaClrep = np.append(wallNaClrep,wallNaCl+[0,0,0,0,xx,yy,zz], axis=0) 98 | wallNaClrep = wallNaClrep[8:] 99 | assert len(wallNaClrep[wallNaClrep.T[2]==1]) == len(wallNaClrep[wallNaClrep.T[2]==2]) 100 | 101 | for n in range(len(wallNaClrep)): 102 | wallNaClrep[n,0] = np.int64(n+1) 103 | 104 | shift = np.min(wallNaClrep.T[6]) 105 | wallNaClrep.T[6] -= shift 106 | layer = np.max(wallNaClrep.T[6]) - np.min(wallNaClrep.T[6]) 107 | 108 | wallCl = wallNaClrep[wallNaClrep.T[2] == 2] 109 | 110 | # choose the Cl to maintain fix all over the production run (just one atom) 111 | selection = wallCl[(wallCl.T[6]>layer*0.3) & (wallCl.T[6]0 113 | 114 | for n in np.arange(selection[0], selection[0]+1,1): 115 | id0 = np.where(wallNaClrep.T[0] == n) 116 | wallNaClrep[id0,2] += 1 117 | 118 | wallCl = [] 119 | wallCl = wallNaClrep[wallNaClrep.T[2] > 1] 120 | wallNa = wallNaClrep[wallNaClrep.T[2] == 1] 121 | 122 | # place the Cl of the wall 123 | for m in wallCl: 124 | if m[2] == 2: 125 | x0 = m[4] 126 | y0 = m[5] 127 | z0 = m[6] 128 | XYZ[cptatom] = [x0,y0,z0] 129 | Typ[cptatom] = 'Cl' 130 | ResNum[cptatom] = cptres 131 | ResName[cptatom] = 'Cl' 132 | cptCl += 1 133 | cptres += 1 134 | cptatom += 1 135 | 136 | # add Cl randomly 137 | fail = 0 138 | while (nCl < nion) & (fail < 1e4): 139 | x = random.randint(1,1000)/1000*(txhi-txlo)+txlo 140 | y = random.randint(1,1000)/1000*(tyhi-tylo)+tylo 141 | z = random.randint(1,1000)/1000*(tzhi-tzlo)+tzlo 142 | pos = np.array([x,y,z]) 143 | 144 | dxdydz = np.remainder((pos - XYZ[0:cptatom]) + box/2., box) - box/2. 145 | d = np.min(norm(dxdydz,axis=1)) 146 | 147 | if d > 3 and z>tzlo+layer+3 and z 3 and z>tzlo+layer+1.5 and z dw and z>tzlo+layer+3 and z5}".format(str(np.int32(ResNum[n][0])))) # residue number (5 positions, integer) 259 | f.write("{: >5}".format(str(ResName[n]))) # residue name (5 characters) 260 | f.write("{: >5}".format(str(Typ[n]))) # atom name (5 characters) 261 | f.write("{: >5}".format(str(np.int32(n+1)))) # atom number (5 positions, integer) 262 | f.write("{: >8}".format(str("{:.3f}".format(XYZ[n][0]/10)))) # position (in nm, x y z in 3 columns, each 8 positions with 3 decimal places) 263 | f.write("{: >8}".format(str("{:.3f}".format(XYZ[n][1]/10)))) # position (in nm, x y z in 3 columns, each 8 positions with 3 decimal places) 264 | f.write("{: >8}".format(str("{:.3f}".format(XYZ[n][2]/10)))) # position (in nm, x y z in 3 columns, each 8 positions with 3 decimal places) 265 | f.write("\n") 266 | f.write("{: >10}".format(str("{:.5f}".format(Lx/10)))) 267 | f.write("{: >10}".format(str("{:.5f}".format(Ly/10)))) 268 | f.write("{: >10}".format(str("{:.5f}".format(Lz/10)))) 269 | f.close() 270 | # write topol.top 271 | f = open('topol.top', 'w') 272 | f.write('#include "../ff/forcefield.itp"\n') 273 | f.write('#include "../ff/tip4peps.itp"\n') 274 | f.write('#include "../ff/ions.itp"\n\n') 275 | f.write('[ System ]\n') 276 | f.write('SO4Na2 slit\n\n') 277 | f.write('[ Molecules ]\n\n') 278 | f.write('Cl '+ str(cptCl)+'\n') 279 | f.write('Clf '+ str(cptClf)+'\n') 280 | f.write('Naf '+ str(cptNaf)+'\n') 281 | f.write('Na '+ str(cptNa)+'\n') 282 | f.write('SOL '+ str(cptH2O)+'\n') 283 | f.close() 284 | 285 | 286 | # In[ ]: 287 | 288 | 289 | 290 | 291 | -------------------------------------------------------------------------------- /water-in-salt-slit/NaCl_4M/NaCl/Position.dat: -------------------------------------------------------------------------------- 1 | 1 1 1 1 0. 0. 0. 2 | 2 2 2 -1 0. 2.84 0. 3 | 3 3 2 -1 2.84 0. 0. 4 | 4 4 1 1 2.84 2.84 0. 5 | 5 5 2 -1 0. 0. 2.84 6 | 6 6 1 1 0. 2.84 2.84 7 | 7 7 1 1 2.84 0. 2.84 8 | 8 8 2 -1 2.84 2.84 2.84 9 | -------------------------------------------------------------------------------- /water-in-salt-slit/NaCl_4M/energy.xvg: -------------------------------------------------------------------------------- 1 | # This file was created Tue May 16 12:01:00 2023 2 | # Created by: 3 | # :-) GROMACS - gmx energy, 2023 (-: 4 | # 5 | # Executable: /home/gravells/softwares/gromacs-2023/build-gpu/bin/gmx 6 | # Data prefix: /home/gravells/softwares/gromacs-2023 (source tree) 7 | # Working dir: /bettik/gravells/water-in-salt-slit/NaCl_4M 8 | # Command line: 9 | # gmx energy -f npt.edr 10 | # gmx energy is part of G R O M A C S: 11 | # 12 | # Gyas ROwers Mature At Cryogenic Speed 13 | # 14 | @ title "GROMACS Energies" 15 | @ xaxis label "Time (ps)" 16 | @ yaxis label "(kg/m^3)" 17 | @TYPE xy 18 | @ view 0.15, 0.15, 0.75, 0.85 19 | @ legend on 20 | @ legend box on 21 | @ legend loctype view 22 | @ legend 0.78, 0.8 23 | @ legend length 2 24 | @ s0 legend "Density" 25 | 0.000000 966.511536 26 | 200.000000 1222.212769 27 | 400.000000 1225.539062 28 | -------------------------------------------------------------------------------- /water-in-salt-slit/NaCl_4M/log.out: -------------------------------------------------------------------------------- 1 | Generated 28 of the 28 non-bonded parameter combinations 2 | 3 | Excluding 1 bonded neighbours molecule type 'Cl' 4 | 5 | turning H bonds into constraints... 6 | 7 | Excluding 1 bonded neighbours molecule type 'Clf' 8 | 9 | turning H bonds into constraints... 10 | 11 | Excluding 1 bonded neighbours molecule type 'Naf' 12 | 13 | turning H bonds into constraints... 14 | 15 | Excluding 1 bonded neighbours molecule type 'Na' 16 | 17 | turning H bonds into constraints... 18 | 19 | Excluding 2 bonded neighbours molecule type 'SOL' 20 | 21 | turning H bonds into constraints... 22 | 23 | Setting gen_seed to -588259333 24 | 25 | Velocities were taken from a Maxwell distribution at 293.15 K 26 | 27 | Cleaning up constraints and constant bonded interactions with virtual sites 28 | Analysing residue names: 29 | There are: 1054 Other residues 30 | There are: 3731 Water residues 31 | Analysing residues not classified as Protein/DNA/RNA/Water and splitting into groups... 32 | 33 | The largest distance between excluded atoms is 0.152 nm between atom 1928 and 1929 34 | 35 | Determining Verlet buffer for a tolerance of 0.005 kJ/mol/ps at 293.15 K 36 | 37 | Calculated rlist for 1x1 atom pair-list as 1.411 nm, buffer size 0.011 nm 38 | 39 | Set rlist, assuming 4x4 atom pair-list, to 1.400 nm, buffer size 0.000 nm 40 | 41 | Note that mdrun will redetermine rlist based on the actual pair-list setup 42 | Calculating fourier grid dimensions for X Y Z 43 | Using a fourier grid of 40x40x108, spacing 0.099 0.099 0.099 44 | 45 | Estimate for the relative computational load of the PME mesh part: 0.16 46 | 47 | This run will generate roughly 2 Mb of data 48 | Generated 28 of the 28 non-bonded parameter combinations 49 | 50 | Excluding 1 bonded neighbours molecule type 'Cl' 51 | 52 | turning H bonds into constraints... 53 | 54 | Excluding 1 bonded neighbours molecule type 'Clf' 55 | 56 | turning H bonds into constraints... 57 | 58 | Excluding 1 bonded neighbours molecule type 'Naf' 59 | 60 | turning H bonds into constraints... 61 | 62 | Excluding 1 bonded neighbours molecule type 'Na' 63 | 64 | turning H bonds into constraints... 65 | 66 | Excluding 2 bonded neighbours molecule type 'SOL' 67 | 68 | turning H bonds into constraints... 69 | 70 | Cleaning up constraints and constant bonded interactions with virtual sites 71 | Analysing residue names: 72 | There are: 1054 Other residues 73 | There are: 3731 Water residues 74 | Analysing residues not classified as Protein/DNA/RNA/Water and splitting into groups... 75 | 76 | The largest distance between excluded atoms is 0.153 nm between atom 12976 and 12977 77 | 78 | Determining Verlet buffer for a tolerance of 0.005 kJ/mol/ps at 293.15 K 79 | 80 | Calculated rlist for 1x1 atom pair-list as 1.411 nm, buffer size 0.011 nm 81 | 82 | Set rlist, assuming 4x4 atom pair-list, to 1.400 nm, buffer size 0.000 nm 83 | 84 | Note that mdrun will redetermine rlist based on the actual pair-list setup 85 | Calculating fourier grid dimensions for X Y Z 86 | Using a fourier grid of 40x40x108, spacing 0.099 0.099 0.099 87 | 88 | Estimate for the relative computational load of the PME mesh part: 0.16 89 | 90 | This run will generate roughly 21 Mb of data 91 | Generated 28 of the 28 non-bonded parameter combinations 92 | 93 | Excluding 1 bonded neighbours molecule type 'Cl' 94 | 95 | turning H bonds into constraints... 96 | 97 | Excluding 1 bonded neighbours molecule type 'Clf' 98 | 99 | turning H bonds into constraints... 100 | 101 | Excluding 1 bonded neighbours molecule type 'Naf' 102 | 103 | turning H bonds into constraints... 104 | 105 | Excluding 1 bonded neighbours molecule type 'Na' 106 | 107 | turning H bonds into constraints... 108 | 109 | Excluding 2 bonded neighbours molecule type 'SOL' 110 | 111 | turning H bonds into constraints... 112 | 113 | Cleaning up constraints and constant bonded interactions with virtual sites 114 | Analysing residue names: 115 | There are: 1054 Other residues 116 | There are: 3731 Water residues 117 | Analysing residues not classified as Protein/DNA/RNA/Water and splitting into groups... 118 | 119 | The largest distance between excluded atoms is 0.153 nm between atom 12976 and 12977 120 | 121 | Determining Verlet buffer for a tolerance of 0.005 kJ/mol/ps at 293.15 K 122 | 123 | Calculated rlist for 1x1 atom pair-list as 1.411 nm, buffer size 0.011 nm 124 | 125 | Set rlist, assuming 4x4 atom pair-list, to 1.400 nm, buffer size 0.000 nm 126 | 127 | Note that mdrun will redetermine rlist based on the actual pair-list setup 128 | Calculating fourier grid dimensions for X Y Z 129 | Using a fourier grid of 40x40x108, spacing 0.099 0.099 0.099 130 | 131 | Estimate for the relative computational load of the PME mesh part: 0.16 132 | 133 | This run will generate roughly 21 Mb of data 134 | Generated 28 of the 28 non-bonded parameter combinations 135 | 136 | Excluding 1 bonded neighbours molecule type 'Cl' 137 | 138 | turning H bonds into constraints... 139 | 140 | Excluding 1 bonded neighbours molecule type 'Clf' 141 | 142 | turning H bonds into constraints... 143 | 144 | Excluding 1 bonded neighbours molecule type 'Naf' 145 | 146 | turning H bonds into constraints... 147 | 148 | Excluding 1 bonded neighbours molecule type 'Na' 149 | 150 | turning H bonds into constraints... 151 | 152 | Excluding 2 bonded neighbours molecule type 'SOL' 153 | 154 | turning H bonds into constraints... 155 | 156 | Cleaning up constraints and constant bonded interactions with virtual sites 157 | Analysing residue names: 158 | There are: 1054 Other residues 159 | There are: 3731 Water residues 160 | Analysing residues not classified as Protein/DNA/RNA/Water and splitting into groups... 161 | 162 | The largest distance between excluded atoms is 0.153 nm between atom 12976 and 12977 163 | 164 | Determining Verlet buffer for a tolerance of 0.005 kJ/mol/ps at 293.15 K 165 | 166 | Calculated rlist for 1x1 atom pair-list as 1.411 nm, buffer size 0.011 nm 167 | 168 | Set rlist, assuming 4x4 atom pair-list, to 1.400 nm, buffer size 0.000 nm 169 | 170 | Note that mdrun will redetermine rlist based on the actual pair-list setup 171 | Calculating fourier grid dimensions for X Y Z 172 | Using a fourier grid of 40x40x108, spacing 0.099 0.099 0.099 173 | 174 | Estimate for the relative computational load of the PME mesh part: 0.16 175 | 176 | This run will generate roughly 21 Mb of data 177 | Generated 28 of the 28 non-bonded parameter combinations 178 | 179 | Excluding 1 bonded neighbours molecule type 'Cl' 180 | 181 | turning H bonds into constraints... 182 | 183 | Excluding 1 bonded neighbours molecule type 'Clf' 184 | 185 | turning H bonds into constraints... 186 | 187 | Excluding 1 bonded neighbours molecule type 'Naf' 188 | 189 | turning H bonds into constraints... 190 | 191 | Excluding 1 bonded neighbours molecule type 'Na' 192 | 193 | turning H bonds into constraints... 194 | 195 | Excluding 2 bonded neighbours molecule type 'SOL' 196 | 197 | turning H bonds into constraints... 198 | 199 | Cleaning up constraints and constant bonded interactions with virtual sites 200 | Analysing residue names: 201 | There are: 1054 Other residues 202 | There are: 3731 Water residues 203 | Analysing residues not classified as Protein/DNA/RNA/Water and splitting into groups... 204 | 205 | The largest distance between excluded atoms is 0.153 nm between atom 12976 and 12977 206 | 207 | Determining Verlet buffer for a tolerance of 0.005 kJ/mol/ps at 293.15 K 208 | 209 | Calculated rlist for 1x1 atom pair-list as 1.411 nm, buffer size 0.011 nm 210 | 211 | Set rlist, assuming 4x4 atom pair-list, to 1.400 nm, buffer size 0.000 nm 212 | 213 | Note that mdrun will redetermine rlist based on the actual pair-list setup 214 | Calculating fourier grid dimensions for X Y Z 215 | Using a fourier grid of 40x40x108, spacing 0.099 0.099 0.099 216 | 217 | Estimate for the relative computational load of the PME mesh part: 0.16 218 | 219 | This run will generate roughly 21 Mb of data 220 | -------------------------------------------------------------------------------- /water-in-salt-slit/NaCl_4M/npt.mdp: -------------------------------------------------------------------------------- 1 | ; 2 | ; File 'npt.mdp' was generated 3 | ; By user: unknown (1862325) 4 | ; On host: bigfoot9 5 | ; At date: Tue May 16 11:46:39 2023 6 | ; 7 | ; Created by: 8 | ; :-) GROMACS - gmx grompp, 2023 (-: 9 | ; 10 | ; Executable: /home/gravells/softwares/gromacs-2023/build-gpu/bin/gmx 11 | ; Data prefix: /home/gravells/softwares/gromacs-2023 (source tree) 12 | ; Working dir: /bettik/gravells/water-in-salt-slit/NaCl_4M 13 | ; Command line: 14 | ; gmx grompp -f ../input/npt.mdp -p topol.top -o npt -pp npt -po npt -r conf.gro -maxwarn 2 15 | 16 | ; VARIOUS PREPROCESSING OPTIONS 17 | ; Preprocessor information: use cpp syntax. 18 | ; e.g.: -I/home/joe/doe -I/home/mary/roe 19 | include = 20 | ; e.g.: -DPOSRES -DFLEXIBLE (note these variable names are case sensitive) 21 | define = 22 | 23 | ; RUN CONTROL PARAMETERS 24 | integrator = md 25 | ; Start time and timestep in ps 26 | tinit = 0 27 | dt = 0.001 28 | nsteps = 50000000 29 | ; For exact run continuation or redoing part of a run 30 | init-step = 0 31 | ; Part index is updated automatically on checkpointing (keeps files separate) 32 | simulation-part = 1 33 | ; Multiple time-stepping 34 | mts = no 35 | ; mode for center of mass motion removal 36 | comm_mode = linear 37 | ; number of steps for center of mass motion removal 38 | nstcomm = 100 39 | ; group(s) for center of mass motion removal 40 | comm_grps = system 41 | 42 | ; LANGEVIN DYNAMICS OPTIONS 43 | ; Friction coefficient (amu/ps) and random seed 44 | bd-fric = 0 45 | ld-seed = 48456 46 | 47 | ; ENERGY MINIMIZATION OPTIONS 48 | ; Force tolerance and initial step-size 49 | emtol = 10 50 | emstep = 0.01 51 | ; Max number of iterations in relax-shells 52 | niter = 20 53 | ; Step size (ps^2) for minimization of flexible constraints 54 | fcstep = 0 55 | ; Frequency of steepest descents steps when doing CG 56 | nstcgsteep = 1000 57 | nbfgscorr = 10 58 | 59 | ; TEST PARTICLE INSERTION OPTIONS 60 | rtpi = 0.05 61 | 62 | ; OUTPUT CONTROL OPTIONS 63 | ; Output frequency for coords (x), velocities (v) and forces (f) 64 | nstxout = 0 65 | nstvout = 0 66 | nstfout = 0 67 | ; Output frequency for energies to log file and energy file 68 | nstlog = 200000 69 | nstcalcenergy = 100 70 | nstenergy = 200000 71 | ; Output frequency and precision for .xtc file 72 | nstxout-compressed = 200000 73 | compressed-x-precision = 1000 74 | ; This selects the subset of atoms for the compressed 75 | ; trajectory file. You can select multiple groups. By 76 | ; default, all atoms will be written. 77 | compressed-x-grps = 78 | ; Selection of energy groups 79 | energygrps = 80 | 81 | ; NEIGHBORSEARCHING PARAMETERS 82 | ; cut-off scheme (Verlet: particle based cut-offs) 83 | cutoff-scheme = Verlet 84 | ; nblist update frequency 85 | nstlist = 10 86 | ; Periodic boundary conditions: xyz, no, xy 87 | pbc = xyz 88 | periodic-molecules = no 89 | ; Allowed energy error due to the Verlet buffer in kJ/mol/ps per atom, 90 | ; a value of -1 means: use rlist 91 | verlet-buffer-tolerance = 0.005 92 | ; nblist cut-off 93 | rlist = 1 94 | ; long-range cut-off for switched potentials 95 | 96 | ; OPTIONS FOR ELECTROSTATICS AND VDW 97 | ; Method for doing electrostatics 98 | coulombtype = pme 99 | coulomb-modifier = Potential-shift-Verlet 100 | rcoulomb-switch = 0 101 | rcoulomb = 1.4 102 | ; Relative dielectric constant for the medium and the reaction field 103 | epsilon-r = 1 104 | epsilon-rf = 0 105 | ; Method for doing Van der Waals 106 | vdw-type = Cut-off 107 | vdw-modifier = Potential-shift-Verlet 108 | ; cut-off lengths 109 | rvdw-switch = 0 110 | rvdw = 1.4 111 | ; Apply long range dispersion corrections for Energy and Pressure 112 | DispCorr = No 113 | ; Extension of the potential lookup tables beyond the cut-off 114 | table-extension = 1 115 | ; Separate tables between energy group pairs 116 | energygrp-table = 117 | ; Spacing for the PME/PPPM FFT grid 118 | fourierspacing = 0.1 119 | ; FFT grid size, when a value is 0 fourierspacing will be used 120 | fourier-nx = 0 121 | fourier-ny = 0 122 | fourier-nz = 0 123 | ; EWALD/PME/PPPM parameters 124 | pme-order = 4 125 | ewald-rtol = 1e-05 126 | ewald-rtol-lj = 0.001 127 | lj-pme-comb-rule = Geometric 128 | ewald-geometry = 3d 129 | epsilon-surface = 0 130 | implicit-solvent = no 131 | 132 | ; OPTIONS FOR WEAK COUPLING ALGORITHMS 133 | ensemble-temperature-setting = auto 134 | ensemble-temperature = -1 135 | ; Temperature coupling 136 | tcoupl = v-rescale 137 | nsttcouple = -1 138 | nhchainlength = 1 139 | print-nose-hoover-chain-variables = no 140 | ; Groups to couple separately 141 | tc-grps = Water non-Water 142 | ; Time constant (ps) and reference temperature (K) 143 | tau-t = 0.5 0.5 144 | ref-t = 293.15 293.15 145 | ; pressure coupling 146 | pcoupl = berendsen 147 | Pcoupltype = anisotropic 148 | nstpcouple = -1 149 | ; Time constant (ps), compressibility (1/bar) and reference P (bar) 150 | tau_p = 1. 151 | compressibility = 4.5e-5 4.5e-5 4.5e-5 0 0 0 152 | ref_p = 1. 1. 1. 0. 0. 0. 153 | ; Scaling of reference coordinates, No, All or COM 154 | refcoord-scaling = No 155 | 156 | ; OPTIONS FOR QMMM calculations 157 | QMMM = no 158 | ; Groups treated with MiMiC 159 | QMMM-grps = 160 | 161 | ; SIMULATED ANNEALING 162 | ; Type of annealing for each temperature group (no/single/periodic) 163 | annealing = 164 | ; Number of time points to use for specifying annealing in each group 165 | annealing-npoints = 166 | ; List of times at the annealing points for each group 167 | annealing-time = 168 | ; Temp. at each annealing point, for each group. 169 | annealing-temp = 170 | 171 | ; GENERATE VELOCITIES FOR STARTUP RUN 172 | gen-vel = no 173 | gen-temp = 293.15 174 | gen-seed = 939478271 175 | 176 | ; OPTIONS FOR BONDS 177 | constraints = hbonds 178 | ; Type of constraint algorithm 179 | constraint-algorithm = lincs 180 | ; Do not constrain the start configuration 181 | continuation = yes 182 | ; Use successive overrelaxation to reduce the number of shake iterations 183 | Shake-SOR = no 184 | ; Relative tolerance of shake 185 | shake-tol = 0.0001 186 | ; Highest order in the expansion of the constraint coupling matrix 187 | lincs-order = 4 188 | ; Number of iterations in the final step of LINCS. 1 is fine for 189 | ; normal simulations, but use 2 to conserve energy in NVE runs. 190 | ; For energy minimization with constraints it should be 4 to 8. 191 | lincs-iter = 1 192 | ; Lincs will write a warning to the stderr if in one step a bond 193 | ; rotates over more degrees than 194 | lincs-warnangle = 30 195 | ; Convert harmonic bonds to morse potentials 196 | morse = no 197 | 198 | ; ENERGY GROUP EXCLUSIONS 199 | ; Pairs of energy groups for which all non-bonded interactions are excluded 200 | energygrp-excl = 201 | 202 | ; WALLS 203 | ; Number of walls, type, atom types, densities and box-z scale factor for Ewald 204 | nwall = 0 205 | wall-type = 9-3 206 | wall-r-linpot = -1 207 | wall-atomtype = 208 | wall-density = 209 | wall-ewald-zfac = 3 210 | 211 | ; COM PULLING 212 | pull = no 213 | 214 | ; AWH biasing 215 | awh = no 216 | 217 | ; ENFORCED ROTATION 218 | ; Enforced rotation: No or Yes 219 | rotation = no 220 | 221 | ; Group to display and/or manipulate in interactive MD session 222 | IMD-group = 223 | 224 | ; NMR refinement stuff 225 | ; Distance restraints type: No, Simple or Ensemble 226 | disre = No 227 | ; Force weighting of pairs in one distance restraint: Conservative or Equal 228 | disre-weighting = Conservative 229 | ; Use sqrt of the time averaged times the instantaneous violation 230 | disre-mixed = no 231 | disre-fc = 1000 232 | disre-tau = 0 233 | ; Output frequency for pair distances to energy file 234 | nstdisreout = 100 235 | ; Orientation restraints: No or Yes 236 | orire = no 237 | ; Orientation restraints force constant and tau for time averaging 238 | orire-fc = 0 239 | orire-tau = 0 240 | orire-fitgrp = 241 | ; Output frequency for trace(SD) and S to energy file 242 | nstorireout = 100 243 | 244 | ; Free energy variables 245 | free-energy = no 246 | couple-moltype = 247 | couple-lambda0 = vdw-q 248 | couple-lambda1 = vdw-q 249 | couple-intramol = no 250 | init-lambda = -1 251 | init-lambda-state = -1 252 | delta-lambda = 0 253 | nstdhdl = 50 254 | fep-lambdas = 255 | mass-lambdas = 256 | coul-lambdas = 257 | vdw-lambdas = 258 | bonded-lambdas = 259 | restraint-lambdas = 260 | temperature-lambdas = 261 | calc-lambda-neighbors = 1 262 | init-lambda-weights = 263 | dhdl-print-energy = no 264 | sc-function = beutler 265 | sc-alpha = 0 266 | sc-power = 1 267 | sc-r-power = 6 268 | sc-sigma = 0.3 269 | sc-coul = no 270 | sc-gapsys-scale-linpoint-lj = 0.85 271 | sc-gapsys-scale-linpoint-q = 0.3 272 | sc-gapsys-sigma-lj = 0.3 273 | separate-dhdl-file = yes 274 | dhdl-derivatives = yes 275 | dh_hist_size = 0 276 | dh_hist_spacing = 0.1 277 | 278 | ; Non-equilibrium MD stuff 279 | acc-grps = 280 | accelerate = 281 | freezegrps = 282 | freezedim = 283 | cos-acceleration = 0 284 | deform = 285 | 286 | ; simulated tempering variables 287 | simulated-tempering = no 288 | simulated-tempering-scaling = geometric 289 | sim-temp-low = 300 290 | sim-temp-high = 300 291 | 292 | ; Ion/water position swapping for computational electrophysiology setups 293 | ; Swap positions along direction: no, X, Y, Z 294 | swapcoords = no 295 | adress = no 296 | 297 | ; User defined thingies 298 | user1-grps = 299 | user2-grps = 300 | userint1 = 0 301 | userint2 = 0 302 | userint3 = 0 303 | userint4 = 0 304 | userreal1 = 0 305 | userreal2 = 0 306 | userreal3 = 0 307 | userreal4 = 0 308 | ; Electric fields 309 | ; Format for electric-field-x, etc. is: four real variables: 310 | ; amplitude (V/nm), frequency omega (1/ps), time for the pulse peak (ps), 311 | ; and sigma (ps) width of the pulse. Omega = 0 means static field, 312 | ; sigma = 0 means no pulse, leaving the field to be a cosine function. 313 | electric-field-x = 0 0 0 0 314 | electric-field-y = 0 0 0 0 315 | electric-field-z = 0 0 0 0 316 | 317 | ; Density guided simulation 318 | density-guided-simulation-active = false 319 | 320 | ; QM/MM with CP2K 321 | qmmm-cp2k-active = false 322 | -------------------------------------------------------------------------------- /water-in-salt-slit/NaCl_4M/npt.top: -------------------------------------------------------------------------------- 1 | [ defaults ] 2 | ; nbfunc comb-rule gen-pairs fudgeLJ fudgeQQ 3 | 1 2 no 1.0 0.833 4 | 5 | [ atomtypes ] 6 | ; salts parameters 7 | ; name at.num mass charge ptype sigma epsilon 8 | Na 11 22.990 0.0000 A 0.23100 0.45000 9 | Cl 17 35.450 0.0000 A 0.43000 0.42000 10 | O 8 15.9994 0.0000 A 0.386 0.12 11 | S 16 32.0600 0.0000 A 0.355 1.0465 12 | 13 | ; water paramters 14 | ; name at.num mass charge ptype sigma epsilon 15 | HW 1 1.008 0.0000 A 0.00000 0.00000 16 | OW 8 16.000 0.0000 A 0.31650 0.76849 17 | 18 | ; DUMMY atoms 19 | ; name at.num mass charge ptype sigma epsilon 20 | MW 0 0.000 0.0000 D 0.00000 0.00000 21 | 22 | 23 | 24 | [ bondtypes ] 25 | ; i j func b0 kb 26 | S O 1 0.15 3.7656e4 27 | 28 | [ angletypes ] 29 | ; i j func b0 kb 30 | O S O 1 109.5 520 31 | [ moleculetype ] 32 | ; molname nrexcl 33 | SOL 2 34 | 35 | [ atoms ] 36 | ; id at type res nr res name at name cg nr charge mass 37 | 1 OW 1 SOL OW 1 0 15.9994 38 | 2 HW 1 SOL HW1 1 0.527 1.0079 39 | 3 HW 1 SOL HW2 1 0.527 1.0079 40 | 4 MW 1 SOL MW 1 -1.054 0.0000 41 | 42 | [ settles ] 43 | ; i funct doh dhh 44 | 1 1 0.09572 0.15139 45 | 46 | [ virtual_sites3 ] 47 | ; Vsite from funct a b 48 | 4 1 2 3 1 0.089608 0.089608 49 | 50 | [ exclusions ] 51 | 1 2 3 4 52 | 2 1 3 4 53 | 3 1 2 4 54 | 4 1 2 3 55 | 56 | ; The position of the virtual site is computed as follows: 57 | ; 58 | ; O 59 | ; 60 | ; V 61 | ; 62 | ; H H 63 | ; 64 | ; const = distance (OV) / [ cos (angle(VOH)) * distance (OH) ] / 2 65 | ; = 0.0105 nm / [ cos (52.26 deg) * 0.09572 nm ] * 2 66 | ; = 0.17922 / 2 67 | ; = 0.089608 68 | ; 69 | ; Vsite pos x4 = x1 + a*(x2-x1) + b*(x3-x1) 70 | [ moleculetype ] 71 | ; molname nrexcl 72 | Na 1 73 | 74 | [ atoms ] 75 | ; id at type res nr residu name at name cg nr charge 76 | 1 Na 1 Na Na 1 1 77 | 78 | 79 | [ moleculetype ] 80 | ; molname nrexcl 81 | Nafi 1 82 | 83 | [ atoms ] 84 | ; id at type res nr residu name at name cg nr charge 85 | 1 Na 1 Na Na 1 1 86 | 87 | 88 | [ moleculetype ] 89 | ; molname nrexcl 90 | Naf 1 91 | 92 | [ atoms ] 93 | ; id at type res nr residu name at name cg nr charge 94 | 1 Na 1 Na Na 1 1 95 | 96 | [ moleculetype ] 97 | ; molname nrexcl 98 | Cl 1 99 | 100 | [ atoms ] 101 | ; id at type res nr residu name at name cg nr charge 102 | 1 Cl 1 Cl Cl 1 -1 103 | 104 | 105 | [ moleculetype ] 106 | ; molname nrexcl 107 | Clf 1 108 | 109 | [ atoms ] 110 | ; id at type res nr residu name at name cg nr charge 111 | 1 Cl 1 Cl Cl 1 -1 112 | 113 | [ position_restraints ] 114 | ; ai funct fcx fcy fcz 115 | 1 1 20000 20000 20000 ; restrains to a point 116 | 117 | [moleculetype] 118 | ; name nrexcl 119 | SO4 1 120 | 121 | [atoms] 122 | ;nr type resnr residu atom cgnr charge 123 | 1 O 1 SO4 O1 1 -1 15.9994 124 | 2 O 1 SO4 O2 1 -1 15.9994 125 | 3 O 1 SO4 O3 1 -1 15.9994 126 | 4 O 1 SO4 O4 1 -1 15.9994 127 | 5 S 1 SO4 S 1 2 32.0600 128 | 129 | [ bonds ] 130 | ; ai aj funct c0 c1 131 | 1 5 1 0.1520 3.7656e4 132 | 2 5 1 0.1520 3.7656e4 133 | 3 5 1 0.1520 3.7656e4 134 | 4 5 1 0.1520 3.7656e4 135 | 136 | [ angles ] 137 | ; ai aj ak funct angle fc 138 | 1 5 2 1 109.5 520 139 | 1 5 3 1 109.5 520 140 | 1 5 4 1 109.5 520 141 | 2 5 3 1 109.5 520 142 | 2 5 4 1 109.5 520 143 | 3 5 4 1 109.5 520 144 | 145 | [exclusions] 146 | 1 2 3 4 5 147 | 2 1 3 4 5 148 | 3 1 2 4 5 149 | 4 1 2 3 5 150 | 5 1 2 3 4 151 | 152 | [moleculetype] 153 | ; name nrexcl 154 | SO4fp 1 155 | 156 | [atoms] 157 | ;nr type resnr residu atom cgnr charge 158 | 1 O 1 SO4f O1 1 -1 15.9994 159 | 2 O 1 SO4f O2 1 -1 15.9994 160 | 3 O 1 SO4f O3 1 -1 15.9994 161 | 4 O 1 SO4f O4 1 -1 15.9994 162 | 5 S 1 SO4f S 1 2 32.0600 163 | 164 | [ bonds ] 165 | ; ai aj funct c0 c1 166 | 1 5 1 0.1520 3.7656e4 167 | 2 5 1 0.1520 3.7656e4 168 | 3 5 1 0.1520 3.7656e4 169 | 4 5 1 0.1520 3.7656e4 170 | 171 | [ angles ] 172 | ; ai aj ak funct angle fc 173 | 1 5 2 1 109.5 520 174 | 1 5 3 1 109.5 520 175 | 1 5 4 1 109.5 520 176 | 2 5 3 1 109.5 520 177 | 2 5 4 1 109.5 520 178 | 3 5 4 1 109.5 520 179 | 180 | [exclusions] 181 | 1 2 3 4 5 182 | 2 1 3 4 5 183 | 3 1 2 4 5 184 | 4 1 2 3 5 185 | 5 1 2 3 4 186 | 187 | ; Include Position restraint file 188 | 189 | 190 | 191 | 192 | 193 | [moleculetype] 194 | ; name nrexcl 195 | SO4fi 1 196 | 197 | [atoms] 198 | ;nr type resnr residu atom cgnr charge 199 | 1 O 1 SO4f O1 1 -1 15.9994 200 | 2 O 1 SO4f O2 1 -1 15.9994 201 | 3 O 1 SO4f O3 1 -1 15.9994 202 | 4 O 1 SO4f O4 1 -1 15.9994 203 | 5 S 1 SO4f S 1 2 32.0600 204 | 205 | [ bonds ] 206 | ; ai aj funct c0 c1 207 | 1 5 1 0.1520 3.7656e4 208 | 2 5 1 0.1520 3.7656e4 209 | 3 5 1 0.1520 3.7656e4 210 | 4 5 1 0.1520 3.7656e4 211 | 212 | [ angles ] 213 | ; ai aj ak funct angle fc 214 | 1 5 2 1 109.5 520 215 | 1 5 3 1 109.5 520 216 | 1 5 4 1 109.5 520 217 | 2 5 3 1 109.5 520 218 | 2 5 4 1 109.5 520 219 | 3 5 4 1 109.5 520 220 | 221 | [exclusions] 222 | 1 2 3 4 5 223 | 2 1 3 4 5 224 | 3 1 2 4 5 225 | 4 1 2 3 5 226 | 5 1 2 3 4 227 | 228 | 229 | 230 | 231 | [ System ] 232 | SO4Na2 slit 233 | 234 | [ Molecules ] 235 | 236 | Cl 526 237 | Clf 1 238 | Naf 392 239 | Na 135 240 | SOL 3731 241 | -------------------------------------------------------------------------------- /water-in-salt-slit/NaCl_4M/nvt.cpt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simongravelle/gromacs-input-files/0bb814cc9b2e3f357b95d96982b128edb5535689/water-in-salt-slit/NaCl_4M/nvt.cpt -------------------------------------------------------------------------------- /water-in-salt-slit/NaCl_4M/nvt.edr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simongravelle/gromacs-input-files/0bb814cc9b2e3f357b95d96982b128edb5535689/water-in-salt-slit/NaCl_4M/nvt.edr -------------------------------------------------------------------------------- /water-in-salt-slit/NaCl_4M/nvt.mdp: -------------------------------------------------------------------------------- 1 | ; 2 | ; File 'nvt.mdp' was generated 3 | ; By user: unknown (1862325) 4 | ; On host: bigfoot9 5 | ; At date: Tue May 16 11:40:44 2023 6 | ; 7 | ; Created by: 8 | ; :-) GROMACS - gmx grompp, 2023 (-: 9 | ; 10 | ; Executable: /home/gravells/softwares/gromacs-2023/build-gpu/bin/gmx 11 | ; Data prefix: /home/gravells/softwares/gromacs-2023 (source tree) 12 | ; Working dir: /bettik/gravells/water-in-salt-slit/NaCl_4M 13 | ; Command line: 14 | ; gmx grompp -f ../input/nvt.mdp -p topol.top -o nvt -pp nvt -po nvt -r conf.gro 15 | 16 | ; VARIOUS PREPROCESSING OPTIONS 17 | ; Preprocessor information: use cpp syntax. 18 | ; e.g.: -I/home/joe/doe -I/home/mary/roe 19 | include = 20 | ; e.g.: -DPOSRES -DFLEXIBLE (note these variable names are case sensitive) 21 | define = 22 | 23 | ; RUN CONTROL PARAMETERS 24 | integrator = md 25 | ; Start time and timestep in ps 26 | tinit = 0 27 | dt = 0.001 28 | nsteps = 50000 29 | ; For exact run continuation or redoing part of a run 30 | init-step = 0 31 | ; Part index is updated automatically on checkpointing (keeps files separate) 32 | simulation-part = 1 33 | ; Multiple time-stepping 34 | mts = no 35 | ; mode for center of mass motion removal 36 | comm_mode = linear 37 | ; number of steps for center of mass motion removal 38 | nstcomm = 100 39 | ; group(s) for center of mass motion removal 40 | comm_grps = system 41 | 42 | ; LANGEVIN DYNAMICS OPTIONS 43 | ; Friction coefficient (amu/ps) and random seed 44 | bd-fric = 0 45 | ld-seed = 48456 46 | 47 | ; ENERGY MINIMIZATION OPTIONS 48 | ; Force tolerance and initial step-size 49 | emtol = 10 50 | emstep = 0.01 51 | ; Max number of iterations in relax-shells 52 | niter = 20 53 | ; Step size (ps^2) for minimization of flexible constraints 54 | fcstep = 0 55 | ; Frequency of steepest descents steps when doing CG 56 | nstcgsteep = 1000 57 | nbfgscorr = 10 58 | 59 | ; TEST PARTICLE INSERTION OPTIONS 60 | rtpi = 0.05 61 | 62 | ; OUTPUT CONTROL OPTIONS 63 | ; Output frequency for coords (x), velocities (v) and forces (f) 64 | nstxout = 0 65 | nstvout = 0 66 | nstfout = 0 67 | ; Output frequency for energies to log file and energy file 68 | nstlog = 10000 69 | nstcalcenergy = 100 70 | nstenergy = 10000 71 | ; Output frequency and precision for .xtc file 72 | nstxout-compressed = 10000 73 | compressed-x-precision = 1000 74 | ; This selects the subset of atoms for the compressed 75 | ; trajectory file. You can select multiple groups. By 76 | ; default, all atoms will be written. 77 | compressed-x-grps = 78 | ; Selection of energy groups 79 | energygrps = 80 | 81 | ; NEIGHBORSEARCHING PARAMETERS 82 | ; cut-off scheme (Verlet: particle based cut-offs) 83 | cutoff-scheme = Verlet 84 | ; nblist update frequency 85 | nstlist = 10 86 | ; Periodic boundary conditions: xyz, no, xy 87 | pbc = xyz 88 | periodic-molecules = no 89 | ; Allowed energy error due to the Verlet buffer in kJ/mol/ps per atom, 90 | ; a value of -1 means: use rlist 91 | verlet-buffer-tolerance = 0.005 92 | ; nblist cut-off 93 | rlist = 1 94 | ; long-range cut-off for switched potentials 95 | 96 | ; OPTIONS FOR ELECTROSTATICS AND VDW 97 | ; Method for doing electrostatics 98 | coulombtype = pme 99 | coulomb-modifier = Potential-shift-Verlet 100 | rcoulomb-switch = 0 101 | rcoulomb = 1.4 102 | ; Relative dielectric constant for the medium and the reaction field 103 | epsilon-r = 1 104 | epsilon-rf = 0 105 | ; Method for doing Van der Waals 106 | vdw-type = Cut-off 107 | vdw-modifier = Potential-shift-Verlet 108 | ; cut-off lengths 109 | rvdw-switch = 0 110 | rvdw = 1.4 111 | ; Apply long range dispersion corrections for Energy and Pressure 112 | DispCorr = No 113 | ; Extension of the potential lookup tables beyond the cut-off 114 | table-extension = 1 115 | ; Separate tables between energy group pairs 116 | energygrp-table = 117 | ; Spacing for the PME/PPPM FFT grid 118 | fourierspacing = 0.1 119 | ; FFT grid size, when a value is 0 fourierspacing will be used 120 | fourier-nx = 0 121 | fourier-ny = 0 122 | fourier-nz = 0 123 | ; EWALD/PME/PPPM parameters 124 | pme-order = 4 125 | ewald-rtol = 1e-05 126 | ewald-rtol-lj = 0.001 127 | lj-pme-comb-rule = Geometric 128 | ewald-geometry = 3d 129 | epsilon-surface = 0 130 | implicit-solvent = no 131 | 132 | ; OPTIONS FOR WEAK COUPLING ALGORITHMS 133 | ensemble-temperature-setting = auto 134 | ensemble-temperature = -1 135 | ; Temperature coupling 136 | tcoupl = v-rescale 137 | nsttcouple = -1 138 | nhchainlength = 1 139 | print-nose-hoover-chain-variables = no 140 | ; Groups to couple separately 141 | tc-grps = Water non-Water 142 | ; Time constant (ps) and reference temperature (K) 143 | tau-t = 0.5 0.5 144 | ref-t = 293.15 293.15 145 | ; pressure coupling 146 | pcoupl = No 147 | pcoupltype = Isotropic 148 | nstpcouple = -1 149 | ; Time constant (ps), compressibility (1/bar) and reference P (bar) 150 | tau-p = 1 151 | compressibility = 152 | ref-p = 153 | ; Scaling of reference coordinates, No, All or COM 154 | refcoord-scaling = No 155 | 156 | ; OPTIONS FOR QMMM calculations 157 | QMMM = no 158 | ; Groups treated with MiMiC 159 | QMMM-grps = 160 | 161 | ; SIMULATED ANNEALING 162 | ; Type of annealing for each temperature group (no/single/periodic) 163 | annealing = 164 | ; Number of time points to use for specifying annealing in each group 165 | annealing-npoints = 166 | ; List of times at the annealing points for each group 167 | annealing-time = 168 | ; Temp. at each annealing point, for each group. 169 | annealing-temp = 170 | 171 | ; GENERATE VELOCITIES FOR STARTUP RUN 172 | gen-vel = yes 173 | gen-temp = 293.15 174 | gen-seed = -588259333 175 | 176 | ; OPTIONS FOR BONDS 177 | constraints = hbonds 178 | ; Type of constraint algorithm 179 | constraint-algorithm = lincs 180 | ; Do not constrain the start configuration 181 | continuation = no 182 | ; Use successive overrelaxation to reduce the number of shake iterations 183 | Shake-SOR = no 184 | ; Relative tolerance of shake 185 | shake-tol = 0.0001 186 | ; Highest order in the expansion of the constraint coupling matrix 187 | lincs-order = 4 188 | ; Number of iterations in the final step of LINCS. 1 is fine for 189 | ; normal simulations, but use 2 to conserve energy in NVE runs. 190 | ; For energy minimization with constraints it should be 4 to 8. 191 | lincs-iter = 1 192 | ; Lincs will write a warning to the stderr if in one step a bond 193 | ; rotates over more degrees than 194 | lincs-warnangle = 30 195 | ; Convert harmonic bonds to morse potentials 196 | morse = no 197 | 198 | ; ENERGY GROUP EXCLUSIONS 199 | ; Pairs of energy groups for which all non-bonded interactions are excluded 200 | energygrp-excl = 201 | 202 | ; WALLS 203 | ; Number of walls, type, atom types, densities and box-z scale factor for Ewald 204 | nwall = 0 205 | wall-type = 9-3 206 | wall-r-linpot = -1 207 | wall-atomtype = 208 | wall-density = 209 | wall-ewald-zfac = 3 210 | 211 | ; COM PULLING 212 | pull = no 213 | 214 | ; AWH biasing 215 | awh = no 216 | 217 | ; ENFORCED ROTATION 218 | ; Enforced rotation: No or Yes 219 | rotation = no 220 | 221 | ; Group to display and/or manipulate in interactive MD session 222 | IMD-group = 223 | 224 | ; NMR refinement stuff 225 | ; Distance restraints type: No, Simple or Ensemble 226 | disre = No 227 | ; Force weighting of pairs in one distance restraint: Conservative or Equal 228 | disre-weighting = Conservative 229 | ; Use sqrt of the time averaged times the instantaneous violation 230 | disre-mixed = no 231 | disre-fc = 1000 232 | disre-tau = 0 233 | ; Output frequency for pair distances to energy file 234 | nstdisreout = 100 235 | ; Orientation restraints: No or Yes 236 | orire = no 237 | ; Orientation restraints force constant and tau for time averaging 238 | orire-fc = 0 239 | orire-tau = 0 240 | orire-fitgrp = 241 | ; Output frequency for trace(SD) and S to energy file 242 | nstorireout = 100 243 | 244 | ; Free energy variables 245 | free-energy = no 246 | couple-moltype = 247 | couple-lambda0 = vdw-q 248 | couple-lambda1 = vdw-q 249 | couple-intramol = no 250 | init-lambda = -1 251 | init-lambda-state = -1 252 | delta-lambda = 0 253 | nstdhdl = 50 254 | fep-lambdas = 255 | mass-lambdas = 256 | coul-lambdas = 257 | vdw-lambdas = 258 | bonded-lambdas = 259 | restraint-lambdas = 260 | temperature-lambdas = 261 | calc-lambda-neighbors = 1 262 | init-lambda-weights = 263 | dhdl-print-energy = no 264 | sc-function = beutler 265 | sc-alpha = 0 266 | sc-power = 1 267 | sc-r-power = 6 268 | sc-sigma = 0.3 269 | sc-coul = no 270 | sc-gapsys-scale-linpoint-lj = 0.85 271 | sc-gapsys-scale-linpoint-q = 0.3 272 | sc-gapsys-sigma-lj = 0.3 273 | separate-dhdl-file = yes 274 | dhdl-derivatives = yes 275 | dh_hist_size = 0 276 | dh_hist_spacing = 0.1 277 | 278 | ; Non-equilibrium MD stuff 279 | acc-grps = 280 | accelerate = 281 | freezegrps = 282 | freezedim = 283 | cos-acceleration = 0 284 | deform = 285 | 286 | ; simulated tempering variables 287 | simulated-tempering = no 288 | simulated-tempering-scaling = geometric 289 | sim-temp-low = 300 290 | sim-temp-high = 300 291 | 292 | ; Ion/water position swapping for computational electrophysiology setups 293 | ; Swap positions along direction: no, X, Y, Z 294 | swapcoords = no 295 | adress = no 296 | 297 | ; User defined thingies 298 | user1-grps = 299 | user2-grps = 300 | userint1 = 0 301 | userint2 = 0 302 | userint3 = 0 303 | userint4 = 0 304 | userreal1 = 0 305 | userreal2 = 0 306 | userreal3 = 0 307 | userreal4 = 0 308 | ; Electric fields 309 | ; Format for electric-field-x, etc. is: four real variables: 310 | ; amplitude (V/nm), frequency omega (1/ps), time for the pulse peak (ps), 311 | ; and sigma (ps) width of the pulse. Omega = 0 means static field, 312 | ; sigma = 0 means no pulse, leaving the field to be a cosine function. 313 | electric-field-x = 0 0 0 0 314 | electric-field-y = 0 0 0 0 315 | electric-field-z = 0 0 0 0 316 | 317 | ; Density guided simulation 318 | density-guided-simulation-active = false 319 | 320 | ; QM/MM with CP2K 321 | qmmm-cp2k-active = false 322 | -------------------------------------------------------------------------------- /water-in-salt-slit/NaCl_4M/nvt.top: -------------------------------------------------------------------------------- 1 | [ defaults ] 2 | ; nbfunc comb-rule gen-pairs fudgeLJ fudgeQQ 3 | 1 2 no 1.0 0.833 4 | 5 | [ atomtypes ] 6 | ; salts parameters 7 | ; name at.num mass charge ptype sigma epsilon 8 | Na 11 22.990 0.0000 A 0.23100 0.45000 9 | Cl 17 35.450 0.0000 A 0.43000 0.42000 10 | O 8 15.9994 0.0000 A 0.386 0.12 11 | S 16 32.0600 0.0000 A 0.355 1.0465 12 | 13 | ; water paramters 14 | ; name at.num mass charge ptype sigma epsilon 15 | HW 1 1.008 0.0000 A 0.00000 0.00000 16 | OW 8 16.000 0.0000 A 0.31650 0.76849 17 | 18 | ; DUMMY atoms 19 | ; name at.num mass charge ptype sigma epsilon 20 | MW 0 0.000 0.0000 D 0.00000 0.00000 21 | 22 | 23 | 24 | [ bondtypes ] 25 | ; i j func b0 kb 26 | S O 1 0.15 3.7656e4 27 | 28 | [ angletypes ] 29 | ; i j func b0 kb 30 | O S O 1 109.5 520 31 | [ moleculetype ] 32 | ; molname nrexcl 33 | SOL 2 34 | 35 | [ atoms ] 36 | ; id at type res nr res name at name cg nr charge mass 37 | 1 OW 1 SOL OW 1 0 15.9994 38 | 2 HW 1 SOL HW1 1 0.527 1.0079 39 | 3 HW 1 SOL HW2 1 0.527 1.0079 40 | 4 MW 1 SOL MW 1 -1.054 0.0000 41 | 42 | [ settles ] 43 | ; i funct doh dhh 44 | 1 1 0.09572 0.15139 45 | 46 | [ virtual_sites3 ] 47 | ; Vsite from funct a b 48 | 4 1 2 3 1 0.089608 0.089608 49 | 50 | [ exclusions ] 51 | 1 2 3 4 52 | 2 1 3 4 53 | 3 1 2 4 54 | 4 1 2 3 55 | 56 | ; The position of the virtual site is computed as follows: 57 | ; 58 | ; O 59 | ; 60 | ; V 61 | ; 62 | ; H H 63 | ; 64 | ; const = distance (OV) / [ cos (angle(VOH)) * distance (OH) ] / 2 65 | ; = 0.0105 nm / [ cos (52.26 deg) * 0.09572 nm ] * 2 66 | ; = 0.17922 / 2 67 | ; = 0.089608 68 | ; 69 | ; Vsite pos x4 = x1 + a*(x2-x1) + b*(x3-x1) 70 | [ moleculetype ] 71 | ; molname nrexcl 72 | Na 1 73 | 74 | [ atoms ] 75 | ; id at type res nr residu name at name cg nr charge 76 | 1 Na 1 Na Na 1 1 77 | 78 | 79 | [ moleculetype ] 80 | ; molname nrexcl 81 | Nafi 1 82 | 83 | [ atoms ] 84 | ; id at type res nr residu name at name cg nr charge 85 | 1 Na 1 Na Na 1 1 86 | 87 | 88 | [ moleculetype ] 89 | ; molname nrexcl 90 | Naf 1 91 | 92 | [ atoms ] 93 | ; id at type res nr residu name at name cg nr charge 94 | 1 Na 1 Na Na 1 1 95 | 96 | [ moleculetype ] 97 | ; molname nrexcl 98 | Cl 1 99 | 100 | [ atoms ] 101 | ; id at type res nr residu name at name cg nr charge 102 | 1 Cl 1 Cl Cl 1 -1 103 | 104 | 105 | [ moleculetype ] 106 | ; molname nrexcl 107 | Clf 1 108 | 109 | [ atoms ] 110 | ; id at type res nr residu name at name cg nr charge 111 | 1 Cl 1 Cl Cl 1 -1 112 | 113 | [ position_restraints ] 114 | ; ai funct fcx fcy fcz 115 | 1 1 20000 20000 20000 ; restrains to a point 116 | 117 | [moleculetype] 118 | ; name nrexcl 119 | SO4 1 120 | 121 | [atoms] 122 | ;nr type resnr residu atom cgnr charge 123 | 1 O 1 SO4 O1 1 -1 15.9994 124 | 2 O 1 SO4 O2 1 -1 15.9994 125 | 3 O 1 SO4 O3 1 -1 15.9994 126 | 4 O 1 SO4 O4 1 -1 15.9994 127 | 5 S 1 SO4 S 1 2 32.0600 128 | 129 | [ bonds ] 130 | ; ai aj funct c0 c1 131 | 1 5 1 0.1520 3.7656e4 132 | 2 5 1 0.1520 3.7656e4 133 | 3 5 1 0.1520 3.7656e4 134 | 4 5 1 0.1520 3.7656e4 135 | 136 | [ angles ] 137 | ; ai aj ak funct angle fc 138 | 1 5 2 1 109.5 520 139 | 1 5 3 1 109.5 520 140 | 1 5 4 1 109.5 520 141 | 2 5 3 1 109.5 520 142 | 2 5 4 1 109.5 520 143 | 3 5 4 1 109.5 520 144 | 145 | [exclusions] 146 | 1 2 3 4 5 147 | 2 1 3 4 5 148 | 3 1 2 4 5 149 | 4 1 2 3 5 150 | 5 1 2 3 4 151 | 152 | [moleculetype] 153 | ; name nrexcl 154 | SO4fp 1 155 | 156 | [atoms] 157 | ;nr type resnr residu atom cgnr charge 158 | 1 O 1 SO4f O1 1 -1 15.9994 159 | 2 O 1 SO4f O2 1 -1 15.9994 160 | 3 O 1 SO4f O3 1 -1 15.9994 161 | 4 O 1 SO4f O4 1 -1 15.9994 162 | 5 S 1 SO4f S 1 2 32.0600 163 | 164 | [ bonds ] 165 | ; ai aj funct c0 c1 166 | 1 5 1 0.1520 3.7656e4 167 | 2 5 1 0.1520 3.7656e4 168 | 3 5 1 0.1520 3.7656e4 169 | 4 5 1 0.1520 3.7656e4 170 | 171 | [ angles ] 172 | ; ai aj ak funct angle fc 173 | 1 5 2 1 109.5 520 174 | 1 5 3 1 109.5 520 175 | 1 5 4 1 109.5 520 176 | 2 5 3 1 109.5 520 177 | 2 5 4 1 109.5 520 178 | 3 5 4 1 109.5 520 179 | 180 | [exclusions] 181 | 1 2 3 4 5 182 | 2 1 3 4 5 183 | 3 1 2 4 5 184 | 4 1 2 3 5 185 | 5 1 2 3 4 186 | 187 | ; Include Position restraint file 188 | 189 | 190 | 191 | 192 | 193 | [moleculetype] 194 | ; name nrexcl 195 | SO4fi 1 196 | 197 | [atoms] 198 | ;nr type resnr residu atom cgnr charge 199 | 1 O 1 SO4f O1 1 -1 15.9994 200 | 2 O 1 SO4f O2 1 -1 15.9994 201 | 3 O 1 SO4f O3 1 -1 15.9994 202 | 4 O 1 SO4f O4 1 -1 15.9994 203 | 5 S 1 SO4f S 1 2 32.0600 204 | 205 | [ bonds ] 206 | ; ai aj funct c0 c1 207 | 1 5 1 0.1520 3.7656e4 208 | 2 5 1 0.1520 3.7656e4 209 | 3 5 1 0.1520 3.7656e4 210 | 4 5 1 0.1520 3.7656e4 211 | 212 | [ angles ] 213 | ; ai aj ak funct angle fc 214 | 1 5 2 1 109.5 520 215 | 1 5 3 1 109.5 520 216 | 1 5 4 1 109.5 520 217 | 2 5 3 1 109.5 520 218 | 2 5 4 1 109.5 520 219 | 3 5 4 1 109.5 520 220 | 221 | [exclusions] 222 | 1 2 3 4 5 223 | 2 1 3 4 5 224 | 3 1 2 4 5 225 | 4 1 2 3 5 226 | 5 1 2 3 4 227 | 228 | 229 | 230 | 231 | [ System ] 232 | SO4Na2 slit 233 | 234 | [ Molecules ] 235 | 236 | Cl 526 237 | Clf 1 238 | Naf 392 239 | Na 135 240 | SOL 3731 241 | -------------------------------------------------------------------------------- /water-in-salt-slit/NaCl_4M/nvt.tpr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simongravelle/gromacs-input-files/0bb814cc9b2e3f357b95d96982b128edb5535689/water-in-salt-slit/NaCl_4M/nvt.tpr -------------------------------------------------------------------------------- /water-in-salt-slit/NaCl_4M/run_bigfoot_pore.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #OAR -n mixture-nanopore 3 | #OAR -l /nodes=1/gpu=1/cpu=1/core=8,walltime=48:00:00 4 | #OAR -p gpumodel='A100' 5 | #OAR --stdout log.out 6 | #OAR --stderr log.err 7 | #OAR --project tamtam 8 | 9 | export GMX_MAXBACKUP=-1 10 | 11 | gmx=/home/gravells/softwares/gromacs-2023/build-gpu/bin/gmx 12 | 13 | #${gmx} grompp -f ../input/nvt.mdp -p topol.top -o nvt -pp nvt -po nvt -r conf.gro 14 | #${gmx} mdrun -deffnm nvt -v -rdd 1 -nt 8 -pin on 15 | #cp nvt.gro conf.gro 16 | 17 | ${gmx} grompp -f ../input/npt.mdp -p topol.top -o npt -pp npt -po npt -r conf.gro -maxwarn 2 18 | ${gmx} mdrun -deffnm npt -v -rdd 1 -nt 8 -pin on 19 | cp npt.gro conf.gro 20 | 21 | -------------------------------------------------------------------------------- /water-in-salt-slit/NaCl_4M/runall.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # path to gromacs 4 | gmx=gmx 5 | 6 | ${gmx} grompp -f ../input/nvt.mdp -o nvt -pp nvt -po nvt -r conf.gro 7 | ${gmx} mdrun -v -deffnm nvt -nt 12 8 | mv nvt.gro conf.gro 9 | 10 | ${gmx} grompp -f ../input/npt.mdp -o npt -pp npt -po npt -r conf.gro 11 | ${gmx} mdrun -v -deffnm npt -nt 12 12 | mv npt.gro conf.gro 13 | 14 | ${gmx} grompp -f ../input/prodHR.mdp -o prodHR -pp prodHR -po prodHR -r conf.gro 15 | ${gmx} mdrun -v -deffnm prodHR -nt 12 16 | 17 | ${gmx} grompp -f ../input/prodLR.mdp -o prodLR -pp prodLR -po prodLR -r conf.gro 18 | ${gmx} mdrun -v -deffnm prodLR -nt 12 19 | 20 | -------------------------------------------------------------------------------- /water-in-salt-slit/NaCl_4M/topol.top: -------------------------------------------------------------------------------- 1 | #include "../ff/forcefield.itp" 2 | #include "../ff/tip4peps.itp" 3 | #include "../ff/ions.itp" 4 | 5 | [ System ] 6 | SO4Na2 slit 7 | 8 | [ Molecules ] 9 | 10 | Cl 526 11 | Clf 1 12 | Naf 392 13 | Na 135 14 | SOL 3731 15 | -------------------------------------------------------------------------------- /water-in-salt-slit/README.md: -------------------------------------------------------------------------------- 1 | # Molecular simulation scripts for bulk solutions 2 | 3 | This dataset contains GROMACS files used in NMR Investigation of Water in Salt Crusts: Insights from Experiments and Molecular Simulations by Simon Gravelle, Sabina Haber-Pohlmeier, Carlos Mattea, Siegfried Stapf, Christian Holm, and Alexander Schlaich 4 | 5 | The ff/ folder contains the force field data, the input/ folder the GROMACS mdp files, and the NaCl_1M/ and Na2SO4_1M folders are 6 | two examples of configuration files for performing simulation at concentration 1M. 7 | 8 | Within both NaCl_1M/ and Na2SO4_1M folders, a Python file named ConfigurationGenerator allows to regenerate the initial conf.gro and topol.top files with a given salt concentration. 9 | 10 | -------------------------------------------------------------------------------- /water-in-salt-slit/ff/atomtypes.atp: -------------------------------------------------------------------------------- 1 | Na 22.99000 ; sodium 2 | Cl 35.45000 ; chlorine 3 | HW 1.00800 ; water hydrogen 4 | OW 16.00000 ; TIP4P epsilon oxygen 5 | MW 0.00000 ; Virtual site for tip4p water point charge 6 | O 15.9994 ; O SO4 7 | S 32.0600 ; S SO4 8 | -------------------------------------------------------------------------------- /water-in-salt-slit/ff/ffbonded.itp: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | [ bondtypes ] 5 | ; i j func b0 kb 6 | S O 1 0.15 3.7656e4 7 | 8 | [ angletypes ] 9 | ; i j func b0 kb 10 | O S O 1 109.5 520 11 | -------------------------------------------------------------------------------- /water-in-salt-slit/ff/ffnonbonded.itp: -------------------------------------------------------------------------------- 1 | [ atomtypes ] 2 | ; salts parameters 3 | ; name at.num mass charge ptype sigma epsilon 4 | Na 11 22.990 0.0000 A 0.23100 0.45000 5 | Cl 17 35.450 0.0000 A 0.43000 0.42000 6 | O 8 15.9994 0.0000 A 0.386 0.12 7 | S 16 32.0600 0.0000 A 0.355 1.0465 8 | 9 | ; water paramters 10 | ; name at.num mass charge ptype sigma epsilon 11 | HW 1 1.008 0.0000 A 0.00000 0.00000 12 | OW 8 16.000 0.0000 A 0.31650 0.76849 13 | 14 | ; DUMMY atoms 15 | ; name at.num mass charge ptype sigma epsilon 16 | MW 0 0.000 0.0000 D 0.00000 0.00000 17 | -------------------------------------------------------------------------------- /water-in-salt-slit/ff/forcefield.itp: -------------------------------------------------------------------------------- 1 | [ defaults ] 2 | ; nbfunc comb-rule gen-pairs fudgeLJ fudgeQQ 3 | 1 2 no 1.0 0.833 4 | 5 | #include "ffnonbonded.itp" 6 | #include "ffbonded.itp" 7 | -------------------------------------------------------------------------------- /water-in-salt-slit/ff/ions.itp: -------------------------------------------------------------------------------- 1 | [ moleculetype ] 2 | ; molname nrexcl 3 | Na 1 4 | 5 | [ atoms ] 6 | ; id at type res nr residu name at name cg nr charge 7 | 1 Na 1 Na Na 1 1 8 | 9 | #ifdef POSRES_ION 10 | [ position_restraints ] 11 | ; ai funct fcx fcy fcz 12 | 1 1 0 0 1000 13 | #endif 14 | 15 | [ moleculetype ] 16 | ; molname nrexcl 17 | Nafi 1 18 | 19 | [ atoms ] 20 | ; id at type res nr residu name at name cg nr charge 21 | 1 Na 1 Na Na 1 1 22 | 23 | #ifdef POSRESini 24 | [ position_restraints ] 25 | ; ai funct fcx fcy fcz 26 | 1 1 1000 1000 1000 27 | #endif 28 | 29 | [ moleculetype ] 30 | ; molname nrexcl 31 | Naf 1 32 | 33 | [ atoms ] 34 | ; id at type res nr residu name at name cg nr charge 35 | 1 Na 1 Na Na 1 1 36 | 37 | [ moleculetype ] 38 | ; molname nrexcl 39 | Cl 1 40 | 41 | [ atoms ] 42 | ; id at type res nr residu name at name cg nr charge 43 | 1 Cl 1 Cl Cl 1 -1 44 | 45 | #ifdef POSRES_ION 46 | 47 | [ position_restraints ] 48 | ; ai funct fcx fcy fcz 49 | 1 1 1000 1000 1000 ; restrains to a point 50 | 51 | #endif 52 | 53 | [ moleculetype ] 54 | ; molname nrexcl 55 | Clf 1 56 | 57 | [ atoms ] 58 | ; id at type res nr residu name at name cg nr charge 59 | 1 Cl 1 Cl Cl 1 -1 60 | 61 | [ position_restraints ] 62 | ; ai funct fcx fcy fcz 63 | 1 1 20000 20000 20000 ; restrains to a point 64 | 65 | [moleculetype] 66 | ; name nrexcl 67 | SO4 1 68 | 69 | [atoms] 70 | ;nr type resnr residu atom cgnr charge 71 | 1 O 1 SO4 O1 1 -1 15.9994 72 | 2 O 1 SO4 O2 1 -1 15.9994 73 | 3 O 1 SO4 O3 1 -1 15.9994 74 | 4 O 1 SO4 O4 1 -1 15.9994 75 | 5 S 1 SO4 S 1 2 32.0600 76 | 77 | [ bonds ] 78 | ; ai aj funct c0 c1 79 | 1 5 1 0.1520 3.7656e4 80 | 2 5 1 0.1520 3.7656e4 81 | 3 5 1 0.1520 3.7656e4 82 | 4 5 1 0.1520 3.7656e4 83 | 84 | [ angles ] 85 | ; ai aj ak funct angle fc 86 | 1 5 2 1 109.5 520 87 | 1 5 3 1 109.5 520 88 | 1 5 4 1 109.5 520 89 | 2 5 3 1 109.5 520 90 | 2 5 4 1 109.5 520 91 | 3 5 4 1 109.5 520 92 | 93 | [exclusions] 94 | 1 2 3 4 5 95 | 2 1 3 4 5 96 | 3 1 2 4 5 97 | 4 1 2 3 5 98 | 5 1 2 3 4 99 | 100 | [moleculetype] 101 | ; name nrexcl 102 | SO4fp 1 103 | 104 | [atoms] 105 | ;nr type resnr residu atom cgnr charge 106 | 1 O 1 SO4f O1 1 -1 15.9994 107 | 2 O 1 SO4f O2 1 -1 15.9994 108 | 3 O 1 SO4f O3 1 -1 15.9994 109 | 4 O 1 SO4f O4 1 -1 15.9994 110 | 5 S 1 SO4f S 1 2 32.0600 111 | 112 | [ bonds ] 113 | ; ai aj funct c0 c1 114 | 1 5 1 0.1520 3.7656e4 115 | 2 5 1 0.1520 3.7656e4 116 | 3 5 1 0.1520 3.7656e4 117 | 4 5 1 0.1520 3.7656e4 118 | 119 | [ angles ] 120 | ; ai aj ak funct angle fc 121 | 1 5 2 1 109.5 520 122 | 1 5 3 1 109.5 520 123 | 1 5 4 1 109.5 520 124 | 2 5 3 1 109.5 520 125 | 2 5 4 1 109.5 520 126 | 3 5 4 1 109.5 520 127 | 128 | [exclusions] 129 | 1 2 3 4 5 130 | 2 1 3 4 5 131 | 3 1 2 4 5 132 | 4 1 2 3 5 133 | 5 1 2 3 4 134 | 135 | ; Include Position restraint file 136 | 137 | #ifdef POSRES 138 | #include "posres.itp" 139 | #endif 140 | 141 | 142 | 143 | 144 | [moleculetype] 145 | ; name nrexcl 146 | SO4fi 1 147 | 148 | [atoms] 149 | ;nr type resnr residu atom cgnr charge 150 | 1 O 1 SO4f O1 1 -1 15.9994 151 | 2 O 1 SO4f O2 1 -1 15.9994 152 | 3 O 1 SO4f O3 1 -1 15.9994 153 | 4 O 1 SO4f O4 1 -1 15.9994 154 | 5 S 1 SO4f S 1 2 32.0600 155 | 156 | [ bonds ] 157 | ; ai aj funct c0 c1 158 | 1 5 1 0.1520 3.7656e4 159 | 2 5 1 0.1520 3.7656e4 160 | 3 5 1 0.1520 3.7656e4 161 | 4 5 1 0.1520 3.7656e4 162 | 163 | [ angles ] 164 | ; ai aj ak funct angle fc 165 | 1 5 2 1 109.5 520 166 | 1 5 3 1 109.5 520 167 | 1 5 4 1 109.5 520 168 | 2 5 3 1 109.5 520 169 | 2 5 4 1 109.5 520 170 | 3 5 4 1 109.5 520 171 | 172 | [exclusions] 173 | 1 2 3 4 5 174 | 2 1 3 4 5 175 | 3 1 2 4 5 176 | 4 1 2 3 5 177 | 5 1 2 3 4 178 | 179 | #ifdef POSRESini 180 | [ position_restraints ] 181 | ; ai funct fcx fcy fcz 182 | 1 1 1000 1000 1000 183 | 2 1 1000 1000 1000 184 | 3 1 1000 1000 1000 185 | 4 1 1000 1000 1000 186 | 5 1 1000 1000 1000 187 | #endif 188 | 189 | 190 | -------------------------------------------------------------------------------- /water-in-salt-slit/ff/molecules.rtp: -------------------------------------------------------------------------------- 1 | 2 | [ HO4 ] 3 | [ atoms ] 4 | OW OW 0.00 0 5 | HW1 HW 0.52 0 6 | HW2 HW 0.52 0 7 | MW MW -1.04 0 8 | [ bonds ] 9 | OW HW1 10 | OW HW2 11 | 12 | [ Na ] 13 | [ atoms ] 14 | Na Na 1.00000 1 15 | 16 | [ Cl ] 17 | [ atoms ] 18 | Cl Cl -1.00000 1 19 | 20 | [ SO4 ] 21 | [ atoms ] 22 | O1 O -1 1 23 | O2 O -1 1 24 | O3 O -1 1 25 | O4 O -1 1 26 | S S 2 1 27 | 28 | [ bonds ] 29 | S O1 30 | S O2 31 | S O3 32 | S O4 33 | 34 | [ angles ] 35 | O1 S O2 36 | O1 S O3 37 | O1 S O4 38 | O2 S O3 39 | O2 S O4 40 | O3 S O4 41 | 42 | [ exclusions ] 43 | O2 O3 O4 S 44 | O1 O3 O4 S 45 | O1 O2 O4 S 46 | O1 O2 O3 S 47 | O1 O2 O3 O4 48 | -------------------------------------------------------------------------------- /water-in-salt-slit/ff/tip4peps.itp: -------------------------------------------------------------------------------- 1 | [ moleculetype ] 2 | ; molname nrexcl 3 | SOL 2 4 | 5 | [ atoms ] 6 | ; id at type res nr res name at name cg nr charge mass 7 | 1 OW 1 SOL OW 1 0 15.9994 8 | 2 HW 1 SOL HW1 1 0.527 1.0079 9 | 3 HW 1 SOL HW2 1 0.527 1.0079 10 | 4 MW 1 SOL MW 1 -1.054 0.0000 11 | 12 | [ settles ] 13 | ; i funct doh dhh 14 | 1 1 0.09572 0.15139 15 | 16 | [ virtual_sites3 ] 17 | ; Vsite from funct a b 18 | 4 1 2 3 1 0.089608 0.089608 19 | 20 | [ exclusions ] 21 | 1 2 3 4 22 | 2 1 3 4 23 | 3 1 2 4 24 | 4 1 2 3 25 | 26 | ; The position of the virtual site is computed as follows: 27 | ; 28 | ; O 29 | ; 30 | ; V 31 | ; 32 | ; H H 33 | ; 34 | ; const = distance (OV) / [ cos (angle(VOH)) * distance (OH) ] / 2 35 | ; = 0.0105 nm / [ cos (52.26 deg) * 0.09572 nm ] * 2 36 | ; = 0.17922 / 2 37 | ; = 0.089608 38 | ; 39 | ; Vsite pos x4 = x1 + a*(x2-x1) + b*(x3-x1) 40 | -------------------------------------------------------------------------------- /water-in-salt-slit/input/npt.mdp: -------------------------------------------------------------------------------- 1 | ;======================== running ============= ; description 2 | integrator = md ; leap-frog algorithm for integrating Newton’s equations of motion. 3 | nsteps = 50000000 ; maximum number of steps to integrate or minimize 4 | ; use 50 ns when the salt concentration inside the pore is larger than 0, otherwise 5 ns are enough 5 | dt = 0.001 ; time step for integration (1 fs) 6 | comm_mode = linear ; remove center of mass translation 7 | comm_grps = system ; group(s) for center of mass motion removal 8 | gen-vel = no ; generate velocities according to a Maxwell distribution 9 | gen-temp = 293.15 ; temperature for Maxwell distribution (K) 10 | 11 | ;======================== neighbor searching == ; description 12 | cutoff-scheme = Verlet ; generate a pair list with buffering 13 | nstlist = 10 ; frequency to update the neighbor list 14 | ns_type = grid 15 | 16 | ;======================== output ============== ; description 17 | nstlog = 200000 ; number of steps that elapse between writing energies to the log file 18 | nstenergy = 200000 ; number of steps that elapse between writing energies to energy file 19 | nstxout-compressed = 200000 ; frequency to write coordinates to xtc trajectory 20 | 21 | ;======================== van der Waals ======= ; description 22 | vdw-type = Cut-off ; plain cut-off with rlist >= rvdw 23 | rvdw = 1.4 ; distance for the LJ cut-off (nm) 24 | 25 | ; ======================= electrostatics ======= ; description 26 | coulombtype = pme ; fast smooth Particle-Mesh Ewald (SPME) electrostatics 27 | fourierspacing = 0.1 ; this should give an accuracy of about 2-3*10^-4 28 | pme-order = 4 ; interpolation order for PME (4 = cubic interpolation) 29 | rcoulomb = 1.4 ; distance for the Coulomb cut-off (nm) 30 | 31 | ; ======================= constraints ========= ; description 32 | constraint-algorithm = lincs ; more stable and faster than SHAKE 33 | constraints = hbonds ; convert the bonds with H-atoms to constraints 34 | continuation = yes ; apply or not constraints to the start configuration 35 | 36 | ; ======================= temp. coupling ======= ; description 37 | tcoupl = v-rescale ; Berendsen + stochastic term = proper canonical ensemble 38 | ld-seed = 48456 ; seed 39 | tc-grps = Water non-Water ; groups to couple to separate temperature baths 40 | tau-t = 0.5 0.5 ; time constant for coupling (ps) 41 | ref-t = 293.15 293.15 ; reference temperature for coupling (K) 42 | nhchainlength = 1 ; number of chained Nose-Hoover thermostats 43 | 44 | ; ======================= press. coupling ===== ; description 45 | pcoupl = berendsen ; exponential relaxation pressure coupling with time constant 46 | Pcoupltype = anisotropic ; isotropic pressure coupling 47 | tau_p = 1. ; time constant for pressure coupling (ps) 48 | ref_p = 1. 1. 1. 0. 0. 0. ; reference pressure for coupling (bar) 49 | compressibility = 4.5e-5 4.5e-5 4.5e-5 0 0 0 ; compressibility (bar-1) 50 | -------------------------------------------------------------------------------- /water-in-salt-slit/input/nvt.mdp: -------------------------------------------------------------------------------- 1 | ;======================== running ============= ; description 2 | integrator = md ; leap-frog algorithm for integrating Newton’s equations of motion. 3 | nsteps = 50000 ; maximum number of steps to integrate or minimize 4 | dt = 0.001 ; time step for integration (1 fs) 5 | comm_mode = linear ; remove center of mass translation 6 | comm_grps = system ; group(s) for center of mass motion removal 7 | gen-vel = yes ; generate velocities according to a Maxwell distribution 8 | gen-temp = 293.15 ; temperature for Maxwell distribution (K) 9 | 10 | ;======================== neighbor searching == ; description 11 | cutoff-scheme = Verlet ; generate a pair list with buffering 12 | nstlist = 10 ; frequency to update the neighbor list 13 | ns_type = grid 14 | 15 | ;======================== output ============== ; description 16 | nstlog = 10000 ; number of steps that elapse between writing energies to the log file 17 | nstenergy = 10000 ; number of steps that elapse between writing energies to energy file 18 | nstxout-compressed = 10000 ; frequency to write coordinates to xtc trajectory 19 | 20 | ;======================== van der Waals ======= ; description 21 | vdw-type = Cut-off ; plain cut-off with rlist >= rvdw 22 | rvdw = 1.4 ; distance for the LJ cut-off (nm) 23 | 24 | ; ======================= electrostatics ======= ; description 25 | coulombtype = pme ; fast smooth Particle-Mesh Ewald (SPME) electrostatics 26 | fourierspacing = 0.1 ; this should give an accuracy of about 2-3*10^-4 27 | pme-order = 4 ; interpolation order for PME (4 = cubic interpolation) 28 | rcoulomb = 1.4 ; distance for the Coulomb cut-off (nm) 29 | 30 | ; ======================= constraints ========= ; description 31 | constraint-algorithm = lincs ; more stable and faster than SHAKE 32 | constraints = hbonds ; convert the bonds with H-atoms to constraints 33 | continuation = no ; apply or not constraints to the start configuration 34 | 35 | ; ======================= temp. coupling ======= ; description 36 | tcoupl = v-rescale ; Berendsen + stochastic term = proper canonical ensemble 37 | ld-seed = 48456 ; seed 38 | tc-grps = Water non-Water ; groups to couple to separate temperature baths 39 | tau-t = 0.5 0.5 ; time constant for coupling (ps) 40 | ref-t = 293.15 293.15 ; reference temperature for coupling (K) 41 | nhchainlength = 1 ; number of chained Nose-Hoover thermostats 42 | -------------------------------------------------------------------------------- /water-in-salt-slit/input/prodHR.mdp: -------------------------------------------------------------------------------- 1 | ;======================== running ============= ; description 2 | integrator = md ; leap-frog algorithm for integrating Newton’s equations of motion. 3 | nsteps = 2000000 ; maximum number of steps to integrate or minimize (2 ns) 4 | dt = 0.001 ; time step for integration (1 fs) 5 | comm_mode = linear ; remove center of mass translation 6 | comm_grps = system ; group(s) for center of mass motion removal 7 | gen-vel = no ; generate velocities according to a Maxwell distribution 8 | gen-temp = 293.15 ; temperature for Maxwell distribution (K) 9 | 10 | ;======================== neighbor searching == ; description 11 | cutoff-scheme = Verlet ; generate a pair list with buffering 12 | nstlist = 10 ; frequency to update the neighbor list 13 | ns_type = grid 14 | 15 | ;======================== output ============== ; description 16 | nstlog = 10000 ; number of steps that elapse between writing energies to the log file 17 | nstenergy = 10000 ; number of steps that elapse between writing energies to energy file 18 | nstxout-compressed = 50 ; frequency to write coordinates to xtc trajectory 19 | 20 | ;======================== van der Waals ======= ; description 21 | vdw-type = Cut-off ; plain cut-off with rlist >= rvdw 22 | rvdw = 1.4 ; distance for the LJ cut-off (nm) 23 | 24 | ; ======================= electrostatics ======= ; description 25 | coulombtype = pme ; fast smooth Particle-Mesh Ewald (SPME) electrostatics 26 | fourierspacing = 0.1 ; this should give an accuracy of about 2-3*10^-4 27 | pme-order = 4 ; interpolation order for PME (4 = cubic interpolation) 28 | rcoulomb = 1.4 ; distance for the Coulomb cut-off (nm) 29 | 30 | ; ======================= constraints ========= ; description 31 | constraint-algorithm = lincs ; more stable and faster than SHAKE 32 | constraints = hbonds ; convert the bonds with H-atoms to constraints 33 | continuation = yes ; apply or not constraints to the start configuration 34 | 35 | ; ======================= temp. coupling ======= ; description 36 | tcoupl = v-rescale ; Berendsen + stochastic term = proper canonical ensemble 37 | ld-seed = 48456 ; seed 38 | tc-grps = Water non-Water ; groups to couple to separate temperature baths 39 | tau-t = 0.5 0.5 ; time constant for coupling (ps) 40 | ref-t = 293.15 293.15 ; reference temperature for coupling (K) 41 | nhchainlength = 1 ; number of chained Nose-Hoover thermostats 42 | 43 | -------------------------------------------------------------------------------- /water-in-salt-slit/input/prodLR.mdp: -------------------------------------------------------------------------------- 1 | ;======================== running ============= ; description 2 | integrator = md ; leap-frog algorithm for integrating Newton’s equations of motion. 3 | nsteps = 200000000 ; maximum number of steps to integrate or minimize (200 ns) 4 | dt = 0.001 ; time step for integration (1 fs) 5 | comm_mode = linear ; remove center of mass translation 6 | comm_grps = system ; group(s) for center of mass motion removal 7 | gen-vel = no ; generate velocities according to a Maxwell distribution 8 | gen-temp = 293.15 ; temperature for Maxwell distribution (K) 9 | 10 | ;======================== neighbor searching == ; description 11 | cutoff-scheme = Verlet ; generate a pair list with buffering 12 | nstlist = 10 ; frequency to update the neighbor list 13 | ns_type = grid 14 | 15 | ;======================== output ============== ; description 16 | nstlog = 1000000 ; number of steps that elapse between writing energies to the log file 17 | nstenergy = 1000000 ; number of steps that elapse between writing energies to energy file 18 | nstxout-compressed = 5000 ; frequency to write coordinates to xtc trajectory 19 | 20 | ;======================== van der Waals ======= ; description 21 | vdw-type = Cut-off ; plain cut-off with rlist >= rvdw 22 | rvdw = 1.4 ; distance for the LJ cut-off (nm) 23 | 24 | ; ======================= electrostatics ======= ; description 25 | coulombtype = pme ; fast smooth Particle-Mesh Ewald (SPME) electrostatics 26 | fourierspacing = 0.1 ; this should give an accuracy of about 2-3*10^-4 27 | pme-order = 4 ; interpolation order for PME (4 = cubic interpolation) 28 | rcoulomb = 1.4 ; distance for the Coulomb cut-off (nm) 29 | 30 | ; ======================= constraints ========= ; description 31 | constraint-algorithm = lincs ; more stable and faster than SHAKE 32 | constraints = hbonds ; convert the bonds with H-atoms to constraints 33 | continuation = yes ; apply or not constraints to the start configuration 34 | 35 | ; ======================= temp. coupling ======= ; description 36 | tcoupl = v-rescale ; Berendsen + stochastic term = proper canonical ensemble 37 | ld-seed = 48456 ; seed 38 | tc-grps = Water non-Water ; groups to couple to separate temperature baths 39 | tau-t = 0.5 0.5 ; time constant for coupling (ps) 40 | ref-t = 293.15 293.15 ; reference temperature for coupling (K) 41 | nhchainlength = 1 ; number of chained Nose-Hoover thermostats 42 | 43 | --------------------------------------------------------------------------------