/******************************************************************************* * This file is part of SWIFT. * Copyright (c) 2018 Matthieu Schaller (schaller@strw.leidenuniv.nl) * 2021 Edo Altamura (edoardo.altamura@manchester.ac.uk) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see . * ******************************************************************************/ #ifndef SWIFT_TRACERS_STRUCT_EAGLE_H #define SWIFT_TRACERS_STRUCT_EAGLE_H /* Local includes */ #include "tracers_triggers.h" /*! The possible accretion modes every black hole can take. */ enum BH_accretion_modes { BH_thick_disc = 0, /* At low Eddington ratios */ BH_thin_disc, /* At moderate Eddington ratios */ BH_slim_disc, /* Super-Eddington accretion */ BH_accretion_modes_count /* Number of possible accretion modes */ }; /** * @brief Properties of the tracers stored in the extended particle data. */ struct tracers_xpart_data { /*! Maximum temperature achieved by this particle */ float maximum_temperature; /*! Anonymous union for the cosmological non-cosmological runs distinction */ union { /*! Scale-factor at which the maximal temperature was reached */ float maximum_temperature_scale_factor; /*! Time at which the maximal temperature was reached */ float maximum_temperature_time; }; union { /*! Scale-factor at which the particle last received energy from AGN */ float last_AGN_injection_scale_factor; /*! Time at which the particle last received energy from AGN */ float last_AGN_injection_time; }; union { /* Last scale factor this particle was kicked as part of jet feedback */ float last_AGN_jet_feedback_scale_factor; /* Last time this particle was kicked as part of jet feedback */ float last_AGN_jet_feedback_time; }; /*! Averaged SFR over two different time slices */ float averaged_SFR[num_snapshot_triggers_part]; /*! Density of the gas before the last AGN feedback event * (physical internal units) */ float density_before_last_AGN_feedback_event; /*! Entropy of the gas before the last AGN feedback event * (physical internal units) */ float entropy_before_last_AGN_feedback_event; /*! Density of the gas at the last AGN feedback event * (physical internal units) */ float density_at_last_AGN_feedback_event; /*! Entropy of the gas at the last AGN feedback event * (physical internal units) */ float entropy_at_last_AGN_feedback_event; /*! Total amount of AGN feedback energy received by this particle * (physical units) */ float AGN_feedback_energy; /*! Total jet feedback energy received by this particle */ float jet_feedback_energy; /*! Counts how many times this particle has been kicked as part of jet feedback */ char hit_by_jet_feedback; /*! Has this particle been hit by SNII feedback? */ char hit_by_SNII_feedback; /*! Has this particle been hit by AGN feedback? */ char hit_by_AGN_feedback; /*! Kick velocity at last AGN jet event */ float last_jet_kick_velocity; /*! The accretion/feedback mode of the BH when this particle was last * kicked */ enum BH_accretion_modes last_jet_kick_accretion_mode; /*! The ID of the BH that did the last kick */ long long last_jet_kick_BH_id; }; /** * @brief Properties of the tracers stored in the star particle data. * * Note: In this model, they are identical to the xpart data. */ #define tracers_spart_data tracers_xpart_data /** * @brief Properties of the tracers stored in the black hole particle data. */ struct tracers_bpart_data { /*! Averaged accretion rate over two different time slices */ float averaged_accretion_rate[num_snapshot_triggers_bpart]; }; #endif /* SWIFT_TRACERS_STRUCT_EAGLE_H */