READING IN CUSTOM LINE LISTS (JJD-JanMMI) ====================================================================== ; Playing with line lists, using RD_LINE(), RD_LIST() and CAT_LN(): ; Quick Example ; ; The function RD_LIST() can read in an ascii line list and from this ; can retrieve the appropriate emissivity data from any of the supported ; databases in the same way that RD_LINE() does. RD_LIST() was designed so ; that the user can make up a "custom" line list that cannot easily be ; done with RD_LINE(). ; ; If one simply wants to read in all lines from a ; given element, or set of elements or ions, and from a single database, ; this is trivial using RD_LINE() by specifying the desired species in the ; ATOM string, eg, ; in_atom=['He', 'c 5', 'N V', 's_8'] ; to illustrate the flexibility of specification. ; ; Now, if one is only interested in relatively few lines, and ; would like to use different database sources for different lines, ; RD_LIST() can be used. ; First generate a RD_LIST() understandable line list, either using ; CAT_LN() (or "by hand"; see the RD_LIST.PRO documentation for the ; straightforward format) and the lines already read in by RD_LINE(). ; Let's look at 13-14 AA: i13_14=where(rd_line_linstr.wvl gt 13. and rd_line_linstr.wvl le 14) cat_ln_linstr=cat_ln(rd_line_linstr,pick=i13_14,flst='chianti13_14',/comm) ; now switch databases and read the SPEX DB for 13-14 AA; remember to ; save the CHIANTI structure already read in by RD_LINE, because the ; standard rd_line_linstr will get over-written unless changed in the ; .par file. rd_line_linstrch=rd_line_linstr !LDBDIR = '$SPEX' !WMIN=13. & !WMAX=14. @rd_line.par ; print them all out cat_ln_linstr=cat_ln(rd_line_linstr,flst='spex13_14',/comm) ; Change ascii line list how one likes, eg, swap SPEX Ne VIII lines for ; CHIANTI's more extensive list and re-read SPEX, with CHIANTI Ne VIII ; unix_prompt$ grep -v 'Ne VIII' spex13_14 > temp1 ; unix_prompt$ grep 'Ne VIII' chianti13_14 > temp2 ; unix_prompt$ cat temp1 temp2 > mix13_14 rd_list_linstr=rd_list('./mix13_14') ; Note that this example is just to illustrate the ease with which the ; input line list can be "mixed and matched". The resulting ; RD_LIST_LINSTR in this particular example could also have been ; generated by selecting out Ne VIII structure elements from the CHIANTI ; structure using the IDL WHERE command into a new structure, doing the ; inverse operation on the SPEX structure, then using CAT_LN: ; ; linstrAB=cat_ln(linstrA,linstrB)