Exemplo n.º 1
0
 def __init__(self, filename=None, args=None):
     self._settings = Phono3pySettings()
     if filename is not None:
         ConfParser.__init__(self, filename=filename)
         self.parse_conf() # self.parameters[key] = val
         self._parse_conf()
         self._set_settings()
     if args is not None:
         ConfParser.__init__(self, args=args)
         self.read_options() # store data in self._confs
         self._read_options()
         self.parse_conf() # self.parameters[key] = val
         self._parse_conf()
         self._set_settings()
Exemplo n.º 2
0
    def _set_settings(self):
        ConfParser.set_settings(self)
        params = self._parameters

        # Supercell size for fc2
        if params.has_key('dim_extra'):
            self._settings.set_supercell_matrix_extra(params['dim_extra'])

        # Sets of band indices that are summed
        if params.has_key('band_indices'):
            self._settings.set_band_indices(params['band_indices'])

        if params.has_key('mesh_shift'):
            self._settings.set_mesh_shift(params['mesh_shift'])

        # Grid points
        if params.has_key('grid_points'):
            self._settings.set_grid_points(params['grid_points'])

        # Calculate thermal conductivity in BTE-RTA
        if params.has_key('is_bterta'):
            self._settings.set_is_bterta(params['is_bterta'])

        # Calculate linewidths
        if params.has_key('is_linewidth'):
            self._settings.set_is_linewidth(params['is_linewidth'])
        # Tell Normal and Umklapp process apart

        if params.has_key("read_fc2"):
            self._settings.set_read_fc2(params['read_fc2'])

        if params.has_key("read_fc2_extra"):
            self._settings.set_read_fc2_extra(params['read_fc2_extra'])

        # Read gammas from hdf5
        if params.has_key('read_gamma'):
            self._settings.set_read_gamma(params['read_gamma'])

        # Sum partial kappa at q-stars
        if params.has_key('no_kappa_stars'):
            self._settings.set_no_kappa_stars(params['no_kappa_stars'])

        # Temperatures
        if params.has_key('temperature'):
            self._settings.set_temperature(params['temperature'])

        # Write gamma to hdf5
        if params.has_key('write_gamma'):
            self._settings.set_write_gamma(params['write_gamma'])
Exemplo n.º 3
0
    def _set_settings(self):
        ConfParser.set_settings(self)
        params = self._parameters

        # Supercell size for fc2
        if params.has_key('dim_extra'):
            self._settings.set_supercell_matrix_extra(params['dim_extra'])

        # Sets of band indices that are summed
        if params.has_key('band_indices'):
            self._settings.set_band_indices(params['band_indices'])

        if params.has_key('mesh_shift'):
            self._settings.set_mesh_shift(params['mesh_shift'])

        # Grid points
        if params.has_key('grid_points'):
            self._settings.set_grid_points(params['grid_points'])

        # Calculate thermal conductivity in BTE-RTA
        if params.has_key('is_bterta'):
            self._settings.set_is_bterta(params['is_bterta'])

        # Calculate linewidths
        if params.has_key('is_linewidth'):
            self._settings.set_is_linewidth(params['is_linewidth'])
        # Tell Normal and Umklapp process apart

        if params.has_key("read_fc2"):
            self._settings.set_read_fc2(params['read_fc2'])

        if params.has_key("read_fc2_extra"):
            self._settings.set_read_fc2_extra(params['read_fc2_extra'])

        # Read gammas from hdf5
        if params.has_key('read_gamma'):
            self._settings.set_read_gamma(params['read_gamma'])

        # Sum partial kappa at q-stars
        if params.has_key('no_kappa_stars'):
            self._settings.set_no_kappa_stars(params['no_kappa_stars'])

        # Temperatures
        if params.has_key('temperature'):
            self._settings.set_temperature(params['temperature'])

        # Write gamma to hdf5
        if params.has_key('write_gamma'):
            self._settings.set_write_gamma(params['write_gamma'])
Exemplo n.º 4
0
 def __init__(self, filename=None, args=None, default_settings=None):
     self._settings = Phono3pySettings(default=default_settings)
     confs = {}
     if filename is not None:
         ConfParser.__init__(self, filename=filename)
         self.read_file()  # store .conf file setting in self._confs
         self._parse_conf()
         self._set_settings()
         confs.update(self._confs)
     if args is not None:
         ConfParser.__init__(self, args=args)
         self._read_options()
         self._parse_conf()
         self._set_settings()
         confs.update(self._confs)
     self._confs = confs
Exemplo n.º 5
0
    def _set_settings(self):
        ConfParser.set_settings(self)
        params = self._parameters

        # Supercell dimension for fc2
        if params.has_key('dim_fc2'):
            self._settings.set_phonon_supercell_matrix(params['dim_fc2'])

        # Boundary mean free path for thermal conductivity calculation
        if params.has_key('boundary_mfp'):
            self._settings.set_boundary_mfp(params['boundary_mfp'])

        # Peierls type approximation for squared ph-ph interaction strength
        if params.has_key('constant_averaged_pp_interaction'):
            self._settings.set_constant_averaged_pp_interaction(
                params['constant_averaged_pp_interaction'])

        # Cutoff distance of third-order force constants. Elements where any
        # pair of atoms has larger distance than cut-off distance are set zero.
        if params.has_key('cutoff_fc3_distance'):
            self._settings.set_cutoff_fc3_distance(
                params['cutoff_fc3_distance'])

        # Cutoff distance between pairs of displaced atoms used for supercell
        # creation with displacements and making third-order force constants
        if params.has_key('cutoff_pair_distance'):
            self._settings.set_cutoff_pair_distance(
                params['cutoff_pair_distance'])

        # Grid addresses (sets of three integer values)
        if params.has_key('grid_addresses'):
            self._settings.set_grid_addresses(params['grid_addresses'])

        # Grid points
        if params.has_key('grid_points'):
            self._settings.set_grid_points(params['grid_points'])

        # Atoms are clamped under applied strain in Gruneisen parameter calculation
        if params.has_key('ion_clamped'):
            self._settings.set_ion_clamped(params['ion_clamped'])

        # Calculate thermal conductivity in BTE-RTA
        if params.has_key('is_bterta'):
            self._settings.set_is_bterta(params['is_bterta'])

        # Calculate imaginary part of self energy
        if params.has_key('is_imag_self_energy'):
            self._settings.set_is_imag_self_energy(
                params['is_imag_self_energy'])

        # Calculate lifetime due to isotope scattering
        if params.has_key('is_isotope'):
            self._settings.set_is_isotope(params['is_isotope'])

        # Calculate thermal conductivity in LBTE with Chaput's method
        if params.has_key('is_lbte'):
            self._settings.set_is_lbte(params['is_lbte'])

        # Calculate linewidths
        if params.has_key('is_linewidth'):
            self._settings.set_is_linewidth(params['is_linewidth'])

        # Calculate frequency_shifts
        if params.has_key('is_frequency_shift'):
            self._settings.set_is_frequency_shift(params['is_frequency_shift'])

        # Mass variance parameters
        if params.has_key('mass_variances'):
            self._settings.set_mass_variances(params['mass_variances'])

        # Maximum mean free path
        if params.has_key('max_freepath'):
            self._settings.set_max_freepath(params['max_freepath'])

        # Divisors for mesh numbers
        if params.has_key('mesh_divisors'):
            self._settings.set_mesh_divisors(params['mesh_divisors'][:3])
            if len(params['mesh_divisors']) > 3:
                self._settings.set_coarse_mesh_shifts(
                    params['mesh_divisors'][3:])

        # Cutoff frequency for pseudo inversion of collision matrix
        if params.has_key('pinv_cutoff'):
            self._settings.set_pinv_cutoff(params['pinv_cutoff'])

        # Read phonon-phonon interaction amplitudes from hdf5
        if params.has_key('read_amplitude'):
            self._settings.set_read_amplitude(params['read_amplitude'])

        # Read collision matrix and gammas from hdf5
        if params.has_key('read_collision'):
            self._settings.set_read_collision(params['read_collision'])

        # Read gammas from hdf5
        if params.has_key('read_gamma'):
            self._settings.set_read_gamma(params['read_gamma'])

        # Calculate imag-part self energy with integration weights from gaussian
        # smearing function
        if params.has_key('run_with_g'):
            self._settings.set_run_with_g(params['run_with_g'])

        # Sum partial kappa at q-stars
        if params.has_key('no_kappa_stars'):
            self._settings.set_no_kappa_stars(params['no_kappa_stars'])

        # Scattering event class 1 or 2
        if params.has_key('scattering_event_class'):
            self._settings.set_scattering_event_class(
                params['scattering_event_class'])

        # Temperatures
        if params.has_key('temperatures'):
            self._settings.set_temperatures(params['temperatures'])

        # Use averaged ph-ph interaction
        if params.has_key('average_pp_interaction'):
            self._settings.set_average_pp_interaction(
                params['average_pp_interaction'])

        # Write phonon-phonon interaction amplitudes to hdf5
        if params.has_key('write_amplitude'):
            self._settings.set_write_amplitude(params['write_amplitude'])

        # Write detailed imag-part of self energy to hdf5
        if params.has_key('write_detailed_gamma'):
            self._settings.set_write_detailed_gamma(
                params['write_detailed_gamma'])

        # Write imag-part of self energy to hdf5
        if params.has_key('write_gamma'):
            self._settings.set_write_gamma(params['write_gamma'])

        # Write collision matrix and gammas to hdf5
        if params.has_key('write_collision'):
            self._settings.set_write_collision(params['write_collision'])
