# Define the system of units to use internally. 
InternalUnitSystem:
  UnitMass_in_cgs:     1.98848e43    # 10^10 M_sun in grams
  UnitLength_in_cgs:   3.08567758e21 # kpc in centimeters
  UnitVelocity_in_cgs: 1e5           # km/s in centimeters per second
  UnitCurrent_in_cgs:  1             # Amperes
  UnitTemp_in_cgs:     1             # Kelvin

Scheduler:
  max_top_level_cells: 16
  cell_extra_gparts:   1000      # (Optional) Number of spare gparts per top-level allocated at rebuild time for on-the-fly creation.
  cell_extra_sinks:    1000      # (Optional) Number of spare sinks per top-level allocated at rebuild time for on-the-fly creation.
  cell_extra_sparts:   1000      # (Optional) Number of spare sparts per top-level allocated at rebuild time for on-the-fly creation.

  
# Parameters governing the time integration
TimeIntegration:
  time_begin: 0.    # The starting time of the simulation (in internal units).
  time_end:   0.1   # The end time of the simulation (in internal units).
  dt_min:     1e-10 # The minimal time-step size of the simulation (in internal units).
  dt_max:     0.1  # The maximal time-step size of the simulation (in internal units).
  max_dt_RMS_factor: 0.25  # (Optional) Dimensionless factor for the maximal displacement allowed based on the RMS velocities.

# Parameters governing the snapshots
Snapshots:
  subdir:              snap  # snapshot directory
  basename:            snapshot # Common part of the name of output files
  time_first:          0.    # Time of the first output (in internal units)
  delta_time:          1e-2  # Time difference between consecutive outputs (in internal units)
  compression:         4

# Parameters governing the conserved quantities statistics
Statistics:
  delta_time:          1e-3 # Time between statistics output

# Parameters for the self-gravity scheme
Gravity:
  MAC:                           adaptive  # Choice of mulitpole acceptance criterion: 'adaptive' OR 'geometric'.
  epsilon_fmm:                   0.001     # Tolerance parameter for the adaptive multipole acceptance criterion.
  theta_cr:                      0.7       # Opening angle for the purely gemoetric criterion.
  eta:          0.025               # Constant dimensionless multiplier for time integration.
  max_physical_baryon_softening: 0.05  # Physical softening length (in internal units)
  max_physical_DM_softening: 0.05  # Physical softening length (in internal units)
  
# Parameters for the hydrodynamics scheme
SPH:  
  resolution_eta:        1.2348   # Target smoothing length in units of the mean inter-particle separation (1.2348 == 48Ngbs with the cubic spline kernel).
  CFL_condition:         0.1      # Courant-Friedrich-Levy condition for time integration.
  minimal_temperature:   10.      # Kelvin
  h_max:                 10.      # (Optional) Maximal allowed smoothing length in internal units. Defaults to FLT_MAX if unspecified.

# Parameters related to the initial conditions
InitialConditions:
  file_name:  ./galaxy_multi_component.hdf5     # The file to read
  periodic:   0                                 # Non-periodic BCs
  shift:    [750,750,750]                       # Centre the box

# Cooling with Grackle 2.0
GrackleCooling:
  cloudy_table: CloudyData_UVB=HM2012.h5 # Name of the Cloudy Table (available on the grackle bitbucket repository)
  with_UV_background: 1 # Enable or not the UV background
  redshift: 0 # Redshift to use (-1 means time based redshift)
  with_metal_cooling: 1 # Enable or not the metal cooling
  provide_volumetric_heating_rates: 0 # User provide volumetric heating rates
  provide_specific_heating_rates: 0 # User provide specific heating rates
  self_shielding_method: -1 # Grackle (<= 3) or Gear self shielding method
  self_shielding_threshold_atom_per_cm3: 0.007  # Required only with GEAR's self shielding. Density threshold of the self shielding
  max_steps: 1000
  convergence_limit: 1e-2
  thermal_time_myr: 5
  maximal_density_Hpcm3: -1 # Maximal density (in hydrogen atoms/cm^3) for cooling. Higher densities are floored to this value to ensure grackle works properly when interpolating beyond the cloudy_table maximal density. A value < 0 deactivates this parameter.

