Beispiel #1
0
 def modvals(self, m):
     for key in m:
         if key == 'scale':
             if turbogo_helpers.is_positive_float(m[key]):
                 self.scale = m[key]
             else:
                 raise(FreehError("Bad arg for {}: {}").format(key, m[key]))
         elif key == 'tstart':
             if turbogo_helpers.is_positive_float(m[key]):
                 self.tstart = m[key]
             else:
                 raise(FreehError("Bad arg for {}: {}").format(key, m[key]))
         elif key == 'tend':
             if turbogo_helpers.is_positive_float(m[key]):
                 self.tend = m[key]
             else:
                 raise(FreehError("Bad arg for {}: {}").format(key, m[key]))
         elif key == 'numt':
             if turbogo_helpers.is_positive_int(m[key]):
                 self.numt = m[key]
             else:
                 raise(FreehError("Bad arg for {}: {}").format(key, m[key]))
         elif key == 'pstart':
             if turbogo_helpers.is_positive_float(m[key]):
                 self.pstart = m[key]
             else:
                 raise(FreehError("Bad arg for {}: {}").format(key, m[key]))
         elif key == 'pend':
             if turbogo_helpers.is_positive_float(m[key]):
                 self.pend = m[key]
             else:
                 raise(FreehError("Bad arg for {}: {}").format(key, m[key]))
         elif key == 'nump':
             if turbogo_helpers.is_positive_int(m[key]):
                 self.nump = m[key]
             else:
                 raise(FreehError("Bad arg for {}: {}").format(key, m[key]))
         else:
             raise FreehError(
                 "Invalid arg passed to freeh: {}".format(key))
     modvalstring = ''
     if self.tstart:
         modvalstring += "tstart={} ".format(self.tstart)
     if self.tend:
         modvalstring += "tend={} ".format(self.tend)
     if self.numt:
         modvalstring += "numt={} ".format(self.numt)
     if self.pstart:
         modvalstring += "pstart={} ".format(self.pstart)
     if self.pend:
         modvalstring += "pend={} ".format(self.pend)
     if self.nump:
         modvalstring += "nump={} ".format(self.nump)
     return modvalstring.strip()
Beispiel #2
0
 def make_parameters (self, job):
     """Convert job parameters into cosmoprep parameters"""
     try:
         if turbogo_helpers.is_positive_float(job.cosmo):
             self.epsilon = job.cosmo
         else:
             #cosmo can be called with infinite epsilon (default)
             self.epsilon = ''
         logging.debug('parameters made')
     except Exception as e:
         self.epsilon = ''
         logging.warn("Error in make_parameters: {}".format(e))
Beispiel #3
0
    def run_cosmo(self):
        """Run cosmo depending on parameters list"""
        try:
            out = self.cosmo.expect([
                'Keyword $cosmo already exists',
                'epsilon'
                ])
            if out == 0:
                self.cosmo.sendline('d')
                logging.debug('Cleared old cosmo data')
            if self.epsilon and turbogo_helpers.is_positive_float(self.epsilon):
                self.cosmo.sendline(self.epsilon)
                logging.debug('Epsilon of {} set'.format(self.epsilon))
            else:
                self.cosmo.sendline('')
                logging.debug('Default epsilon set')
            #lots of opportunity to expand cosmo interaction here
            self.cosmo.expect('refind')
            self.cosmo.sendline('')
            self.cosmo.expect('LR terms on')
            self.cosmo.sendline('')
            self.cosmo.expect('COSMO RF equil. is not set')
            self.cosmo.sendline('')
            self.cosmo.expect('nppa')
            self.cosmo.sendline('')
            self.cosmo.expect('nspa')
            self.cosmo.sendline('')
            self.cosmo.expect('disex')
            self.cosmo.sendline('')
            self.cosmo.expect('rsolv')
            self.cosmo.sendline('')
            self.cosmo.expect('routf')
            self.cosmo.sendline('')
            self.cosmo.expect('cavity')
            self.cosmo.sendline('')
            self.cosmo.expect('amat')
            self.cosmo.sendline('')
            self.cosmo.expect('if radius is in Bohr units append b')
            self.cosmo.sendline('r all b')
            self.cosmo.sendline('*')
            self.cosmo.expect('COSMO output file')
            self.cosmo.sendline('')
            self.cosmo.expect('y/n, default = n')
            self.cosmo.sendline('')
        except Exception as e:
            logging.warn('Cosmo Error: {}'.format(e))
            raise CosmoError('Error in running cosmoprep. Error: {}'.format(e))

        exitcode = self._end_cosmo()
        return exitcode