SCF DONE
1.000000000000000
30.0000000000000000 0.0000000000000000 0.0000000000000000
0.0000000000000000 30.0000000000000000 0.0000000000000000
0.0000000000000000 0.0000000000000000 30.0000000000000000
Ti O
2 4
Direct
0.6464566666666656 0.6448333333333309 0.6278799999999976
0.6868766666666630 0.6884999999999977 0.7054533333333310
0.6853766666666701 0.6920033333333322 0.6431533333333306
0.7078133333333341 0.7139733333333353 0.7533000000000030
0.6234800000000007 0.6190766666666647 0.5814200000000014
0.6493600000000015 0.6410499999999999 0.6899299999999968
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
####
Direct
####
0.00000000E+00
####
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
my $source = "./CONTCAR";
my $destination = "./OUTPUT";
open(IN, '<', $source) or die "Couldn't open $source: $!\n";
open(OUT, '>', $destination) or die "Couldn't write to $destination: $!\n";
my @data = map [ split ], grep /\S/, ;
foreach (@data) { print "$_\n"; }
for my $i (0 .. $#data) {
for my $j (0 .. $#data) {
next if $i == $j;
my @coords_i = @{$data[$i]}[0,1,2];
my @coords_j = @{$data[$j]}[0,1,2];
printf OUT "%s to %s Distance=%.5f\n",
$data[$i][0], $data[$j][0],
$data[$i][2], $data[$j][2],
distance(\@coords_i, \@coords_j);
}
}
sub distance {
my ($aa, $bb) = @_;
my ($x, $y, $z) = map { $aa->[$_] - $bb->[$_] } 0 .. $#$aa;
return sqrt(($x - $x)**2 + ($y - $y)**2 + ($z - $z)**2);
}
close IN;
close OUT;
print "Done.\n";
####
to 2 Distance=1.00000
1 to 3 Distance=1.00000
1 to 4 Distance=1.00000
1 to 5 Distance=1.00000
2 to 1 Distance=2.00000
2 to 3 Distance=2.00000
2 to 4 Distance=2.00000
2 to 5 Distance=2.00000
3 to 1 Distance=3.00000
3 to 2 Distance=3.00000
3 to 4 Distance=3.00000
3 to 5 Distance=3.00000
4 to 1 Distance=4.00000
4 to 2 Distance=4.00000
4 to 3 Distance=4.00000
4 to 5 Distance=4.00000
5 to 1 Distance=5.00000
5 to 2 Distance=5.00000
5 to 3 Distance=5.00000
5 to 4 Distance=5.00000
####
1 2 3
1 2 3
1 2 3
1 2 3