Exemplo n.º 6
0
 def __init__(self, filename=None, options=None, option_list=None):
     ConfParser.__init__(self, filename, options, option_list)
     self._read_options()
     self._parse_conf()
     self._settings = Phono3pySettings()
     self._set_settings()
Exemplo n.º 7
0
    def _set_settings(self):
        ConfParser.set_settings(self)
        params = self._parameters

        # Is getting least displacements?
        if 'create_displacements' in params:
            if params['create_displacements']:
                self._settings.set_create_displacements('displacements')

        # Supercell dimension for fc2
        if 'dim_fc2' in params:
            self._settings.set_phonon_supercell_matrix(params['dim_fc2'])

        # Boundary mean free path for thermal conductivity calculation
        if 'boundary_mfp' in params:
            self._settings.set_boundary_mfp(params['boundary_mfp'])

        # Peierls type approximation for squared ph-ph interaction strength
        if 'constant_averaged_pp_interaction' in params:
            self._settings.set_constant_averaged_pp_interaction(
                params['constant_averaged_pp_interaction'])

        # Cutoff distance of third-order force constants. Elements where any
        # pair of atoms has larger distance than cut-off distance are set zero.
        if 'cutoff_fc3_distance' in params:
            self._settings.set_cutoff_fc3_distance(
                params['cutoff_fc3_distance'])

        # Cutoff distance between pairs of displaced atoms used for supercell
        # creation with displacements and making third-order force constants
        if 'cutoff_pair_distance' in params:
            self._settings.set_cutoff_pair_distance(
                params['cutoff_pair_distance'])

        # This scale factor is multiplied to frequencies only, i.e., changes
        # frequencies but assumed not to change the physical unit
        if 'frequency_scale_factor' in params:
            self._settings.set_frequency_scale_factor(
                params['frequency_scale_factor'])

        # Gamma unit conversion factor
        if 'gamma_conversion_factor' in params:
            self._settings.set_gamma_conversion_factor(
                params['gamma_conversion_factor'])

        # Grid addresses (sets of three integer values)
        if 'grid_addresses' in params:
            self._settings.set_grid_addresses(params['grid_addresses'])

        # Grid points
        if 'grid_points' in params:
            self._settings.set_grid_points(params['grid_points'])

        # Atoms are clamped under applied strain in Gruneisen parameter calculation
        if 'ion_clamped' in params:
            self._settings.set_ion_clamped(params['ion_clamped'])

        # Calculate thermal conductivity in BTE-RTA
        if 'is_bterta' in params:
            self._settings.set_is_bterta(params['is_bterta'])

        # Calculate frequency_shifts
        if 'is_frequency_shift' in params:
            self._settings.set_is_frequency_shift(params['is_frequency_shift'])

        # Calculate full ph-ph interaction strength for RTA conductivity
        if 'is_full_pp' in params:
            self._settings.set_is_full_pp(params['is_full_pp'])

        # Calculate phonon-Gruneisen parameters
        if 'is_gruneisen' in params:
            self._settings.set_is_gruneisen(params['is_gruneisen'])

        # Calculate imaginary part of self energy
        if 'is_imag_self_energy' in params:
            self._settings.set_is_imag_self_energy(
                params['is_imag_self_energy'])

        # Calculate lifetime due to isotope scattering
        if 'is_isotope' in params:
            self._settings.set_is_isotope(params['is_isotope'])

        # Calculate joint-DOS
        if 'is_joint_dos' in params:
            self._settings.set_is_joint_dos(params['is_joint_dos'])

        # Calculate thermal conductivity in LBTE with Chaput's method
        if 'is_lbte' in params:
            self._settings.set_is_lbte(params['is_lbte'])

        # Calculate linewidths
        if 'is_linewidth' in params:
            self._settings.set_is_linewidth(params['is_linewidth'])

        # Solve reducible collision matrix but not reduced matrix
        if 'is_reducible_collision_matrix' in params:
            self._settings.set_is_reducible_collision_matrix(
                params['is_reducible_collision_matrix'])

        # Symmetrize fc2 by index exchange
        if 'is_symmetrize_fc2' in params:
            self._settings.set_is_symmetrize_fc2(params['is_symmetrize_fc2'])

        # Symmetrize phonon fc3 by index exchange
        if 'is_symmetrize_fc3_q' in params:
            self._settings.set_is_symmetrize_fc3_q(
                params['is_symmetrize_fc3_q'])

        # Symmetrize fc3 by index exchange
        if 'is_symmetrize_fc3_r' in params:
            self._settings.set_is_symmetrize_fc3_r(
                params['is_symmetrize_fc3_r'])

        # Mass variance parameters
        if 'mass_variances' in params:
            self._settings.set_mass_variances(params['mass_variances'])

        # Maximum mean free path
        if 'max_freepath' in params:
            self._settings.set_max_freepath(params['max_freepath'])

        # Divisors for mesh numbers
        if 'mesh_divisors' in params:
            self._settings.set_mesh_divisors(params['mesh_divisors'][:3])
            if len(params['mesh_divisors']) > 3:
                self._settings.set_coarse_mesh_shifts(
                    params['mesh_divisors'][3:])

        # Cutoff frequency for pseudo inversion of collision matrix
        if 'pinv_cutoff' in params:
            self._settings.set_pinv_cutoff(params['pinv_cutoff'])

        # Ph-ph interaction unit conversion factor
        if 'pp_conversion_factor' in params:
            self._settings.set_pp_conversion_factor(
                params['pp_conversion_factor'])

        # Read phonon-phonon interaction amplitudes from hdf5
        if 'read_amplitude' in params:
            self._settings.set_read_amplitude(params['read_amplitude'])

        # Read collision matrix and gammas from hdf5
        if 'read_collision' in params:
            self._settings.set_read_collision(params['read_collision'])

        # Read fc2 from hdf5
        if 'read_fc2' in params:
            self._settings.set_read_fc2(params['read_fc2'])

        # Read fc3 from hdf5
        if 'read_fc3' in params:
            self._settings.set_read_fc3(params['read_fc3'])

        # Read gammas from hdf5
        if 'read_gamma' in params:
            self._settings.set_read_gamma(params['read_gamma'])

        # Read phonons from hdf5
        if 'read_phonon' in params:
            self._settings.set_read_phonon(params['read_phonon'])

        # Calculate imag-part self energy with integration weights from gaussian
        # smearing function
        if 'run_with_g' in params:
            self._settings.set_run_with_g(params['run_with_g'])

        # Sum partial kappa at q-stars
        if 'is_kappa_star' in params:
            self._settings.set_is_kappa_star(params['is_kappa_star'])

        # Scattering event class 1 or 2
        if 'scattering_event_class' in params:
            self._settings.set_scattering_event_class(
                params['scattering_event_class'])

        # Temperatures
        if 'temperatures' in params:
            self._settings.set_temperatures(params['temperatures'])

        # Use averaged ph-ph interaction
        if 'use_ave_pp' in params:
            self._settings.set_use_ave_pp(params['use_ave_pp'])

        # Write phonon-phonon interaction amplitudes to hdf5
        if 'write_amplitude' in params:
            self._settings.set_write_amplitude(params['write_amplitude'])

        # Write detailed imag-part of self energy to hdf5
        if 'write_detailed_gamma' in params:
            self._settings.set_write_detailed_gamma(
                params['write_detailed_gamma'])

        # Write imag-part of self energy to hdf5
        if 'write_gamma' in params:
            self._settings.set_write_gamma(params['write_gamma'])

        # Write collision matrix and gammas to hdf5
        if 'write_collision' in params:
            self._settings.set_write_collision(params['write_collision'])

        # Write all phonons on grid points to hdf5
        if 'write_phonon' in params:
            self._settings.set_write_phonon(params['write_phonon'])
