/*******************************************************************************
* This file is part of SWIFT.
* Copyright (c) 2023 Yolan Uyttenhove (yolan.uyttenhove@ugent.be)
*
* 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_CHEMISTRY_ADDITIONS_H
#define SWIFT_CHEMISTRY_ADDITIONS_H
/**
* @file src/chemistry_additions.h
* @brief Branches between the different additional functions required outside
* of the chemistry files (e.g. in hydro loops);
* Specifically for functions used for advection of tracked elements for
* hydro schemes with mass fluxes.
**/
/* Config parameters. */
#include
#ifdef HYDRO_DOES_MASS_FLUX
/* Import the right chemistry definition */
#if defined(CHEMISTRY_AGORA)
#include "./chemistry/AGORA/chemistry_additions.h"
#elif defined(CHEMISTRY_EAGLE)
#include "./chemistry/EAGLE/chemistry_additions.h"
#elif defined(CHEMISTRY_GEAR)
#include "./chemistry/GEAR/chemistry_additions.h"
#elif defined(CHEMISTRY_NONE)
#include "./chemistry/none/chemistry_additions.h"
#elif defined(CHEMISTRY_NONE)
#include "./chemistry/QLA/chemistry_additions.h"
#else
#error "Metal advection unimpmlemented for selected chemistry scheme!"
#endif
#else
/**
* @brief Extra operations done during the kick. This needs to be
* done before the particle mass is updated in the hydro_kick_extra.
*
* @param p Particle to act upon.
* @param dt_therm Thermal energy time-step @f$\frac{dt}{a^2}@f$.
* @param dt_grav Gravity time-step @f$\frac{dt}{a}@f$.
* @param dt_hydro Hydro acceleration time-step
* @f$\frac{dt}{a^{3(\gamma{}-1)}}@f$.
* @param dt_kick_corr Gravity correction time-step @f$adt@f$.
* @param cosmo Cosmology.
* @param hydro_props Additional hydro properties.
*/
__attribute__((always_inline)) INLINE static void chemistry_kick_extra(
struct part* p, float dt_therm, float dt_grav, float dt_hydro,
float dt_kick_corr, const struct cosmology* cosmo,
const struct hydro_props* hydro_props) {}
/**
* @brief update metal mass fluxes between two interacting particles during
* hydro_iact_(non)sym(...) calls.
*
* @param pi first interacting particle
* @param pj second interacting particle
* @param mass_flux the mass flux between these two particles.
* @param flux_dt the time-step over which the fluxes are exchanged
* @param mode 0: non-symmetric interaction, update i only. 1: symmetric
* interaction.
**/
__attribute__((always_inline)) INLINE static void runner_iact_chemistry_fluxes(
struct part* restrict pi, struct part* restrict pj, float mass_flux,
float flux_dt, int mode) {}
#endif
#endif // SWIFT_CHEMISTRY_ADDITIONS_H