[Pw_forum] can't read wavefunction and coords

Axel Kohlmeyer akohlmey at cmm.chem.upenn.edu
Mon Apr 27 16:28:55 CEST 2009


On Mon, 2009-04-27 at 07:19 -0700, Jonas Baltrusaitis wrote:
> Gabriele,
> 
> thanks for your response. I reran input without the SCF step. I don't thin it's reading coords right. The source of confusion is that I am inputting and outputing coords in angstroms in optimization but it gets transferred into alat in normal mode calcs.

jonas,

please _read_ the documentation and don't assume that one
DFT program follows the logic of another.

restart_mode='restart' is meant to restart an interrupted
calculation of the _same_ input, _not_ to continue from a
previous calculation. you have to use some shell script 
magic to transfer final coordinates from one calculation
to another, but this is why pw.x outputs coordinates in
a format that is consistent with the input. to read back
the potential and/or wavefunction from a previous run you
have to use startingpot='file' and startingwfc='file'.
check out the docs on them, too, and the restrictions.

> Still, this is what I backcalculate with xcrysden:
> 
> Optimized coords:
> ATOMIC POSITIONS
> Si -0.053476533 -0.187541319 +0.057950773
> ...
> 
> Normal mode calculation coords:
> ATOMIC_POSITIONS
> Si      -0.037813604  -0.132611686   0.040977368
> H       -0.042235675  -0.102590555   0.268983495
> H       -0.221511706  -0.243919610  -0.030796850
> H       -0.032400640   0.077902395  -0.042412224
> H        0.144511653  -0.248234756  -0.027243038
> 
> below is my latest input

> incidently, is there a way to tell pwscf to use only angstroms in
>  output? It is convenient for me to use angstroms when setting up the
>  initial input so I'd like to stay with angstroms

no. not unless you implement it, that is.

...and for the majority of problems that QE codes 
are used on, fractional coordinates are the much 
more convenient choice.

cheers,
   axel.

