| 1 | TODO.list |
|---|
| 2 | Tom Henderson 5/19/06 |
|---|
| 3 | |
|---|
| 4 | WRF-ESMF TODO LIST: |
|---|
| 5 | |
|---|
| 6 | |
|---|
| 7 | WRF-ESMF is still new and experimental and has many limitations. Many of |
|---|
| 8 | these are mentioned in the task list that follows. |
|---|
| 9 | |
|---|
| 10 | |
|---|
| 11 | "X" == "DONE" |
|---|
| 12 | |
|---|
| 13 | The "ESMF" referred to below is version 2.2.0rp1. |
|---|
| 14 | |
|---|
| 15 | + Design and Implementation: |
|---|
| 16 | - Get rid of masses of "DEBUG" code. |
|---|
| 17 | - Fix ESMF+RSL_LITE. Currently, only ESMF+RSL works. |
|---|
| 18 | Patch and memory extents differ between RSL and RSL_LITE, see |
|---|
| 19 | /users/hender/Tasks/WRF_ESMF/RSL_LITE_broken/README for details. This |
|---|
| 20 | is almost certainly the underlying cause of the problem given the |
|---|
| 21 | evil hackery in the current implementation of io_esmf. |
|---|
| 22 | - Finish sequence diagram for the coupling interactions in |
|---|
| 23 | /users/hender/Tasks/WRF_ESMF/SequenceDiagram.txt ... |
|---|
| 24 | - Upgrade SST component so it can run on a subset of processors. |
|---|
| 25 | This requires breaking the domdesc dependence for SST so SST can be |
|---|
| 26 | run on fewer processes. SST will need to call wrf_dm_patch_domain(), |
|---|
| 27 | probably modified to avoid dependence on TYPE(domain) and certainly |
|---|
| 28 | modified to avoid dependence on head_grid. |
|---|
| 29 | - Upgrade external/io_esmf/ so more data types are supported. |
|---|
| 30 | - Upgrade external/io_esmf/ so 3D arrays are supported (just loop over "K" |
|---|
| 31 | at first with hard-coded names like "U_k_1", "U_k_2", etc.). Then |
|---|
| 32 | switch to ESMF for this once it can do it. (Can ESMF do this now? Check.) |
|---|
| 33 | - Extend external/io_esmf/ (etc.) so more than one I/O stream can be used |
|---|
| 34 | for ESMF coupling. This would involve nested import and export states. |
|---|
| 35 | - Exchange staggered 2D grids and test-validate (x, y, and z staggerings). |
|---|
| 36 | Current hacked implementation should be able to handle this for |
|---|
| 37 | horizontal staggerings, but need to test in case bugs are lurking... |
|---|
| 38 | - Upgrade external/io_esmf/ so metadata is exchanged correctly. Right now, |
|---|
| 39 | metadata is ignored. This would allow sharing of metadata and simplify |
|---|
| 40 | implementation of components that were aware of WRF metadata. Ultimately, |
|---|
| 41 | CF would be the right thing here... |
|---|
| 42 | - Fix output formatting so DOMAIN_TIME_TEST works the same way |
|---|
| 43 | both with and without ESMF. |
|---|
| 44 | - Fix ext_esmf_ioclose so it actually destroys ESMF objects again. This |
|---|
| 45 | is #ifdef'd out at the moment due to difficulties with destruction. (At |
|---|
| 46 | present, ESMF requires users to deallocate anything they allocate, but |
|---|
| 47 | provides no introspection so a user can figure out if who allocated |
|---|
| 48 | something. This leads to obfuscation of implementations...) |
|---|
| 49 | X Make WRF-ESMF build recognize ESMF environment variables? |
|---|
| 50 | Could remove stanzas from arch/configure.defaults and avoid lots |
|---|
| 51 | of duplication and documentation. |
|---|
| 52 | - If possible, upgrade WRF ESMF component to get number of MPI tasks from |
|---|
| 53 | VM instead of from MPI. This may be tricky or even impractical due to |
|---|
| 54 | startup issues... |
|---|
| 55 | - CF conventions: |
|---|
| 56 | * Numerous tasks here, not really a "WRF-ESMF" issue, but related... |
|---|
| 57 | Will there be CF conventions for startTime, stopTime, timeStep, |
|---|
| 58 | couplingInterval? |
|---|
| 59 | - Other ESMF bugs/issues: |
|---|
| 60 | * Rip out the current hacks for grid creation in external/io_esmf/ once |
|---|
| 61 | ESMF can support WRF map projections. Use the "sieve" method of |
|---|
| 62 | io_mcel. This will take a bit of work... |
|---|
| 63 | * Restore ESMF_LogErr calls once ESMF fixes them so they no longer |
|---|
| 64 | truncate all of our messages (trivial for us...). |
|---|
| 65 | * Ask when ESMF_LogErr will allow us to specify LUN. This will |
|---|
| 66 | make it easier for us to use this utility. |
|---|
| 67 | * Upgrade external/io_esmf/ to avoid manual CICO once ESMF can mimic WRF |
|---|
| 68 | memory layouts. |
|---|
| 69 | * Index ordering is hard-coded. Fix this once ESMF supports it and |
|---|
| 70 | connect to "MemoryOrder" argument. |
|---|
| 71 | * Take a look at my list of reported ESMF bugs and add any I haven't |
|---|
| 72 | reported. |
|---|
| 73 | * Calls to ESMF_LogSet in main/wrf_ESMFApp.F cause core dumps -- why? |
|---|
| 74 | * Calls to ESMF_ArraySpecSet() in external/io_esmf/ quietly do the wrong |
|---|
| 75 | thing. Why? Once they work, uncomment this code to avoid |
|---|
| 76 | per-data-type duplication of hard-coded alternative (gaaak). See |
|---|
| 77 | string DOESNOTWORK. |
|---|
| 78 | * ESMF cannot handle "extra" rows-columns implied by horizontal |
|---|
| 79 | staggering for regional models like WRF. Upgrade once ESMF supports |
|---|
| 80 | this. |
|---|
| 81 | * Re-connect "Stagger" argument to ESMF "horzrelloc" argument. |
|---|
| 82 | Uncomment this code in external/io_esmf/. |
|---|
| 83 | * Until then, maybe use nested ESMF_States to handle it. This is ugly |
|---|
| 84 | though because there are no conventions for such a thing so it will |
|---|
| 85 | introduce dependencies with other components. Balaji's recent |
|---|
| 86 | proposal to standardize grid metadata within CF would be useful |
|---|
| 87 | if we go this way. |
|---|
| 88 | * Why can I specify start indices in the call to |
|---|
| 89 | ESMF_GridDistribute[Vector]() but not in the call to ESMF_GridSet() ? |
|---|
| 90 | * Remove implementation of WRFU_TimeIntervalDIVQuot in |
|---|
| 91 | external/io_esmf/module_esmf_extensions.F90 once ESMF supports this |
|---|
| 92 | directly. |
|---|
| 93 | * Lack of sane (or any) iterators for ESMF_State and other container |
|---|
| 94 | classes leads to nasty user code... |
|---|
| 95 | * Lack of adherence to Orthodox Canonical Form leads to really nasty |
|---|
| 96 | user code (so much for "best practices"...) |
|---|
| 97 | * Many others... |
|---|
| 98 | - Misc. bugs/issues: |
|---|
| 99 | * Investigate odd debug prints from med_hist_out, output_wrf, input_wrf |
|---|
| 100 | med_hist_out : opening sstout_d01_000000 for writing. 86 |
|---|
| 101 | I think the "86" should be "0" |
|---|
| 102 | output_wrf: fid,filestate = 2 65 |
|---|
| 103 | I think the "65" should be "0" |
|---|
| 104 | input_wrf: fid,filestate = 3 804370368 |
|---|
| 105 | I think the "804370368" should be something else... |
|---|
| 106 | * Find out why one new message now appears in stdout (weird). |
|---|
| 107 | This happens with a "no-esmf" build and with an "esmf" build. |
|---|
| 108 | INPUT LANDUSE = USGS |
|---|
| 109 | LANDUSE TYPE = USGS FOUND 24 CATEGORIES 2 SEASONS WATER CATEGORY = 16 SNOW CATEGORY = 24 |
|---|
| 110 | * Replace hand-coded checks of "rc" with use of new ESMF error handler to |
|---|
| 111 | streamline code. |
|---|
| 112 | See /loquat2/hender/Tasks/WRF_ESMF/ESMF_FieldFromUserEx.F90 |
|---|
| 113 | See /loquat2/hender/Tasks/WRF_ESMF/UserCodeMod.F90 |
|---|
| 114 | * See if "#ifndef ESMFIO" hack can be removed from share/input_wrf.F. |
|---|
| 115 | * Verify that findSymbol.rb generates module_symbols.F90 as claimed |
|---|
| 116 | in the comment block in external/io_esmf/module_symbols_util.F90. |
|---|
| 117 | Update comments if needed. |
|---|
| 118 | * Upgrade findSymbol.rb to track all usage starting at @old_module |
|---|
| 119 | and exclude any symbols that are not found in the use-tree. |
|---|
| 120 | * Better yet, get rid of external/*/module_symbols_util.F90 altogether |
|---|
| 121 | as encapsulation moves to module_domain. |
|---|
| 122 | * Rip out WRF_CHEM from set_timekeeping.F and test... |
|---|
| 123 | + Upgrade to ESMF 2.2.2r+ |
|---|
| 124 | - Add an ESMF_LOG_NONE option to the "defaultLogType" argument |
|---|
| 125 | of ESMF_Initialize() to turn off ESMF's default error logging. |
|---|
| 126 | - Add an ESMF_KEEPMPI option to the "terminationflag" argument |
|---|
| 127 | of ESMF_Finalize() to allow ESMF finalization without MPI |
|---|
| 128 | shutdown. Then clean up the current shutdown mess. |
|---|
| 129 | + Documentation: |
|---|
| 130 | - General description of and guidelines for coupling WRF with another |
|---|
| 131 | ESMF component. |
|---|
| 132 | X Description of WRF-CPL-SST "demo" |
|---|
| 133 | X Description of SST and CPL demo components |
|---|
| 134 | * Sequence diagram of component interactions |
|---|
| 135 | X Limitations of demo |
|---|
| 136 | * How to extend the demo |
|---|
| 137 | + Testing |
|---|
| 138 | - Add WRF-CPL-SST tests to regtest.csh. |
|---|
| 139 | * Generate jun01 sst warming data set and work with Dave to add new |
|---|
| 140 | "ESMF_SST" tests to regtest.csh. |
|---|
| 141 | |
|---|