def __init__(self,
                 task_name,
                 task_directory,
                 structure_filename,
                 restart=False,
                 fullauto=False,
                 temperature=None,
                 pressure=0,
                 time_total=None,
                 time_step=None,
                 supercell=[10, 10, 10]):

        assert temperature is not None
        assert time_total is not None
        assert time_step is not None

        LammpsSimulation.__init__(self,
                                  task_name=task_name,
                                  task_directory=task_directory,
                                  structure_filename=structure_filename)

        self.temperature = temperature
        self.pressure = pressure

        self.time_total = time_total
        self.time_step = time_step

        self.supercell = supercell

        self.lammps_out_fn = 'lammps.out'
        self.lattice_fn = 'lattice.out'
示例#2
0
    def get_conditions_ready(self):
        LammpsSimulation.get_conditions_ready(self)

        if self.bulk_structure_name is not None:
            _is_components_exist = []
            for k, v in self.bulk_lattice_components.items():
                _is_components_exist.append(v is not None)
            _all_components_exist = all(_is_components_exist)
            self.conditions_READY['bulk_lattice_components'] =\
                    _all_components_exist
示例#3
0
    def __init__(self,
                 task_name,
                 task_directory,
                 structure_filename,
                 restart=False,
                 fullauto=False):

        _task_type = 'lmps_min_pos'
        LammpsSimulation.__init__(self,
                                  task_name=task_name,
                                  task_directory=task_directory,
                                  task_type=_task_type,
                                  structure_filename=structure_filename,
                                  restart=restart,
                                  fullauto=fullauto)
示例#4
0
def test____init___():
    task_name = configuration['task']['task_name']
    task_directory = configuration['task']['task_directory']
    structure_filename = configuration['structure']['filename']
    restart = False
    fullauto = False

    cleanup(task_directory)
    assert not os.path.exists(task_directory)
    #<--- code being tested
    from pypospack.task.lammps import LammpsSimulation
    lammps_task = LammpsSimulation(task_name=task_name,
                                   task_directory=task_directory,
                                   structure_filename=structure_filename)

    #<--- check directory structure
    assert os.path.isdir(os.path.abspath(lammps_task.task_directory))
    assert os.listdir(lammps_task.task_directory) == []
    #<--- check attributes
    assert lammps_task.task_name == task_name
    assert os.path.abspath(lammps_task.task_directory)\
            == os.path.abspath(task_directory)
    assert lammps_task.task_type == 'single_point'
    assert lammps_task.lammps_bin == os.environ['LAMMPS_BIN']
    assert lammps_task.lammps_input_filename == 'lammps.in'
    assert lammps_task.lammps_output_filename == 'lammps.out'
    assert lammps_task.lammps_structure_filename == 'lammps.structure'
    # assert lammps_task.lammps_eam_filename is None
    assert lammps_task.potential is None
    assert lammps_task.structure_filename == structure_filename
    assert isinstance(lammps_task.structure, crystal.SimulationCell)

    assert lammps_task.status == 'INIT'
    def _lammps_input_create_atoms(self):
        str_out = LammpsSimulation._lammps_input_create_atoms(self)
        str_out += "replicate {} {} {}\n".format(self.supercell[0],
                                                 self.supercell[1],
                                                 self.supercell[2])
        str_out += "change_box all x scale 1 y scale 1 z scale 1 remap\n"

        return str_out
示例#6
0
def test__on_init():
    symbols = configuration['potential']['symbols']
    task_name = configuration['task']['task_name']
    task_directory = configuration['task']['task_directory']
    structure_filename = configuration['structure']['filename']
    restart = False
    fullauto = False

    cleanup(task_directory)
    assert not os.path.exists(task_directory)
    assert 'potential' in configuration
    assert 'parameters' in configuration
    #<--- code setup
    from pypospack.task.lammps import LammpsSimulation
    lammps_task = LammpsSimulation(task_name=task_name,
                                   task_directory=task_directory,
                                   structure_filename=structure_filename)
    #<--- test setup
    assert os.path.exists(task_directory)
    assert lammps_task.status == 'INIT'
    assert lammps_task.potential is None
    #<--- code being testing
    lammps_task.on_init(configuration)
    #<--- expected behavior
    lammps_setfl_filename = '{}.eam.alloy'.format("".join(symbols))
    #<--- check directory structure
    assert os.path.isdir(os.path.abspath(lammps_task.task_directory))
    #<--- check attributes
    assert lammps_task.task_name == task_name
    assert os.path.abspath(lammps_task.task_directory)\
            == os.path.abspath(task_directory)
    assert lammps_task.task_type == 'single_point'
    assert lammps_task.lammps_bin == os.environ['LAMMPS_BIN']
    assert lammps_task.lammps_input_filename == 'lammps.in'
    assert lammps_task.lammps_output_filename == 'lammps.out'
    assert lammps_task.lammps_structure_filename == 'lammps.structure'
    assert lammps_task.lammps_setfl_filename is None
    assert isinstance(lammps_task.potential, potential.Potential)
    assert lammps_task.structure_filename == structure_filename
    assert isinstance(lammps_task.structure, crystal.SimulationCell)
    assert lammps_task.process is None

    if len(lammps_task.conditions_READY) == 0:
        assert lammps_task.status == 'READY'
    else:
        assert lammps_task.status == 'CONFIG'
