#include "emom_prt.h" #include "pckt_prt.h" #include "emom_dcm.h" #include "windmisc.h" #include #include /* private functions: */ int exsign(uchar c); FILE *emom_fp; FILE *emom_raw_fp; FILE *emom_rraw_fp; /* print eesa moment output files */ int print_emom_packet(packet *pk) { int i; eesa_mom_data Emom[16]; if(emom_fp || emom_raw_fp) emom_decom(pk,Emom); if(emom_raw_fp) for(i=0;i<16;i++) print_emom_raw(emom_raw_fp,&Emom[i]); if(emom_fp) for(i=0;i<16;i++) print_emom_phys(emom_fp,&Emom[i]); if(emom_rraw_fp) print_generic_packet(emom_rraw_fp,pk,11); return(1); } /* output physical quantities to a file */ void print_emom_phys(FILE *fp,eesa_mom_data *E) { double vt2; emomdata *D; if(fp==NULL) return; if(E->gap){ fprintf(fp,"\n` Time N Vx Vy Vz T Vt \n"); } D = &E->dist; vt2= (D->vv[0][0] + D->vv[1][1] + D->vv[2][2]) /3.; fprintf(fp,"%10.1f ",E->time); fprintf(fp," %7.4g",D->dens); fprintf(fp," %6.2f %6.2f %6.2f",D->v[0],D->v[1],D->v[2]); fprintf(fp," %6.3f ",D->temp); fprintf(fp," %6.1f",sqrt(vt2)); if(vt2 == 0.) vt2=1.; fprintf(fp," %6.3f %6.3f %6.3f",D->vv[0][0]/vt2, D->vv[1][1]/vt2, D->vv[2][2]/vt2); fprintf(fp," %6.3f %6.3f %6.3f",D->vv[0][1]/vt2, D->vv[0][2]/vt2, D->vv[1][2]/vt2); fprintf(fp,"\n"); } #define NSHIFT 1000 /* output raw quantities to a file */ void print_emom_raw(FILE *fp,eesa_mom_data *emom) { int mode=1; char expv,expq,expp; char *sp; comp_eesa_mom *mom; if(fp==NULL) return; if(emom->gap){ fprintf(fp,"\nTime c0 c1 c2 c3 c4 c5 c6 c7 c8 c9\n"); } mom = &emom->cmom; fprintf(fp,"%10.1f ",emom->time); expv=0; if(mom->c1 & 0x40) expv |= 0x04; if(mom->c2 & 0x40) expv |= 0x02; if(mom->c3 & 0x40) expv |= 0x01; if(mom->c0 & 0x2000) expv |= 0x08; expq=0; if(mom->c10 & 0x40) expq |= 0x04; if(mom->c11 & 0x40) expq |= 0x02; if(mom->c12 & 0x40) expq |= 0x01; if(mom->c0 & 0x4000) expq |= 0x08; expp=0; if(mom->c7 & 0x80) expp |= 0x04; if(mom->c8 & 0x80) expp |= 0x02; if(mom->c9 & 0x80) expp |= 0x01; if(mom->c0 & 0x1000) expp |= 0x08; sp = NSHIFT ? " " : " "; if(mode){ fprintf(fp,"%s %4d",sp,mom->c0 & 0x0fff); fprintf(fp,"%s %2d",sp,exsign(mom->c1 & 0xbf)); fprintf(fp,"%s %2d",sp,exsign(mom->c2 & 0xbf)); fprintf(fp,"%s %2d",sp,exsign(mom->c3 & 0xbf)); fprintf(fp,"%s %2d",sp,exsign(mom->c4)); fprintf(fp,"%s %2d",sp,exsign(mom->c5)); fprintf(fp,"%s %2d",sp,exsign(mom->c6)); fprintf(fp,"%s %2d",sp,mom->c7 & 0x7f); fprintf(fp,"%s %2d",sp,mom->c8 & 0x7f); fprintf(fp,"%s %2d",sp,mom->c9 & 0x7f); fprintf(fp,"%s %2d",sp,exsign(mom->c10 & 0xbf)); fprintf(fp,"%s %2d",sp,exsign(mom->c11 & 0xbf)); fprintf(fp,"%s %2d",sp,exsign(mom->c12 & 0xbf)); fprintf(fp," %d ",mom->c0>>15); fprintf(fp," %2d %2d %2d\n",expv,expp,expq); } else{ fprintf(fp,"%s %04x",sp,mom->c0); fprintf(fp,"%s %02x",sp,mom->c1 & 0xff); fprintf(fp,"%s %02x",sp,mom->c2 & 0xff); fprintf(fp,"%s %02x",sp,mom->c3 & 0xff); fprintf(fp,"%s %02x",sp,mom->c4 & 0xff); fprintf(fp,"%s %02x",sp,mom->c5 & 0xff); fprintf(fp,"%s %02x",sp,mom->c6 & 0xff); fprintf(fp,"%s %02x",sp,mom->c7 & 0xff); fprintf(fp,"%s %02x",sp,mom->c8 & 0xff); fprintf(fp,"%s %02x",sp,mom->c9 & 0xff); fprintf(fp,"%s %02x",sp,mom->c10 & 0xff); fprintf(fp,"%s %02x",sp,mom->c11 & 0xff); fprintf(fp,"%s %02x",sp,mom->c12 & 0xff); fprintf(fp,"\n"); } } int exsign(uchar c) { if( c & 0x80 ) return( -(c & 0x7f) ); else return(c); } /* the following are unused printing routines */ #if 0 void print_e_moments(FILE *fp,double time,uint spin,eesa_mom *mom) { if(fp==NULL) return; fprintf(fp,"%10.1f 0x%04x",time,spin); #if NSHIFT fprintf(fp," %5ld",mom->m0 / NSHIFT); fprintf(fp," %5ld",mom->m1 / NSHIFT); fprintf(fp," %5ld",mom->m2 / NSHIFT); fprintf(fp," %5ld",mom->m3 / NSHIFT); fprintf(fp," %5ld",mom->m4 / NSHIFT); fprintf(fp," %5ld",mom->m5 / NSHIFT); fprintf(fp," %5ld",mom->m6 / NSHIFT); fprintf(fp," %5ld",mom->m7 / NSHIFT); fprintf(fp," %5ld",mom->m8 / NSHIFT); fprintf(fp," %5ld",mom->m9 / NSHIFT); fprintf(fp," %5ld",mom->m10 / NSHIFT); fprintf(fp," %5ld",mom->m11 / NSHIFT); fprintf(fp," %5ld",mom->m12 / NSHIFT); #else fprintf(fp," %9ld",mom->m0); fprintf(fp," %9ld",mom->m1); fprintf(fp," %9ld",mom->m2); fprintf(fp," %9ld",mom->m3); fprintf(fp," %9ld",mom->m4); fprintf(fp," %9ld",mom->m5); fprintf(fp," %9ld",mom->m6); fprintf(fp," %9ld",mom->m7); fprintf(fp," %9ld",mom->m8); fprintf(fp," %9ld",mom->m9); fprintf(fp," %9ld",mom->m10); fprintf(fp," %9ld",mom->m11); fprintf(fp," %9ld",mom->m12); #endif fprintf(fp,"\n"); } #endif #if 0 void print_raw_hex(FILE *fp,double time,uint spin,uchar *uc,int n) { int i; if(fp==NULL) return; fprintf(fp,"%10.1f 0x%04x ",time,spin); for(i=0;i