Beispiel #1
0
 def write_input(self, atoms, properties=None, systems_changes=None):
     from ase.io import write
     atoms.write(self.label + '.xyz', 'xyz')
     self.mopac_calc = Mopac(label=self.label)
     self.mopac_calc.parameters.update(self.mopacdict)
     self.ddmc_calc = dDMC(label=self.label)
     self.ddmc_calc.parameters.update(self.ddmcdict)
Beispiel #2
0
    def __init__(self, label='dftbddmc', atoms=None, dftbdict={}, ddmcdict={}, **kwargs):
        """Construct a DFTB+ and a dDMC calculator.
        """

        os.environ['ASE_DFTBDDMC_COMMAND'] = ''

        self.label = label
        self.dftbdict = dftbdict
        self.ddmcdict = ddmcdict
        
        ddmc_default_parameters = {}
        ddmc_default_parameters['param_a'] = 1.85705835084132
        ddmc_default_parameters['param_b'] = 1.01824853175310
        ddmc_default_parameters['param_c'] = 23.0
        ddmc_default_parameters['dftype'] = 3
        ddmc_default_parameters['tagtype'] = 'dftbp'

        for param in ddmc_default_parameters.keys():
            if not param in self.ddmcdict.keys():
                self.ddmcdict[param] = ddmc_default_parameters[param]


        restart = None
        ignore_bad_restart_file = None
        FileIOCalculator.__init__(self, restart, ignore_bad_restart_file,
                                  label, atoms, **kwargs)

        self.dftb_calc = Dftb(label=self.label)
        self.ddmc_calc = dDMC(label=self.label)
Beispiel #3
0
    def __setASECalculator(self):
        """Initialize the calculator and set the parameters"""

        method = self.definedParams['method']

        if method == 'dftb_std-dDMC':
            self.__setdDMCParams()
            from ase.calculators.dftbddmc import DftbdDMC
            self.calculator = DftbdDMC(atoms=self.mol,label='cazzo',dftbdict=self.__dftb_parameters, ddmcdict=self.__ddmc_parameters)
        elif method == 'dftb_std' or method == 'dftb_mio11':
            from ase.calculators.dftb import Dftb
            self.calculator = Dftb(atoms=self.mol,label='cazzo')
        elif method == 'dftb_std-D3':
            from ase.calculators.dftbd3h4 import DftbD3H4
            self.calculator = DftbD3H4(atoms=self.mol,label='cazzo',dftbdict=self.__dftb_parameters )
        elif method == 'dftb_std-D3H4':
            from ase.calculators.dftbd3h4 import DftbD3H4
            self.calculator = DftbD3H4(atoms=self.mol,label='cazzo',dftbdict=self.__dftb_parameters )
        elif method == 'dDMC':
            self.__setdDMCParams()
            from ase.calculators.ddmc import dDMC
            self.calculator = dDMC(atoms=self.mol, label='cazzo')
        else:
            raise ImplementationError(method,'Calculator for this method is not implemented')

        if self.definedParams['method'].find('dftb') > -1:
            self.calculator.parameters.update(self.__dftb_parameters)
        else:
            self.calculator.parameters.update(self.__ddmc_parameters)
Beispiel #4
0
 def write_input(self, atoms, properties=None, systems_changes=None):
     from ase.io import write
     atoms.write(self.label+'.xyz','xyz')
     self.mopac_calc = Mopac(label=self.label)
     self.mopac_calc.parameters.update(self.mopacdict)
     self.ddmc_calc = dDMC(label=self.label)
     self.ddmc_calc.parameters.update(self.ddmcdict)
Beispiel #5
0
    def __init__(self,
                 label='dftbddmc',
                 atoms=None,
                 dftbdict={},
                 ddmcdict={},
                 **kwargs):
        """Construct a DFTB+ and a dDMC calculator.
        """

        os.environ['ASE_DFTBDDMC_COMMAND'] = ''

        self.label = label
        self.dftbdict = dftbdict
        self.ddmcdict = ddmcdict

        ddmc_default_parameters = {}
        ddmc_default_parameters['param_a'] = 1.85705835084132
        ddmc_default_parameters['param_b'] = 1.01824853175310
        ddmc_default_parameters['param_c'] = 23.0
        ddmc_default_parameters['dftype'] = 3
        ddmc_default_parameters['tagtype'] = 'dftbp'

        for param in ddmc_default_parameters.keys():
            if not param in self.ddmcdict.keys():
                self.ddmcdict[param] = ddmc_default_parameters[param]

        restart = None
        ignore_bad_restart_file = None
        FileIOCalculator.__init__(self, restart, ignore_bad_restart_file,
                                  label, atoms, **kwargs)

        self.dftb_calc = Dftb(label=self.label)
        self.ddmc_calc = dDMC(label=self.label)
