/** @file species.h
/* @brief include file describing the structs specie_t and seed_t
*/
#ifndef _SPECIES_H_
#include "cstream.h"
/*!< Number of virtual species. */
#define N_VIRTUAL_SPECIES 1
/*!< Information about each of the species. */
typedef struct species_t {
double charge;
double mass; /* Zero or negative mass means immobile particles. */
const char *name;
} species_t;
/*!< Initial seeds for species. Only used at start-up */
typedef struct seed_t {
int species;
const char *kind_species;
double value;
int type;
const char *kind_type;
double x0;
double y0;
double z0;
double sigma_x;
double sigma_y;
double sigma_z;
} seed_t;
extern species_t spec_electrons;
extern species_t spec_ions;
/*!< species[i] points to a species_t structure for species number I */
extern species_t *spec_index[];
extern seed_t *seed_index[];
int no_seed, no_reactions, no_species;
/*!< These are the index of two @a special species (that sounds strange, uh?)
*
* For example, electrons and ions are the species that are initialized
* with a gaussian seed, and photo_ions those that are affected by photo-
* ionization. Their values are set in the kinetic model file (usually
* minimal.c, but more complex models are possible).
*/
int electrons, ions, photo_ions;
/*!< There is also a @a virtual species: Just to make it easy to create
* reaction functions that depend on variables other than species densities.
* Now this trick is only used for @a eabs absolute value of the electric
* field.
*/
extern const int virt_eabs;
#define _SPECIES_H_
#endif