def test__configure_potential():
    #<--- expected behavior
    symbols = configuration['potential']['symbols']
    task_name = configuration['task']['task_name']
    task_directory = configuration['task']['task_directory']
    structure_filename = configuration['structure']['filename']
    restart = False
    fullauto = False

    cleanup(task_directory)
    assert not os.path.exists(task_directory)
    assert 'potential' in configuration
    assert 'parameters' in configuration
    #<--- code setup
    from pypospack.task.lammps import LammpsSimulation
    lammps_task = LammpsSimulation(task_name=task_name,
                                   task_directory=task_directory,
                                   structure_filename=structure_filename)
    lammps_task.configuration = configuration
    #<--- test setup
    assert os.path.exists(task_directory)
    assert lammps_task.status == 'INIT'
    assert lammps_task.potential is None
    assert lammps_task.configuration['potential']['potential_type'] \
            == configuration['potential']['potential_type']

    #<--- code being testing
    lammps_task.configure_potential()

    #<--- testing to see if the potential is setup correctly
    assert isinstance(lammps_task.potential, potential.Potential)
    if type(lammps_task.potential) == potential.EamPotential:
        assert isinstance(lammps_task.potential.obj_pair,
                          potential.PairPotential)
        assert isinstance(lammps_task.potential.obj_density,
                          potential.EamDensityFunction)
        assert isinstance(lammps_task.potential.obj_embedding,
                          potential.EamEmbeddingFunction)

    if type(lammps_task.potential) == potential.EamPotential \
            and 'setfl_filename' in configuration['potential']:
        if configuration['potential']['setfl_filename'] is not None:
            lammps_setfl_filename = '{}.eam.alloy'.format("".join(symbols))
            assert os.path.isfile(
                os.path.join(task_directory, lammps_setfl_filename))
示例#8
0
    def on_init(self, configuration=None, results=None):
        LammpsSimulation.on_init(self, configuration=configuration)

        if 'bulk_structure' in configuration:
            self.bulk_structure_name = configuration['bulk_structure']
            self.bulk_structure_filename = configuration[
                'bulk_structure_filename']
            self.bulk_structure_lattice = OrderedDict()

            _lattice_parameter_variables = [
                'lmps_min_all.a11', 'lmps_min_all.a12', 'lmps_min_all.a13',
                'lmps_min_all.a21', 'lmps_min_all.a22', 'lmps_min_all.a23',
                'lmps_min_all.a31', 'lmps_min_all.a32', 'lmps_min_all.a33'
            ]

            self.bulk_lattice_components = OrderedDict()
            for k in _lattice_parameter_variables:
                _k = '{}.{}'.format(self.bulk_structure_name, k)
                self.bulk_lattice_components[_k] = None
示例#9
0
    def __init__(self,
                 task_name,
                 task_directory,
                 structure_filename,
                 restart=False,
                 fullauto=False):
        _task_type = 'lmps_min_sf'

        self.bulk_structure_name = None
        self.bulk_structure_filename = None
        self.bulk_structure_lattice = None

        LammpsSimulation.__init__(self,
                                  task_name=task_name,
                                  task_directory=task_directory,
                                  task_type=_task_type,
                                  structure_filename=structure_filename,
                                  restart=restart,
                                  fullauto=fullauto)
