! +-======-+ ! Copyright (c) 2003-2007 United States Government as represented by ! the Admistrator of the National Aeronautics and Space Administration. ! All Rights Reserved. ! ! THIS OPEN SOURCE AGREEMENT ("AGREEMENT") DEFINES THE RIGHTS OF USE, ! REPRODUCTION, DISTRIBUTION, MODIFICATION AND REDISTRIBUTION OF CERTAIN ! COMPUTER SOFTWARE ORIGINALLY RELEASED BY THE UNITED STATES GOVERNMENT AS ! REPRESENTED BY THE GOVERNMENT AGENCY LISTED BELOW ("GOVERNMENT AGENCY"). ! THE UNITED STATES GOVERNMENT, AS REPRESENTED BY GOVERNMENT AGENCY, IS AN ! INTENDED THIRD-PARTY BENEFICIARY OF ALL SUBSEQUENT DISTRIBUTIONS OR ! REDISTRIBUTIONS OF THE SUBJECT SOFTWARE. ANYONE WHO USES, REPRODUCES, ! DISTRIBUTES, MODIFIES OR REDISTRIBUTES THE SUBJECT SOFTWARE, AS DEFINED ! HEREIN, OR ANY PART THEREOF, IS, BY THAT ACTION, ACCEPTING IN FULL THE ! RESPONSIBILITIES AND OBLIGATIONS CONTAINED IN THIS AGREEMENT. ! ! Government Agency: National Aeronautics and Space Administration ! Government Agency Original Software Designation: GSC-15354-1 ! Government Agency Original Software Title: GEOS-5 GCM Modeling Software ! User Registration Requested. Please Visit http://opensource.gsfc.nasa.gov ! Government Agency Point of Contact for Original Software: ! Dale Hithon, SRA Assistant, (301) 286-2691 ! ! +-======-+ ! $Id$ #ifdef TYPE_ #undef TYPE_ #endif #ifdef MPITYPE_ #undef MPITYPE_ #endif #ifdef TYPEKIND_ #undef TYPEKIND_ #endif #ifdef SUB_ #undef SUB_ #endif #ifdef SUB__ #undef SUB__ #endif #ifdef SUB___ #undef SUB___ #endif #ifdef EKIND_ #undef EKIND_ #endif #ifdef EKIND__ #undef EKIND__ #endif #ifdef EKIND___ #undef EKIND___ #endif #if (VARTYPE_ == 0) #define MPITYPE_ MPI_BYTE #define TYPEKIND_ STRING #elif (VARTYPE_ == 1) #define MPITYPE_ MPI_INTEGER #define TYPE_ INTEGER #define TYPEKIND_ I4 #elif (VARTYPE_ == 2) #define MPITYPE_ MPI_LOGICAL #define TYPE_ LOGICAL #define TYPEKIND_ L4 #elif (VARTYPE_ == 3) #define MPITYPE_ MPI_REAL #define TYPE_ REAL #define TYPEKIND_ R4 #elif (VARTYPE_ == 4) #define MPITYPE_ MPI_DOUBLE_PRECISION #define TYPE_ REAL #define TYPEKIND_ R8 #endif #define TKR_ FOO__(TYPEKIND_,RANK_) #define FOO__(A,B) FOO___(A,B) #define FOO___(A,B) A ## _ ## B #define SUB_ SUB__(NAME_,TYPEKIND_,RANK_) #define SUB__(N, A,B) SUB___(N, A,B) #define SUB___(N,A,B) N ## A ## _ ## B #define EKIND_ EKIND__(TYPEKIND_) #define EKIND__(A) EKIND___(A) #define EKIND___(A) ESMF_KIND_ ## A #define SUBNAME_(A) #A #define SUBNAME__(A) SUBNAME_(A) #if (RANK_ == 0) #define DIMENSIONS_ #endif #if (RANK_ == 1) #define DIMENSIONS_ (:) #endif #if (RANK_ == 2) #define DIMENSIONS_ (:,:) #endif #if (RANK_ == 3) #define DIMENSIONS_ (:,:,:) #endif #if (RANK_ == 4) #define DIMENSIONS_ (:,:,:,:) #endif