diff --git a/include/proto.h b/include/proto.h new file mode 100644 index 0000000000000000000000000000000000000000..8ed54ad968fd3c9aa610ae55264bc39c51ac64f7 --- /dev/null +++ b/include/proto.h @@ -0,0 +1,263 @@ +/** @file proto.h + * @brief Function prototypes for exported functions. + */ + +#ifndef _RZ_ARRAY_H_ +# include "rz_array.h" +#endif + +/* rz_array.c */ +rz_array_t *rz_new_3d_a (int r0, int z0, int r1, int z1, int ntheta); +rz_array_t *rz_guest (rz_array_t *host, int r0, int z0, int r1, int z1); +void rz_set_zero (rz_array_t *array); +void rz_set_periodic (rz_array_t *array); +void rz_copy_bnd (rz_array_t *from, rz_array_t *to, + int sign, REAL *start_from, REAL *start_to, + int dim0, int inout_from, int inout_to, + int dim1, int dim1_0, int dim1_1, + int dim2, int dim2_0, int dim2_1); +void rz_set_bnd (rz_array_t *array, int sign, REAL *start, int dim0, int inout, + int dim1, int dim1_from, int dim1_to, + int dim2, int dim2_from, int dim2_to); +void rz_free (rz_array_t *array); +void rz_copy (rz_array_t *fro, int rfro, int zfro, + rz_array_t *to, int rto, int zto, + int rn, int zn); +void rz_copy_modes (rz_array_t *fro, int rfro, int zfro, + rz_array_t *to, int rto, int zto, + int rn, int zn, int nmode_fro, int nmode_to); +void rz_dump (rz_array_t *rz_array, const char *fname, const char *mode, + int r0, int z0, int r1, int z1); +void rz_dump_3d (rz_array_t *rz_array, const char *fname, const char *mode, + int r0, int z0, int r1, int z1, int ntheta); +void rz_axis_dump (const char *fname, int x0, int x1, double delta); + + +#ifndef _GRID_H_ +# include "grid.h" +#endif + +/* grid.c */ +int grid_max_depth_r (grid_t *grid); +double grid_rmin_r (grid_t *grid); +void grid_print_r (grid_t *grid, int indent); +int grid_contains (grid_t *grid, int i, int j, int check); +int grid_overlap (grid_t *grid1, grid_t *grid2, int buff1, int buff2, + int *left, int *bottom, int *right, int *top, + int *level_diff); +int grid_overlap_with_shifts (grid_t *grid1, grid_t *grid2, + int buff1, int buff2, + int *left, int *bottom, int *right, int *top, + int *level_diff, int shift_r, int shift_z); +void grid_inherit_ext_bound (grid_t *grid); +grid_t *grid_finest_containing_r (grid_t *grid, double r, double z); +int grid_howmany_children (grid_t *grid); +grid_t *grid_get_child (grid_t *grid, int n); + + +#ifndef _INTERPOL2_H_ +# include "interpol2.h" +#endif + +interpol_t *interpol_new_a (double Lr, double Lz, interpol_method_t *method); +void interpol_free (interpol_t *this); +void interpol_set_stencil (interpol_t *this, double r0, double z0, ...); +void interpol_set_stencil_at (grid_t *grid, + interpol_t *this, double r0, double z0, + rz_array_t *ar, + int ir, int iz, int itheta); +void interpol_set_coeffs (interpol_t *this); +double interpol_apply (interpol_t *this, double r, double z); + +#ifndef _MAPPER_H_ +# include "mapper.h" +#endif + +void map_grid (mapper_t **mappers, grid_t *source, grid_t *target, int ntheta, + int copy, int interpol, int coarsen, int s_buff, int t_buff); +void map_grid_r (mapper_t **mappers, grid_t *source, grid_t *target, + int ntheta, int copy, int interpol, int coarsen, + int s_buff, int t_buff); +void map_trees_r (mapper_t **mappers, grid_t *source, grid_t *target, + int ntheta, int copy, int interpol, int coarsen, + int s_buff, int t_buff); + +#ifndef _CDR_H_ +# include "cdr.h" +#endif + +#ifndef _POISSON_H_ +# include "poisson.h" +#endif + +/* cdr.c */ +void cdr_init (void); +void cdr_end (void); + +cdr_grid_t *cdr_new_3d_a (int r0, int z0, int r1, int z1, int ntheta); +cdr_grid_t *cdr_like_a (cdr_grid_t *grid); +cdr_grid_t *cdr_clone_a (cdr_grid_t *grid); +void cdr_set_periodic (cdr_grid_t *grid); +void cdr_free (cdr_grid_t *grid); +void cdr_free_r (cdr_grid_t *grid); +void cdr_calc_charge (cdr_grid_t *grid); +void cdr_calc_charge_r (cdr_grid_t *root); +void cdr_dft_charge_r (cdr_grid_t *grid, int sign); +cdr_grid_t *cdr_create_coarser_a (cdr_grid_t *grid); +cdr_grid_t *cdr_add_coarser_grids_a (cdr_grid_t *prev_root, int n); +void cdr_free_coarser_grids (cdr_grid_t *prev_root, int n); +void cdr_add_ext_field (cdr_grid_t *grid); +void cdr_add_ext_field_r (cdr_grid_t *grid); +void cdr_add_inhom_field_r (cdr_grid_t *cdr, double q); +void cdr_calc_eabs (cdr_grid_t *grid); +void cdr_calc_eabs_r (cdr_grid_t *grid); +void cdr_nonegative (cdr_grid_t *grid); +void cdr_nonegative_r (cdr_grid_t *grid); +pois_grid_t **cdr_calc_field_r (cdr_grid_t *grid, int return_pois); +void cdr_set_ext_bnd (cdr_grid_t *grid); +void cdr_set_ext_bnd_r (cdr_grid_t *grid); +void cdr_calc_d_dens (cdr_grid_t *grid); +void cdr_calc_d_dens_r (cdr_grid_t *grid); +void cdr_advect_diffu (cdr_grid_t *grid); +void cdr_advect_diffu_r (cdr_grid_t *grid); + +double cdr_courant (cdr_grid_t *grid); +void cdr_update (cdr_grid_t *orig, cdr_grid_t *dest, double h); +void cdr_rk2_update (cdr_grid_t *dens_0, cdr_grid_t *d_dens_1, + cdr_grid_t *d_dens_2, cdr_grid_t *dest, + double h); +void cdr_rk2_update_r (cdr_grid_t *dens_0, cdr_grid_t *d_dens_1, + cdr_grid_t *d_dens_2, cdr_grid_t *dest, + double h); +void cdr_self_update_r (cdr_grid_t *grid, double h); +void cdr_like_update_ar (cdr_grid_t *grid, cdr_grid_t *new_grid, double h); +double cdr_rk2 (cdr_grid_t *grid, double h, double t); + +void cdr_update_refined (cdr_grid_t **ptree); +void cdr_calc_maxs (cdr_grid_t *grid); +void cdr_refine (cdr_grid_t *grid); +void cdr_refine_r (cdr_grid_t *grid, cdr_grid_t *source); +void cdr_match_r (cdr_grid_t *grid1, cdr_grid_t *grid2); +void cdr_set_bnd (cdr_grid_t *grid); +void cdr_set_bnd_r (cdr_grid_t *grid); + +void cdr_restrict (cdr_grid_t *grid); +void cdr_restrict_r (cdr_grid_t *grid); + +void cdr_set_dens (cdr_grid_t *cdr, int species, int mode, double factor, + double (*f) (double, double, double)); +void cdr_init_dens (cdr_grid_t *cdr); +cdr_grid_t *cdr_scratch_init (void); + +mapper_t **cdr_mappers_a (interpol_method_t *interp_method); +void cdr_free_mappers (mapper_t **mappers); + +void cdr_dump (cdr_grid_t *grid, const char *prefix, const char *name); +void cdr_dump_r (cdr_grid_t *grid, const char *prefix, const char *name, + FILE *infp, double sim_time); +cdr_grid_t *cdr_load_tree_r (const char *prefix, const char *name, FILE *infp); +void cdr_dump_frames (cdr_grid_t *grid, const char *prefix, const char *name); + +/* poisson.c */ +void pois_init (void); +pois_grid_t *pois_new_a (int r0, int z0, int r1, int z1); +pois_grid_t *pois_new_3d_a (int r0, int z0, int r1, int z1, int ntheta); +void pois_free (pois_grid_t *grid); +void pois_free_r (pois_grid_t *grid); +pois_grid_t *pois_new_glob_a (int r0, int z0, int r1, int z1, int level); +pois_grid_t *pois_init_tree_a (int r0, int z0, int r1, int z1); +REAL *pois_boundary_a (pois_grid_t *grid, int boundary); +void pois_solve_grid (pois_grid_t *grid, pois_problem_t *prob, + double lambda, double s); +void pois_set_phi_boundaries (pois_grid_t *grid, REAL *boundaries[], + int left_uns, int right_neu, int bottom_neu, + int top_neu); +int pois_map_charge (pois_grid_t *pois, cdr_grid_t *cdr, int mode); +void pois_set_error (pois_grid_t *grid); +int pois_refine (pois_grid_t *grid, double threshold); +pois_grid_t **pois_solve_a (cdr_grid_t *cdr, pois_problem_t *prob); +pois_grid_t **pois_gen_solve_a (cdr_grid_t *cdr, pois_problem_t *prob, + mapper_t **mappers, double es); +pois_grid_t *pois_solve_mode (cdr_grid_t *tree, cdr_grid_t *cdr, + pois_problem_t *prob, int mode, double es); +void pois_solve_r (pois_grid_t *pois, cdr_grid_t *cdr, pois_problem_t *prob, + int mode, double es, double threshold); +double pois_phi_at (pois_grid_t *grid, double r, double z, double theta); +void pois_dump (pois_grid_t *grid, const char *prefix, const char *name); +void pois_dump_r (pois_grid_t *grid, const char *prefix, const char *name); +void pois_write_error_r (pois_grid_t *grid, FILE *fp); +void pois_error_measures (pois_grid_t *grid, double *L1, double *L2, + double *Lmax); +void pois_inhom_init (void); +double pois_inhom_phi (double r, double z); +double pois_inhom_er (double r, double z); +double pois_inhom_ez (double r, double z); +double pois_inhom_q_factor (pois_grid_t *pois); +void pois_add_inhom_phi_r (pois_grid_t *grid, double q); + +#ifndef _PHOTO_H_ +# include "photo.h" +#endif + +/* photo.c */ +void photo_init (); +void photo_register (double A, double lambda); +void photo_copy_list (photo_term_t *src, photo_term_t **dest); +void photo_unregister_all (void); +void photo_dft_r (cdr_grid_t *grid, int sign); +void photo_copy_source (cdr_grid_t *grid); +void photo_add_term (photo_term_t *term, cdr_grid_t *cdr); +void photo_add_term_r (photo_term_t *term, cdr_grid_t *cdr); +pois_grid_t **photo_calc_term (photo_term_t *term, cdr_grid_t *cdr, int i); +void photo_calc (photo_term_t *terms, cdr_grid_t *cdr); +void photo_load_file (char *fname); + +/* cstream.c */ +void init_parameters(void); +void cstream_init (void); +void cstream_end (void); +void cstream_set_field_at_time (double t); + +/* dft.c */ +void dft_transform (rz_array_t *in, rz_array_t *out, int sign); +void dft_diff (grid_t *grid, rz_array_t *f); +void dft_weight (cdr_grid_t *cdr, rz_array_t *var, double weights[], + double power); +void dft_out_weights (cdr_grid_t *grid, const char *prefix, double t); +void dft_perturb (cdr_grid_t *cdr, rz_array_t *var, double *epsilon_k); +void dft_dens_perturb_r (cdr_grid_t *grid, int species, double *epsilon_k); + + +#ifndef _REACTION_H_ +# include "reaction.h" +#endif + +/* reaction.c */ +int find_species_by_name(const char *spec_name); +void react_add (reaction_t *react); +void react_init (); +void react_apply_r (reaction_t *react, cdr_grid_t *grid, int overwrite); +void react_apply_all (cdr_grid_t *grid); + +#ifndef _REACT_TABLE_H_ +# include "react_table.h" +#endif + +/* kinetic module (usually minimal.c) */ +void kinetic_init (void); + +/* sprites module */ +double spr_density_at (double altitude); +void spr_init (); +void spr_hook (cdr_grid_t *grid); +void spr_update (double altitude); +double spr_head_altitude (cdr_grid_t *grid, int sign); + +/* rt.c */ +void kinetic_init (void); +void read_input_file(const char *f_kinetic_name, const char *filename); + + + + +