#!/bin/sh # run from directory where this script is cd `echo $0 | sed 's/\(.*\)\/.*/\1/'` # extract pathname EXAMPLE_DIR=`pwd` # check whether echo has the -e option if test "`echo -e`" = "-e" ; then ECHO=echo ; else ECHO="echo -e" ; fi $ECHO $ECHO "$EXAMPLE_DIR : starting" $ECHO $ECHO "This example (a water molecule) shows how to use cp.x to perform" $ECHO "molecular dynamics with variable parameters using AUTOPILOT." $ECHO "The variables are changed without stopping and starting cp.x." $ECHO "For example the dt value can be changed from 3 to 5 to 10 to 15" $ECHO "at predefined time steps. For other advanced options like STRING" $ECHO "(send a signal to a running cp.x process to change some parameter" $ECHO "on the fly) or Pause please consult the AUTOPILOT documentation." # set the needed environment variables . ../../../environment_variables # required executables and pseudopotentials BIN_LIST="cp.x" PSEUDO_LIST="H_US.van O_US.van" $ECHO $ECHO " executables directory: $BIN_DIR" $ECHO " pseudo directory: $PSEUDO_DIR" $ECHO " temporary directory: $TMP_DIR" $ECHO " checking that needed directories and files exist...\c" # check for directories for DIR in "$BIN_DIR" "$PSEUDO_DIR" ; do if test ! -d $DIR ; then $ECHO $ECHO "ERROR: $DIR not existent or not a directory" $ECHO "Aborting" exit 1 fi done for DIR in "$TMP_DIR" "$EXAMPLE_DIR/results" ; do if test ! -d $DIR ; then mkdir $DIR fi done cd $EXAMPLE_DIR/results # check for executables for FILE in $BIN_LIST ; do if test ! -x $BIN_DIR/$FILE ; then $ECHO $ECHO "ERROR: $BIN_DIR/$FILE not existent or not executable" $ECHO "Aborting" exit 1 fi done # check for pseudopotentials for FILE in $PSEUDO_LIST ; do if test ! -r $PSEUDO_DIR/$FILE ; then $ECHO $ECHO "ERROR: $PSEUDO_DIR/$FILE not existent or not readable" $ECHO "Aborting" exit 1 fi done $ECHO " done" # how to run executables CP_COMMAND="$PARA_PREFIX $BIN_DIR/cp.x $PARA_POSTFIX" $ECHO $ECHO " running cp.x as: $CP_COMMAND" $ECHO # clean TMP_DIR $ECHO " cleaning $TMP_DIR...\c" rm -rf $TMP_DIR/* $ECHO " done" # molecular dynamics calculation cat > water.autopilot.in << EOF &CONTROL calculation='cp', title="WATER", restart_mode='from_scratch', nstep=10000, iprint=30, isave=30, tstress=.FALSE., tprnfor=.FALSE., dt = 3., ndr=90, ndw=91, ekin_conv_thr=1e-09 pseudo_dir='$PSEUDO_DIR/', outdir='$TMP_DIR/', / &SYSTEM ibrav = 1, celldm(1) = 10., nat =3, ntyp =2, nbnd =4, ecutwfc =25.0, ecutrho =200.0, nr1b=20, nr2b=20, nr3b=20, occupations = 'fixed', nspin=1, ecfixed =25.0 / &ELECTRONS emass = 700., emass_cutoff = 3., orthogonalization = 'ortho', electron_maxstep = 200, ortho_eps = 1.e-10, ortho_max = 250, electron_dynamics= 'damp', electron_damping =0.15, startingwfc='random' ampre=0.02 / &IONS ion_dynamics = 'none', ion_radius = 1.0, ion_damping = 0.0, ion_positions = 'default', ion_temperature = 'not_controlled', tempw=800, fnosep=37.22179 / AUTOPILOT on_step = 31 : dt=5 on_step = 61 : dt=10 on_step = 91 : dt=15 on_step = 91 : iprint=100 on_step = 91 : isave=100 on_step = 191 : ion_dynamics = 'damp' on_step = 191 : electron_damping =0.00 on_step = 191 : isave=500 on_step = 191 : isave=500 on_step = 691 : ion_temperature = 'nose' on_step = 691 : tempw=150 on_step = 1191 : tempw=300 on_step = 1691 : tempw=500 on_step = 2191 : iprint=50 on_step = 2191 : isave=50 on_step = 2191 : electron_damping = 0.10 on_step = 2191 : ion_dynamics = 'none' on_step = 2191 : ion_temperature ='not_controlled' on_step = 2241 : iprint=200 on_step = 2241 : isave=200 on_step = 2241 : electron_damping =0.00 on_step = 2241 : ion_dynamics = 'damp' on_step = 2441 : iprint=900 on_step = 2441 : isave=500 on_step = 2441 : electron_damping =0.15 on_step = 2441 : ion_temperature = 'nose' on_step = 2441 : tempw=800 on_step = 3341 : iprint=200 on_step = 3341 : isave=200 on_step = 3341 : electron_damping =0.00 on_step = 3541 : iprint=50 on_step = 3541 : isave=50 on_step = 3541 : ion_dynamics = 'none' on_step = 3541 : ion_temperature = 'not_controlled' on_step = 3591 : iprint=2000 on_step = 3591 : isave=2000 on_step = 3591 : ion_dynamics = 'damp' on_step = 3591 : ion_temperature = 'nose' on_step = 6591 : iprint=10000 on_step = 6591 : isave=500 on_step = 6591 : electron_damping =0.00 on_step = 6591 : ion_temperature = 'nose' ENDRULES ATOMIC_SPECIES H 1.00794000 H_US.van O 15.99940000 O_US.van ATOMIC_POSITIONS {bohr} H 0.57164238 0.94335166 0.96565043 H -0.24339682 -0.43501513 -1.37874473 O -0.32824556 -0.50852550 0.41309430 EOF $ECHO " running CP calculation with AUTOPILOT option...\c" $CP_COMMAND < water.autopilot.in > water.autopilot.out $ECHO " done" exit 0