QSAS_2_4/QSAS_dist/src/Ext/BowShock/qbowshock.h File Reference

#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 Documentation

#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 Documentation


Enumeration Type Documentation

Enumerator:
INSIDE 
OUTSIDE 
ON_SURFACE 
CONFUSED 
INSIDE 
OUTSIDE 
ON_SURFACE 
CONFUSED 
INSIDE 
OUTSIDE 
ON_SURFACE 
CONFUSED 

Enumerator:
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 


Function Documentation

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 
)


Variable Documentation

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
  }


Generated on Fri Jan 8 12:51:21 2010 for QSAS by  doxygen 1.5.7