def main(): parser = ArgumentParser("Calculate a systematic series of k-point samples") parser.add_argument("-f", "--file", type=str, default="geometry.in", help="Crystal structure file") parser.add_argument("-t", "--type", type=str, default=None, help="Format of crystal structure file") parser.add_argument("--min", type=float, default=10, help="Minimum real-space cutoff / angstroms") parser.add_argument("--max", type=float, default=30, help="Maximum real-space cutoff / angstroms") args = parser.parse_args() if args.type: atoms = ase.io.read(args.file, format=args.type) else: atoms = ase.io.read(args.file) cutoffs = cutoff_series(atoms, args.min, args.max) kspacing = [np.pi / c for c in cutoffs] samples = [calc_kpt_tuple(atoms, cutoff_length=(cutoff - 1e-4)) for cutoff in cutoffs] print "Length cutoff KSPACING Samples" print "------------- -------- ------------" fstring = "{0:12.3f} {1:7.4f} {2:3d} {3:3d} {4:3d}" for cutoff, s, sample in zip(cutoffs, kspacing, samples): print fstring.format(cutoff, s, *sample)
def main(): parser = ArgumentParser("Calculate a systematic series of k-point samples") parser.add_argument("structure", type=str, help="Path to input file", nargs='?', default=None) parser.add_argument("-f", "--file", action="store", type=str, dest="file", default="geometry.in", help="Path to input file [default: ./geometry.in]") parser.add_argument('-t', '--type', type=str, default=None, help='Format of crystal structure file') parser.add_argument('--min', type=float, default=10, help='Minimum real-space cutoff / angstroms') parser.add_argument('--max', type=float, default=30, help='Maximum real-space cutoff / angstroms') args = parser.parse_args() if args.structure is None: filename = args.file else: filename = args.structure if args.type: atoms = ase.io.read(filename, format=args.type) else: atoms = ase.io.read(filename) cutoffs = cutoff_series(atoms, args.min, args.max) kspacing = [np.pi / c for c in cutoffs] samples = [ calc_kpt_tuple(atoms, cutoff_length=(cutoff - 1e-4)) for cutoff in cutoffs ] print("Length cutoff KSPACING Samples") print("------------- -------- ------------") fstring = "{0:12.3f} {1:7.4f} {2:3d} {3:3d} {4:3d}" for cutoff, s, sample in zip(cutoffs, kspacing, samples): print(fstring.format(cutoff, s, *sample))
def calc_grid(cutoff_length, mode='default', filename='geometry.in', filetype=False, realspace=False, pretty_print=False): if filetype: atoms = ase.io.read(filename, format=filetype) else: atoms = ase.io.read(filename) k_samples = calc_kpt_tuple( atoms, mode=mode, cutoff_length=cutoff_length, realspace=realspace) # Print vectors if pretty_print: print '{0:3.0f} {1:3.0f} {2:3.0f}'.format(*k_samples) else: return k_samples
def calc_grid(cutoff_length, mode='default', filename='geometry.in', filetype=False, realspace=False, pretty_print=False): if filetype: atoms = ase.io.read(filename, format=filetype) else: atoms = ase.io.read(filename) k_samples = calc_kpt_tuple(atoms, mode=mode, cutoff_length=cutoff_length, realspace=realspace) # Print vectors if pretty_print: print '{0:3.0f} {1:3.0f} {2:3.0f}'.format(*k_samples) else: return k_samples
def main(params=None): args = get_parser().parse_args(params) if args.type: atoms = ase.io.read(args.filename, format=args.type) else: atoms = ase.io.read(args.filename) cutoffs = cutoff_series(atoms, args.min, args.max) if args.castep: kspacing = [0.5 / c for c in cutoffs] else: kspacing = [np.pi / c for c in cutoffs] samples = [ calc_kpt_tuple(atoms, cutoff_length=(cutoff - 1e-4)) for cutoff in cutoffs ] if args.comma_sep: def print_sample(sample): return ' '.join((str(x) for x in sample)) print(','.join((print_sample(sample) for sample in samples))) else: if args.castep: print("Length cutoff MP SPACING Samples") print("------------- ---------- ------------") fstring = "{0:12.3f} {1:9.6f} {2:3d} {3:3d} {4:3d}" else: print("Length cutoff KSPACING Samples") print("------------- -------- ------------") fstring = "{0:12.3f} {1:7.4f} {2:3d} {3:3d} {4:3d}" for cutoff, s, sample in zip(cutoffs, kspacing, samples): print(fstring.format(cutoff, s, *sample))
def main(): parser = ArgumentParser("Calculate a systematic series of k-point samples") parser.add_argument('filename', nargs='?', type=str, default="geometry.in", help="Path to input file [default: ./geometry.in]") parser.add_argument('-t', '--type', type=str, default=None, help='Format of crystal structure file') parser.add_argument('--min', type=float, default=10, help='Minimum real-space cutoff / angstroms') parser.add_argument('--max', type=float, default=30, help='Maximum real-space cutoff / angstroms') parser.add_argument('--comma_sep', action='store_true', help='Output as comma-separated list on one line') parser.add_argument('--castep', action='store_true', help=('Provide CASTEP-like MP spacing instead of ' 'vasp-like KSPACING')) args = parser.parse_args() if args.type: atoms = ase.io.read(args.filename, format=args.type) else: atoms = ase.io.read(args.filename) cutoffs = cutoff_series(atoms, args.min, args.max) if args.castep: kspacing = [0.5 / c for c in cutoffs] else: kspacing = [np.pi / c for c in cutoffs] samples = [ calc_kpt_tuple(atoms, cutoff_length=(cutoff - 1e-4)) for cutoff in cutoffs ] if args.comma_sep: def print_sample(sample): return ' '.join((str(x) for x in sample)) print(','.join((print_sample(sample) for sample in samples))) else: if args.castep: print("Length cutoff MP SPACING Samples") print("------------- ---------- ------------") fstring = "{0:12.3f} {1:9.6f} {2:3d} {3:3d} {4:3d}" else: print("Length cutoff KSPACING Samples") print("------------- -------- ------------") fstring = "{0:12.3f} {1:7.4f} {2:3d} {3:3d} {4:3d}" for cutoff, s, sample in zip(cutoffs, kspacing, samples): print(fstring.format(cutoff, s, *sample))
def test_calc_kpt_tuple(atoms, expected, kwargs): assert kgrid.calc_kpt_tuple(atoms, **kwargs) == expected