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>
7 There 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>
9 The sequential HDF module (
<i>io_hdf5
</i>) uses the serial HDF5 library. The parallel
10 HDF module (
<i>io_phdf5
</i>) uses parallel HDF5 (which requires MPI-IO).
<br>
12 The installation for the two modules is similar.
<br>
14 <big><b>Prerequisites
</b></big><br>
18 The HDF5 WRF IO modules require Version
1.3 of WRF. Information and downloads are available at:
<br>
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>
23 <b>HDF5-
1.6 .2 or later
</b><br>
25 The HDF5 WRF IO modules require HDF5-
1.6.2 or more recent. The parallel HDF5
26 WRF module requires parallel HDF5 (which requires MPI IO).
<br>
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>
37 For the parallel WRF module, parallel HDF5 must be installed (this requires MPI-IO).
<br>
38 Set the environment variable PHDF5 =
<<path where phdf5 is installed
>>.
42 <li>For the sequential HDF WRF IO module, either serial or parallel HDF must be installed.
<br>
43 The HDF library may be installed with the optional SZIP compression enabled.
<br>
44 Set the environment variable HDF5 =
<<path where hdf5 is installed
>>.
50 <big><b>Platforms
</b></big><br>
51 <p><small><small><font size=
"5"><small><small>This prototype has been tested
52 on a few platforms. The HDF WRF IO modules should work on any platform that
53 WRF3.1 and HDF5 support, although the details of the configuration may need
55 </small></small></font></small></small></p>
56 <table cellpadding=
"2" cellspacing=
"2" border=
"1" width=
"100%">
59 <td valign=
"top"><b>Module
<br>
61 <td valign=
"top"><b>Platforms
<br>
63 <td valign=
"top"><b>Notes
<br>
67 <td valign=
"top">Sequential
<br>
69 <td valign=
"top"><small><small><font size=
"5"><small><small>
70 NCSA 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>
75 <td valign=
"top">To date, WRF3.1 does not work on Linux with PGF, version
5.
<br>
79 <td valign=
"top">Parallel
<br>
81 <td valign=
"top"><small><small><font size=
"5"><small><small>
82 NCSA IBM P690
</small></small></font></small></small>.
<br>
84 <small><small><font size=
"5"><small><small> NCAR IBM SP3
</small></small></font></small></small><br>
93 <big><b>Installation of the HDF5 WRF IO Modules
</b></big><br>
95 The HDF5 WRF IO modules are used by adding it to a standard WRF configuration. This process has four main steps
<br>
97 <li>Downoad the HDF WRF IO module(s)
</li><li>Add the HDF5 WRF IO module(s) as an
"extern" module
</li>
99 <li>Modifying relevant files in the WRF distribution
</li>
100 <li>Compile WRF following the usual procedures
<br>
104 The parallel, sequential, or both may be configured.
<br>
106 <b>1. Download the WRD-HDF5 IO modules
</b><br>
108 The HDF WRF IO modules are available from:
<br>
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>
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>
120 <font size=
"4"><small>2. Add WRF-HDF5 IO module(s) to the WRF source
</small></font></small></b></p>
124 The HDF5 WRF IO modules are added as sub-directories in the 'external' directory of the WRF source.
<br>
126 <blockquote><blockquote>
130 tar xvf io_hdf5.tar
<br>
131 tar xvf io_phdf5.tar
<br>
133 </blockquote></blockquote>
138 <table cellpadding=
"2" cellspacing=
"2" border=
"1" width=
"90%" align=
"center">
143 <td valign=
"top">contents of the sequential HDF WRF IO module:
<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>
159 <table cellpadding=
"2" cellspacing=
"2" border=
"1" width=
"90%" align=
"center">
164 <td valign=
"top">contents of the sequential HDF WRF IO module:
<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>
177 <p><b><small><small><font size=
"5"><small><small>Design note:
</small></small></font></small></small></b></p>
179 <p><small><small><font size=
"5"><small><small>In the sequential HDF5 WRF
180 IO modules, arrays larger thatn
8096 bytes are compressed by default. In
181 this 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>
186 <p><small><small><font size=
"5"><small><small>In the current prototype, there is no option in the namelist for
187 users 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>
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>
198 call h5pset_shuffle_f(crp_list,hdf5err)
</small></font></small></p>
199 <p><small><font size=
"4"><small>
200 and
</small></font></small></p>
201 <p><small><font size=
"4" face=
"Arial"><small>
202 call h5pset_deflate_f(crp_list,
6,hdf5err)
</small></font></small></p>
213 <p><i><small><small><font size=
"5"><small><small>To use SZIP compression instead:
</small></small></font></small></small></i></p>
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/">
219 http://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>
224 call h5pset_shuffle_f(crp_list,hdf5err)
</small></font></small></p>
225 <p><small><font size=
"4"><small>
226 and
</small></font></small></p>
227 <p><small><font size=
"4" face=
"Arial"><small>
228 call 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
233 h5pset_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
236 of 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>
258 <p><font size=
"4"><b><small>3. Modifications to WRF files
</small></b><br>
261 <p><font size=
"4"><small>In order to add a new IO module to WRF, several
262 files in the WRF source code must be changed. The following files need to be
265 <table cellpadding=
"2" cellspacing=
"2" border=
"1" width=
"50%" align=
"center">
268 <td valign=
"top">WRFV1/configure
<br>
269 WRFV1/Registry/Registry
<br>
270 WRFV1/arch/Config.pl
<br>
271 WRFV1/arch/configure.defaults
<br>
272 WRFV1/frame/md_calls.m4
<br>
273 WRFV1/frame/module_io.F
<br>
274 WRFV1/share/module_io_wrf.F
<br>
275 WRFV1/external/Makefile
<br>
281 The 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>
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>
292 <p><i><b>WRF configuration files
<br>
295 <p>The 'configure' file must be updated to add the HDF5 and PHDF5 variables.
<br>
297 <table cellpadding=
"2" cellspacing=
"2" border=
"1" align=
"center" width=
"90%">
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>
305 echo
"Will configure for use without NetCDF"<br>
308 + if [ -n
"$HDF5" ] ; then
<br>
309 + echo
"Will use HDF5 in dir: $HDF5"<br>
311 + echo
"Will configure for use without HDF5"<br>
314 + if [ -n
"$PHDF5" ] ; then
<br>
315 + echo
"Will use PHDF5 in dir: $PHDF5"<br>
317 + echo
"Will configure for use without PHDF5"<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>
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>
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>
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>
344 <table cellpadding=
"2" cellspacing=
"2" border=
"1" width=
"90%" align=
"center">
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>
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>
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>
372 <p>The file 'arch/Config.pl' needs to be changed to add the code to use the HDF5 and PHDF5 variables.
<br>
374 <table cellpadding=
"2" cellspacing=
"2" border=
"1" width=
"90%" align=
"center">
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>
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>
394 $sw_netcdf_path = substr( $ARGV[
0],
8 ) ;
<br>
396 + if ( substr( $ARGV[
0],
1,
5 ) eq
"hdf5=" )
<br>
398 + $sw_hdf5_path = substr( $ARGV[
0],
6 ) ;
<br>
400 + if ( substr( $ARGV[
0],
1,
6 ) eq
"phdf5=" )
<br>
402 + $sw_phdf5_path = substr( $ARGV[
0],
7 ) ;
<br>
404 if ( substr( $ARGV[
0],
1,
3 ) eq
"os=" )
<br>
406 $sw_os = substr( $ARGV[
0],
4 ) ;
<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>
421 $_ =~ s:CONFIGURE_NETCDF_FLAG::g ;
<br>
422 $_ =~ s:CONFIGURE_NETCDF_LIB_PATH::g ;
<br>
425 + if ( $sw_hdf5_path )
<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>
433 + { $_ =~ s/CONFIGURE_WRFIO_HDF5//g ;
<br>
434 + $_ =~ s:CONFIGURE_HDF5_FLAG::g ;
<br>
435 + $_ =~ s:CONFIGURE_HDF5_LIB_PATH::g ;
<br>
438 + if ( $sw_phdf5_path )
<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>
445 + { $_ =~ s/CONFIGURE_WRFIO_PHDF5//g ;
<br>
446 + $_ =~ s:CONFIGURE_PHDF5_FLAG::g ;
<br>
447 + $_ =~ s:CONFIGURE_PHDF5_LIB_PATH::g ;
<br>
449 @machopts = ( @machopts, $_ ) ;
<br>
451 if ( substr( $_,
0,
5 ) eq
"#ARCH" && $latchon ==
0 )
<br>
457 <p>The file 'arch/configure.defauts' must be edited to reflect the configuration of the current system.
<br>
459 <table cellpadding=
"2" cellspacing=
"2" border=
"1" width=
"90%" align=
"center">
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>
468 ###########################################################
<br>
469 ! #ARCH AIX DM (RSL-IO, IBM-MPI)
<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>
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>
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>
496 ###########################################################
<br>
497 ! #ARCH AIX DM (RSL-IO, IBM-MPI)(PARALLEL HDF5)
<br>
502 ! FC = mpxlf90_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>
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>
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>
527 ! M4 = m4 -B
8000<br>
528 ! RANLIB = ranlib
<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 >> ../tools/gen_comms.c ; \
<br>
533 ! /bin/cp module_dm_warning module_dm.F ; cat ../external/RSL/module_dm.F
>> module_dm.F )
<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
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
546 ! ( cd ../external/io_int ; \
<br>
547 ! make CC=$(CC)
FC=
"$(SFC) $(FCDEBUG) -qarch=auto -qzerosize" all diffwrf )
<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>
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>
556 ! mediation_force_domain.o \
<br>
557 ! mediation_interp_domain.o :
<br>
559 ! sed /\!.\*\'/s/\'//g $*.F
> $*.b
<br>
560 ! $(CPP) -I../inc $(CPPFLAGS) $*.b
> $*.f
<br>
562 ! $(FC) -c $(FCBASEOPTS) $(MODULE_DIRS) $*.f
<br>
564 ! ###########################################################
<br>
565 ! #ARCH AIX DM (RSL-IO, IBM-MPI)(SERIAL HDF5)
<br>
570 ! FC = mpxlf90_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>
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>
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>
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 >> ../tools/gen_comms.c ; \
<br>
599 /bin/cp module_dm_warning module_dm.F ; cat ../external/RSL/module_dm.F
>> module_dm.F )
<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
607 ( cd ../external/io_int ; \
<br>
608 make CC=$(CC)
FC=
"$(SFC) $(FCDEBUG) -qarch=auto -qzerosize" all diffwrf )
<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 >> ../tools/gen_comms.c ; \
<br>
616 /bin/cp module_dm_warning module_dm.F ; cat ../external/RSL/module_dm.F
>> module_dm.F )
<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
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
629 ( cd ../external/io_int ; \
<br>
630 make CC=$(CC)
FC=
"$(SFC) $(FCDEBUG) -qarch=auto -qzerosize" all diffwrf )
<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>
642 REGISTRY = Registry
<br>
643 ! LIB = CONFIGURE_NETCDF_LIB_PATH \
<br>
644 ../frame/internal_header_util.o ../frame/pack_utils.o
<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>
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>
663 ***
1666,
1672 ****
<br>
667 ! externals : CONFIGURE_WRFIO_NF wrfio_int
<br>
668 ( /bin/cp module_dm_warning module_dm.F ; cat module_dm_stubs.F
>> module_dm.F )
<br>
671 ---
1734,
1740 ----
<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
>> module_dm.F )
<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>
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>
692 ( cd ../external/io_int ; \
<br>
693 make CC=$(CC)
FC=
"$(SFC) $(FCDEBUG) $(FCBASEOPTS)" \
<br>
705 <p><i>Modifications of source code inside WRF
</i><b><br>
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>
709 <p>The 'frame/md_calls.m4' must be modified to recognize the HDF modules.
<br>
713 <table cellpadding=
"2" cellspacing=
"2" border=
"1" width=
"90%" align=
"center">
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>
720 CALL wrf_dm_bcast_bytes( Status, IWORDSIZE )
<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,
&<br>
726 ifelse($
4,char,,`locCount, ifelse($
1,get,`Outcount,')') Status )
<br>
730 CALL wrf_dm_bcast_bytes( Status, IWORDSIZE )
<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,
&<br>
737 ! ifelse($
4,char,,`locCount, ifelse($
1,get,`Outcount,')') Status )
<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>
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,
&<br>
757 ifelse($
4,char,,`locCount, ifelse($
1,get,`Outcount,')') Status )
<br>
766 The 'frame/module_io.F' file must be modified to add code to call the HDF5 modules if selected.
<br>
768 <table cellpadding=
"2" cellspacing=
"2" border=
"1" width=
"90%" align=
"center">
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>
777 CALL ext_ncd_ioinit( SysDepInfo, Status )
<br>
781 + CALL ext_hdf5_ioinit(SysDepInfo, Status)
<br>
785 + CALL ext_phdf5_ioinit(SysDepInfo, Status)
<br>
788 END SUBROUTINE wrf_ioinit
<br>
795 CALL ext_ncd_ioexit( Status )
<br>
799 + CALL ext_hdf5_ioexit(Status)
<br>
803 + CALL ext_phdf5_ioexit(Status)
<br>
806 IF ( use_output_servers() ) CALL ext_quilt_ioexit( Status )
<br>
812 CALL ext_hdf_open_for_write_begin ( FileName , Comm_compute, Comm_io, SysDepInfo,
&<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>
822 + LocFilename = FileName
<br>
824 + CALL ext_hdf5_open_for_write_begin ( LocFileName , Comm_compute, Comm_io, SysDepInfo,
&<br>
825 + Hndl , Status )
<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>
833 + CASE ( IO_PHDF5 )
<br>
834 + CALL ext_phdf5_open_for_write_begin ( FileName , Comm_compute, Comm_io, SysDepInfo,
&<br>
835 + Hndl , Status )
<br>
839 CALL ext_xxx_open_for_write_begin ( FileName , Comm_compute, Comm_io, SysDepInfo,
&<br>
844 CALL ext_hdf_open_for_write_commit ( Hndl , Status )
<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>
851 + IF ( .NOT. multi_files(io_form) ) CALL wrf_dm_bcast_bytes( Status, IWORDSIZE )
<br>
854 + CASE ( IO_PHDF5 )
<br>
855 + CALL ext_phdf5_open_for_write_commit ( Hndl , Status )
<br>
859 CALL ext_xxx_open_for_write_commit ( Hndl , Status )
<br>
863 CALL ext_hdf_open_for_read ( FileName , Comm_compute, Comm_io, SysDepInfo,
&<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,
&<br>
870 + Hndl , Status )
<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>
878 + CASE ( IO_PHDF5 )
<br>
879 + CALL ext_phdf5_open_for_read ( FileName , Comm_compute, Comm_io, SysDepInfo,
&<br>
880 + Hndl , Status )
<br>
884 CALL ext_xxx_open_for_read ( FileName , Comm_compute, Comm_io, SysDepInfo,
&<br>
889 CALL ext_hdf_inquire_opened ( Hndl, FileName , FileStatus, Status )
<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>
898 + CASE ( IO_PHDF5 )
<br>
899 + CALL ext_phdf5_inquire_opened ( Hndl, FileName , FileStatus, Status )
<br>
903 CALL ext_xxx_inquire_opened ( Hndl, FileName , FileStatus, Status )
<br>
908 CALL ext_hdf_inquire_filename ( Hndl, FileName , FileStatus, Status )
<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>
917 + CASE ( IO_PHDF5 )
<br>
918 + CALL ext_phdf5_inquire_filename ( Hndl, FileName , FileStatus, Status )
<br>
922 CALL ext_xxx_inquire_filename ( Hndl, FileName , FileStatus, Status )
<br>
927 CALL ext_ncd_ioclose( Hndl, Status )
<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>
935 + CASE ( IO_PHDF5 )
<br>
936 + CALL ext_phdf5_ioclose( Hndl, Status )
<br>
940 CALL ext_xxx_ioclose( Hndl, Status )
<br>
945 CALL ext_hdf_get_next_time( Hndl, DateStr, Status )
<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>
958 + CASE ( IO_PHDF5 )
<br>
959 + CALL ext_phdf5_get_next_time( Hndl, DateStr, Status )
<br>
963 CALL ext_xxx_get_next_time( Hndl, DateStr, Status )
<br>
968 CALL ext_hdf_set_time( Hndl, DateStr, Status )
<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>
976 + CASE ( IO_PHDF5 )
<br>
977 + CALL ext_phdf5_set_time( Hndl, DateStr, Status )
<br>
981 CALL ext_xxx_set_time( Hndl, DateStr, Status )
<br>
984 ---
994,
1002 ----
<br>
986 EXTERNAL ext_hdf_read_field
<br>
989 + EXTERNAL ext_hdf5_read_field
<br>
992 EXTERNAL ext_xxx_read_field
<br>
996 ---
1033,
1058 ----
<br>
997 PatchStart , PatchEnd ,
&<br>
1001 + CASE ( IO_HDF5 )
<br>
1002 + CALL call_pkg_and_dist ( ext_hdf5_read_field, multi_files(io_form),
&<br>
1003 + Hndl , DateStr , VarName , Field , FieldType , Comm , IOComm ,
&<br>
1004 + DomainDesc , bdy_mask, MemoryOrder , Stagger , DimNames ,
&<br>
1005 + DomainStart , DomainEnd ,
&<br>
1006 + MemoryStart , MemoryEnd ,
&<br>
1007 + PatchStart , PatchEnd ,
&<br>
1011 + CASE (IO_PHDF5)
<br>
1012 + CALL ext_phdf5_read_field (
&<br>
1013 + Hndl , DateStr , VarName , Field , FieldType , Comm , IOComm ,
&<br>
1014 + DomainDesc , MemoryOrder , Stagger , DimNames ,
&<br>
1015 + DomainStart , DomainEnd ,
&<br>
1016 + MemoryStart , MemoryEnd ,
&<br>
1017 + PatchStart , PatchEnd ,
&<br>
1022 CALL call_pkg_and_dist ( ext_xxx_read_field, multi_files(io_form),
&<br>
1024 ***
994,
999 ****
<br>
1025 ---
1136,
1144 ----
<br>
1027 EXTERNAL ext_hdf_write_field
<br>
1030 + EXTERNAL ext_hdf5_write_field
<br>
1033 EXTERNAL ext_xxx_write_field
<br>
1036 ***
1028,
1033 ****
<br>
1037 ---
1173,
1198 ----
<br>
1038 PatchStart , PatchEnd ,
&<br>
1042 + CASE ( IO_HDF5 )
<br>
1043 + CALL collect_fld_and_call_pkg ( ext_hdf5_write_field, multi_files(io_form),
&<br>
1044 + Hndl , DateStr , VarName , Field , FieldType , Comm , IOComm ,
&<br>
1045 + DomainDesc , bdy_mask, MemoryOrder , Stagger , DimNames ,
&<br>
1046 + DomainStart , DomainEnd ,
&<br>
1047 + MemoryStart , MemoryEnd ,
&<br>
1048 + PatchStart , PatchEnd ,
&<br>
1052 + CASE ( IO_PHDF5 )
<br>
1053 + CALL ext_phdf5_write_field (
&<br>
1054 + Hndl , DateStr , VarName , Field , FieldType , Comm , IOComm ,
&<br>
1055 + DomainDesc , MemoryOrder , Stagger , DimNames ,
&<br>
1056 + DomainStart , DomainEnd ,
&<br>
1057 + MemoryStart , MemoryEnd ,
&<br>
1058 + PatchStart , PatchEnd ,
&<br>
1063 CALL collect_fld_and_call_pkg ( ext_xxx_write_field, multi_files(io_form),
&<br>
1065 ***
1115,
1120 ****
<br>
1066 ---
1280,
1293 ----
<br>
1067 DomainStart , DomainEnd ,
&<br>
1071 + CASE ( IO_HDF5 )
<br>
1072 + write(*,*)
"NOT IMPLEMENT at HDF5" <br>
1073 + ! CALL ext_hdf5_get_var_info ( Hndl , VarName , NDim ,
&<br>
1074 + ! MemoryOrder , Stagger ,
&<br>
1075 + ! DomainStart , DomainEnd ,
&<br>
1080 CALL ext_xxx_get_var_info ( Hndl , VarName , NDim ,
&<br>
1087 The 'share/module_io.F' file must be modified to recognize the HDF5 options for IO.
<br>
1089 <table cellpadding=
"2" cellspacing=
"2" border=
"1" width=
"90%" align=
"center">
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>
1095 ***
1032,
1037 ****
<br>
1096 ---
1032,
1079 ----
<br>
1100 + IF (io_form .EQ. IO_HDF5) THEN
<br>
1101 + CALL wrf_put_var_ti_char(
&<br>
1102 + DataHandle
& ! DataHandle
<br>
1103 + ,
"description" & ! Element
<br>
1104 + ,Var
& ! Data Name
<br>
1105 + ,Desc
& ! Data
<br>
1107 + CALL wrf_put_var_ti_char(
&<br>
1108 + DataHandle
& ! DataHandle
<br>
1109 + ,
"units" & ! Element
<br>
1110 + ,Var
& ! Data Name
<br>
1111 + ,Units
& ! Data
<br>
1113 + CALL wrf_put_var_ti_char(
&<br>
1114 + DataHandle
& ! DataHandle
<br>
1115 + ,
"stagger" & ! Element
<br>
1116 + ,Var
& ! Data Name
<br>
1117 + ,Stagger
& ! Data
<br>
1123 + IF (io_form .EQ. IO_PHDF5) THEN
<br>
1124 + CALL wrf_put_var_ti_char(
&<br>
1125 + DataHandle
& ! DataHandle
<br>
1126 + ,
"description" & ! Element
<br>
1127 + ,Var
& ! Data Name
<br>
1128 + ,Desc
& ! Data
<br>
1130 + CALL wrf_put_var_ti_char(
&<br>
1131 + DataHandle
& ! DataHandle
<br>
1132 + ,
"units" & ! Element
<br>
1133 + ,Var
& ! Data Name
<br>
1134 + ,Units
& ! Data
<br>
1136 + CALL wrf_put_var_ti_char(
&<br>
1137 + DataHandle
& ! DataHandle
<br>
1138 + ,
"stagger" & ! Element
<br>
1139 + ,Var
& ! Data Name
<br>
1140 + ,Stagger
& ! Data
<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>
1152 <p>The 'Makefile' for the 'external' directory must be updated to build the new IO modules.
<br>
1154 <table cellpadding=
"2" cellspacing=
"2" border=
"1" width=
"90%" align=
"center">
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>
1161 ( cd RSL/RSL ; make clean )
<br>
1162 ( cd io_netcdf ; make clean )
<br>
1163 ( cd io_int ; make clean )
<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>
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>
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>
1193 <font size=
"4"><small></small></font></small></b><br>
1195 <p><i>Last Modified:
17 May
2004 </i></p>