Table of Contents

Exercises

The following exercises are part of the the course Molecular and Materials Modelling held at ETH Zürich during the spring semester 2018.

Lecture 1

Lecture 2

Lecture 3

Lecture 4

Lecture 5

Lecture 6

Lecture 7

Lecture 8

Lecture 9

Lecture 10

Lecture 11

Lecture 12

note on the Quantum Mobile

Remember that the Quantum Mobile VM is a Linux environment. As such, copy/paste operations are sometimes application-dependent.

  • In a browser or other graphical programs: use CTRL+C/CTRL+V
  • In a terminal: use SHIFT+CTRL+C/SHIFT+CTRL+V

m_ bash functions

We have programmed in the virtual machine some useful bash functions. They all start with m_ and can be called from the command line. To see the usage of one of them, use the -h flag. Here the list and usage of all of them:

==================================================================
m_addcolumn
Description:
        add a column at the left of a file, the same string in every line.
Usage:
        m_addcolumn string < file > file.out
==================================================================


==================================================================
m_cutlines
Description:
        Cuts lines l1..l2, l3..l4, l5..l6 away from a file
Usage:
        m_cutlines l1 l2 l3 l4 l5 l6 ...  < file > modified_file
==================================================================


==================================================================
m_domyslab
Description:
        starting from a unit cell file with Element x y z columns, generate a nx ny nz cell. The parameter d is the nearest neighbor distance, and the cell lengths Lx, Ly, Lz are in the same units as in the unit cell file. Since d is used to multiply all coordinates, the unit cell coordinates are meant to be in nearest neighbor units.
Usage:
        m_domyslab Lx Ly Lz d nx ny nz < unitcell > slab.xyz
==================================================================


==================================================================
m_interpolate
Description:
        Returns a list of real numbers that interpolates two given extremes A and B with n+1 points (from A=0 to B=n)
Usage:
        m_interpolate xa xb n
==================================================================


==================================================================
m_multiply
Description:
        Returns the product of two numbers
Usage:
        m_multiply num1 num2
==================================================================


==================================================================
m_overlayer
Description:
        Replaces the 4th column (z coordinate) of a file with a user-given new z coordinate.
Usage:
        m_overlayer newz < overlayer.xyz > newoverlayer.xyz
==================================================================


==================================================================
m_replace
Description:
        Replaces all occurrencies of an "oldstring" in a file with a "newstring" string
Usage:
        m_replace "oldstring" "newstring" < oldfile > newfile
==================================================================


==================================================================
m_trimlines
Description:
        trims around lines l1..l2, l3..l4, l5..l6 of
Usage:
        m_trimlines l1 l2 l3 l4 l5 l6 ...  < file > modified_file
==================================================================


==================================================================
m_xyzcenter


Description:
        Centers a sample in the directions specified by a 1, and not in those specified by a 0
Usage:
        m_xyzcenter flagx flagy flagz < cell.xyz > cell_center.xyz
==================================================================


==================================================================
m_xyzminmax
Description:
        This function returns the maximum and minimum X (or Y, or Z) value from a XYZ file
Usage:
        m_xyzminmax x|y|z < file.xyz
==================================================================


==================================================================
m_xyzrefold

Description:
        Refolds a sample according to periodic boundary conditions in all directions marked by 1
        The cell is defined by a,b,c in the second line of the xyz file
Usage:
        m_xyzrefold markx marky markz < filein.xyz > fileout.xyz
==================================================================


==================================================================
m_xyztranslate

Description:
        Translates all coordinates of a xyz file by a given vector.
Usage:
        m_xyztranslate tx ty tz < filein.xyz > fileout.xyz
==================================================================


==================================================================
m_atan2
Description:
        Returns the angle in degrees between the positive X-axis of a plane and the point given by the coordinates (x,y) on it:

\
 \
  * (x,y)
   \
    \
     \_______
      \      |
       \angle|
      --\---------------------->
         \                     X