Exemplo n.º 8
0
 def __init__(self, filename=None, options=None, option_list=None):
     ConfParser.__init__(self, filename, options, option_list)
     self._read_options()
     self._parse_conf()
     self._settings = PhonompySettings()
     self._set_settings()
Exemplo n.º 9
0
    def _set_settings(self):
        ConfParser.set_settings(self)
        params = self._parameters

        # Supercell size for fc2
        if params.has_key('dim_extra'):
            self._settings.set_supercell_matrix_extra(params['dim_extra'])

        # Sets of band indices that are summed
        if params.has_key('band_indices'):
            self._settings.set_band_indices(params['band_indices'])

        # Cutoff distance between pairs of displaced atoms used for supercell
        # creation with displacements and making third-order force constants
        if params.has_key('cutoff_pair'):
            self._settings.set_cutoff_pair(
                params['cutoff_pair'])

        # Cutoff distance of third-order force constants. Elements where any
        # pair of atoms has larger distance than cut-off distance are set zero.
        if params.has_key('cutoff_triplet'):
            self._settings.set_cutoff_triplet(params['cutoff_triplet'])

        # Cutoff distance of reciprocal third-order force constants.
        if params.has_key('cutoff_radius'):
            self._settings.set_cutoff_radius(params['cutoff_radius'])

        #Cutoff sigmas for gaussian smearing.
        if params.has_key("cutoff_delta"):
            self._settings.set_cutoff_delta(params["cutoff_delta"])

        # Phonon modes larger than this frequency are ignored.
        if params.has_key('cutoff_hfrequency'):
            self._settings.set_cutoff_hfrequency(params['cutoff_hfrequency'])

        # Phonon modes smaller than this frequency are ignored.
        if params.has_key('cutoff_frequency'):
            self._settings.set_cutoff_frequency(params['cutoff_frequency'])

        # Cutoff lifetime used for thermal conductivity calculation
        if params.has_key('cutoff_lifetime'):
            self._settings.set_cutoff_lifetime(params['cutoff_lifetime'])

        # different lifetime (relative) used for iterative method
        if params.has_key('diff_kappa'):
            self._settings.set_diff_kappa(params['diff_kappa'])

        # Grid points
        if params.has_key('grid_points'):
            self._settings.set_grid_points(params['grid_points'])

        # Atoms are clamped under applied strain in Gruneisen parameter calculation
        if params.has_key('ion_clamped'):
            self._settings.set_ion_clamped(params['ion_clamped'])

        #Solve the Boltzmann Transport Equation Iteratively
        if params.has_key("is_ite"):
            self._settings.set_is_ite(params['is_ite'])

        #Solve the Boltzmann Transport Equation Iteratively using the conjugate gradient method
        if params.has_key("is_ite_cg"):
            self._settings.set_is_ite_cg(params['is_ite_cg'])

        #Get the image self energy for a specific grid point and band index
        if params.has_key("is_ise"):
            self._settings.set_is_ise(params['is_ise'])

        #The maximum iteration steps for the iterative method
        if params.has_key("max_ite"):
            self._settings.set_max_ite(params['max_ite'])

        #The sample length considering phonon boundary scattering
        if params.has_key("length"):
            self._settings.set_length(params['length'])

        # Calculate thermal conductivity in BTE-RTA
        if params.has_key('is_bterta'):
            self._settings.set_is_bterta(params['is_bterta'])

        # Calculate linewidths
        if params.has_key('is_linewidth'):
            self._settings.set_is_linewidth(params['is_linewidth'])
        # Tell Normal and Umklapp process apart
        if params.has_key('nu'):
            self._settings.set_nu(params['nu'])

        if params.has_key("read_fc2"):
            self._settings.set_read_fc2(params['read_fc2'])

        if params.has_key("read_fc2_extra"):
            self._settings.set_read_fc2_extra(params['read_fc2_extra'])

        if params.has_key("read_fc3"):
            self._settings.set_read_fc3(params['read_fc3'])

        # Calculate frequency_shifts
        if params.has_key('is_frequency_shift'):
            self._settings.set_is_frequency_shift(params['is_frequency_shift'])

        # Mass variance parameters
        if params.has_key('mass_variances'):
            self._settings.set_mass_variances(params['mass_variances'])

        # Maximum mean free path
        if params.has_key('max_freepath'):
            self._settings.set_max_freepath(params['max_freepath'])

        # Divisors for mesh numbers
        if params.has_key('mesh_divisors'):
            self._settings.set_mesh_divisors(params['mesh_divisors'][:3])
            if len(params['mesh_divisors']) > 3:
                self._settings.set_coarse_mesh_shifts(
                    params['mesh_divisors'][3:])

        # Multiple sigmas
        if params.has_key('multiple_sigmas'):
            self._settings.set_multiple_sigmas(params['multiple_sigmas'])

        #Adaptive smearing factor
        if params.has_key('adaptive_sigma_step'):
            if params['adaptive_sigma_step'] <= 0:
                print "Error! Step cannot be negative or 0"
                sys.exit(1)
            self._settings.set_adaptive_sigma_step(params['adaptive_sigma_step'])

        if params.has_key('kappa_write_step'):
            self._settings.set_kappa_write_step(params['kappa_write_step'])

        # Read phonon-phonon interaction amplitudes from hdf5
        if params.has_key('read_amplitude'):
            self._settings.set_read_amplitude(params['read_amplitude'])

        # Read gammas from hdf5
        if params.has_key('read_gamma'):
            self._settings.set_read_gamma(params['read_gamma'])
            
        # Sum partial kappa at q-stars
        if params.has_key('no_kappa_stars'):
            self._settings.set_no_kappa_stars(params['no_kappa_stars'])

        # Temperatures
        if params.has_key('temperatures'):
            self._settings.set_temperatures(params['temperatures'])

        # Write phonon-phonon interaction amplitudes to hdf5
        if params.has_key('write_amplitude'):
            self._settings.set_write_amplitude(params['write_amplitude'])

        # Write gamma to hdf5
        if params.has_key('write_gamma'):
            self._settings.set_write_gamma(params['write_gamma'])

        #write triplets to a file
        if params.has_key("write_triplet"):
            self._settings.set_write_triplet(params['write_triplet'])