def test__on_ready():
    symbols = configuration['potential']['symbols']
    task_name = configuration['task']['task_name']
    task_directory = configuration['task']['task_directory']
    structure_filename = configuration['structure']['filename']
    restart = False
    fullauto = False

    cleanup(task_directory)
    assert not os.path.exists(task_directory)
    assert 'potential' in configuration
    assert 'parameters' in configuration
    #<--- code setup
    from pypospack.task.lammps import LammpsSimulation
    lammps_task = LammpsSimulation(task_name=task_name,
                                   task_directory=task_directory,
                                   structure_filename=structure_filename)
    lammps_task.on_init(configuration)
    lammps_task.on_config(configuration)
    #<--- test setup
    assert os.path.exists(task_directory)
    assert lammps_task.status == 'READY'
    #<--- code being testing
    lammps_task.on_ready(configuration)
    #<--- expected behavior
    lammps_setfl_filename = '{}.eam.alloy'.format("".join(symbols))

    #<--- check to see if the configuration dictionaries were setup correctly
    assert type(lammps_task.conditions_INIT) == OrderedDict
    assert type(lammps_task.conditions_CONFIG) == OrderedDict
    assert type(lammps_task.conditions_READY) == OrderedDict
    assert type(lammps_task.conditions_RUNNING) == OrderedDict
    assert type(lammps_task.conditions_POST) == OrderedDict
    assert type(lammps_task.conditions_FINISHED) == OrderedDict

    assert os.path.isfile(os.path.join(task_directory, lammps_setfl_filename))

    assert lammps_task.conditions_INIT['task_directory_created']
    assert all([v for k, v in lammps_task.conditions_INIT.items()]) == True
    assert lammps_task.conditions_CONFIG['potential_initialized'] == True
    assert lammps_task.conditions_CONFIG['parameters_processed'] == True
    assert all([v for k, v in lammps_task.conditions_CONFIG.items()]) == True
    assert all([v for k, v in lammps_task.conditions_READY.items()]) == True
    assert lammps_task.conditions_RUNNING['process_initialized'] == True
    assert all([v for k, v in lammps_task.conditions_RUNNING.items()]) == True
    assert lammps_task.conditions_POST['process_finished'] == False
    assert all([v for k, v in lammps_task.conditions_POST.items()]) == False
    assert all([v
                for k, v in lammps_task.conditions_FINISHED.items()]) == False
示例#11
0
def test__on_ready():
    task_name = configuration['task']['task_name']
    task_directory = configuration['task']['task_directory']
    structure_filename = configuration['structure']['filename']
    restart = False
    fullauto = False

    cleanup(task_directory)
    assert not os.path.exists(task_directory)
    assert 'potential' in configuration
    assert 'parameters' in configuration
    #<--- code setup
    from pypospack.task.lammps import LammpsSimulation
    lammps_task = LammpsSimulation(task_name=task_name,
                                   task_directory=task_directory,
                                   structure_filename=structure_filename)
    lammps_task.on_init(configuration)
    lammps_task.on_config(configuration)
    #<--- test setup
    assert os.path.exists(task_directory)
    assert lammps_task.status == 'READY'
    #<--- code being testing
    lammps_task.on_ready(configuration)

    assert type(lammps_task.conditions_INIT) == OrderedDict
    assert type(lammps_task.conditions_CONFIG) == OrderedDict
    assert type(lammps_task.conditions_READY) == OrderedDict
    assert type(lammps_task.conditions_RUNNING) == OrderedDict
    assert type(lammps_task.conditions_POST) == OrderedDict
    assert type(lammps_task.conditions_FINISHED) == OrderedDict

    assert lammps_task.conditions_INIT['task_directory_created']
    assert all([v for k, v in lammps_task.conditions_INIT.items()]) == True
    assert lammps_task.conditions_CONFIG['potential_initialized'] == True
    assert lammps_task.conditions_CONFIG['parameters_processed'] == True
    assert all([v for k, v in lammps_task.conditions_CONFIG.items()]) == True
    assert all([v for k, v in lammps_task.conditions_READY.items()]) == True
    #assert lammps_task.conditions_RUNNING['process_initialized']== False
    #assert all([v for k,v in lammps_task.conditions_RUNNING.items()]) == False
    assert lammps_task.conditions_POST['process_finished'] == False
    assert all([v for k, v in lammps_task.conditions_POST.items()]) == False
    assert all([v
                for k, v in lammps_task.conditions_FINISHED.items()]) == False