Beispiel #6
0
    def __setASECalculator(self):
        """Initialize the calculator and set the parameters"""

        method = self.definedParams['method']

        if method == 'dftb_std-dDMC':
            self.__setdDMCParams()
            from ase.calculators.dftbddmc import DftbdDMC
            self.calculator = DftbdDMC(atoms=self.mol,
                                       label='cazzo',
                                       dftbdict=self.__dftb_parameters,
                                       ddmcdict=self.__ddmc_parameters)
        elif method == 'dftb_std' or method == 'dftb_mio11':
            from ase.calculators.dftb import Dftb
            self.calculator = Dftb(atoms=self.mol, label='cazzo')
        elif method == 'dftb_std-D3':
            from ase.calculators.dftbd3h4 import DftbD3H4
            self.calculator = DftbD3H4(atoms=self.mol,
                                       label='cazzo',
                                       dftbdict=self.__dftb_parameters)
        elif method == 'dftb_std-D3H4':
            from ase.calculators.dftbd3h4 import DftbD3H4
            self.calculator = DftbD3H4(atoms=self.mol,
                                       label='cazzo',
                                       dftbdict=self.__dftb_parameters)
        elif method == 'dDMC':
            self.__setdDMCParams()
            from ase.calculators.ddmc import dDMC
            self.calculator = dDMC(atoms=self.mol, label='cazzo')
        else:
            raise ImplementationError(
                method, 'Calculator for this method is not implemented')

        if self.definedParams['method'].find('dftb') > -1:
            self.calculator.parameters.update(self.__dftb_parameters)
        else:
            self.calculator.parameters.update(self.__ddmc_parameters)
Beispiel #7
0
 def write_input(self, atoms, properties=None, systems_changes=None):
     self.gaus_calc = Gaussian(label=self.label)
     self.gaus_calc.parameters.update(self.gausdict)
     self.ddmc_calc = dDMC(label=self.label)
     self.ddmc_calc.parameters.update(self.ddmcdict)
Beispiel #8
0
                            fd = open('%s.%d%s.pckl' % (name, a, 'xyz'[i]),
                                      'w')
                            pickle.dump(force, fd)
                            fd.close()
    if parallel is not None:
        world.sum(F_ai)
    return F_ai


#test = Atoms('2N',positions=[(0.,0.,0.),(0.,0.,4.10)])
#test = molecule('C2H2')
test = sys.argv[1]
#test = Atoms('2Ar', position=[(0.,0.,0.),(0.,0.,3.)])

    
test.set_calculator(dDMC(label='S668-24BenzeneBenzenepipi-090',atoms=test,dftype='3',tagtype='column'))

print test.get_potential_energy()
numer =  numeric_forces(test, indices=None, axes=(0, 1, 2), d=0.001,
                   parallel=None, name=None)

anal = test.get_forces()

print 'Numerical Gradient: '
print numer
print
print 'Analitical Gradient: '
print anal
print
print 'Numerical/Analytical:'
print numer/anal
Beispiel #9
0
                                      'w')
                            pickle.dump(force, fd)
                            fd.close()
    if parallel is not None:
        world.sum(F_ai)
    return F_ai


#test = Atoms('2N',positions=[(0.,0.,0.),(0.,0.,4.10)])
#test = molecule('C2H2')
test = sys.argv[1]
#test = Atoms('2Ar', position=[(0.,0.,0.),(0.,0.,3.)])

test.set_calculator(
    dDMC(label='S668-24BenzeneBenzenepipi-090',
         atoms=test,
         dftype='3',
         tagtype='column'))

print test.get_potential_energy()
numer = numeric_forces(test,
                       indices=None,
                       axes=(0, 1, 2),
                       d=0.001,
                       parallel=None,
                       name=None)

anal = test.get_forces()

print 'Numerical Gradient: '
print numer
print
Beispiel #10
0
 def write_input(self, atoms, properties=None, systems_changes=None):
     self.gaus_calc = Gaussian(label=self.label)
     self.gaus_calc.parameters.update(self.gausdict)
     self.ddmc_calc = dDMC(label=self.label)
     self.ddmc_calc.parameters.update(self.ddmcdict)