Exemplo n.º 10
0
    def _set_settings(self):
        ConfParser.set_settings(self)
        params = self._parameters

        # Is getting least displacements?
        if 'create_displacements' in params:
            if params['create_displacements']:
                self._settings.set_create_displacements('displacements')
    
        # Supercell dimension for fc2
        if 'dim_fc2' in params:
            self._settings.set_phonon_supercell_matrix(params['dim_fc2'])

        # Boundary mean free path for thermal conductivity calculation
        if 'boundary_mfp' in params:
            self._settings.set_boundary_mfp(params['boundary_mfp'])

        # Peierls type approximation for squared ph-ph interaction strength
        if 'constant_averaged_pp_interaction' in params:
            self._settings.set_constant_averaged_pp_interaction(
                params['constant_averaged_pp_interaction'])

        # Cutoff distance of third-order force constants. Elements where any 
        # pair of atoms has larger distance than cut-off distance are set zero.
        if 'cutoff_fc3_distance' in params:
            self._settings.set_cutoff_fc3_distance(params['cutoff_fc3_distance'])

        # Cutoff distance between pairs of displaced atoms used for supercell
        # creation with displacements and making third-order force constants
        if 'cutoff_pair_distance' in params:
            self._settings.set_cutoff_pair_distance(
                params['cutoff_pair_distance'])

        # This scale factor is multiplied to frequencies only, i.e., changes 
        # frequencies but assumed not to change the physical unit
        if 'frequency_scale_factor' in params:
            self._settings.set_frequency_scale_factor(
                params['frequency_scale_factor'])

        # Gamma unit conversion factor
        if 'gamma_conversion_factor' in params:
            self._settings.set_gamma_conversion_factor(
                params['gamma_conversion_factor'])

        # Grid addresses (sets of three integer values)
        if 'grid_addresses' in params:
            self._settings.set_grid_addresses(params['grid_addresses'])

        # Grid points
        if 'grid_points' in params:
            self._settings.set_grid_points(params['grid_points'])

        # Atoms are clamped under applied strain in Gruneisen parameter calculation
        if 'ion_clamped' in params:
            self._settings.set_ion_clamped(params['ion_clamped'])

        # Calculate thermal conductivity in BTE-RTA
        if 'is_bterta' in params:
            self._settings.set_is_bterta(params['is_bterta'])

        # Calculate frequency_shifts
        if 'is_frequency_shift' in params:
            self._settings.set_is_frequency_shift(params['is_frequency_shift'])

        # Calculate full ph-ph interaction strength for RTA conductivity
        if 'is_full_pp' in params:
            self._settings.set_is_full_pp(params['is_full_pp'])

        # Calculate phonon-Gruneisen parameters
        if 'is_gruneisen' in params:
            self._settings.set_is_gruneisen(params['is_gruneisen'])

        # Calculate imaginary part of self energy
        if 'is_imag_self_energy' in params:
            self._settings.set_is_imag_self_energy(params['is_imag_self_energy'])

        # Calculate lifetime due to isotope scattering
        if 'is_isotope' in params:
            self._settings.set_is_isotope(params['is_isotope'])

        # Calculate joint-DOS
        if 'is_joint_dos' in params:
            self._settings.set_is_joint_dos(params['is_joint_dos'])

        # Calculate thermal conductivity in LBTE with Chaput's method
        if 'is_lbte' in params:
            self._settings.set_is_lbte(params['is_lbte'])

        # Calculate linewidths
        if 'is_linewidth' in params:
            self._settings.set_is_linewidth(params['is_linewidth'])

        # Solve reducible collision matrix but not reduced matrix
        if 'is_reducible_collision_matrix' in params:
            self._settings.set_is_reducible_collision_matrix(
                params['is_reducible_collision_matrix'])

        # Symmetrize fc2 by index exchange
        if 'is_symmetrize_fc2' in params:
            self._settings.set_is_symmetrize_fc2(params['is_symmetrize_fc2'])

        # Symmetrize phonon fc3 by index exchange
        if 'is_symmetrize_fc3_q' in params:
            self._settings.set_is_symmetrize_fc3_q(params['is_symmetrize_fc3_q'])

        # Symmetrize fc3 by index exchange
        if 'is_symmetrize_fc3_r' in params:
            self._settings.set_is_symmetrize_fc3_r(params['is_symmetrize_fc3_r'])

        # Mass variance parameters
        if 'mass_variances' in params:
            self._settings.set_mass_variances(params['mass_variances'])

        # Maximum mean free path
        if 'max_freepath' in params:
            self._settings.set_max_freepath(params['max_freepath'])

        # Divisors for mesh numbers
        if 'mesh_divisors' in params:
            self._settings.set_mesh_divisors(params['mesh_divisors'][:3])
            if len(params['mesh_divisors']) > 3:
                self._settings.set_coarse_mesh_shifts(
                    params['mesh_divisors'][3:])

        # Cutoff frequency for pseudo inversion of collision matrix
        if 'pinv_cutoff' in params:
            self._settings.set_pinv_cutoff(params['pinv_cutoff'])

        # Ph-ph interaction unit conversion factor
        if 'pp_conversion_factor' in params:
            self._settings.set_pp_conversion_factor(params['pp_conversion_factor'])

        # Read phonon-phonon interaction amplitudes from hdf5
        if 'read_amplitude' in params:
            self._settings.set_read_amplitude(params['read_amplitude'])

        # Read collision matrix and gammas from hdf5
        if 'read_collision' in params:
            self._settings.set_read_collision(params['read_collision'])

        # Read fc2 from hdf5
        if 'read_fc2' in params:
            self._settings.set_read_fc2(params['read_fc2'])
            
        # Read fc3 from hdf5
        if 'read_fc3' in params:
            self._settings.set_read_fc3(params['read_fc3'])
            
        # Read gammas from hdf5
        if 'read_gamma' in params:
            self._settings.set_read_gamma(params['read_gamma'])
            
        # Read phonons from hdf5
        if 'read_phonon' in params:
            self._settings.set_read_phonon(params['read_phonon'])

        # Calculate imag-part self energy with integration weights from gaussian
        # smearing function
        if 'run_with_g' in params:
            self._settings.set_run_with_g(params['run_with_g'])
            
        # Sum partial kappa at q-stars
        if 'is_kappa_star' in params:
            self._settings.set_is_kappa_star(params['is_kappa_star'])

        # Scattering event class 1 or 2
        if 'scattering_event_class' in params:
            self._settings.set_scattering_event_class(
                params['scattering_event_class'])

        # Temperatures
        if 'temperatures' in params:
            self._settings.set_temperatures(params['temperatures'])

        # Use averaged ph-ph interaction
        if 'use_ave_pp' in params:
            self._settings.set_use_ave_pp(params['use_ave_pp'])

        # Write phonon-phonon interaction amplitudes to hdf5
        if 'write_amplitude' in params:
            self._settings.set_write_amplitude(params['write_amplitude'])

        # Write detailed imag-part of self energy to hdf5
        if 'write_detailed_gamma' in params:
            self._settings.set_write_detailed_gamma(
                params['write_detailed_gamma'])

        # Write imag-part of self energy to hdf5
        if 'write_gamma' in params:
            self._settings.set_write_gamma(params['write_gamma'])

        # Write collision matrix and gammas to hdf5
        if 'write_collision' in params:
            self._settings.set_write_collision(params['write_collision'])
            
        # Write all phonons on grid points to hdf5
        if 'write_phonon' in params:
            self._settings.set_write_phonon(params['write_phonon'])
