/** @file reaction.c
* @brief Header file to define reactions.
*/
#ifndef _REACTION_H_
#include "react_table.h"
typedef struct reaction_t reaction_t;
/* Maximum number of reactants that can enter into a reaction. */
#define REACTION_MAX_IN 4
#define REACTION_MAX_OUT 6
struct reaction_t {
/* Photoionization is an special reaction where all the other parameters
* are ignored. Be careful to put photoionization in the correct position
* of the reaction list.
*/
int is_photo;
/* Number of species in and out. */
int nin, nout;
int input[REACTION_MAX_IN];
int output[REACTION_MAX_OUT];
const char *inname[REACTION_MAX_IN];
const char *outname[REACTION_MAX_OUT];
void (*f) (double *in, int nin, double *out, int nout, double k, double dens, react_table *rt);
/* For reactions where k(E) is given by a reaction table. Such reactions
* require 'f' to be f_react_table. 'k' is ignored for these reactions.
* 'rt' is initialized with 'NULL', while 'tablefile' contains the filename
* with the reaction table.
*
* This file is read in react_add().
*/
react_table *rt;
char *tablefile;
double k;
/* This allows us to define many simultaneous reactions. */
reaction_t *next;
};
extern reaction_t *reactions_list;
extern reaction_t *reaction_index[];
#define _REACTION_H_
#endif