Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from pygrackle import chemistry_data
- from pygrackle.grackle_wrapper import _test_dynamic_access
- # the following shows the old body of _set_default_chemistry_parameters(void).
- # - I copied lines 41-136 from
- # https://github.com/grackle-project/grackle/blob/d062c199c7d28011dd4ff3f7a6ba3ce727daaa90/src/clib/set_default_chemistry_parameters.c
- # - and then I removed all comments
- _set_default_chemistry_parameters_body = """
- my_chemistry.Gamma = 5./3.;
- my_chemistry.use_grackle = FALSE;
- my_chemistry.with_radiative_cooling = TRUE;
- my_chemistry.primordial_chemistry = 0;
- my_chemistry.dust_chemistry = 0;
- my_chemistry.metal_cooling = FALSE;
- my_chemistry.h2_on_dust = FALSE;
- my_chemistry.use_dust_density_field = FALSE;
- my_chemistry.cmb_temperature_floor = TRUE;
- my_chemistry.grackle_data_file = "";
- my_chemistry.three_body_rate = 0;
- my_chemistry.cie_cooling = 0;
- my_chemistry.h2_optical_depth_approximation = 0;
- my_chemistry.h2_charge_exchange_rate = 1;
- my_chemistry.h2_dust_rate = 1;
- my_chemistry.h2_h_cooling_rate = 1;
- my_chemistry.collisional_excitation_rates = 1;
- my_chemistry.collisional_ionisation_rates = 1;
- my_chemistry.recombination_cooling_rates = 1;
- my_chemistry.bremsstrahlung_cooling_rates = 1;
- my_chemistry.dust_recombination_cooling = -1;
- my_chemistry.photoelectric_heating = -1;
- my_chemistry.photoelectric_heating_rate = 8.5e-26;
- my_chemistry.use_isrf_field = 0;
- my_chemistry.interstellar_radiation_field = 1.7;
- my_chemistry.use_volumetric_heating_rate = 0;
- my_chemistry.use_specific_heating_rate = 0;
- my_chemistry.UVbackground = 0;
- my_chemistry.UVbackground_redshift_on = FLOAT_UNDEFINED;
- my_chemistry.UVbackground_redshift_off = FLOAT_UNDEFINED;
- my_chemistry.UVbackground_redshift_fullon = FLOAT_UNDEFINED;
- my_chemistry.UVbackground_redshift_drop = FLOAT_UNDEFINED;
- my_chemistry.Compton_xray_heating = 0;
- my_chemistry.LWbackground_intensity = 0.0;
- my_chemistry.LWbackground_sawtooth_suppression = 0;
- my_chemistry.HydrogenFractionByMass = 0.76;
- my_chemistry.DeuteriumToHydrogenRatio = 2.0*3.4e-5;
- my_chemistry.SolarMetalFractionByMass = 0.01295;
- my_chemistry.local_dust_to_gas_ratio = 0.009387;
- my_chemistry.NumberOfTemperatureBins = 600;
- my_chemistry.ih2co = 1;
- my_chemistry.ipiht = 1;
- my_chemistry.TemperatureStart = 1.0;
- my_chemistry.TemperatureEnd = 1.0e9;
- my_chemistry.CaseBRecombination = 0;
- my_chemistry.NumberOfDustTemperatureBins = 250;
- my_chemistry.DustTemperatureStart = 1.0;
- my_chemistry.DustTemperatureEnd = 1500.0;
- my_chemistry.cloudy_electron_fraction_factor = 9.153959e-3;
- my_chemistry.use_radiative_transfer = 0;
- my_chemistry.radiative_transfer_coupled_rate_solver = 0;
- my_chemistry.radiative_transfer_intermediate_step = 0;
- my_chemistry.radiative_transfer_hydrogen_only = 0;
- my_chemistry.self_shielding_method = 0;
- my_chemistry.H2_self_shielding = 0;
- my_chemistry.H2_custom_shielding = 0;
- """
- def _get_default_vals():
- # taken from grackle_macros.h
- substitutions = {'FLOAT_UNDEFINED' : -99999.0, 'INT_UNDEFINED': -99999,
- 'FALSE' : 0, 'TRUE' : 1}
- out = {}
- for line in _set_default_chemistry_parameters_body.splitlines():
- line = line.strip()
- if line == '':
- continue
- assert line[:13] == 'my_chemistry.' and line[-1] == ';'
- name, expression = [elem.strip() for elem in line[13:-1].split('=')]
- out[name] = eval(expression, substitutions)
- return out
- ref_defaults = _get_default_vals()
- my_chem = chemistry_data()
- matching_names, mismatching_names = [], []
- for name, ref_val in ref_defaults.items():
- if name == 'grackle_data_file':
- continue
- actual_val = _test_dynamic_access(my_chem, name,
- is_int_type = isinstance(ref_val, int))
- assert actual_val is not None
- if actual_val == ref_val:
- matching_names.append(name)
- else:
- print(
- f'mismatch in "{name}", actual = {actual_val!r}, ref = {ref_val!r}'
- )
- mismatching_names.append(name)
- print('Number of mismatches: ', len(mismatching_names))
- print('Number of matches:', len(matching_names))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement