Exemple #1
0
int main(int argc,char *argv[]) {
 
  FILE *fp;

  int yr,mo,dy,hr,mt;
  double sc;

  fp=fopen(argv[1],"r");

  if (fp==NULL) {
    fprintf(stderr,"File not found.\n");
    exit(-1);
  }

  while(OldCnvMapFread(fp,&map,&grd) !=-1) {

    TimeEpochToYMDHMS(map.st_time,&yr,&mo,&dy,&hr,&mt,&sc);
    fprintf(stderr,"%.4d-%.2d-%.2d %.2d:%.2d:%.2d pnts=%d\n",
            yr,mo,dy,hr,mt,(int) sc,grd.vcnum);

    map.Bx=0.0;
    map.By=0.0;
    map.Bz=0.0;

    OldCnvMapFwrite(stdout,&map,&grd);

    
  }
 
  fclose(fp);


  return 0;
}
Exemple #2
0
int main (int argc,char *argv[]) {

  int arg;
  unsigned char help=0;
  unsigned char option=0;

  unsigned char vb=0;

  FILE *fp;
  
  int yr,mo,dy,hr,mt;
  double sc; 
  int s;

  grd=GridMake();
  map=CnvMapMake();

  OptionAdd(&opt,"-help",'x',&help);
  OptionAdd(&opt,"-option",'x',&option);


  OptionAdd(&opt,"vb",'x',&vb);


  arg=OptionProcess(1,argc,argv,&opt,NULL);

  if (help==1) {
    OptionPrintInfo(stdout,hlpstr);
    exit(0);
  }

  if (option==1) {
    OptionDump(stdout,&opt);
    exit(0);
  }


  if (arg==argc) fp=stdin;
  else fp=fopen(argv[arg],"r");
  if (fp==NULL) {
    fprintf(stderr,"File not found.\n");
    exit(-1);
  }
    
  while (CnvMapFread(fp,map,grd) !=-1) {
   if (vb) {
      TimeEpochToYMDHMS(map->st_time,&yr,&mo,&dy,&hr,&mt,&sc);
      fprintf(stderr,"%.4d-%.2d-%.2d %.2d:%.2d:%.2d\n",
              yr,mo,dy,hr,mt,(int) sc);
    }
    s=OldCnvMapFwrite(stdout,map,grd);
  }
  if (fp !=stdin) fclose(fp);
  return 0;
} 
Exemple #3
0
static IDL_VPTR IDLOldCnvMapWrite(int argc,IDL_VPTR *argv) {

  int s=0;

  IDL_LONG unit=0;
  IDL_FILE_STAT stat;

  struct CnvMapData *map=NULL;
  struct GridData *grd=NULL;

  struct CnvMapIDLPrm *iprm=NULL;
  struct GridIDLStVec *istvec=NULL;
  struct GridIDLGVec *igvec=NULL;
  struct GridIDLGVec *imvec=NULL;
  struct CnvMapIDLBnd *ibnd=NULL;
  double *icoef=NULL; 

  FILE *fp;

  IDL_ENSURE_SCALAR(argv[0]);
  IDL_ENSURE_STRUCTURE(argv[1]);
  IDL_ENSURE_ARRAY(argv[2]);
  IDL_ENSURE_ARRAY(argv[3]);
  IDL_EXCLUDE_EXPR(argv[1]);
  IDL_EXCLUDE_EXPR(argv[2]);
  IDL_EXCLUDE_EXPR(argv[3]);

  unit=IDL_LongScalar(argv[0]);

  s=IDL_FileEnsureStatus(IDL_MSG_RET,unit,IDL_EFS_USER);

  if (s==FALSE) {
    s=-1;
    return (IDL_GettmpLong(s));
  }

  /* Get information about the file */

  IDL_FileFlushUnit(unit);
  IDL_FileStat(unit,&stat);
 
  /* Find the file pointer */

  fp=stat.fptr;
  
  if (fp==NULL) {
    s=-1;
    return (IDL_GettmpLong(s));
  }

  iprm=(struct CnvMapIDLPrm *) argv[1]->value.s.arr->data;
  if (argv[2]->type==IDL_TYP_STRUCT) 
     istvec=(struct GridIDLStVec *) argv[2]->value.s.arr->data;
  if (argv[3]->type==IDL_TYP_STRUCT) 
     igvec=(struct GridIDLGVec *) argv[3]->value.s.arr->data;
  if (argv[4]->type==IDL_TYP_STRUCT)
     imvec=(struct GridIDLGVec *) argv[4]->value.s.arr->data;
  if (argv[5]->type==IDL_TYP_DOUBLE) 
     icoef=(double *) argv[5]->value.s.arr->data;
  if (argv[6]->type==IDL_TYP_STRUCT) 
     ibnd=(struct CnvMapIDLBnd *) argv[6]->value.s.arr->data;

  map=CnvMapMake(); 
  grd=GridMake();

  IDLCopyCnvMapPrmFromIDL(iprm,map,grd);
  if (istvec !=NULL)  IDLCopyGridStVecFromIDL(istvec,iprm->stnum,
                        argv[2]->value.s.arr->elt_len,grd);
  else grd->stnum=0;

  if (igvec !=NULL) IDLCopyGridGVecFromIDL(igvec,iprm->vcnum,
       argv[3]->value.s.arr->elt_len,grd);
  else grd->vcnum=0;

  if (imvec !=NULL) IDLCopyCnvMapGVecFromIDL(imvec,
                        iprm->modnum,argv[4]->value.s.arr->elt_len,map);
  else map->num_model=0;

  if (ibnd !=NULL) IDLCopyCnvMapBndFromIDL(ibnd,
                        iprm->bndnum,argv[6]->value.s.arr->elt_len,map);
  else map->num_bnd=0;

  if (icoef !=NULL) {
    int n=0;
    map->coef=malloc(sizeof(double)*map->num_coef*4);
    for (n=0;n<map->num_coef;n++) {
      map->coef[4*n]=icoef[n];
      map->coef[4*n+1]= icoef[map->num_coef+n];
      map->coef[4*n+2]=icoef[2*map->num_coef+n];
      map->coef[4*n+3]=icoef[3*map->num_coef+n];
    }
  } else map->num_coef=0;


  s=OldCnvMapFwrite(fp,map,grd);

  CnvMapFree(map);
  GridFree(grd);

  return (IDL_GettmpLong(s));


}
Exemple #4
0
int32 OldCnvMapIDLWrite(int argc,char *argv[]) {

  int n;
  struct CnvMapIDLPrm *prm;
  struct GridIDLStVec *stvec;
  struct GridIDLGVec *gvec;
  struct GridIDLGVec *mvec;
  double *coef;
  struct CnvMapIDLBnd *bnd;
  struct GridData grd;
  struct CnvMapData map;

  IDL_FILE_STAT stat;
  FILE *fp;
  int unit; 
  int s;

  unit = *( (int32 *) argv[0]);

  /* Make sure that the "STDIO" keyword was used to
   * open the file in IDL.
   */

  s=IDL_FileEnsureStatus(IDL_MSG_RET,unit,IDL_EFS_STDIO);
  if (s==FALSE) return -1;

  /* Get information about the file */

  IDL_FileStat(unit,&stat);
 
  /* Find the file pointer */

  fp=stat.fptr; 
  
  if (fp==NULL) return -1;

  fflush(fp);

  /* get the structure pointers */

  prm=(struct CnvMapIDLPrm *) argv[1];
  stvec=(struct GridIDLStVec *) argv[2];
  gvec=(struct GridIDLGVec *) argv[3];
  mvec=(struct GridIDLGVec *) argv[4];
  coef=(double *) argv[5];
  bnd=(struct CnvMapIDLBnd *) argv[6];


  memset(&grd,0,sizeof(struct GridData));
  memset(&map,0,sizeof(struct CnvMapData));

  /* load up the data structures */

  grd.st_time=TimeYMDHMSToEpoch(prm->start.yr,prm->start.mo,prm->start.dy,
                                prm->start.hr,prm->start.mt,prm->start.sc);
  grd.ed_time=TimeYMDHMSToEpoch(prm->end.yr,prm->end.mo,prm->end.dy,
                                prm->end.hr,prm->end.mt,prm->end.sc);

  grd.stnum=prm->stnum;
  grd.vcnum=prm->vcnum;
  grd.xtd=prm->xtd;

  map.num_model=prm->modnum;
  map.num_coef=prm->coefnum;
  map.num_bnd=prm->bndnum;

  grd.sdata=malloc(sizeof(struct GridSVec)*grd.stnum);
  if (grd.sdata==NULL) return -1;
  if (grd.vcnum !=0) {
    grd.data=malloc(sizeof(struct GridGVec)*grd.vcnum);
    if (grd.data==NULL) {
      free(grd.sdata);
      return -1;
    }
  } 

  if (map.num_model !=0) {
    map.model=malloc(sizeof(struct GridGVec)*map.num_model);
    if (map.model==NULL) {
      if (grd.data !=NULL) free(grd.data);
      free(grd.sdata);
      return -1;
    }
  } 

  if (map.num_coef !=0) {
    map.coef=malloc(sizeof(double)*4*map.num_coef);
    if (map.coef==NULL) {
      if (map.model !=NULL) free(map.model);
      if (grd.data !=NULL) free(grd.data);
      free(grd.sdata);
      return -1;
    }
  } 

  if (map.num_bnd !=0) {
    map.bnd_lat=malloc(sizeof(double)*map.num_bnd);
    if (map.bnd_lat==NULL) {
      if (map.coef !=NULL) free(map.coef);
      if (map.model !=NULL) free(map.model);
      if (grd.data !=NULL) free(grd.data);
      free(grd.sdata);
      return -1;
    }
  } 

  if (map.num_bnd !=0) {
    map.bnd_lon=malloc(sizeof(double)*map.num_bnd);
    if (map.bnd_lon==NULL) {
      if (map.bnd_lat !=NULL) free(map.bnd_lat);
      if (map.coef !=NULL) free(map.coef);
      if (map.model !=NULL) free(map.model);
      if (grd.data !=NULL) free(grd.data);
      free(grd.sdata);
      return -1;
    }
  } 

  map.st_time=grd.st_time;
  map.ed_time=grd.ed_time;
  map.major_rev=prm->major_rev;
  map.minor_rev=prm->minor_rev;

  if (prm->source.slen !=0) {
    n=prm->source.slen;
    if (n>256) n=256;
    strncpy(map.source,prm->source.s,n);
  }

  map.num_model=prm->modnum;
  map.doping_level=prm->doping_level;
  map.model_wt=prm->model_wt;
  map.error_wt=prm->error_wt;
  map.imf_flag=prm->imf_flag;
  map.imf_delay=prm->imf_delay;
  map.Bx=prm->Bx;
  map.By=prm->By;
  map.Bz=prm->Bz;
  
  if (prm->model[0].slen !=0) {
    n=prm->model[0].slen;
    if (n>64) n=64;
    strncpy(map.imf_model[0],prm->model[0].s,n);
  }

  if (prm->model[1].slen !=0) {
    n=prm->model[1].slen;
    if (n>64) n=64;
    strncpy(map.imf_model[1],prm->model[1].s,n);
  }

  map.hemisphere=prm->hemisphere;
  map.fit_order=prm->fit_order;
  map.latmin=prm->latmin;
  map.num_coef=prm->coefnum;
  map.chi_sqr=prm->chi_sqr;
  map.chi_sqr_dat=prm->chi_sqr_dat;
  map.rms_err=prm->rms_err;
  map.lon_shft=prm->lon_shft;
  map.lat_shft=prm->lat_shft;
  map.mlt.start=prm->mlt.st;
  map.mlt.end=prm->mlt.ed;
  map.mlt.av=prm->mlt.av;
  map.pot_drop=prm->pot_drop;
  map.pot_drop_err=prm->pot_drop_err;
  map.pot_max=prm->pot_max;
  map.pot_max_err=prm->pot_max_err;
  map.pot_min=prm->pot_min;
  map.pot_min_err=prm->pot_min_err;
  map.num_bnd=prm->bndnum;

  for (n=0;n<grd.stnum;n++) {
    grd.sdata[n].st_id=stvec[n].stid;
    grd.sdata[n].chn=stvec[n].chn;
    grd.sdata[n].npnt=stvec[n].npnt;
    grd.sdata[n].freq0=stvec[n].freq;
    grd.sdata[n].major_revision=stvec[n].major_revision;
    grd.sdata[n].minor_revision=stvec[n].minor_revision;
    grd.sdata[n].prog_id=stvec[n].prog_id;
    grd.sdata[n].gsct=stvec[n].gsct;
    grd.sdata[n].noise.mean=stvec[n].noise.mean;
    grd.sdata[n].noise.sd=stvec[n].noise.sd;
    grd.sdata[n].vel.min=stvec[n].vel.min;
    grd.sdata[n].vel.max=stvec[n].vel.max;
    grd.sdata[n].pwr.min=stvec[n].pwr.min;
    grd.sdata[n].pwr.max=stvec[n].pwr.max;
    grd.sdata[n].wdt.min=stvec[n].wdt.min;
    grd.sdata[n].wdt.max=stvec[n].wdt.max;
    grd.sdata[n].verr.min=stvec[n].verr.min;
    grd.sdata[n].verr.max=stvec[n].verr.max;
  }

  for (n=0;n<grd.vcnum;n++) {
     grd.data[n].st_id=gvec[n].stid;
     grd.data[n].chn=gvec[n].chn;
     grd.data[n].index=gvec[n].index;
     grd.data[n].mlat=gvec[n].mlat;
     grd.data[n].mlon=gvec[n].mlon;
     grd.data[n].azm=gvec[n].azm;
     grd.data[n].vel.median=gvec[n].vel.median;
     grd.data[n].vel.sd=gvec[n].vel.sd;
     if (grd.xtd !=0) {
       grd.data[n].pwr.median=gvec[n].pwr.median;
       grd.data[n].pwr.sd=gvec[n].pwr.sd;
       grd.data[n].wdt.median=gvec[n].wdt.median;
       grd.data[n].wdt.sd=gvec[n].wdt.sd;
     }
  }

  for (n=0;n<map.num_model;n++) {
    map.model[n].mlat=mvec[n].mlat;
    map.model[n].mlon=mvec[n].mlon;
    map.model[n].azm=mvec[n].azm;
    map.model[n].vel.median=mvec[n].vel.median;
  } 

  for (n=0;n<map.num_coef;n++) {
     map.coef[4*n]=coef[n];
     map.coef[4*n+1]=coef[map.num_coef+n];
     map.coef[4*n+2]=coef[2*map.num_coef+n];
     map.coef[4*n+3]=coef[3*map.num_coef+n];
  }
 

  for (n=0;n<map.num_bnd;n++) {
    map.bnd_lat[n]=bnd[n].lat;
    map.bnd_lon[n]=bnd[n].lon;
  } 


  s=OldCnvMapFwrite(fp,&map,&grd);
  

  free(grd.sdata);
  if (grd.data !=NULL) free(grd.data);
  if (map.model !=NULL) free(map.model);
  if (map.coef !=NULL) free(map.coef);
  if (map.bnd_lat !=NULL) free(map.bnd_lat);
  if (map.bnd_lon !=NULL) free(map.bnd_lon);



  return s;

}