#include #include "hrdi.h" #include "timesgcm.h" extern char *cmalloc(); float chsize = .05; void contrac(f,nx,ut,slt,ny,alt,glat,glon,lab,vpcon,vpmap) float *f, *ut, *slt, *alt, *glat, *glon, *vpcon, *vpmap; int nx, ny; char *lab; { int ione=1, izero=0; float zero=0., one=1., ypos, xmid=0.5*(*vpcon+ *(vpcon+1)); set_(vpcon, vpcon+1, vpcon+2, vpcon+3, slt, slt+nx-1, alt, alt+ny-1, &ione); cpsetr_("XC1",slt,3L); cpsetr_("XCM",slt+nx-1,3L); cpsetr_("YC1",alt,3L); cpsetr_("YCN",alt+ny-1,3L); cpseti_("MAP",&izero,3L); cpsetr_("ILX",&xmid,3L); contour_(f,&nx,&nx,&ny,&zero,&one,&zero); labrect_(slt,&nx,alt,&ny,"LOCAL TIME (HRS)","ALT (KM)",&chsize,16L,8L); ypos = *(vpcon+3)+.03; wrlab_(lab,&xmid,&ypos,&zero,(long)strlen(lab)); set_(vpmap,vpmap+1,vpmap+2,vpmap+3,&zero,&one,&zero,&one,&ione); maptrac_(ut,glat,glon,&nx,&chsize); } void pltorb(nporb,dat,dogcm,histname,gcm) int nporb, dogcm; char *histname; Dat_struct *dat; Gcm_struct *gcm; { static int ncalls=0, iframe=0; int i,ii, izero=0, ione=1, mone=-1, sizef=sizeof(float); float zero=0., one=0., spval=SPVAL; static float viewport[4] = {.17,.87,.59,.94}; static float viewmap[4] = {.17,.87,.08,.43}; float rls=.016, rly=-.24, ypos, xmid=0.5*(viewport[0]+viewport[1]); float *wind, *slt, *ut, *glat, *glon, *wind0; char *toplab; printf("pltorb: histname=%s\n",histname); ncalls++; printf("pltorb: ncalls=%3d nporb=%3d\n",ncalls,nporb); if (ncalls == 1) { opngks_(); gsclip_(&izero); cpsetup_(&spval); cpseti_("SET",&izero,3L); cpsetc_("HLT"," ",3L,1L); cpseti_("ILP",&izero,3L); cpsetr_("ILY",&rly,3L); cpsetr_("ILS",&rls,3L); cpsetr_("ILX",&xmid,3L); } /* * Allocate space for and define toplab, slt, ut, glat, glon: */ toplab = cmalloc(STRLEN,"cb pltorb for toplab"); slt = (float*)cmalloc(sizef*nporb,"cb pltorb for slt"); ut = (float*)cmalloc(sizef*nporb,"cb pltorb for ut"); glat = (float*)cmalloc(sizef*nporb,"cb pltorb for glat"); glon = (float*)cmalloc(sizef*nporb,"cb pltorb for glon"); for (i=0; i < nporb; i++) { *(slt+i) = (dat+i)->slt; *(ut+i) = (dat+i)->ut; *(glat+i) = (dat+i)->glat; *(glon+i) = (dat+i)->glon; } wind = (float*)cmalloc(sizef*nporb*nalt,"cb pltorb for wind"); /* * contour hrdi un: */ if (IPLCON) { sprintf(toplab,"HRDI UN (M/S) UT=%4.2f->%4.2f LT=%4.2f->%4.2f", dat->ut, (dat+nporb-1)->ut, dat->slt, (dat+nporb-1)->slt); for (i=0; i < nporb; i++) { /* want wind[nalt][nporb] */ for (ii=0; ii < nalt; ii++) *(wind+(nporb*ii)+i) = *((dat+i)->un+ii); } contrac(wind,nporb,ut,slt,nalt,alt,glat,glon,toplab,viewport, viewmap); frame_(); iframe++; printf(" contour: frame %3d: %s\n",iframe,toplab); /* * contour gcm un: */ if (dogcm) { sprintf(toplab,"TIMESGCM UN (M/S) HIST=%s UT=%4.2f", histname, tgcmhdr->ut); for (i=0; i < nporb; i++) { /* want wind[nalt][nporb] */ for (ii=0; ii < nalt; ii++) *(wind+(nporb*ii)+i) = *((gcm+i)->un+ii); } contrac(wind,nporb,ut,slt,nalt,alt,glat,glon,toplab,viewport, viewmap); frame_(); iframe++; printf(" contour: frame %3d: %s\n",iframe,toplab); } /* * contour data vn: */ sprintf(toplab,"HRDI VN (M/S) UT=%4.2f->%4.2f LT=%4.2f->%4.2f", dat->ut, (dat+nporb-1)->ut, dat->slt, (dat+nporb-1)->slt); for (i=0; i < nporb; i++) { for (ii=0; ii < nalt; ii++) *(wind+(nporb*ii)+i) = *((dat+i)->vn+ii); } contrac(wind,nporb,ut,slt,nalt,alt,glat,glon,toplab,viewport, viewmap); frame_(); iframe++; printf(" contour: frame %3d: %s\n",iframe,toplab); /* * contour gcm vn: */ if (dogcm) { sprintf(toplab,"TIMESGCM VN (M/S) HIST=%s UT=%4.2f", histname, tgcmhdr->ut); for (i=0; i < nporb; i++) { /* want wind[nalt][nporb] */ for (ii=0; ii < nalt; ii++) *(wind+(nporb*ii)+i) = *((gcm+i)->vn+ii); } contrac(wind,nporb,ut,slt,nalt,alt,glat,glon,toplab,viewport, viewmap); frame_(); iframe++; printf(" contour: frame %3d: %s\n",iframe,toplab); } } /* * vectors of hrdi: */ if (IPLVEC) { ypos = viewport[3]+.03; sprintf(toplab,"HRDI UN+VN (M/S) UT=%4.2f->%4.2f LT=%4.2f->%4.2f", dat->ut, (dat+nporb-1)->ut, dat->slt, (dat+nporb-1)->slt); set_(&viewport[0],&viewport[1],&viewport[2],&viewport[3], &(dat->slt), &((dat+nporb-1)->slt), alt, alt+nalt-1, &ione); wind0 = (float*)cmalloc(sizef*nporb*nalt,"cb pltorb for wind0"); for (i=0; i < nporb; i++) { for (ii=0; ii < nalt; ii++){ *(wind+(nporb*ii)+i) = *((dat+i)->un+ii); *(wind0+(nporb*ii)+i) = *((dat+i)->vn+ii); } } velvct_(wind,&nporb,wind0,&nporb,&nporb,&nalt,&zero,&zero, &mone,&izero,&izero,&spval); labrect_(slt,&nporb,alt,&nalt,"LOCAL TIME (HRS)", "ALT (KM)",&chsize,16L,8L); wrlab_(toplab,&xmid,&ypos,&zero,(long)strlen(toplab)); set_(&viewmap[0],&viewmap[1],&viewmap[2],&viewmap[3], &zero,&one,&zero,&one,&ione); maptrac_(ut,glat,glon,&nporb,&zero); frame_(); iframe++; printf(" vectors: frame %3d: %s\n",iframe,toplab); free(wind0); /* * vectors of gcm */ if (dogcm) { sprintf(toplab,"TIMESGCM UN+VN (M/S) HIST=%s UT=%4.2f", histname, tgcmhdr->ut); set_(&viewport[0],&viewport[1],&viewport[2],&viewport[3], &(dat->slt), &((dat+nporb-1)->slt), alt, alt+nalt-1, &ione); wind0 = (float*)cmalloc(sizef*nporb*nalt,"cb pltorb for wind0"); for (i=0; i < nporb; i++) { for (ii=0; ii < nalt; ii++){ *(wind+(nporb*ii)+i) = *((gcm+i)->un+ii); *(wind0+(nporb*ii)+i) = *((gcm+i)->vn+ii); } } velvct_(wind,&nporb,wind0,&nporb,&nporb,&nalt,&zero,&zero, &mone,&izero,&izero,&spval); labrect_(slt,&nporb,alt,&nalt,"LOCAL TIME (HRS)", "ALT (KM)",&chsize,16L,8L); wrlab_(toplab,&xmid,&ypos,&zero,(long)strlen(toplab)); set_(&viewmap[0],&viewmap[1],&viewmap[2],&viewmap[3], &zero,&one,&zero,&one,&ione); maptrac_(ut,glat,glon,&nporb,&zero); frame_(); iframe++; printf(" vectors: frame %3d: %s\n",iframe,toplab); free(wind0); } } free(wind); free(ut); free(slt); free(glat); free(glon); free(toplab); }