double mlt1(int t0,double solar_dec,double mlon,double *mslon) { double ret_val; double mslat1,mslat2,slon1,slon2,height; int err; if ((fabs(solar_dec-sol_dec_old)>0.1) || (sol_dec_old==0)) told=1e12; if (fabs(mslon2-mslon1)>10) told=1e12; if ((t0>=told) && (t0<(told+600))) { *mslon=mslon1+(t0-told)*(mslon2-mslon1)/600.0; } else { told=t0; sol_dec_old=solar_dec; slon1 = (43200.0-t0)*15.0/3600.0; slon2 = (43200.0-t0-600)*15.0/3600.0; height = 450; err=convert_geo_coord(solar_dec,slon1,height,&mslat1,&mslon1,0,4); err=convert_geo_coord(solar_dec,slon2,height,&mslat2,&mslon2,0,4); *mslon=mslon1; } ret_val = (mlon - *mslon) /15.0 + 12.0; if (ret_val >=24) ret_val -=24; if (ret_val <0) ret_val+=24; return ret_val; }
int AACGMConvert(double in_lat,double in_lon,double height, double *out_lat,double *out_lon,double *r, int flag){ int err; err=convert_geo_coord(in_lat,in_lon,height,out_lat,out_lon,flag,10); *r=1.0; if (err !=0) return -1; return 0; }
double astmlt1(int t0,double solar_dec,double mlon,double *mslon) { double ret_val; /* double r; */ double mslat1,mslat2,slon1,slon2,height; int err; if ((fabs(solar_dec-sol_dec_old)>0.1) || (sol_dec_old==0)) told=1e12; if (fabs(mslon2-mslon1)>10) told=1e12; if ((t0>=told) && (t0<(told+600))) { *mslon=mslon1+(t0-told)*(mslon2-mslon1)/600.0; } else { told=t0; sol_dec_old=solar_dec; slon1 = (43200.0-t0)*15.0/3600.0; slon2 = (43200.0-t0-600)*15.0/3600.0; height = 450; /* Should use the top AACGM conversion functions, but the order of expansion is lower in the old version, so for now duplicate the old calculation using the internal call to convert_geo_coord err=AACGMConvert(solar_dec,slon1,height,&mslat1,&mslon1,&r,0); err=AACGMConvert(solar_dec,slon2,height,&mslat2,&mslon2,&r,0); */ err=convert_geo_coord(solar_dec,slon1,height,&mslat1,&mslon1,0,4); err=convert_geo_coord(solar_dec,slon2,height,&mslat2,&mslon2,0,4); *mslon=mslon1; } ret_val = (mlon - *mslon) /15.0 + 12.0; if (ret_val >=24) ret_val -=24; if (ret_val <0) ret_val+=24; return ret_val; }