version 1.10, 2014/06/09 21:07:41
|
version 1.11, 2015/01/25 18:30:34
|
|
|
int epszflag = (strstr(keylist,"EPSZ") != NULL); | int epszflag = (strstr(keylist,"EPSZ") != NULL); |
int debugflag = (strstr(debug,"debug") != NULL); | int debugflag = (strstr(debug,"debug") != NULL); |
| |
DRMS_Record_t *sharpinrec = sharpinrecset->records[0]; |
|
DRMS_Record_t *sharpceainrec = sharpceainrecset->records[0]; |
for (irec=0;irec<nrecs;irec++) |
|
{ |
|
|
|
|
|
DRMS_Record_t *sharpinrec = sharpinrecset->records[irec]; |
|
DRMS_Record_t *sharpceainrec = sharpceainrecset->records[irec]; |
DRMS_Segment_t *inseg = drms_segment_lookup(sharpceainrec, "Br"); | DRMS_Segment_t *inseg = drms_segment_lookup(sharpceainrec, "Br"); |
int nx = inseg->axis[0]; | int nx = inseg->axis[0]; |
int ny = inseg->axis[1]; | int ny = inseg->axis[1]; |
int nxny = nx * ny; | int nxny = nx * ny; |
int dims[2] = {nx, ny}; | int dims[2] = {nx, ny}; |
//int nx = (inseg->axis[0])+1; |
|
//int ny = (inseg->axis[1])+1; |
|
//int nxny = nx * ny; |
|
//int dims[2] = {nx, ny}; |
|
| |
// Temp arrays | // Temp arrays |
float *bh = (float *) (malloc(nxny * sizeof(float))); | float *bh = (float *) (malloc(nxny * sizeof(float))); |
|
|
float *jz_rms_err = (float *) (malloc(nxny * sizeof(float))); | float *jz_rms_err = (float *) (malloc(nxny * sizeof(float))); |
float *jz_err_squared_smooth = (float *) (malloc(nxny * sizeof(float))); | float *jz_err_squared_smooth = (float *) (malloc(nxny * sizeof(float))); |
float *jz_smooth = (float *) (malloc(nxny * sizeof(float))); | float *jz_smooth = (float *) (malloc(nxny * sizeof(float))); |
|
float *err_term1 = (float *) (malloc(nxny * sizeof(float))); |
|
float *err_term2 = (float *) (malloc(nxny * sizeof(float))); |
| |
// ephemeris variables | // ephemeris variables |
float cdelt1_orig, cdelt1, dsun_obs, imcrpix1, imcrpix2, crpix1, crpix2; | float cdelt1_orig, cdelt1, dsun_obs, imcrpix1, imcrpix2, crpix1, crpix2; |
|
|
float *fy = (float *) (malloc(nxny * sizeof(float))); | float *fy = (float *) (malloc(nxny * sizeof(float))); |
float *fz = (float *) (malloc(nxny * sizeof(float))); | float *fz = (float *) (malloc(nxny * sizeof(float))); |
| |
for (irec=0;irec<nrecs;irec++) |
|
{ |
|
|
|
DRMS_Record_t *sharpceainrec = sharpceainrecset->records[irec]; |
|
DRMS_Segment_t *inseg = drms_segment_lookup(sharpceainrec, "Br"); |
|
int nxtest = inseg->axis[0]; |
|
int nytest = inseg->axis[1]; |
|
|
|
// Check to make sure that nx x ny are constant for this harpnum |
|
if (nx != nxtest || ny!= nytest) |
|
DIE("CEA series does not have constant dimensions for this HARPNUM."); |
|
|
|
// Get emphemeris | // Get emphemeris |
sharpinrec = sharpinrecset->records[irec]; | sharpinrec = sharpinrecset->records[irec]; |
sharpceainrec = sharpceainrecset->records[irec]; | sharpceainrec = sharpceainrecset->records[irec]; |
|
|
drms_copykeys(sharpceaoutrec, sharpceainrec, 0, kDRMS_KeyClass_Explicit); | drms_copykeys(sharpceaoutrec, sharpceainrec, 0, kDRMS_KeyClass_Explicit); |
} | } |
| |
TIME trec, tnow, UNIX_epoch = -220924792.000; /* 1970.01.01_00:00:00_UTC */ |
TIME trec, tnow; /* 1970.01.01_00:00:00_UTC */ |
tnow = (double)time(NULL); | tnow = (double)time(NULL); |
tnow += UNIX_epoch; | tnow += UNIX_epoch; |
| |
|
|
{ | { |
// First, compute Jz on all pixels | // First, compute Jz on all pixels |
computeJz(bx_err, by_err, bx, by, dims, jz, jz_err, jz_err_squared, mask, bitmask, cdelt1, rsun_ref, rsun_obs, | computeJz(bx_err, by_err, bx, by, dims, jz, jz_err, jz_err_squared, mask, bitmask, cdelt1, rsun_ref, rsun_obs, |
derx, dery); |
derx, dery, err_term1, err_term2); |
| |
// Then take the sums of the appropriate pixels | // Then take the sums of the appropriate pixels |
if(computeJzsmooth(bx, by, dims, jz, jz_smooth, jz_err, jz_rms_err, jz_err_squared_smooth, &mean_jz, | if(computeJzsmooth(bx, by, dims, jz, jz_smooth, jz_err, jz_rms_err, jz_err_squared_smooth, &mean_jz, |
|
|
{ | { |
// First, compute Jz on all pixels | // First, compute Jz on all pixels |
computeJz(bx_err, by_err, bx, by, dims, jz, jz_err, jz_err_squared, mask, bitmask, cdelt1, rsun_ref, rsun_obs, | computeJz(bx_err, by_err, bx, by, dims, jz, jz_err, jz_err_squared, mask, bitmask, cdelt1, rsun_ref, rsun_obs, |
derx, dery); |
derx, dery, err_term1, err_term2); |
| |
// Then compute alpha quantities on select pixels | // Then compute alpha quantities on select pixels |
if (computeAlpha(jz_err, bz_err, bz, dims, jz, jz_smooth, &mean_alpha, &mean_alpha_err, | if (computeAlpha(jz_err, bz_err, bz, dims, jz, jz_smooth, &mean_alpha, &mean_alpha_err, |
|
|
{ | { |
// First, compute Jz on all pixels | // First, compute Jz on all pixels |
computeJz(bx_err, by_err, bx, by, dims, jz, jz_err, jz_err_squared, mask, bitmask, cdelt1, rsun_ref, rsun_obs, | computeJz(bx_err, by_err, bx, by, dims, jz, jz_err, jz_err_squared, mask, bitmask, cdelt1, rsun_ref, rsun_obs, |
derx, dery); |
derx, dery, err_term1, err_term2); |
| |
// Then compute helicity quantities on select pixels | // Then compute helicity quantities on select pixels |
if (computeHelicity(jz_err, jz_rms_err, bz_err, bz, dims, jz, &mean_ih, &mean_ih_err, &total_us_ih, | if (computeHelicity(jz_err, jz_rms_err, bz_err, bz, dims, jz, &mean_ih, &mean_ih_err, &total_us_ih, |
|
|
{ | { |
// First, compute Jz on all pixels | // First, compute Jz on all pixels |
computeJz(bx_err, by_err, bx, by, dims, jz, jz_err, jz_err_squared, mask, bitmask, cdelt1, rsun_ref, rsun_obs, | computeJz(bx_err, by_err, bx, by, dims, jz, jz_err, jz_err_squared, mask, bitmask, cdelt1, rsun_ref, rsun_obs, |
derx, dery); |
derx, dery, err_term1, err_term2); |
| |
// Then compute sums of Jz on select pixels | // Then compute sums of Jz on select pixels |
if (computeSumAbsPerPolarity(jz_err, bz_err, bz, jz, dims, &totaljz, &totaljz_err, | if (computeSumAbsPerPolarity(jz_err, bz_err, bz, jz, dims, &totaljz, &totaljz_err, |
|
|
drms_free_array(bz_errArray); | drms_free_array(bz_errArray); |
drms_free_array(losArray); | drms_free_array(losArray); |
| |
} //endfor |
// free the arrays that are related to the lorentz calculation |
|
free(fx); free(fy); free(fz); |
drms_close_records(sharpinrecset, DRMS_FREE_RECORD); |
|
drms_close_records(sharpceainrecset, DRMS_FREE_RECORD); |
|
|
|
drms_close_records(sharpoutrecset, DRMS_INSERT_RECORD); |
|
drms_close_records(sharpceaoutrecset, DRMS_INSERT_RECORD); |
|
|
|
//used for select calculations | //used for select calculations |
free(bh); free(bt); free(jz); | free(bh); free(bt); free(jz); |
free(bpx); free(bpy); free(bpz); | free(bpx); free(bpy); free(bpz); |
|
|
free(pmap); | free(pmap); |
free(p1pad); | free(p1pad); |
free(pmapn); | free(pmapn); |
|
free(err_term2); |
|
free(err_term1); |
|
|
|
|
|
} //endfor |
|
|
|
drms_close_records(sharpinrecset, DRMS_FREE_RECORD); |
|
drms_close_records(sharpceainrecset, DRMS_FREE_RECORD); |
|
|
|
drms_close_records(sharpoutrecset, DRMS_INSERT_RECORD); |
|
drms_close_records(sharpceaoutrecset, DRMS_INSERT_RECORD); |
| |
// free the arrays that are related to the lorentz calculation |
|
free(fx); free(fy); free(fz); |
|
printf("Success=%d\n",sameflag); | printf("Success=%d\n",sameflag); |
return 0; | return 0; |
} // DoIt | } // DoIt |