(file) Return to sharp.c CVS log (file) (dir) Up to [Development] / JSOC / proj / sharp / apps

Diff for /JSOC/proj/sharp/apps/sharp.c between version 1.9 and 1.12

version 1.9, 2013/01/14 19:51:56 version 1.12, 2013/05/09 19:20:43
Line 22 
Line 22 
  *              v0.2    Sep 04 2012  *              v0.2    Sep 04 2012
  *              v0.3    Dec 18 2012  *              v0.3    Dec 18 2012
  *              v0.4    Jan 02 2013  *              v0.4    Jan 02 2013
    *              v0.5    Jam 23 2012
  *  *
  *      Notes:  *      Notes:
  *              v0.0  *              v0.0
Line 39 
Line 40 
  *              Fixed memory leakage of 0.15G per rec; denoted with "Dec 18"  *              Fixed memory leakage of 0.15G per rec; denoted with "Dec 18"
  *              v0.4  *              v0.4
  *              Took out convert_inplace(). Was causing all the images to be int  *              Took out convert_inplace(). Was causing all the images to be int
    *              v0.5
    *              Corrected ephemeris keywords, added argument mInfo for setKeys()
  *  *
  *      Example:  *      Example:
  *      sharp "mharp=hmi.Mharp_720s[1404][2012.02.20_10:00]" \  *      sharp "mharp=hmi.Mharp_720s[1404][2012.02.20_10:00]" \
