extern void check_spc_singularities_user(void);
extern int set_fieldfrompotential(int *fieldfrompotential);
extern int pre_init(
int *argc,
char **argv[]);
extern void filterffde(
int i,
int j,
int k,
FTYPE *
pr);
extern void filter_coldgrmhd(
int i,
int j,
int k,
FTYPE *
pr);
extern void set_arrays(void);
extern void set_rmetricdump_read_content_dnumcolumns(
int *
numcolumns);
extern void set_arrays_perpoint_perline(void);
extern void set_arrays_multidimen(void);
extern void reconstructeno_set_arrays(void);
extern int init_selfgrav(void);
extern void set_rvsr(void);
extern void control_time_store_metric(
int whichtime,
FTYPE *Cunew);
extern void set_drsing(void);
extern void set_rvsr(void);
extern int bound_spacetime_inside_horizon(void);
extern int store_old_metric(void);
extern void compute_dr(
int i,
int j,
int k,
FTYPE *dr);
extern void compute_polycoef_line(
int preforder,
int pl,
int bs,
int ps,
int pe,
int be,
FTYPE *yin,
FTYPE (*youtpolycoef)[
NBIGM]);
extern void flux_interp(
int *whichpltoavg,
int *ifnotavgthencopy,
int whichquantity,
int interporflux,
int dir,
int idel,
int jdel,
int kdel,
FTYPE (*prims_guess)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*stencilvar)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*p2interpm)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*p2interpp)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*pleft)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*pright)[
NSTORE2][
NSTORE3][NPR]);
extern void flux_interp(
int *whichpltoavg,
int *ifnotavgthencopy,
int whichquantity,
int interporflux,
int dir,
int idel,
int jdel,
int kdel,
FTYPE (*prims_guess)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*stencilvar)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*p2interpm)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*p2interpp)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*pleft)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*pright)[
NSTORE2][
NSTORE3][NPR]);
extern void flux_interp(
int *whichpltoavg,
int *ifnotavgthencopy,
int whichquantity,
int interporflux,
int dir,
int idel,
int jdel,
int kdel,
FTYPE (*prims_guess)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*stencilvar)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*p2interpm)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*p2interpp)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*pleft)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*pright)[
NSTORE2][
NSTORE3][NPR]);
extern void flux_interp_multiple(
int *whichpltoavg,
int *ifnotavgthencopy,
int numdirs,
int *whichquantitylist,
int *interporfluxlist,
int *dirmethodlist,
int *Nvec,
int *intdirlist,
int *fluxdirlist,
int *idellist,
int *jdellist,
int *kdellist,
FTYPE (*
pr)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*fluxvec[
NDIM])[
NSTORE2][
NSTORE3][NPR]);
extern void flux_interp_multiple(
int *whichpltoavg,
int *ifnotavgthencopy,
int numdirs,
int *whichquantitylist,
int *interporfluxlist,
int *dirmethodlist,
int *Nvec,
int *intdirlist,
int *fluxdirlist,
int *idellist,
int *jdellist,
int *kdellist,
FTYPE (*
pr)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*fluxvec[
NDIM])[
NSTORE2][
NSTORE3][NPR]);
extern void flux_interp(
int *whichpltoavg,
int *ifnotavgthencopy,
int whichquantity,
int interporflux,
int dir,
int idel,
int jdel,
int kdel,
FTYPE (*prims_guess)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*stencilvar)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*p2interpm)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*p2interpp)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*pleft)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*pright)[
NSTORE2][
NSTORE3][NPR]);
extern void multidir_pre_slope_lim_linetype_weno(void);
extern void multidir_post_slope_lim_linetype_weno(void);
extern int choose_limiter(
int dir,
int i,
int j,
int k,
int pl);
extern int choose_limiter(
int dir,
int i,
int j,
int k,
int pl);
extern void slope_lim_linetype_c2e(
int realisinterp,
int whichprimtype,
int interporflux,
int dir,
int idel,
int jdel,
int kdel,
FTYPE (*primreal)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*stencilvar)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*p2interp)[
NSTORE2][
NSTORE3][NPR2INTERP],
FTYPE (*pleft)[
NSTORE2][
NSTORE3][NPR2INTERP],
FTYPE (*pright)[
NSTORE2][
NSTORE3][NPR2INTERP]);
extern void slope_lim_pointtype(
int interporflux,
int realisinterp,
int pl,
int dir,
int idel,
int jdel,
int kdel,
FTYPE (*primreal)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*p2interp)[
NSTORE2][
NSTORE3][NPR2INTERP],
FTYPE (*dq)[
NSTORE2][
NSTORE3][NPR2INTERP],
FTYPE (*pleft)[
NSTORE2][
NSTORE3][NPR2INTERP],
FTYPE (*pright)[
NSTORE2][
NSTORE3][NPR2INTERP]);
extern void get_stag_startendindices(int dir, int *is,int *ie,int *js,int *je,int *ks,int *ke);
extern int choose_limiter(
int dir,
int i,
int j,
int k,
int pl);
extern void slope_lim_linetype_c2e(
int realisinterp,
int whichprimtype,
int interporflux,
int dir,
int idel,
int jdel,
int kdel,
FTYPE (*primreal)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*stencilvar)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*p2interp)[
NSTORE2][
NSTORE3][NPR2INTERP],
FTYPE (*pleft)[
NSTORE2][
NSTORE3][NPR2INTERP],
FTYPE (*pright)[
NSTORE2][
NSTORE3][NPR2INTERP]);
extern void slope_lim_pointtype(
int interporflux,
int realisinterp,
int pl,
int dir,
int idel,
int jdel,
int kdel,
FTYPE (*primreal)[
NSTORE2][
NSTORE3][NPR],
FTYPE (*p2interp)[
NSTORE2][
NSTORE3][NPR2INTERP],
FTYPE (*dq)[
NSTORE2][
NSTORE3][NPR2INTERP],
FTYPE (*pleft)[
NSTORE2][
NSTORE3][NPR2INTERP],
FTYPE (*pright)[
NSTORE2][
NSTORE3][NPR2INTERP]);
extern int choose_limiter(
int dir,
int i,
int j,
int k,
int pl);
extern void set_image_content_dnumcolumns(
int *
numcolumns);
extern void set_rdump_content_dnumcolumns(
int *
numcolumns);
extern void set_rmetricdump_read_content_dnumcolumns(
int *
numcolumns);
extern void set_rmetricdump_content_dnumcolumns(
int *
numcolumns);
extern void set_dump_content_dnumcolumns(
int *
numcolumns);
extern void set_gdump_content_dnumcolumns(
int *
numcolumns);
extern void set_avg_content_dnumcolumns(
int *
numcolumns);
extern void set_avg2_content_dnumcolumns(
int *
numcolumns);
extern void set_debug_content_dnumcolumns(
int *
numcolumns);
extern void set_enodebug_content_dnumcolumns(
int *
numcolumns);
extern void set_fieldline_content_dnumcolumns(
int *
numcolumns);
extern void set_dissdump_content_dnumcolumns(
int *
numcolumns);
extern void set_dumpother_content_dnumcolumns(
int *
numcolumns);
extern void set_fluxdump_content_dnumcolumns(
int *
numcolumns);
extern void set_eosdump_content_dnumcolumns(
int *
numcolumns);
extern void set_vpotdump_content_dnumcolumns(
int *
numcolumns);
extern void get_advance_startendindices(int *is,int *ie,int *js,int *je,int *ks,int *ke);
extern void get_advance_startendindices(int *is,int *ie,int *js,int *je,int *ks,int *ke);
extern int choose_limiter(
int dir,
int i,
int j,
int k,
int pl);
extern void parajon(
int i,
int j,
int k,
int loc,
int realisinterp,
int dir,
int pl,
FTYPE *y,
FTYPE *lout,
FTYPE *rout);
extern void get_limit_slopes(
int reallim,
int extremum,
FTYPE *dq1l,
FTYPE *dq1r,
FTYPE *dq2,
FTYPE *dqout);
extern void pass_1d_line_weno(
int whichquantity,
int dir,
int do_weight_or_recon,
int recontype,
int whichreduce,
int preforder,
int pl,
int bs,
int ps,
int pe,
int be,
int *minorder,
int *maxorder,
int *shift,
FTYPE *shockindicator,
FTYPE *stiffindicator,
FTYPE *V,
FTYPE *P,
FTYPE (*df)[
NBIGM],
FTYPE (*dP)[NBIGM],
FTYPE *etai,
FTYPE (*monoindicator)[NBIGM],
FTYPE (*yprim)[2][NBIGM],
FTYPE (*ystencilvar)[NBIGM],
FTYPE (*yin)[NBIGM],
FTYPE (*yout)[NBIGM],
FTYPE (*youtpolycoef)[NBIGM],
struct of_trueijkp *trueijkp);
extern void pass_1d_line_paraline(
int whichquantity,
int dir,
int do_weight_or_recon,
int recontype,
int whichreduce,
int preforder,
int pl,
int bs,
int ps,
int pe,
int be,
int *minorder,
int *maxorder,
int *shift,
FTYPE *shockindicator,
FTYPE *stiffindicator,
FTYPE *V,
FTYPE *P,
FTYPE (*df)[NBIGM],
FTYPE (*dP)[NBIGM],
FTYPE *etai,
FTYPE (*monoindicator)[NBIGM],
FTYPE (*yprim)[2][NBIGM],
FTYPE (*ystencilvar)[NBIGM],
FTYPE (*yin)[NBIGM],
FTYPE (*yout)[NBIGM],
FTYPE (*youtpolycoef)[NBIGM],
struct of_trueijkp *trueijkp);
extern void pass_1d_line_multipl_weno(
int MULTIPLTYPE,
int whichquantity,
int dir,
int do_weight_or_recon,
int recontype,
int whichreduce,
int preforder,
int bs,
int ps,
int pe,
int be,
int *minorder,
int *maxorder,
int *shift,
FTYPE *shockindicator,
FTYPE *stiffindicator,
FTYPE *V,
FTYPE *P,
FTYPE (*df)[
NUMDFS][NBIGM],
FTYPE (*dP)[NBIGM],
FTYPE (*etai)[NBIGM],
FTYPE (*monoindicator)[
NUMMONOINDICATORS][NBIGM],
FTYPE (*yprim)[2][NBIGM],
FTYPE (*ystecilvar)[2][NBIGM],
FTYPE (*yin)[2][NBIGM],
FTYPE (*yout)[2][NBIGM],
FTYPE (*youtpolycoef)[
MAXSPACEORDER][NBIGM],
struct of_trueijkp *trueijkp);
extern void pass_1d_line_multipl_paraline(
int MULTIPLTYPE,
int whichquantity,
int dir,
int do_weight_or_recon,
int recontype,
int whichreduce,
int preforder,
int bs,
int ps,
int pe,
int be,
int *minorder,
int *maxorder,
int *shift,
FTYPE *shockindicator,
FTYPE *stiffindicator,
FTYPE *V,
FTYPE *P,
FTYPE (*df)[
NUMDFS][NBIGM],
FTYPE (*dP)[NBIGM],
FTYPE (*etai)[NBIGM],
FTYPE (*monoindicator)[
NUMMONOINDICATORS][NBIGM],
FTYPE (*yprim)[2][NBIGM],
FTYPE (*ystecilvar)[2][NBIGM],
FTYPE (*yin)[2][NBIGM],
FTYPE (*yout)[2][NBIGM],
FTYPE (*youtpolycoef)[
MAXSPACEORDER][NBIGM],
struct of_trueijkp *trueijkp);
extern int choose_limiter(
int dir,
int i,
int j,
int k,
int pl);
extern void compute_monotonicity_line(
int recontype,
int whichreduce,
int preforder,
int pl,
int bs,
int ps,
int pe,
int be,
int *minorder,
int *maxorder,
int *shift,
FTYPE *shockindicator,
FTYPE (*df)[NBIGM],
FTYPE (*monoindicator)[NBIGM] ,
FTYPE *yin,
FTYPE (*yout)[NBIGM],
FTYPE (*youtpolycoef)[NBIGM]);
extern void compute_monotonicity_line_multipl(
int stencilvarisnull,
int MULTIPLTYPE,
int whichquantity,
int dir,
int do_weight_or_recon,
int recontype,
int whichreduce,
int preforder,
int bs,
int ps,
int pe,
int be,
int *minorder,
int *maxorder,
int *shift,
FTYPE *shockindicator,
FTYPE *stiffindicator,
FTYPE *Vline,
FTYPE *Pline,
FTYPE (*df)[
NUMDFS][NBIGM],
FTYPE (*dP)[NBIGM],
FTYPE (*etai)[NBIGM],
FTYPE (*monoindicator)[
NUMMONOINDICATORS][NBIGM],
FTYPE (*yprim)[2][NBIGM],
FTYPE (*ystencilvar)[2][NBIGM],
FTYPE (*yin)[2][NBIGM],
FTYPE (*yout)[2][NBIGM],
FTYPE (*youtpolycoef)[
MAXSPACEORDER][NBIGM]);
extern void compute_monotonicity_line_indicatoronly(
int recontype,
int whichreduce,
int preforder,
int pl,
int bs,
int ps,
int pe,
int be,
int *minorder,
int *maxorder,
int *shift,
FTYPE *shockindicator,
FTYPE (*df)[NBIGM],
FTYPE (*monoindicator)[NBIGM] ,
FTYPE *yin,
FTYPE (*yout)[NBIGM],
FTYPE (*youtpolycoef)[NBIGM]);
extern void compute_monotonicity_line_valueonly(
int recontype,
int whichreduce,
int preforder,
int pl,
int bs,
int ps,
int pe,
int be,
int *minorder,
int *maxorder,
int *shift,
FTYPE *shockindicator,
FTYPE (*df)[NBIGM],
FTYPE (*monoindicator)[NBIGM] ,
FTYPE *yin,
FTYPE (*yout)[NBIGM],
FTYPE (*youtpolycoef)[NBIGM]);
extern int apply_bc_line(
int nprlocalstart,
int nprlocalend,
int*nprlocallist,
int doinverse,
int iter,
int recontype,
int bs,
int be,
FTYPE (*yin)[2][NBIGM],
FTYPE (*yout)[2][NBIGM],
FTYPE (*youtpolycoef)[
MAXSPACEORDER][NBIGM]);
extern void compute_jmonotonicity_line(
int recontype,
int whichreduce,
int preforder,
int pl,
int bs,
int ps,
int pe,
int be,
int *minorder,
int *maxorder,
int *shift,
FTYPE *shockindicator,
FTYPE (*df)[NBIGM],
FTYPE (*monoindicator)[NBIGM] ,
FTYPE *yin,
FTYPE (*yout)[NBIGM],
FTYPE (*youtpolycoef)[NBIGM]);
extern void c2e_simple_weno(
int order,
int ii,
int bs,
int be,
FTYPE *yin,
FTYPE *pleft,
FTYPE *pright);
extern void c2e_simple_eno(
int full_order,
int is_interpolate_to_left,
FTYPE *yin,
FTYPE *pout);
extern FTYPE limit_ac_correction(
int order,
int pl,
int bs,
int bf,
FTYPE max_frac_difference,
FTYPE *yin,
FTYPE *yout );
extern void c2e_simple_limiter(
int WHICHLIMITERTOREDUCETO,
FTYPE *yin,
FTYPE *valueleft,
FTYPE *valueright);
extern int set_gcov_selfspcmetric(
FTYPE *X,
FTYPE *V,
FTYPE *gcovselfpert);
extern void icoord(
FTYPE *X,
int loc,
int *
i,
int *
j,
int *k);
extern int store_old_metric(void);
extern int recompute_horizonflux_quantities(int fromwhere);
extern void icoord(
FTYPE *X,
int loc,
int *
i,
int *
j,
int *k);
extern void icoord_round(
FTYPE *X,
int loc,
int *
i,
int *
j,
int *k);
extern int usrfun(
FTYPE *U_target,
FTYPE *pr0,
int numnormterms,
int whichcons,
int primtoUcons,
struct of_geom *ptrgeom,
FTYPE *prguess,
int n,
FTYPE *
beta,
FTYPE **alpha,
FTYPE*norm);
extern void nrerror(char error_text[]);
extern int dsyev_(
char *jobz,
char *uplo,
int *n,
double *
a,
int *lda,
double *w,
double *work,
int *lwork,
int *info);
extern int dsyevr_(
char *jobz,
char *range,
char *uplo,
int *n,
double *
a,
int *lda,
double *vl,
double *vu,
int *il,
int *iu,
double *abstol,
int *
M,
double *w,
double *z,
int *ldz,
int *isuppz,
double *work,
int *lwork,
int *iwork,
int *liwork,
int *info);
extern void UtoU(
int inputtype,
int returntype,
struct of_geom *ptrgeom,
FTYPE *Uin,
FTYPE *Uout);
extern int Utoprim_coldgrmhd(
FTYPE *U,
struct of_geom *geom,
FTYPE *
pr,
int *positivityproblem);
extern void UtoU(
int inputtype,
int returntype,
struct of_geom *ptrgeom,
FTYPE *Uin,
FTYPE *Uout);
extern int mnewt(
FTYPE *U_target,
FTYPE *pr0,
int numnormterms,
int whichcons,
int primtoUcons,
struct of_geom *ptrgeom,
int whethertoreport,
int ntrial,
int mintrial,
FTYPE x[],
int n,
int startp,
FTYPE tolx,
FTYPE tolf,
FTYPE tolxallowed,
FTYPE tolfallowed,
FTYPE tolxreport,
FTYPE tolfreport,
struct of_newtonstats *newtonstats);