GEARStarFormation:
  star_formation_efficiency: 0.01     # star formation efficiency (c_*)
  maximal_temperature_K:     3e4      # Upper limit to the temperature of a star forming particle
  density_threshold_Hpcm3:   0.1      # Density threshold in Hydrogen atoms/cm3
  n_stars_per_particle: 4
  min_mass_frac: 0.5

GEARSink:
  use_fixed_cut_off_radius: 1                 # Are we using a fixed cutoff radius? If we are, in GEAR the cutoff radius is fixed at the value specified below, and the sink smoothing length is fixed at this value divided by kernel_gamma. If not, the cutoff radius varies with the sink smoothing length as r_cut = h*kernel_gamma.
  cut_off_radius: 5e-3                        # Cut off radius of all the sinks in internal units. Ignored if use_fixed_cut_off_radius is 0. 
  f_acc: 0.1
  temperature_threshold_K: 1e4               # Max temperature (in K) for forming a sink when density_threshold_Hpcm3 <= density <= maximal_density_threshold_Hpcm3.
  density_threshold_Hpcm3: 1e0               # Minimum gas density (in Hydrogen atoms/cm3) required to form a sink particle.
  maximal_density_threshold_Hpcm3: 1e5       # If the gas density exceeds this value (in Hydrogen atoms/cm3), a sink forms regardless of temperature if all other criteria are passed.
  stellar_particle_mass_Msun: 1e5            # Mass of the stellar particle representing the low mass stars, in solar mass
  minimal_discrete_mass_Msun: 30             # Minimal mass of stars represented by discrete particles, in solar mass
  stellar_particle_mass_first_stars_Msun: 1e5 # Mass of the stellar particle representing the low mass stars, in solar mass
  minimal_discrete_mass_first_stars_Msun: 30  # Minimal mass of stars represented by discrete particles, in solar mass
  star_spawning_sigma_factor: 0.5             # Factor to rescale the velocity dispersion of the stars when they are spawned. (Default: 0.2)
  sink_formation_contracting_gas_criterion: 1     # (Optional) Activate the contracting gas check for sink formation. (Default: 1)
  sink_formation_smoothing_length_criterion: 0    # (Optional) Activate the smoothing length check for sink formation. (Default: 1)
  sink_formation_jeans_instability_criterion: 1   # (Optional) Activate the two Jeans instability checks for sink formation. (Default: 1)
  sink_formation_bound_state_criterion: 1         # (Optional) Activate the bound state check for sink formation. (Default: 1)
  sink_formation_overlapping_sink_criterion: 1    # (Optional) Activate the overlapping sink check for sink formation. (Default: 1)
  disable_sink_formation: 0                       # (Optional) Disable sink formation. (Default: 0)

  # Timesteps parameters
  CFL_condition:                        0.5       # Courant-Friedrich-Levy condition for time integration.
  timestep_age_threshold_unlimited_Myr: 100.      # (Optional) Age above which sinks have no time-step restriction any more (in Mega-years). Defaults to 0.
  timestep_age_threshold_Myr:           25.       # (Optional) Age at which sink switch from young to old for time-stepping purposes (in Mega-years). Defaults to FLT_MAX.
  max_timestep_young_Myr:                1.       # (Optional) Maximal time-step length of young sinks (in Mega-years). Defaults to FLT_MAX.
  max_timestep_old_Myr:                  5.       # (Optional) Maximal time-step length of old sinks (in Mega-years). Defaults to FLT_MAX.
  n_IMF:                                 2        # (Optional) Number of times the IMF mass can be swallowed in a single timestep. (Default: FLTM_MAX)


GEARPressureFloor:
  jeans_factor: 10

GEARFeedback:
  supernovae_energy_erg: 1e51
  supernovae_efficiency: 0.1
  yields_table: POPIIsw.h5
  discrete_yields: 1
  yields_table_first_stars: POPIIsw.h5          # Table containing the yields of the first stars.
  metallicity_max_first_stars: -5                          # Maximal metallicity (in mass fraction) for a first star (-1 to deactivate).
  elements: [Fe, Mg, O, C, Al, Ca, Ba, Zn, Eu]             # Elements to read in the yields table. The number of element should be one less than the number of elements (N) requested during the configuration (--with-chemistry=GEAR_N).

GEARChemistry:
  initial_metallicity: 1
  scale_initial_metallicity: 1