Line 156  enum projection {
Line 158  enum projection {
         lambert         lambert
 }; };
  
   // WSC code
   char *wcsCode[] = {"CAR", "CAS", "MER", "CEA", "GLS", "TAN", "ARC", "STG",
           "SIN", "ZEA"};
   
 // Ephemeris // Ephemeris
 struct ephemeris { struct ephemeris {
         double disk_lonc, disk_latc;         double disk_lonc, disk_latc;
Line 254  void computeSWIndex(struct swIndex *swKe
Line 260  void computeSWIndex(struct swIndex *swKe
 void setSWIndex(DRMS_Record_t *outRec, struct swIndex *swKeys_ptr); void setSWIndex(DRMS_Record_t *outRec, struct swIndex *swKeys_ptr);
  
 /* Set all keywords, no error checking for now */ /* Set all keywords, no error checking for now */
 void setKeys(DRMS_Record_t *outRec, DRMS_Record_t *inRec);  void setKeys(DRMS_Record_t *outRec, DRMS_Record_t *inRec, struct mapInfo *mInfo);
  
 // =================== // ===================
  
Line 656  int createCeaRecord(DRMS_Record_t *mharp
Line 662  int createCeaRecord(DRMS_Record_t *mharp
         DRMS_Link_t *bHarpLink = hcon_lookup_lower(&sharpRec->links, "BHARP");         DRMS_Link_t *bHarpLink = hcon_lookup_lower(&sharpRec->links, "BHARP");
         if (bHarpLink) drms_link_set("BHARP", sharpRec, bharpRec);         if (bHarpLink) drms_link_set("BHARP", sharpRec, bharpRec);
  
         setKeys(sharpRec, bharpRec);            // Set all other keywords          setKeys(sharpRec, bharpRec, &mInfo);            // Set all other keywords
         drms_copykey(sharpRec, mharpRec, "QUALITY");            // copied from los records         drms_copykey(sharpRec, mharpRec, "QUALITY");            // copied from los records
  
         // Space weather         // Space weather
Line 924  int findPosition(DRMS_Record_t *inRec, s
Line 930  int findPosition(DRMS_Record_t *inRec, s
  
         float psize = drms_getkey_float(inRec, "SIZE", &status);         float psize = drms_getkey_float(inRec, "SIZE", &status);
         if (psize != psize) {         if (psize != psize) {
                 TIME t0 = drms_getkey_time(inRec, "T_FRST", &status); if (status) return 1;                  TIME t0 = drms_getkey_time(inRec, "T_FRST1", &status); if (status) return 1;                    // changed from T_FRST to T_FRST1, T_FRST may not exist
                 double omega = drms_getkey_double(inRec, "OMEGA_DT", &status); if (status) return 1;                 double omega = drms_getkey_double(inRec, "OMEGA_DT", &status); if (status) return 1;
                 char firstRecQuery[100], t0_str[100];                 char firstRecQuery[100], t0_str[100];
                 sprint_time(t0_str, t0, "TAI", 0);                 sprint_time(t0_str, t0, "TAI", 0);
Line 1540  int createCutRecord(DRMS_Record_t *mharp
Line 1546  int createCutRecord(DRMS_Record_t *mharp
         if (bHarpLink) drms_link_set("BHARP", sharpRec, bharpRec);         if (bHarpLink) drms_link_set("BHARP", sharpRec, bharpRec);
  
         setSWIndex(sharpRec, swKeys_ptr);       // Set space weather indices         setSWIndex(sharpRec, swKeys_ptr);       // Set space weather indices
         setKeys(sharpRec, bharpRec);            // Set all other keywords          setKeys(sharpRec, bharpRec, NULL);              // Set all other keywords, NULL specifies cutout
  
         // Stats         // Stats
  
Line 1842  void setSWIndex(DRMS_Record_t *outRec, s
Line 1848  void setSWIndex(DRMS_Record_t *outRec, s
  *  *
  */  */
  
 void setKeys(DRMS_Record_t *outRec, DRMS_Record_t *inRec)  void setKeys(DRMS_Record_t *outRec, DRMS_Record_t *inRec, struct mapInfo *mInfo)
 { {
         copy_me_keys(inRec, outRec);         copy_me_keys(inRec, outRec);
         copy_patch_keys(inRec, outRec);         copy_patch_keys(inRec, outRec);
         copy_geo_keys(inRec, outRec);         copy_geo_keys(inRec, outRec);
         copy_ambig_keys(inRec, outRec);         copy_ambig_keys(inRec, outRec);
  
           int status = 0;
   
           // Change a few geometry keywords for CEA records
           if (mInfo != NULL) {
   
             drms_setkey_float(outRec, "CRPIX1", mInfo->ncol/2. + 0.5);
                   drms_setkey_float(outRec, "CRPIX2", mInfo->nrow/2. + 0.5);
   
                   drms_setkey_float(outRec, "CRVAL1", mInfo->xc);
                   drms_setkey_float(outRec, "CRVAL2", mInfo->yc);
                   drms_setkey_float(outRec, "CDELT1", mInfo->xscale);
                   drms_setkey_float(outRec, "CDELT2", mInfo->yscale);
                   drms_setkey_string(outRec, "CUNIT1", "degree");
                   drms_setkey_string(outRec, "CUNIT2", "degree");
   
                   char key[64];
                   snprintf (key, 64, "CRLN-%s", wcsCode[(int) mInfo->proj]);
                   drms_setkey_string(outRec, "CTYPE1", key);
                   snprintf (key, 64, "CRLT-%s", wcsCode[(int) mInfo->proj]);
                   drms_setkey_string(outRec, "CTYPE2", key);
                   drms_setkey_float(outRec, "CROTA2", 0.0);
   
           } else {
   
             float disk_xc = drms_getkey_float(inRec, "IMCRPIX1", &status);
             float disk_yc = drms_getkey_float(inRec, "IMCRPIX2", &status);
             float x_ll = drms_getkey_float(inRec, "CRPIX1", &status);
             float y_ll = drms_getkey_float(inRec, "CRPIX2", &status);
             // Defined as disk center's pixel address wrt lower-left of cutout
             drms_setkey_float(outRec, "CRPIX1", disk_xc - x_ll + 1.);
                   drms_setkey_float(outRec, "CRPIX2", disk_yc - y_ll + 1.);
                   // Always 0.
                   drms_setkey_float(outRec, "CRVAL1", 0);
                   drms_setkey_float(outRec, "CRVAL2", 0);
   
           }
   
         char timebuf[1024];         char timebuf[1024];
         float UNIX_epoch = -220924792.000; /* 1970.01.01_00:00:00_UTC */         float UNIX_epoch = -220924792.000; /* 1970.01.01_00:00:00_UTC */
         double val;         double val;
         int status = DRMS_SUCCESS;          status = 0;
  
         val = drms_getkey_double(inRec, "DATE",&status);         val = drms_getkey_double(inRec, "DATE",&status);
         drms_setkey_double(outRec, "DATE_B", val);         drms_setkey_double(outRec, "DATE_B", val);
Line 1860  void setKeys(DRMS_Record_t *outRec, DRMS
Line 1903  void setKeys(DRMS_Record_t *outRec, DRMS
         drms_setkey_string(outRec, "DATE", timebuf);         drms_setkey_string(outRec, "DATE", timebuf);
  
         // set cvs commit version into keyword HEADER         // set cvs commit version into keyword HEADER
         char *cvsinfo = strdup("$Header$");          char *cvsinfo = strdup("$Id$");
         //   status = drms_setkey_string(outRec, "HEADER", cvsinfo);         //   status = drms_setkey_string(outRec, "HEADER", cvsinfo);
         status = drms_setkey_string(outRec, "CODEVER7", cvsinfo);         status = drms_setkey_string(outRec, "CODEVER7", cvsinfo);
  


Legend:
Removed from v.1.9  
changed lines
  Added in v.1.12

Karen Tian
Powered by
ViewCVS 0.9.4