From 691a845f125497603b566ecac90540d42a74683c Mon Sep 17 00:00:00 2001 From: Edward Hartnett Date: Sat, 30 Sep 2023 15:50:55 -0600 Subject: [PATCH 1/7] removed unused file --- src/list_of_files.cmake | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/list_of_files.cmake diff --git a/src/list_of_files.cmake b/src/list_of_files.cmake deleted file mode 100644 index e69de29b..00000000 From 4dc0557db6045aa509ebe45cc9eba08257805b9b Mon Sep 17 00:00:00 2001 From: Edward Hartnett Date: Sun, 1 Oct 2023 06:47:20 -0600 Subject: [PATCH 2/7] updated authors --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 4595742e..ef0fc2b9 100644 --- a/README.md +++ b/README.md @@ -42,10 +42,10 @@ Brian Curtis, Armand Desmarais, M. Farley, Robert C. Gammill, George Gayno, Kyle Gerheiser, Stephen Gilbert, Edward Hartnett, A. Heermann, Dom Heinzeller, Peter Henrichsen, Robert Hirano, J. Horodeck, James Howcroft, Mark Iredell, Ralph Jones, Dennis Keyser, R. Kistler, -V. Krasnopolsky, Luke Lin, A.J. McClees, L. Marx, James McDonell, -Shelley Melchior, J. Newell, Alan Nierow, John Stackpole, Joe Sela, -B. Struble, Zoltan Toth, Boi Vuong, Jun Wang, Dexin Zhang, other -NCEP/EMC developers. +V. Krasnopolsky, Hang Lei, Luke Lin, A.J. McClees, L. Marx, James McDonell, +Shelley Melchior, J. Newell, Alan Nierow, Joe Sela, David Shimomura, +John Stackpole, B. Struble, Zoltan Toth, Boi Vuong, Jun Wang, Dexin +Zhang, other NCEP/EMC developers. Code manager: [Alex Richert](mailto:alexander.richert@noaa.gov), [Hang Lei](mailto:hang.lei@noaa.gov), [Edward From 0347a8cfd695502c47fa1f060aeae5c3cc97d9da Mon Sep 17 00:00:00 2001 From: Edward Hartnett Date: Mon, 2 Oct 2023 03:30:53 -0600 Subject: [PATCH 3/7] improved doxygen --- src/mersenne_twister.f | 55 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/src/mersenne_twister.f b/src/mersenne_twister.f index e819a3bb..81484e23 100644 --- a/src/mersenne_twister.f +++ b/src/mersenne_twister.f @@ -5,17 +5,22 @@ !> This module calculates random numbers using the Mersenne twister. !> (It has been adapted to a Fortran 90 module from open source software. !> The comments from the original software are given below in the remarks.) +!> !> The Mersenne twister (aka MT19937) is a state-of-the-art random number !> generator based on Mersenne primes and originally developed in 1997 by !> Matsumoto and Nishimura. It has a period before repeating of 2^19937-1, -!> which certainly should be good enough for geophysical purposes. :-) +!> which certainly should be good enough for geophysical purposes. +!> !> Considering the algorithm's robustness, it runs fairly speedily. !> (Some timing statistics are given below in the remarks.) +!> !> This adaptation uses the standard Fortran 90 random number interface, !> which can generate an arbitrary number of random numbers at one time. !> The random numbers generated are uniformly distributed between 0 and 1. +!> !> The module also can generate random numbers from a Gaussian distribution !> with mean 0 and standard deviation 1, using a Numerical Recipes algorithm. +!> !> The module also can generate uniformly random integer indices. !> There are also thread-safe versions of the generators in this adaptation, !> necessitating the passing of generator states which must be kept private. @@ -142,11 +147,14 @@ module mersenne_twister end interface ! All the subprograms contains + !> Sets and gets state; overloads Fortran 90 standard. !> @param[out] size Optional integer output size of seed array. !> @param[in] put Optional integer(:) input seed array. !> @param[out] get Optional integer(:) output seed array. !> @param[inout] stat Optional type(random_stat) (thread-safe mode). +!> +!> @author Mark Iredell @date 2005-06-14 subroutine random_seed(size,put,get,stat) implicit none integer,intent(out),optional:: size @@ -203,16 +211,22 @@ subroutine random_seed(size,put,get,stat) endif endif end subroutine + !> Sets seed in saved mode. !> @param[in] inseed Integer seed input. +!> +!> @author Mark Iredell @date 2005-06-14 subroutine random_setseed_s(inseed) implicit none integer,intent(in):: inseed call random_setseed_t(inseed,sstat) end subroutine + !> Sets seed in thread-safe mode. !> @param[in] inseed Integer seed input !> @param[out] stat Type(random_stat) output +!> +!> @author Mark Iredell @date 2005-06-14 subroutine random_setseed_t(inseed,stat) implicit none integer,intent(in):: inseed @@ -228,8 +242,11 @@ subroutine random_setseed_t(inseed,stat) stat%iset=0 stat%gset=0. end subroutine + !> Generates random numbers in functional mode. !> @result harvest Real number output. +!> +!> @author Mark Iredell @date 2005-06-14 function random_number_f() result(harvest) implicit none real:: harvest @@ -238,9 +255,12 @@ function random_number_f() result(harvest) call random_number_t(h,sstat) harvest=h(1) end function + !> Generates random numbers in interactive mode. !> @param[out] harvest Real(:) numbers output. !> @param[in] inseed Integer seed input. +!> +!> @author Mark Iredell @date 2005-06-14 subroutine random_number_i(harvest,inseed) implicit none real,intent(out):: harvest(:) @@ -249,17 +269,23 @@ subroutine random_number_i(harvest,inseed) call random_setseed_t(inseed,stat) call random_number_t(harvest,stat) end subroutine + !> Generates random numbers in saved mode; overloads Fortran 90 standard. !> @param[out] harvest Real(:) numbers output. +!> +!> @author Mark Iredell @date 2005-06-14 subroutine random_number_s(harvest) implicit none real,intent(out):: harvest(:) if(sstat%mti.eq.n+1) call random_setseed_t(iseed,sstat) call random_number_t(harvest,sstat) end subroutine + !> Generates random numbers in thread-safe mode. !> @param[out] harvest Real(:) numbers output !> @param[inout] stat Type(random_stat) input +!> +!> @author Mark Iredell @date 2005-06-14 subroutine random_number_t(harvest,stat) implicit none real,intent(out):: harvest(:) @@ -300,8 +326,11 @@ subroutine random_number_t(harvest,stat) stat%mti=stat%mti+1 enddo end subroutine + !> Generates Gaussian random numbers in functional mode. !> @result harvest Real number output. +!> +!> @author Mark Iredell @date 2005-06-14 function random_gauss_f() result(harvest) implicit none real:: harvest @@ -310,9 +339,12 @@ function random_gauss_f() result(harvest) call random_gauss_t(h,sstat) harvest=h(1) end function + !> Generates Gaussian random numbers in interactive mode. !> @param[out] harvest Real(:) numbers output. !> @param[in] inseed Integer seed input. +!> +!> @author Mark Iredell @date 2005-06-14 subroutine random_gauss_i(harvest,inseed) implicit none real,intent(out):: harvest(:) @@ -321,17 +353,23 @@ subroutine random_gauss_i(harvest,inseed) call random_setseed_t(inseed,stat) call random_gauss_t(harvest,stat) end subroutine + !> Generates Gaussian random numbers in saved mode. !> @param[out] harvest Real(:) numbers output. +!> +!> @author Mark Iredell @date 2005-06-14 subroutine random_gauss_s(harvest) implicit none real,intent(out):: harvest(:) if(sstat%mti.eq.n+1) call random_setseed_t(iseed,sstat) call random_gauss_t(harvest,sstat) end subroutine + !> Generates Gaussian random numbers in thread-safe mode. !> @param[out] harvest Real(:) numbers output. !> @param[inout] stat Type(random_stat) input. +!> +!> @author Mark Iredell @date 2005-06-14 subroutine random_gauss_t(harvest,stat) implicit none real,intent(out):: harvest(:) @@ -370,12 +408,15 @@ subroutine random_gauss_t(harvest,stat) stat%iset=1 endif contains + !> Numerical Recipes algorithm to generate Gaussian random numbers. !> @param[in] r1 !> @param[in] r2 !> @param[out] r !> @param[out] g1 !> @param[out] g2 +!> +!> @author Mark Iredell @date 2005-06-14 subroutine rgauss(r1,r2,r,g1,g2) real,intent(in):: r1,r2 real,intent(out):: r,g1,g2 @@ -390,9 +431,12 @@ subroutine rgauss(r1,r2,r,g1,g2) endif end subroutine end subroutine + !> Generates random indices in functional mode. !> @param[in] imax Integer maximum index input !> @result iharvest Integer number output +!> +!> @author Mark Iredell @date 2005-06-14 function random_index_f(imax) result(iharvest) implicit none integer,intent(in):: imax @@ -402,10 +446,13 @@ function random_index_f(imax) result(iharvest) call random_index_t(imax,ih,sstat) iharvest=ih(1) end function + !> Generates random indices in interactive mode. !> @param [input] imax Integer maximum index input. !> @param[out] iharvest Integer(:) numbers output. !> @param[in] inseed Integer seed input. +!> +!> @author Mark Iredell @date 2005-06-14 subroutine random_index_i(imax,iharvest,inseed) implicit none integer,intent(in):: imax @@ -415,9 +462,12 @@ subroutine random_index_i(imax,iharvest,inseed) call random_setseed_t(inseed,stat) call random_index_t(imax,iharvest,stat) end subroutine + !> Generates random indices in saved mode. !> @param[in] imax Integer maximum index input. !> @param[out] iharvest Integer(:) numbers output. +!> +!> @author Mark Iredell @date 2005-06-14 subroutine random_index_s(imax,iharvest) implicit none integer,intent(in):: imax @@ -425,10 +475,13 @@ subroutine random_index_s(imax,iharvest) if(sstat%mti.eq.n+1) call random_setseed_t(iseed,sstat) call random_index_t(imax,iharvest,sstat) end subroutine + !> Generates random indices in thread-safe mode. !> @param[in] imax Integer maximum index input. !> @param[out] iharvest Integer(:) numbers output. !> @param[inout] stat Type(random_stat) input. +!> +!> @author Mark Iredell @date 2005-06-14 subroutine random_index_t(imax,iharvest,stat) implicit none integer,intent(in):: imax From 68f68671828531f16116814313c54480b803de19 Mon Sep 17 00:00:00 2001 From: Edward Hartnett Date: Mon, 2 Oct 2023 04:36:36 -0600 Subject: [PATCH 4/7] more documentation improvements --- docs/user_guide.md | 287 +++++++++++++++++++++++++++++++++++++++++++-- src/instrument.f | 1 - src/putgbe.f | 2 +- src/putgben.f | 2 +- 4 files changed, 282 insertions(+), 10 deletions(-) diff --git a/docs/user_guide.md b/docs/user_guide.md index 1395fe89..a9b4a914 100644 --- a/docs/user_guide.md +++ b/docs/user_guide.md @@ -1,15 +1,288 @@ @mainpage -## NCEPLIBS-w3emc +# Introduction -## Documentation for Previous Versions +This library contains Fortran 77 decoder/encoder routines for GRIB +edition 1. + +This library also contains a module mersenne_twister, a random number +generator that uses the Mersenne twister (aka MT19937). + +## GRIB1 Parameters + +* idsdef() +* r63w72() + +## Reading GRIB1 Files + +* skgb() +* w3unpk77() +* w3miscan() + +## Packing and Writing GRIB1 Files + +* putgbe() +* putgben() +* putgbens() +* putgbex() +* putgb() +* putgbn() +* w3nogds()xs + +## Product Definition Section + +* iw3pds() +* pdsens() +* pdseup() + +## Grid Description Section + +* lengds() +* makgds() + +## WMO Headers + +* makwmo() +* mkfldsep() + +## Reading Formats + +* iw3unp29() +* w3ai01() + +## Index Files for GRIB1 Files + +The NCEPLIBS-w3emc library supports index files which contain the +byte-offsets of a GRIB1 file. Index files can improve performance when +reading large GRIB files. + +The following subroutines work with index file: +* ixgb() +* getgb1() +* getgb1re() +* getgb1r() +* getgb1s() +* getgbe() +* getgbeh() +* getgbem() +* getgbemh() +* getgbemn() +* getgbemp() +* getgbens() +* getgbep() +* getgbex() +* getgbexm() +* getgb() +* getgbh() +* getgbm() +* getgbmh() +* getgbmp() +* getgbp() +* getgi() +* getgir() + +## Bit and Byte Manipulation + +The following functions manipulate bits and bytes to pack or unpack a +GRIB1 message: +* gtbits() +* fparsei() +* fparser() +* gbyte(), gbytec(), gbytes(), gbytesc() +* sbyte(), sbytec(), sbytes(), sbytesc() +* getbit() +* iw3mat() +* isrchne() +* mova2i() +* q9ie32() +* xmovex(), xstore() +* w3ymdh4() +* w3ai00() +* w3ai01() +* w3ai08() +* w3ai15() +* w3ai18() +* w3ai19() +* w3ai24() +* w3ai38() +* w3ai39() +* w3ai40() +* w3ai41() +* w3aq15() +* w3as00() + +## Date/Time + +* w3valdat() +* w3utcdat() +* w3reddat() +* w3pradat() +* w3movdat() +* w3locdat() +* w3fs13() +* w3fs15() +* w3fs21() +* w3fs26() +* w3ctzdat() +* w3difdat() +* w3doxdat() + +## Sorting + +* orders() +## Error Handling + +The following subroutines are used for error handling: +* errexit() +* errmsg() + +## Command Line Arguments + +* w3trnarg() + +## Code Instrumentation + +Code instrumentation is supported with instrument() and summary.c. See also: +* w3tagb() +* w3kind() + +## Dummy Subroutines + +Some legacy dummy subroutines are in xdopen.f. See also w3log(). + +## Conversions + +* w3fa01() +* w3fa03() +* w3fa03v() +* w3fa04() +* w3fa06() +* w3fa09() +* w3fa11() +* w3fa12() +* w3fa13() + +## Coordinates + +* w3fb00() +* w3fb01() +* w3fb02() +* w3fb03() +* w3fb04() +* w3fb05() +* w3fb06() +* w3fb07() +* w3fb08() +* w3fb09() +* w3fb10() +* w3fb11() +* w3fb12() +* w3fc02() +* w3fc05() +* w3fc06() +* w3fc07() +* w3fc08() + +## Many Office-Note 85 Subroutines + +* w3fi01() +* w3fi02() +* w3fi03() +* w3fi04() +* w3fi18() +* w3fi19() +* w3fi20() +* w3fi32() +* w3fi47() +* w3fi48() +* w3fi52() +* w3fi58() +* w3fi59() +* w3fi61() +* w3fi62() +* w3fi63() +* w3fi64() +* w3fi65() +* w3fi66() +* w3fi67() +* w3fi68() +* w3fi69() +* w3fi70() +* w3fi71() +* w3fi72() +* w3fi73() +* w3fi74() +* w3fi75() +* w3fi76() +* w3fi78() +* w3fi82() +* w3fi83() +* w3fi85() +* w3fi88() +* w3fi92() + +## 9-Point Smoother + +* w3fm07() +* w3fm08() + +## Printing + +* w3fp04() +* w3fp05() +* w3fp06() +* w3fp10() +* w3fp11() +* w3fp12() +* w3fp13() +* w3fq07() + +## Transformation + +* w3ft00() +* w3ft01() +* w3ft02() +* w3ft03() +* w3ft05() +* w3ft05v() +* w3ft06() +* w3ft06v() +* w3ft07() +* w3ft08() +* w3ft09() +* w3ft10() +* w3ft11() +* w3ft12() +* w3ft16() +* w3ft17() +* w3ft201() +* w3ft202() +* w3ft203() +* w3ft204() +* w3ft205() +* w3ft206() +* w3ft207() +* w3ft208() +* w3ft209() +* w3ft210() +* w3ft211() +* w3ft212() +* w3ft213() +* w3ft214() +* w3ft21() +* w3ft26() +* w3ft32() +* w3ft33() +* w3ft38() +* w3ft39() +* w3ft40() +* w3ft41() + +# Documentation for Previous Versions + +* [NCEPLIBS-w3emc Version 2.11.0](ver-2.11.0/index.html) * [NCEPLIBS-w3emc Version 2.10.0](ver-2.10.0/index.html) * [NCEPLIBS-w3emc Version 2.9.3](ver-2.9.3/index.html) * [NCEPLIBS-w3emc Version 2.9.2](ver-2.9.2/index.html) -## Introduction - -This library contains Fortran 77 decoder/encoder routines for GRIB -edition 1. - diff --git a/src/instrument.f b/src/instrument.f index 6f950c26..c5f904b5 100644 --- a/src/instrument.f +++ b/src/instrument.f @@ -2,7 +2,6 @@ !> @brief Monitor wall-clock times, etc. !> @author Mark Iredell @date 1998-07-16 -!> !> This subprogram is useful in instrumenting a code !> by monitoring the number of times each given section !> of a program is invoked as well as the minimum, maximum diff --git a/src/putgbe.f b/src/putgbe.f index b857b9ee..aaff478b 100644 --- a/src/putgbe.f +++ b/src/putgbe.f @@ -2,7 +2,7 @@ C> @brief Packs and writes a grib message. C> @author Mark Iredell @date 1994-04-01 -C> THIS SUBPROGRAM IS NEARLY THE INVERSE OF GETGBE. +C> This subprogram is nearly the inverse of getgbe. C> C> Program history log: C> - Mark Iredell 1994-04-01 diff --git a/src/putgben.f b/src/putgben.f index 5dba12d9..a24f0f68 100644 --- a/src/putgben.f +++ b/src/putgben.f @@ -2,7 +2,7 @@ C> @brief Packs and writes a grib message. C> @author Mark Iredell @date 1994-04-01 -C> THIS SUBPROGRAM IS NEARLY THE INVERSE OF GETGBE. +C> This subprogram is nearly the inverse of getgbe. C> C> Program history log: C> - Mark Iredell 1994-04-01 From ddc69a137006f4b3a720d41e17408ea1344a2a83 Mon Sep 17 00:00:00 2001 From: Edward Hartnett Date: Mon, 2 Oct 2023 04:44:07 -0600 Subject: [PATCH 5/7] more doxygen fixes --- docs/user_guide.md | 2 +- src/iw3pds.f | 8 ++++---- src/makgds.f90 | 23 ++++++++++------------- 3 files changed, 15 insertions(+), 18 deletions(-) diff --git a/docs/user_guide.md b/docs/user_guide.md index a9b4a914..2b77cd16 100644 --- a/docs/user_guide.md +++ b/docs/user_guide.md @@ -184,7 +184,7 @@ Some legacy dummy subroutines are in xdopen.f. See also w3log(). * w3fc07() * w3fc08() -## Many Office-Note 85 Subroutines +## Office-Note 85 Subroutines * w3fi01() * w3fi02() diff --git a/src/iw3pds.f b/src/iw3pds.f index 0dd9dbd1..f91dc3bb 100644 --- a/src/iw3pds.f +++ b/src/iw3pds.f @@ -2,9 +2,7 @@ C> @brief Test two pds (grib product definition section) to see C> if all equal; otherwise .false. C> @author Ralph Jones @date 1988-02-22 -C> FUNCTION: IW3PDS TEST FOR MATCH OF TWO PDS -C> AUTHOR: JONES, R.E. ORG: W342 DATE: 88-02-22 -C> + C> Test two pds (grib product definition section) to see C> if all equal; otherwise .false. if key = 1, all 24 characters C> are tested, if key = 0 , the date (characters 13-17) are not @@ -32,13 +30,15 @@ C> - 1, match 24 bytes of pds C> - 2, match bytes 1-3, 5-12 of pds C> - 3, match bytes 1-3, 7-12 of pds -C> @param[out] IW3PDB logical .true. if l1 and l2 match on all char., +C> +C> @return logical .true. if l1 and l2 match on all char., C> logical .false. if not match on any char. C> C> @note Alias added because of name change in grib write up. C> Name of pdb (product definition block) was changd to pds C> (product definition section). C> +C> @author Ralph Jones @date 1988-02-22 LOGICAL FUNCTION IW3PDS(L1, L2, KEY) C CHARACTER*1 L1(24) diff --git a/src/makgds.f90 b/src/makgds.f90 index b8f5c28a..5f8fd9be 100644 --- a/src/makgds.f90 +++ b/src/makgds.f90 @@ -1,3 +1,7 @@ +!> @file +!! @brief Make or break a grid description section. +!! @author Mark Iredell @date April 1996 + !> This subprogram makes or breaks a grid description section. !! !! It can do one of the following: @@ -10,11 +14,8 @@ !! - IOPT=-1 TO UNPACK GDS INTO KGDS; !! - IOPT=255 TO USE KGDS TO PACK GDS; !! - 00) !! @param[out] LENGDS - INTEGER LENGTH OF THE GDS (IF IOPT>0) -!! IRET - INTEGER RETURN CODE +!! @param[out] IRET - INTEGER RETURN CODE !! 0 SUCCESSFUL !! 1 GRID REPRESENTATION TYPE NOT VALID !! 4 DATA REPRESENTATION TYPE NOT CURRENTLY ACCEPTABLE !! -!! -!! @author Mark Iredell -!! @date April 1996 +!! @author Mark Iredell @date April 1996 SUBROUTINE MAKGDS(IOPT,KGDS,GDS,LENGDS,IRET) IMPLICIT NONE - ! + CHARACTER, INTENT(INOUT) :: GDS(400) - ! INTEGER, INTENT(IN ) :: IOPT INTEGER, INTENT(INOUT) :: KGDS(200) INTEGER, INTENT( OUT) :: IRET, LENGDS - ! INTEGER :: ICOMP, IPDS(200), IGDS(200) INTEGER :: KPTR(200), KPDS(200), NPTS - ! + DATA KPTR/200*0/, KPDS/200*0/ ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ! UNPACK GDS INTO KGDS From 92500eba8a3ec29245cb8dedf920e569c349c368 Mon Sep 17 00:00:00 2001 From: Edward Hartnett Date: Mon, 2 Oct 2023 04:46:40 -0600 Subject: [PATCH 6/7] more doxygen fixes --- docs/user_guide.md | 2 +- src/getbit.f | 2 +- src/w3fa03v.f | 2 +- src/w3fa12.f | 2 +- src/w3fb05.f | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/user_guide.md b/docs/user_guide.md index 2b77cd16..ca6cf463 100644 --- a/docs/user_guide.md +++ b/docs/user_guide.md @@ -27,7 +27,7 @@ generator that uses the Mersenne twister (aka MT19937). * putgbex() * putgb() * putgbn() -* w3nogds()xs +* w3nogds() ## Product Definition Section diff --git a/src/getbit.f b/src/getbit.f index 3ba65a60..e0f9a6c3 100644 --- a/src/getbit.f +++ b/src/getbit.f @@ -1,7 +1,7 @@ C> @file C> @brief Compute number of bits and round field. C> @author Mark Iredell @date 1992-10-31 -C> + C> The number of bits required to pack a given field. C> The field is rounded off to the decimal scaling for packing. C> The minimum and maximum rounded field values are also returned. diff --git a/src/w3fa03v.f b/src/w3fa03v.f index f2ce1b19..fea056ac 100644 --- a/src/w3fa03v.f +++ b/src/w3fa03v.f @@ -1,7 +1,7 @@ C> @file C> @brief Compute standard height, temp, and pot temp. C> @author James McDonell @date 1974-06-01 -C> + C> Computes the standard height, temperature, and potential C> temperature given the pressure in millibars (>8.68 mb). For C> height and temperature the results duplicate the values in the diff --git a/src/w3fa12.f b/src/w3fa12.f index 521dbab5..7d96a956 100644 --- a/src/w3fa12.f +++ b/src/w3fa12.f @@ -1,7 +1,7 @@ C> @file C> @brief Computes legendre polynomials at a given latitude. C> @author Joe Sela @date 1980-10-28 -C> + C> Subroutine computes legendre polynomials at a given latitude. C> C> Program history log: diff --git a/src/w3fb05.f b/src/w3fb05.f index 55c7f3fc..a25e741a 100644 --- a/src/w3fb05.f +++ b/src/w3fb05.f @@ -1,7 +1,7 @@ C> @file C> @brief Grid coordinates to latitude, longitude. C> @author Ralph Jones @date 1986-07-17 -C> + C> Converts the coordinates of a location from the grid(i,j) C> coordinate system overlaid on the polar stereographic map projec- C> tion true at 60 degrees n or s latitude to the natural coordinate From cdb2a28bf8960ae93dd5be59b88e3677b84fa97b Mon Sep 17 00:00:00 2001 From: Edward Hartnett Date: Mon, 2 Oct 2023 04:52:45 -0600 Subject: [PATCH 7/7] improving user_guide --- docs/user_guide.md | 152 +++++++-------------------------------------- 1 file changed, 23 insertions(+), 129 deletions(-) diff --git a/docs/user_guide.md b/docs/user_guide.md index ca6cf463..11672f60 100644 --- a/docs/user_guide.md +++ b/docs/user_guide.md @@ -86,8 +86,7 @@ The following subroutines work with index file: The following functions manipulate bits and bytes to pack or unpack a GRIB1 message: * gtbits() -* fparsei() -* fparser() +* fparsei(), fparser() * gbyte(), gbytec(), gbytes(), gbytesc() * sbyte(), sbytec(), sbytes(), sbytesc() * getbit() @@ -97,19 +96,8 @@ GRIB1 message: * q9ie32() * xmovex(), xstore() * w3ymdh4() -* w3ai00() -* w3ai01() -* w3ai08() -* w3ai15() -* w3ai18() -* w3ai19() -* w3ai24() -* w3ai38() -* w3ai39() -* w3ai40() -* w3ai41() -* w3aq15() -* w3as00() +* w3ai00(), w3ai01(), w3ai08(), w3ai15(), w3ai18(), w3ai19(), + w3ai24(), w3ai38(), w3ai39(), w3ai40(), w3ai41(), w3aq15(), w3as00() ## Date/Time @@ -119,10 +107,7 @@ GRIB1 message: * w3pradat() * w3movdat() * w3locdat() -* w3fs13() -* w3fs15() -* w3fs21() -* w3fs26() +* w3fs13(), w3fs15(), w3fs21(), w3fs26() * w3ctzdat() * w3difdat() * w3doxdat() @@ -153,131 +138,40 @@ Some legacy dummy subroutines are in xdopen.f. See also w3log(). ## Conversions -* w3fa01() -* w3fa03() -* w3fa03v() -* w3fa04() -* w3fa06() -* w3fa09() -* w3fa11() -* w3fa12() -* w3fa13() +* w3fa01(), w3fa03(), w3fa03v(), w3fa04(), w3fa06(), w3fa09(), w3fa11(), w3fa12(), w3fa13() ## Coordinates -* w3fb00() -* w3fb01() -* w3fb02() -* w3fb03() -* w3fb04() -* w3fb05() -* w3fb06() -* w3fb07() -* w3fb08() -* w3fb09() -* w3fb10() -* w3fb11() -* w3fb12() -* w3fc02() -* w3fc05() -* w3fc06() -* w3fc07() -* w3fc08() +* w3fb00(), w3fb01(), w3fb02(), w3fb03(), w3fb04(), w3fb05(), + w3fb06(), w3fb07(), w3fb08(), w3fb09(), w3fb10(), w3fb11(), + w3fb12(), w3fc02(), w3fc05(), w3fc06(), w3fc07(), w3fc08() ## Office-Note 85 Subroutines -* w3fi01() -* w3fi02() -* w3fi03() -* w3fi04() -* w3fi18() -* w3fi19() -* w3fi20() -* w3fi32() -* w3fi47() -* w3fi48() -* w3fi52() -* w3fi58() -* w3fi59() -* w3fi61() -* w3fi62() -* w3fi63() -* w3fi64() -* w3fi65() -* w3fi66() -* w3fi67() -* w3fi68() -* w3fi69() -* w3fi70() -* w3fi71() -* w3fi72() -* w3fi73() -* w3fi74() -* w3fi75() -* w3fi76() -* w3fi78() -* w3fi82() -* w3fi83() -* w3fi85() -* w3fi88() -* w3fi92() +* w3fi01(), w3fi02(), w3fi03(), w3fi04(), w3fi18(), w3fi19(), + w3fi20(), w3fi32(), w3fi47(), w3fi48(), w3fi52(), w3fi58(), + w3fi59(), w3fi61(), w3fi62(), w3fi63(), w3fi64(), w3fi65(), + w3fi66(), w3fi67(), w3fi68(), w3fi69(), w3fi70(), w3fi71(), + w3fi72(), w3fi73(), w3fi74(), w3fi75(), w3fi76(), w3fi78(), + w3fi82(), w3fi83(), w3fi85(), w3fi88(), w3fi92() ## 9-Point Smoother -* w3fm07() -* w3fm08() +* w3fm07(), w3fm08() ## Printing -* w3fp04() -* w3fp05() -* w3fp06() -* w3fp10() -* w3fp11() -* w3fp12() -* w3fp13() -* w3fq07() +* w3fp04(), w3fp05(), w3fp06(), w3fp10(), w3fp11(), w3fp12(), w3fp13(), w3fq07() ## Transformation -* w3ft00() -* w3ft01() -* w3ft02() -* w3ft03() -* w3ft05() -* w3ft05v() -* w3ft06() -* w3ft06v() -* w3ft07() -* w3ft08() -* w3ft09() -* w3ft10() -* w3ft11() -* w3ft12() -* w3ft16() -* w3ft17() -* w3ft201() -* w3ft202() -* w3ft203() -* w3ft204() -* w3ft205() -* w3ft206() -* w3ft207() -* w3ft208() -* w3ft209() -* w3ft210() -* w3ft211() -* w3ft212() -* w3ft213() -* w3ft214() -* w3ft21() -* w3ft26() -* w3ft32() -* w3ft33() -* w3ft38() -* w3ft39() -* w3ft40() -* w3ft41() +* w3ft00(), w3ft01(), w3ft02(), w3ft03(), w3ft05(), w3ft05v(), + w3ft06(), w3ft06v(), w3ft07(), w3ft08(), w3ft09(), w3ft10(), + w3ft11(), w3ft12(), w3ft16(), w3ft17(), w3ft201(), w3ft202(), + w3ft203(), w3ft204(), w3ft205(), w3ft206(), w3ft207(), w3ft208(), + w3ft209(), w3ft210(), w3ft211(), w3ft212(), w3ft213(), w3ft214(), + w3ft21(), w3ft26(), w3ft32(), w3ft33(), w3ft38(), w3ft39(), + w3ft40(), w3ft41() # Documentation for Previous Versions