def get_structure(self, job_specifier, iteration_step=-1, wrap_atoms=True): """ Gets the structure from a given iteration step of the simulation (MD/ionic relaxation). For static calculations there is only one ionic iteration step Args: job_specifier (str, int): name of the job or job ID iteration_step (int): Step for which the structure is requested wrap_atoms (bool): True if the atoms are to be wrapped back into the unit cell Returns: atomistics.structure.atoms.Atoms object """ job = self.inspect(job_specifier) snapshot = Atoms().from_hdf(job["input"], "structure") if "output" in job.project_hdf5.list_groups() and iteration_step != 0: snapshot.cell = job.get("output/generic/cells")[iteration_step] snapshot.positions = job.get("output/generic/positions")[iteration_step] if "indices" in job.get("output/generic").list_nodes(): snapshot.indices = job.get("output/generic/indices")[iteration_step] if ( "dft" in job["output/generic"].list_groups() and "atom_spins" in job["output/generic/dft"].list_nodes() ): snapshot.set_initial_magnetic_moments( job.get("output/generic/dft/atom_spins")[iteration_step] ) if wrap_atoms: return snapshot.center_coordinates_in_unit_cell() else: return snapshot
def get_structure(self, job_specifier, iteration_step=-1): """ Gets the structure from a given iteration step of the simulation (MD/ionic relaxation). For static calculations there is only one ionic iteration step Args: job_specifier (str, int): name of the job or job ID iteration_step (int): Step for which the structure is requested Returns: atomistics.structure.atoms.Atoms object """ job = self.inspect(job_specifier) snapshot = Atoms().from_hdf(job['input'], 'structure') if 'output' in job.project_hdf5.list_groups() and iteration_step != 0: snapshot.cell = job.get("output/generic/cells")[iteration_step] snapshot.positions = job.get( "output/generic/positions")[iteration_step] if 'indices' in job.get('output/generic').list_nodes(): snapshot.indices = job.get( "output/generic/indices")[iteration_step] if 'dft' in job['output/generic'].list_groups( ) and 'atom_spins' in job['output/generic/dft'].list_nodes(): snapshot.set_initial_magnetic_moments( job.get("output/generic/dft/atom_spins")[iteration_step]) return snapshot