Exemplo n.º 11
0
    def _set_settings(self):
        ConfParser.set_settings(self)
        params = self._parameters

        # Supercell dimension for fc2
        if params.has_key('dim_fc2'):
            self._settings.set_phonon_supercell_matrix(params['dim_fc2'])

        # Boundary mean free path for thermal conductivity calculation
        if params.has_key('boundary_mfp'):
            self._settings.set_boundary_mfp(params['boundary_mfp'])

        # Peierls type approximation for squared ph-ph interaction strength
        if params.has_key('constant_averaged_pp_interaction'):
            self._settings.set_constant_averaged_pp_interaction(
                params['constant_averaged_pp_interaction'])

        # Cutoff distance of third-order force constants. Elements where any 
        # pair of atoms has larger distance than cut-off distance are set zero.
        if params.has_key('cutoff_fc3_distance'):
            self._settings.set_cutoff_fc3_distance(params['cutoff_fc3_distance'])

        # Cutoff distance between pairs of displaced atoms used for supercell
        # creation with displacements and making third-order force constants
        if params.has_key('cutoff_pair_distance'):
            self._settings.set_cutoff_pair_distance(
                params['cutoff_pair_distance'])

        # Grid addresses (sets of three integer values)
        if params.has_key('grid_addresses'):
            self._settings.set_grid_addresses(params['grid_addresses'])

        # Grid points
        if params.has_key('grid_points'):
            self._settings.set_grid_points(params['grid_points'])

        # Atoms are clamped under applied strain in Gruneisen parameter calculation
        if params.has_key('ion_clamped'):
            self._settings.set_ion_clamped(params['ion_clamped'])

        # Calculate thermal conductivity in BTE-RTA
        if params.has_key('is_bterta'):
            self._settings.set_is_bterta(params['is_bterta'])

        # Calculate lifetime due to isotope scattering
        if params.has_key('is_isotope'):
            self._settings.set_is_isotope(params['is_isotope'])

        # Calculate thermal conductivity in LBTE with Chaput's method
        if params.has_key('is_lbte'):
            self._settings.set_is_lbte(params['is_lbte'])

        # Calculate linewidths
        if params.has_key('is_linewidth'):
            self._settings.set_is_linewidth(params['is_linewidth'])

        # Calculate frequency_shifts
        if params.has_key('is_frequency_shift'):
            self._settings.set_is_frequency_shift(params['is_frequency_shift'])

        # Mass variance parameters
        if params.has_key('mass_variances'):
            self._settings.set_mass_variances(params['mass_variances'])

        # Maximum mean free path
        if params.has_key('max_freepath'):
            self._settings.set_max_freepath(params['max_freepath'])

        # Divisors for mesh numbers
        if params.has_key('mesh_divisors'):
            self._settings.set_mesh_divisors(params['mesh_divisors'][:3])
            if len(params['mesh_divisors']) > 3:
                self._settings.set_coarse_mesh_shifts(
                    params['mesh_divisors'][3:])

        # Cutoff frequency for pseudo inversion of collision matrix
        if params.has_key('pinv_cutoff'):
            self._settings.set_pinv_cutoff(params['pinv_cutoff'])

        # Read phonon-phonon interaction amplitudes from hdf5
        if params.has_key('read_amplitude'):
            self._settings.set_read_amplitude(params['read_amplitude'])

        # Read gammas from hdf5
        if params.has_key('read_gamma'):
            self._settings.set_read_gamma(params['read_gamma'])
            
        # Read collision matrix and gammas from hdf5
        if params.has_key('read_collision'):
            self._settings.set_read_collision(params['read_collision'])
            
        # Sum partial kappa at q-stars
        if params.has_key('no_kappa_stars'):
            self._settings.set_no_kappa_stars(params['no_kappa_stars'])

        # Scattering event class 1 or 2
        if params.has_key('scattering_event_class'):
            self._settings.set_scattering_event_class(
                params['scattering_event_class'])

        # Temperatures
        if params.has_key('temperatures'):
            self._settings.set_temperatures(params['temperatures'])

        # Use averaged ph-ph interaction
        if params.has_key('average_pp_interaction'):
            self._settings.set_average_pp_interaction(
                params['average_pp_interaction'])

        # Write phonon-phonon interaction amplitudes to hdf5
        if params.has_key('write_amplitude'):
            self._settings.set_write_amplitude(params['write_amplitude'])

        # Write gammas to hdf5
        if params.has_key('write_gamma'):
            self._settings.set_write_gamma(params['write_gamma'])

        # Write collision matrix and gammas to hdf5
        if params.has_key('write_collision'):
            self._settings.set_write_collision(params['write_collision'])
