1
0
Fork 0
mirror of https://github.com/cosmo-sims/monofonIC.git synced 2024-09-19 17:03:45 +02:00
monofonIC/external/panphasia_ho/panphasia_functions.h

99 lines
3.1 KiB
C++

/////////////////////////////////////////////////
// By default Panphasia is computed at single
// precision. To override this define PAN_DOUBLE
#pragma once
#ifndef USE_PRECISION_FLOAT
#define PAN_DOUBLE_PRECISION 8
#endif
#ifndef PAN_DOUBLE_PRECISION
#define PAN_REAL float
#define PAN_COMPLEX float complex
#else
#define PAN_REAL double
#define PAN_COMPLEX double complex
#endif
#include "PAN_FFTW3.h"
/////////////////////////////////////////////////////////////////////
void return_uniform_pseudo_rands_threefry4x64_(size_t l,size_t j1,size_t j2,size_t j3,
PAN_REAL *panphasia_randoms, size_t seed_value,
size_t allow_non_zero_seed_safety_catch);
void box_muller_(PAN_REAL *unif_real,PAN_REAL *gvar);
void solve_panphasia_cell_(PAN_REAL *input_vec_parent, PAN_REAL *input_vec_children, PAN_REAL *output_cell_vec, int control_flag);
void threefry4x64_test_(int verbose);
void inverse_threefry4x64_test_(int verbose);
void set_panphasia_key_(int verbose);
void check_panphasia_key_(int verbose);
void PANPHASIA_init_descriptor_checks();
void speed_test_();
void speed_test2_();
void check_randoms_();
void test_random_dist_(size_t shift);
void compute_all_properties_of_a_panphasia_cell_(size_t *level, size_t *j1, size_t *j2, size_t *j3,
PAN_REAL *gauss_rand_parent, PAN_REAL *legendre_rand);
void return_root_legendre_coefficients_(PAN_REAL *root);
int parse_and_validate_descriptor_(const char *, int *);
int demo_descriptor_();
long long int compute_check_digit_();
int PANPHASIA_init_descriptor_(const char *descriptor, int *verbose);
int PANPHASIA_init_level_(size_t *oct_level, size_t *rel_orig_x, size_t *rel_orig_y,size_t *rel_orig_z,int *verbose);
int PANPHASIA_compute_coefficients_(size_t *xstart, size_t *ystart, size_t*zstart,
size_t *xextent, size_t *yextent, size_t *zextend,
size_t *copy_list,
size_t *ncopy, void *output_values, int *flag_output_mode, int *verbose);
void test_moments_();
void test_propogation_of_moments_(int iterations);
void test_cell_moments(const char*,size_t, size_t, size_t, size_t, size_t, double *);
void spherical_bessel_(int *, double *, double *);
void calc_absolute_coordinates(size_t xrel, size_t yrel, size_t zrel,size_t *xabs, size_t *yabs,size_t *zabs);
int cell_information(size_t cell_id, size_t *cumulative_cell_index, size_t *cuboid_x_dimen,
size_t *cuboid_y_dimen,size_t *cuboid_z_dimen, size_t *cell_lev,
size_t *cell_x, size_t *cell_y, size_t *cell_z, size_t number_children,
size_t *child_cell_indices);
int return_binary_tree_cell_lists(size_t level_max, size_t *list_cell_coordinates,
size_t extent, size_t *return_tree_list_coordinates,
size_t nreturn,
long long int *child_pointer, size_t *level_count, size_t *level_begin, size_t *index_perm);
#ifdef __cplusplus
void compute_sph_bessel_coeffs(int, int, int, int, std::complex<double>* *);
#else
void compute_sph_bessel_coeffs(int, int, int, int, double complex *);
#endif
int PANPHASIA_compute_kspace_field_(size_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, FFTW_COMPLEX *);