wiki:AlkaneCreation
close Warning: Failed to sync with repository "(default)": unable to open database file; repository information may be out of date. Look in the Trac log for more information including mitigation strategies.

Creating Arbitrary Alkanes

Image of initial butane

This can also be used (in a somewhat unusual way) to generate alkanes of arbitrary length from a given one. Assume, we have a butane as given. We cut off the terminal hydrogens at either end and place them in files buildingblock_upper.xyz and buildingblock_lower.xyz.

To correct for the displacement, we subtract the position of its carbon neighbor as if it were at "0,5,5".

./molecuilder -i buildingblock_upper.xyz --select-all-atoms -t "-8.3885,-1.5127,-0.89" -s buildingblock_upper.xyz --undo

In the same way we proceed with the hydrogen at the other end stored in buildingblock_lower.xyz.

./molecuilder -i buildingblock_lower.xyz --select-all-atoms -t "-12.1362,-1.5127,-0.89"

where we translate the position such that it's relative to the same carbon at "0,5,5" and additionally we have to compensate for the x distance which we set such that is bond partner would be at "x=0".

Furthermore, we cut out the first pair of carbon atoms along with the four hydrogens (not the terminal one) and store it in buildingblock_center.xyz.

./molecuilder -i buildingblock.xyz --select-atoms-inside-cuboid "2.5,5,5" --position "8.3,3,3" -s buildingblock_center.xyz

Sadly, we have to take a look here at the coordinates in the xyz file to know what to cut out. We pick a position slightly before the first carbon atom. Finally, we have to translate the section

./molecuilder -i buildingblock_center.xyz --select-all-atoms -t "-8.3885,-1.5127,-0.89"

such that the first carbon atom is at "0,5,5".

Image of buildingblock_center

Then we may proceed as follows to produce a decane.

./molecuilder -i decane.xyz --change-box "2.4985,0,10,0,0,10" -l buildingblock_center.xyz --repeat-box "5,1,1"

where we obtained the box length from the distance of one carbon atom to its next-nearest neighbor.

That is:

  • first, we use -i to store everything in a new file decane.xyz.
  • Next, we set the box dimensions (--change-box) to fit with the periodicity of the alkanes, here in the x direction.
  • Then, we load (-l) the atoms into this domain.
  • Finally, we call --repeat-box the create five copies from the given segment containing two carbons.

At last, we need to re-attach the terminal hydrogen atoms. First the upper part, which is easier

./molecuilder -i decane.xyz -l buildingblock_upper.xyz

Then the lower part which has to be translated to its destination

./molecuilder -i decane.xyz -l buildingblock_lower.xyz --select-molecule-by-order -1 --select-molecules-atoms -t "11.24325,0,0"

where the translation factor is 4.5 times the above periodicity in the x direction.

That is:

  • first, we use -i to work on the file decane.xyz where the "truncated" decane is contained.
  • Then, we load (-l) the hydrogen atom into this domain, it is automatically placed into a new molecule
  • We select this (last) molecule (--select-molecule-by-order) where -1 is the reverse order, 1 is first, -1 is last, -2 is second to last, ... (Note: we might as well have selected the molecule by its name buildingblock_left with --select-molecule-by-name).
  • We transform the molecule selection into an atomic selection (--select-molecules-atoms) for the subsequent translation working on atoms.
  • Finally, we call -t to translate the selected hydrogen atom at its final position.

And finally, we have a complete decane molecule.

Image of resulting decane

Now, one may ask: Why not do this in a text editor? Of course, the duplication along with the translation of the periodic section is nice. Moreover however this approach can easily be placed in a script file and arbitrary alkanes can be produced by calling this script.

This has been done with version v1.1.3

Last modified 15 years ago Last modified on Jun 17, 2011, 8:10:19 AM

Attachments (8)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.