From ab5c4b320f234994768897b03b686f77891ff731 Mon Sep 17 00:00:00 2001 From: kayee Date: Fri, 15 Apr 2022 23:34:05 -0600 Subject: [PATCH 1/2] This is part of Issue #392. Fixes the doxygen warnings in SCLFLD.f SELECT_CHANNELS.f SET_OUTFLDS.f SETUP_SERVERS.f SMOOTH.f TRPAUS.f TRPAUS_NAM.f WETFRZLV.f WRFPOST.f ZENSUN.f --- sorc/ncep_post.fd/SCLFLD.f | 59 +++++------- sorc/ncep_post.fd/SELECT_CHANNELS.f | 36 +++----- sorc/ncep_post.fd/SETUP_SERVERS.f | 68 ++++---------- sorc/ncep_post.fd/SET_OUTFLDS.f | 58 ++++-------- sorc/ncep_post.fd/SMOOTH.f | 136 ++++++++++++---------------- sorc/ncep_post.fd/TRPAUS.f | 79 ++++++---------- sorc/ncep_post.fd/TRPAUS_NAM.f | 69 ++++++-------- sorc/ncep_post.fd/WETFRZLVL.f | 74 ++++++--------- sorc/ncep_post.fd/WRFPOST.f | 97 ++++++-------------- sorc/ncep_post.fd/ZENSUN.f | 127 ++++++++++++-------------- 10 files changed, 300 insertions(+), 503 deletions(-) diff --git a/sorc/ncep_post.fd/SCLFLD.f b/sorc/ncep_post.fd/SCLFLD.f index fc4087ea8..0541c9039 100644 --- a/sorc/ncep_post.fd/SCLFLD.f +++ b/sorc/ncep_post.fd/SCLFLD.f @@ -1,42 +1,25 @@ !> @file -! -!> SUBPROGRAM: SCLFLD SCALE ARRAY ELEMENT BY CONSTANT -!! PRGRMMR: TREADON ORG: W/NP2 DATE: 92-09-13 -!! -!! ABSTRACT: -!! THIS ROUTINE MULTIPLES (SCALES) THE FIRST IMO*JMO -!! ELEMENTS OF ARRAY FLD BY THE REAL SCALAR SCALE. -!! ARRAY ELEMENTS WHICH EQUAL A SPECIAL VALUE WILL -!! NOT BE SCALED BY SCALE. THEY WILL BE LEFT AS IS. -!! THE SPECIAL VALUE, SPVAL, IS PASSED THROUGH COMMON -!! BLOCK OPTIONS. IT IS SET IN INCLUDE FILE OPTIONS. -!! -!! PROGRAM HISTORY LOG: -!! 92-09-13 RUSS TREADON -!! 00-01-04 JIM TUCCILLO -!! -!! USAGE: CALL SCLFLD(FLD,SCALE,IMO,JMO) -!! INPUT ARGUMENT LIST: -!! FLD - ARRAY WHOSE ELEMENTS ARE TO BE SCALED. -!! SCALE - CONSTANT BY WHICH TO SCALE ELEMENTS OF FLD. -!! IMO,JMO - DIMENSION OF ARRAY FLD. -!! -!! OUTPUT ARGUMENT LIST: -!! FLD - ARRAY WHOSE ELEMENTS HAVE BEEN SCALED BY SCALE. -!! -!! OUTPUT FILES: -!! NONE -!! -!! SUBPROGRAMS CALLED: -!! UTILITIES: -!! NONE -!! LIBRARY: -!! COMMON - OPTIONS -!! -!! ATTRIBUTES: -!! LANGUAGE: FORTRAN -!! MACHINE : CRAY C-90 -!! +!> sclfld() scale array element by constant. +!> +!> This routine multiples (scales) the first IMO*JMO +!> elements of array fld by the real scalar scale. +!> Array elements which equal a special value will +!> not be scaled by scale. They will be left as is. +!> The special value, spval, is passed through common +!> block options. It is set in include file options. +!> +!> @param[in] FLD Array whose elements are to be scaled. +!> @param[in] SCALE Constant by which to scale elements of fld. +!> @param[in] IMO,JMO Dimension of array fld. +!> @param[out] FLD Array whose elements have been scaled by scale. +!> +!> ### Program History Log +!> Date | Programmer | Comments +!> -----|------------|--------- +!> 1992-09-13 | Russ Treadon | Initial +!> 2000-01-04 | Jim Tuccillo | MPI Version +!> +!> @author Russ Treadon W/NP2 @date 1992-09-13 SUBROUTINE SCLFLD(FLD,SCALE,IMO,JMO) ! diff --git a/sorc/ncep_post.fd/SELECT_CHANNELS.f b/sorc/ncep_post.fd/SELECT_CHANNELS.f index f78828044..df8143ad7 100644 --- a/sorc/ncep_post.fd/SELECT_CHANNELS.f +++ b/sorc/ncep_post.fd/SELECT_CHANNELS.f @@ -1,27 +1,17 @@ !> @file -! -!> SELECT_CHANNEL -!! @author HWRF @date 20120927 -!! -!! Verify channel information and print error to output file if -!! detected, finally excuting a program STOP - which may cause -!! a hang condifition if run on multiple processors. -!! If data passed validation the channel indices passed in via -!! the "channels" array are stored in the structure defining -!! the channel object -!! -!! @param[inout] channelinfo - structure defining channel object -!! @param[in] nchannels - number of channels for sensor -!! @param[in] channels -!! -!! OUTPUT FILES: -!! NONE -!! -!! SUBPROGRAMS CALLED: -!! UTILITIES: NONE -!! -!! LIBRARY: NONE -!! +!> select_channels() verifies channel information and print error to output file if +!> detected, finally excuting a program STOP - which may cause +!> a hang condifition if run on multiple processors. +!> +!> If data passed validation the channel indices passed in via +!> the "channels" array are stored in the structure defining +!> the channel object. +!> +!> @param[inout] channelinfo structure defining channel object. +!> @param[in] nchannels number of channels for sensor. +!> @param[in] channels. +!> +!> @author HWRF @date 2012-09-27 subroutine SELECT_CHANNELS(channelinfo,nchannels,channels) use crtm_channelinfo_define, only: crtm_channelinfo_type diff --git a/sorc/ncep_post.fd/SETUP_SERVERS.f b/sorc/ncep_post.fd/SETUP_SERVERS.f index 9f2a2b084..c82b8955c 100644 --- a/sorc/ncep_post.fd/SETUP_SERVERS.f +++ b/sorc/ncep_post.fd/SETUP_SERVERS.f @@ -1,56 +1,20 @@ !> @file -! . . . -!> SUBROUTINE: SETUP_SERVERS SETUP I/O SERVERS -!! PRGRMMR: TUCCILLO ORG: IBM DATE: 00-03-20 -!! -!! ABSTRACT: SETUP I/O SERVERS -!! -!! PROGRAM HISTORY LOG: -!! 00-03-11 TUCCILLO - ORIGINATOR -!! -!! USAGE: CALL SETUP_SERVERS(MYPE, -!! * NPES, -!! * INUMQ, -!! * MPI_COMM_COMP, -!! * MPI_COMM_INTER) -!! -!! INPUT ARGUMENT LIST: -!! NONE -!! -!! OUTPUT ARGUMENT LIST: -!! MYPE - MY RANK -!! INUMQ - ARRAY THAT HOLDS THE NUMBER OF SERVERS IN EACH GROUP -!! NPES - NUMBER OF MPI TASKS FOR POSTING -!! MPI_COMM_COMP - THE NEW INTRACOMMUNICATOR FOR ALL TASKS -!! MPI_COMM_INTER - THE INTERCOMMUNICATOR FOR THE I/O SERVERS -!! -!! INPUT FILES: NONE -!! -!! OUTPUT FILES: -!! -!! SUBPROGRAMS CALLED: -!! UNIQUE: -!! PARA_RANGE -!! MPI_INIT -!! MPI_COMM_RANK -!! MPI_COMM_SIZE -!! MPI_COMM_DUP -!! MPI_COMM_SPLIT -!! MPI_COMM_GROUP -!! MPI_GROUP_EXCL -!! MPI_COMM_CREATE -!! MPI_GROUP_FREE -!! MPI_INTERCOMM_CREATE -!! MPI_BARRIER -!! -!! EXIT STATES: -!! COND = 0 - NORMAL EXIT -!! -!! ATTRIBUTES: -!! LANGUAGE: FORTRAN 90 -!! MACHINE : IBM SP -!! -!! +!> setup_servers() setups I/O servers. +!> +!> Setup I/O servers. +!> +!> @param[out] MYPE My rank. +!> @param[out] INUMQ Array that holds the number of servers in each group. +!> @param[out] NPES Number of MPI tasks for posting. +!> @param[out] MPI_COMM_COMP The new intracommunicator for all tasks. +!> @param[out] MPI_COMM_INTER The intercommunicator for the I/O servers. +!> +!> ### Program history log: +!> Date | Programmer | Comments +!> -----|------------|--------- +!> 2000-03-20 | Jim Tuccillo | Initial +!> +!> @author Jim Tuccillo IBM @date 2000-03-20 SUBROUTINE SETUP_SERVERS(MYPE, & & NPES, & & INUMQ, & diff --git a/sorc/ncep_post.fd/SET_OUTFLDS.f b/sorc/ncep_post.fd/SET_OUTFLDS.f index a12d60106..5563ee4cf 100644 --- a/sorc/ncep_post.fd/SET_OUTFLDS.f +++ b/sorc/ncep_post.fd/SET_OUTFLDS.f @@ -1,43 +1,23 @@ !> @file -! . . . -!> SUBPROGRAM: READCNTRLgrb2_xml READS POST xml CONTROL FILE -!! PRGRMMR: J. WANG ORG: NCEP/EMC DATE: 12-01-27 -!! -!! ABSTRACT: -!! THIS ROUTINE READS THE CONTROL FILE IN XML FORMAT SPECIFYING -!! FIELD(S) TO POST, AND SAVE ALL THE FIELD INFORMATION IN -!! A DATATYPE array PSET -!! -!! PROGRAM HISTORY LOG: -!! 01_27_2012 Jun Wang - INITIAL CODE -!! 03_10_2015 Lin Gan - Replace XML file with flat file implementation -!! 10_30_2019 Bo CUI - REMOVE "GOTO" STATEMENT - -!! -!! USAGE: CALL READCNTRL_XML(kth,kpv,pv,th) -!! INPUT ARGUMENT LIST: -!! KTH -!! TH -!! KPV -!! PV -!! -!! OUTPUT ARGUMENT LIST: -!! NONE - -!! -!! OUTPUT FILES: -!! NONE -!! -!! SUBPROGRAMS CALLED: -!! UTILITIES: -!! -!! LIBRARY: -!! COMMON - RQSTFLDGRB2 -!! CTLBLK -!! -!! ATTRIBUTES: -!! LANGUAGE: FORTRAN -!! MACHINE : IBM -!! +!> set_outflds() reads post xml control file. +!> +!> This routine reads the control file in xml format specifying +!> field(s) to post, and save all the field information in +!> a datatype array PSET. +!> +!> @param[in] KTH +!> @param[in] TH +!> @param[in] KPV +!> @param[in] PV +!> +!> ### Program History Log +!> Date | Programmer | Comments +!> -----|------------|--------- +!> 2012-01-27 | Jun Wang | Initial +!> 2015-03-10 | Lin Gan | Replace XML file with flat file implementation +!> 2019-10-30 | Bo Cui | Removw "GOTO" Statement +!> +!> @author J. Wang NCEP/EMC @date 2012-01-27 SUBROUTINE SET_OUTFLDS(kth,th,kpv,pv) ! diff --git a/sorc/ncep_post.fd/SMOOTH.f b/sorc/ncep_post.fd/SMOOTH.f index 4165affe5..606b00d8a 100644 --- a/sorc/ncep_post.fd/SMOOTH.f +++ b/sorc/ncep_post.fd/SMOOTH.f @@ -1,42 +1,33 @@ !> @file -! . . . . -!> SUBPROGRAM: SMOOTH SMOOTH A METEOROLOGICAL FIELD -!! PRGMMR: STAN BENJAMIN ORG: FSL/PROFS DATE: 90-06-15 -!! -!! ABSTRACT: SHAPIRO SMOOTHER. -!! -!! PROGRAM HISTORY LOG: -!! 85-12-09 S. BENJAMIN ORIGINAL VERSION -!! 14-03-03 S. Moorthi Threading and slight cleanup -!! -!! USAGE: CALL SMOOTH (FIELD,HOLD,IX,IY,SMTH) -!! INPUT ARGUMENT LIST: -!! FIELD - REAL ARRAY FIELD(IX,IY) -!! METEOROLOGICAL FIELD -!! HOLD - REAL ARRAY HOLD(IX,2) -!! HOLDING THE VALUE FOR FIELD -!! IX - INTEGER X COORDINATES OF FIELD -!! IY - INTEGER Y COORDINATES OF FIELD -!! SMTH - REAL -!! -!! OUTPUT ARGUMENT LIST: -!! FIELD - REAL ARRAY FIELD(IX,IY) -!! SMOOTHED METEOROLOGICAL FIELD -!! -!! REMARKS: REFERENCE: SHAPIRO, 1970: "SMOOTHING, FILTERING, AND -!! BOUNDARY EFFECTS", REV. GEOPHYS. SP. PHYS., 359-387. -!! THIS FILTER IS OF THE TYPE -!! Z(I) = (1-S)Z(I) + S(Z(I+1)+Z(I-1))/2 -!! FOR A FILTER WHICH IS SUPPOSED TO DAMP 2DX WAVES COMPLETELY -!! BUT LEAVE 4DX AND LONGER WITH LITTLE DAMPING, -!! IT SHOULD BE RUN WITH 2 PASSES USING SMTH (OR S) OF 0.5 -!! AND -0.5. -!! -!! ATTRIBUTES: -!! LANGUAGE: FORTRAN-77 + EXTENSIONS -!! MACHINE: NAS-9000, VAX, UNIX -!! - +!> smooth() smooths a meteorological field. +!> +!> Shapiro smoother. +!> +!> @param[in] FIELD Real array FIELD(IX,IY) Meteorological field. +!> @param[in] HOLD Real array HOLD(IX,2) Holding the value for field. +!> @param[in] IX Integer X Coordinates of field. +!> @param[in] IY Integer Y Coordinates of field. +!> @param[in] SMTH Real. +!> @param[out] FIELD Real array FIELD(IX,IY) Smoothed meteorological field. +!> +!> @note Reference: Shapiro, 1970: "Smoothing, filtering, and +!> boundary effects", REV. GEOPHYS. SP. PHYS., 359-387. +!> This filter is of the type +!> @code +!> Z(I) = (1-S)Z(I) + S(Z(I+1)+Z(I-1))/2 +!> @endcode +!> For a filter which is supposed to damp 2DX waves completely +!> but leave 4DX and longer with little damping, +!> it should be run with 2 passes using SMTH (or s) of 0.5 +!> and -0.5. +!> +!> ### Program history log: +!> Date | Programmer | Comments +!> -----|------------|--------- +!> 1990-06-15 | S. Benjamin | Initial +!> 2014-03-03 | S. Moorthi | Threading and slight cleanup +!> +!> @author Stan Benjamin FSL/PROFS @date 1990-06-15 !********************************************************************** !********************************************************************** @@ -99,45 +90,36 @@ SUBROUTINE SMOOTH (FIELD,HOLD,IX,IY,SMTH) RETURN END -!$$$ SUBPROGRAM DOCUMENTATION BLOCK -! . . . . -! SUBPROGRAM: SMOOTHC SMOOTH A METEOROLOGICAL FIELD -! PRGMMR: STAN BENJAMIN ORG: FSL/PROFS DATE: 90-06-15 -! -! ABSTRACT: SHAPIRO SMOOTHER. -! -! PROGRAM HISTORY LOG: -! 85-12-09 S. BENJAMIN ORIGINAL VERSION os SMOOTH -! 14-03-03 S. Moorthi Threading and slight cleanup -! 16-08-08 S. Moorthi modify for cyclic domain -! -! USAGE: CALL SMOOTH (FIELD,HOLD,IX,IY,SMTH) -! INPUT ARGUMENT LIST: -! FIELD - REAL ARRAY FIELD(IX,IY) -! METEOROLOGICAL FIELD -! HOLD - REAL ARRAY HOLD(IX,2) -! HOLDING THE VALUE FOR FIELD -! IX - INTEGER X COORDINATES OF FIELD -! IY - INTEGER Y COORDINATES OF FIELD -! SMTH - REAL -! -! OUTPUT ARGUMENT LIST: -! FIELD - REAL ARRAY FIELD(IX,IY) -! SMOOTHED METEOROLOGICAL FIELD -! -! REMARKS: REFERENCE: SHAPIRO, 1970: "SMOOTHING, FILTERING, AND -! BOUNDARY EFFECTS", REV. GEOPHYS. SP. PHYS., 359-387. -! THIS FILTER IS OF THE TYPE -! Z(I) = (1-S)Z(I) + S(Z(I+1)+Z(I-1))/2 -! FOR A FILTER WHICH IS SUPPOSED TO DAMP 2DX WAVES COMPLETELY -! BUT LEAVE 4DX AND LONGER WITH LITTLE DAMPING, -! IT SHOULD BE RUN WITH 2 PASSES USING SMTH (OR S) OF 0.5 -! AND -0.5. -! -! ATTRIBUTES: -! LANGUAGE: FORTRAN-77 + EXTENSIONS -! MACHINE: NAS-9000, VAX, UNIX -!$$$ +!> smoothc() smooths a meteorological field. +!> +!> Shapiro smoother. +!> +!> @param[in] FIELD Real array FIELD(IX,IY) Meteorological field. +!> @param[in] HOLD Real array HOLD(IX,2) Holding the value for field. +!> @param[in] IX Integer X Coordinates of field. +!> @param[in] IY Integer Y Coordinates of field. +!> @param[in] SMTH Real. +!> @param[out] FIELD Real array FIELD(IX,IY) Smoothed meteorological field. +!> +!> @note Reference: Shapiro, 1970: "Smoothing, filtering, and +!> boundary effects", REV. GEOPHYS. SP. PHYS., 359-387. +!> This filter is of the type +!> @code +!> Z(I) = (1-S)Z(I) + S(Z(I+1)+Z(I-1))/2 +!> @endcode +!> For a filter which is supposed to damp 2DX waves completely +!> but leave 4DX and longer with little damping, +!> it should be run with 2 passes using SMTH (or s) of 0.5 +!> and -0.5. +!> +!> ### Program history log: +!> Date | Programmer | Comments +!> -----|------------|--------- +!> 1985-12-09 | S. Benjamin | Original version os smooth +!> 2014-03-03 | S. Moorthi | Threading and slight cleanup +!> 2016-08-08 | S. Moorthi | Modify for cyclic domain +!> +!> @author Stan Benjamin FSL/PROFS @date 1990-06-15 !********************************************************************** !********************************************************************** diff --git a/sorc/ncep_post.fd/TRPAUS.f b/sorc/ncep_post.fd/TRPAUS.f index 2523717b5..40cfb05f8 100644 --- a/sorc/ncep_post.fd/TRPAUS.f +++ b/sorc/ncep_post.fd/TRPAUS.f @@ -1,53 +1,34 @@ !> @file -! -!> SUBPROGRAM: TRPAUS COMPUTE TROPOPAUSE DATA. -!! PRGRMMR: TREADON ORG: W/NP2 DATE: 92-12-22 -!! -!! ABSTRACT: -!! THIS ROUTINE COMPUTES TROPOPAUSE DATA. AT EACH MASS -!! POINT A SURFACE UP SEARCH IS MADE FOR THE FIRST -!! OCCURRENCE OF A THREE LAYER MEAN LAPSE RATE LESS THAN -!! OR EQUAL TO A CRITICAL LAPSE RATE. THIS CRITCAL LAPSE -!! RATE IS 2DEG/KM. THIS IS IN ACCORD WITH THE WMO -!! DEFINITION OF A TROPOPAUSE. A MAXIMUM TROPOPAUSE -!! PRESSURE OF 500MB IS ENFORCED. ONC THE TROPOPAUSE -!! IS LOCATED IN A COLUMN, PRESSURE, TEMPERATURE, U -!! AND V WINDS, AND VERTICAL WIND SHEAR ARE COMPUTED. -!! -!! PROGRAM HISTORY LOG: -!! 92-12-22 RUSS TREADON -!! 97-03-06 GEOFF MANIKIN - CHANGED CRITERIA FOR DETERMINING -!! THE TROPOPAUSE AND ADDED HEIGHT -!! 98-06-15 T BLACK - CONVERSION FROM 1-D TO 2-D -!! 00-01-04 JIM TUCCILLO - MPI VERSION -!! 02-04-23 MIKE BALDWIN - WRF VERSION -!! 19-10-30 Bo CUI - REMOVE "GOTO" STATEMENT - -!! -!! USAGE: CALL TRPAUS(PTROP,TTROP,ZTROP,UTROP,VTROP,SHTROP) -!! INPUT ARGUMENT LIST: -!! NONE -!! -!! OUTPUT ARGUMENT LIST: -!! PTROP - TROPOPAUSE PRESSURE. -!! TTROP - TROPOPAUSE TEMPERATURE. -!! ZTROP - TROPOPAUSE HEIGHT -!! UTROP - TROPOPAUSE U WIND COMPONENT. -!! VTROP - TROPOPAUSE V WIND COMPONENT. -!! SHTROP - VERTICAL WIND SHEAR AT TROPOPAUSE. -!! -!! OUTPUT FILES: -!! NONE -!! -!! SUBPROGRAMS CALLED: -!! UTILITIES: -!! -!! LIBRARY: -!! -!! ATTRIBUTES: -!! LANGUAGE: FORTRAN -!! MACHINE : CRAY C-90 -!! +!> trpaus() computes tropopause data. +!> +!> This routine computes tropopause data. At each mass +!> point a surface up search is made for the first +!> occurrence of a three layer mean lapse rate less than +!> or equal to a critical lapse rate. This critcal lapse +!> rate is 2deg/km. This is in accord with the WMO +!> definition of a tropopause. A maximum tropopause +!> pressure of 500mb is enforced. Onc the tropopause +!> is located in a column, pressure, temperature, u +!> and v winds, and vertical wind shear are computed. +!> +!> @param[out] PTROP Tropopause pressure. +!> @param[out] TTROP Tropopause temperature. +!> @param[out] ZTROP Tropopause height. +!> @param[out] UTROP Tropopause u wind component. +!> @param[out] VTROP Tropopause v wind component. +!> @param[out] SHTROP Vertical wind shear at tropopause. +!> +!> ### Program history log: +!> Date | Programmer | Comments +!> -----|------------|--------- +!> 1992-12-22 | Russ Treadon | Initial +!> 1997-03-06 | Geoff Manikin | Changed criteria for determining the tropopause and added height +!> 1998-06-15 | T Black | Conversion from 1-D TO 2-D +!> 2000-01-04 | Jim Tuccillo | MPI Version +!> 2002-04-23 | Mike Baldwin | WRF Version +!> 2019-10-30 | Bo Cui | ReMOVE "GOTO" STATEMENT +!> +!> @author Russ Treadon W/NP2 @date 1992-12-22 SUBROUTINE TRPAUS(PTROP,TTROP,ZTROP,UTROP,VTROP,SHTROP) ! diff --git a/sorc/ncep_post.fd/TRPAUS_NAM.f b/sorc/ncep_post.fd/TRPAUS_NAM.f index caf8785f4..7aa82eadc 100644 --- a/sorc/ncep_post.fd/TRPAUS_NAM.f +++ b/sorc/ncep_post.fd/TRPAUS_NAM.f @@ -1,43 +1,34 @@ !> @file -! -!> SUBPROGRAM: TRPAUS COMPUTE TROPOPAUSE DATA. -!! PRGRMMR: TREADON ORG: W/NP2 DATE: 92-12-22 -!! -!! ABSTRACT: -!! THIS ROUTINE COMPUTES TROPOPAUSE DATA. AT EACH MASS -!! POINT A SURFACE UP SEARCH IS MADE FOR THE FIRST -!! OCCURRENCE OF A THREE LAYER MEAN LAPSE RATE LESS THAN -!! OR EQUAL TO A CRITICAL LAPSE RATE. THIS CRITCAL LAPSE -!! RATE IS 2DEG/KM. THIS IS IN ACCORD WITH THE WMO -!! DEFINITION OF A TROPOPAUSE. A MAXIMUM TROPOPAUSE -!! PRESSURE OF 500MB IS ENFORCED. ONC THE TROPOPAUSE -!! IS LOCATED IN A COLUMN, PRESSURE, TEMPERATURE, U -!! AND V WINDS, AND VERTICAL WIND SHEAR ARE COMPUTED. -!! -!! PROGRAM HISTORY LOG: -!! - 92-12-22 RUSS TREADON -!! - 97-03-06 GEOFF MANIKIN - CHANGED CRITERIA FOR DETERMINING -!! THE TROPOPAUSE AND ADDED HEIGHT -!! - 98-06-15 T BLACK - CONVERSION FROM 1-D TO 2-D -!! - 00-01-04 JIM TUCCILLO - MPI VERSION -!! - 02-04-23 MIKE BALDWIN - WRF VERSION -!! - 19-10-30 Bo CUI - REMOVE "GOTO" STATEMENT -!! -!! USAGE: CALL TRPAUS(PTROP,TTROP,ZTROP,UTROP,VTROP,SHTROP) -!! INPUT ARGUMENT LIST: -!! NONE -!! -!! OUTPUT ARGUMENT LIST: -!! PTROP - TROPOPAUSE PRESSURE. -!! TTROP - TROPOPAUSE TEMPERATURE. -!! ZTROP - TROPOPAUSE HEIGHT -!! UTROP - TROPOPAUSE U WIND COMPONENT. -!! VTROP - TROPOPAUSE V WIND COMPONENT. -!! SHTROP - VERTICAL WIND SHEAR AT TROPOPAUSE. -!! -!! OUTPUT FILES: -!! NONE -!! +!> trpaus() computes tropopause data. +!> +!> This routine computes tropopause data. At each mass +!> point a surface up search is made for the first +!> occurrence of a three layer mean lapse rate less than +!> or equal to a critical lapse rate. This critcal lapse +!> rate is 2deg/km. This is in accord with the WMO +!> definition of a tropopause. A maximum tropopause +!> pressure of 500mb is enforced. Onc the tropopause +!> is located in a column, pressure, temperature, u +!> and v winds, and vertical wind shear are computed. +!> +!> @param[out] PTROP Tropopause pressure. +!> @param[out] TTROP Tropopause temperature. +!> @param[out] ZTROP Tropopause height. +!> @param[out] UTROP Tropopause u wind component. +!> @param[out] VTROP Tropopause v wind component. +!> @param[out] SHTROP Vertical wind shear at tropopause. +!> +!> ### Program history log: +!> Date | Programmer | Comments +!> -----|------------|--------- +!> 1992-12-22 | Russ Treadon | Initial +!> 1997-03-06 | Geoff Manikin | Changed criteria for determining the tropopause and added height +!> 1998-06-15 | T Black | Conversion from 1-D TO 2-D +!> 2000-01-04 | Jim Tuccillo | MPI Version +!> 2002-04-23 | Mike Baldwin | WRF Version +!> 2019-10-30 | Bo Cui | ReMOVE "GOTO" STATEMENT +!> +!> @author Russ Treadon W/NP2 @date 1992-12-22 SUBROUTINE TRPAUS(PTROP,TTROP,ZTROP,UTROP,VTROP,SHTROP) ! diff --git a/sorc/ncep_post.fd/WETFRZLVL.f b/sorc/ncep_post.fd/WETFRZLVL.f index a3aeeede5..143c8716d 100644 --- a/sorc/ncep_post.fd/WETFRZLVL.f +++ b/sorc/ncep_post.fd/WETFRZLVL.f @@ -1,52 +1,30 @@ !> @file -! . . . -!> SUBPROGRAM: WETFRZLVL COMPUTES LEVEL OF 0 WET BULB -!! PRGRMMR: MANIKIN ORG: W/NP2 DATE: 03-11-14 -!! -!! ABSTRACT: -!! THIS ROUTINE COMPUTES THE LOWEST HEIGHT WITH A WET BULB -!! TEMPERATURE OF FREEZING FOR EACH MASS POINT ON THE ETA GRID. -!! THE COMPUTED WET BULB ZERO HEIGHT IS THE MEAN SEA LEVEL -!! HEIGHT. AT EACH MASS POINT WE MOVE UP FROM THE SURFACE TO -!! FIND THE FIRST ETA LAYER WHERE THE TW IS LESS THAN -!! 273.16K. VERTICAL INTERPOLATION IN TEMPERATURE TO THE FREEZING -!! TEMPERATURE GIVES THE FREEZING LEVEL HEIGHT. PRESSURE AND -!! SPECIFIC HUMIDITY ARE INTERPOLATED TO THIS LEVEL AND ALONG WITH -!! THE TEMPERATURE PROVIDE THE FREEZING LEVEL RELATIVE HUMIDITY. -!! IF THE SURFACE (SKIN) TEMPERATURE IS BELOW FREEZING, THE ROUTINE -!! USES SURFACE BASED FIELDS TO COMPUTE THE RELATIVE HUMIDITY. -!! -!! PROGRAM HISTORY LOG: -!! 03-11-14 GEOFF MANIKIN - NEW PROGRAM -!! 04-12-06 G MANIKIN - CORRECTED COMPUTATION OF SFC TEMPERATURE -!! 05-03-11 H CHUANG - WRF VERSION -!! 21-07-26 W Meng - Restrict computation from undefined grids -!! -!! USAGE: CALL WETFRZLVL(TWET,ZWET) -!! INPUT ARGUMENT LIST: -!! TWET - WET BULB TEMPERATURES -!! -!! OUTPUT ARGUMENT LIST: -!! ZWET - ABOVE GROUND LEVEL HEIGHT OF LEVEL WITH 0 WET BULB. -!! -!! OUTPUT FILES: -!! NONE -!! -!! SUBPROGRAMS CALLED: -!! UTILITIES: -!! REL_HUM -!! LIBRARY: -!! COMMON - -!! LOOPS -!! PVRBLS -!! MASKS -!! MAPOT -!! POSTVAR -!! -!! ATTRIBUTES: -!! LANGUAGE: FORTRAN -!! MACHINE : CRAY C-90 -!! +!> wetfrzlvl() computes level of 0 wet bulb. +!> +!> This routine computes the lowest height with a wet bulb +!> temperature of freezing for each mass point on the eta grid. +!> The computed wet bulb zero height is the mean sea level +!> height. At each mass point we move up from the surface to +!> find the first eta layer where the tw is less than +!> 273.16K. Vertical interpolation in temperature to the freezing +!> temperature gives the freezing level height. Pressure and +!> specific humidity are interpolated to this level and along with +!> the temperature provide the freezing level relative humidity. +!> If the surface (skin) temperature is below freezing, the routine +!> uses surface based fields to compute the relative humidity. +!> +!> @param[in] TWET Wet bulb temperatures. +!> @param[out] ZWET Above ground level height of level with 0 wet bulb. +!> +!> ### Program history log: +!> Date | Programmer | Comments +!> -----|------------|--------- +!> 2003-11-14 | Geoff Manikin | Initial +!> 2004-12-06 | Geoff Manikin | Corrected computation of SFC temperature +!> 2005-03-11 | H CHUANG | WRF Version +!> 2021-07-26 | W Meng | Restrict computation from undefined grids +!> +!> @author Geoff Manikin W/NP2 @date 2003-11-14 SUBROUTINE WETFRZLVL(TWET,ZWET) ! diff --git a/sorc/ncep_post.fd/WRFPOST.f b/sorc/ncep_post.fd/WRFPOST.f index dfce15ab0..3d895c5c0 100644 --- a/sorc/ncep_post.fd/WRFPOST.f +++ b/sorc/ncep_post.fd/WRFPOST.f @@ -1,71 +1,34 @@ !> @file -! . . . -!> MAIN PROGRAM: WRFPOST -!! PRGMMR: BALDWIN ORG: NSSL/SPC DATE: 2002-06-18 -!! -!! ABSTRACT: -!! THIS PROGRAM DRIVES THE EXTERNAL WRF POST PROCESSOR. -!! -!! PROGRAM HISTORY LOG: -!! 92-12-24 RUSS TREADON - CODED ETAPOST AS STAND ALONE CODE -!! 98-05-29 BLACK - CONVERSION OF POST CODE FROM 1-D TO 2-D -!! 00-02-04 JIM TUCCILLO - PARALLEL VERSION VIA MPI -!! 01-02-15 JIM TUCCILLO - MANY COMMON BLOCKS REPLACED WITH MODULES -!! TO SUPPORT FORTRAN "ALLOCATE"s FOR THE EXACT SIZE OF THE -!! ARRAYS NEEDED BASED ON THE NUMBER OF MPI TASKS. -!! THIS WAS DONE TO REDUCE THE ADDRESS SPACE THAT THE LOADER SEES. -!! THESE CHANGES WERE NECESSARY FOR RUNNING LARGER DOMAINS SUCH AS -!! 12 KMS -!! 01-06-15 JIM TUCCILLO - ADDED ASYNCRONOUS I/O CAPABILITY. IF THERE ARE MORE -!! THAN ONE MPI TASK, THE IO WILL BE DONE AYNCHRONOUSLY BY THE LAST -!! MPI TASK. -!! 02-06-17 MIKE BALDWIN - CONVERT ETAPOST TO WRFPOST. INCLUDE WRF I/O API -!! FOR INPUT OF MODEL DATA. MODIFY CODE TO DEAL WITH C-GRID -!! DATA. STREAMLINE OUTPUT TO A CALL OF ONE SUBROUTINE INSTEAD OF THREE. -!! REPLACE COMMON BLOCKS WITH A LIMITED NUMBER OF MODULES. -!! 04-01-01 H CHUANG - ADDED NMM IO MODULE AND BINARY OPTIONS -!! 05-07-08 Binbin Zhou: Aadded RSM model -!! 05-12-05 H CHUANG - ADDED CAPABILITY TO OUTPUT OFF-HOUR FORECAST WHICH HAS -!! NO IMPACTS ON ON-HOUR FORECAST -!! 06-02-20 CHUANG, BLACK, AND ROGERS - FINALIZED COMPLETE LIST OF NAM -!! OPERATIONAL PRODUCTS FROM WRF -!! 06-02-27 H CHUANG - MODIFIED TO POST MULTIPLE -!! FORECAST HOURS IN ONE EXECUTION -!! 06-03-03 H CHUANG - ADDED PARRISH'S MPI BINARY IO TO READ BINARY -!! WRF FILE AS RANDOM ASSCESS SO THAT VARIABLES IN WRF OUTPUT -!! DON'T HAVE TO BE READ IN IN SPECIFIC ORDER -!! 11-02-06 J WANG - ADD GRIB2 OPTION -!! 11-12-14 SARAH LU - ADD THE OPTION TO READ NGAC AER FILE -!! 12-01-28 J WANG - Use post available fields in xml file for grib2 -!! 13-06-25 S MOORTHI - add gocart_on logical option to save memory -!! 13-10-03 J WANG - add option for po to be pascal, and -!! add gocart_on,d3d_on and popascal to namelist -!! 20-03-25 J MENG - remove grib1 -!! 21-06-20 W Meng - remove reading grib1 and gfsio lib -!! 21-10-22 KaYee Wong - created formal fortran namelist for itag -!! 21-11-03 Tracy Hertneky - Removed SIGIO option -!! 22-01-14 W Meng - Remove interfaces INITPOST_GS_NEMS, INITPOST_NEMS_MPIIO -!! INITPOST_NMM and INITPOST_GFS_NETCDF. -!! 22-03-15 W Meng - Unify FV3 based interfaces. -!! -!! USAGE: WRFPOST -!! INPUT ARGUMENT LIST: -!! NONE -!! -!! OUTPUT ARGUMENT LIST: -!! NONE -!! -!! SUBPROGRAMS CALLED: -!! UTILITIES: -!! NONE -!! LIBRARY: -!! COMMON - CTLBLK -!! RQSTFLD -!! -!! ATTRIBUTES: -!! LANGUAGE: FORTRAN 90 -!! MACHINE : IBM RS/6000 SP -!! +!> @brief wrfpost() drives the external wrf post processor. +!> +!> ### Program history log: +!> Date | Programmer | Comments +!> -----|------------|--------- +!> 1992-12-24 | Russ Treadon | Coded etapost as stand alone code +!> 1998-05-29 | Black | Conversion of post code from 1-D to 2-D +!> 1900-02-04 | Jim Tuccillo | Parallel version via MPI +!> 2001-02-15 | Jim Tuccillo | Many common blocks replaced with modules to support fortran "allocate"s for the exact size of the arrays needed based on the number of mpi tasks. This was done to reduce the address space that the loader sees. These changes were necessary for running larger domains such as 12 kms +!> 2001-06-15 | JIM Tuccillo | Added asyncronous I/O capability. if there are more than one mpi task, the io will be done aynchronously by the last MPI task. +!> 2002-06-17 | Mike Baldwin | Convert etapost to wrfpost. Include wrf I/O api for input of model data. Modify code to deal with C-grid data. Streamline output to a call of one subroutine instead of three. Replace common blocks with a limited number of modules. +!> 2004-01-01 | H Chuang | Added nmm io module and binary options +!> 2005-07-08 | Binbin Zhou | Added RSM model +!> 2005-12-05 | H Chuang | Added capability to output off-hour forecast which has no impacts on on-hour forecast +!> 2006-02-20 | Chuang, Black, and Rogers | Finalized complete list of NAM operational products from WRF +!> 2006-02-27 | H Chuang | Modified to post multiple forecast hours in one execution +!> 2006-03-03 | H Chuang | Added parrish's mpi binary io to read binary WRF file as random asscess so that variables in WRF output don't have to be read in in specific order +!> 2011-02-06 | J Wang | Add grib2 option +!> 2011-12-14 | Sarah Lu | Add the option to read ngac aer file +!> 2012-01-28 | J WANG | Use post available fields in xml file for grib2 +!> 2013-06-25 | S Moorthi | Add gocart_on logical option to save memory +!> 2013-10-03 | J Wang |Add option for po to be pascal, and add gocart_on,d3d_on and popascal to namelist +!> 2020-03-25 | J Meng | Remove grib1 +!> 2021-06-20 | W Meng | Remove reading grib1 and gfsio lib +!> 2021-10-22 | KaYee Wong | Created formal fortran namelist for itag +!> 2021-11-03 | Tracy Hertneky | Removed SIGIO option +!> 2022-01-14 | W Meng | Remove interfaces INITPOST_GS_NEMS, INITPOST_NEMS_MPIIO, INITPOST_NMM and INITPOST_GFS_NETCDF +!> 2022-03-15 | W Meng | Unify FV3 based interfaces +!> +!> @author Mike Bladwin NSSL/SPC @date 2002-06-18 PROGRAM WRFPOST ! diff --git a/sorc/ncep_post.fd/ZENSUN.f b/sorc/ncep_post.fd/ZENSUN.f index a0c0412fb..13466b668 100644 --- a/sorc/ncep_post.fd/ZENSUN.f +++ b/sorc/ncep_post.fd/ZENSUN.f @@ -1,75 +1,60 @@ !> @file -! . . . . -!> subprogram: zensun make sun zenith and sun azimuth angle -!! -!! prgmmr: Paul Ricchiazzi org: Earth Space Research Group,UCSB date: 1992-10-23 -!! -!! abstract: -!! Compute solar position information as a function of -!! geographic coordinates, date and time. -!! -!! program history log: -!! 2005-10-21 kazumori - reformatted for GSI -!! -!! input argument list: -!! day - Julian day (positive scalar or vector) -!! (spring equinox = 80) -!! (summer solstice= 171) -!! (fall equinox = 266) -!! (winter solstice= 356) -!! time - Universal Time in hours (scalar or vector) -!! lat - geographic latitude of point on earth's surface (degrees) -!! lon - geographic longitude of point on earth's surface (degrees) -!! -!! output argument list: -!! sun_zenith - solar zenith angle -!! sun_azimuth - solar azimuth angle -!! -!! comments: -!! -!! -!! PROCEDURE: -!! -!! 1. Calculate the subsolar point latitude and longitude, based on -!! DAY and TIME. Since each year is 365.25 days long the exact -!! value of the declination angle changes from year to year. For -!! precise values consult THE AMERICAN EPHEMERIS AND NAUTICAL -!! ALMANAC published yearly by the U.S. govt. printing office. The -!! subsolar coordinates used in this code were provided by a -!! program written by Jeff Dozier. -!! -!! 2. Given the subsolar latitude and longitude, spherical geometry is -!! used to find the solar zenith, azimuth and flux multiplier. -!! -!! eqt = equation of time (minutes) ! solar longitude correction = -15*eqt -!! dec = declination angle (degrees) = solar latitude -!! -!! LOWTRAN v7 data (25 points) -!! The LOWTRAN solar position data is characterized by only 25 points. -!! This should predict the subsolar angles within one degree. For -!! increased accuracy add more data points. -!! -!!nday=[ 1., 9., 21., 32., 44., 60., 91., 121., 141., 152.,$ -!! 160., 172., 182., 190., 202., 213., 244., 274., 305., 309.,$ -!! 325., 335., 343., 355., 366.] -!! -!!eqt=[ -3.23, -6.83,-11.17,-13.57,-14.33,-12.63, -4.2, 2.83, 3.57, 2.45,$ -!! 1.10, -1.42, -3.52, -4.93, -6.25, -6.28,-0.25, 10.02, 16.35, 16.38,$ -!! 14.3, 11.27, 8.02, 2.32, -3.23] -!! -!!dec=[-23.07,-22.22,-20.08,-17.32,-13.62, -7.88, 4.23, 14.83, 20.03, 21.95,$ -!! 22.87, 23.45, 23.17, 22.47, 20.63, 18.23, 8.58, -2.88,-14.18,-15.45,$ -!! -19.75,-21.68,-22.75,-23.43,-23.07] -!! -!! Analemma information from Jeff Dozier -!! This data is characterized by 74 points -!! -!! -!! attributes: -!! language: f90 -!! machine: ibm RS/6000 SP -!! -!! +!> zensun() makes sun zenith and sun azimuth angle. +!> +!> Compute solar position information as a function of +!> geographic coordinates, date and time. +!> +!> @param[in] day Julian day (positive scalar or vector), (spring equinox = 80), (summer solstice= 171), (fall equinox = 266), (winter solstice= 356). +!> @param[in] time Universal Time in hours (scalar or vector). +!> @param[in] lat Geographic latitude of point on earth's surface (degrees). +!> @param[in] lon Geographic longitude of point on earth's surface (degrees). +!> @param[out] sun_zenith - solar zenith angle. +!> @param[out] sun_azimuth - solar azimuth angle. +!> +!> +!> @note Procedure: +!> +!> 1. Calculate the subsolar point latitude and longitude, based on +!> DAY and TIME. Since each year is 365.25 days long the exact +!> value of the declination angle changes from year to year. For +!> precise values consult THE AMERICAN EPHEMERIS AND NAUTICAL +!> ALMANAC published yearly by the U.S. govt. printing office. The +!> subsolar coordinates used in this code were provided by a +!> program written by Jeff Dozier. +!> +!> 2. Given the subsolar latitude and longitude, spherical geometry is +!> used to find the solar zenith, azimuth and flux multiplier. +!> +!> eqt = equation of time (minutes) ! solar longitude correction = -15*eqt +!> dec = declination angle (degrees) = solar latitude +!> +!> LOWTRAN v7 data (25 points) +!> The LOWTRAN solar position data is characterized by only 25 points. +!> This should predict the subsolar angles within one degree. For +!> increased accuracy add more data points. +!> +!> nday=[ 1., 9., 21., 32., 44., 60., 91., 121., 141., 152.,$ +!> 160., 172., 182., 190., 202., 213., 244., 274., 305., 309.,$ +!> 325., 335., 343., 355., 366.] +!> +!> eqt=[ -3.23, -6.83,-11.17,-13.57,-14.33,-12.63, -4.2, 2.83, 3.57, 2.45,$ +!> 1.10, -1.42, -3.52, -4.93, -6.25, -6.28,-0.25, 10.02, 16.35, 16.38,$ +!> 14.3, 11.27, 8.02, 2.32, -3.23] +!> +!> dec=[-23.07,-22.22,-20.08,-17.32,-13.62, -7.88, 4.23, 14.83, 20.03, 21.95,$ +!> 22.87, 23.45, 23.17, 22.47, 20.63, 18.23, 8.58, -2.88,-14.18,-15.45,$ +!> -19.75,-21.68,-22.75,-23.43,-23.07] +!> +!> Analemma information from Jeff Dozier +!> +!> This data is characterized by 74 points. +!> +!> ### Program history log: +!> Date | Programmer | Comments +!> -----|------------|--------- +!> 2005-10-21 | kazumori | Reformatted for GSI +!> +!> @author Paul Ricchiazzi Earth Space Research Group,UCSB @date 1992-10-23 subroutine zensun(day,time,lat,lon,pi,sun_zenith,sun_azimuth) ! From 4414f86adfe05a4b3bb1d927409450008a594740 Mon Sep 17 00:00:00 2001 From: kayee Date: Sun, 17 Apr 2022 21:47:38 -0600 Subject: [PATCH 2/2] Further enhancement from Ed's comment. --- sorc/ncep_post.fd/SCLFLD.f | 4 ++- sorc/ncep_post.fd/SELECT_CHANNELS.f | 6 ++++- sorc/ncep_post.fd/SETUP_SERVERS.f | 6 +++-- sorc/ncep_post.fd/SET_OUTFLDS.f | 4 ++- sorc/ncep_post.fd/SMOOTH.f | 39 +++++++++++++++-------------- sorc/ncep_post.fd/TRPAUS.f | 4 ++- sorc/ncep_post.fd/TRPAUS_NAM.f | 4 ++- sorc/ncep_post.fd/WETFRZLVL.f | 4 ++- sorc/ncep_post.fd/ZENSUN.f | 19 ++++++++------ 9 files changed, 55 insertions(+), 35 deletions(-) diff --git a/sorc/ncep_post.fd/SCLFLD.f b/sorc/ncep_post.fd/SCLFLD.f index 0541c9039..21d4e41d6 100644 --- a/sorc/ncep_post.fd/SCLFLD.f +++ b/sorc/ncep_post.fd/SCLFLD.f @@ -1,6 +1,8 @@ !> @file -!> sclfld() scale array element by constant. +!> @brief sclfld() scale array element by constant. !> +!> @author Russ Treadon W/NP2 @date 1992-09-13 + !> This routine multiples (scales) the first IMO*JMO !> elements of array fld by the real scalar scale. !> Array elements which equal a special value will diff --git a/sorc/ncep_post.fd/SELECT_CHANNELS.f b/sorc/ncep_post.fd/SELECT_CHANNELS.f index df8143ad7..8964566a0 100644 --- a/sorc/ncep_post.fd/SELECT_CHANNELS.f +++ b/sorc/ncep_post.fd/SELECT_CHANNELS.f @@ -1,5 +1,9 @@ !> @file -!> select_channels() verifies channel information and print error to output file if +!> @brief select_channels() verifies channel information. +!> +!> @author HWRF @date 2012-09-27 + +!> This subroutine verifies channel information and print error to output file if !> detected, finally excuting a program STOP - which may cause !> a hang condifition if run on multiple processors. !> diff --git a/sorc/ncep_post.fd/SETUP_SERVERS.f b/sorc/ncep_post.fd/SETUP_SERVERS.f index c82b8955c..8acd4332b 100644 --- a/sorc/ncep_post.fd/SETUP_SERVERS.f +++ b/sorc/ncep_post.fd/SETUP_SERVERS.f @@ -1,7 +1,9 @@ !> @file -!> setup_servers() setups I/O servers. +!> @brief setup_servers() setups I/O servers. !> -!> Setup I/O servers. +!> @author Jim Tuccillo IBM @date 2000-03-20 + +!> This subroutine is to setup I/O servers. !> !> @param[out] MYPE My rank. !> @param[out] INUMQ Array that holds the number of servers in each group. diff --git a/sorc/ncep_post.fd/SET_OUTFLDS.f b/sorc/ncep_post.fd/SET_OUTFLDS.f index 5563ee4cf..a21f98fa5 100644 --- a/sorc/ncep_post.fd/SET_OUTFLDS.f +++ b/sorc/ncep_post.fd/SET_OUTFLDS.f @@ -1,6 +1,8 @@ !> @file -!> set_outflds() reads post xml control file. +!> @ brief set_outflds() reads post xml control file. !> +!> @author J. Wang NCEP/EMC @date 2012-01-27 + !> This routine reads the control file in xml format specifying !> field(s) to post, and save all the field information in !> a datatype array PSET. diff --git a/sorc/ncep_post.fd/SMOOTH.f b/sorc/ncep_post.fd/SMOOTH.f index 606b00d8a..01eb910a6 100644 --- a/sorc/ncep_post.fd/SMOOTH.f +++ b/sorc/ncep_post.fd/SMOOTH.f @@ -1,14 +1,8 @@ !> @file -!> smooth() smooths a meteorological field. +!> @brief smooth() smooths a meteorological field using Shapiro smoother. !> -!> Shapiro smoother. -!> -!> @param[in] FIELD Real array FIELD(IX,IY) Meteorological field. -!> @param[in] HOLD Real array HOLD(IX,2) Holding the value for field. -!> @param[in] IX Integer X Coordinates of field. -!> @param[in] IY Integer Y Coordinates of field. -!> @param[in] SMTH Real. -!> @param[out] FIELD Real array FIELD(IX,IY) Smoothed meteorological field. +!> @author Stan Benjamin FSL/PROFS @date 1990-06-15 + !> !> @note Reference: Shapiro, 1970: "Smoothing, filtering, and !> boundary effects", REV. GEOPHYS. SP. PHYS., 359-387. @@ -21,6 +15,13 @@ !> it should be run with 2 passes using SMTH (or s) of 0.5 !> and -0.5. !> +!> @param[in] FIELD Real array FIELD(IX,IY) Meteorological field. +!> @param[in] HOLD Real array HOLD(IX,2) Holding the value for field. +!> @param[in] IX Integer X Coordinates of field. +!> @param[in] IY Integer Y Coordinates of field. +!> @param[in] SMTH Real. +!> @param[out] FIELD Real array FIELD(IX,IY) Smoothed meteorological field. +!> !> ### Program history log: !> Date | Programmer | Comments !> -----|------------|--------- @@ -90,17 +91,10 @@ SUBROUTINE SMOOTH (FIELD,HOLD,IX,IY,SMTH) RETURN END -!> smoothc() smooths a meteorological field. -!> -!> Shapiro smoother. -!> -!> @param[in] FIELD Real array FIELD(IX,IY) Meteorological field. -!> @param[in] HOLD Real array HOLD(IX,2) Holding the value for field. -!> @param[in] IX Integer X Coordinates of field. -!> @param[in] IY Integer Y Coordinates of field. -!> @param[in] SMTH Real. -!> @param[out] FIELD Real array FIELD(IX,IY) Smoothed meteorological field. +!> @brief smoothc() smooths a meteorological field using Shapiro smoother. !> +!> @author Stan Benjamin FSL/PROFS @date 1990-06-15 + !> @note Reference: Shapiro, 1970: "Smoothing, filtering, and !> boundary effects", REV. GEOPHYS. SP. PHYS., 359-387. !> This filter is of the type @@ -112,6 +106,13 @@ SUBROUTINE SMOOTH (FIELD,HOLD,IX,IY,SMTH) !> it should be run with 2 passes using SMTH (or s) of 0.5 !> and -0.5. !> +!> @param[in] FIELD Real array FIELD(IX,IY) Meteorological field. +!> @param[in] HOLD Real array HOLD(IX,2) Holding the value for field. +!> @param[in] IX Integer X Coordinates of field. +!> @param[in] IY Integer Y Coordinates of field. +!> @param[in] SMTH Real. +!> @param[out] FIELD Real array FIELD(IX,IY) Smoothed meteorological field. +!> !> ### Program history log: !> Date | Programmer | Comments !> -----|------------|--------- diff --git a/sorc/ncep_post.fd/TRPAUS.f b/sorc/ncep_post.fd/TRPAUS.f index 40cfb05f8..9678afcf8 100644 --- a/sorc/ncep_post.fd/TRPAUS.f +++ b/sorc/ncep_post.fd/TRPAUS.f @@ -1,6 +1,8 @@ !> @file -!> trpaus() computes tropopause data. +!> @brief trpaus() computes tropopause data. !> +!> @author Russ Treadon W/NP2 @date 1992-12-22 + !> This routine computes tropopause data. At each mass !> point a surface up search is made for the first !> occurrence of a three layer mean lapse rate less than diff --git a/sorc/ncep_post.fd/TRPAUS_NAM.f b/sorc/ncep_post.fd/TRPAUS_NAM.f index 7aa82eadc..5ccb2c9ad 100644 --- a/sorc/ncep_post.fd/TRPAUS_NAM.f +++ b/sorc/ncep_post.fd/TRPAUS_NAM.f @@ -1,6 +1,8 @@ !> @file -!> trpaus() computes tropopause data. +!> @brief trpaus() computes tropopause data. !> +!> @author Russ Treadon W/NP2 @date 1992-12-22 + !> This routine computes tropopause data. At each mass !> point a surface up search is made for the first !> occurrence of a three layer mean lapse rate less than diff --git a/sorc/ncep_post.fd/WETFRZLVL.f b/sorc/ncep_post.fd/WETFRZLVL.f index 143c8716d..f6a60daf2 100644 --- a/sorc/ncep_post.fd/WETFRZLVL.f +++ b/sorc/ncep_post.fd/WETFRZLVL.f @@ -1,6 +1,8 @@ !> @file -!> wetfrzlvl() computes level of 0 wet bulb. +!> @brief wetfrzlvl() computes level of 0 wet bulb. !> +!> @author Geoff Manikin W/NP2 @date 2003-11-14 + !> This routine computes the lowest height with a wet bulb !> temperature of freezing for each mass point on the eta grid. !> The computed wet bulb zero height is the mean sea level diff --git a/sorc/ncep_post.fd/ZENSUN.f b/sorc/ncep_post.fd/ZENSUN.f index 13466b668..4c46415b6 100644 --- a/sorc/ncep_post.fd/ZENSUN.f +++ b/sorc/ncep_post.fd/ZENSUN.f @@ -1,16 +1,11 @@ !> @file !> zensun() makes sun zenith and sun azimuth angle. !> -!> Compute solar position information as a function of +!> @author Paul Ricchiazzi Earth Space Research Group,UCSB @date 1992-10-23 + +!> This subroutine computes solar position information as a function of !> geographic coordinates, date and time. !> -!> @param[in] day Julian day (positive scalar or vector), (spring equinox = 80), (summer solstice= 171), (fall equinox = 266), (winter solstice= 356). -!> @param[in] time Universal Time in hours (scalar or vector). -!> @param[in] lat Geographic latitude of point on earth's surface (degrees). -!> @param[in] lon Geographic longitude of point on earth's surface (degrees). -!> @param[out] sun_zenith - solar zenith angle. -!> @param[out] sun_azimuth - solar azimuth angle. -!> !> !> @note Procedure: !> @@ -49,6 +44,14 @@ !> !> This data is characterized by 74 points. !> +!> +!> @param[in] day Julian day (positive scalar or vector), (spring equinox = 80), (summer solstice= 171), (fall equinox = 266), (winter solstice= 356). +!> @param[in] time Universal Time in hours (scalar or vector). +!> @param[in] lat Geographic latitude of point on earth's surface (degrees). +!> @param[in] lon Geographic longitude of point on earth's surface (degrees). +!> @param[out] sun_zenith - solar zenith angle. +!> @param[out] sun_azimuth - solar azimuth angle. +!> !> ### Program history log: !> Date | Programmer | Comments !> -----|------------|---------