示例#12
0
def test____init___():
    symbols = configuration['potential']['symbols']
    task_name = configuration['task']['task_name']
    task_directory = configuration['task']['task_directory']
    structure_filename = configuration['structure']['filename']
    eam_setfl_filename = configuration['potential']['setfl_filename']
    restart = False
    fullauto = False

    cleanup(task_directory)
    assert not os.path.exists(task_directory)
    assert type(eam_setfl_filename) is str
    assert type(structure_filename) is str
    poscar = vasp.Poscar()
    poscar.read(structure_filename)
    assert os.path.isfile(eam_setfl_filename)
    assert os.path.isfile(structure_filename)
    #<--- code being tested
    from pypospack.task.lammps import LammpsSimulation
    lammps_task = LammpsSimulation(task_name=task_name,
                                   task_directory=task_directory,
                                   structure_filename=structure_filename)

    #<--- expected behavior
    lammps_setfl_filename = '{}.eam.alloy'.format("".join(symbols))
    #<--- check directory structure
    assert os.path.isdir(os.path.abspath(lammps_task.task_directory))
    assert os.listdir(lammps_task.task_directory) == []
    #<--- check attributes
    assert lammps_task.task_name == task_name
    assert os.path.abspath(lammps_task.task_directory)\
            == os.path.abspath(task_directory)
    assert lammps_task.task_type == 'single_point'
    assert lammps_task.lammps_bin == os.environ['LAMMPS_BIN']
    assert lammps_task.lammps_input_filename == 'lammps.in'
    assert lammps_task.lammps_output_filename == 'lammps.out'
    assert lammps_task.lammps_structure_filename == 'lammps.structure'
    assert lammps_task.lammps_setfl_filename == None
    assert lammps_task.potential is None
    assert lammps_task.structure_filename == structure_filename
    assert isinstance(lammps_task.structure, crystal.SimulationCell)

    assert lammps_task.status == 'INIT'
示例#13
0
 def on_ready(self,configuration=None,results=None):
     LammpsSimulation.on_ready(
             self,
             configuration=configuration,
             results=results)
    def on_post(self, configuration=None):
        self._get_lattice_parameter_from_lattice_out_file(
            filename=os.path.join(self.task_directory, self.lattice_fn),
            supercell=self.supercell)

        LammpsSimulation.on_post(self, configuration=configuration)
示例#15
0
print('poscar_filename={}'.format(Ni_structure_definition['filename']))
assert os.path.isfile(Ni_structure_definition['filename'])

Ni_task_configuration = OrderedDict()
Ni_task_configuration['task'] = OrderedDict()
Ni_task_configuration['task']['task_name'] = 'Ni_fcc_unit.E_min_all'
Ni_task_configuration['task']['task_directory'] = 'Ni_fcc_.E_min_all'
Ni_task_configuration['task_type'] = 'min_none'
Ni_task_configuration['potential'] = Ni_eam_potential_definition
Ni_task_configuration['parameters'] = Ni_eam_parameters
Ni_task_configuration['structure'] = Ni_structure_definition

configuration = Ni_task_configuration

task_name = configuration['task']['task_name']
task_directory = configuration['task']['task_directory']
structure_filename = configuration['structure']['filename']
restart = False
fullauto = False

from pypospack.task.lammps import LammpsSimulation
lammps_task = LammpsSimulation(task_name=task_name,
                               task_directory=task_directory,
                               structure_filename=structure_filename)
lammps_task.on_init(configuration)
lammps_task.on_config(configuration)
lammps_task.on_ready(configuration)
lammps_task.on_running(configuration)
lammps_task.on_post(configuration)
示例#16
0
 def on_ready(self, configuration=None, results=None):
     if self.bulk_structure_name is not None:
         self.__modify_structure(results=results)
     LammpsSimulation.on_ready(self, configuration=configuration)
示例#17
0
 def on_config(self, configuration, results=None):
     if self.bulk_structure_name is not None:
         for k, v in results.items():
             if k in self.bulk_lattice_components:
                 self.bulk_lattice_components[k] = v
     LammpsSimulation.on_config(self, configuration=None, results=None)
示例#18
0
 def postprocess(self):
     LammpsSimulation.postprocess(self)
示例#19
0
 def on_post(self, configuration=None):
     self.__get_results_from_lammps_outputfile()
     LammpsSimulation.on_post(self, configuration=configuration)
示例#20
0
 def on_config(self,configuration,results=None):
     LammpsSimulation.on_config(self,configuration=None,results=None)
示例#21
0
 def on_init(self,configuration=None,results=None):
     LammpsSimulation.on_init(self,configuration=configuration)