This directory contains all updated scripts relevant in basic thermophysical and structural analysis of ionic liquids. The directory organization is kept in summary.txt and created by running `python summary.py'.
- create dataset workflow to save analysis into ML/AI-readable (e.g., SQL?)
- high throughput MD workflow (Galaxy, Materials Project)
- snakemake slurm workflow
- charge fitting automation
- implement polymerized ILs
- clean up TI code for OPLS generality and remove excess/redundant code
- benchmark IL TI calculations for # of H2O molecules and eq. time
- compare OPLS with SAPT FF
-
High-throughput Molecular Dynamics (MD) Overview
- typical MD calculation of 1 molecular system is atleast a GPU job and ~100 MB - 10 GB
- memory footprint of 1 system depends on simulation time (10-300 nanoseconds) and molecule size (roughly, 1G/10ns)
- 1 system may have ~100 parameters to study (temperature, concentration, etc.)
- studying ~1000s of systems quickly becomes ~10-100 TB
- manually submitting these jobs is prohibitive
- Solutions / Alternatives to NERSC Software
- FireWorks: Package many small jobs into a single large job (e.g., automatically run 100 serial workflows in parallel over 100 cores)
- MongoDB
1. OPLS HTMD (See results):
-
extend
download_opls_xml()
to use BOSS v5.1 (via Docker / docker-py)- See run_ligpargen for docker / apptainer implementation
-
support for merging xml file outputs from ligpargen (see merge_xml_files)
- Implement OPLS_LJ combination rules (if OPLS=True: OPLS_LJ(system) in
openmm.jobs.core.py
, see implementation)
- Implement OPLS_LJ combination rules (if OPLS=True: OPLS_LJ(system) in
-
user support for binary/tertiary mixtures going from
concentration
-->count
, i.e.,openff.utils.create_list_of_mol_spec_lists()
-
water_models
-
equilibration_checker()
(add arguments to OpenMMFlowMaker? Or same asEquilibrationDocs
? Emmet?)-
Create analogous
d_density_dt()
anddU_dt()
functions -
Suppose I am running a production simulation of a new ionic liquid with an unknown equilibration timescale, under
NVTMaker.run_openmm
, one might opt to set then_steps
based on a physical parameter (i.e., see Openmm Issue#4756:
def run_openmm_conditionally(self, sim: Simulation, dir_name: Path, dU_dt=False, density=False,...) -> None: """Evolve the simulation with OpenMM for self.n_steps. Parameters ---------- sim : Simulation The OpenMM simulation object. """ should_continue = True # Run the simulation while should_continue(sim): sim.step(self.n_steps) def should_continue(self, sim: Simulation): # computes dU_dt # computes d_density_dt if property no within tol: return True else: return False
-
Interface Simulations (eventual surface tension calculations)
-
Can we add
ase.buld.add_vacuum(atoms, vacuum)
intoopenff.core
creating topology viapack_box()
-
- automate partial atomic charges via
gdma
from Psi4