(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.14 and 1.16

version 1.14, 2013/05/21 17:06:32 version 1.16, 2013/07/04 02:14:14
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    Jan 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 90 
Line 92 
 // Nyqvist rate at disk center is 0.03 degree. Oversample above 0.015 degree // Nyqvist rate at disk center is 0.03 degree. Oversample above 0.015 degree
 #define NYQVIST         (0.015) #define NYQVIST         (0.015)
  
   // Some other things
 #ifndef MIN #ifndef MIN
 #define MIN(a,b) (((a)<(b)) ? (a) : (b)) #define MIN(a,b) (((a)<(b)) ? (a) : (b))
 #endif #endif
Line 117 
Line 120 
 #define INTERP                  0 #define INTERP                  0
 #define dpath    "/home/jsoc/cvs/Development/JSOC" #define dpath    "/home/jsoc/cvs/Development/JSOC"
  
   
 /* ========================================================================================================== */ /* ========================================================================================================== */
  
 // Space weather keywords // Space weather keywords
Line 173  enum projection {
Line 177  enum projection {
         lambert         lambert
 }; };
  
   // WSC code
   char *wcsCode[] = {"CAR", "CAS", "MER", "CEA", "GLS", "TAN", "ARC", "STG",
           "SIN", "ZEA"};
   
 // Ephemeris information // Ephemeris information
 struct ephemeris { struct ephemeris {
         double disk_lonc, disk_latc;         double disk_lonc, disk_latc;
Line 191  struct mapInfo {
Line 199  struct mapInfo {
         float *xi_out, *zeta_out;       // coordinate on full disk image to sample at         float *xi_out, *zeta_out;       // coordinate on full disk image to sample at
 }; };
  
   
 /* ========================================================================================================== */ /* ========================================================================================================== */
  
 /* Get all input data series */ /* Get all input data series */
Line 269  void computeSWIndex(struct swIndex *swKe
Line 276  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 311  char *CutSegs[] = {"magnetogram", "bitma
Line 318  char *CutSegs[] = {"magnetogram", "bitma
         "disambig", "conf_disambig"};         "disambig", "conf_disambig"};
 char *CEASegs[] = {"magnetogram", "bitmap", "Dopplergram", "continuum", "disambig", char *CEASegs[] = {"magnetogram", "bitmap", "Dopplergram", "continuum", "disambig",
         BR_SEG_CEA, BT_SEG_CEA, BP_SEG_CEA, BR_ERR_SEG_CEA, BT_ERR_SEG_CEA, BP_ERR_SEG_CEA};         BR_SEG_CEA, BT_SEG_CEA, BP_SEG_CEA, BR_ERR_SEG_CEA, BT_ERR_SEG_CEA, BP_ERR_SEG_CEA};
   
 /* ========================================================================================================== */ /* ========================================================================================================== */
  
 char *module_name = "sharp"; char *module_name = "sharp";
 char *version_id = "2012 Dec 18";  /* Version number */  char *version_id = "2013 Jun 26";  /* Version number */
 int seed; int seed;
  
 ModuleArgs_t module_args[] = ModuleArgs_t module_args[] =
Line 352  int DoIt(void)
Line 360  int DoIt(void)
         contQuery = (char *) params_get_str(&cmdparams, "cont");         contQuery = (char *) params_get_str(&cmdparams, "cont");
         sharpCeaQuery = (char *) params_get_str(&cmdparams, "sharp_cea");         sharpCeaQuery = (char *) params_get_str(&cmdparams, "sharp_cea");
         sharpCutQuery = (char *) params_get_str(&cmdparams, "sharp_cut");         sharpCutQuery = (char *) params_get_str(&cmdparams, "sharp_cut");
         sharpCutQuery = (char *) params_get_str(&cmdparams, "sharp_cut");  
  
         seed = params_get_int(&cmdparams, "seed");         seed = params_get_int(&cmdparams, "seed");
  
Line 675  int createCeaRecord(DRMS_Record_t *mharp
Line 682  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 997  int getEphemeris(DRMS_Record_t *inRec, s
Line 1004  int getEphemeris(DRMS_Record_t *inRec, s
         float crpix1 = drms_getkey_float(inRec, "IMCRPIX1", &status);         float crpix1 = drms_getkey_float(inRec, "IMCRPIX1", &status);
         float crpix2 = drms_getkey_float(inRec, "IMCRPIX2", &status);         float crpix2 = drms_getkey_float(inRec, "IMCRPIX2", &status);
         float cdelt = drms_getkey_float(inRec, "CDELT1", &status);  // in arcsec, assumimg dx=dy         float cdelt = drms_getkey_float(inRec, "CDELT1", &status);  // in arcsec, assumimg dx=dy
         printf("cdelt=%f\n",cdelt);  
         ephem->disk_xc = PIX_X(0.0,0.0) - 1.0;          // Center of disk in pixel, starting at 0         ephem->disk_xc = PIX_X(0.0,0.0) - 1.0;          // Center of disk in pixel, starting at 0
         ephem->disk_yc = PIX_Y(0.0,0.0) - 1.0;         ephem->disk_yc = PIX_Y(0.0,0.0) - 1.0;
  
Line 1561  int createCutRecord(DRMS_Record_t *mharp
Line 1567  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 1716  void computeSWIndex(struct swIndex *swKe
Line 1722  void computeSWIndex(struct swIndex *swKe
         float *bx_err = (float *) bx_errArray->data;            // bx_err         float *bx_err = (float *) bx_errArray->data;            // bx_err
  
         // Get emphemeris         // Get emphemeris
           float  cdelt1_orig = drms_getkey_float(inRec, "CDELT1",   &status);
         //float cdelt1_orig = drms_getkey_float(inRec, "CDELT1",   &status);  
         float  cdelt1      = drms_getkey_float(inRec, "CDELT1",   &status);  
         float  dsun_obs    = drms_getkey_float(inRec, "DSUN_OBS",   &status);         float  dsun_obs    = drms_getkey_float(inRec, "DSUN_OBS",   &status);
         double rsun_ref   = drms_getkey_double(inRec, "RSUN_REF", &status);         double rsun_ref   = drms_getkey_double(inRec, "RSUN_REF", &status);
         double rsun_obs   = drms_getkey_double(inRec, "RSUN_OBS", &status);         double rsun_obs   = drms_getkey_double(inRec, "RSUN_OBS", &status);
Line 1727  void computeSWIndex(struct swIndex *swKe
Line 1731  void computeSWIndex(struct swIndex *swKe
         float crpix1      = drms_getkey_float(inRec, "CRPIX1", &status);         float crpix1      = drms_getkey_float(inRec, "CRPIX1", &status);
         float crpix2      = drms_getkey_float(inRec, "CRPIX2", &status);         float crpix2      = drms_getkey_float(inRec, "CRPIX2", &status);
  
         // Temp arrays          // convert cdelt1_orig from degrees to arcsec
           float cdelt1       = (atan((rsun_ref*cdelt1_orig*RADSINDEG)/(dsun_obs)))*(1/RADSINDEG)*(3600.);
  
           // Temp arrays
         float *bh      = (float *) (malloc(nxny * sizeof(float)));         float *bh      = (float *) (malloc(nxny * sizeof(float)));
         float *bt      = (float *) (malloc(nxny * sizeof(float)));         float *bt      = (float *) (malloc(nxny * sizeof(float)));
         float *jz      = (float *) (malloc(nxny * sizeof(float)));         float *jz      = (float *) (malloc(nxny * sizeof(float)));
Line 1914  void setSWIndex(DRMS_Record_t *outRec, s
Line 1920  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;  
  
         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 1933  void setKeys(DRMS_Record_t *outRec, DRMS
Line 1975  void setKeys(DRMS_Record_t *outRec, DRMS
  
         // set cvs commit version into keyword HEADER         // set cvs commit version into keyword HEADER
         char *cvsinfo = strdup("$Id$");         char *cvsinfo = strdup("$Id$");
         //   status = drms_setkey_string(outRec, "HEADER", cvsinfo);          char *cvsinfo2 = sw_functions_version();
         status = drms_setkey_string(outRec, "CODEVER7", cvsinfo);          char cvsinfoall[2048];
           strcat(cvsinfoall,cvsinfo);
           strcat(cvsinfoall,"\n");
           strcat(cvsinfoall,cvsinfo2);
           status = drms_setkey_string(outRec, "CODEVER7", cvsinfoall);
  
 }; };
  
Line 1975  void frebin (float *image_in, float *ima
Line 2021  void frebin (float *image_in, float *ima
         fresize(&fresizes, image_in, image_out, nx, ny, nlead, nxout, nyout, nxout, xoff, yoff, DRMS_MISSING_FLOAT);         fresize(&fresizes, image_in, image_out, nx, ny, nlead, nxout, nyout, nxout, xoff, yoff, DRMS_MISSING_FLOAT);
  
 } }
   


Legend:
Removed from v.1.14  
changed lines
  Added in v.1.16

Karen Tian
Powered by
ViewCVS 0.9.4