exercises:2017_uzh_cmest:calculation_pbc
This is an old revision of the document!
Calculations with Periodic Boundary Conditions
This short exercise illustrates the property of periodic boundary conditions and at the same time gives you some ideas/skeletons on how to create useful bash scripts. The files you need for this are:
A geometry file for a H2O molecule:
- h2o.xyz
3 Atom X Y Z O 0.0000000 0.0000000 0.1194180 H 0.0000000 0.7654990 -0.4776700 H 0.0000000 -0.7654990 -0.4776700
A CP2K input file to run a calculation with it:
- h2o_pbc.inp
&GLOBAL PROJECT h2o_pbc RUN_TYPE ENERGY PRINT_LEVEL MEDIUM &END GLOBAL &FORCE_EVAL METHOD Quickstep ! Electronic structure method (DFT,...) &DFT BASIS_SET_FILE_NAME BASIS_MOLOPT POTENTIAL_FILE_NAME POTENTIAL &POISSON ! Solver requested for non periodic calculations PERIODIC XYZ &END POISSON &SCF ! Parameters controlling the convergence of the SCF. This section should not be changed. SCF_GUESS ATOMIC EPS_SCF 1.0E-6 MAX_SCF 300 &END SCF &XC ! Parameters needed to compute the electronic exchange potential &XC_FUNCTIONAL PBE &END XC_FUNCTIONAL &END XC &END DFT &SUBSYS &CELL ABC 10. 10. 10. PERIODIC XYZ &END CELL &TOPOLOGY ! Section used to center the atomic coordinates in the given box. Useful for big molecules COORD_FILE_FORMAT xyz COORD_FILE_NAME ./h2o.xyz &CENTER_COORDINATES CENTER_POINT 5. 5. 5. &END &END &KIND H ELEMENT H BASIS_SET TZVP-MOLOPT-GTH POTENTIAL GTH-PBE-q1 &END KIND &KIND O ELEMENT O BASIS_SET TZVP-MOLOPT-GTH POTENTIAL GTH-PBE-q6 &END KIND &END SUBSYS &END FORCE_EVAL
And a script to run it:
- run.sh
#!/bin/bash set -o errexit set -o nounset set -o pipefail xseq=$(seq 5 0.1 6) for x in $xseq; do rm -f "h2o_pbc_x-${x}.out" sed \ -e "s|h2o_pbc|h2o_pbc_x-$x|" \ -e "s|CENTER_POINT .*|CENTER_POINT $x 5. 5.|" \ h2o_pbc.inp > "h2o_pbc_x-${x}.inp" cp2k.sopt -i "h2o_pbc_x-${x}.inp" -o "h2o_pbc_x-${x}.out" & done for job in $(jobs -p) ; do wait $job done # create or truncate the file named "energies" :>| energies for x in $xseq; do energy=$(awk '/Total FORCE_EVAL/ { print $9 }' "h2o_pbc_x-${x}.out") echo "$x $energy" >> energies done
You have to mark the script as an executable after creating it, using:
$ chmod +x run.sh
Create a plot
Run the script after loading the CP2K module:
$ ./run.sh
Besides various input and output files, you should get a file named energies
.
- Plot it, including meaningful axis labels. To that end, try to understand the provided script. Looking at the difference between the initially provided input file
h2o_pbc.inp
and the newly created input files may give a hint. The command$ diff h2o_pbc.inp SOMEOTHERFILE
may also help. - What would you expect from such a plot and why? What order is the deviation from what you would expect? What could be the source for this deviation?
Make the script your own
- Read the script and try to understand the commands. Look them up using your favorite search engine, the man pages on the system (
$ man sed
for example) or try them out by hand on the command line. - Try to document the script in such a way that you will still understand it when looking at it again in a year or two (so, not every detail, but make sure to cover the obscure stuff and the big blocks)
- Change the script to calculate energies for
x=z=5.
andy=2,2.2,2.4,..,7.6,7.8,8.0
and plot them again.
exercises/2017_uzh_cmest/calculation_pbc.1507712939.txt.gz · Last modified: 2020/08/21 10:15 (external edit)