/*******************************************************************************
* This file is part of SWIFT.
* Copyright (c) 2022 Mladen Ivkovic (mladen.ivkovic@hotmail.com)
*
* 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_CELL_RT_H
#define SWIFT_CELL_RT_H
/* Config parameters. */
#include
/* Local includes. */
#include "timeline.h"
/**
* @brief Radiative transfer related cell variables.
*/
struct cell_rt {
/* If we are not using RT, compact as much of the unecessary variables
into an anonymous union to save memory in the cell structure. */
#ifdef RT_NONE
union {
#endif
/*! Radiative transfer ghost in task */
struct task *rt_in;
/*! Radiative transfer ghost1 task (finishes up injection) */
struct task *rt_ghost1;
/*! Task for self/pair gradient step of radiative transfer */
struct link *rt_gradient;
/*! Radiative transfer ghost2 task */
struct task *rt_ghost2;
/*! Task for self/pair transport step of radiative transfer */
struct link *rt_transport;
/*! Radiative transfer transport out task */
struct task *rt_transport_out;
/*! Radiative transfer thermochemistry task */
struct task *rt_tchem;
/*! Radiative transfer cell time advancement task */
struct task *rt_advance_cell_time;
/*! Sort a cell after a recv rt gradients */
struct task *rt_sorts;
/*! Collect the cell times from the super to the top level */
struct task *rt_collect_times;
/*! Radiative transfer ghost out task */
struct task *rt_out;
/*! Bit mask of sorts that need to be computed for this cell.
* Needed to be able to skip sorting undrifted cells. */
uint16_t do_sort;
#ifdef RT_NONE
};
#endif
#ifdef SWIFT_RT_DEBUG_CHECKS
/*! has rt_advance_cell_time run on this cell? */
int advanced_time;
#endif
/*! Minimum end of (integer) time step in this cell for RT tasks. */
integertime_t ti_rt_end_min;
/*! Maximum beginning of (integer) time step in this cell for RT tasks. */
integertime_t ti_rt_beg_max;
/*! Minimum (integer) time step size in this cell for RT tasks. */
integertime_t ti_rt_min_step_size;
/*! Number of #part updated for RT in this cell */
int updated;
};
#endif /* SWIFT_CELL_RT_H */