Usage:
        m_atan2 x y
==================================================================


==================================================================
m_distance
Description:
        Computes the distance between two points
Usage:
        m_distance x1 y1 z1 x2 y2 z2
==================================================================


==================================================================
m_lattice

Description:
        Replicates a cell in 3 directions and generates a sample with the cell lengths a b c in the second line
        IT ONLY READS THE LINES WITH EXACTLY 4 COLUMNS (atomic index, x, y, z)
Usage:
        m_lattice [Atom] cellx celly cellz nx ny nz < cell > sample.xyz
==================================================================


==================================================================
m_norm
Please specify three arguments
Description:
        Returns the norm of a vector
Usage:
        m_norm x y z

==================================================================


==================================================================
m_pdbtorsion
Description:
        Returns torsion defined by 4 atoms in a pdb file
                           Atom4
                            /
             <-.           /
           angle\         /
     Atom2-------|-----Atom3
      /      \__/
     /
    /
 Atom1

Usage:
        m_pdbtorsion n1 n2 n3 n4 file
==================================================================


==================================================================
m_scalar
Description:
        Returns scalar product of two vectos
Usage:
        m_scalar x1 y1 z1 x2 y2 z2
==================================================================


==================================================================
m_unitvec
Description:
        Returns a normalized input vector
Usage:
        m_unitvec x y z
==================================================================


==================================================================
m_xyzcountframes
Description:
        This function counts the number of frames in a trajectory
Usage:
        m_xyzcountframes file.xyz
==================================================================


==================================================================
m_xyznatoms
Description:
        This function returns the number of atoms in a given XYZ file
Usage:
        m_xyznatoms < file.xyz
==================================================================


==================================================================
m_xyzrescale

Description:
        Rescales all coordinates of a xyz file by a given factor. If the cell is given in the second line it is multiplied by the same factor
Usage:
        m_xyzrescale factor < filein.xyz > fileout.xyz
==================================================================


==================================================================
m_xyzzhistogram
Description:
        This function makes a z histogram of a trajectory
Usage:
        m_xyzzhistogram n_intervals n_atoms z_min z_max
==================================================================


==================================================================
m_change
Please specify three arguments
Description:
        Adds a delta times an integer to a central value
Usage:
        m_change x0 n delta
==================================================================


==================================================================
m_divide
Description:
        Returns the ratio of two numbers
Usage:
        m_ratio num1 num2
==================================================================


==================================================================
m_getcolumn
Description:
        Greps a string from a file and gets the last instance; then takes the nth column
Usage:
        m_getcolumn "STRING" column < file
==================================================================


==================================================================
m_list
Please specify two arguments
Description:
        Creates an ordered list of numbers between two integers
Usage:
        m_list nmin nmax
==================================================================


==================================================================
m_onecolumn
Description:
        parse a file and write all words as a single column
Usage:
        m_onecolumn < file
==================================================================


==================================================================
m_pdbvecjoin
Description:
        Returns a vector joining  two atoms in a pdb file
Usage:
        m_pdbvecjoin at1 at2 pdbfile
==================================================================


==================================================================
m_sum
Description:
        Returns the sum of two numbers
Usage:
        m_sum num1 num2
==================================================================


==================================================================
m_vecprod
Description:
        Returns vector product of two vectors
Usage:
        m_vecprod x1 y1 z1 x2 y2 z2
==================================================================


==================================================================
m_xyzframes
Description:
        This function takes frames from a xyz file
Usage:
        m_takeslides first_frame last_frame file.xyz  (with last_frame=all, until the end)
==================================================================


==================================================================
m_xyzrand

Description:
        Randomizes a file xyz from -delta/2 to delta/2
Usage:
        m_xyzrand delta < file.xyz
==================================================================


==================================================================
m_xyzsort

Description:
        Sorts a xyz file according to z, y, x coordinates (z is inverted)
Usage:
        m_xyzsort < file.xyz > filesorted.xyz
==================================================================