Skip to content
Merged
2 changes: 1 addition & 1 deletion dev_tools/constants/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

int main(int argc, char **argv)
{
struct _jpl_s *pl;
struct jpl_s *pl;
FILE *fp;
int p, n, max, num;
char *str;
Expand Down
28 changes: 10 additions & 18 deletions src/assist.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,6 @@
const int reb_max_messages_length = 1024; // needs to be constant expression for array size
const int reb_max_messages_N = 10;

enum {
NO_ERR, // no error
ERR_JPL_EPHEM, // JPL ephemeris file not found
ERR_JPL_AST, // JPL asteroid file not found
ERR_NAST, // asteroid number out of range
ERR_NEPH, // planet number out of range
};

#define STRINGIFY(s) str(s)
#define str(s) #s

Expand Down Expand Up @@ -105,7 +97,7 @@ int assist_ephem_init(struct assist_ephem* ephem, char *user_planets_path, char

if(user_planets_path == NULL && getenv("ASSIST_DIR")==NULL){
fprintf(stderr, "No user or default planet ephemeris file\n");
return ERR_JPL_EPHEM;
return ASSIST_ERROR_EPHEM_FILE;
}

if(user_planets_path == NULL){
Expand All @@ -114,14 +106,14 @@ int assist_ephem_init(struct assist_ephem* ephem, char *user_planets_path, char
strncpy(planets_path, user_planets_path, FNAMESIZE-1);
}

if ((ephem->pl = assist_jpl_init(planets_path)) == NULL) {
if ((ephem->jpl = assist_jpl_init(planets_path)) == NULL) {
printf("Couldn't find planet ephemeris file: %s\n", planets_path);
return ERR_JPL_EPHEM;
return ASSIST_ERROR_EPHEM_FILE;
}

if(user_asteroids_path == NULL && getenv("ASSIST_DIR")==NULL){
fprintf(stderr, "No user or asteroid ephemeris file\n");
return ERR_JPL_AST;
return ASSIST_ERROR_AST_FILE;
}

if(user_asteroids_path == NULL){
Expand All @@ -132,25 +124,25 @@ int assist_ephem_init(struct assist_ephem* ephem, char *user_planets_path, char

if ((ephem->spl = assist_spk_init(asteroids_path)) == NULL) {
printf("Couldn't find asteroid ephemeris file: %s\n", asteroids_path);
return ERR_JPL_AST;
return ASSIST_ERROR_AST_FILE;
}

return NO_ERR;
return ASSIST_SUCCESS;
}

struct assist_ephem* assist_ephem_create(char *user_planets_path, char *user_asteroids_path){
struct assist_ephem* ephem = calloc(1, sizeof(struct assist_ephem));
int ret = assist_ephem_init(ephem, user_planets_path, user_asteroids_path);
if (ret != NO_ERR){
if (ret != ASSIST_SUCCESS){
assist_ephem_free(ephem);
return NULL;
}
return ephem;
}

void assist_ephem_free_pointers(struct assist_ephem* ephem){
if (ephem->pl){
assist_jpl_free(ephem->pl);
if (ephem->jpl){
assist_jpl_free(ephem->jpl);
}
if (ephem->spl){
assist_spk_free(ephem->spl);
Expand Down Expand Up @@ -278,7 +270,7 @@ struct reb_particle assist_get_particle(struct assist_ephem* ephem, const int pa
struct reb_particle p = {0};
double GM = 0;
int flag = assist_all_ephem(ephem, NULL, particle_id, t, &GM, &p.x, &p.y, &p.z, &p.vx, &p.vy, &p.vz, &p.ax, &p.ay, &p.az);
if (flag != NO_ERR){
if (flag != ASSIST_SUCCESS){
fprintf(stderr, "An error occured while trying to initialize particle from ephemeris data.\n");
}
p.m = GM; // Note this is GM, not M
Expand Down
44 changes: 43 additions & 1 deletion src/assist.h
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,52 @@ enum ASSIST_FORCES {
ASSIST_FORCE_GR_POTENTIAL = 0x100,
};

enum ASSIST_STATUS{
ASSIST_SUCCESS, // no error
ASSIST_ERROR_EPHEM_FILE, // JPL ephemeris file not found
ASSIST_ERROR_AST_FILE, // JPL asteroid file not found
ASSIST_ERROR_NAST, // asteroid number out of range
ASSIST_ERROR_NEPHEM, // planet number out of range
};

enum ASSIST_BODY {
ASSIST_BODY_SUN = 0,
ASSIST_BODY_MERCURY = 1,
ASSIST_BODY_VENUS = 2,
ASSIST_BODY_EARTH = 3,
ASSIST_BODY_MOON = 4,
ASSIST_BODY_MARS = 5,
ASSIST_BODY_JUPITER = 6,
ASSIST_BODY_SATURN = 7,
ASSIST_BODY_URANUS = 8,
ASSIST_BODY_NEPTUNE = 9,
ASSIST_BODY_PLUTO = 10,

ASSIST_BODY_NPLANETS = 11,

ASSIST_BODY_CAMILLA = 11,
ASSIST_BODY_CERES = 12,
ASSIST_BODY_CYBELE = 13,
ASSIST_BODY_DAVIDA = 14,
ASSIST_BODY_EUNOMIA = 15,
ASSIST_BODY_EUPHROSYNE = 16,
ASSIST_BODY_EUROPA = 17,
ASSIST_BODY_HYGIEA = 18,
ASSIST_BODY_INTERAMNIA = 19,
ASSIST_BODY_IRIS = 20,
ASSIST_BODY_JUNO = 21,
ASSIST_BODY_PALLAS = 22,
ASSIST_BODY_PSYCHE = 23,
ASSIST_BODY_SYLVIA = 24,
ASSIST_BODY_THISBE = 25,
ASSIST_BODY_VESTA = 26,

ASSIST_BODY_NASTEROIDS = 16,
};

struct assist_ephem {
double jd_ref;
struct _jpl_s* pl;
struct jpl_s* jpl;
struct spk_s* spl;
};

Expand Down
Loading