7 WRF-ESMF is still new and experimental and has many limitations. Many of
8 these are mentioned in the task list that follows.
13 The "ESMF" referred to below is version 2.2.0rp1.
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
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?
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
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
66 * Numerous tasks here, not really a "WRF-ESMF" issue, but related...
67 Will there be CF conventions for startTime, stopTime, timeStep,
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
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
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
87 * ESMF cannot handle "extra" rows-columns implied by horizontal
88 staggering for regional models like WRF. Upgrade once ESMF supports
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
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...
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.
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
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
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.
129 - General description of and guidelines for coupling WRF with another
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
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).