Exemplo n.º 12
0
    def _set_settings(self):
        ConfParser.set_settings(self)
        params = self._parameters

        # Supercell size for fc2
        if params.has_key('dim_extra'):
            self._settings.set_supercell_matrix_extra(params['dim_extra'])

        # Sets of band indices that are summed
        if params.has_key('band_indices'):
            self._settings.set_band_indices(params['band_indices'])

        # Cutoff distance between pairs of displaced atoms used for supercell
        # creation with displacements and making third-order force constants
        if params.has_key('cutoff_pair'):
            self._settings.set_cutoff_pair(params['cutoff_pair'])

        # Cutoff distance of third-order force constants. Elements where any
        # pair of atoms has larger distance than cut-off distance are set zero.
        if params.has_key('cutoff_triplet'):
            self._settings.set_cutoff_triplet(params['cutoff_triplet'])

        # Cutoff distance of reciprocal third-order force constants.
        if params.has_key('cutoff_radius'):
            self._settings.set_cutoff_radius(params['cutoff_radius'])

        #Cutoff sigmas for gaussian smearing.
        if params.has_key("cutoff_delta"):
            self._settings.set_cutoff_delta(params["cutoff_delta"])

        # Phonon modes larger than this frequency are ignored.
        if params.has_key('cutoff_hfrequency'):
            self._settings.set_cutoff_hfrequency(params['cutoff_hfrequency'])

        # Phonon modes smaller than this frequency are ignored.
        if params.has_key('cutoff_frequency'):
            self._settings.set_cutoff_frequency(params['cutoff_frequency'])

        # Cutoff lifetime used for thermal conductivity calculation
        if params.has_key('cutoff_lifetime'):
            self._settings.set_cutoff_lifetime(params['cutoff_lifetime'])

        # different lifetime (relative) used for iterative method
        if params.has_key('diff_kappa'):
            self._settings.set_diff_kappa(params['diff_kappa'])

        # Grid points
        if params.has_key('grid_points'):
            self._settings.set_grid_points(params['grid_points'])

        # Atoms are clamped under applied strain in Gruneisen parameter calculation
        if params.has_key('ion_clamped'):
            self._settings.set_ion_clamped(params['ion_clamped'])

        #Solve the Boltzmann Transport Equation Iteratively
        if params.has_key("is_ite"):
            self._settings.set_is_ite(params['is_ite'])

        #Solve the Boltzmann Transport Equation Iteratively using the conjugate gradient method
        if params.has_key("is_ite_cg"):
            self._settings.set_is_ite_cg(params['is_ite_cg'])

        #Get the image self energy for a specific grid point and band index
        if params.has_key("is_ise"):
            self._settings.set_is_ise(params['is_ise'])

        #The maximum iteration steps for the iterative method
        if params.has_key("max_ite"):
            self._settings.set_max_ite(params['max_ite'])

        #The sample length considering phonon boundary scattering
        if params.has_key("length"):
            self._settings.set_length(params['length'])

        # Calculate thermal conductivity in BTE-RTA
        if params.has_key('is_bterta'):
            self._settings.set_is_bterta(params['is_bterta'])

        # Calculate linewidths
        if params.has_key('is_linewidth'):
            self._settings.set_is_linewidth(params['is_linewidth'])
        # Tell Normal and Umklapp process apart
        if params.has_key('nu'):
            self._settings.set_nu(params['nu'])

        if params.has_key("read_fc2"):
            self._settings.set_read_fc2(params['read_fc2'])

        if params.has_key("read_fc2_extra"):
            self._settings.set_read_fc2_extra(params['read_fc2_extra'])

        if params.has_key("read_fc3"):
            self._settings.set_read_fc3(params['read_fc3'])

        # Calculate frequency_shifts
        if params.has_key('is_frequency_shift'):
            self._settings.set_is_frequency_shift(params['is_frequency_shift'])

        # Mass variance parameters
        if params.has_key('mass_variances'):
            self._settings.set_mass_variances(params['mass_variances'])

        # Maximum mean free path
        if params.has_key('max_freepath'):
            self._settings.set_max_freepath(params['max_freepath'])

        # Divisors for mesh numbers
        if params.has_key('mesh_divisors'):
            self._settings.set_mesh_divisors(params['mesh_divisors'][:3])
            if len(params['mesh_divisors']) > 3:
                self._settings.set_coarse_mesh_shifts(
                    params['mesh_divisors'][3:])

        # Multiple sigmas
        if params.has_key('multiple_sigmas'):
            self._settings.set_multiple_sigmas(params['multiple_sigmas'])

        #Adaptive smearing factor
        if params.has_key('adaptive_sigma_step'):
            if params['adaptive_sigma_step'] <= 0:
                print "Error! Step cannot be negative or 0"
                sys.exit(1)
            self._settings.set_adaptive_sigma_step(
                params['adaptive_sigma_step'])

        if params.has_key('kappa_write_step'):
            self._settings.set_kappa_write_step(params['kappa_write_step'])

        # Read phonon-phonon interaction amplitudes from hdf5
        if params.has_key('read_amplitude'):
            self._settings.set_read_amplitude(params['read_amplitude'])

        # Read gammas from hdf5
        if params.has_key('read_gamma'):
            self._settings.set_read_gamma(params['read_gamma'])

        # Sum partial kappa at q-stars
        if params.has_key('no_kappa_stars'):
            self._settings.set_no_kappa_stars(params['no_kappa_stars'])

        # Temperatures
        if params.has_key('temperatures'):
            self._settings.set_temperatures(params['temperatures'])

        # Write phonon-phonon interaction amplitudes to hdf5
        if params.has_key('write_amplitude'):
            self._settings.set_write_amplitude(params['write_amplitude'])

        # Write gamma to hdf5
        if params.has_key('write_gamma'):
            self._settings.set_write_gamma(params['write_gamma'])

        #write triplets to a file
        if params.has_key("write_triplet"):
            self._settings.set_write_triplet(params['write_triplet'])
