/*************/ /* igrfidf.c */ /**************************************************************/ /* to compile: */ /* gcc igrfidf.c -o igrfidf -L/home/SHARE/lib -lgm -lm */ /**************************************************************/ /* Usage: igrfidf year:flat:flon:alt:ngen */ /**************************************************************/ #include #include #define COEFPATH "/home/SHARE/data/IGRFCOEF/" void gigrf(int gen, double year); void igrfc(double fido, double fkeido, double hght, double *tf); void igrfm(double fm[6]); int main(int argc, char *argv[]) { int max, ngen, latd, lond; double year, flat, flon, alt, tfm, fm[6]; char fnam[80], file[12]; FILE *fp; strcpy(fnam, COEFPATH); if (argc < 2) { printf("igrfidf: parameters missing\n"); return(1); } sscanf(argv[1], "%lf:%lf:%lf:%lf:%d", &year,&flat,&flon,&alt,&ngen); for (max=1; max<100; max++) { sprintf(file, "%s%02d%s", "igrf", max, ".coef"); strcpy(fnam, COEFPATH); strcat(fnam, file); if ((fp=fopen(fnam,"r")) == NULL) break; fclose(fp); } max--; if ((ngen < 1) || (ngen > max)) ngen = max; gigrf(ngen, year); igrfc(flat/60., flon/60., alt, &tfm); igrfm(fm); latd = (int)(flat/60.); flat -= (double)(latd * 60); lond = (int)(flon/60.); flon -= (double)(lond * 60); printf("OK\n"); printf("%.1f %d %.1f %d %.1f %.1f\n", year, latd,flat, lond,flon, alt); printf("%.1f %.1f %.1f %d\n", fm[4], fm[5], tfm, ngen); return(0); }