Simulation with molecules only in the pore

import poresim as ps

Set job inputs for your working station

Example Bash file for Horeka:

#!/bin/bash
#SBATCH --nodes=SIMULATIONNODES
#SBATCH --ntasks-per-node=SIMULATIONPROCS
#SBATCH --time=SIMULATIONTIME
#SBATCH --job-name=SIMULATIONLABEL
#SBATCH --error=SIMULATIONLABEL.e.%J
#SBATCH --output=SIMULATIONLABEL.o.%J

module load chem/gromacs/2019.6_cpu

COMMANDCHANGEDIR

COMMANDGROMACS

Simulation inputs

cpu = 75
job = {"min": {"file": "data/bash.sh", "nodes": 1, "np": cpu, "wall": "24:00:00"},
       "nvt": {"file": "data/bash.sh", "nodes": 5, "np": cpu, "wall": "24:00:00"},
       "run": {"file": "data/bash.sh", "maxh": 24, "nodes": 5, "np": cpu, "runs": 15, "wall": "24:00:00"}}

param = {"min": {"file": "../Simulation_Inputs/Pore/pore_eq_min.mdp"},
         "nvt": {"file": "../Simulation_Inputs/Pore/pore_eq_nvt.mdp", "param": {"NUMBEROFSTEPS": 500000, "TEMPERATURE_VAL": 353.15}},
         "run": {"file": "../Simulation_Inputs/Pore/pore_prod_run.mdp", "param": {"NUMBEROFSTEPS": 200000000, "TEMPERATURE_VAL": 353.15}}}

cluster_horeka = {"address": "",
                  "directory": "xxx",
                  "queuing": {"add_np": False, "mpi": "$DO_PARALLEL", "shell": "horeka.sh", "submit": "sbatch -p cpuonly "}}

Create a box object with the molecules contained in your system

pores = ps.Box("conf4")
pores.set_label("conf4")
pores.add_box("../PoreMS/pore.gro")
pores.add_pore("../PoreMS/pore.yml")
pores.add_struct("mol_list", "../PoreMS/pore.obj")

# Add gro files
pores.add_mol("CAT", "../Molecules/cat.gro", inp=4, section="pore",  kwargs_gmx={"-try": 1000})
pores.add_mol("EDC", "../Molecules/edc.gro", inp=18, section="res",  kwargs_gmx={"-try": 1000})
pores.add_mol("IM", "../Molecules/im.gro", inp=311, section="pore", kwargs_gmx={"-try": 50000} )
pores.add_mol("BF4", "../Molecules/bf4.gro", inp=600, section="pore",  kwargs_gmx={"-try": 50000})
pores.add_mol("HEP", "../Molecules/1-heptane.gro", inp="fill", mass = 100.21, auto_dens=629.595, section = "res", kwargs_gmx={"-try":1000} )


# Add top files
pores.add_topol("../PoreMS/master_topol_pore.top", "master")
pores.add_topol("../Topologies/forcefield_new_red.itp","top")
pores.add_topol("../Topologies/ffnonbonded_new_red.itp","top")
pores.add_topol("../Topologies/ffbonded_new.itp","top")
pores.add_topol("../Surfaces_Molecules/tms.itp","top")
pores.add_topol("../Surfaces_Molecules/tmsg.itp", "top")
pores.add_topol("../PoreMS/grid.itp", "top")
pores.add_topol("../Topologies/cat.itp", "top")
pores.add_topol("../Topologies/bf4.itp", "top")
pores.add_topol("../Topologies/im.itp", "top")
pores.add_topol("../Surfaces_Molecules/im_img_surface.itp", "top")
pores.add_topol("../Topologies/1-heptane.itp", "top")
pores.add_topol("../Topologies/educt_oplsaa.itp", "top")

pores.set_job(job)
pores.set_param(param)

Note

If you only want to put molecules into the pore, it is better to add the larger molecules first to make sure that Gromacs can get them into the pore.

Create simulation objects and generate folder structure

sim = ps.Simulate("Simulation/pore/conf4-r", pores)  # Single
sim.set_cluster(cluster_horeka)
sim.generate()

Finished simulation folder - conf4-r ...

Image of the system after filling the box

Inside view of the pore after running construct.sh. Colour code: catalyst, red; ionic anion, orange; ionic kation (on pore surface), green; ionic kation, blue; rectant, grey; heptane not shown.

_images/pore_il.pdf