Exemplo n.º 13
0
    def _parse_conf(self):
        ConfParser.parse_conf(self)
        confs = self._confs

        for conf_key in confs.keys():
            # Boolean
            if conf_key in ('read_fc2', 'read_fc3', 'read_gamma',
                            'read_phonon', 'read_pp', 'use_ave_pp',
                            'collective_phonon', 'write_gamma_detail',
                            'write_gamma', 'write_collision', 'write_phonon',
                            'write_pp', 'write_LBTE_solution', 'full_pp',
                            'ion_clamped', 'bterta', 'compact_fc',
                            'real_self_energy', 'gruneisen',
                            'imag_self_energy', 'isotope', 'joint_dos', 'lbte',
                            'N_U', 'spectral_function',
                            'reducible_collision_matrix', 'symmetrize_fc2',
                            'symmetrize_fc3_q', 'symmetrize_fc3_r',
                            'kappa_star'):
                if confs[conf_key].lower() == '.true.':
                    self.set_parameter(conf_key, True)
                elif confs[conf_key].lower() == '.false.':
                    self.set_parameter(conf_key, False)

            # float
            if conf_key in ('boundary_mfp', 'cutoff_fc3_distance',
                            'cutoff_pair_distance', 'gamma_conversion_factor',
                            'max_freepath', 'pinv_cutoff',
                            'pp_conversion_factor', 'sigma_cutoff_width'):
                self.set_parameter(conf_key, float(confs[conf_key]))

            # int
            if conf_key in ('pinv_solver', 'num_points_in_batch'):
                self.set_parameter(conf_key, int(confs[conf_key]))

            # specials
            if conf_key in ('create_forces_fc2', 'create_forces_fc3'):
                if type(confs[conf_key]) is str:
                    fnames = confs[conf_key].split()
                else:
                    fnames = confs[conf_key]
                self.set_parameter(conf_key, fnames)

            if conf_key == 'dim_fc2':
                matrix = [int(x) for x in confs['dim_fc2'].split()]
                if len(matrix) == 9:
                    matrix = np.array(matrix).reshape(3, 3)
                elif len(matrix) == 3:
                    matrix = np.diag(matrix)
                else:
                    self.setting_error(
                        "Number of elements of dim2 has to be 3 or 9.")

                if matrix.shape == (3, 3):
                    if np.linalg.det(matrix) < 1:
                        self.setting_error(
                            "Determinant of supercell matrix has " +
                            "to be positive.")
                    else:
                        self.set_parameter('dim_fc2', matrix)

            if conf_key in ('constant_averaged_pp_interaction' 'const_ave_pp'):
                self.set_parameter('const_ave_pp',
                                   float(confs['const_ave_pp']))

            if conf_key == 'grid_addresses':
                vals = [
                    int(x)
                    for x in confs['grid_addresses'].replace(',', ' ').split()
                ]
                if len(vals) % 3 == 0 and len(vals) > 0:
                    self.set_parameter('grid_addresses',
                                       np.reshape(vals, (-1, 3)))
                else:
                    self.setting_error("Grid addresses are incorrectly set.")

            if conf_key == 'grid_points':
                vals = [
                    int(x)
                    for x in confs['grid_points'].replace(',', ' ').split()
                ]
                self.set_parameter('grid_points', vals)

            if conf_key == 'lapack_zheev_uplo':
                self.set_parameter('lapack_zheev_uplo',
                                   confs['lapack_zheev_uplo'].upper())

            if conf_key == 'mass_variances':
                vals = [fracval(x) for x in confs['mass_variances'].split()]
                if len(vals) < 1:
                    self.setting_error(
                        "Mass variance parameters are incorrectly set.")
                else:
                    self.set_parameter('mass_variances', vals)

            if conf_key == 'mesh_divisors':
                vals = [x for x in confs['mesh_divisors'].split()]
                if len(vals) == 3:
                    self.set_parameter('mesh_divisors', [int(x) for x in vals])
                elif len(vals) == 6:
                    divs = [int(x) for x in vals[:3]]
                    is_shift = [x.lower() == 't' for x in vals[3:]]
                    for i in range(3):
                        if is_shift[i] and (divs[i] % 2 != 0):
                            is_shift[i] = False
                            self.setting_error(
                                "Coarse grid shift along the " +
                                ["first", "second", "third"][i] +
                                " axis is not allowed.")
                    self.set_parameter('mesh_divisors', divs + is_shift)
                else:
                    self.setting_error("Mesh divisors are incorrectly set.")

            if conf_key == 'read_collision':
                if confs['read_collision'] == 'all':
                    self.set_parameter('read_collision', 'all')
                else:
                    vals = [int(x) for x in confs['read_collision'].split()]
                    self.set_parameter('read_collision', vals)

            if conf_key == 'scattering_event_class':
                self.set_parameter('scattering_event_class',
                                   int(confs['scattering_event_class']))
Exemplo n.º 14
0
    def _read_options(self):
        ConfParser.read_options(self)  # store data in self._confs
        if 'phonon_supercell_dimension' in self._args:
            dim_fc2 = self._args.phonon_supercell_dimension
            if dim_fc2 is not None:
                self._confs['dim_fc2'] = " ".join(dim_fc2)

        if 'boundary_mfp' in self._args:
            if self._args.boundary_mfp is not None:
                self._confs['boundary_mfp'] = self._args.boundary_mfp

        if 'const_ave_pp' in self._args:
            const_ave_pp = self._args.const_ave_pp
            if const_ave_pp is not None:
                self._confs['const_ave_pp'] = const_ave_pp

        if 'create_forces_fc2' in self._args:
            if self._args.create_forces_fc2:
                self._confs['create_forces_fc2'] = self._args.create_forces_fc2

        if 'create_forces_fc3' in self._args:
            if self._args.create_forces_fc3:
                self._confs['create_forces_fc3'] = self._args.create_forces_fc3

        if 'create_forces_fc3_file' in self._args:
            if self._args.create_forces_fc3_file:
                cfc3_file = self._args.create_forces_fc3_file
                self._confs['create_forces_fc3_file'] = cfc3_file

        if 'cutoff_fc3_distance' in self._args:
            cutoff_fc3 = self._args.cutoff_fc3_distance
            if cutoff_fc3 is not None:
                self._confs['cutoff_fc3_distance'] = cutoff_fc3

        if 'cutoff_pair_distance' in self._args:
            cutoff_pair = self._args.cutoff_pair_distance
            if cutoff_pair is not None:
                self._confs['cutoff_pair_distance'] = cutoff_pair

        if 'gamma_conversion_factor' in self._args:
            g_conv_factor = self._args.gamma_conversion_factor
            if g_conv_factor is not None:
                self._confs['gamma_conversion_factor'] = g_conv_factor

        if 'grid_addresses' in self._args:
            grid_adrs = self._args.grid_addresses
            if grid_adrs is not None:
                self._confs['grid_addresses'] = " ".join(grid_adrs)

        if 'grid_points' in self._args:
            if self._args.grid_points is not None:
                self._confs['grid_points'] = " ".join(self._args.grid_points)

        if 'ion_clamped' in self._args:
            if self._args.ion_clamped:
                self._confs['ion_clamped'] = '.true.'

        if 'is_bterta' in self._args:
            if self._args.is_bterta:
                self._confs['bterta'] = '.true.'

        if 'is_compact_fc' in self._args:
            if self._args.is_compact_fc:
                self._confs['compact_fc'] = '.true.'

        if 'is_gruneisen' in self._args:
            if self._args.is_gruneisen:
                self._confs['gruneisen'] = '.true.'

        if 'is_full_pp' in self._args:
            if self._args.is_full_pp:
                self._confs['full_pp'] = '.true.'

        if 'is_imag_self_energy' in self._args:
            if self._args.is_imag_self_energy:
                self._confs['imag_self_energy'] = '.true.'

        if 'is_isotope' in self._args:
            if self._args.is_isotope:
                self._confs['isotope'] = '.true.'

        if 'is_joint_dos' in self._args:
            if self._args.is_joint_dos:
                self._confs['joint_dos'] = '.true.'

        if 'no_kappa_stars' in self._args:
            if self._args.no_kappa_stars:
                self._confs['kappa_star'] = '.false.'

        if 'is_lbte' in self._args:
            if self._args.is_lbte:
                self._confs['lbte'] = '.true.'

        if 'is_N_U' in self._args:
            if self._args.is_N_U:
                self._confs['N_U'] = '.true.'

        if 'is_real_self_energy' in self._args:
            if self._args.is_real_self_energy:
                self._confs['real_self_energy'] = '.true.'

        if 'is_reducible_collision_matrix' in self._args:
            if self._args.is_reducible_collision_matrix:
                self._confs['reducible_collision_matrix'] = '.true.'

        if 'is_spectral_function' in self._args:
            if self._args.is_spectral_function:
                self._confs['spectral_function'] = '.true.'

        if 'is_symmetrize_fc2' in self._args:
            if self._args.is_symmetrize_fc2:
                self._confs['symmetrize_fc2'] = '.true.'

        if 'is_symmetrize_fc3_q' in self._args:
            if self._args.is_symmetrize_fc3_q:
                self._confs['symmetrize_fc3_q'] = '.true.'

        if 'is_symmetrize_fc3_r' in self._args:
            if self._args.is_symmetrize_fc3_r:
                self._confs['symmetrize_fc3_r'] = '.true.'

        if 'lapack_zheev_uplo' in self._args:
            if self._args.lapack_zheev_uplo is not None:
                self._confs['lapack_zheev_uplo'] = self._args.lapack_zheev_uplo

        if 'mass_variances' in self._args:
            mass_variances = self._args.mass_variances
            if mass_variances is not None:
                self._confs['mass_variances'] = " ".join(mass_variances)

        if 'max_freepath' in self._args:
            if self._args.max_freepath is not None:
                self._confs['max_freepath'] = self._args.max_freepath

        if 'mesh_divisors' in self._args:
            mesh_divisors = self._args.mesh_divisors
            if mesh_divisors is not None:
                self._confs['mesh_divisors'] = " ".join(mesh_divisors)

        if 'num_points_in_batch' in self._args:
            num_points_in_batch = self._args.num_points_in_batch
            if num_points_in_batch is not None:
                self._confs['num_points_in_batch'] = num_points_in_batch

        if 'pinv_cutoff' in self._args:
            if self._args.pinv_cutoff is not None:
                self._confs['pinv_cutoff'] = self._args.pinv_cutoff

        if 'pinv_solver' in self._args:
            if self._args.pinv_solver is not None:
                self._confs['pinv_solver'] = self._args.pinv_solver

        if 'pp_conversion_factor' in self._args:
            pp_conv_factor = self._args.pp_conversion_factor
            if pp_conv_factor is not None:
                self._confs['pp_conversion_factor'] = pp_conv_factor

        if 'read_fc2' in self._args:
            if self._args.read_fc2:
                self._confs['read_fc2'] = '.true.'

        if 'read_fc3' in self._args:
            if self._args.read_fc3:
                self._confs['read_fc3'] = '.true.'

        if 'read_gamma' in self._args:
            if self._args.read_gamma:
                self._confs['read_gamma'] = '.true.'

        if 'read_phonon' in self._args:
            if self._args.read_phonon:
                self._confs['read_phonon'] = '.true.'

        if 'read_pp' in self._args:
            if self._args.read_pp:
                self._confs['read_pp'] = '.true.'

        if 'read_collision' in self._args:
            if self._args.read_collision is not None:
                self._confs['read_collision'] = self._args.read_collision

        if 'scattering_event_class' in self._args:
            scatt_class = self._args.scattering_event_class
            if scatt_class is not None:
                self._confs['scattering_event_class'] = scatt_class

        if 'sigma_cutoff_width' in self._args:
            sigma_cutoff = self._args.sigma_cutoff_width
            if sigma_cutoff is not None:
                self._confs['sigma_cutoff_width'] = sigma_cutoff

        if 'solve_collective_phonon' in self._args:
            if self._args.solve_collective_phonon:
                self._confs['collective_phonon'] = '.true.'

        if 'subtract_forces' in self._args:
            if self._args.subtract_forces:
                self._confs['subtract_forces'] = self._args.subtract_forces

        if 'use_ave_pp' in self._args:
            if self._args.use_ave_pp:
                self._confs['use_ave_pp'] = '.true.'

        if 'write_gamma_detail' in self._args:
            if self._args.write_gamma_detail:
                self._confs['write_gamma_detail'] = '.true.'

        if 'write_gamma' in self._args:
            if self._args.write_gamma:
                self._confs['write_gamma'] = '.true.'

        if 'write_collision' in self._args:
            if self._args.write_collision:
                self._confs['write_collision'] = '.true.'

        if 'write_phonon' in self._args:
            if self._args.write_phonon:
                self._confs['write_phonon'] = '.true.'

        if 'write_pp' in self._args:
            if self._args.write_pp:
                self._confs['write_pp'] = '.true.'

        if 'write_LBTE_solution' in self._args:
            if self._args.write_LBTE_solution:
                self._confs['write_LBTE_solution'] = '.true.'
