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 | |
---|