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