#!/usr/local/Cellar/python/2.7.14/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python

import numpy as np
import argparse
from phonolammps import Phonolammps


parser = argparse.ArgumentParser(description='rfc_calc options')

parser.add_argument('lammps_input_file', metavar='lammps_file', type=str,
                    help='input file containing lammps script')

parser.add_argument('-o', metavar='file', type=str, default='FORCE_CONSTANTS',
                    help='force constants output file [default: FORCE_CONSTANTS]')

parser.add_argument('--dim', metavar='file', type=int, nargs=3,  default=[1, 1, 1],
                    help='dimensions of the supercell')

parser.add_argument('-p', action='store_true',
                   help='plot phonon band structure')

parser.add_argument('-c', '--cell', metavar='file', type=str, default=None,
                    help='generates a POSCAR type file containing the unit cell')

parser.add_argument('-pa', '--primitive_axis', metavar='F', type=float, nargs=9,  default=[1, 0, 0,
                                                                                           0, 1, 0,
                                                                                           0, 0, 1],
                    help='primitive axis')

parser.add_argument('--amplitude', type=str, default=0.01,
                    help='displacement distance [default: 0.01 angstrom]')

parser.add_argument('--log_show', action='store_true',
                   help='show LAMMPS log on screen')


args = parser.parse_args()

phlammps = Phonolammps(args.lammps_input_file,
                       supercell_matrix=np.diag(args.dim),
                       primitive_matrix=np.array(args.primitive_axis).reshape((3, 3)),
                       displacement_distance=args.amplitude,
                       show_log=args.log_show,
                       show_progress=True)

if args.p:
    phlammps.plot_phonon_dispersion_bands()

if args.cell is not None:
    print ('writing POSCAR file: {}'.format(args.cell))
    phlammps.write_unitcell_POSCAR(args.cell)

print ('writing force constants')
phlammps.write_force_constants(filename=args.o)