#include <stdio.h>
#include <math.h>
#include <stdlib.h>
Defines | |
#define | _QBS_ |
#define | N_MODELS 14 |
#define | V_EARTH 29.7854 |
#define | VSW_MIN 1.0 |
#define | VSW_DEFAULT 450.0 |
#define | QUARTIC_EPS 1.e-6 |
#define | N_MAX_ITER 500 |
#define | ABSOLUTE_ROOT_ACCURACY 1.e-6 |
#define | QBS_OK 0 |
#define | DISCRIM_NEGATIVE_IN_SCALE 1 |
#define | LARGEST_SCALING_ROOT_NOT_POSITIVE 2 |
#define | NO_REAL_ROOTS_FOR_CLOSEST_DIST_ALONG_NORMAL 3 |
#define | TOO_MANY_REAL_ROOTS_FOR_DIST_ALONG_NORMAL 4 |
#define | NO_POSSIBLE_ROOTS_FOR_DIST_ALONG_NORMAL 5 |
#define | DEGENERATE_1_ROOT_AT_TANGENCY 6 |
#define | NO_REAL_ROOTS_1_MAX_MIN 7 |
#define | NO_REAL_ROOTS_3_MAX_MIN 8 |
#define | ERROR_FINDING_MAX_MIN_FOR_BRACKET 9 |
#define | QUARTIC_BRACKETING_CONFUSED 10 |
#define | RTSAFE_INPUTS_DONT_BRACKET_ROOT 11 |
#define | RTSAFE_POLY_N_MAX_ITER_EXCEEDED 12 |
#define | CUBIC_BRACKET_FAILED 13 |
#define | NO_INTERSECTION_WITH_SURFACE 14 |
#define | BOTH_INTERSECTIONS_ON_WRONG_BRANCH 15 |
#define | MODEL_NUMBER_OUT_OF_RANGE 16 |
Typedefs | |
typedef enum QSBSMP_models | QBSMP_models |
typedef enum QSBSMP_IN_OR_OUT | QBSMP_IN_OR_OUT |
Enumerations | |
enum | QSBSMP_models { BS_PEREDO, BS_SLAVIN_HOLZER, BS_FAIRFIELD4DEG, BS_FAIRFIELDNO4DEG, BS_FORMISANO, BS_FARRIS, MP_ROELOF_SIBECK, MP_FAIRFIELD4DEG, MP_FAIRFIELDNO4DEG, MP_FARRIS, MP_PETRINECBZPOS, MP_PETRINECBZNEG, MP_FORMISANOUNNORM, MP_FORMISANONORM, BS_PEREDO, BS_SLAVIN_HOLZER, BS_FAIRFIELD4DEG, BS_FAIRFIELDNO4DEG, BS_FORMISANO, BS_FARRIS, MP_ROELOF_SIBECK, MP_FAIRFIELD4DEG, MP_FAIRFIELDNO4DEG, MP_FARRIS, MP_PETRINECBZPOS, MP_PETRINECBZNEG, MP_FORMISANOUNNORM, MP_FORMISANONORM, BS_PEREDO, BS_SLAVIN_HOLZER, BS_FAIRFIELD4DEG, BS_FAIRFIELDNO4DEG, BS_FORMISANO, BS_FARRIS, MP_ROELOF_SIBECK, MP_FAIRFIELD4DEG, MP_FAIRFIELDNO4DEG, MP_FARRIS, MP_PETRINECBZPOS, MP_PETRINECBZNEG, MP_FORMISANOUNNORM, MP_FORMISANONORM } |
enum | QSBSMP_IN_OR_OUT { INSIDE, OUTSIDE, ON_SURFACE, CONFUSED, INSIDE, OUTSIDE, ON_SURFACE, CONFUSED, INSIDE, OUTSIDE, ON_SURFACE, CONFUSED } |
Functions | |
void | QBSAberrate (float *vec_gse, float vsw, float *vec_ab) |
void | QBSUnAberrate (float *vec, float vsw, float *vec_unab) |
void | QBSBuildRotateXY (float angle, float rot[3][3]) |
void | QBSRotate (float *vec, float rot[3][3], float *vec_rot) |
void | QBSDisplace (float *vec, float *ro_vec, float *rdispl_vec) |
float | QBSVectorMagnitude (float *vec) |
float | QBSVectorScalarProduct (float *vec1, float *vec2) |
float | QBSurface (float *r_vec, QBSMP_models model, float sigma) |
QBSMP_IN_OR_OUT | QBSInside_Outside (float *r_vec, QBSMP_models model, float sigma) |
int | QBSScaleToXing (float *r_vec, QBSMP_models model, float *sigma) |
int | QBSNormalAtSurface (float *r_vec, QBSMP_models model, float *normal) |
int | QBSNormalAtSurfaceGSE (float *r_vec, float vsw, QBSMP_models nmodel, float *normal_vec) |
int | QBSDistanceAlongNormal (float *r_vec, float vsw, QBSMP_models model, float sigma, float *distance, float *r_at_shock) |
int | QBSCalcNormalDist (float *R, float eps, float L, float *distance, float *r_at_shock) |
int | QBSPositionAtShockRoot (float eps, float L, float *R, float t, float *r) |
int | QBSChooseDistanceRoot (float X, float rho, float eps, float *roots, int nreal, float *chosen_root) |
int | QBSSolveQuartic (double *c, double *roots, int *nreal) |
int | QBSBracketQuarticRoots (double *c, double *t_low, double *t_high) |
void | poly (double t, int degree, double *c, double *f, double *df) |
int | rtsafe_poly (double *c, int deg, double x1, double x2, double xacc, double *root) |
int | QBSSolveCubic (double *c3, double *roots, int *nreal) |
int | QBSDoubleCompare (const void *el1, const void *el2) |
int | QBSDistanceAlongVec (float *r_vec, float vsw, QBSMP_models model, float sigma, float *vec, float *distance, float *r_at_shock) |
int | QBSCalcDistAlongVec (float *R, float eps, float L, float *vec, float *distance, float *r_at_shock) |
int | QBSChooseAlongVecRoot (float *R, float eps, float L, float *vec_norm, float *roots, float *chosen_root) |
void | QBSListModels (FILE *fp) |
int | QBSCheckModelNumber (int n_model) |
void | QBSErrorMessage (FILE *fp, int errno) |
Variables | |
static const char * | BSMP_name [] |
static const float | BSMP_eps [N_MODELS] |
static const float | BSMP_L [N_MODELS] |
static const float | BSMP_xo [N_MODELS] |
static const float | BSMP_yo [N_MODELS] |
#define _QBS_ |
#define ABSOLUTE_ROOT_ACCURACY 1.e-6 |
#define BOTH_INTERSECTIONS_ON_WRONG_BRANCH 15 |
#define CUBIC_BRACKET_FAILED 13 |
#define DEGENERATE_1_ROOT_AT_TANGENCY 6 |
#define DISCRIM_NEGATIVE_IN_SCALE 1 |
#define ERROR_FINDING_MAX_MIN_FOR_BRACKET 9 |
#define LARGEST_SCALING_ROOT_NOT_POSITIVE 2 |
#define MODEL_NUMBER_OUT_OF_RANGE 16 |
#define N_MAX_ITER 500 |
#define N_MODELS 14 |
#define NO_INTERSECTION_WITH_SURFACE 14 |
#define NO_POSSIBLE_ROOTS_FOR_DIST_ALONG_NORMAL 5 |
#define NO_REAL_ROOTS_1_MAX_MIN 7 |
#define NO_REAL_ROOTS_3_MAX_MIN 8 |
#define NO_REAL_ROOTS_FOR_CLOSEST_DIST_ALONG_NORMAL 3 |
#define QBS_OK 0 |
#define QUARTIC_BRACKETING_CONFUSED 10 |
#define QUARTIC_EPS 1.e-6 |
#define RTSAFE_INPUTS_DONT_BRACKET_ROOT 11 |
#define RTSAFE_POLY_N_MAX_ITER_EXCEEDED 12 |
#define TOO_MANY_REAL_ROOTS_FOR_DIST_ALONG_NORMAL 4 |
#define V_EARTH 29.7854 |
#define VSW_DEFAULT 450.0 |
#define VSW_MIN 1.0 |
typedef enum QSBSMP_IN_OR_OUT QBSMP_IN_OR_OUT |
typedef enum QSBSMP_models QBSMP_models |
enum QSBSMP_IN_OR_OUT |
enum QSBSMP_models |
void poly | ( | double | t, | |
int | degree, | |||
double * | c, | |||
double * | f, | |||
double * | df | |||
) |
void QBSAberrate | ( | float * | vec_gse, | |
float | vsw, | |||
float * | vec_ab | |||
) |
int QBSBracketQuarticRoots | ( | double * | c, | |
double * | t_low, | |||
double * | t_high | |||
) |
void QBSBuildRotateXY | ( | float | angle, | |
float | rot[3][3] | |||
) |
int QBSCalcDistAlongVec | ( | float * | R, | |
float | eps, | |||
float | L, | |||
float * | vec, | |||
float * | distance, | |||
float * | r_at_shock | |||
) |
int QBSCalcNormalDist | ( | float * | R, | |
float | eps, | |||
float | L, | |||
float * | distance, | |||
float * | r_at_shock | |||
) |
int QBSCheckModelNumber | ( | int | n_model | ) |
int QBSChooseAlongVecRoot | ( | float * | R, | |
float | eps, | |||
float | L, | |||
float * | vec_norm, | |||
float * | roots, | |||
float * | chosen_root | |||
) |
int QBSChooseDistanceRoot | ( | float | X, | |
float | rho, | |||
float | eps, | |||
float * | roots, | |||
int | nreal, | |||
float * | chosen_root | |||
) |
void QBSDisplace | ( | float * | vec, | |
float * | ro_vec, | |||
float * | rdispl_vec | |||
) |
int QBSDistanceAlongNormal | ( | float * | r_vec, | |
float | vsw, | |||
QBSMP_models | model, | |||
float | sigma, | |||
float * | distance, | |||
float * | r_at_shock | |||
) |
int QBSDistanceAlongVec | ( | float * | r_vec, | |
float | vsw, | |||
QBSMP_models | model, | |||
float | sigma, | |||
float * | vec, | |||
float * | distance, | |||
float * | r_at_shock | |||
) |
int QBSDoubleCompare | ( | const void * | el1, | |
const void * | el2 | |||
) |
void QBSErrorMessage | ( | FILE * | fp, | |
int | errno | |||
) |
QBSMP_IN_OR_OUT QBSInside_Outside | ( | float * | r_vec, | |
QBSMP_models | model, | |||
float | sigma | |||
) |
void QBSListModels | ( | FILE * | fp | ) |
int QBSNormalAtSurface | ( | float * | r_vec, | |
QBSMP_models | model, | |||
float * | normal | |||
) |
int QBSNormalAtSurfaceGSE | ( | float * | r_vec, | |
float | vsw, | |||
QBSMP_models | nmodel, | |||
float * | normal_vec | |||
) |
int QBSPositionAtShockRoot | ( | float | eps, | |
float | L, | |||
float * | R, | |||
float | t, | |||
float * | r | |||
) |
void QBSRotate | ( | float * | vec, | |
float | rot[3][3], | |||
float * | vec_rot | |||
) |
int QBSScaleToXing | ( | float * | r_vec, | |
QBSMP_models | model, | |||
float * | sigma | |||
) |
int QBSSolveCubic | ( | double * | c3, | |
double * | roots, | |||
int * | nreal | |||
) |
int QBSSolveQuartic | ( | double * | c, | |
double * | roots, | |||
int * | nreal | |||
) |
void QBSUnAberrate | ( | float * | vec, | |
float | vsw, | |||
float * | vec_unab | |||
) |
float QBSurface | ( | float * | r_vec, | |
QBSMP_models | model, | |||
float | sigma | |||
) |
float QBSVectorMagnitude | ( | float * | vec | ) |
float QBSVectorScalarProduct | ( | float * | vec1, | |
float * | vec2 | |||
) |
int rtsafe_poly | ( | double * | c, | |
int | deg, | |||
double | x1, | |||
double | x2, | |||
double | xacc, | |||
double * | root | |||
) |
const float BSMP_eps[N_MODELS] [static] |
Initial value:
{ 0.98, 1.16, 1.02, 1.05, 0.97, 0.81, 0.91, 0.79, 0.80, 0.43, 0.42, 0.50, 0.82, 0.69 }
const float BSMP_L[N_MODELS] [static] |
Initial value:
{ 26.1, 23.3, 22.3, 20.5, 22.8, 24.8, 11.2, 13.1, 12.8, 14.7, 14.6, 14.6, 12.5, 13.5 }
const char* BSMP_name[] [static] |
Initial value:
{ "BS: Peredo", "BS: Slavin & Holzer", "BS: Fairfield 4 deg", "BS: Fairfield no 4 deg", "BS: Formisano", "BS: Farris et al.", "MP: Roelof & Sibeck", "MP: Fairfield 4 deg", "MP: Fairfield no 4 deg", "MP: Farris et al.", "MP: Petrinec et al. Bz>0", "MP: Petrinec et al. Bz<0", "MP: Formisano Unnorm.", "MP: Formisano Norm." }
const float BSMP_xo[N_MODELS] [static] |
Initial value:
{ 2.0, 3.0, 3.4, 4.6, 2.6, 0.0, 4.82, 3.6, 3.9, 0.0, 0.0, 0.0, 4.1, 0.9 }
const float BSMP_yo[N_MODELS] [static] |
Initial value:
{ 0.3, 0.0, 0.3, 0.4, 1.1, 0.0, 0.0, 0.4, 0.6, 0.0, 0.0, 0.0, 0.1, -0.4 }