def simple(pot_family, import_from, queue, code, computer, no_import): load_dbenv_if_not_loaded() from aiida.orm import CalculationFactory, Code if not no_import: click.echo('importing POTCAR files...') with cli_spinner(): import_pots(import_from, pot_family) pot_cls = get_data_cls('vasp.potcar') pot_si = pot_cls.find_one(family=pot_family, full_name='Si') vasp_calc = CalculationFactory('vasp.vasp')() vasp_calc.use_structure(create_structure_Si()) vasp_calc.use_kpoints(create_kpoints()) vasp_calc.use_parameters(create_params_simple()) code = Code.get_from_string('{}@{}'.format(code, computer)) vasp_calc.use_code(code) vasp_calc.use_potential(pot_si, 'Si') vasp_calc.set_computer(code.get_computer()) vasp_calc.set_queue_name(queue) vasp_calc.set_resources({ 'num_machines': 1, 'num_mpiprocs_per_machine': 20 }) vasp_calc.label = 'Test VASP run' vasp_calc.store_all() vasp_calc.submit()
def wannrun(self): """Launch the Wannier90 calculation that returns the final tight-binding model and set results""" params = self.get_parameters() amnstep = self.get_attributes()['amnstep'] prev = self.get_step_calculations(self.amnrun) amncalc = prev.get(uuid=amnstep['uuid']) self.append_to_report('{}: retrieved amn calculation'.format( params.get('name'))) calc = CalculationFactory('vasp.wannier')() code = Code.get_from_string(params['wannier_x']) calc.use_code(code) calc.set_computer(code.get_computer()) calc.use_parameters(amncalc.inp.wannier_parameters) calc.use_data(amncalc.out.wannier_data) calc.label = params.get('name') + ': wannier run' calc.set_resources({'num_machines': 1}) calc.set_queue_name(amncalc.get_queue_name()) calc.description = calc.label calc.store_all() calc.set_extras({'experiment': 'tight-binding'}) self.group.add_nodes(calc) self.attach_calculation(calc) self.add_result('wannier_run', calc) self.append_to_report( '{}: starting wannier run, PK={}, uuid={}'.format( params.get('name'), calc.pk, calc.uuid)) self.add_attributes({'wannstep': {'pk': calc.pk, 'uuid': calc.uuid}}) self.next(self.exit)
def get_wannier_calc(self, win, wdat): """Initialize a Wannier90 calculation""" from aiida.orm import CalculationFactory, Code params = self.get_parameters() calc = CalculationFactory('vasp.wannier')() code = Code.get_from_string(params['wannier_code']) calc.use_code(code) calc.set_computer(code.get_computer()) calc.set_resources(params['resources']) queue = params.get('queue') or params.get('queue') calc.set_queue_name(queue) calc.use_parameters(win) calc.use_data(wdat) calc.label = params.get('label') calc.description = params.get('description') return calc