def test_properties_big(rng): nspins, nkpts, nbands = 2, 3, 5 natoms = 4 results = dict( natoms=natoms, energy=rng.rand(), free_energy=rng.rand(), energies=rng.rand(natoms), forces=rng.rand(natoms, 3), stress=rng.rand(6), stresses=rng.rand(natoms, 6), nspins=nspins, nkpts=nkpts, nbands=nbands, eigenvalues=rng.rand(nspins, nkpts, nbands), occupations=rng.rand(nspins, nkpts, nbands), fermi_level=rng.rand(), ibz_kpoints=rng.rand(nkpts, 3), kpoint_weights=rng.rand(nkpts), ) props = Properties(results) #assert set(out) == all_outputs, all_outputs ^ set(out) for name in all_outputs: assert name in props, name obj = props[name] #obj = getattr(out, name) print(name, obj)
def read_results(self): from ase.outputs import Properties reader = ElkReader(self.directory) dct = dict(reader.read_everything()) converged = dct.pop('converged') if not converged: raise RuntimeError('Did not converge') # (Filter results thorugh Properties for error detection) props = Properties(dct) self.results = dict(props)
def export_properties(self): return Properties(self.results)
def props(): return Properties({})
def forceprop(): dct = dict(forces=np.zeros((natoms, 3))) props = Properties(dct) return props