August 12, 2008 - George H. Fisher, Space Sciences Lab, UC Berkeley A final version of flct_1.0 (1.0_final) has been placed into the C_VERSIONS folder. This version supercedes all of the previous flct_test_* versions, and future version numbers will be incremented from here. It also supercedes earlier candidate releases, versions 1.0_RC3, 1.0_RC2 and 1.0_RC1. The only difference between the final version and 1.0_RC3 is the inclusion of the /err_stop keyword in the shift_frac2d procedure included in the IDL-io-procedures directory of the distribution. The main difference between 1.0_RC3 and 1.0_RC2 has been a signficant speedup in the IDL shift_frac2d function when non-uniform shifts (i.e. warping, using 2-d arrays of deltax, deltay) are used. The only significant difference between 1.0_RC2 and 1.0_RC1 are some changes in the documentation and the inclusion of more binary executables. Overall, the new version of the code performs significantly better in terms of both speed and accuracy. The main changes from version test_13 are as follows: When sub-images are extracted from the main images to compute a cross- correlation function, the sub-images are now mean-subtracted. This should result in better behavior when images have a significant non-zero bias. In conjunction with the local mean subtraction, the low-pass gaussian filter works much more effectively in extracting flows from images with a lot of pixel-to-pixel structure. The ability to skip over points, and only compute the velocity every N pixels in x and y has been added, to cope with very large images. In addition, for points that are skipped over, the code will optionally use cubic convolution interpolation to fill in the values that were not explicitly computed. The IDL i/o procedures for flct have been updated, and include some error checking. There is a new IDL function, shift_frac2d.pro, which is very useful for adding or removing fractional pixel shifts from images, in conjunction with flct. By using flct in combination with shift_frac2d, it is very easy to subtract out secular shifts due to image motion or solar rotation before a correlation tracking velocity is computed. Please go to the C_VERSIONS directory and find flct_1.0_RC3 and read the documentation there for further details. May 30, 2007 A new version, flct_test_13, has been placed into the C_VERSIONS folder. Version test_13 fixes some minor bugs, adds the capability of simply computing offsets between two images by setting sigma to 0, and adds the option to filter the subimages with a gaussian low-pass filter before computing the cross-correlation function. The software is licensed with GPL version 2. At the moment, no binary executables or updated documentation for version test_13 are available, but the code is easy to compile with the included Makefile. Make sure fftw3 is installed first, and then edit the Makefile if necessary to describe the location of the fftw3 include file and library, and then just type make. May 16, 2006 A new version, test_12, has been placed into the C_VERSIONS folder. Version test_12 is much more sensitive to small shifts between the 2 images for which local correlation tracking is being done than was the previous version, test_10. At this time, there is no parallel IDL version equivalent to test_12 which has been posted. Binary executables for version test_12 are available for 32-bit and 64-bit linux, OSX, Windows, and Solaris, in the bin directory under vel_ccor_test_12. Of course the source code is available too. Please read the updated documentation within the vel_corr_test_12 folder. September, 2005 The codes in this directory can be used to perform local correlation tracking (LCT) based on the "Fourier LCT," or "FLCT," method described in Section 3 of Welsch, Fisher, Abbett & Regnier, ApJ 610, 1148 (2004). The original version of the FLCT code was written in IDL, but the procedure is sufficiently computationally intensive that this code runs slowly. In addition to the original code, two newer versions of the code are currently available, and two more are planned. All available codes can be downloaded from the following URL. http://solarmuri.ssl.berkeley.edu/overview/publicdownloads/software.html Below, we provide a brief synopsis of each version. 1. "Old" IDL version: ===================== This method employs two IDL routines, cross_cor_old.pro and vel_ccor_old.pro. Entering "cross_cor_old" or "vel_ccor_old" from the IDL prompt prints information about running the codes. These codes perform more interpolation than necessary, and are therefore not as fast as they might be. Unfortunately, the harm from these extra interpolations is not limited to wasted time; they can, in rare cases, cause the routine to return a spuriously large shift for a pixel (in less than 1 in 10,000 pixels). 2. New ("Current") IDL version: ===================== This method employs two IDL routines, cross_cor.pro and vel_ccor.pro. Entering "cross_cor" or "vel_ccor" from the IDL prompt prints information about running the codes. The interpolation is done over a smaller area than in the original code, and is significantly faster than the old IDL version. 3. C versions: ============= These versions have been re-written in C, and are much faster than the IDL version. It is still envisioned that one would run vel_ccor from within an IDL session, so the I/O procedures for preparing the input to vel_ccor, and reading the output from vel_ccor, are written in IDL. In addition to running from within IDL, the C versions can be run from the command line. There is no GUI interface for vel_ccor. vel_ccor runs on Linux, Windows XP (other versions of Windows not yet tested), Solaris, and OSX. The I/O files for version test_10 (and later) of vel_ccor are written in binary, large-endian byte order, and should be platform independent -- vel_ccor will byte-swap the data as necessary, without user intervention. The older C versions ("test_8") have I/O IDL procedures and I/O files which are *not* platform independent, so care should be taken analyzing results on one computing platform when the computations were run on a different computing platform. Comparisons between results from the IDL and C versions of vel_ccor show that results from the different versions are consistent to better than 1% accuracy. 4. FORTRAN version (planned) ============================ 5. MPI version (planned) ======================== Because each correlation performed (one per pixel above threshold) are independent of other correlations (for other pixels), the code should parallelize easily, with essentially linear speedup with the number of processors.