Skip to content

Framework Semi-Flexibility: pX in NU-2000

Introduction

  • NU-2000 is a MOF with 3D-linkers that is highly-selective to para-xylene.
  • Here we show an example of using semi-flexible framework representation, or namely linker rotation move for the adsorption of para-xylene and to explore how para-xylene pack within the channels of NU-2000 when the linkers can rotate.
  • The linkers can rotate around its axis, the rotation is free, meaning that it can rotate to any random angle.
  • The linkers can be processed in a linker definition file

simulation.input

Framework definition

  • NumberofFrameworkComponents <size_t>
    • This keyword will dictate the number of framework components
    • by default, this number is 1
    • if more than 1, a component will be scrapped from the framework
    • The framework CIF file does not have to be a super cell, but has to be P1 symmetry
  • Framework_Component_ <size_t>
    • Provide the definition for the scrapped framework component here
    • You can provide probabilities of MC moves for molecules in this component
    • The definition of the components needs to be provided elsewhere, explained here
    • 📝 NOTE: to distinguish this part from the adsorbate component, we add a "_" to the keyword
  • In our example, this part looks like below ⬇:
    FrameworkName Al-Bicyclo-AddedH-P1-fix-PBC
    SeparateFrameworkComponents yes
      NumberofFrameworkComponents 2
    UnitCells 0 4 2 2
    
    Framework_Component_ 1
             TranslationProbability     0.0
             RotationSpecialProbability 1.0
    END_OF_Framework_Component_ 1
    

Framework Component file

  • Provide the atom indices of the framework component in CIF file defined in simulation.input file
  • The name of the example below ⬇ is Framework_Component_1.def
    • The name has to match the component you mentioned in simulation.input file.
  • 📝 NOTE: Make sure your framework molecules do not cross the periodic boundary (make sure they are not cut by the boundary)
  • The example looks like below ⬇ :
    #Note: The numbering here should match the numbering in your CIF FILE. P1 Symmetry is required.
    #YOU SHOULD have no issue making supercells with this list defined here, the numbers will be replicated accordingly.
    #Molecule index should match atom indices, also make sure your molecule do not across the pbc
    Framework_Component_Name: BiCyclo-Linker
    Number_of_Molecules_for_Framework_component: 4
    Number_of_atoms_for_each_molecule: 22
    Atom_Indices_for_Molecule 0: 5 6 7  8  9  10 11 12  13  14  15  16  17  18  20  21  22  23  25  26  27  28
    Atom_Indices_for_Molecule 1: 38 39 40 41 42 43 44 45  46  47  48  49  50  51  53  54  55  56  58  59  60  61
    Atom_Indices_for_Molecule 2: 67 68 69 70 71 72 73 74  75  76  77  78  79  80  82  83  84  85  86  87  88  89
    Atom_Indices_for_Molecule 3: 93 94 95 96 97 98 99 100 101 102 103 104 105 106 108 109 110 111 112 113 114 115
    

Other Usages: Extra-Framework Cations/Anions

  • Similar setup can be used to simulate extra-framework cations/anions
  • For example, we have an anionic framework with -12 e
  • If the extra-framework cations are calcium, we need 6 Ca2+ per unit cell
  • Here are the steps:
    1. We first add 6 Ca2+ in the CIF file, as follows
      • 📝 NOTE: the cations do not have to be in perfect locations, just don't create overlaps.
        Ca 1 0.5 0.5 0.5 Biso 1 Ca 1
        Ca 1 0.55 0.5 0.5 Biso 1 Ca 1
        Ca 1 0.6 0.55 0.5 Biso 1 Ca 1
        Ca 1 0.65 0.45 0.5 Biso 1 Ca 1
        Ca 1 0.45 0.65 0.5 Biso 1 Ca 1
        Ca 1 0.45 0.6 0.55 Biso 1 Ca 1
        
    2. Add the definition of these cation molecules in Framework_Component_1.def
      #Note: The numbering here should match the numbering in your CIF FILE. P1 Symmetry is required.
      #YOU SHOULD have no issue making supercells with this list defined here, the numbers will be replicated accordingly.
      #Molecule index should match atom indices, also make sure your molecule do not across the pbc
      Framework_Component_Name: Ca_Ion
      Number_of_Molecules_for_Framework_component: 6
      Number_of_atoms_for_each_molecule: 1
      Atom_Indices_for_Molecule 0: 306
      Atom_Indices_for_Molecule 1: 307
      Atom_Indices_for_Molecule 2: 308
      Atom_Indices_for_Molecule 3: 309
      Atom_Indices_for_Molecule 4: 310
      Atom_Indices_for_Molecule 5: 311
      
    3. in simulation.input file, add the following lines
      • 📝 NOTE: these two code blocks will tell gRASPA to separate atoms in CIF file into two (framework + cation) host components, and assign translation move to the cation.
        FrameworkName xxx
        SeparateFrameworkComponents yes
        NumberofFrameworkComponents 2
        
        and
        Framework_Component_ 1
            TranslationProbability     1.0
        END_OF_Framework_Component_ 1