Exemple #1
0
    def read(self):
        """

        """
        tree = os.walk(self.ps_name+'_df_run_full')
        for dirs in tree:
            file_name = os.path.join(dirs[0], 'deltadata.txt')
            if os.path.isfile(file_name):
                f = open(file_name, 'r')
                lines = f.readlines()
                try:
                    df = float(lines[0].split()[3])
                except ValueError:
                    print('warning', lines[0].split()[3])
                    df = abs(complex(lines[0].split()[3]))
                #print lines[0], df
                #print dirs[0]
                location = os.path.split(dirs[0])
                #print location
                base = os.path.join(*location[0:len(location)-1])
                out_file = os.path.join(base, 't3', 'outdata', 'out_GSR.nc')
                #print out_file
                out = NetcdfReader(out_file)
                if not isinstance(out.read_value('ecut'), collections.Iterable):
                    ecut = out.read_value('ecut')
                    etotal = out.read_value('etotal')
                elif not isinstance(out.read_value('ecut')[0], collections.Iterable):
                    ecut = out.read_value('ecut')[0]
                    etotal = out.read_value('etotal')[0]
                else:
                    raise Exception
                self.etotal_data.update({ecut: etotal})
                self.df_data.update({ecut: df})
        self.pseudo.dojo_report['delta_factor'] = self.df_data
        self.pseudo.dojo_report['total_energy'] = self.etotal_data
Exemple #2
0
 def read_convergence_data(self, data_dir):
     gwrun = os.path.join(data_dir, 'out_SIGRES.nc')
     scfrunout = os.path.join(data_dir, 'out_OUT.nc')
     scfruneig = os.path.join(data_dir, 'out_EIG.nc')
     results = {}
     if os.path.isfile(gwrun):
         # return the gap at gamma
         data = NetcdfReader(gwrun)
         data.print_tree()
         if not isinstance(data.read_value('ecuteps'), collections.Iterable):
             ecuteps = data.read_value('ecuteps')
         elif not isinstance(data.read_value('ecuteps')[0], collections.Iterable):
             ecuteps = data.read_value('ecuteps')[0]
         else:
             raise Exception
         if not isinstance(data.read_value('sigma_nband'), collections.Iterable):
             sigma_nband = data.read_value('sigma_nband')
         elif not isinstance(data.read_value('sigma_nband')[0], collections.Iterable):
             sigma_nband = data.read_value('sigma_nband')[0]
         else:
             raise Exception
         gwgap = data.read_value('egwgap')[0][0]
         #gwgap = min(data.read_value('egwgap')[0])
         if not isinstance(gwgap, float):
             raise Exception
         results = {'ecuteps': float(Ha_to_eV * ecuteps),
                    'nbands': int(sigma_nband),
                    'gwgap': float(gwgap)}
         data.close()
         return results
     if os.path.isfile(scfruneig):
         # return the lowest and hightest eigenvalue at gamma
         data = NetcdfReader(scfruneig)
         out = NetcdfReader(scfrunout)
         if data.read_value('Eigenvalues')[0][0][-1] < 2.0:  # bad way to select only the scf results ..
             if not isinstance(out.read_value('ecut'), collections.Iterable):
                 ecut = out.read_value('ecut')
             elif not isinstance(out.read_value('ecut')[0], collections.Iterable):
                 ecut = out.read_value('ecut')[0]
             else:
                 raise Exception
             results = {'ecut': Ha_to_eV * ecut,
                        'min': data.read_value('Eigenvalues')[0][0][0]*Ha_to_eV,
                        'max': data.read_value('Eigenvalues')[0][0][-1]*Ha_to_eV,
                        'full_width': (data.read_value('Eigenvalues')[0][0][-1] -
                                       data.read_value('Eigenvalues')[0][0][0])*Ha_to_eV}
             data.close()
         return results
Exemple #3
0
 def read_convergence_data(self, data_dir):
     gwrun = os.path.join(data_dir, 'out_SIGRES.nc')
     scfrunout = os.path.join(data_dir, 'out_OUT.nc')
     scfruneig = os.path.join(data_dir, 'out_EIG.nc')
     results = {}
     if os.path.isfile(gwrun):
         # return the gap at gamma
         data = NetcdfReader(gwrun)
         data.print_tree()
         if not isinstance(data.read_value('ecuteps'),
                           collections.Iterable):
             ecuteps = data.read_value('ecuteps')
         elif not isinstance(
                 data.read_value('ecuteps')[0], collections.Iterable):
             ecuteps = data.read_value('ecuteps')[0]
         else:
             raise Exception
         if not isinstance(data.read_value('sigma_nband'),
                           collections.Iterable):
             sigma_nband = data.read_value('sigma_nband')
         elif not isinstance(
                 data.read_value('sigma_nband')[0], collections.Iterable):
             sigma_nband = data.read_value('sigma_nband')[0]
         else:
             raise Exception
         gwgap = data.read_value('egwgap')[0][0]
         #gwgap = min(data.read_value('egwgap')[0])
         if not isinstance(gwgap, float):
             raise Exception
         results = {
             'ecuteps': float(Ha_to_eV * ecuteps),
             'nbands': int(sigma_nband),
             'gwgap': float(gwgap)
         }
         data.close()
         return results
     if os.path.isfile(scfruneig):
         # return the lowest and hightest eigenvalue at gamma
         data = NetcdfReader(scfruneig)
         out = NetcdfReader(scfrunout)
         if data.read_value('Eigenvalues')[0][0][
                 -1] < 2.0:  # bad way to select only the scf results ..
             if not isinstance(out.read_value('ecut'),
                               collections.Iterable):
                 ecut = out.read_value('ecut')
             elif not isinstance(
                     out.read_value('ecut')[0], collections.Iterable):
                 ecut = out.read_value('ecut')[0]
             else:
                 raise Exception
             results = {
                 'ecut':
                 Ha_to_eV * ecut,
                 'min':
                 data.read_value('Eigenvalues')[0][0][0] * Ha_to_eV,
                 'max':
                 data.read_value('Eigenvalues')[0][0][-1] * Ha_to_eV,
                 'full_width':
                 (data.read_value('Eigenvalues')[0][0][-1] -
                  data.read_value('Eigenvalues')[0][0][0]) * Ha_to_eV
             }
             data.close()
         return results