#!/usr/bin/perl
# getfreq.pl
#   Get frequency analysis data from Gaussian output
#                                 1 Feb 2003 by NOMOTO Tomono
#
# Usage: getfreq.pl < gaussian_output_file > destination_file
#
while(<>)
{
	chop;
	if($IsFreq)
	{
		@line = ("","","","","","","","");
		@line = split(/ +/, $_); #print "$line[0], $line[1], $line[2], $line[3], \n";
		if($line[1] eq "Frequencies"){ @freq  = ($line[3],$line[4],$line[5]); }
		elsif($line[1] eq "Red.")    { @mass  = ($line[4],$line[5],$line[6]); }
		elsif($line[1] eq "Frc")     { @frc   = ($line[4],$line[5],$line[6]); }
		elsif($line[1] eq "IR")      { @ir    = ($line[4],$line[5],$line[6]); }
		elsif($line[1] eq "Raman")   { @raman = ($line[4],$line[5],$line[6]); }
		elsif($line[1] eq "Depolar") { @depolar = ($line[3],$line[4],$line[5]); }
		elsif($line[1] eq "Atom") 
		{
			&printall;
#			&print_freq_ir_raman;
			@idx     = ("","","");
			@sym     = ("","","");
			@freq    = ("","","");
			@mass    = ("","","");
			@frc     = ("","","");
			@ir      = ("","","");
			@raman   = ("","","");
			@depolar = ("","","");
		}
		elsif($line[1] =~ /^[0-9]+$/ && !($line[4] =~ /[0-9]+/))
		{
			@idx = ($line[1],$line[2],$line[3]);
		}
		elsif($line[1] =~ /^[A-Z?]/)
		{
			@sym = ($line[1],$line[2],$line[3]);
		}
	}
	if($IsFreq && $line[0] eq "" && $line[1] eq "")
		{ $IsFreq = 0;}
	if($_ =~ /^ reduced masses / )
		{ $IsFreq = 1;}
}

sub printall
{
	print $idx[0] .",". $sym[0] .",". $freq[0] .",". $mass[0] .",". $frc[0] .",". $ir[0] .",". $raman[0] .",". $depolar[0] ."\n";
	print $idx[1] .",". $sym[1] .",". $freq[1] .",". $mass[1] .",". $frc[1] .",". $ir[1] .",". $raman[1] .",". $depolar[1] ."\n";
	print $idx[2] .",". $sym[2] .",". $freq[2] .",". $mass[2] .",". $frc[2] .",". $ir[2] .",". $raman[2] .",". $depolar[2] ."\n";
}

sub print_freq_ir_raman
{
	print $freq[0] .",". $ir[0] .",". $raman[0] ."\n";
	print $freq[1] .",". $ir[1] .",". $raman[1] ."\n";
	print $freq[2] .",". $ir[2] .",". $raman[2] ."\n";
}
