def create_new_fleurinp(self): """ create a new fleurinp from the old with certain parameters """ # TODO allow change of kpoint mesh?, tria? wf_dict = self.inputs.wf_parameters.get_dict() nkpts = wf_dict.get('nkpts', 500) # how can the user say he want to use the given kpoint mesh, ZZ nkpts : False/0 sigma = wf_dict.get('sigma', 0.005) emin = wf_dict.get('emin', -0.30) emax = wf_dict.get('emax', 0.80) fleurmode = FleurinpModifier(self.inputs.fleurinp) #change_dict = {'band': True, 'ndir' : -1, 'minEnergy' : self.inputs.wf_parameters.get_dict().get('minEnergy', -0.30000000), #'maxEnergy' : self.inputs.wf_parameters.get_dict().get('manEnergy','0.80000000'), #'sigma' : self.inputs.wf_parameters.get_dict().get('sigma', '0.00500000')} change_dict = {'band': True, 'ndir' : 0, 'minEnergy' : emin, 'maxEnergy' : emax, 'sigma' : sigma} #'ndir' : 1, 'pot8' : True fleurmode.set_inpchanges(change_dict) if nkpts: fleurmode.set_nkpts(count=nkpts) #fleurinp_new.replace_tag() fleurmode.show(validate=True, display=False) # needed? fleurinp_new = fleurmode.freeze() self.ctx.fleurinp1 = fleurinp_new
def test_fleurinp_modifier2(create_fleurinp, inpxml_etree): """Tests if fleurinp_modifier with various other modifations methods, the detailed tests for method functionality is tested elsewhere.""" from aiida_fleur.tools.xml_util import eval_xpath fleurinp_tmp = create_fleurinp(inpxmlfilefolder) etree = inpxml_etree(inpxmlfilefolder) fm = FleurinpModifier(fleurinp_tmp) actions = fm.get_avail_actions() assert isinstance(actions, dict) new_tag = eval_xpath(etree, '/fleurInput/calculationSetup/scfLoop') fm.delete_tag('/fleurInput/calculationSetup/scfLoop') fm.replace_tag('/fleurInput/calculationSetup/cutoffs', new_tag) fm.delete_att('/fleurInput/calculationSetup/soc', 'theta') fm.create_tag('/fleurInput/calculationSetup/soc', 'theta') fm.xml_set_all_text('/fleurInput/cell/symmetryOperations/symOp/row-1', 'test text') fm.xml_set_text_occ('/fleurInput/cell/symmetryOperations/symOp/row-1', 'test text') fm.xml_set_text('/fleurInput/cell/symmetryOperations/symOp/row-1', 'test text') fm.xml_set_all_attribv('/fleurInput/calculationSetup/soc', 'theta', 12) fm.xml_set_first_attribv('/fleurInput/calculationSetup/soc', 'theta', 12) fm.xml_set_attribv_occ('/fleurInput/calculationSetup/soc', 'theta', 12) fm.set_species_label(' 222', {'mtSphere': {'radius': 3.333}}) fm.set_atomgr_att_label(attributedict={'force': [('relaxXYZ', 'FFF')]}, atom_label=' 222') fm.set_atomgr_att(attributedict={'force': [('relaxXYZ', 'TFF')]}, species='Fe-1') fm.set_nkpts(500, gamma='T') fm.set_kpath({'gamma': (0, 0, 0), 'L': (0.1, 0.1, 0.1)}, 300) fm.add_num_to_att('/fleurInput/calculationSetup/soc', 'theta', 4) #fm.set_species1 fm.show()
#fleurmode.set_switch({'dos': True}) fleurmode.set_inpchanges({}) fleurmode.set_inpchanges({'dos': True}) tria = True nkpts = 800 change_dict = {'dos': True, 'ndir' : -1, 'minEnergy' : -0.8, 'maxEnergy' : 0.8, 'sigma' : 0.005} fleurmode.set_inpchanges(change_dict) if tria: change_dict = {'mode': 'tria'} fleurmode.set_inpchanges(change_dict) if nkpts: fleurmode.set_nkpts(count=nkpts) ''' fleurmode.set_species('W-1', {'radius' : 3.5}) fleurmode.change_atom('forces', True, position=(0.0, 0.0, 0.0)) fleurmode.set_xpath('/fleurinput/@dos', True) ''' ''' name = 'Na-1' xpathn = '/fleurInput/atomSpecies/species[@name = "{}"]/mtSphere'.format(name)# 'radius': attributename = 'radius' attribv = 0.0000 fleurmode.xml_set_all_attribv(xpathn, attributename, attribv) xpathn = '/fleurInput/atomSpecies/species/mtSphere' xpathn = '/fleurInput'