def calculate(self, name, atoms): data = HaasTranBlahaBulkTask.calculate(self, name, atoms) sforces = - atoms.get_stress().ravel()*atoms.get_volume() rmssforces = np.sum(sforces**2)**0.5 data['relaxed fmax'] = rmssforces data['fmax'] = self.sfmax if 'energy' in data and 'relaxed energy' not in data: # no optimization performed data['relaxed energy'] = data['energy'] data['steps'] = 0 elif 'relaxed energy' in data: # optimization data['steps'] = self.ssteps if 'strain optimizer force calls' in data: data['optimizer force calls'] = data['strain optimizer force calls'] if data['relaxed fmax'] > data['fmax']: raise RuntimeError('Optimization failed to converge') return data
def calculate(self, name, atoms): data = HaasTranBlahaBulkTask.calculate(self, name, atoms) sforces = -atoms.get_stress().ravel() * atoms.get_volume() rmssforces = np.sum(sforces**2)**0.5 data['relaxed fmax'] = rmssforces data['fmax'] = self.sfmax if 'energy' in data and 'relaxed energy' not in data: # no optimization performed data['relaxed energy'] = data['energy'] data['steps'] = 0 elif 'relaxed energy' in data: # optimization data['steps'] = self.ssteps if 'strain optimizer force calls' in data: data['optimizer force calls'] = data[ 'strain optimizer force calls'] if data['relaxed fmax'] > data['fmax']: raise RuntimeError('Optimization failed to converge') return data
def __init__(self, xc='LDA', **kwargs): HaasTranBlahaBulkTask.__init__(self, xc, **kwargs)