#!/usr/bin/perl if ($ARGV[0] eq 'help') { #Documentation print ' collect the DDBs from an abinit linear response calculations, from directories set with abi_setdir it requires 1 files: qpts.abi (which contains a list of N qpoints) It collect the N DDB files from the QPT_qx_qy_qz directories and rename them xo_qx_qy_qz_DDB it also creates the file files.ifc, for further use with ifc or anaddb ' } else { open (FICHIER0, "qpts.abi"); @map0 = ; &trim(@map0); $diro = `pwd`; chop($diro); #-------------------------------------------------------- $i=0; foreach $lign0 (@map0) { # each qpoint $i++; @lis0=split(/ /,$lign0); $lis1[0]=int($lis0[0]*100)/100; $lis1[1]=int($lis0[1]*100)/100; $lis1[2]=int($lis0[2]*100)/100; $nam0=QPT._.$lis1[0]._.$lis1[1]._.$lis1[2]; $nam1=xo_.$lis1[0]._.$lis1[1]._.$lis1[2]._DDB; push (@mapout,$nam1."\n"); # create dir and copy easy files # print $i,' ',$nam0,' ',$nam1,"\n"; print "cp $nam0/*DDB $nam1\n"; system("cp $nam0/*DDB $nam1"); } open (FICHIER2, ">files.ifc"); print FICHIER2 "final_DDB\n"; print FICHIER2 "Comment\n"; print FICHIER2 "$i\n"; print FICHIER2 @mapout; close(FICHIER2); } #-------------------------------------------------------- sub trim { foreach $lign (@_) { $lign=~s/ +/ /g; if (substr($lign,0,1) eq ' ') {substr($lign,0,1)=''} chop ($lign); } }