mbdx6cw3 / func_gra_code

This program can be used to oxidise a pristine graphene flake to make graphene oxide, generating the input files (.gro and .itp) required to perform an MD simulation using GROMACS.
0 stars 0 forks source link
 Func_GO

 Christopher D. Williams (christopher.williams@manchester.ac.uk)
 Feb. 2017
 --------------------------------------------------------------------------

 Overview of this program:
 This program can be used to oxidise a pristine graphene flake to make 
 graphene oxide, generating the input files (.gro and .itp) required to 
 perform an MD simulation using GROMACS.

 --------------------------------------------------------------------------

 Compiling the program:
    - simply use the "make" or "gmake" command to generate the program 
      executable, "Func_GO".
    - the default compiler is gfortran.
    - the executable provided with this distribution was compiled using the
      gfortran compiler GNU Fortran (GCC) 4.9.2 on the Intel Core i5 
      processor, but I would strongly reccommend you compile your own version

 --------------------------------------------------------------------------

 Files provided with this distribution:
- README.txt
- Makefile
- *.f90:      source files
- func_GO:    executable
- input.dat:      contains input parameters for functionalisation 
- parameters.dat: contains parameters for the intermolecular potential.
          The example provided is for the CHARMM force field.
    - graphene.gro:   coordinate file.
          The example provided is for a 3 nm x 3 nm flake.
          Easy to generate using VMD nanotube builder.
    - carboyxl.gro, hydroxyl.gro, epoxide.gro, hydrogen.gro:
          Example functional group coordinate files.
 Output files:
- graphene_oxide.gro:   GO coordinate file (GROMACS format)
- graphene_oxide.itp:   GO topology file (GROMACS format)
- output.dat:       output data concerning the functionalisation, 
            e.g. oxygen content, functional group ratios, etc.

 --------------------------------------------------------------------------

 Notes:

1) Carbon atoms are functionalised with oxygen containing groups taking a
    user-specified weight percentage as oxygen to be the target. 

2) The functionalisation routine considers two separate types of
functional group: edge sites and surface sites

3) The oxygen content is determined for surface sites ONLY and edge 
functional groups are ignored in this calculation because we are 
trying to mimic larger sheets. If surface sites were to be 
    included in this calculation then the oxygen content would be 
dominated by edge sites and therefore unrealistic

    4) Edge sites are functionalised with hydrogen and carboxylic acid groups
    with a user-defined ratio and basal plane sites are functionalised with
    hydroxy and epoxy groups with a user-defined ratio.

5) Basal plane functionalisation is carried out in pairs, to preserve
stoichiometry and prevent undercoordinated carbon atoms. This means
    that two adjacent hydroxyl groups are added simultaneously, but only 
one epoxide group is added.

6) Atom types:
     CA  - aromatic carbon
     CH  - carbon with OH group attached
     CE  - carbon in epoxide group
     CC  - carbon in carboxyl group
     OH  - oxygen in hydroxyl group
     OE  - oxygen in epoxide group
     OC  - oxygen in carboxyl group
     HA  - aromatic hydrogen
     HO  - hydrogen in hydroxyl group

    7) The input parameter "pH" can be used to determine whether -OH or -COOH
    are protonated or deprotonated. The pKa of each functional group should be 
provided in the input file.

8) Currently, surface functionalisation is entirely random (i.e.
a group type is selected at random, added to a random carbon atom
and a direction is randomly chosen. It may be useful to adapt the
program to perform "patchy" functionalisation. 

    9) To make graphene instead of graphene oxide set the oxygen weight
    percentage to zero and the carboxylic acid/hydrogen ratio to zero.

10) Instead of a finite size flake, a periodic sheet can also be
functionalised. In this case only surface sites are functionalised. 
There is a switch in input.dat to allow for this.

 --------------------------------------------------------------------------

 Citation:
Add this later.