00001 #ifndef PARTICLES_PROTOTYPES_H
00002 #define PARTICLES_PROTOTYPES_H
00003 #include "../copyright.h"
00004
00005
00006
00007
00008 #include <stdio.h>
00009 #include <stdarg.h>
00010 #include "../athena.h"
00011 #include "../defs.h"
00012
00013 #include "../config.h"
00014
00015 #ifdef PARTICLES
00016
00017
00018 void bvals_particle(Grid *pG, Domain *pD);
00019 #ifdef FARGO
00020 void advect_particles(Grid *pG, Domain *pD);
00021 #endif
00022 void bvals_particle_init(Grid *pG, Domain *pD);
00023 void bvals_particle_fun(enum Direction dir, VBCFun_t prob_bc);
00024 void bvals_final_particle(Grid *pG, Domain *pD);
00025
00026
00027 void dump_particle_history(Grid *pGrid, Domain *pD, Output *pOut);
00028 void dump_parhistory_enroll();
00029
00030
00031 #ifdef FEEDBACK
00032 void exchange_feedback(Grid *pG, Domain *pD);
00033 void exchange_feedback_init(Grid *pG, Domain *pD);
00034 void exchange_feedback_fun(enum Direction dir, VBCFun_t prob_bc);
00035 void exchange_feedback_destruct(Grid *pG, Domain *pD);
00036 #endif
00037
00038
00039 void init_particle(Grid *pG, Domain *pD);
00040 void particle_destruct(Grid *pG);
00041 void particle_realloc(Grid *pG, long n);
00042
00043
00044 void Integrate_Particles(Grid *pG, Domain *pD);
00045 void int_par_exp (Grid *pG, Grain *curG, Vector cell1,
00046 Real *dv1, Real *dv2, Real *dv3, Real *ts);
00047 void int_par_semimp(Grid *pG, Grain *curG, Vector cell1,
00048 Real *dv1, Real *dv2, Real *dv3, Real *ts);
00049 void int_par_fulimp(Grid *pG, Grain *curG, Vector cell1,
00050 Real *dv1, Real *dv2, Real *dv3, Real *ts);
00051 void int_par_spec (Grid *pG, Grain *curG, Vector cell1,
00052 Real *dv1, Real *dv2, Real *dv3, Real *ts);
00053 #ifdef FEEDBACK
00054 void feedback_predictor(Grid* pG);
00055 void feedback_corrector(Grid *pG, Grain *gri, Grain *grf, Vector cell1,
00056 Real dv1, Real dv2, Real dv3, Real ts);
00057 #endif
00058
00059
00060 void particle_to_grid(Grid *pG, Domain *pD, PropFun_t par_prop);
00061 void dump_particle_binary(Grid *pG, Domain *pD, Output *pOut);
00062 int property_all(const Grain *gr, const GrainAux *grsub);
00063
00064
00065 void get_gasinfo(Grid *pG);
00066
00067 void getwei_linear(Grid *pG, Real x1, Real x2, Real x3, Vector cell1,
00068 Real weight[3][3][3], int *is, int *js, int *ks);
00069 void getwei_TSC (Grid *pG, Real x1, Real x2, Real x3, Vector cell1,
00070 Real weight[3][3][3], int *is, int *js, int *ks);
00071 void getwei_QP (Grid *pG, Real x1, Real x2, Real x3, Vector cell1,
00072 Real weight[3][3][3], int *is, int *js, int *ks);
00073
00074 int getvalues(Grid *pG, Real weight[3][3][3], int is, int js, int ks,
00075 #ifndef FEEDBACK
00076 Real *rho, Real *u1, Real *u2, Real *u3, Real *cs
00077 #else
00078 Real *rho, Real *u1, Real *u2, Real *u3, Real *cs, Real *stiff
00079 #endif
00080 );
00081
00082 Real get_ts_epstein(Grid *pG, int type, Real rho, Real cs, Real vd);
00083 Real get_ts_general(Grid *pG, int type, Real rho, Real cs, Real vd);
00084 Real get_ts_fixed (Grid *pG, int type, Real rho, Real cs, Real vd);
00085
00086 #ifdef FEEDBACK
00087 void feedback_clear(Grid *pG);
00088 void distrFB_pred(Grid *pG, Real weight[3][3][3], int is, int js, int ks,
00089 #ifndef BAROTROPIC
00090 Vector fb, Real stiffness, Real Elosspar
00091 #else
00092 Vector fb, Real stiffness
00093 #endif
00094 );
00095 void distrFB_corr(Grid *pG, Real weight[3][3][3], int is, int js, int ks,
00096 Vector fb, Real Elosspar);
00097 #endif
00098
00099 void shuffle(Grid* pG);
00100
00101 #endif
00102 #endif