# Open SourceMolecular Dynamics

### Sidebar

#### For Developers

exercises:2018_ethz_mmm:index

# Exercises

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

## 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:

==================================================================
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
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
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
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
==================================================================