Table of Contents
2008 Unidata NetCDF Workshop for Developers and Data Providers
1
Introduction
1.0
Schedule and Miscellaneous Items
1.1
Goals of the Workshop
1.2
Increase Your NetCDF Skills
2
Overview of netCDF
2.0
NetCDF Features
2.1
NetCDF's Niche
2.2
What is netCDF?
2.3
What is netCDF, really?
2.4
The NetCDF Web Site
2.5
Installing netCDF
2.6
Getting Support
2.7
People of NetCDF
2.8
Alternatives to netCDF
3
The "Classic" NetCDF Data Model
3.0
Models, Conventions, and Formats
3.1
What Is a Data Model?
3.2
The "Classic" NetCDF Data Model
3.3
CDL
3.4
A Simple Example
3.5
NetCDF Files
3.6
Dimensions
3.7
Variables
3.8
Variable Methods
3.9
Coordinate Variables
3.10
An Example of Coordinate Variables
3.11
Attributes
3.12
Attribute Methods
3.13
Variables Versus Attributes
3.14
Classic NetCDF Model Limitations
4
NetCDF Utilities
4.0
ncdump
4.1
ncgen
4.2
Unicode Names
4.3
NCO Utilities
4.4
NCL Utilities
4.5
CDO Utilities
4.6
Other NetCDF Utilities
5
NetCDF APIs
5.0
Overview
5.1
The C API
5.2
C API Example
5.3
The C++ API
5.4
The Fortran-77 API
5.5
The Fortran-90 API
5.6
The Java API
5.7
Architecture of NetCDF APIs and Libraries
5.8
Python APIs
5.9
The Ruby API
5.10
Perl APIs
5.11
Other APIs for netCDF
5.12
Some Common Errors to Avoid
6
NetCDF Example Programs
6.0
The NetCDF Examples in C/F77/F90/C++
6.1
The NetCDF Example Requirements
6.2
The NetCDF Example Data Sets
6.3
The Simple XY Example Dataset
6.4
Write The Simple XY Example in F90
6.5
The Simple XY Write Example in C
6.6
The Simple XY Example in C++
6.7
Creating a NetCDF Dataset
6.8
Read The Simple XY Example in F90
6.9
The 2D Example Dataset CDL
6.10
The 4D Example Dataset CDL
6.11
Reading The 4D Example in C
6.12
Reading a NetCDF Dataset with Known Names
6.13
Reading a NetCDF Dataset with Unknown Names
6.14
Issues in Writing Generic NetCDF Software
7
Formats and Performance
7.0
NetCDF Format Versions
7.1
Classic File Format
7.2
Classic API Performance Tips
7.3
Using Less Space for Data
7.4
Using Less Time for Data Access
7.5
Issues for Discussion
8
Best Practices
8.0
Conventions
8.1
Coordinate Systems
8.2
Variable Grouping
8.3
Variable Attributes
8.4
Strings and Character Variables
8.5
Calendar Date and Time
8.6
Packed Data Values
8.7
Missing Data Values
9
CF Conventions
9.0
Goals
9.1
CF Attributes
9.2
Where is CF Metadata Used?
9.3
A Brief History of CF
9.4
Principles
9.5
CF Standard Names
9.6
Future Directions for CF
10
Remote Access to Datasets Through netCDF-3
10.0
What Does Remote Access Mean?
10.1
The (OPeN)DAP protocol: A word from our Sponsor :-)
10.2
Example DDS and DAS
10.3
Data Format Differences vis-a-vis netcdf-3
10.4
DAP URL format
10.5
Demonstrations
10.6
Status
11
Introduction to NetCDF-4
11.0
The NetCDF-4 Data Model
11.1
NetCDF-4 Features
11.2
Compatibility of NetCDF-4
11.3
Unicode Names
11.4
Groups
11.5
Multiple Unlimited Dimensions
11.6
Compound Types
11.7
Enumerations
11.8
Variable-Length Types
11.9
NetCDF-4 Performance Improvements
11.10
Chunking
11.11
Compression
11.12
Ample Variable Sizes
11.13
Efficient Dynamic Schema Changes
11.14
Parallel I/O
11.15
Reader Makes Right Conversions
11.16
NetCDF-4 Status
12
Chunking Data with NetCDF-4
12.0
What is Chunking?
12.1
Choosing Chunksizes
12.2
Setting the Chunksizes in NetCDF-4
12.3
Example of Setting Chunksizes in Fortran 90
12.4
The Cache in NetCDF-4
12.5
Setting the Cache in NetCDF-4
12.6
Per-Variable Compression in NetCDF-4
12.7
Per-Variable Compression in NetCDF-4
12.8
Per-Variable Compression in NetCDF-4, Results
12.9
How to Use Per-Variable Compression in NetCDF-4
12.10
Contiguous Variables
12.11
Using Contiguous Variables
12.12
Example of Contiguous Variable
13
Parallel I/O with NetCDF
13.0
Parallel I/O
13.1
Introduction to Parallel I/O
13.2
The pNetCDF Package
13.3
Parallel I/O in NetCDF-4
13.4
Building NetCDF-4 with Parallel I/O
13.5
Using Parallel I/O in NetCDF-4
13.6
Collective and Independent Operations with Parallel I/O in NetCDF-4
13.7
Parallel I/O Example
13.8
Example of Simple Parallel I/O Access
13.9
Example of Simple Parallel I/O Access (part 2)
14
Using Groups and the New NetCDF-4 Atomic Types
14.0
Groups and New Atomic Types in NetCDF-4
14.1
What are Groups?
14.2
Using Groups
14.3
CDL Example of Groups
14.4
Possible Uses for Groups
14.5
Using Groups in Fortran 77
14.6
Using Groups in Fortran 77 (continued)
14.7
Strings
14.8
Example Creating an Array of Strings
14.9
Example Reading an Array of Strings
14.10
Additional Numeric Types
14.11
Additional Numeric Types
15
User Defined Types in NetCDF-4
15.0
Using User Defined Types
15.1
Writing and Reading Data of User Defined Type
15.2
Learning about User Defined Types
15.3
Introduction to Compound Types
15.4
Compound Type CDL Example
15.5
Using Compound Types
15.6
Using Enums
15.7
Uses of Enumerations
15.8
Enum CDL Example
15.9
Enum Example
15.10
Using the Opaque Type
15.11
Variable-Length Types
15.12
Introuction to Variable Length Types
15.13
CDL Example of Variable-Length Types
15.14
Variable Length C Example
15.15
Using Variable Length Types, Continued
15.16
Sea Sounding Example Code
15.17
Sea Sounding Example
16
Porting and Testing the NetCDF C/Fortran/C++ Libraries
16.0
The NetCDF Daily Snapshot
16.1
Testing the NetCDF Libraries
16.2
Test Output
16.3
NetCDF Test Results are Available on the Web
16.4
Even More NetCDF Test Results are Available on the Web
16.5
Porting NetCDF
16.6
The Configure Script
16.7
The Configure Script
16.8
Configure Options for NetCDF
16.9
Make Targets
16.10
Building NetCDF on Supercomputers
16.11
The NetCDF C/Fortran/C++ Libraries on Windows
16.12
Future Plase for NetCDF
17
Wrap-Up and Questions