source: lmdz_wrf/WRFV3/external/io_phdf5/INSTALL.htm @ 1

Last change on this file since 1 was 1, checked in by lfita, 10 years ago
  • -- --- Opening of the WRF+LMDZ coupling repository --- -- -

WRF: version v3.3
LMDZ: version v1818

More details in:

  • Property svn:executable set to *
File size: 47.7 KB
Line 
1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head>
2<meta http-equiv="Content-Language" content="en-us">
3<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
4<meta name="ProgId" content="FrontPage.Editor.Document">
5<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"><title>To integrate HDF5</title></head><body><big><big><b>Build and Install the HDF5-WRF IO Module</b></big></big><br>
6<br>
7There are two HDF5 WRF IO modules, <i>sequential</i> and <i>parallel.</i>  The either or both modules can be configured as optional IO modules for WRF.<br>
8<br>
9The sequential HDF module (<i>io_hdf5</i>) uses the serial HDF5 library.  The parallel
10HDF module (<i>io_phdf5</i>) uses parallel HDF5 (which requires MPI-IO).<br>
11<br>
12The installation for the two modules is similar.<br>
13<br>
14<big><b>Prerequisites</b></big><br>
15<br>
16<b>WRF 1.3</b><br>
17<br>
18The HDF5 WRF IO modules require Version 1.3 of WRF.  Information and downloads are available at:<br>
19 
20<blockquote><a href="http://www.mmm.ucar.edu/wrf/users/user_main.html">http://www.mmm.ucar.edu/wrf/users/user_main.html</a><br>
21</blockquote>
22<br>
23<b>HDF5-1.6 .2 or later</b><br>
24<br>
25The HDF5 WRF IO modules require HDF5-1.6.2 or more recent. The parallel HDF5
26WRF module requires parallel HDF5 (which requires MPI IO). <br>
27<br>
28Installing HDF5<br>
29<blockquote>
30  </blockquote>
31<ol>
32  <li>To obtain
33  HDF5, download from to <a href="http://hdf.ncsa.uiuc.edu/HDF5/release/obtain5.html">
34  http://hdf.ncsa.uiuc.edu/HDF5/release/obtain5.html</a>. Install HDF5 according to the instructions. The HDF5 library must have he Fortran 90 interface installed. <br><br>
35 For the sequential WRF module,  SZIP compression can be enabled.  </li>
36  <li>
37For the parallel WRF module, parallel HDF5 must be installed (this requires MPI-IO). <br>
38Set the environment variable PHDF5 = &lt;&lt;path where phdf5 is installed&gt;&gt;.
39 
40   </li>
41
42  <li>For the sequential HDF WRF IO module, either serial or parallel HDF must be installed.<br>
43The HDF library may be installed with the optional SZIP compression enabled. <br>
44Set the environment variable HDF5 = &lt;&lt;path where hdf5 is installed&gt;&gt;.
45 
46  <br>
47  </li>
48</ol>
49<br>
50<big><b>Platforms</b></big><br>
51<p><small><small><font size="5"><small><small>This prototype has been tested
52on a few platforms. The HDF WRF IO modules should work on any platform that
53WRF3.1 and HDF5 support, although the details of the configuration may need
54to be worked out.<br>
55</small></small></font></small></small></p>
56<table cellpadding="2" cellspacing="2" border="1" width="100%">
57  <tbody>
58    <tr>
59      <td valign="top"><b>Module<br>
60      </b></td>
61      <td valign="top"><b>Platforms<br>
62      </b></td>
63      <td valign="top"><b>Notes<br>
64      </b></td>
65    </tr>
66    <tr>
67      <td valign="top">Sequential <br>
68      </td>
69      <td valign="top"><small><small><font size="5"><small><small>
70NCSA IBM P690</small></small></font></small></small>.<br>
71      <small><small><font size="5"><small><small> NCAR IBM SP3 </small></small></font></small></small><br>
72      <small><small><font size="5"><small><small>PC Linux </small></small></font></small></small>with PGI Fortran 90 Compiler, Vers. 4<br>
73      <small><small><font size="5"><small><small>SGI IRIX6.5-64 bi</small></small></font></small></small>t<br>
74      </td>
75      <td valign="top">To date, WRF3.1 does not work on Linux with PGF, version 5.<br>
76      </td>
77    </tr>
78    <tr>
79      <td valign="top">Parallel<br>
80      </td>
81      <td valign="top"><small><small><font size="5"><small><small>
82NCSA IBM P690</small></small></font></small></small>.<br>
83
84      <small><small><font size="5"><small><small> NCAR IBM SP3 </small></small></font></small></small><br>
85      </td>
86      <td valign="top"><br>
87      </td>
88    </tr>
89  </tbody>
90</table>
91<br>
92<br>
93<big><b>Installation of the HDF5 WRF IO Modules</b></big><br>
94<br>
95The HDF5 WRF IO modules are used by adding it to a standard WRF configuration.  This process has four main steps<br>
96<ol>
97  <li>Downoad the HDF WRF IO module(s)</li><li>Add the HDF5 WRF IO module(s) as an "extern" module</li>
98
99  <li>Modifying relevant files in the WRF distribution</li>
100  <li>Compile WRF following the usual procedures<br>
101  </li>
102
103</ol>
104The parallel, sequential, or both may be configured.<br>
105<br>
106<b>1. Download the WRD-HDF5 IO modules</b><br>
107<br>
108The HDF WRF IO modules are available from:<br>
109<ul>
110  <li>sequential: <a href="ftp://ftp.ncsa.uiuc.edu/HDF/pub/outgoing/wrf-hdf5-modules/io_hdf5.tar">
111    ftp://ftp.ncsa.uiuc.edu/HDF/pub/outgoing/wrf-hdf5-modules/io_hdf5.tar</a></li>
112  <li>parallel: 
113    <a href="ftp://ftp.ncsa.uiuc.edu/HDF/pub/outgoing/wrf-hdf5-modules/io_phdf5.tar">
114    ftp://ftp.ncsa.uiuc.edu/HDF/pub/outgoing/wrf-hdf5-modules/io_phdf5.tar</a><br>
115  </li>
116</ul>
117<blockquote><p></p>
118</blockquote>
119<p><b><small>
120    <font size="4"><small>2. Add WRF-HDF5 IO module(s) to the WRF source</small></font></small></b></p>
121
122   
123<p>
124    The HDF5 WRF IO modules are added as sub-directories in the 'external' directory of the WRF source.<br>
125</p>
126<blockquote><blockquote>
127   
128   
129    <p> cd external;<br>
130tar xvf io_hdf5.tar<br>
131tar xvf io_phdf5.tar<br>
132    </p>
133</blockquote></blockquote>
134
135<p>
136  </p>
137
138<table cellpadding="2" cellspacing="2" border="1" width="90%" align="center">
139
140
141    <tbody>
142      <tr>
143        <td valign="top">contents of the sequential HDF WRF IO module:<br>
144      <br>
145  ./io_hdf5<br>  ./io_hdf5/wrf-hdf5.F90<br>  ./io_hdf5/wrf_status_codes.h<br>  ./io_hdf5/Makefile<br>  ./io_hdf5/wrf-hdf5attr.F90<br>  ./io_hdf5/wrf-hdf5support.F90<br>  ./io_hdf5/wrf_io_flags.h<br>
146        </td>
147      </tr>
148    </tbody>
149 
150</table>
151
152
153<br>
154
155<br>
156
157
158 
159<table cellpadding="2" cellspacing="2" border="1" width="90%" align="center">
160
161
162    <tbody>
163      <tr>
164        <td valign="top">contents of the sequential HDF WRF IO module:<br>
165      <br>
166  ./io_phdf5/<br>  ./io_phdf5/Makefile<br>  ./io_phdf5/wrf_status_codes.h<br>  ./io_phdf5/wrf-phdf5attr.F90<br>  ./io_phdf5/wrf-phdf5support.F90<br>  ./io_phdf5/wrf_io_flags.h<br>  ./io_phdf5/wrf-phdf5.F90<br>
167        </td>
168      </tr>
169    </tbody>
170 
171</table>
172
173
174<br>
175
176
177<p><b><small><small><font size="5"><small><small>Design note:</small></small></font></small></small></b></p>
178
179<p><small><small><font size="5"><small><small>In the sequential HDF5 WRF
180IO modules, arrays larger thatn 8096 bytes are compressed by default. In
181this case, the HDF5 dataset is configured to use the shuffle filter plus deflate
182(GZIP) compression, with compression level 6.  <br>
183</small></small></font></small></small></p>
184
185
186<p><small><small><font size="5"><small><small>In the current prototype, there is no option in the namelist for
187users to change this default. To modify this behavior, it is necessary to modify the source code.</small></small></font><br>
188<font size="5"><small><small><br>
189<i>To disable compression:</i></small></small></font></small></small></p>
190
191
192
193<blockquote>
194  <p><small><font size="5"><small><small>Edit</small></small></font><font size="4"><small> the file '</small></font></small><small><font size="4"><small>wrf/external/io_hdf5/</small></font></small><small><font size="4"><small>wrf-hdf5.F90</small></font></small><small><font size="4"><small>'<br>
195</small></font></small></p>
196  <p><small><font size="4"><small>Comment out the lines: </small></font></small></p>
197  <p><small><font face="Arial" size="4"><small>           
198call h5pset_shuffle_f(crp_list,hdf5err) </small></font></small></p>
199  <p><small><font size="4"><small>               
200and </small></font></small></p>
201  <p><small><font size="4" face="Arial"><small>           
202call h5pset_deflate_f(crp_list,6,hdf5err) </small></font></small></p>
203</blockquote>
204
205
206
207
208
209
210
211
212
213<p><i><small><small><font size="5"><small><small>To use  SZIP compression instead:</small></small></font></small></small></i></p>
214
215
216<blockquote>
217  <p><small><font size="4"><small>For SZIP information and downloads, see the szip at 
218<a href="http://hdf.ncsa.uiuc.edu/doc_resource/SZIP/">
219http://hdf.ncsa.uiuc.edu/doc_resource/SZIP/</a>.<br>
220</small></font></small></p>
221  <p><small><font size="4"><small>Edit the file 'wrf/external/io_hdf5/</small></font></small><small><font size="4"><small>wrf-hdf5.F90'.</small></font></small></p>
222  <p><small><font size="4"><small>Comment out the lines: </small></font></small></p>
223  <p><small><font face="Arial" size="4"><small>           
224call h5pset_shuffle_f(crp_list,hdf5err) </small></font></small></p>
225  <p><small><font size="4"><small>               
226and </small></font></small></p>
227  <p><small><font size="4" face="Arial"><small>           
228call h5pset_deflate_f(crp_list,6,hdf5err) </small></font></small></p>
229  <p><small><font size="4"><small>Uncomment the line:
230</small></font></small></p>
231  <p><small><font size="4"><small>             
232<font face="Arial">call
233h5pset_szip_f(crp_list,H5_SZIP_AK13_OM_F+H5_SZIP_NN_OM_F,8,hdf5err)</font><br>
234</small></font></small></p>
235  <p><small><font size="4"><small>Change the value
236of the parameters in the function <i>h5pset_szip_f</i> if necessary.</small></font></small>  See the SZIP documentation for more information about the parameters.<br>
237  </p>
238</blockquote>
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256<p><br>
257</p>
258<p><font size="4"><b><small>3. Modifications to WRF files</small></b><br>
259</font></p>
260
261<p><font size="4"><small>In order to add a new IO module to WRF,  several
262files in the WRF source code must be changed. The following files need to be
263modified:<br>
264</small></font></p>
265<table cellpadding="2" cellspacing="2" border="1" width="50%" align="center">
266  <tbody>
267    <tr>
268      <td valign="top">WRFV1/configure<br>
269WRFV1/Registry/Registry<br>
270WRFV1/arch/Config.pl<br>
271WRFV1/arch/configure.defaults<br>
272WRFV1/frame/md_calls.m4<br>
273WRFV1/frame/module_io.F<br>
274WRFV1/share/module_io_wrf.F<br>
275WRFV1/external/Makefile<br>
276      </td>
277    </tr>
278  </tbody>
279</table>
280<br>
281The exact changes depend on how WRF has been configured on the sytsem.  <br>
282<p>Examples of the changes to the files of the WRF1.3 distribution are available at:<br>
283</p>
284<p> 
285   
286    <a href="ftp://ftp.ncsa.uiuc.edu/HDF/pub/outgoing/wrf-hdf5-modules">
287    ftp://ftp.ncsa.uiuc.edu/HDF/pub/outgoing/wrf-hdf5-modules</a><br>
288</p>
289
290<blockquote>
291  </blockquote>
292<p><i><b>WRF configuration files<br>
293</b></i>
294</p>
295<p>The 'configure' file must be updated to add the HDF5 and PHDF5 variables.<br>
296</p>
297<table cellpadding="2" cellspacing="2" border="1" align="center" width="90%">
298  <tbody>
299    <tr>
300      <td valign="top">*** ../WRFV1/configure   Thu Feb  6 13:10:56 2003<br>
301--- ./WRFV1-with-hdf/configure  Thu May 13 12:18:40 2004<br>
302***************<br>
303*** 206,211 ****<br>
304--- 206,223 ----<br>
305    echo "Will configure for use without NetCDF"<br>
306  fi<br>
307  <br>
308+ if [ -n "$HDF5" ] ; then<br>
309+   echo "Will use HDF5 in dir: $HDF5"<br>
310+ else<br>
311+   echo "Will configure for use without HDF5"<br>
312+ fi<br>
313+ <br>
314+ if [ -n "$PHDF5" ] ; then<br>
315+   echo "Will use PHDF5 in dir: $PHDF5"<br>
316+ else<br>
317+   echo "Will configure for use without PHDF5"<br>
318+ fi<br>
319+ <br>
320  # if the uname command exists, give it a shot and see if<br>
321  # we can narrow the choices; otherwise, spam 'em<br>
322  os="ARCH"<br>
323***************<br>
324*** 227,232 ****<br>
325  <br>
326  # Found perl, so proceed with configuration<br>
327  if test -n "$PERL" ; then<br>
328!   $PERL arch/Config.pl -perl=$PERL -netcdf=$NETCDF -os=$os -mach=$mach<br>
329  fi<br>
330  <br>
331--- 239,244 ----<br>
332  <br>
333  # Found perl, so proceed with configuration<br>
334  if test -n "$PERL" ; then<br>
335!   $PERL arch/Config.pl -perl=$PERL -netcdf=$NETCDF -hdf5=$HDF5 -phdf5=$PHDF5 -os=$os -mach=$mach<br>
336  fi<br>
337  <br>
338      </td>
339    </tr>
340  </tbody>
341</table>
342<p>The file 'Registry/Registry' must be updated to add the HDF IO modules (<i>io_hdf5</i> and <i>io_phdf5</i>).<br>
343</p>
344<table cellpadding="2" cellspacing="2" border="1" width="90%" align="center">
345  <tbody>
346    <tr>
347      <td valign="top">*** ../WRFV1/Registry/Registry   Wed Feb 12 09:28:28 2003<br>
348--- ./WRFV1-with-hdf/Registry/Registry  Thu May 13 12:18:39 2004<br>
349***************<br>
350*** 738,745 ****<br>
351  # Four placeholders for additional packages (we can go beyond zzz <br>
352  # but that will entail modifying frame/module_io.F and frame/md_calls.m4)<br>
353  # Please note these are placeholders; HDF has not been implemented yet.<br>
354! package   io_hdf      io_form_restart==3                     -             -<br>
355! package   io_xxx      io_form_restart==4                     -             -<br>
356  package   io_yyy      io_form_restart==5                     -             -<br>
357  package   io_zzz      io_form_restart==6                     -             -<br>
358                                                  <br>
359--- 738,745 ----<br>
360  # Four placeholders for additional packages (we can go beyond zzz <br>
361  # but that will entail modifying frame/module_io.F and frame/md_calls.m4)<br>
362  # Please note these are placeholders; HDF has not been implemented yet.<br>
363! package   io_hdf5     io_form_restart==3                     -             -<br>
364! package   io_phdf5    io_form_restart==4                     -             -<br>
365  package   io_yyy      io_form_restart==5                     -             -<br>
366  package   io_zzz      io_form_restart==6                     -             -<br>
367                                                 <br>
368      </td>
369    </tr>
370  </tbody>
371</table>
372<p>The file 'arch/Config.pl' needs to be changed to add the code to use the HDF5 and PHDF5 variables.<br>
373</p>
374<table cellpadding="2" cellspacing="2" border="1" width="90%" align="center">
375  <tbody>
376    <tr>
377      <td valign="top">*** ../WRFV1/arch/Config.pl      Fri Mar 16 12:06:46 2001<br>
378--- ./WRFV1-with-hdf/arch/Config.pl     Thu May 13 12:18:37 2004<br>
379***************<br>
380*** 7,12 ****<br>
381--- 7,14 ----<br>
382  <br>
383  $sw_perl_path = perl ;<br>
384  $sw_netcdf_path = "" ;<br>
385+ $sw_hdf5_path ="";<br>
386+ $sw_phdf5_path=""; <br>
387  $sw_os = "ARCH" ;           # ARCH will match any<br>
388  $sw_mach = "ARCH" ;         # ARCH will match any<br>
389  <br>
390***************<br>
391*** 20,25 ****<br>
392--- 22,35 ----<br>
393    {<br>
394      $sw_netcdf_path = substr( $ARGV[0], 8 ) ;<br>
395    }<br>
396+   if ( substr( $ARGV[0], 1, 5 ) eq "hdf5=" )<br>
397+   {<br>
398+     $sw_hdf5_path = substr( $ARGV[0], 6 ) ;<br>
399+   }<br>
400+   if ( substr( $ARGV[0], 1, 6 ) eq "phdf5=" )<br>
401+   {<br>
402+     $sw_phdf5_path = substr( $ARGV[0], 7 ) ;<br>
403+   }<br>
404    if ( substr( $ARGV[0], 1, 3 ) eq "os=" )<br>
405    {<br>
406      $sw_os = substr( $ARGV[0], 4 ) ;<br>
407***************<br>
408*** 89,94 ****<br>
409--- 99,106 ----<br>
410    {<br>
411      $_ =~ s/CONFIGURE_PERL_PATH/$sw_perl_path/g ;<br>
412      $_ =~ s/CONFIGURE_NETCDF_PATH/$sw_netcdf_path/g ;<br>
413+     $_ =~ s/CONFIGURE_HDF5_PATH/$sw_hdf5_path/g ;<br>
414+     $_ =~ s/CONFIGURE_PHDF5_PATH/$sw_phdf5_path/g ;<br>
415      if ( $sw_netcdf_path ) <br>
416        { $_ =~ s/CONFIGURE_WRFIO_NF/wrfio_nf/g ;<br>
417        $_ =~ s:CONFIGURE_NETCDF_FLAG:-DNETCDF: ;<br>
418***************<br>
419*** 99,104 ****<br>
420--- 111,140 ----<br>
421        $_ =~ s:CONFIGURE_NETCDF_FLAG::g ;<br>
422        $_ =~ s:CONFIGURE_NETCDF_LIB_PATH::g ;<br>
423         }<br>
424+ <br>
425+     if ( $sw_hdf5_path ) <br>
426+ <br>
427+       { $_ =~ s/CONFIGURE_WRFIO_HDF5/wrfio_hdf5/g ;<br>
428+       $_ =~ s:CONFIGURE_HDF5_FLAG:-DHDF5: ;<br>
429+       $_ =~ s:CONFIGURE_HDF5_LIB_PATH:-L../external/io_hdf5 -lwrfio_hdf5 -L$sw_hdf5_path/lib
430-lhdf5_fortran -lhdf5 -lm -lz -L$sw_hdf5_path/lib -lsz: ;<br>
431+        }<br>
432+     else                   <br>
433+       { $_ =~ s/CONFIGURE_WRFIO_HDF5//g ;<br>
434+       $_ =~ s:CONFIGURE_HDF5_FLAG::g ;<br>
435+       $_ =~ s:CONFIGURE_HDF5_LIB_PATH::g ;<br>
436+        }<br>
437+ <br>
438+     if ( $sw_phdf5_path ) <br>
439+ <br>
440+       { $_ =~ s/CONFIGURE_WRFIO_PHDF5/wrfio_phdf5/g ;<br>
441+       $_ =~ s:CONFIGURE_PHDF5_FLAG:-DPHDF5: ;<br>
442+       $_ =~ s:CONFIGURE_PHDF5_LIB_PATH:-L../external/io_phdf5 -lwrfio_phdf5 -L$sw_phdf5_path/lib -lhdf5_fortran -lhdf5 -lm -lz: ;<br>
443+        }<br>
444+     else                   <br>
445+       { $_ =~ s/CONFIGURE_WRFIO_PHDF5//g ;<br>
446+       $_ =~ s:CONFIGURE_PHDF5_FLAG::g ;<br>
447+       $_ =~ s:CONFIGURE_PHDF5_LIB_PATH::g ;<br>
448+        }<br>
449      @machopts = ( @machopts, $_ ) ;<br>
450    }<br>
451    if ( substr( $_, 0, 5 ) eq "#ARCH" &amp;&amp; $latchon == 0 )<br>
452      <br>
453      </td>
454    </tr>
455  </tbody>
456</table>
457<p>The file 'arch/configure.defauts' must be edited to reflect the configuration of the current system.<br>
458</p>
459<table cellpadding="2" cellspacing="2" border="1" width="90%" align="center">
460  <tbody>
461    <tr>
462      <td valign="top">*** ../WRFV1/arch/configure.defaults     Fri Mar 28 14:08:48 2003<br>
463--- ./WRFV1-with-hdf/arch/configure.defaults    Thu May 13 12:18:40 2004<br>
464***************<br>
465*** 732,758 ****<br>
466  <br>
467  <br>
468  ###########################################################<br>
469! #ARCH AIX DM          (RSL-IO, IBM-MPI)<br>
470  #<br>
471  DMPARALLEL      =       1<br>
472! SFC             =       xlf90_r<br>
473  SCC             =       xlc_r<br>
474! FC              =       mpxlf90_r<br>
475  CC              =       mpcc_r<br>
476  CFLAGS          =       -DNOUNDERSCORE -DWRF_RSL_IO  -I../external/RSL/RSL -DDM_PARALLEL  \<br>
477                          -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC)<br>
478! FCOPTIM         =       -O2 -qarch=auto -qmaxmem=32676<br>
479  FCDEBUG         =       # -g -qfullpath<br>
480  FCBASEOPTS      =       -qspill=20000 $(FCDEBUG)<br>
481  FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS)<br>
482! INCLUDE_MODULES =       -I../external/io_netcdf -I../external/io_int  \<br>
483                          -I../frame -I../share -I../phys -I../inc<br>
484  EXTRAMODULES    =       <br>
485  ARCHFLAGS       =       -DWRF_RSL_IO -DRSL -DDM_PARALLEL -DIWORDSIZE=4 -DRWORDSIZE=4 \<br>
486!                         -DLWORDSIZE=4 CONFIGURE_NETCDF_FLAG -DTRIEDNTRUE -DONLY_WRFMODEL_IO -DINTIO<br>
487  PERL            =       perl<br>
488  REGISTRY        =       Registry<br>
489! LIB             =       CONFIGURE_NETCDF_LIB_PATH -L../external/RSL/RSL -lrsl -lmass \<br>
490                          -L../external/io_int -lwrfio_int  \<br>
491                        ../frame/internal_header_util.o ../frame/pack_utils.o<br>
492  LDFLAGS         =     -bmaxstack:256000000<br>
493--- 732,823 ----<br>
494  <br>
495  <br>
496  ###########################################################<br>
497! #ARCH AIX DM          (RSL-IO, IBM-MPI)(PARALLEL HDF5)<br>
498  #<br>
499  DMPARALLEL      =       1<br>
500! SFC             =       xlf90_r <br>
501  SCC             =       xlc_r<br>
502! FC              =       mpxlf90_r <br>
503  CC              =       mpcc_r<br>
504  CFLAGS          =       -DNOUNDERSCORE -DWRF_RSL_IO  -I../external/RSL/RSL -DDM_PARALLEL  \<br>
505                          -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC)<br>
506! FCOPTIM         =       -O1 -qarch=auto -qmaxmem=-1<br>
507! #FCOPTIM         =       -O2 <br>
508! FCDEBUG         =       -g -qfullpath<br>
509! FCBASEOPTS      =       -qspill=20000 $(FCDEBUG)<br>
510! FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS)<br>
511! INCLUDE_MODULES =       -I../external/io_netcdf -I../external/io_phdf5 -I../external/io_int  \<br>
512!                         -I../frame -I../share -I../phys -I../inc<br>
513! EXTRAMODULES    =       <br>
514! ARCHFLAGS       =       -DWRF_RSL_IO -DRSL -DDM_PARALLEL -DIWORDSIZE=4 -DRWORDSIZE=4 \<br>
515!                         -DLWORDSIZE=4 CONFIGURE_NETCDF_FLAG CONFIGURE_PHDF5_FLAG -DTRIEDNTRUE -DONLY_WRFMODEL_IO -DINTIO<br>
516! PERL            =       perl<br>
517! REGISTRY        =       Registry<br>
518! LIB             =       CONFIGURE_NETCDF_LIB_PATH CONFIGURE_PHDF5_LIB_PATH -L../external/RSL/RSL -lrsl -lmass \<br>
519!                         -L../external/io_int -lwrfio_int  \<br>
520!                       ../frame/internal_header_util.o ../frame/pack_utils.o<br>
521! LDFLAGS         =     -bmaxstack:256000000 -bmaxdata:0x80000000<br>
522! CPP           =       /lib/cpp<br>
523! CPPFLAGS      =       -I$(LIBINCLUDE) -C -P $(ARCHFLAGS) -I../external/RSL/RSL `cat ../inc/dm_comm_cpp_flags`<br>
524! MAX_DOMAINS     =       4<br>
525! MAX_PROC        =       1024<br>
526! AR              =       ar ru<br>
527! M4              =       m4 -B 8000<br>
528! RANLIB          =       ranlib<br>
529! <br>
530! externals : CONFIGURE_WRFIO_NF CONFIGURE_WRFIO_PHDF5 ../external/RSL/RSL/librsl.a wrfio_int<br>
531!       ( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; cat ../external/RSL/gen_comms.c
532&gt;&gt; ../tools/gen_comms.c ;  \<br>
533!           /bin/cp module_dm_warning module_dm.F ; cat ../external/RSL/module_dm.F &gt;&gt; module_dm.F )<br>
534! <br>
535! wrfio_nf : <br>
536!       ( cd ../external/io_netcdf ; make NETCDFPATH=CONFIGURE_NETCDF_PATH FC="$(SFC)
537$(FCDEBUG) -qarch=auto -qzerosize" ; /bin/cp wrf_io_flags.h wrf_status_codes.h
538../../inc )<br>
539! <br>
540! wrfio_phdf5 : <br>
541!       ( cd ../external/io_phdf5 ; make PHDF5PATH=CONFIGURE_PHDF5_PATH FC="$(FC)
542$(FCDEBUG) -qarch=auto -qfree=F90 -qzerosize" ; /bin/cp wrf_io_flags.h wrf_status_codes.h
543../../inc )<br>
544! <br>
545! wrfio_int : <br>
546!       ( cd ../external/io_int ; \<br>
547!           make CC=$(CC) FC="$(SFC) $(FCDEBUG) -qarch=auto -qzerosize" all diffwrf )<br>
548! <br>
549! ../external/RSL/RSL/librsl.a :<br>
550!       ( cd ../external/RSL/RSL ; make MAX_DOMAINS=$(MAX_DOMAINS) MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST sp2 )<br>
551! <br>
552! # compile these without high optimization to speed compile<br>
553! mediation_force_domain.o : mediation_force_domain.F<br>
554! mediation_interp_domain.o : mediation_interp_domain.F<br>
555! <br>
556! mediation_force_domain.o \<br>
557! mediation_interp_domain.o :<br>
558!       $(RM) $@<br>
559!       sed /\!.\*\'/s/\'//g $*.F &gt; $*.b<br>
560!       $(CPP) -I../inc $(CPPFLAGS) $*.b  &gt; $*.f<br>
561!       $(RM) $*.b<br>
562!       $(FC) -c $(FCBASEOPTS) $(MODULE_DIRS) $*.f<br>
563! <br>
564! ###########################################################<br>
565! #ARCH AIX DM          (RSL-IO, IBM-MPI)(SERIAL HDF5)<br>
566! #<br>
567! DMPARALLEL      =       1<br>
568! SFC             =       xlf90_r <br>
569! SCC             =       xlc_r<br>
570! FC              =       mpxlf90_r <br>
571! CC              =       mpcc_r<br>
572! CFLAGS          =       -DNOUNDERSCORE -DWRF_RSL_IO  -I../external/RSL/RSL -DDM_PARALLEL  \<br>
573!                         -DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC)<br>
574! FCOPTIM         =       -O1 -qarch=auto -qmaxmem=32676<br>
575! #FCOPTIM         =       -O2 <br>
576  FCDEBUG         =       # -g -qfullpath<br>
577  FCBASEOPTS      =       -qspill=20000 $(FCDEBUG)<br>
578  FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS)<br>
579! INCLUDE_MODULES =       -I../external/io_netcdf -I../external/io_hdf5 -I../external/io_int  \<br>
580                          -I../frame -I../share -I../phys -I../inc<br>
581  EXTRAMODULES    =       <br>
582  ARCHFLAGS       =       -DWRF_RSL_IO -DRSL -DDM_PARALLEL -DIWORDSIZE=4 -DRWORDSIZE=4 \<br>
583!                         -DLWORDSIZE=4 CONFIGURE_NETCDF_FLAG CONFIGURE_HDF5_FLAG -DTRIEDNTRUE -DONLY_WRFMODEL_IO -DINTIO<br>
584  PERL            =       perl<br>
585  REGISTRY        =       Registry<br>
586! LIB             =       CONFIGURE_NETCDF_LIB_PATH CONFIGURE_HDF5_LIB_PATH  \<br>
587!                         -L../external/RSL/RSL -lrsl -lmass \<br>
588                          -L../external/io_int -lwrfio_int  \<br>
589                        ../frame/internal_header_util.o ../frame/pack_utils.o<br>
590  LDFLAGS         =     -bmaxstack:256000000<br>
591***************<br>
592*** 764,776 ****<br>
593  M4              =       m4 -B 8000<br>
594  RANLIB          =       ranlib<br>
595  <br>
596! externals : CONFIGURE_WRFIO_NF ../external/RSL/RSL/librsl.a wrfio_int<br>
597        ( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; cat ../external/RSL/gen_comms.c
598&gt;&gt; ../tools/gen_comms.c ;  \<br>
599            /bin/cp module_dm_warning module_dm.F ; cat ../external/RSL/module_dm.F &gt;&gt; module_dm.F )<br>
600  <br>
601  wrfio_nf : <br>
602        ( cd ../external/io_netcdf ; make NETCDFPATH=CONFIGURE_NETCDF_PATH FC="$(SFC)
603$(FCDEBUG) -qarch=auto -qzerosize" ; /bin/cp wrf_io_flags.h wrf_status_codes.h
604../../inc )<br>
605  <br>
606  wrfio_int : <br>
607        ( cd ../external/io_int ; \<br>
608            make CC=$(CC) FC="$(SFC) $(FCDEBUG) -qarch=auto -qzerosize" all diffwrf )<br>
609--- 829,844 ----<br>
610  M4              =       m4 -B 8000<br>
611  RANLIB          =       ranlib<br>
612  <br>
613! externals : CONFIGURE_WRFIO_NF CONFIGURE_WRFIO_HDF5 ../external/RSL/RSL/librsl.a wrfio_int<br>
614        ( /bin/cp ../tools/gen_comms_warning ../tools/gen_comms.c ; cat ../external/RSL/gen_comms.c
615&gt;&gt; ../tools/gen_comms.c ;  \<br>
616            /bin/cp module_dm_warning module_dm.F ; cat ../external/RSL/module_dm.F &gt;&gt; module_dm.F )<br>
617  <br>
618  wrfio_nf : <br>
619        ( cd ../external/io_netcdf ; make NETCDFPATH=CONFIGURE_NETCDF_PATH FC="$(SFC)
620$(FCDEBUG) -qarch=auto -qzerosize" ; /bin/cp wrf_io_flags.h wrf_status_codes.h
621../../inc )<br>
622  <br>
623+ wrfio_hdf5 : <br>
624+       ( cd ../external/io_hdf5 ; make HDF5PATH=CONFIGURE_HDF5_PATH FC="$(SFC)
625$(FCDEBUG) -qarch=auto -qfree=F90 -qzerosize" ; /bin/cp wrf_io_flags.h wrf_status_codes.h
626../../inc )<br>
627+ <br>
628  wrfio_int : <br>
629        ( cd ../external/io_int ; \<br>
630            make CC=$(CC) FC="$(SFC) $(FCDEBUG) -qarch=auto -qzerosize" all diffwrf )<br>
631***************<br>
632*** 1650,1663 ****<br>
633  FCBASEOPTS      =       -byteswapio -Ktrap=fp -Mfree -tp p6 $(FCDEBUG)<br>
634  FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS)<br>
635  ARCHFLAGS       =       -DDEREF_KLUDGE -DIO_DEREF_KLUDGE -DIWORDSIZE=4 -DRWORDSIZE=4 -DLWORDSIZE=4 \<br>
636!                          CONFIGURE_NETCDF_FLAG \<br>
637                          -DTRIEDNTRUE -DONLY_WRFMODEL_IO<br>
638! INCLUDE_MODULES =       -module ../main -I../external/io_netcdf -I../external/io_int \<br>
639                          -I../frame -I../share -I../phys -I../inc<br>
640  EXTRAMODULES    =       <br>
641  PERL            =       perl<br>
642  REGISTRY        =       Registry<br>
643! LIB             =       CONFIGURE_NETCDF_LIB_PATH \<br>
644                        ../frame/internal_header_util.o ../frame/pack_utils.o<br>
645  LDFLAGS         =<br>
646  CPP             =       /lib/cpp<br>
647--- 1718,1731 ----<br>
648  FCBASEOPTS      =       -byteswapio -Ktrap=fp -Mfree -tp p6 $(FCDEBUG)<br>
649  FCFLAGS         =       $(FCOPTIM) $(FCBASEOPTS)<br>
650  ARCHFLAGS       =       -DDEREF_KLUDGE -DIO_DEREF_KLUDGE -DIWORDSIZE=4 -DRWORDSIZE=4 -DLWORDSIZE=4 \<br>
651!                          CONFIGURE_NETCDF_FLAG CONFIGURE_HDF5_FLAG\<br>
652                          -DTRIEDNTRUE -DONLY_WRFMODEL_IO<br>
653! INCLUDE_MODULES =       -module ../main -I../external/io_netcdf -I../external/io_hdf5 -I../external/io_int \<br>
654                          -I../frame -I../share -I../phys -I../inc<br>
655  EXTRAMODULES    =       <br>
656  PERL            =       perl<br>
657  REGISTRY        =       Registry<br>
658! LIB             =       CONFIGURE_NETCDF_LIB_PATH CONFIGURE_HDF5_LIB_PATH \<br>
659                        ../frame/internal_header_util.o ../frame/pack_utils.o<br>
660  LDFLAGS         =<br>
661  CPP             =       /lib/cpp<br>
662***************<br>
663*** 1666,1672 ****<br>
664  M4              =       m4<br>
665  RANLIB          =       ranlib<br>
666  <br>
667! externals : CONFIGURE_WRFIO_NF wrfio_int<br>
668        ( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F &gt;&gt; module_dm.F )<br>
669  <br>
670  wrfio_nf : <br>
671--- 1734,1740 ----<br>
672  M4              =       m4<br>
673  RANLIB          =       ranlib<br>
674  <br>
675! externals : CONFIGURE_WRFIO_NF CONFIGURE_WRFIO_HDF5 wrfio_int<br>
676        ( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F &gt;&gt; module_dm.F )<br>
677  <br>
678  wrfio_nf : <br>
679***************<br>
680*** 1675,1680 ****<br>
681--- 1743,1754 ----<br>
682            FFLAGS='$(FCFLAGS) -ICONFIGURE_NETCDF_PATH/include' ; \<br>
683            /bin/cp wrf_io_flags.h wrf_status_codes.h ../../inc )<br>
684  <br>
685+ wrfio_hdf5 : <br>
686+       ( cd ../external/io_hdf5 ; \<br>
687+           make HDF5PATH=CONFIGURE_HDF5_PATH FC=$(FC) TRADFLAG="-traditional" \<br>
688+           FFLAGS='$(FCFLAGS) -ICONFIGURE_HDF5_PATH/lib' ; \<br>
689+           /bin/cp wrf_io_flags.h wrf_status_codes.h ../../inc )<br>
690+ <br>
691  wrfio_int : <br>
692        ( cd ../external/io_int ; \<br>
693            make CC=$(CC) FC="$(SFC) $(FCDEBUG) $(FCBASEOPTS)" \<br>
694      </td>
695    </tr>
696  </tbody>
697</table>
698<p><br>
699
700  </p>
701<blockquote>
702  <ul>
703    </ul><p></p>
704  </blockquote>
705<p><i>Modifications of source code inside WRF</i><b><br>
706</b></p>
707<p>The<i> io_hdf5</i> and/or<i> io_phdf5</i> modules must be added to the WRF source. In addition, the WRF source must be modified in a few places.<br>
708</p>
709<p>The 'frame/md_calls.m4' must be modified to recognize the HDF modules.<br>
710</p>
711<blockquote>
712  </blockquote>
713<table cellpadding="2" cellspacing="2" border="1" width="90%" align="center">
714  <tbody>
715    <tr>
716      <td valign="top">*** ../WRFV1/frame/md_calls.m4   Mon Dec 10 18:10:43 2001<br>
717--- ./WRFV1-with-hdf/frame/md_calls.m4  Thu May 13 12:18:44 2004<br>
718***************<br>
719*** 70,78 ****<br>
720            CALL wrf_dm_bcast_bytes( Status, IWORDSIZE )<br>
721          ENDIF<br>
722  #endif<br>
723! #ifdef HDF<br>
724!       CASE ( IO_HDF   )<br>
725!         CALL ext_hdf_$1_$2_$6_$3$4 ( Hndl, Element, ifelse($6,td,`DateStr,') ifelse($2,var,`Varname,') Data, &amp;<br>
726                                ifelse($4,char,,`locCount, ifelse($1,get,`Outcount,')') Status )<br>
727  #endif<br>
728  #ifdef XXX<br>
729--- 70,99 ----<br>
730            CALL wrf_dm_bcast_bytes( Status, IWORDSIZE )<br>
731          ENDIF<br>
732  #endif<br>
733! #ifdef HDF5<br>
734!       CASE ( IO_HDF5   )<br>
735!         IF ( multi_files(io_form) .OR.  wrf_dm_on_monitor() ) THEN<br>
736!            CALL ext_hdf5_$1_$2_$6_$3$4 ( Hndl, Element, ifelse($6,td,`DateStr,') ifelse($2,var,`Varname,') Data, &amp;<br>
737!                               ifelse($4,char,,`locCount, ifelse($1,get,`Outcount,')') Status )<br>
738!         ENDIF <br>
739!         IF ( .NOT. multi_files(io_form) ) THEN<br>
740!           ifelse($1,get,ifelse($3,integer,`CALL wrf_dm_bcast_bytes( locCount, IWORDSIZE )'))<br>
741!           ifelse($1,get,ifelse($3,integer,`CALL wrf_dm_bcast_bytes( Data, IWORDSIZE*locCount )'))<br>
742!           ifelse($1,get,ifelse($3,real,   `CALL wrf_dm_bcast_bytes( locCount, IWORDSIZE )'))<br>
743!           ifelse($1,get,ifelse($3,real,   `CALL wrf_dm_bcast_bytes( Data, RWORDSIZE*locCount )'))<br>
744!           ifelse($1,get,ifelse($3,logical,`CALL wrf_dm_bcast_bytes( locCount, IWORDSIZE )'))<br>
745!           ifelse($1,get,ifelse($3,logical,`CALL wrf_dm_bcast_bytes( Data, LWORDSIZE*locCount )'))<br>
746!           ifelse($1,get,ifelse($4,char,   `len_of_str = LEN(Data)'))<br>
747!           ifelse($1,get,ifelse($4,char,   `CALL wrf_dm_bcast_bytes( len_of_str, IWORDSIZE )'))<br>
748!           ifelse($1,get,ifelse($4,char,   `CALL wrf_dm_bcast_string( Data, len_of_str )'))<br>
749!           CALL wrf_dm_bcast_bytes( Status, IWORDSIZE )<br>
750!         ENDIF<br>
751!        <br>
752! <br>
753! #endif<br>
754! #ifdef PHDF5<br>
755!       CASE ( IO_PHDF5   )<br>
756!            CALL ext_phdf5_$1_$2_$6_$3$4 ( Hndl, Element, ifelse($6,td,`DateStr,') ifelse($2,var,`Varname,') Data, &amp;<br>
757                                ifelse($4,char,,`locCount, ifelse($1,get,`Outcount,')') Status )<br>
758  #endif<br>
759  #ifdef XXX<br>
760      <br>
761      </td>
762    </tr>
763  </tbody>
764</table>
765<p><br>
766The 'frame/module_io.F' file must be modified to add code to call the HDF5 modules if selected.<br>
767</p>
768<table cellpadding="2" cellspacing="2" border="1" width="90%" align="center">
769  <tbody>
770    <tr>
771      <td valign="top">*** ../WRFV1/frame/module_io.F   Tue Dec  3 14:10:48 2002<br>
772--- ./WRFV1-with-hdf/frame/module_io.F  Thu May 13 12:18:45 2004<br>
773***************<br>
774*** 34,39 ****<br>
775--- 34,48 ----<br>
776  #ifdef NETCDF<br>
777    CALL ext_ncd_ioinit( SysDepInfo, Status )<br>
778  #endif<br>
779+ <br>
780+ #ifdef HDF5<br>
781+   CALL ext_hdf5_ioinit(SysDepInfo, Status)<br>
782+ #endif<br>
783+ <br>
784+ #ifdef PHDF5<br>
785+   CALL ext_phdf5_ioinit(SysDepInfo, Status)<br>
786+ #endif<br>
787+  <br>
788  END SUBROUTINE wrf_ioinit<br>
789  <br>
790  !--- ioexit<br>
791***************<br>
792*** 47,52 ****<br>
793--- 56,70 ----<br>
794  #ifdef NETCDF<br>
795    CALL ext_ncd_ioexit( Status )<br>
796  #endif<br>
797+ <br>
798+ #ifdef HDF5<br>
799+   CALL ext_hdf5_ioexit(Status)<br>
800+ #endif<br>
801+ <br>
802+ #ifdef PHDF5<br>
803+   CALL ext_phdf5_ioexit(Status)<br>
804+ #endif<br>
805+ <br>
806    IF ( use_output_servers() ) CALL ext_quilt_ioexit( Status )<br>
807  END SUBROUTINE<br>
808  <br>
809***************<br>
810*** 134,139 ****<br>
811--- 152,179 ----<br>
812          CALL ext_hdf_open_for_write_begin ( FileName , Comm_compute, Comm_io, SysDepInfo, &amp;<br>
813                                              Hndl , Status )<br>
814  #endif<br>
815+ #ifdef HDF5<br>
816+       CASE ( IO_HDF5   )<br>
817+         IF ( multi_files(io_form) .OR. wrf_dm_on_monitor() ) THEN<br>
818+           IF ( multi_files(io_form) ) THEN<br>
819+             CALL wrf_get_myproc ( myproc )<br>
820+             CALL append_to_filename ( LocFilename , FileName , myproc, 4 )<br>
821+           ELSE<br>
822+             LocFilename = FileName<br>
823+           ENDIF<br>
824+           CALL ext_hdf5_open_for_write_begin ( LocFileName , Comm_compute, Comm_io, SysDepInfo, &amp;<br>
825+                                               Hndl , Status )<br>
826+         ENDIF<br>
827+         IF ( .NOT. multi_files(io_form) ) THEN<br>
828+           CALL wrf_dm_bcast_bytes( Hndl, IWORDSIZE )<br>
829+           CALL wrf_dm_bcast_bytes( Status, IWORDSIZE )<br>
830+         ENDIF<br>
831+ #endif<br>
832+ #ifdef PHDF5<br>
833+       CASE ( IO_PHDF5   )<br>
834+           CALL ext_phdf5_open_for_write_begin ( FileName , Comm_compute, Comm_io, SysDepInfo, &amp;<br>
835+                                               Hndl , Status )<br>
836+ #endif<br>
837  #ifdef XXX<br>
838        CASE ( IO_XXX   )<br>
839          CALL ext_xxx_open_for_write_begin ( FileName , Comm_compute, Comm_io, SysDepInfo, &amp;<br>
840***************<br>
841*** 214,219 ****<br>
842--- 254,270 ----<br>
843        CASE ( IO_HDF   )<br>
844          CALL ext_hdf_open_for_write_commit ( Hndl , Status )<br>
845  #endif<br>
846+ #ifdef HDF5<br>
847+       CASE ( IO_HDF5   )<br>
848+           IF ( multi_files(io_form) .OR. wrf_dm_on_monitor() ) THEN<br>
849+             CALL ext_hdf5_open_for_write_commit ( Hndl , Status )<br>
850+           ENDIF<br>
851+           IF ( .NOT. multi_files(io_form) ) CALL wrf_dm_bcast_bytes( Status, IWORDSIZE )<br>
852+ #endif<br>
853+ #ifdef PHDF5<br>
854+       CASE ( IO_PHDF5   )<br>
855+             CALL ext_phdf5_open_for_write_commit ( Hndl , Status )<br>
856+ #endif<br>
857  #ifdef XXX<br>
858        CASE ( IO_XXX   )<br>
859          CALL ext_xxx_open_for_write_commit ( Hndl , Status )<br>
860***************<br>
861*** 316,321 ****<br>
862--- 367,388 ----<br>
863        CALL ext_hdf_open_for_read ( FileName , Comm_compute, Comm_io, SysDepInfo, &amp;<br>
864                                 Hndl , Status )<br>
865  #endif<br>
866+ #ifdef HDF5<br>
867+     CASE ( IO_HDF5   )<br>
868+       IF ( multi_files(io_form) .OR.  wrf_dm_on_monitor() ) THEN<br>
869+         CALL ext_hdf5_open_for_read ( FileName , Comm_compute, Comm_io, SysDepInfo, &amp;<br>
870+                                      Hndl , Status )<br>
871+       ENDIF<br>
872+       IF ( .NOT. multi_files(io_form) ) THEN<br>
873+         CALL wrf_dm_bcast_bytes( Status, IWORDSIZE )<br>
874+         CALL wrf_dm_bcast_bytes( Hndl, IWORDSIZE )<br>
875+       ENDIF<br>
876+ #endif<br>
877+ #ifdef PHDF5<br>
878+     CASE ( IO_PHDF5   )<br>
879+         CALL ext_phdf5_open_for_read ( FileName , Comm_compute, Comm_io, SysDepInfo, &amp;<br>
880+                                      Hndl , Status )<br>
881+ #endif<br>
882  #ifdef XXX<br>
883      CASE ( IO_XXX   )<br>
884        CALL ext_xxx_open_for_read ( FileName , Comm_compute, Comm_io, SysDepInfo, &amp;<br>
885***************<br>
886*** 420,425 ****<br>
887--- 487,502 ----<br>
888        CASE ( IO_HDF   )<br>
889            CALL ext_hdf_inquire_opened ( Hndl, FileName , FileStatus, Status )<br>
890  #endif<br>
891+ #ifdef HDF5<br>
892+       CASE ( IO_HDF5   )<br>
893+           IF (wrf_dm_on_monitor()) CALL ext_hdf5_inquire_opened ( Hndl, FileName , FileStatus, Status )<br>
894+           CALL wrf_dm_bcast_bytes( FileStatus, IWORDSIZE )<br>
895+           CALL wrf_dm_bcast_bytes( Status    , IWORDSIZE )<br>
896+ #endif<br>
897+ #ifdef PHDF5<br>
898+       CASE ( IO_PHDF5   )<br>
899+           CALL ext_phdf5_inquire_opened ( Hndl, FileName , FileStatus, Status )<br>
900+ #endif<br>
901  #ifdef XXX<br>
902        CASE ( IO_XXX   )<br>
903            CALL ext_xxx_inquire_opened ( Hndl, FileName , FileStatus, Status )<br>
904***************<br>
905*** 486,491 ****<br>
906--- 563,578 ----<br>
907          CASE ( IO_HDF   )<br>
908            CALL ext_hdf_inquire_filename ( Hndl, FileName , FileStatus, Status )<br>
909  #endif<br>
910+ #ifdef HDF5<br>
911+         CASE ( IO_HDF5   )<br>
912+           IF (wrf_dm_on_monitor()) CALL ext_hdf5_inquire_filename ( Hndl, FileName , FileStatus, Status )<br>
913+           CALL wrf_dm_bcast_bytes( FileStatus, IWORDSIZE )<br>
914+           CALL wrf_dm_bcast_bytes( Status    , IWORDSIZE )<br>
915+ #endif<br>
916+ #ifdef PHDF5<br>
917+         CASE ( IO_PHDF5   )<br>
918+           CALL ext_phdf5_inquire_filename ( Hndl, FileName , FileStatus, Status )<br>
919+ #endif<br>
920  #ifdef XXX<br>
921          CASE ( IO_XXX   )<br>
922            CALL ext_xxx_inquire_filename ( Hndl, FileName , FileStatus, Status )<br>
923***************<br>
924*** 607,612 ****<br>
925--- 694,708 ----<br>
926          CASE ( IO_HDF   )<br>
927            CALL ext_ncd_ioclose( Hndl, Status )<br>
928  #endif<br>
929+ #ifdef HDF5<br>
930+         CASE ( IO_HDF5   )<br>
931+           IF ( multi_files(io_form) .OR.  wrf_dm_on_monitor() ) CALL ext_hdf5_ioclose( Hndl, Status )<br>
932+           CALL wrf_dm_bcast_bytes( Status, IWORDSIZE )<br>
933+ #endif<br>
934+ #ifdef PHDF5<br>
935+         CASE ( IO_PHDF5   )<br>
936+           CALL ext_phdf5_ioclose( Hndl, Status )<br>
937+ #endif<br>
938  #ifdef XXX<br>
939          CASE ( IO_XXX   )<br>
940            CALL ext_xxx_ioclose( Hndl, Status )<br>
941***************<br>
942*** 675,680 ****<br>
943--- 771,790 ----<br>
944          CASE ( IO_HDF   )<br>
945            CALL ext_hdf_get_next_time( Hndl, DateStr, Status )<br>
946  #endif<br>
947+ #ifdef HDF5<br>
948+         CASE ( IO_HDF5   )<br>
949+           IF ( multi_files(io_form) .OR.  wrf_dm_on_monitor() ) CALL ext_hdf5_get_next_time( Hndl, DateStr, Status )<br>
950+           IF ( .NOT. multi_files(io_form) ) THEN<br>
951+             CALL wrf_dm_bcast_bytes( Status, IWORDSIZE )<br>
952+             len_of_str = LEN(DateStr)<br>
953+             CALL wrf_dm_bcast_bytes( len_of_str, IWORDSIZE )<br>
954+             CALL wrf_dm_bcast_string ( DateStr , len_of_str )<br>
955+           ENDIF<br>
956+ #endif<br>
957+ #ifdef PHDF5<br>
958+         CASE ( IO_PHDF5   )<br>
959+           CALL ext_phdf5_get_next_time( Hndl, DateStr, Status )<br>
960+ #endif<br>
961  #ifdef XXX<br>
962          CASE ( IO_XXX   )<br>
963            CALL ext_xxx_get_next_time( Hndl, DateStr, Status )<br>
964***************<br>
965*** 742,747 ****<br>
966--- 852,866 ----<br>
967          CASE ( IO_HDF   )<br>
968            CALL ext_hdf_set_time( Hndl, DateStr, Status )<br>
969  #endif<br>
970+ #ifdef HDF5<br>
971+         CASE ( IO_HDF5   )<br>
972+           IF ( multi_files(io_form) .OR.  wrf_dm_on_monitor() ) CALL ext_hdf5_set_time( Hndl, DateStr, Status )<br>
973+           CALL wrf_dm_bcast_bytes( Status, IWORDSIZE )<br>
974+ #endif<br>
975+ #ifdef PHDF5<br>
976+         CASE ( IO_PHDF5   )<br>
977+           CALL ext_phdf5_set_time( Hndl, DateStr, Status )<br>
978+ #endif<br>
979  #ifdef XXX<br>
980          CASE ( IO_XXX   )<br>
981            CALL ext_xxx_set_time( Hndl, DateStr, Status )<br>
982***************<br>
983*** 875,880 ****<br>
984--- 994,1002 ----<br>
985  #ifdef HDF<br>
986    EXTERNAL ext_hdf_read_field<br>
987  #endif<br>
988+ #ifdef HDF5<br>
989+   EXTERNAL ext_hdf5_read_field<br>
990+ #endif<br>
991  #ifdef XXX<br>
992    EXTERNAL ext_xxx_read_field<br>
993  #endif<br>
994***************<br>
995*** 911,916 ****<br>
996--- 1033,1058 ----<br>
997                                       PatchStart , PatchEnd ,                                      &amp;<br>
998                                       Status )<br>
999  #endif<br>
1000+ #ifdef HDF5<br>
1001+         CASE ( IO_HDF5 )<br>
1002+           CALL call_pkg_and_dist   ( ext_hdf5_read_field, multi_files(io_form),                  &amp;<br>
1003+                                      Hndl , DateStr , VarName , Field , FieldType , Comm , IOComm , &amp;<br>
1004+                                      DomainDesc , bdy_mask, MemoryOrder , Stagger , DimNames ,              &amp;<br>
1005+                                      DomainStart , DomainEnd ,                                    &amp;<br>
1006+                                      MemoryStart , MemoryEnd ,                                    &amp;<br>
1007+                                      PatchStart , PatchEnd ,                                      &amp;<br>
1008+                                      Status )<br>
1009+ #endif<br>
1010+ #ifdef PHDF5                                                                                                              <br>
1011+        CASE (IO_PHDF5)<br>
1012+           CALL  ext_phdf5_read_field  (                 &amp;<br>
1013+                                      Hndl , DateStr , VarName , Field , FieldType , Comm , IOComm , &amp;<br>
1014+                                      DomainDesc ,  MemoryOrder , Stagger , DimNames ,              &amp;<br>
1015+                                      DomainStart , DomainEnd ,                                    &amp;<br>
1016+                                      MemoryStart , MemoryEnd ,                                    &amp;<br>
1017+                                      PatchStart , PatchEnd ,                                      &amp;<br>
1018+                                      Status )<br>
1019+ #endif<br>
1020  #ifdef XXX<br>
1021          CASE ( IO_XXX )<br>
1022            CALL call_pkg_and_dist   ( ext_xxx_read_field, multi_files(io_form),                  &amp;<br>
1023***************<br>
1024*** 994,999 ****<br>
1025--- 1136,1144 ----<br>
1026  #ifdef HDF<br>
1027    EXTERNAL ext_hdf_write_field<br>
1028  #endif<br>
1029+ #ifdef HDF5<br>
1030+   EXTERNAL ext_hdf5_write_field<br>
1031+ #endif<br>
1032  #ifdef XXX<br>
1033    EXTERNAL ext_xxx_write_field<br>
1034  #endif<br>
1035***************<br>
1036*** 1028,1033 ****<br>
1037--- 1173,1198 ----<br>
1038                                       PatchStart , PatchEnd ,                                      &amp;<br>
1039                                       Status )<br>
1040  #endif<br>
1041+ #ifdef HDF5<br>
1042+         CASE ( IO_HDF5 )<br>
1043+           CALL collect_fld_and_call_pkg ( ext_hdf5_write_field, multi_files(io_form),                  &amp;<br>
1044+                                      Hndl , DateStr , VarName , Field , FieldType , Comm , IOComm , &amp;<br>
1045+                                      DomainDesc , bdy_mask, MemoryOrder , Stagger , DimNames ,              &amp;<br>
1046+                                      DomainStart , DomainEnd ,                                    &amp;<br>
1047+                                      MemoryStart , MemoryEnd ,                                    &amp;<br>
1048+                                      PatchStart , PatchEnd ,                                      &amp;<br>
1049+                                      Status )<br>
1050+ #endif<br>
1051+ #ifdef PHDF5<br>
1052+         CASE ( IO_PHDF5 )<br>
1053+           CALL ext_phdf5_write_field (                  &amp;<br>
1054+                                      Hndl , DateStr , VarName , Field , FieldType , Comm , IOComm , &amp;<br>
1055+                                      DomainDesc , MemoryOrder , Stagger , DimNames ,              &amp;<br>
1056+                                      DomainStart , DomainEnd ,                                    &amp;<br>
1057+                                      MemoryStart , MemoryEnd ,                                    &amp;<br>
1058+                                      PatchStart , PatchEnd ,                                      &amp;<br>
1059+                                      Status )<br>
1060+ #endif<br>
1061  #ifdef XXX<br>
1062          CASE ( IO_XXX )<br>
1063            CALL collect_fld_and_call_pkg ( ext_xxx_write_field, multi_files(io_form),                  &amp;<br>
1064***************<br>
1065*** 1115,1120 ****<br>
1066--- 1280,1293 ----<br>
1067                                        DomainStart , DomainEnd ,                &amp;<br>
1068                                        Status )<br>
1069  #endif<br>
1070+ #ifdef HDF5<br>
1071+         CASE ( IO_HDF5 )<br>
1072+          write(*,*) "NOT IMPLEMENT at HDF5" <br>
1073+          ! CALL ext_hdf5_get_var_info ( Hndl , VarName , NDim ,            &amp;<br>
1074+          !                             MemoryOrder , Stagger ,                  &amp;<br>
1075+          !                             DomainStart , DomainEnd ,                &amp;<br>
1076+          !                             Status )<br>
1077+ #endif<br>
1078  #ifdef XXX<br>
1079          CASE ( IO_XXX )<br>
1080            CALL ext_xxx_get_var_info ( Hndl , VarName , NDim ,            &amp;<br>
1081      <br>
1082      </td>
1083    </tr>
1084  </tbody>
1085</table>
1086<p><br>
1087The 'share/module_io.F' file must be modified to recognize the HDF5 options for IO.<br>
1088</p>
1089<table cellpadding="2" cellspacing="2" border="1" width="90%" align="center">
1090  <tbody>
1091    <tr>
1092      <td valign="top">*** ../WRFV1/share/module_io_wrf.F       Tue Feb 18 14:26:22 2003<br>
1093--- ./WRFV1-with-hdf/share/module_io_wrf.F      Thu May 13 12:18:46 2004<br>
1094***************<br>
1095*** 1032,1037 ****<br>
1096--- 1032,1079 ----<br>
1097                      ,Status )<br>
1098      ENDIF<br>
1099  <br>
1100+     IF (io_form .EQ. IO_HDF5) THEN<br>
1101+       CALL wrf_put_var_ti_char( &amp;<br>
1102+                        DataHandle                 &amp;  ! DataHandle<br>
1103+                     ,"description"              &amp;  ! Element<br>
1104+                       ,Var                        &amp;  ! Data Name<br>
1105+                       ,Desc                       &amp;  ! Data<br>
1106+                     ,Status )<br>
1107+       CALL wrf_put_var_ti_char( &amp;<br>
1108+                        DataHandle                 &amp;  ! DataHandle<br>
1109+                     ,"units"                    &amp;  ! Element<br>
1110+                       ,Var                        &amp;  ! Data Name<br>
1111+                       ,Units                      &amp;  ! Data<br>
1112+                     ,Status )<br>
1113+       CALL wrf_put_var_ti_char( &amp;<br>
1114+                        DataHandle                 &amp;  ! DataHandle<br>
1115+                     ,"stagger"                  &amp;  ! Element<br>
1116+                       ,Var                        &amp;  ! Data Name<br>
1117+                       ,Stagger                    &amp;  ! Data<br>
11184/ Build WRF<br>
1119      <br>
1120+                     ,Status )<br>
1121+     ENDIF<br>
1122+ <br>
1123+     IF (io_form .EQ. IO_PHDF5) THEN<br>
1124+       CALL wrf_put_var_ti_char( &amp;<br>
1125+                        DataHandle                 &amp;  ! DataHandle<br>
1126+                     ,"description"              &amp;  ! Element<br>
1127+                       ,Var                        &amp;  ! Data Name<br>
1128+                       ,Desc                       &amp;  ! Data<br>
1129+                     ,Status )<br>
1130+       CALL wrf_put_var_ti_char( &amp;<br>
1131+                        DataHandle                 &amp;  ! DataHandle<br>
1132+                     ,"units"                    &amp;  ! Element<br>
1133+                       ,Var                        &amp;  ! Data Name<br>
1134+                       ,Units                      &amp;  ! Data<br>
1135+                     ,Status )<br>
1136+       CALL wrf_put_var_ti_char( &amp;<br>
1137+                        DataHandle                 &amp;  ! DataHandle<br>
1138+                     ,"stagger"                  &amp;  ! Element<br>
1139+                       ,Var                        &amp;  ! Data Name<br>
1140+                       ,Stagger                    &amp;  ! Data<br>
1141+                     ,Status )<br>
1142+     ENDIF<br>
1143+ <br>
1144      IF ( wrf_at_debug_level(300) ) THEN<br>
1145        WRITE(wrf_err_message,*) debug_message,' Status = ',Status<br>
1146        CALL wrf_message ( TRIM(wrf_err_message) )<br>
1147      <br>
1148      </td>
1149    </tr>
1150  </tbody>
1151</table>
1152<p>The 'Makefile' for the 'external' directory must be updated to build the new IO modules.<br>
1153</p>
1154<table cellpadding="2" cellspacing="2" border="1" width="90%" align="center">
1155  <tbody>
1156    <tr>
1157      <td valign="top">*** ../WRFV1/external/Makefile   Mon Dec 10 18:07:21 2001<br>
1158--- ./WRFV1-with-hdf/external/Makefile  Thu May 13 12:18:38 2004<br>
1159***************<br>
1160*** 3,12 ****<br>
1161        ( cd RSL/RSL ; make clean )<br>
1162        ( cd io_netcdf ; make clean )<br>
1163        ( cd io_int ; make clean )<br>
1164  <br>
1165  superclean : clean<br>
1166        /bin/rm -f RSL/RSL/librsl.a RSL/RSL/rsl.inc<br>
1167        /bin/rm -f io_netcdf/libwrfio_nf.a io_netcdf/diffwrf io_netcdf/*.o io_netcdf/*.f \<br>
1168                     io_int/libwrfio_int.a io_int/diffwrf        */*.mod<br>
1169! <br>
1170! <br>
1171--- 3,14 ----<br>
1172        ( cd RSL/RSL ; make clean )<br>
1173        ( cd io_netcdf ; make clean )<br>
1174        ( cd io_int ; make clean )<br>
1175+       (cd io_hdf5; make clean)<br>
1176+       (cd io_phdf5; make clean)<br>
1177  <br>
1178  superclean : clean<br>
1179        /bin/rm -f RSL/RSL/librsl.a RSL/RSL/rsl.inc<br>
1180        /bin/rm -f io_netcdf/libwrfio_nf.a io_netcdf/diffwrf io_netcdf/*.o io_netcdf/*.f \<br>
1181                     io_int/libwrfio_int.a io_int/diffwrf        */*.mod<br>
1182!       /bin/rm -f io_phdf5/*.a io_phdf5/*.o  *.f *.mod<br>
1183!       /bin/rm -f io_hdf5/*.a io_hdf5/*.o *.f *.mod<br>
1184      <br>
1185      <br>
1186      </td>
1187    </tr>
1188  </tbody>
1189</table>
1190
1191
1192    <p><b><small>
1193    <font size="4"><small></small></font></small></b><br>
1194</p>
1195<p><i>Last Modified: 17 May 2004 </i></p>
1196<blockquote>
1197  <blockquote>
1198   
1199    <p> </p>
1200  </blockquote>
1201
1202</blockquote>
1203
1204
1205<br>
1206<br>
1207</body></html>
Note: See TracBrowser for help on using the repository browser.