Exemple #1
0
int32 OldRawIDLRead(int argc,char *argv[]) {

  int n;
  int x;

  struct OldRawIDLFp *idlrawfp;
  struct OldRawFp rawfp;
  char combftmp[COMBF_SIZE+1];
  struct RadarIDLParm *idlprm;
  struct RawIDLData *idlraw;
  struct RadarParm prm;
  struct RawData raw;

  IDL_FILE_STAT stat;
  FILE *fp;
  int s;

  /* zero out the data structures */

  memset(&prm,0,sizeof(struct RadarParm));
  memset(&raw,0,sizeof(struct RawData));
  memset(&combftmp,0,COMBF_SIZE+1);
  
  idlrawfp=(struct OldRawIDLFp *) argv[0];
  
  IDL_FileStat(idlrawfp->rawunit,&stat);
 
  /* Find the file pointer */

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

  fflush(fp);
   
  rawfp.rawfp=fileno(fp);
  rawfp.inxfp=0;
 
  OldRawIDLToRawFp(idlrawfp,&rawfp);

  s=OldRawRead(&rawfp,&prm,&raw);

  OldRawRawFpToIDL(&rawfp,idlrawfp);

  if (s==-1) return -1;
   
  /* get the structure pointers */

  idlprm=(struct RadarIDLParm *) argv[1];
  idlraw=(struct RawIDLData *) argv[2];

  /* load up the structures.
   *
   * Note: We do not do a direct memcpy as the possibility
   * exists that the IDL data structure is different from 
   * the C data structure.
   *
   */

  idlprm->revision.major=prm.revision.major;
  idlprm->revision.minor=prm.revision.minor;
  idlprm->origin.code=prm.origin.code;
  IDL_StrDelete(&idlprm->origin.time,1);
  IDL_StrDelete(&idlprm->origin.command,1);
  idlprm->cp=prm.cp;
  idlprm->stid=prm.stid;
  idlprm->time.yr=prm.time.yr;
  idlprm->time.mo=prm.time.mo;
  idlprm->time.dy=prm.time.dy;
  idlprm->time.hr=prm.time.hr;
  idlprm->time.mt=prm.time.mt;
  idlprm->time.sc=prm.time.sc;
  idlprm->time.us=prm.time.us;
  idlprm->txpow=prm.txpow;
  idlprm->nave=prm.nave;
  idlprm->atten=prm.atten;
  idlprm->lagfr=prm.lagfr;
  idlprm->smsep=prm.smsep;
  idlprm->ercod=prm.ercod;
  idlprm->stat.agc=prm.stat.agc;
  idlprm->stat.lopwr=prm.stat.lopwr;
  idlprm->noise.search=prm.noise.search;
  idlprm->noise.mean=prm.noise.mean;
  idlprm->channel=prm.channel;
  idlprm->bmnum=prm.bmnum;
  idlprm->bmazm=prm.bmazm;
  idlprm->scan=prm.scan;
  idlprm->rxrise=prm.rxrise;
  idlprm->intt.sc=prm.intt.sc;
  idlprm->intt.us=prm.intt.us;
  idlprm->txpl=prm.txpl;
  idlprm->mpinc=prm.mpinc;
  idlprm->mppul=prm.mppul;
  idlprm->mplgs=prm.mplgs;
  idlprm->nrang=prm.nrang;
  idlprm->frang=prm.frang;
  idlprm->rsep=prm.rsep;
  idlprm->xcf=prm.xcf;
  idlprm->tfreq=prm.tfreq;
  idlprm->offset=prm.offset;
  idlprm->mxpwr=prm.mxpwr;
  idlprm->lvmax=prm.lvmax;

  for (n=0;n<prm.mppul;n++) idlprm->pulse[n]=prm.pulse[n];
  for (n=0;n<prm.mplgs;n++) {
    idlprm->lag[n]=prm.lag[n][0];
    idlprm->lag[LAG_SIZE+n]=prm.lag[n][1];
  }

  strncpy(combftmp,prm.combf,COMBF_SIZE);

  IDL_StrDelete(&idlprm->combf,1);
  IDL_StrStore(&idlprm->combf,combftmp);
  
  idlraw->revision.major=raw.revision.major;
  idlraw->revision.minor=raw.revision.minor;
  idlraw->thr=raw.thr;

  for (n=0;n<prm.nrang;n++) {
    idlraw->pwr0[n]=raw.pwr0[n];
    for (x=0;x<prm.mplgs;x++) {
      idlraw->acfd[x*MAX_RANGE+n]=raw.acfd[n][x][0];
      idlraw->acfd[LAG_SIZE*MAX_RANGE+MAX_RANGE*x+n]=raw.acfd[n][x][1];
      if (prm.xcf !=0) {
        idlraw->xcfd[x*MAX_RANGE+n]=raw.xcfd[n][x][0];
        idlraw->xcfd[LAG_SIZE*MAX_RANGE+MAX_RANGE*x+n]=raw.xcfd[n][x][1];
      }
    }
  } 
  return s;
}
Exemple #2
0
int32 OldFitIDLRead(int argc,char *argv[]) {

  int n;

  struct OldFitIDLFp *idlfitfp;
  struct OldFitFp fitfp;
  char combftmp[COMBF_SIZE+1];
  struct RadarIDLParm *idlprm;
  struct FitIDLData *idlfit;
  struct RadarParm prm;
  struct FitData fit;

  IDL_FILE_STAT stat;
  FILE *ffp=NULL,*ifp=NULL;
  int s;

  /* zero out the data structures */

  memset(&prm,0,sizeof(struct RadarParm));
  memset(&fit,0,sizeof(struct FitData));
  memset(&combftmp,0,COMBF_SIZE+1);
  
  idlfitfp=(struct OldFitIDLFp *) argv[0];
  
  IDL_FileStat(idlfitfp->fitunit,&stat);
 
  /* Find the file pointer */

  ffp=stat.fptr; 

  fflush(ffp);
  
  if (ffp==NULL) return -1;

  if (idlfitfp->inxunit !=-1) {
    IDL_FileStat(idlfitfp->inxunit,&stat);
    ifp=stat.fptr;
  }

  if (ifp !=NULL) fflush(ifp);

  fitfp.fitfp=fileno(ffp);
  if (ifp !=NULL) fitfp.inxfp=fileno(ifp);
  else fitfp.inxfp=-1;
 
  

  OldFitIDLToFitFp(idlfitfp,&fitfp);

  s=OldFitRead(&fitfp,&prm,&fit);

  OldFitFitFpToIDL(&fitfp,idlfitfp);

  if (s==-1) return -1;
   
  /* get the structure pointers */

  idlprm=(struct RadarIDLParm *) argv[1];
  idlfit=(struct FitIDLData *) argv[2];

  /* load up the structures.
   *
   * Note: We do not do a direct memcpy as the possibility
   * exists that the IDL data structure is different from 
   * the C data structure.
   *
   */

  idlprm->revision.major=prm.revision.major;
  idlprm->revision.minor=prm.revision.minor;
  idlprm->origin.code=prm.origin.code;
  IDL_StrDelete(&idlprm->origin.time,1);
  IDL_StrDelete(&idlprm->origin.command,1);
  idlprm->cp=prm.cp;
  idlprm->stid=prm.stid;
  idlprm->time.yr=prm.time.yr;
  idlprm->time.mo=prm.time.mo;
  idlprm->time.dy=prm.time.dy;
  idlprm->time.hr=prm.time.hr;
  idlprm->time.mt=prm.time.mt;
  idlprm->time.sc=prm.time.sc;
  idlprm->time.us=prm.time.us;
  idlprm->txpow=prm.txpow;
  idlprm->nave=prm.nave;
  idlprm->atten=prm.atten;
  idlprm->lagfr=prm.lagfr;
  idlprm->smsep=prm.smsep;
  idlprm->ercod=prm.ercod;
  idlprm->stat.agc=prm.stat.agc;
  idlprm->stat.lopwr=prm.stat.lopwr;
  idlprm->noise.search=prm.noise.search;
  idlprm->noise.mean=prm.noise.mean;
  idlprm->channel=prm.channel;
  idlprm->bmnum=prm.bmnum;
  idlprm->bmazm=prm.bmazm;
  idlprm->scan=prm.scan;
  idlprm->rxrise=prm.rxrise;
  idlprm->intt.sc=prm.intt.sc;
  idlprm->intt.us=prm.intt.us;
  idlprm->txpl=prm.txpl;
  idlprm->mpinc=prm.mpinc;
  idlprm->mppul=prm.mppul;
  idlprm->mplgs=prm.mplgs;
  idlprm->nrang=prm.nrang;
  idlprm->frang=prm.frang;
  idlprm->rsep=prm.rsep;
  idlprm->xcf=prm.xcf;
  idlprm->tfreq=prm.tfreq;
  idlprm->offset=prm.offset;
  idlprm->mxpwr=prm.mxpwr;
  idlprm->lvmax=prm.lvmax;

  for (n=0;n<prm.mppul;n++) idlprm->pulse[n]=prm.pulse[n];
  for (n=0;n<prm.mplgs;n++) {
    idlprm->lag[n]=prm.lag[n][0];
    idlprm->lag[LAG_SIZE+n]=prm.lag[n][1];
  }

  strncpy(combftmp,prm.combf,COMBF_SIZE);

  IDL_StrDelete(&idlprm->combf,1);
  IDL_StrStore(&idlprm->combf,combftmp);
  
  idlfit->revision.major=fit.revision.major;
  idlfit->revision.minor=fit.revision.minor;
  idlfit->noise.sky=fit.noise.skynoise;
  idlfit->noise.lag0=fit.noise.lag0;
  idlfit->noise.vel=fit.noise.vel;
  for (n=0;n<prm.nrang;n++) {
    idlfit->pwr0[n]=fit.rng[n].p_0;
    idlfit->nlag[n]=fit.rng[n].nump;
    idlfit->qflg[n]=fit.rng[n].qflg;
    idlfit->gflg[n]=fit.rng[n].gsct;
    idlfit->p_l[n]=fit.rng[n].p_l;
    idlfit->p_l_e[n]=fit.rng[n].p_l_err;
    idlfit->p_s[n]=fit.rng[n].p_s;
    idlfit->p_s_e[n]=fit.rng[n].p_s_err;
    idlfit->v[n]=fit.rng[n].v;
    idlfit->v_e[n]=fit.rng[n].v_err;
    idlfit->w_l[n]=fit.rng[n].w_l;
    idlfit->w_l_e[n]=fit.rng[n].w_l_err;
    idlfit->w_s[n]=fit.rng[n].w_s;
    idlfit->w_s_e[n]=fit.rng[n].w_s_err;
    idlfit->sd_l[n]=fit.rng[n].sdev_l;
    idlfit->sd_s[n]=fit.rng[n].sdev_s;
    idlfit->sd_phi[n]=fit.rng[n].sdev_phi;
    if (prm.xcf !=0) {
      idlfit->elv_low[n]=fit.elv[n].low;
      idlfit->elv[n]=fit.elv[n].normal;
      idlfit->elv_high[n]=fit.elv[n].high;
      idlfit->x_qflg[n]=fit.xrng[n].qflg;
      idlfit->x_gflg[n]=fit.xrng[n].gsct;
      idlfit->x_p_l[n]=fit.xrng[n].p_l;
      idlfit->x_p_l_e[n]=fit.xrng[n].p_l_err;
      idlfit->x_p_s[n]=fit.xrng[n].p_s;
      idlfit->x_p_s_e[n]=fit.xrng[n].p_s_err;
      idlfit->x_v[n]=fit.xrng[n].v;
      idlfit->x_v_e[n]=fit.xrng[n].v_err;
      idlfit->x_w_l[n]=fit.xrng[n].w_l;
      idlfit->x_w_l_e[n]=fit.xrng[n].w_l_err;
      idlfit->x_w_s[n]=fit.xrng[n].w_s;
      idlfit->x_w_s_e[n]=fit.xrng[n].w_s_err;
      idlfit->x_sd_l[n]=fit.xrng[n].sdev_l;
      idlfit->x_sd_s[n]=fit.xrng[n].sdev_s;
      idlfit->x_sd_phi[n]=fit.xrng[n].sdev_phi;
      idlfit->phi0[n]=fit.xrng[n].phi0;
      idlfit->phi0_e[n]=fit.xrng[n].phi0_err;
    }
  }
  return s;

}
Exemple #3
0
int32 OldCnvMapIDLDecode(int argc,char *argv[]) {
  int n;
  int yr,mo,dy,hr,mt;
  double sc;
  unsigned char *ptr;
  struct CnvMapIDLPrm *prm;
  struct GridIDLStVec *stvec;
  struct GridIDLGVec *gvec;
  struct CnvMapData *map;
  struct GridData *grd;
  struct GridIDLGVec *mvec;
  double *coef;
  struct CnvMapIDLBnd *bnd;
  char tmp[257];
  
  memset(tmp,0,257);

  ptr=((IDL_STRING *) argv[0])->s;
  grd=(struct GridData *) (ptr);
  ptr+=sizeof(struct GridData);
  grd->sdata=(struct GridSVec *) (ptr);
  ptr+=grd->stnum*sizeof(struct GridSVec);
  grd->data=(struct GridGVec *) (ptr);
  ptr+=grd->vcnum*sizeof(struct GridGVec);
  map=(struct CnvMapData *) (ptr);
  ptr+=sizeof(struct CnvMapData);
  map->model=(struct GridGVec *) (ptr);
  ptr+=map->num_model*sizeof(struct GridGVec);
  map->coef=(double *) (ptr);
  ptr+=map->num_coef*4*sizeof(double);
  map->bnd_lat=(double *) (ptr);
  ptr+=map->num_bnd*sizeof(double);
  map->bnd_lon=(double *) (ptr);

  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];


  prm->stnum=grd->stnum;
  prm->vcnum=grd->vcnum;
  prm->xtd=grd->xtd;
  TimeEpochToYMDHMS(grd->st_time,&yr,&mo,
                    &dy,&hr,&mt,
                    &sc);
  prm->start.yr=yr;
  prm->start.mo=mo;
  prm->start.dy=dy;
  prm->start.hr=hr;
  prm->start.mt=mt;
  prm->start.sc=sc;

  TimeEpochToYMDHMS(grd->ed_time,&yr,&mo,
                    &dy,&hr,&mt,
                    &sc);

  prm->end.yr=yr;
  prm->end.mo=mo;
  prm->end.dy=dy;
  prm->end.hr=hr;
  prm->end.mt=mt;
  prm->end.sc=sc;


  prm->major_rev=map->major_rev;
  prm->minor_rev=map->minor_rev;

  IDL_StrDelete(&prm->source,1);
  if (map->source !=NULL) {
    strncpy(tmp,map->source,256);
    IDL_StrStore(&prm->source,tmp);
  }

  prm->modnum=map->num_model;
  prm->doping_level=map->doping_level;
  prm->model_wt=map->model_wt;
  prm->error_wt=map->error_wt;
  prm->imf_flag=map->imf_flag;
  prm->imf_delay=map->imf_delay;
  prm->Bx=map->Bx;
  prm->By=map->By;
  prm->Bz=map->Bz;
  
  IDL_StrDelete(&prm->model[0],1);
  if (map->imf_model[0] !=NULL) {
     strncpy(tmp,map->imf_model[0],64);
     IDL_StrStore(&prm->model[0],tmp);
  }
  IDL_StrDelete(&prm->model[1],1);
  if (map->imf_model[1] !=NULL) {
    strncpy(tmp,map->imf_model[1],64);
    IDL_StrStore(&prm->model[1],tmp);
 }

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

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

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

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

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

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


  return 0;

}