Exemplo n.º 15
0
    def _set_settings(self):
        ConfParser.set_settings(self)
        params = self._parameters

        # Supercell size for fc2
        if params.has_key('dim_extra'):
            self._settings.set_phonon_supercell_matrix(params['dim_extra'])

        # Cutoff distance of third-order force constants. Elements where any 
        # pair of atoms has larger distance than cut-off distance are set zero.
        if params.has_key('cutoff_fc3_distance'):
            self._settings.set_cutoff_fc3_distance(params['cutoff_fc3_distance'])

        # Cutoff distance between pairs of displaced atoms used for supercell
        # creation with displacements and making third-order force constants
        if params.has_key('cutoff_pair_distance'):
            self._settings.set_cutoff_pair_distance(
                params['cutoff_pair_distance'])

        # Phonon modes below this frequency are ignored.
        if params.has_key('cutoff_frequency'):
            self._settings.set_cutoff_frequency(params['cutoff_frequency'])

        # Cutoff lifetime used for thermal conductivity calculation
        if params.has_key('cutoff_lifetime'):
            self._settings.set_cutoff_lifetime(params['cutoff_lifetime'])

        # Grid points
        if params.has_key('grid_points'):
            self._settings.set_grid_points(params['grid_points'])

        # Atoms are clamped under applied strain in Gruneisen parameter calculation
        if params.has_key('ion_clamped'):
            self._settings.set_ion_clamped(params['ion_clamped'])

        # Calculate thermal conductivity in BTE-RTA
        if params.has_key('is_bterta'):
            self._settings.set_is_bterta(params['is_bterta'])

        # Calculate thermal conductivity in LBTE with Chaput's method
        if params.has_key('is_lbte'):
            self._settings.set_is_lbte(params['is_lbte'])

        # Calculate linewidths
        if params.has_key('is_linewidth'):
            self._settings.set_is_linewidth(params['is_linewidth'])

        # Calculate frequency_shifts
        if params.has_key('is_frequency_shift'):
            self._settings.set_is_frequency_shift(params['is_frequency_shift'])

        # Mass variance parameters
        if params.has_key('mass_variances'):
            self._settings.set_mass_variances(params['mass_variances'])

        # Maximum mean free path
        if params.has_key('max_freepath'):
            self._settings.set_max_freepath(params['max_freepath'])

        # Divisors for mesh numbers
        if params.has_key('mesh_divisors'):
            self._settings.set_mesh_divisors(params['mesh_divisors'][:3])
            if len(params['mesh_divisors']) > 3:
                self._settings.set_coarse_mesh_shifts(
                    params['mesh_divisors'][3:])

        # Read phonon-phonon interaction amplitudes from hdf5
        if params.has_key('read_amplitude'):
            self._settings.set_read_amplitude(params['read_amplitude'])

        # Read gammas from hdf5
        if params.has_key('read_gamma'):
            self._settings.set_read_gamma(params['read_gamma'])
            
        # Read collision matrix and gammas from hdf5
        if params.has_key('read_collision'):
            self._settings.set_read_collision(params['read_collision'])
            
        # Sum partial kappa at q-stars
        if params.has_key('no_kappa_stars'):
            self._settings.set_no_kappa_stars(params['no_kappa_stars'])

        # Temperatures
        if params.has_key('temperatures'):
            self._settings.set_temperatures(params['temperatures'])

        # Write phonon-phonon interaction amplitudes to hdf5
        if params.has_key('write_amplitude'):
            self._settings.set_write_amplitude(params['write_amplitude'])

        # Write gammas to hdf5
        if params.has_key('write_gamma'):
            self._settings.set_write_gamma(params['write_gamma'])

        # Write collision matrix and gammas to hdf5
        if params.has_key('write_collision'):
            self._settings.set_write_collision(params['write_collision'])