> JOnas
> 
> #!/bin/sh
> 
> # run from directory where this script is
> cd `echo $0 | sed 's/\(.*\)\/.*/\1/'` # extract pathname
> EXAMPLE_DIR=/home/jbaltrus/$PBS_JOBNAME
> 
> # 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 shows how to use pw.x and phcg.x to calculate the normal"
> $ECHO "modes of a molecule (SiH4) at Gamma."
> $ECHO 
> $ECHO
> 
> # set the needed environment variables
> PREFIX=`pwd`
> BIN_DIR=/share/apps/espresso-4.0.4/bin
> PSEUDO_DIR=/share/apps/espresso-4.0.4/pseudo
> TMP_DIR=/share/apps/scratch/
> 
> mkdir $EXAMPLE_DIR/results
> 
> PARA_PREFIX="mpiexec -n 8 -machinefile $PBS_NODEFILE"
> PARA_POSTFIX="-rmpool 0 -nodes 2 -procs 4"
> 
> 
> # required executables and pseudopotentials
> BIN_LIST="pw.x phcg.x ph.x"
> PSEUDO_LIST="Si.vbc.UPF H.vbc.UPF C.pz-rrkjus.UPF H.vbc.UPF"
> 
> $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
> PW_COMMAND="$PARA_PREFIX $BIN_DIR/pw.x $PARA_POSTFIX"
> PH_COMMAND="$PARA_PREFIX $BIN_DIR/ph.x $PARA_POSTFIX"
> PHCG_COMMAND="$PARA_PREFIX $BIN_DIR/phcg.x $PARA_POSTFIX"
> DYNMAT_COMMAND=" $BIN_DIR/dynmat.x"
> $ECHO
> $ECHO "  running pw.x     as: $PW_COMMAND"
> $ECHO "  running ph.x     as: $PH_COMMAND"
> $ECHO "  running phcg.x   as: $PHCG_COMMAND"
> $ECHO "  running dynmat.x as: $DYNMAT_COMMAND"
> $ECHO
> 
> # clean TMP_DIR
> $ECHO "  cleaning $TMP_DIR...\c"
> rm -rf $TMP_DIR/*
> $ECHO " done"
> 
> # geometry optimization calculation
> cat > sih4.opt.in << EOF
>  &control
>     calculation='relax'
>     pseudo_dir = '$PSEUDO_DIR/',
>     restart_mode = ’from_scratch’,
>     outdir='$TMP_DIR/'
>     title='Test Silane SiH4 gamma only'
>     prefix='sih4'
>     tprnfor=.true., tstress=.true.
>  /
>  &system
>     ibrav=2, celldm(1) =12.0, nat=5, ntyp= 2,
>     ecutwfc =16.0
>  /
>   &electrons
>     mixing_mode='plain'
>     mixing_beta = 0.7,
>     conv_thr =  1.0d-8
>  /
> &IONS
> /
> ATOMIC_SPECIES
>  Si 28.086 Si.vbc.UPF
>   H  1.008  H.vbc.UPF
> ATOMIC_POSITIONS (angstrom)
> Si      -0.117489394     -0.768144287      0.335809279
> H       -0.211023980     -0.607144136      1.652050052
> H       -1.814442124     -1.682247277     -0.460054024
> H       -0.023954807      0.421221649     -0.250551950
> H        0.963879018     -1.487802354      0.053153717
> K_POINTS (gamma)
> EOF
> $ECHO "  running the geometry opt calculation for SiH4...\c"
> $PW_COMMAND < sih4.opt.in > sih4.opt.out
> check_failure $?
> $ECHO " done"
> 
> 
> # normal mode calculation for SiH4
> cat > sih4.nm.in << EOF
> normal modes for sih4
>  &inputph
>   tr2_ph=1.0d-14,
>   prefix='sih4',
>   amass(1)=28.086,
>   amass(2)=1.008,
>   outdir='$TMP_DIR/',
>   epsil=.true.,
>   trans=.true., asr=.true.
>   raman=.false.
>   fildyn='sih4.dyn'
>  /
>  0.0 0.0 0.0
> EOF
> $ECHO "  running normal mode calculation for SiH4...\c"
> $PHCG_COMMAND < sih4.nm.in > sih4.nm.out
> check_failure $?
> $ECHO " done"
> 
> # IR cross sections  for SiH4
> cat > sih4.dyn.in << EOF
>  &input fildyn='sih4.dyn', asr='zero-dim' /
> EOF
> 
> $ECHO "  running IR cross section calculation for SiH4...\c"
> $DYNMAT_COMMAND < sih4.dyn.in > sih4.dyn.out
> check_failure $?
> $ECHO " done"
> 
> 
> $ECHO
> $ECHO "$EXAMPLE_DIR: done"
> 
> 
> --- On Mon, 4/27/09, Gabriele Sclauzero <sclauzer at sissa.it> wrote:
> 
> > From: Gabriele Sclauzero <sclauzer at sissa.it>
> > Subject: Re: [Pw_forum] can't read wavefunction and coords
> > To: "PWSCF Forum" <pw_forum at pwscf.org>
> > Date: Monday, April 27, 2009, 1:50 AM
> > Dear Jonas
> > 
> > Jonas Baltrusaitis wrote:
> > > Hi all,
> > > 
> > > I am following an example 9 in trying to setup a
> > single input to: 1. optimize structure
> > > at gamma point 2. calculate scf 3. phonon calculation
> > 4. IR cross section calculation
> > > 
> > > What's absolutely not clear from example 9 is how
> > (why) the wavefunction and coords
> > > gets read from scf calculation part to latter parts.
> > It just does. 
> > 
> > Informations (system configuration, scf potential,
> > wavefunctions...) are exchaged between 
> > successive steps of a calculations with the programs
> > included in QE through the files 
> > contained in the directory you specify in outdir variable,
> > and will have prefix as prefix 
> > (eg. yourprefix.save contains system configuration, PPs,
> > charge density..., yourprefix.wfc 
> > contains the wavefunction coefficients...)
> > 
> > > Whereas it does not
> > > into scf run  if I add optimization run before scf and
> > start scf with restart
> > > directive. It simply disregards my restart command. I
> > was pretty convinced that restart
> > > will read previous wavefunction but now I just
> > don't know
> > 
> > In principle, if you specify the same prefix and outdir, it
> > should. Have you some evidence 
> > that it does not?
> > 
> > Anyway, I think you don't need to do an scf after the
> > relax run. You can use the data 
> > produced by this run as if it was an scf run (in fact it is
> > a sequence of scf steps).
> > 
> > HTH
> > 
> > GS
> > 
> > -- 
> > 
> > 
> > o ------------------------------------------------ o
> > | Gabriele Sclauzero, PhD Student                  |
> > | c/o:   SISSA & CNR-INFM Democritos,              |
> > |        via Beirut 2-4, 34014 Trieste (Italy)     |
> > | email: sclauzer at sissa.it                         |
> > | phone: +39 040 3787 511                          |
> > | skype: gurlonotturno                             |
> > o ------------------------------------------------ o
> > _______________________________________________
> > Pw_forum mailing list
> > Pw_forum at pwscf.org
> > http://www.democritos.it/mailman/listinfo/pw_forum
> 
> 
>       
> _______________________________________________
> Pw_forum mailing list
> Pw_forum at pwscf.org
> http://www.democritos.it/mailman/listinfo/pw_forum

-- 
=======================================================================
Axel Kohlmeyer   akohlmey at cmm.chem.upenn.edu   http://www.cmm.upenn.edu
   Center for Molecular Modeling   --   University of Pennsylvania
Department of Chemistry, 231 S.34th Street, Philadelphia, PA 19104-6323
tel: 1-215-898-1582,  fax: 1-215-573-6233,  office-tel: 1-215-898-5425
=======================================================================
If you make something idiot-proof, the universe creates a better idiot.




More information about the users mailing list