#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 } |
| enum | QSBSMP_IN_OR_OUT { 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 XX, 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 | XX, | |
| 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
}
1.5.7