Source code for w90utils.io.wout

"""Wannier90 I/O routines pertaining to WOUT files"""

import numpy as np


[docs]def read_centers_xyz(fname): with open(fname, 'r') as f: contents = f.readlines() centers = [] for line in contents[2:]: symbol = line.split()[0] tau = np.array(list(map(float, line.split()[1:]))) centers.append((symbol, tau)) return centers
[docs]def read_conv(fname): with open(fname, 'r') as f: lines = f.readlines() conv_data = [] data_lines = [] for line in lines: if line.strip().endswith('CONV'): data_lines.append(line) conv_data = np.array([list(map(float, line.split()[:4])) for line in data_lines[3:]]) conv_data = dict(list(zip(['iter', 'delta', 'gradient', 'spread', 'time'], conv_data.T))) conv_data['iter'] = conv_data['iter'].astype(int) return conv_data
[docs]def read_sprd(fname): with open(fname, 'r') as f: lines = f.readlines() sprd_data = {'D': [], 'OD': [], 'TOT': []} for line in lines: if line.strip().endswith('SPRD'): data = line.split() sprd_data['D'].append(float(data[1])) sprd_data['OD'].append(float(data[3])) sprd_data['TOT'].append(float(data[5])) return sprd_data