-------------- 2A23 ver. 6.21 -------------- Contents: README.2a23.v6.21 ----- this file. L2A23main.c L2A23Hpattern.c L2A23rtypes.c ----- No changes L2A23BBtools.c ----- No changes L2A23.h ----- No changes TS_29 ----- No changes TS_2A23_29.h ----- No changes make.L2A23 /******************/ /*** IMPORTANT ***/ /******************/ VERSION_NO and PRODUCT_NO are written at the beginning part (after the HISTORY) of L2A23main.c If the manual writing of VERSION_NO and PRODUCT_NO is not appropriate for TSDIS, please set the switch EOC_OR_TSDIS to 0: #define EOC_OR_TSDIS 1 (VERSION_NO & PRODUCT_NO manually written) ---> #define EOC_OR_TSDIS 0 The above switch is located in the early part of L2A23main.c. /* ============== */ /* Usage */ /* ============== */ TS_2A23_29.h and sst-hou.grd should be placed in the working directory. (sst-hou.grd is not included in this archive.) It may also be requested that TS_29 should be located at TSDIS toolkit include directory. Usage of L2A23 Please compile L2A23 in the following way: (First, you need to edit the makefile make.L2A23.) make -f make.L2A23 Then run L2A23main as follows: L2A23main [1C21 file] [2A23 output file] [VI file (for debug purpose)] -------------------------- Changes in ver. 6.21 -------------------------- No essential change to the code. However, the following changes are made: (1) One of the H-method parameter THRESHOLD_houze in L2A23Hpattern.c is changed from 10000.0 (=40 dBZ) to 7943.3 (=39 dBZ). (2) Simplified EOC_OR_TSDIS-block when the switch EOC_OR_TSDIS is 1, which is the default, because we no longer need complicated if-else tests to determine whether product version is 6 or 6A. -------------------------- Major changes in ver. 6.20 -------------------------- (1) Improved BB detection code so as to avoid strange BB profile as much as possible. The strange profile had a very large Z below BB. -------------------------- Major changes in ver. 6.19 -------------------------- (1) Fix BB detection code so as to avoid HBB being very far away from freezH. (2) Output freezH even when No_Rain, but not when Missing. (In the previous versions, freezH[i]>0 only when rainFlag[i]>0. In 2a23 v.6.19, freezH[i]>0 when RainFlag[i]>=0.) -------------------------- Major changes in ver. 6.18 -------------------------- (1) Fix BB detection code so as to make the angular dependence of BB count smooth. -------------------------- Major changes in ver. 6.17 -------------------------- (1) Added two new rain-types and changed the numbering of several rain types. However, the following rule for rain type numbering remained the same: 100's for stratiform, 200's for convective, 300's for other. (2) Fixed sudden drop of shallow-isolated count at scan edges, i.e. at anglebin #0 and #48. (3) Tried to detect sidelobe-clutter-only case when otherwise shallow isolated was detected, and changed rain type for this case as "other". This prescription was applied for over water only. (4) Changed the threshold for "other type", resulting in a small increase of other count when compared with ver. 6.15, but still the other count of current ver. 6.17 is smaller than that of ver. 5. ------------------------------------------------------- Major changes in ver. 6.15 when compared with ver. 6.14 ------------------------------------------------------- (1) Re-introduced the switch EOC_OR_TSDIS for writing VERSION_NO & PRODUCT_NO. (2) Refined the detection of BB. ------------------------------------------------------- Major changes in ver. 6.14 when compared with ver. 6.08 ------------------------------------------------------- (1) All shallow isolated are convective. (2) Changed rain type numbering, but keeps 100's for stratiform, 200's for convective, 300's for other. (3) Added a file L2A23BBtools.c. ------------------------------------------------------- Major changes in ver. 6.08 when compared with ver. 6.07 ------------------------------------------------------- (1) Fix the bug, which was reported by John K on June 3, 2002, as follows: if (j2-j1>=UP_NSL) j1 = j2 - UP_NSL + 1; /* to secure s_buff[UP_NSL] */ /* bug fix (2002/06/04) */ /* was j1 = j2 - UP_NSL - 1 <---- bug */ The above bug is in the function calc_slope_upper() in the ver. 6.07 of L2A23rtypes.c. (2) In ver 6, 'land/water unknown' is obsolete, but I forgot to comment out a relevant lines in L2A23main.c in ver. 6.07. In ver. 6.08, 'land/water unknown' status will not appear. ------------------------------------------------ Major changes in ver. 6.07 when compared with V5 ------------------------------------------------ 1) V6 and V6A are automatically switched. 2) Rain types are expressed by 3-digits number (in V5, 2-digits), and new categories are added because of the introduction of shallow non-isolated. See List-1 below. 3) BB detection code is changed to a large extent. 4) Over sample data is used. Hence binBBpeak[i] sometimes contains range bin number which corresponds to over sample data. 5) Rain probable is introduced (RainFlag[i]=15). 6) The following new items are added: int8 shallowRain[49] (warmRain[49] in V5) int16 binBBpeak[49] (rangeBinNum[49] in V5) int16 BBboundary[49][2] int16 BBwidth[49] int8 BBstatus[49] int16 spare[49] (float32 in V5) (a) The shallowRain flag takes the following values (shallow non-isolated is introduced in V6): shallowRain[i] = 10: maybe shallow isolated, = 11: shallow isolated (with confidence), = 20: maybe shallow but not isolated, = 21: shallow but not isolated (width confidence) = 0: when not shallow. < 0: when not rain certain or data missing. (b) The meaning of BBboundary[49][2] is as follows: BBboundary[i][0]: range bin number for BB top (125m resol.) BBboundary[i][1]: range bin number for BB bottom (125m resol.) (c) The unit of BBwidth[i] is meter. (d) BB_status[j] is a composite of three internal status flags: BB_status[j] = BB_detection_status[j] * 16 + BB_boundary_status[j] * 4 + BB_width_status[j] where each status on the right hand side takes the following values: 1: poor, 2: fair, 3: good. These three internal flags would be computed from BB_status[j], for example, by something like as follows: if (BB_status[j]>0) { BB_detection_status[j] = BB_status[j] / 16; BB_boundary_status[j] = (BB_status[j]%16) / 4; BB_width_status[j] = BB_status[j]%4; } where % means MOD in FORTRAN; BB_status[j]%4 <----> MOD(BB_status(j),4) (e) spare[j]=1 when binStormHeight[j][1]==binStart[j], otherwise spare[j]<=0. ------ Issues ------ 1) Further refinement and tuning of BB detection are needed. 2) The code is not fully tested. =================================== List-1: rainType[] in version 6.17 =================================== * (merged) rainType[i] * = 100: Stratiform certain. * When R_type_V[i] = T_stra; (BB exists) * and R_type_H[i] = T_stra; * * 110: Stratiform certain. * When R_type_V[i] = T_stra; (BB exists) * and R_type_H[i] = T_others; * * 120: Probably stratiform. * When R_type_V[i] = T_others;(BB may exist but not detected) * and R_type_H[i] = T_stra; * BB not detected by V-profile method, but BB may exist. * Radar echo not strong enough to be convective, and not * noise (because H-pattern method classified this as * stratiform but not noise (i.e., others)), hence the * rain type in this case is most probably stratiform. * * 130: Maybe stratiform. * When R_type_V[i] = T_stra; (BB detection certain) * and R_type_H[i] = T_conv; * Ambiguous, but rain type may be stratiform because * the bright band (BB) certainly detected, and radar * echo below BB not so strong (because V-profile * method classified this as stratiform). * The H-pattern method classified this as convective * not because the existence of very strong radar echo * (if so, the V-profile method also would have * classified this as convective despite of the * existence of BB), but because it satisfied the * stand-out condition for convective center against * the background area with 11 km radius, which does * not necessarily mean that radar echo is very strong. * * 140: Maybe stratiform or maybe transition or something else. * When R_type_V[i] = T_others; (BB hardly expected) * and R_type_H[i] = T_stra; * * 152: Maybe stratiform: * Shallow rain (non-isolated) is detected. * When R_type_V[i] = T_others; * R_type_H[i] = T_stra; * and shallowRain[i] = 20 or 21; * * 160: Maybe stratiform, but rain hardly expected near surface. * BB may exist but is not detected. * When R_type_V[i] = T_others; * and R_type_H[i] = T_stra; * * 170: Maybe stratiform, but rain hardly expected near surface. * BB hardly expected. Maybe cloud only. * Distinction between 170 and 300 is very small. * When R_type_V[i] = T_others; * and R_type_H[i] = T_stra; * * 200: Convective certain. * When R_type_V[i] = T_conv; (no BB) * and R_type_H[i] = T_conv; * * 210: Convective certain. * When R_type_V[i] = T_others; * and R_type_H[i] = T_conv; * Since the criteria for convective by the V-profile * method is somewhat stringent, the V-profile method * classified this as others, but actually it is * convective because H-pattern method classified this * as convective (probably by the stand-out condition * for convective center against the background area). * Though certain, the confidence level would be very * slightly lower than that of the case designated by * the number 20 (i.e. the case where both methods * classified it as convective). * * 220: Convective certain. * When R_type_V[i] = T_conv; * and R_type_H[i] = T_others; * (or, on a very rare occasion, when only R_type_V[i] is * available because of read scan error.) * * 230: Probably convective. ---> this combination will not * appear in ver.6.11 and later. * * When R_type_V[i] = T_conv; (BB exists) * and R_type_H[i] = T_conv; * Somewhat ambiguous because of the existence of the * bright band (BB). * But the rain type is probably convective because * radar echo below BB is so strong that even the * V-profile method classified it as convective, and * the H-pattern method also classified it as * convective. * * 240: Maybe convective. * When R_type_V[i] = T_conv; * and R_type_H[i] = T_stra; * Though I tried to set the criteria for convective * by the V-profile method as being somewhat more * stringent than that of the H-pattern method, it is * not always the case. * I expect that this combination would happen in two cases: * * (1) When strong convective precipitation exists above * Hebb-1km, below which is examined by the H-method, * and echo below Hebb-1km is very weak due to strong * ATT. * * (2) But this combination also occurs when BB detection * fails. * (A very large Z at BB height would make the result of * V-method as convective when the detection of BB fails. * This may occur when BB is associated with strong * precipitation: V-method has a chance to miss the * BB, hence convective by V-method. A large ATT would * make the echo below BB very weak, hence stratiform by * H-method.) * * In practice, it is very difficult to distinguish the * above (1) and (2). In ver. 4.0, the above combination * is classified as convective, because it is certain that * the echo is strong so that it has a convective nature * in both (1) and (2). But, of course, a detailed study * is needed in Day-2 improvement of the algorithm. * * 251: Convective. * Shallow isolated is detected. * When R_type_V[i] = T_conv, * R_type_H[i] = T_conv; * and shallowRain[i] = 10 or 11; * * 252: Convective. * Shallow rain (non-isolated) is detected. * When R_type_V[i] = T_conv, * R_type_H[i] = T_conv; * and shallowRain[i] = 20 or 21; * * 261: Convective. * Shallow isolated is detected. * When R_type_V[i] = T_conv, * R_type_H[i] = T_others; * and shallowRain[i] = 10 or 11; * * 262: Convective. * Shallow rain (non-isolated) is detected. * When R_type_V[i] = T_conv, * R_type_H[i] = T_others; * and shallowRain[i] = 20 or 21; * * 271: Convective. * Shallow isolated is detected. * When R_type_V[i] = T_others, * R_type_H[i] = T_conv; * and shallowRain[i] = 10 or 11; * * 272: Convective. * Shallow rain (non-isolated) is detected. * When R_type_V[i] = T_others, * R_type_H[i] = T_conv; * and shallowRain[i] = 20 or 21; * * 281: Convective. * Shallow isolated is detected. * When R_type_V[i] = T_conv, * R_type_H[i] = T_stra; * and shallowRain[i] = 10 or 11; * * 282: Convective. * Shallow rain (non-isolated) is detected. * When R_type_V[i] = T_conv, * R_type_H[i] = T_stra; * and shallowRain[i] = 20 or 21; * * 291: Convective: * Shallow isolated is detected. * When R_type_V[i] = T_others; * R_type_H[i] = T_stra; * and shallowRain[i] = 10 or 11; * * 300: Others. * When R_type_V[i] = T_others; * and R_type_H[i] = T_others; * This category includes very weak echo (possibly noise) * and/or cloud (very weak echo in the lower altitude but * appreciable echo in the upper part, which was not * detected as bright band). * * 312: Others. * Shallow rain (non-isolated) is detected. * When R_type_V[i] = T_others, * R_type_H[i] = T_others; * and shallowRain[i] = 20 or 21;- * * 313: Others. * If sidelobe clutter were not rejected, shallow * isolated would be detected. * When R_type_V[i] = T_others, * R_type_H[i] = T_others; * where * * R_type_V: rain type classified by the V-profile method, * R_type_H: rain type classified by the H-pattern method, which is * based on SHY95 developed by Prof. Houze and his group. * * The above assignment of numbers has the following meaning: * * (merged) rainType[i] / 100 = 1: stratiform, * 2: convective. * 3: others, * * (merged) rainType[i] % 100 = Sub-category, * * (merged) rainType[i] % 10 = 0: usual, * 1: shallow isolated, * 2: shallow non-isolated, * 3: sidelobe clutter only (once shallow isolated * overwritten as sidelobe clutter only). * rainType[i]%10=3 occurs for type 313 only. * * where rainType[i] % 10 means MOD(rainType[i],10) in FORTRAN. Though rainType is changed to int16, no rain and missing values remain the same, that is rainType[i] = -88 : no rain -99 : missing