Skip to content

Required Keywords

Here are the required keywords in simulation.input

🚲 Cycles and Steps

NumberOfInitializationCycles (size_t)

  • Number of Initialization cycles, the system gets initialized, the statistical averages are NOT gathered
  • For CBCFC, the biasing factor \(\eta\) are NOT sampled nor applied
  • For GC-TMMC, the biasing factor \(\eta\) are NOT sampled nor applied

NumberOfEquilibrationCycles (size_t)

  • Number of Equilibration cycles, the statistical averaged are NOT gathered
  • For CBCFC, the biasing factor \(\eta\) are sampled, and applied
  • For GC-TMMC, the biasing factor \(\eta\) are sampled, and applied

NumberOfEquilibrationCycles (size_t)

  • Number of Production cycles, the statistical averaged are gathered and printed to screen
  • For CBCFC, sampling completes, the sampled biasing factor \(\eta\) are applied
  • For GC-TMMC, the biasing factor \(\eta\) are sampled, and applied

UseMaxStep (bool)

  • Whether to set a maximum number of steps per Monte Carlo cycle
    • If yes, you need a following keyword MaxStepPerCycle (size_t)
    • If no, then gRASPA uses the convention from RASPA-2: \(min(20, N_{Mol})\), where \(N_{Mol}\) is the number of adsorbate molecules in the simulation box

🐔 General Setup

RestartFile (bool)

  • Whether to read system configuration (atom positions, forces, charges, scales, ...) from RestartInitial folder at the beginning of the simulation
    • See output section for more information of the format of the RestartInitial folder

RandomSeed (size_t)

  • Random seed for the series of random numbers generated during the simulation
  • 📝 NOTE: This is recommended for reprocibility of results

AdsorbateAllocateSpace (size_t)

  • Amount of space to pre-allocate before the simulation starts for each adsorbate component
    • For example, if AdsorbateAllocateSpace 10240, then for each adsorbate component, it can store 10240 atoms on the GPU memory
    • 🧠 TIP: you can kind-of estimate the max number of atoms your system can have. If you are unsure, use a large value, such as 10240
    • If your value is too small, and your insertion move goes beyond that, program will terminate

NumberOfSimulations (size_t)

  • Number of simulation boxes the program will have
    • For NVT-Gibbs, use 2, otherwise, use 1

SingleSimulation (bool)

  • Whether to run only the selected simulation box (by default simulation 0)
    • If NVT-Gibbs, then useSingleSimulation no, since the two boxes need to be simulated at the same time
    • Other cases, use SingleSimulation yes
    • Could have related (unimplemented) uses, if there are multiple independent boxes simulated at the same time

Temperature (double)

  • temperature for the simulation, in the unit of Kelvin

Pressure (double)

  • external pressure for the simulation box, in the unit of Pascal
  • NOT used for NVT-Gibbs, just put in some value

⛓ CBMC Setup

NumberOfTrialPositions (size_t)

  • Number of trial positions for a single (first) bead
    • 🧠 TIP: NumberOfTrialPositions 10 is recommended

NumberOfTrialOrientations (size_t)

  • Number of trial orientation for different orientations of a rigid body
    • 🧠 TIP: NumberOfTrialOrientations 10 is recommended

⭐ Force Field Setup

ChargeMethod (string)

  • can only choose between None and Ewald
    • Use ChargeMethod None if there is no partial charge on your adsorbate molecule, for example, alkane adsorption in rigid framework
    • Use ChargeMethod Ewald for TIP4P water, carbon-dioxide molecules

OverlapCriteria (double)

  • Rejection criteria if the van der Waals (VDW) interaction energy between a pair of atoms from different molecules exceed the input value here.
  • You want the value to be big enough so that reasonable configurations are kept, but not that big so that you can save some computation time
    • 🧠 TIP: OverlapCriteria 1e5 is recommended for most cases

CutOffVDW (double)

  • Cutoff for VDW interactions between a pair of atoms
    • 🧠 TIP: CutOffVDW 12.8 is a reasonable choice

CutOffCoulomb (double)

  • Cutoff for short-range Coulombic interactions between a pair of atoms
    • 🧠 TIP: CutOffCoulomb 12.0 is a reasonable choice

EwaldPrecision (double)

  • Precision of the Ewald summation, determines the number of k-points in x, y, z directions
    • 🧠 TIP: EwaldPrecision 1e-6 is a recommended

UseChargesFromCIFFile (bool)

  • Dictates from where to read partial charges of the framework

🕷 Framework Setup

InputFileType (string)

  • currently only InputFileType CIF is allowed, legacy versions uses InputFileType POSCAR (now disallowed)

FrameworkName (string)

  • Name of the framework, if you use IRMOF-1.cif, then for this keyword, use FrameworkName IRMOF-1
    • 📝 NOTE: each simulation box needs a "Framework", for NVT-Gibbs, just use a CIF file with no atoms but box lengths
    • 🧠 TIP: For NVT-Gibbs, you could do FrameworkName Empty-Box Empty-Box
    • see NumberOfSimulations keyword

UnitCells (size_t size_t size_t size_t)

  • Requires 1 non-negative and 3 non-zero integers.

    1. the first one tells the code which framework it is, for example Framework 0,
    2. the latter 3 tells the code number of duplications to perform in x, y, z directions
    3. 📝 NOTE: each simulation box needs a "Framework", for NVT-Gibbs, just use a CIF file with no atoms but box lengths
    4. see NumberOfSimulations keyword
    5. 🧠 TIP: For NVT-Gibbs, you could do the following in simulation.input:

    UnitCells 0 1 1 1

    UnitCells 1 2 2 2

🔥 Adsorbate Setup

Component X MoleculeName (string)

  • X is the Index of the adsorbate component, starting from zero
    • If your adsorbate definition file is CO2.def, and you want to do single component, then you do Component 0 MoleculeName CO2
  • For mixture adsorption, you can have multiple of these blocks, see [Mixture-Example]

IdealGasRosenbluthWeight (double)

  • the ideal-chain rosenbluth weight of a molecule
    • for chain molecule, in terms of n-alkane, starting from n-butane, are non-zero
    • for rigid molecule and molecules with no dihedral terms, it is 1.0

FugacityCoefficient (double)

  • the fugacity coefficient applies directly to your value for Pressure to convert Pressure to Fugacity
  • (Currently) can be calculated from RASPA-2 via Peng-Robinson Equation of State

CreateNumberOfMolecules (size_t)

  • Number of molecules to create for each simulation box for the component