diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in index c0609df47..213166a46 100644 --- a/doc/Doxyfile.in +++ b/doc/Doxyfile.in @@ -1,4 +1,4 @@ -# Doxyfile 1.9.1 +# Doxyfile 1.9.8 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. @@ -12,6 +12,16 @@ # For lists, items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (\" \"). +# +# Note: +# +# Use doxygen to compare the used configuration file with the template +# configuration file: +# doxygen -x [configFile] +# Use doxygen to compare the used configuration file with the template +# configuration file without replacing the environment variables or CMake type +# replacement variables: +# doxygen -x_noenv [configFile] #--------------------------------------------------------------------------- # Project related configuration options @@ -60,16 +70,28 @@ PROJECT_LOGO = OUTPUT_DIRECTORY = -# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- -# directories (in 2 levels) under the output directory of each output format and -# will distribute the generated files over these directories. Enabling this +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 +# sub-directories (in 2 levels) under the output directory of each output format +# and will distribute the generated files over these directories. Enabling this # option can be useful when feeding doxygen a huge amount of source files, where # putting all generated files in the same directory would otherwise causes -# performance problems for the file system. +# performance problems for the file system. Adapt CREATE_SUBDIRS_LEVEL to +# control the number of sub-directories. # The default value is: NO. CREATE_SUBDIRS = NO +# Controls the number of sub-directories that will be created when +# CREATE_SUBDIRS tag is set to YES. Level 0 represents 16 directories, and every +# level increment doubles the number of directories, resulting in 4096 +# directories at level 8 which is the default and also the maximum value. The +# sub-directories are organized in 2 levels, the first level always has a fixed +# number of 16 directories. +# Minimum value: 0, maximum value: 8, default value: 8. +# This tag requires that the tag CREATE_SUBDIRS is set to YES. + +CREATE_SUBDIRS_LEVEL = 8 + # If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII # characters to appear in the names of generated files. If set to NO, non-ASCII # characters will be escaped, for example _xE3_x81_x84 will be used for Unicode @@ -81,14 +103,14 @@ ALLOW_UNICODE_NAMES = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. -# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, -# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), -# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, -# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), -# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, -# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, -# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, -# Ukrainian and Vietnamese. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Bulgarian, +# Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English +# (United States), Esperanto, Farsi (Persian), Finnish, French, German, Greek, +# Hindi, Hungarian, Indonesian, Italian, Japanese, Japanese-en (Japanese with +# English messages), Korean, Korean-en (Korean with English messages), Latvian, +# Lithuanian, Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, +# Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, +# Swedish, Turkish, Ukrainian and Vietnamese. # The default value is: English. OUTPUT_LANGUAGE = English @@ -240,16 +262,16 @@ TAB_SIZE = 4 # the documentation. An alias has the form: # name=value # For example adding -# "sideeffect=@par Side Effects:\n" +# "sideeffect=@par Side Effects:^^" # will allow you to put the command \sideeffect (or @sideeffect) in the # documentation, which will result in a user-defined paragraph with heading -# "Side Effects:". You can put \n's in the value part of an alias to insert -# newlines (in the resulting output). You can put ^^ in the value part of an -# alias to insert a newline as if a physical newline was in the original file. -# When you need a literal { or } or , in the value part of an alias you have to -# escape them by means of a backslash (\), this can lead to conflicts with the -# commands \{ and \} for these it is advised to use the version @{ and @} or use -# a double escape (\\{ and \\}) +# "Side Effects:". Note that you cannot put \n's in the value part of an alias +# to insert newlines (in the resulting output). You can put ^^ in the value part +# of an alias to insert a newline as if a physical newline was in the original +# file. When you need a literal { or } or , in the value part of an alias you +# have to escape them by means of a backslash (\), this can lead to conflicts +# with the commands \{ and \} for these it is advised to use the version @{ and +# @} or use a double escape (\\{ and \\}) ALIASES = @@ -294,8 +316,8 @@ OPTIMIZE_OUTPUT_SLICE = NO # extension. Doxygen has a built-in mapping, but you can override or extend it # using this tag. The format is ext=language, where ext is a file extension, and # language is one of the parsers supported by doxygen: IDL, Java, JavaScript, -# Csharp (C#), C, C++, D, PHP, md (Markdown), Objective-C, Python, Slice, VHDL, -# Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: +# Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice, +# VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: # FortranFree, unknown formatted Fortran: Fortran. In the later case the parser # tries to guess whether the code is fixed or free formatted code, this is the # default for Fortran type files). For instance to make doxygen treat .inc files @@ -331,6 +353,17 @@ MARKDOWN_SUPPORT = YES TOC_INCLUDE_HEADINGS = 5 +# The MARKDOWN_ID_STYLE tag can be used to specify the algorithm used to +# generate identifiers for the Markdown headings. Note: Every identifier is +# unique. +# Possible values are: DOXYGEN use a fixed 'autotoc_md' string followed by a +# sequence number starting at 0 and GITHUB use the lower case version of title +# with any whitespace replaced by '-' and punctuation characters removed. +# The default value is: DOXYGEN. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +MARKDOWN_ID_STYLE = DOXYGEN + # When enabled doxygen tries to link words that correspond to documented # classes, or namespaces to their corresponding documentation. Such a link can # be prevented in individual cases by putting a % sign in front of the word or @@ -442,19 +475,27 @@ TYPEDEF_HIDES_STRUCT = NO LOOKUP_CACHE_SIZE = 0 -# The NUM_PROC_THREADS specifies the number threads doxygen is allowed to use +# The NUM_PROC_THREADS specifies the number of threads doxygen is allowed to use # during processing. When set to 0 doxygen will based this on the number of # cores available in the system. You can set it explicitly to a value larger # than 0 to get more control over the balance between CPU load and processing # speed. At this moment only the input processing can be done using multiple # threads. Since this is still an experimental feature the default is set to 1, -# which efficively disables parallel processing. Please report any issues you +# which effectively disables parallel processing. Please report any issues you # encounter. Generating dot graphs in parallel is controlled by the # DOT_NUM_THREADS setting. # Minimum value: 0, maximum value: 32, default value: 1. NUM_PROC_THREADS = 1 +# If the TIMESTAMP tag is set different from NO then each generated page will +# contain the date or date and time when the page was generated. Setting this to +# NO can help when comparing the output of multiple runs. +# Possible values are: YES, NO, DATETIME and DATE. +# The default value is: NO. + +TIMESTAMP = NO + #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- @@ -536,7 +577,8 @@ HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. If set # to NO, these classes will be included in the various overviews. This option -# has no effect if EXTRACT_ALL is enabled. +# will also hide undocumented C++ concepts if enabled. This option has no effect +# if EXTRACT_ALL is enabled. # The default value is: NO. HIDE_UNDOC_CLASSES = NO @@ -567,14 +609,15 @@ INTERNAL_DOCS = NO # filesystem is case sensitive (i.e. it supports files in the same directory # whose names only differ in casing), the option must be set to YES to properly # deal with such files in case they appear in the input. For filesystems that -# are not case sensitive the option should be be set to NO to properly deal with +# are not case sensitive the option should be set to NO to properly deal with # output files written for symbols that only differ in casing, such as for two # classes, one named CLASS and the other named Class, and to also support # references to files without having to specify the exact matching casing. On # Windows (including Cygwin) and MacOS, users should typically set this option # to NO, whereas on Linux or other Unix flavors it should typically be set to # YES. -# The default value is: system dependent. +# Possible values are: SYSTEM, NO and YES. +# The default value is: SYSTEM. CASE_SENSE_NAMES = YES @@ -592,6 +635,12 @@ HIDE_SCOPE_NAMES = NO HIDE_COMPOUND_REFERENCE= NO +# If the SHOW_HEADERFILE tag is set to YES then the documentation for a class +# will show which file needs to be included to use the class. +# The default value is: YES. + +SHOW_HEADERFILE = YES + # If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of # the files that are included by a file in the documentation of that file. # The default value is: YES. @@ -749,7 +798,8 @@ FILE_VERSION_FILTER = # output files in an output format independent way. To create the layout file # that represents doxygen's defaults, run doxygen with the -l option. You can # optionally specify a file name after the option, if omitted DoxygenLayout.xml -# will be used as the name of the layout file. +# will be used as the name of the layout file. See also section "Changing the +# layout of pages" for information. # # Note that if you run doxygen from a directory containing a file called # DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE @@ -795,27 +845,50 @@ WARNINGS = YES WARN_IF_UNDOCUMENTED = YES # If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some parameters -# in a documented function, or documenting parameters that don't exist or using -# markup commands wrongly. +# potential errors in the documentation, such as documenting some parameters in +# a documented function twice, or documenting parameters that don't exist or +# using markup commands wrongly. # The default value is: YES. WARN_IF_DOC_ERROR = YES +# If WARN_IF_INCOMPLETE_DOC is set to YES, doxygen will warn about incomplete +# function parameter documentation. If set to NO, doxygen will accept that some +# parameters have no documentation without warning. +# The default value is: YES. + +WARN_IF_INCOMPLETE_DOC = YES + # This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that # are documented, but have no documentation for their parameters or return -# value. If set to NO, doxygen will only warn about wrong or incomplete -# parameter documentation, but not about the absence of documentation. If -# EXTRACT_ALL is set to YES then this flag will automatically be disabled. +# value. If set to NO, doxygen will only warn about wrong parameter +# documentation, but not about the absence of documentation. If EXTRACT_ALL is +# set to YES then this flag will automatically be disabled. See also +# WARN_IF_INCOMPLETE_DOC # The default value is: NO. WARN_NO_PARAMDOC = YES +# If WARN_IF_UNDOC_ENUM_VAL option is set to YES, doxygen will warn about +# undocumented enumeration values. If set to NO, doxygen will accept +# undocumented enumeration values. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: NO. + +WARN_IF_UNDOC_ENUM_VAL = NO + # If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when # a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS # then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but # at the end of the doxygen process doxygen will return with a non-zero status. -# Possible values are: NO, YES and FAIL_ON_WARNINGS. +# If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS_PRINT then doxygen behaves +# like FAIL_ON_WARNINGS but in case no WARN_LOGFILE is defined doxygen will not +# write the warning messages in between other messages but write them at the end +# of a run, in case a WARN_LOGFILE is defined the warning messages will be +# besides being in the defined file also be shown at the end of a run, unless +# the WARN_LOGFILE is defined as - i.e. standard output (stdout) in that case +# the behavior will remain as with the setting FAIL_ON_WARNINGS. +# Possible values are: NO, YES, FAIL_ON_WARNINGS and FAIL_ON_WARNINGS_PRINT. # The default value is: NO. WARN_AS_ERROR = NO @@ -826,13 +899,27 @@ WARN_AS_ERROR = NO # and the warning text. Optionally the format may contain $version, which will # be replaced by the version of the file (if it could be obtained via # FILE_VERSION_FILTER) +# See also: WARN_LINE_FORMAT # The default value is: $file:$line: $text. WARN_FORMAT = "$file:$line: $text" +# In the $text part of the WARN_FORMAT command it is possible that a reference +# to a more specific place is given. To make it easier to jump to this place +# (outside of doxygen) the user can define a custom "cut" / "paste" string. +# Example: +# WARN_LINE_FORMAT = "'vi $file +$line'" +# See also: WARN_FORMAT +# The default value is: at line $line of file $file. + +WARN_LINE_FORMAT = "at line $line of file $file" + # The WARN_LOGFILE tag can be used to specify a file to which warning and error # messages should be written. If left blank the output is written to standard -# error (stderr). +# error (stderr). In case the file specified cannot be opened for writing the +# warning and error messages are written to standard error. When as file - is +# specified the warning and error messages are written to standard output +# (stdout). WARN_LOGFILE = @@ -847,7 +934,7 @@ WARN_LOGFILE = # Note: If this tag is empty the current directory is searched. INPUT = @abs_top_srcdir@/doc/user_guide.md \ - = @abs_top_srcdir@/doc/2D-decomp.md \ + @abs_top_srcdir@/doc/2D-decomp.md \ @abs_top_srcdir@/sorc/ncep_post.fd \ @config_srcdir@ @@ -856,10 +943,21 @@ INPUT = @abs_top_srcdir@/doc/user_guide.md \ # libiconv (or the iconv built into libc) for the transcoding. See the libiconv # documentation (see: # https://www.gnu.org/software/libiconv/) for the list of possible encodings. +# See also: INPUT_FILE_ENCODING # The default value is: UTF-8. INPUT_ENCODING = UTF-8 +# This tag can be used to specify the character encoding of the source files +# that doxygen parses The INPUT_FILE_ENCODING tag can be used to specify +# character encoding on a per file pattern basis. Doxygen will compare the file +# name with each pattern and apply the encoding instead of the default +# INPUT_ENCODING) if there is a match. The character encodings are a list of the +# form: pattern=encoding (like *.php=ISO-8859-1). See cfg_input_encoding +# "INPUT_ENCODING" for further information on supported encodings. + +INPUT_FILE_ENCODING = + # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and # *.h) to filter out the source-files in the directories. @@ -871,12 +969,12 @@ INPUT_ENCODING = UTF-8 # Note the list of default checked file patterns might differ from the list of # default file extension mappings. # -# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, -# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, -# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, -# *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C comment), -# *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd, *.vhdl, -# *.ucf, *.qsf and *.ice. +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cxxm, +# *.cpp, *.cppm, *.c++, *.c++m, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, +# *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, *.h++, *.ixx, *.l, *.cs, *.d, *.php, +# *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to be +# provided as doxygen C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, +# *.f18, *.f, *.for, *.vhd, *.vhdl, *.ucf, *.qsf and *.ice. FILE_PATTERNS = *.F90 \ *.f90 \ @@ -920,10 +1018,7 @@ EXCLUDE_PATTERNS = # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories use the pattern */test/* +# ANamespace::AClass, ANamespace::*Test EXCLUDE_SYMBOLS = @@ -968,6 +1063,11 @@ IMAGE_PATH = # code is scanned, but not when the output code is generated. If lines are added # or removed, the anchors will not be placed correctly. # +# Note that doxygen will use the data processed and written to standard output +# for further processing, therefore nothing else, like debug statements or used +# commands (so in case of a Windows batch file always use @echo OFF), should be +# written to standard output. +# # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not # properly processed by doxygen. @@ -1009,13 +1109,14 @@ FILTER_SOURCE_PATTERNS = USE_MDFILE_AS_MAINPAGE = @abs_top_srcdir@/doc/user_guide.md -# By default, all characters from position 72 are to be considered as comment. -# This prevents Doxygen from recognizing certain variables as undocumented -# because the variables are processed as comments. -# Setting FORTRAN_COMMENT_AFTER to a larger value makes it possible to -# process longer lines before the automatic comment starts. +# The Fortran standard specifies that for fixed formatted Fortran code all +# characters from position 72 are to be considered as comment. A common +# extension is to allow longer lines before the automatic comment starts. The +# setting FORTRAN_COMMENT_AFTER will also make it possible that longer lines can +# be processed before the automatic comment starts. +# Minimum value: 7, maximum value: 10000, default value: 72. -FORTRAN_COMMENT_AFTER = 200 +FORTRAN_COMMENT_AFTER = 200 #--------------------------------------------------------------------------- # Configuration options related to source browsing @@ -1114,10 +1215,11 @@ VERBATIM_HEADERS = YES ALPHABETICAL_INDEX = NO -# In case all classes in a project start with a common prefix, all classes will -# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag -# can be used to specify a prefix (or a list of prefixes) that should be ignored -# while generating the index headers. +# The IGNORE_PREFIX tag can be used to specify a prefix (or a list of prefixes) +# that should be ignored while generating the index headers. The IGNORE_PREFIX +# tag works for classes, function and member names. The entity will be placed in +# the alphabetical list under the first letter of the entity name that remains +# after removing the prefix. # This tag requires that the tag ALPHABETICAL_INDEX is set to YES. IGNORE_PREFIX = @@ -1196,7 +1298,12 @@ HTML_STYLESHEET = # Doxygen will copy the style sheet files to the output directory. # Note: The order of the extra style sheet files is of importance (e.g. the last # style sheet in the list overrules the setting of the previous ones in the -# list). For an example see the documentation. +# list). +# Note: Since the styling of scrollbars can currently not be overruled in +# Webkit/Chromium, the styling will be left out of the default doxygen.css if +# one or more extra stylesheets have been specified. So if scrollbar +# customization is desired it has to be added explicitly. For an example see the +# documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_EXTRA_STYLESHEET = @@ -1211,9 +1318,22 @@ HTML_EXTRA_STYLESHEET = HTML_EXTRA_FILES = +# The HTML_COLORSTYLE tag can be used to specify if the generated HTML output +# should be rendered with a dark or light theme. +# Possible values are: LIGHT always generate light mode output, DARK always +# generate dark mode output, AUTO_LIGHT automatically set the mode according to +# the user preference, use light mode if no preference is set (the default), +# AUTO_DARK automatically set the mode according to the user preference, use +# dark mode if no preference is set and TOGGLE allow to user to switch between +# light and dark mode via a button. +# The default value is: AUTO_LIGHT. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE = AUTO_LIGHT + # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen # will adjust the colors in the style sheet and background images according to -# this color. Hue is specified as an angle on a colorwheel, see +# this color. Hue is specified as an angle on a color-wheel, see # https://en.wikipedia.org/wiki/Hue for more information. For instance the value # 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 # purple, and 360 is red again. @@ -1223,7 +1343,7 @@ HTML_EXTRA_FILES = HTML_COLORSTYLE_HUE = 220 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors -# in the HTML output. For a value of 0 the output will use grayscales only. A +# in the HTML output. For a value of 0 the output will use gray-scales only. A # value of 255 will produce the most vivid colors. # Minimum value: 0, maximum value: 255, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. @@ -1241,15 +1361,6 @@ HTML_COLORSTYLE_SAT = 100 HTML_COLORSTYLE_GAMMA = 80 -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting this -# to YES can help to show when doxygen was last run and thus if the -# documentation is up to date. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_TIMESTAMP = NO - # If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML # documentation will contain a main index with vertical navigation menus that # are dynamically created via JavaScript. If disabled, the navigation index will @@ -1269,6 +1380,13 @@ HTML_DYNAMIC_MENUS = YES HTML_DYNAMIC_SECTIONS = NO +# If the HTML_CODE_FOLDING tag is set to YES then classes and functions can be +# dynamically folded and expanded in the generated HTML source code. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_CODE_FOLDING = YES + # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries # shown in the various tree structured indices initially; the user can expand # and collapse entries dynamically later on. Doxygen will expand the tree to @@ -1305,6 +1423,13 @@ GENERATE_DOCSET = NO DOCSET_FEEDNAME = "Doxygen generated docs" +# This tag determines the URL of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDURL = + # This tag specifies a string that should uniquely identify the documentation # set bundle. This should be a reverse domain-name style string, e.g. # com.mycompany.MyDocSet. Doxygen will append .docset to the name. @@ -1330,8 +1455,12 @@ DOCSET_PUBLISHER_NAME = Publisher # If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three # additional HTML index files: index.hhp, index.hhc, and index.hhk. The # index.hhp is a project file that can be read by Microsoft's HTML Help Workshop -# (see: -# https://www.microsoft.com/en-us/download/details.aspx?id=21138) on Windows. +# on Windows. In the beginning of 2021 Microsoft took the original page, with +# a.o. the download links, offline the HTML help workshop was already many years +# in maintenance mode). You can download the HTML help workshop from the web +# archives at Installation executable (see: +# http://web.archive.org/web/20160201063255/http://download.microsoft.com/downlo +# ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe). # # The HTML Help Workshop contains a compiler that can convert all HTML output # generated by doxygen into a single compiled HTML file (.chm). Compiled HTML @@ -1388,6 +1517,16 @@ BINARY_TOC = NO TOC_EXPAND = NO +# The SITEMAP_URL tag is used to specify the full URL of the place where the +# generated documentation will be placed on the server by the user during the +# deployment of the documentation. The generated sitemap is called sitemap.xml +# and placed on the directory specified by HTML_OUTPUT. In case no SITEMAP_URL +# is specified no sitemap is generated. For information about the sitemap +# protocol see https://www.sitemaps.org +# This tag requires that the tag GENERATE_HTML is set to YES. + +SITEMAP_URL = + # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that # can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help @@ -1490,16 +1629,28 @@ DISABLE_INDEX = NO # to work a browser that supports JavaScript, DHTML, CSS and frames is required # (i.e. any modern browser). Windows users are probably better off using the # HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can -# further fine-tune the look of the index. As an example, the default style -# sheet generated by doxygen has an example that shows how to put an image at -# the root of the tree instead of the PROJECT_NAME. Since the tree basically has -# the same information as the tab index, you could consider setting -# DISABLE_INDEX to YES when enabling this option. +# further fine tune the look of the index (see "Fine-tuning the output"). As an +# example, the default style sheet generated by doxygen has an example that +# shows how to put an image at the root of the tree instead of the PROJECT_NAME. +# Since the tree basically has the same information as the tab index, you could +# consider setting DISABLE_INDEX to YES when enabling this option. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_TREEVIEW = YES +# When both GENERATE_TREEVIEW and DISABLE_INDEX are set to YES, then the +# FULL_SIDEBAR option determines if the side bar is limited to only the treeview +# area (value NO) or if it should extend to the full height of the window (value +# YES). Setting this to YES gives a layout similar to +# https://docs.readthedocs.io with more room for contents, but less room for the +# project logo, title, and description. If either GENERATE_TREEVIEW or +# DISABLE_INDEX is set to NO, this option has no effect. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FULL_SIDEBAR = NO + # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that # doxygen will group on one line in the generated HTML documentation. # @@ -1524,6 +1675,13 @@ TREEVIEW_WIDTH = 250 EXT_LINKS_IN_WINDOW = NO +# If the OBFUSCATE_EMAILS tag is set to YES, doxygen will obfuscate email +# addresses. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +OBFUSCATE_EMAILS = YES + # If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg # tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see # https://inkscape.org) to generate formulas as SVG images instead of PNGs for @@ -1561,11 +1719,29 @@ FORMULA_MACROFILE = USE_MATHJAX = NO +# With MATHJAX_VERSION it is possible to specify the MathJax version to be used. +# Note that the different versions of MathJax have different requirements with +# regards to the different settings, so it is possible that also other MathJax +# settings have to be changed when switching between the different MathJax +# versions. +# Possible values are: MathJax_2 and MathJax_3. +# The default value is: MathJax_2. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_VERSION = MathJax_2 + # When MathJax is enabled you can set the default output format to be used for -# the MathJax output. See the MathJax site (see: -# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. +# the MathJax output. For more details about the output format see MathJax +# version 2 (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) and MathJax version 3 +# (see: +# http://docs.mathjax.org/en/latest/web/components/output.html). # Possible values are: HTML-CSS (which is slower, but has the best -# compatibility), NativeMML (i.e. MathML) and SVG. +# compatibility. This is the name for Mathjax version 2, for MathJax version 3 +# this will be translated into chtml), NativeMML (i.e. MathML. Only supported +# for NathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This +# is the name for Mathjax version 3, for MathJax version 2 this will be +# translated into HTML-CSS) and SVG. # The default value is: HTML-CSS. # This tag requires that the tag USE_MATHJAX is set to YES. @@ -1578,15 +1754,21 @@ MATHJAX_FORMAT = HTML-CSS # MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax # Content Delivery Network so you can quickly see the result without installing # MathJax. However, it is strongly recommended to install a local copy of -# MathJax from https://www.mathjax.org before deployment. -# The default value is: https://cdn.jsdelivr.net/npm/mathjax@2. +# MathJax from https://www.mathjax.org before deployment. The default value is: +# - in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2 +# - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3 # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest # The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax # extension names that should be enabled during MathJax rendering. For example +# for MathJax version 2 (see +# https://docs.mathjax.org/en/v2.7-latest/tex.html#tex-and-latex-extensions): # MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# For example for MathJax version 3 (see +# http://docs.mathjax.org/en/latest/input/tex/extensions/index.html): +# MATHJAX_EXTENSIONS = ams # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_EXTENSIONS = @@ -1766,29 +1948,31 @@ PAPER_TYPE = a4 EXTRA_PACKAGES = -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the -# generated LaTeX document. The header should contain everything until the first -# chapter. If it is left blank doxygen will generate a standard header. See -# section "Doxygen usage" for information on how to let doxygen write the -# default header to a separate file. +# The LATEX_HEADER tag can be used to specify a user-defined LaTeX header for +# the generated LaTeX document. The header should contain everything until the +# first chapter. If it is left blank doxygen will generate a standard header. It +# is highly recommended to start with a default header using +# doxygen -w latex new_header.tex new_footer.tex new_stylesheet.sty +# and then modify the file new_header.tex. See also section "Doxygen usage" for +# information on how to generate the default header that doxygen normally uses. # -# Note: Only use a user-defined header if you know what you are doing! The -# following commands have a special meaning inside the header: $title, -# $datetime, $date, $doxygenversion, $projectname, $projectnumber, -# $projectbrief, $projectlogo. Doxygen will replace $title with the empty -# string, for the replacement values of the other commands the user is referred -# to HTML_HEADER. +# Note: Only use a user-defined header if you know what you are doing! +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. The following +# commands have a special meaning inside the header (and footer): For a +# description of the possible markers and block names see the documentation. # This tag requires that the tag GENERATE_LATEX is set to YES. LATEX_HEADER = -# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the -# generated LaTeX document. The footer should contain everything after the last -# chapter. If it is left blank doxygen will generate a standard footer. See +# The LATEX_FOOTER tag can be used to specify a user-defined LaTeX footer for +# the generated LaTeX document. The footer should contain everything after the +# last chapter. If it is left blank doxygen will generate a standard footer. See # LATEX_HEADER for more information on how to generate a default footer and what -# special commands can be used inside the footer. -# -# Note: Only use a user-defined footer if you know what you are doing! +# special commands can be used inside the footer. See also section "Doxygen +# usage" for information on how to generate the default footer that doxygen +# normally uses. Note: Only use a user-defined footer if you know what you are +# doing! # This tag requires that the tag GENERATE_LATEX is set to YES. LATEX_FOOTER = @@ -1831,10 +2015,16 @@ PDF_HYPERLINKS = YES USE_PDFLATEX = YES -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode -# command to the generated LaTeX files. This will instruct LaTeX to keep running -# if errors occur, instead of asking the user for help. This option is also used -# when generating formulas in HTML. +# The LATEX_BATCHMODE tag signals the behavior of LaTeX in case of an error. +# Possible values are: NO same as ERROR_STOP, YES same as BATCH, BATCH In batch +# mode nothing is printed on the terminal, errors are scrolled as if is +# hit at every error; missing files that TeX tries to input or request from +# keyboard input (\read on a not open input stream) cause the job to abort, +# NON_STOP In nonstop mode the diagnostic message will appear on the terminal, +# but there is no possibility of user interaction just like in batch mode, +# SCROLL In scroll mode, TeX will stop only for missing files to input or if +# keyboard input is necessary and ERROR_STOP In errorstop mode, TeX will stop at +# each error, asking for user intervention. # The default value is: NO. # This tag requires that the tag GENERATE_LATEX is set to YES. @@ -1855,14 +2045,6 @@ LATEX_HIDE_INDICES = NO LATEX_BIB_STYLE = plain -# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated -# page will contain the date and time when the page was generated. Setting this -# to NO can help when comparing the output of multiple runs. -# The default value is: NO. -# This tag requires that the tag GENERATE_LATEX is set to YES. - -LATEX_TIMESTAMP = NO - # The LATEX_EMOJI_DIRECTORY tag is used to specify the (relative or absolute) # path from which the emoji images will be read. If a relative path is entered, # it will be relative to the LATEX_OUTPUT directory. If left blank the @@ -2028,13 +2210,39 @@ DOCBOOK_OUTPUT = docbook #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an -# AutoGen Definitions (see http://autogen.sourceforge.net/) file that captures +# AutoGen Definitions (see https://autogen.sourceforge.net/) file that captures # the structure of the code including all documentation. Note that this feature # is still experimental and incomplete at the moment. # The default value is: NO. GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# Configuration options related to Sqlite3 output +#--------------------------------------------------------------------------- + +# If the GENERATE_SQLITE3 tag is set to YES doxygen will generate a Sqlite3 +# database with symbols found by doxygen stored in tables. +# The default value is: NO. + +GENERATE_SQLITE3 = NO + +# The SQLITE3_OUTPUT tag is used to specify where the Sqlite3 database will be +# put. If a relative path is entered the value of OUTPUT_DIRECTORY will be put +# in front of it. +# The default directory is: sqlite3. +# This tag requires that the tag GENERATE_SQLITE3 is set to YES. + +SQLITE3_OUTPUT = sqlite3 + +# The SQLITE3_OVERWRITE_DB tag is set to YES, the existing doxygen_sqlite3.db +# database file will be recreated with each doxygen run. If set to NO, doxygen +# will warn if an a database file is already found and not modify it. +# The default value is: YES. +# This tag requires that the tag GENERATE_SQLITE3 is set to YES. + +SQLITE3_RECREATE_DB = YES + #--------------------------------------------------------------------------- # Configuration options related to the Perl module output #--------------------------------------------------------------------------- @@ -2109,7 +2317,8 @@ SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by the -# preprocessor. +# preprocessor. Note that the INCLUDE_PATH is not recursive, so the setting of +# RECURSIVE has no effect here. # This tag requires that the tag SEARCH_INCLUDES is set to YES. INCLUDE_PATH = @@ -2176,15 +2385,15 @@ TAGFILES = GENERATE_TAGFILE = -# If the ALLEXTERNALS tag is set to YES, all external class will be listed in -# the class index. If set to NO, only the inherited external classes will be -# listed. +# If the ALLEXTERNALS tag is set to YES, all external classes and namespaces +# will be listed in the class and namespace index. If set to NO, only the +# inherited external classes will be listed. # The default value is: NO. ALLEXTERNALS = NO # If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will be +# in the topic index. If set to NO, only the current project's groups will be # listed. # The default value is: YES. @@ -2198,16 +2407,9 @@ EXTERNAL_GROUPS = NO EXTERNAL_PAGES = NO #--------------------------------------------------------------------------- -# Configuration options related to the dot tool +# Configuration options related to diagram generator tools #--------------------------------------------------------------------------- -# You can include diagrams made with dia in doxygen documentation. Doxygen will -# then run dia to produce the diagram and insert it in the documentation. The -# DIA_PATH tag allows you to specify the directory where the dia binary resides. -# If left empty dia is assumed to be found in the default search path. - -DIA_PATH = - # If set to YES the inheritance and collaboration graphs will hide inheritance # and usage relations if the target is undocumented or is not a class. # The default value is: YES. @@ -2216,10 +2418,10 @@ HIDE_UNDOC_RELATIONS = YES # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz (see: -# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent +# https://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent # Bell Labs. The other options in this section have no effect if this option is # set to NO -# The default value is: YES. +# The default value is: NO. HAVE_DOT = NO @@ -2233,32 +2435,73 @@ HAVE_DOT = NO DOT_NUM_THREADS = 0 -# By default doxygen will tell dot to use the default font as specified with -# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set -# the path where dot can find it using this tag. +# DOT_COMMON_ATTR is common attributes for nodes, edges and labels of +# subgraphs. When you want a differently looking font in the dot files that +# doxygen generates you can specify fontname, fontcolor and fontsize attributes. +# For details please see Node, +# Edge and Graph Attributes specification You need to make sure dot is able +# to find the font, which can be done by putting it in a standard location or by +# setting the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the +# directory containing the font. Default graphviz fontsize is 14. +# The default value is: fontname=Helvetica,fontsize=10. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_COMMON_ATTR = "fontname=Helvetica,fontsize=10" + +# DOT_EDGE_ATTR is concatenated with DOT_COMMON_ATTR. For elegant style you can +# add 'arrowhead=open, arrowtail=open, arrowsize=0.5'. Complete documentation about +# arrows shapes. +# The default value is: labelfontname=Helvetica,labelfontsize=10. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_EDGE_ATTR = "labelfontname=Helvetica,labelfontsize=10" + +# DOT_NODE_ATTR is concatenated with DOT_COMMON_ATTR. For view without boxes +# around nodes set 'shape=plain' or 'shape=plaintext' Shapes specification +# The default value is: shape=box,height=0.2,width=0.4. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_NODE_ATTR = "shape=box,height=0.2,width=0.4" + +# You can set the path where dot can find font specified with fontname in +# DOT_COMMON_ATTR and others dot attributes. # This tag requires that the tag HAVE_DOT is set to YES. DOT_FONTPATH = -# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for -# each documented class showing the direct and indirect inheritance relations. -# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO. +# If the CLASS_GRAPH tag is set to YES or GRAPH or BUILTIN then doxygen will +# generate a graph for each documented class showing the direct and indirect +# inheritance relations. In case the CLASS_GRAPH tag is set to YES or GRAPH and +# HAVE_DOT is enabled as well, then dot will be used to draw the graph. In case +# the CLASS_GRAPH tag is set to YES and HAVE_DOT is disabled or if the +# CLASS_GRAPH tag is set to BUILTIN, then the built-in generator will be used. +# If the CLASS_GRAPH tag is set to TEXT the direct and indirect inheritance +# relations will be shown as texts / links. +# Possible values are: NO, YES, TEXT, GRAPH and BUILTIN. # The default value is: YES. -# This tag requires that the tag HAVE_DOT is set to YES. CLASS_GRAPH = YES # If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a # graph for each documented class showing the direct and indirect implementation # dependencies (inheritance, containment, and class references variables) of the -# class with other documented classes. +# class with other documented classes. Explicit enabling a collaboration graph, +# when COLLABORATION_GRAPH is set to NO, can be accomplished by means of the +# command \collaborationgraph. Disabling a collaboration graph can be +# accomplished by means of the command \hidecollaborationgraph. # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. COLLABORATION_GRAPH = YES # If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for -# groups, showing the direct groups dependencies. +# groups, showing the direct groups dependencies. Explicit enabling a group +# dependency graph, when GROUP_GRAPHS is set to NO, can be accomplished by means +# of the command \groupgraph. Disabling a directory graph can be accomplished by +# means of the command \hidegroupgraph. See also the chapter Grouping in the +# manual. # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. @@ -2318,7 +2561,9 @@ TEMPLATE_RELATIONS = NO # If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to # YES then doxygen will generate a graph for each documented file showing the # direct and indirect include dependencies of the file with other documented -# files. +# files. Explicit enabling an include graph, when INCLUDE_GRAPH is is set to NO, +# can be accomplished by means of the command \includegraph. Disabling an +# include graph can be accomplished by means of the command \hideincludegraph. # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. @@ -2327,7 +2572,10 @@ INCLUDE_GRAPH = YES # If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are # set to YES then doxygen will generate a graph for each documented file showing # the direct and indirect include dependencies of the file with other documented -# files. +# files. Explicit enabling an included by graph, when INCLUDED_BY_GRAPH is set +# to NO, can be accomplished by means of the command \includedbygraph. Disabling +# an included by graph can be accomplished by means of the command +# \hideincludedbygraph. # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. @@ -2367,22 +2615,30 @@ GRAPHICAL_HIERARCHY = YES # If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the # dependencies a directory has on other directories in a graphical way. The # dependency relations are determined by the #include relations between the -# files in the directories. +# files in the directories. Explicit enabling a directory graph, when +# DIRECTORY_GRAPH is set to NO, can be accomplished by means of the command +# \directorygraph. Disabling a directory graph can be accomplished by means of +# the command \hidedirectorygraph. # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. DIRECTORY_GRAPH = YES +# The DIR_GRAPH_MAX_DEPTH tag can be used to limit the maximum number of levels +# of child directories generated in directory dependency graphs by dot. +# Minimum value: 1, maximum value: 25, default value: 1. +# This tag requires that the tag DIRECTORY_GRAPH is set to YES. + +DIR_GRAPH_MAX_DEPTH = 1 + # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. For an explanation of the image formats see the section # output formats in the documentation of the dot tool (Graphviz (see: -# http://www.graphviz.org/)). +# https://www.graphviz.org/)). # Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order # to make the SVG files visible in IE 9+ (other browsers do not have this # requirement). -# Possible values are: png, png:cairo, png:cairo:cairo, png:cairo:gd, png:gd, -# png:gd:gd, jpg, jpg:cairo, jpg:cairo:gd, jpg:gd, jpg:gd:gd, gif, gif:cairo, -# gif:cairo:gd, gif:gd, gif:gd:gd, svg, png:gd, png:gd:gd, png:cairo, +# Possible values are: png, jpg, gif, svg, png:gd, png:gd:gd, png:cairo, # png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and # png:gdiplus:gdiplus. # The default value is: png. @@ -2415,11 +2671,12 @@ DOT_PATH = DOTFILE_DIRS = -# The MSCFILE_DIRS tag can be used to specify one or more directories that -# contain msc files that are included in the documentation (see the \mscfile -# command). +# You can include diagrams made with dia in doxygen documentation. Doxygen will +# then run dia to produce the diagram and insert it in the documentation. The +# DIA_PATH tag allows you to specify the directory where the dia binary resides. +# If left empty dia is assumed to be found in the default search path. -MSCFILE_DIRS = +DIA_PATH = # The DIAFILE_DIRS tag can be used to specify one or more directories that # contain dia files that are included in the documentation (see the \diafile @@ -2428,10 +2685,10 @@ MSCFILE_DIRS = DIAFILE_DIRS = # When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the -# path where java can find the plantuml.jar file. If left blank, it is assumed -# PlantUML is not used or called during a preprocessing step. Doxygen will -# generate a warning when it encounters a \startuml command in this case and -# will not generate output for the diagram. +# path where java can find the plantuml.jar file or to the filename of jar file +# to be used. If left blank, it is assumed PlantUML is not used or called during +# a preprocessing step. Doxygen will generate a warning when it encounters a +# \startuml command in this case and will not generate output for the diagram. PLANTUML_JAR_PATH = @@ -2481,6 +2738,8 @@ DOT_MULTI_TARGETS = NO # If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page # explaining the meaning of the various boxes and arrows in the dot generated # graphs. +# Note: This tag requires that UML_LOOK isn't set, i.e. the doxygen internal +# graphical representation for inheritance and collaboration diagrams is used. # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. @@ -2489,8 +2748,24 @@ GENERATE_LEGEND = YES # If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate # files that are used to generate the various graphs. # -# Note: This setting is not only used for dot files but also for msc and -# plantuml temporary files. +# Note: This setting is not only used for dot files but also for msc temporary +# files. # The default value is: YES. DOT_CLEANUP = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. If the MSCGEN_TOOL tag is left empty (the default), then doxygen will +# use a built-in version of mscgen tool to produce the charts. Alternatively, +# the MSCGEN_TOOL tag can also specify the name an external tool. For instance, +# specifying prog as the value, doxygen will call the tool as prog -T +# -o . The external tool should support +# output file formats "png", "eps", "svg", and "ismap". + +MSCGEN_TOOL = + +# The MSCFILE_DIRS tag can be used to specify one or more directories that +# contain msc files that are included in the documentation (see the \mscfile +# command). + +MSCFILE_DIRS = diff --git a/doc/UserGuide/tables/UFS_unified_variables_table.csv b/doc/UserGuide/tables/UFS_unified_variables_table.csv index 1f835ae7e..f765c74e4 100644 --- a/doc/UserGuide/tables/UFS_unified_variables_table.csv +++ b/doc/UserGuide/tables/UFS_unified_variables_table.csv @@ -205,7 +205,7 @@ Particulate matter (PP10),pp10,pp10,3d,dyn,gocart_on=True Particulate matter (PM10),pm10,pp10,3d,dyn,nasa_on=True Dust emission fluxes (1-5),duem001/.../duem005,duem,2d,phy, all requested read into 3d array Dust sedimentation fluxes (1-5),dust1sd/.../dust5sd,dusd,2d, phy, all requested read into 3d array -Dust dry deposition fluxes (1-5),dust1dp/.../dust5dp,dupd,2d,phy, all requested read into 3d array +Dust dry deposition fluxes (1-5),dust1dp/.../dust5dp,dudp,2d,phy, all requested read into 3d array Dust wet deposition fluxes (1-5),dust1wtl/.../dust5wtl,duwt,2d,phy, all requested read into 3d array Dust scavenging fluxes (1-5),dust1wtc/.../dust5wtc,dusv,2d,phy, all requested read into 3d array Seasalt emission fluxes (1-5),ssem001/.../ssem005,ssem,2d,phy, all requested read into 3d array diff --git a/doc/user_guide.md b/doc/user_guide.md index 9514436c0..463f740f4 100644 --- a/doc/user_guide.md +++ b/doc/user_guide.md @@ -20,7 +20,7 @@ products. Output from the UPP is in National Weather Service (NWS) and World Meteorological Organization (WMO) GRIB2 format and can be used directly by visualization, plotting, or verification packages, or for further downstream post-processing, e.g. statistical post-processing -techniques. Examples of UPP products include: +techniques. Examples of UPP products include: - T, Z, humidity, wind, cloud water, cloud ice, rain, and snow on pressure levels - SLP, shelter level T, humidity, and wind fields @@ -33,5 +33,18 @@ techniques. Examples of UPP products include: - Radar reflectivity products - Satellite look-alike products -Support for the UFS UPP is provided through the UFS Forum by the -Developmental Testbed Center (DTC) for FV3-based applications. +**Prerequisites** +The UPP requires certain NCEPLIBS packages to be installed via the spack-stack project. For instructions on installing these packages as a bundle via spack-stack, see: https://spack-stack.readthedocs.io/en/latest/. The UPP/modulefiles directory indicates which package versions are used and supported on Level 1 systems. + +Community support for the Unified Forecast System (UFS) UPP in FV3-based applications is provided by the +Earth Prediction Innovation Center (EPIC). Community support for the UPP with WRF is no longer available. + +* Support for the UFS UPP is provided through [GitHub Discussions](https://github.com/NOAA-EMC/UPP/discussions). +* The UPP User's Guide for the latest standalone public release is [UPP v11.0.0](https://upp.readthedocs.io/en/upp_v11.0.0/). +* The UPP User's Guide for develop branch is [UPP develop](https://upp.readthedocs.io/en/develop/). +* The [UPP wiki](https://github.com/NOAA-EMC/UPP/wiki) includes relevant information and links for users and developers. +* Instructions on technical code documentation are available in a set of [Doxygen Documentation Slides](https://github.com/NOAA-EMC/UPP/wiki/DoxygenDocumentation.pdf). + +Code Managers: Wen Meng (EMC), Huiya Chuang (EMC), Fernando Andrade-Maldonado (EPIC) + + diff --git a/sorc/ncep_post.fd/BNDLYR.f b/sorc/ncep_post.fd/BNDLYR.f index 72e4cb950..aa900d756 100644 --- a/sorc/ncep_post.fd/BNDLYR.f +++ b/sorc/ncep_post.fd/BNDLYR.f @@ -1,6 +1,6 @@ !> @file !> @brief Subroutine that computes boundary layer fields. -! +!> !> Computes constant mass mean fields !> !> This routine computes constant mass (boundary layer) @@ -11,11 +11,31 @@ !> relative humidity, U and V winds, vertical velocity, !> and precipitable water. Given these fundamental variables !> other fields may be computed. -!> +!> !> @note If you change parameter NBND in this routine !> don't forget to change it also in the calling !> subprogram, MISCLN. !> +!> ### Program history log: +!> Date | Programmer | Comments +!> -----|------------|--------- +!> 1993-01-29 | RUSS TREADON | Original file +!> 1993-05-07 | RUSS TREADON | ADDED DOC BLOCK AND MORE COMMENTS. +!> 1993-06-19 | RUSS TREADON | ADDED LVLBND TO PARAMETER LIST. +!> 1996-03-07 | MIKE BALDWIN | CHANGE PWTR CALC TO INCLUDE CLD WTR SPEED UP CODE +!> 1998-06-16 | T BLACK | CONVERSION FROM 1-D TO 2-D +!> 1998-08-18 | MIKE BALDWIN | CHANGE QSBND TO RHBND IN CALL, COMPUTE RH OVER ICE +!> 1998-12-22 | MIKE BALDWIN | BACK OUT RH OVER ICE +!> 2000-01-04 | JIM TUCCILLO | MPI VERSION +!> 2002-01-15 | MIKE BALDWIN | WRF VERSION +!> 2020-11-10 | JESSE MENG | USE UPP_PHYSICS MODULE +!> 2021-08-20 | Wen Meng | Retrict computation fro undefined points. +!> 2021-09-02 | Bo Cui | Decompose UPP in X direction. +!> +!> @author Russ Treadon W/NP2 @date 1993-01-29 +! ------------------------------------------------------------------------------------------ +!> @brief Computes boundary layer fields. +!> !> @param[out] PBND - Layer mean pressure in NBND boundary layers (NBL). !> @param[out] TBND - Layer mean temperature in NBL. !> @param[out] QBND - Layer mean specific humidity in NBL. @@ -28,23 +48,10 @@ !> @param[out] QCNVBND - Layer moisture convergence in NBL. !> @param[out] LVLBND - ETA layer at midpoint of NBL. !> -!> Program History -!> - 93-01-29 RUSS TREADON -!> - 93-05-07 RUSS TREADON - ADDED DOC BLOCK AND MORE COMMENTS. -!> - 93-06-19 RUSS TREADON - ADDED LVLBND TO PARAMETER LIST. -!> - 96-03-07 MIKE BALDWIN - CHANGE PWTR CALC TO INCLUDE CLD WTR -!> SPEED UP CODE -!> - 98-06-16 T BLACK - CONVERSION FROM 1-D TO 2-D -!> - 98-08-18 MIKE BALDWIN - CHANGE QSBND TO RHBND IN CALL, -!> COMPUTE RH OVER ICE -!> - 98-12-22 MIKE BALDWIN - BACK OUT RH OVER ICE -!> - 00-01-04 JIM TUCCILLO - MPI VERSION -!> - 02-01-15 MIKE BALDWIN - WRF VERSION -!> - 20-11-10 JESSE MENG - USE UPP_PHYSICS MODULE -!> - 21-08-20 Wen Meng - Retrict computation fro undefined points. -!> - 21-09-02 Bo Cui - Decompose UPP in X direction. -!> -!> @author Russ Treadon W/NP2 @date 1993-01-29 +!> @note If you change parameter NBND in this routine +!> don't forget to change it also in the calling +!> subprogram, MISCLN. + SUBROUTINE BNDLYR(PBND,TBND,QBND,RHBND,UBND,VBND, & WBND,OMGBND,PWTBND,QCNVBND,LVLBND) diff --git a/sorc/ncep_post.fd/BOUND.f b/sorc/ncep_post.fd/BOUND.f index 8c261a073..a0b09c088 100644 --- a/sorc/ncep_post.fd/BOUND.f +++ b/sorc/ncep_post.fd/BOUND.f @@ -2,19 +2,14 @@ !> @brief bound() clips data in passed array. !> !> @author Russ Treadon W/NP2 @date 1993-01-18 - -!> This routine bounds data in the passed array -!> FLD (im x jm elements long) and clips data values such -!> that on exiting the routine +!> +!> This routine bounds data in the passed array FLD (im x jm elements long) +!> and clips data values such that on exiting the routine !> @code !> FMIN <= FLD(I,J) <= FMAX !> @endcode !> for all points. !> -!> @param[in] FMIN Lower (inclusive) bound for data. -!> @param[in] FMAX Upper (inclusive) bound for data. -!> @param[out] FLD Array whose elements are bounded by [FMIN,FMAX]. -!> !> ### Program History Log !> Date | Programmer | Comments !> -----|------------|--------- @@ -26,6 +21,13 @@ !> 2021-09002 | Bo Cui | Decompose UPP in X direction !> !> @author Russ Treadon W/NP2 @date 1993-01-18 +!--------------------------------------------------------------------------------------- +!> @brief Clips data in passed array. +!> +!> @param[in] FMIN Lower (inclusive) bound for data. +!> @param[in] FMAX Upper (inclusive) bound for data. +!> @param[out] FLD Array whose elements are bounded by [FMIN,FMAX]. +!> SUBROUTINE BOUND(FLD,FMIN,FMAX) ! diff --git a/sorc/ncep_post.fd/CALDWP.f b/sorc/ncep_post.fd/CALDWP.f index 02f309a94..35c05bb80 100644 --- a/sorc/ncep_post.fd/CALDWP.f +++ b/sorc/ncep_post.fd/CALDWP.f @@ -1,5 +1,5 @@ !> @file -!> @brief Subroutine related to dewpoint temperature. +!> @brief Subroutine that calculates dewpoint temperature. ! !> Computes dewpoint from P, T, and Q. !> diff --git a/sorc/ncep_post.fd/CALGUST.f b/sorc/ncep_post.fd/CALGUST.f index 8c6ec1da3..ab3e342d7 100644 --- a/sorc/ncep_post.fd/CALGUST.f +++ b/sorc/ncep_post.fd/CALGUST.f @@ -50,6 +50,7 @@ SUBROUTINE CALGUST(LPBL,ZPBL,GUST) ! ! !***************************************************************************** +!> CALMXW computes max wind level fields. ! START CALMXW HERE. ! ! LOOP OVER THE GRID. diff --git a/sorc/ncep_post.fd/CALHEL.f b/sorc/ncep_post.fd/CALHEL.f index eedc4feeb..ef866bc0c 100644 --- a/sorc/ncep_post.fd/CALHEL.f +++ b/sorc/ncep_post.fd/CALHEL.f @@ -1,6 +1,6 @@ !> @file -!> @brief Subroutine that computes storm relative helicity. -! +!> @brief Subroutine that computes storm relative helicity and storm motion. +!> !> This routine computes estimated storm motion and storm-relative !> environmental helicity. (Davies-Jones et al 1990) the algorithm !> processd as follows. @@ -12,16 +12,7 @@ !> method (Bunkers et al. 1988) which has been found to do better in cases with !> 'non-classic' hodographs (such as Northwest-flow events) and do as well or !> better than the old method in more classic situations. -!> -!> @param[in] DEPTH Depth in meters over whcih helicity should be computed; allows one to distinguish 0-3 km and 0-1 km values. -!> @param[out] UST Estimated U Component (m/s) Of Storm motion. -!> @param[out] VST Estimated V Component (m/s) Of Storm motion. -!> @param[out] HELI Storm-relative heliciry (m**2/s**2). -!> @param[out] USHR1 U Component (m/s) Of 0-1 km shear. -!> @param[out] VSHR1 V Component (m/s) Of 0-1 km shear. -!> @param[out] USHR6 U Component (m/s) Of 0-0.5 to 5.5-6.0 km shear. -!> @param[out] VSHR6 V Component (m/s) Of 0-0.5 to 5.5-6.0 km shear. -!> +!> !> ### Program history log: !> Date | Programmer | Comments !> -----|------------|--------- @@ -40,6 +31,18 @@ !> 2022-10-07 | Tracy Hertneky | Add left mover for storm motion in SH !> !> @author Michael Baldwin W/NP2 @date 1994-08-22 +! ----------------------------------------------------------------------------------- +!> @brief Computes storm relative helicity and storm motion. +!> +!> @param[in] DEPTH Depth in meters over whcih helicity should be computed; allows one to distinguish 0-3 km and 0-1 km values. +!> @param[out] UST Estimated U Component (m/s) Of Storm motion. +!> @param[out] VST Estimated V Component (m/s) Of Storm motion. +!> @param[out] HELI Storm-relative heliciry (m**2/s**2). +!> @param[out] USHR1 U Component (m/s) Of 0-1 km shear. +!> @param[out] VSHR1 V Component (m/s) Of 0-1 km shear. +!> @param[out] USHR6 U Component (m/s) Of 0-0.5 to 5.5-6.0 km shear. +!> @param[out] VSHR6 V Component (m/s) Of 0-0.5 to 5.5-6.0 km shear. +!> SUBROUTINE CALHEL(DEPTH,UST,VST,HELI,USHR1,VSHR1,USHR6,VSHR6) ! diff --git a/sorc/ncep_post.fd/CMASSI.f b/sorc/ncep_post.fd/CMASSI.f index d23e5685d..232d30e17 100644 --- a/sorc/ncep_post.fd/CMASSI.f +++ b/sorc/ncep_post.fd/CMASSI.f @@ -1,33 +1,55 @@ +!> @file +!> @brief CMASSI defines variables related to mass and precipitation +!> See CCPP Ferrier-Aligo microphysics modules for more information module CMASSI_mod !- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - implicit none ! !----------------------------------------------------------------------- - REAL, PARAMETER :: DMImin=.05e-3, DMImax=1.e-3, & - & XMImin=1.e6*DMImin, XMImax=1.e6*DMImax - INTEGER, PARAMETER :: MDImin=XMImin, MDImax=XMImax + REAL, PARAMETER :: DMImin=.05e-3, & !< Minimum mean mass of precipitation ice particles. + DMImax=1.e-3, & !< Maximum mean mass of precipitation ice particles. + XMImin=1.e6*DMImin, & !< Minimum mean mass of precipitation ice particles (in microns). + XMImax=1.e6*DMImax !< Maximum mean mass of precipitation ice particles (in microns). + + INTEGER, PARAMETER :: MDImin=XMImin, & !< Minimum mean diameter of precipitation ice particles. + MDImax=XMImax !< Maximum mean diameter of precipitation ice particles. + !----------------------------------------------------------------------- -!--- Mean mass of precpitation ice particles as functions of their mean -! size (in microns) -! - REAL MASSI(MDImin:MDImax) -! + + REAL MASSI(MDImin:MDImax) !< Mean mass of precipitation ice particles as functions of their mean size (in microns). + !--- Mean rain drop diameters vary from 50 microns to 1000 microns -! DMRmax definition is moved to microinit and has different values depending on imp_physics - REAL, PARAMETER :: DMRmin=.05E-3, DelDMR=1.E-6 & - &, XMRmin=1.E6*DMRmin, N0r0=8.E6, N0rmin=1.e4 - REAL DMRmax,XMRmax - INTEGER, PARAMETER :: MDRmin=XMRmin - INTEGER MDRmax -! +!> DMRmax definition is moved to microinit and has different values depending on imp_physics + + REAL, PARAMETER :: DMRmin=.05E-3, & !< Minimum mean rain drop diameter (0.05 mm). + DelDMR=1.E-6, & !< One-micron interval (Lookup tables store solutions at 1 micron intervals [DelDMR] of mean rain drop diameter.). + XMRmin=1.E6*DMRmin, & !< Minimum mean rain drop diameter (in microns). + N0r0=8.E6, & !< Assumed intercept (m**-4) of rain drops if drop diameters are between 0.2 and 1.0 mm. + N0rmin=1.e4 !< Minimum intercept (m**-4) for rain drops. + + REAL DMRmax & !< Maximum mean rain drop diameter. + ,XMRmax !< Maximum mean rain drop diameter. + + INTEGER, PARAMETER :: MDRmin=XMRmin !< Minimum mean rain drop diameter (in microns). + INTEGER MDRmax !< Maximum mean rain drop diameter (in microns). + +! !--- Various rain lookup tables -! - REAL RQR_DRmin,RQR_DRmax, & - CN0r0,CN0r_DMRmin,CN0r_DMRmax -! +! + + REAL RQR_DRmin & !< Rain content (kg/m**3) for mean drop diameter of .05 mm. + ,RQR_DRmax & !< Rain content (kg/m**3) for mean drop diameter of 1.0 mm. + ,CN0r0 & !< Constant derived from N0r0. + ,CN0r_DMRmin & !< Minimum (starting) value for rain lookup tables for mean rain drop diameters. + ,CN0r_DMRmax !< Maximum (ending) value for rain lookup tables for mean rain drop diameters. + !--- Other important parameters -! (NLImax, FLARGE2 are used for the older version of the microphysics) -! - REAL T_ICE,NLImax,FLARGE2,TRAD_ice -! +! (NLImax, FLARGE2 are used for the older version of the microphysics) +! + REAL T_ICE & !< Temperature (C) threshold at which all remaining liquid water is glaciated to ice. + ,NLImax & !< Maximum number concentrations (m**-3) of large ice (snow/graupel/sleet). + ,FLARGE2 & !< Set in MICROINIT.F (no longer used). + ,TRAD_ice !< Defined as 0.5*T_ICE+TFRZ, or 253.15K, in other routines. Possibly refers to thermal radiation of ice or ice nucleation temperature ? + + end module CMASSI_mod diff --git a/sorc/ncep_post.fd/CTLBLK.f b/sorc/ncep_post.fd/CTLBLK.f index 663a6d6eb..edbb65e58 100644 --- a/sorc/ncep_post.fd/CTLBLK.f +++ b/sorc/ncep_post.fd/CTLBLK.f @@ -1,8 +1,7 @@ !> @file -!> @brief module: CTLBLK sets default parameters that are used throughout the UPP code -!> -!> ABSTRACT: -!> This module is replacing the CTLBLK.comm, all the comm block is removed. +!> @brief CTLBLK sets default parameters that are used throughout the UPP code +!> +!> This module replaces CTLBLK.comm; all the comm block is removed. !> !> ### Program history log: !> Date | Programmer | Comments @@ -20,22 +19,22 @@ !> 2023-08-16 | Yali Mao | Add gtg_on logical option !> 2023-11-24 | Eric James | Add method_blsn logical option !----------------------------------------------------------------------- -!> @defgroup CTLBLK_mod Sets default parameters that are used throughout the UPP code -!----------------------------------------------------------------------- +!> @defgroup CTLBLK CTLBLK +!> Sets default parameters that are used throughout the UPP code module CTLBLK_mod ! implicit none ! - type field_info + type field_info !< Field information integer ifld !< Field number in post control file - integer lvl !< _____. - integer lvl1 !< _____. - integer lvl2 !< _____. - integer ntrange !< _____. - integer tinvstat !< _____. + integer lvl !< _____? + integer lvl1 !< _____? + integer lvl2 !< _____? + integer ntrange !< _____? + integer tinvstat !< _____? end type ! - integer, parameter :: komax=70 !< _____. + integer, parameter :: komax=70 !< At-rest earth pressure coefficient maximum. integer, parameter :: LSMDEF=46 !< Default number of pressure levels. integer,PARAMETER :: NFD=20 !< Default number of flight level heights in geopotential meters. integer,PARAMETER :: NBND=6 !< Default number of ETA boundary layers. @@ -45,8 +44,8 @@ module CTLBLK_mod ! character(len=256) :: fileName !< Name of input dynamics file; name of full 3-D model output file. character(len=256) :: fileNameFlux !< Name of input physics file; name of 2-D model output file with physics and surface fields. - character(len=256) :: fileNameD3D !< _____. - character(len=256) :: fileNameAER !< _____. + character(len=256) :: fileNameD3D !< No longer used/supported. (Name of file containing dynamic 3D fields from GFS.) + character(len=256) :: fileNameAER !< Name of GFS aersol file character(len=256) :: fileNameFlat !< Input configuration text file defining the requested fields. character(len=19) :: DateStr !< Time stamp being processed (e.g., 2022-08-02_19:00:00). character(len=4) :: MODELNAME !< Model name used by UPP internally (e.g., FV3R for LAM, GFS for GFS, NCAR for WRF). @@ -56,19 +55,19 @@ module CTLBLK_mod character(len=4) :: VTIMEUNITS !< Valid time units. ! character(5) :: grib !< Grib type (Note that UPP only supports Grib2 currently). - type(field_info),allocatable :: fld_info(:) !< _____. - integer :: cfld !< _____. - integer :: ntlfld !< _____. - integer :: npset !< _____. - real*8 :: gdsdegr !< _____. - real,allocatable :: datapd(:,:,:) !< _____. + type(field_info),allocatable :: fld_info(:) !< _____? + integer :: cfld !< _____? + integer :: ntlfld !< _____? + integer :: npset !< _____? + real*8 :: gdsdegr !< Convert degrees to gradians ? + real,allocatable :: datapd(:,:,:) !< _____? ! !> Logicals to turn on/off different post-processing packages/output depending on model output. logical :: gocart_on !< Turn on option to process the aerosol/chemical tracers related output from GEFS-Aerosols model (GOCART). logical :: gccpp_on !< Turn on option to process the aerosol/chemical tracers related output from UFS-Chem (CCPP-Chem) model. logical :: nasa_on !< Turn on option to process the aerosol/chemical tracers related output from UFS-Aerosols model (NASA GOCART). - logical :: d3d_on !< _____. - logical :: hyb_sigp !< _____. + logical :: d3d_on !< Turn on option to use dynamic 3D fields from GFS. + logical :: hyb_sigp !< Turn on option to use hybrid sigma pressure levels. logical :: rdaod !< Turn on option to process the AOD from GFS scheme. logical :: d2d_chem !< Turn on option to process the 2D aerosol/chemical tracers. logical :: aqf_on !< Turn on Air Quality Forecasting (CMAQ-based). @@ -80,7 +79,7 @@ module CTLBLK_mod logical :: RUN !< No longer used/supported. logical :: FIRST !< No longer used/supported. logical :: RESTRT !< Indicates whether it is a restart run. - logical :: global !< _____. + logical :: global !< Flag indicating global model run (if false then regional) logical :: SMFLAG !< Smoothing flag for isobaric output. ! integer :: IDAT(5) !< Array storing input month, day, year, hour, min of file being processed (parsed from DateStr) @@ -91,34 +90,34 @@ module CTLBLK_mod integer :: imp_physics !< Microphysics option used in the model run. integer :: icu_physics !< Cumulus physics option in the model run. integer :: iSF_SURFACE_PHYSICS !< Surface physics scheme option in model run. - integer :: DataHandle !< _____. - integer :: NPREC !< _____. - integer :: NPHS !< _____. + integer :: DataHandle !< Handle (or reference) to the data being processed. + integer :: NPREC !< Number of precipitation buckets. + integer :: NPHS !< Physics time step integer :: ISEC !< Seconds of file being processed (not parsed from DateStr, hard-coded set to 0). - integer :: icount_calmict !< _____. + integer :: icount_calmict !< _____? integer :: ivegsrc !< Flag for vegetation classification source (0=USGS, 1=IGBP, 2=UMD) ! -!> @ingroup CTLBLK_mod +!> @ingroup CTLBLK !> @{ !> No longer used/supported. integer :: NFCST,NBC,LIST,IOUT,NTSTM, & NRADS,NRADL,NDDAMP,IDTAD,NBOCO,NSHDE,NCP,IMDLTY !> @} ! - real :: DT !< Model time step in seconds. - real :: SDAT(3) !< Array of month, day, year of restart run. - real :: AVRAIN !< Counter for summing latent heating from grid microphysics. - real :: AVCNVC !< Counter for summing latent heating from convection. - real :: DTQ2 !< Model physics time step in seconds. - real :: PT !< Model top requested by CMAQ. - real :: PDTOP !< Pressure thickness requested by CMAQ. - real :: SPL(komax) !< _____. - real :: ALSL(komax) !< _____. - real :: PREC_ACC_DT !< _____. - real :: PT_TBL !< _____. - real :: PREC_ACC_DT1 !< _____. - real :: spval !< _____. + real :: DT !< Model time step in seconds + real :: SDAT(3) !< Array of month, day, year of restart run + real :: AVRAIN !< Counter for summing latent heating from grid microphysics + real :: AVCNVC !< Counter for summing latent heating from convection + real :: DTQ2 !< Model physics time step in seconds + real :: PT !< Model top requested by CMAQ + real :: PDTOP !< Pressure thickness requested by CMAQ + real :: SPL(komax) !< Specified pressure levels + real :: ALSL(komax) !< Altitude above sea level _____? + real :: PREC_ACC_DT !< Time interval for accumulated precipitation + real :: PT_TBL !< _____? + real :: PREC_ACC_DT1 !< Alternate time interval for accumulated precipitation used primarily w/RAP/HRRR. + real :: spval !< Special value ! real :: SPVAL=9.9e10 ! Moorthi ! integer :: NUM_PROCS !< The number of MPI ranks available to the post processor. @@ -151,7 +150,7 @@ module CTLBLK_mod integer :: IVEND_2U !< Defines the right most boundary for the subdomain used on each MPI rank. Includes information from neighboring ranks (halos). integer :: NUM_SERVERS !< An optional variable to support asynchronous writes of post-processed fields; one if there is more than one total MPI task - otherwise zero; note that the asynchronous write code is not in active development or used. integer :: MPI_COMM_INTER !< An MPI communicator defining a subgroup of the MPI ranks used for asynchronous I/O; asynchronous writes are not in active development. - integer :: MPI_COMM_COMP !< an MPI communicator defining the subgroup of MPI ranks used to compute post-processed product fields; all current post implementations use all of the ranks so this again supports an unexploited development path in the code. + integer :: MPI_COMM_COMP !< An MPI communicator defining the subgroup of MPI ranks used to compute post-processed product fields; all current post implementations use all of the ranks so this again supports an unexploited development path in the code. integer :: IM !< Full longitude domain. integer :: JM !< Full latitude domain. integer :: LM !< Number of vertical levels. @@ -166,10 +165,10 @@ module CTLBLK_mod integer :: ibsize !< Defines the size of the buffer used in mpi_scatter and mpi_gather. It is necessary because the post-processed variables are not contiguous in the 2D ista_2l:iend_2u,jsta_2l:jsta_2u arrays, so they have to be stored in a contigous buffer and that buffer is what is scattered or gathered. integer :: ibsum !< No longer supported. !comm mpi - integer :: lsm !< _____. + integer :: lsm !< Land surface model ? integer :: lsmp1 !< LSM+1. ! -!> @ingroup CTLBLK_mod +!> @ingroup CTLBLK !> @{ !> Arrays that store the coordinates of their elements; used to validate communications; !> when scattered or otherwise dispersed, the receiving ranks check that the values of @@ -200,12 +199,12 @@ module CTLBLK_mod real :: TCLOD !< Number of hours in cloud fraction average. real :: THEAT !< Number of hours in latent heating bucket. real :: TPREC !< Number of hours in precipitation bucket. - real :: TMAXMIN !< _____. - real :: TD3D !< _____. + real :: TMAXMIN !< _____? + real :: TD3D !< _____? ! real PTHRESH !< Threshold for precipitation (used to check if there is precipitation, mainly in ptype routines). ! -!> @ingroup CTLBLK_mod +!> @ingroup CTLBLK !> @{ Time to execute named routine; note that ETAFLD2 and ETA2P refer to MDLFLD and MDL2P routines respectively. real(kind=8) :: ETAFLD2_tim=0.,ETA2P_tim=0.,SURFCE2_tim=0., & CLDRAD_tim=0.,MISCLN_tim=0.,FIXED_tim=0., & @@ -214,7 +213,7 @@ module CTLBLK_mod CALRAD_WCLOUD_tim=0.,RUN_IFI_TIM=0. !comm tim_info !> @} ! -!> @ingroup CTLBLK_mod +!> @ingroup CTLBLK !> @{ !> Initialized as 0, but never used. real(kind=8) :: time_output=0., time_e2out=0. !comm jjt @@ -239,8 +238,8 @@ module CTLBLK_mod integer, parameter :: nbin_oc = 2 !< organic carbon integer, parameter :: nbin_bc = 2 !< black carbon integer, parameter :: nbin_su = 1 !< sulfate - integer, parameter :: nbin_no3 = 3 !< nitrate - integer, parameter :: nbin_nh4 = 1 !< NH4 + integer, parameter :: nbin_no3 = 3 !< nitrate + integer, parameter :: nbin_nh4 = 1 !< NH4 integer, parameter :: nbin_sm = 1 !< smoke ! ! SET FD LEVEL HEIGHTS IN GEOPOTENTAL METERS. diff --git a/sorc/ncep_post.fd/FRZLVL2.f b/sorc/ncep_post.fd/FRZLVL2.f index cd5d4b574..e1537a57a 100644 --- a/sorc/ncep_post.fd/FRZLVL2.f +++ b/sorc/ncep_post.fd/FRZLVL2.f @@ -4,11 +4,11 @@ !> This routine computes the isothermal level height and relative !> humidity at this level for each mass point on the ETA grid. !> The computed isothermal level height is the mean sea level -!> height. At each mass point we move up from the surface to +!> height. At each mass point we move up from the surface to !> find the last ETA layer where the temperature is less than !> isotherm and the temp in the layer below is above isotherm. !> Vertical interpolation in temperature to the isotherm -!> temperature gives the isothermal level height. Pressure and +!> temperature gives the isothermal level height. Pressure and !> specific humidity are interpolated to this level and along with !> the temperature provide the isothermal level relative humidity. !> If the entire atmosphere is below isotherm, the routine @@ -18,11 +18,6 @@ !> (IE, GRID 26), we pack 273.15K as the freezing temperature. All !> other output grids use 273.16K. !> -!> @param[in] isotherm isothermal value of height to be output. -!> @param[out] ZFRZ Above ground level/ZFL at isotherm height. -!> @param[out] RHFRZ Relative humidity at isotherm level. -!> @param[out] PFRZL pressure at isotherm level. -!> !> ### Program History Log !> Date | Programmer | Comments !> -----|------------|--------- @@ -44,7 +39,7 @@ !> !> @author Russ Treadon W/NP2 @date 1992-12-22 !------------------------------------------------------------------------------- -!> Subroutine that computes FRZING LVL, Z and RH. +!> @brief FRZLVL2 computes FRZING LVL, Z and RH. !> !> @param[in] ISOTHERM real Isothermal value of height to be output. !> @param[out] ZFRZ real Above ground level/ZFL at isotherm height. diff --git a/sorc/ncep_post.fd/GFIP3.f b/sorc/ncep_post.fd/GFIP3.f index 4d30f5c57..8ac031b92 100644 --- a/sorc/ncep_post.fd/GFIP3.f +++ b/sorc/ncep_post.fd/GFIP3.f @@ -31,17 +31,17 @@ module DerivedFields !-----------------------------------------------------------------------+ !> -!> derive_fields() calculates several derived fields. +!> derive_fields() Calculates several derived fields. !> !> @param[in] imp_physics integer Microphysics option used in the model run. !> @param[in] t real Temperature (K). !> @param[in] rh real Relative humidity. !> @param[in] pres real Pressure (Pa). !> @param[in] hgt real Height. -!> @param[in] totalWater real +!> @param[in] totalWater real _____? !> @param[in] totalCond real Precipitation Condensate in g/kg. !> @param[in] nz integer Number of vertical levels. -!> @param[in] topoK integer +!> @param[in] topoK integer _____? !> @param[in] hprcp real Hourly accumulated precipitation. !> @param[in] hcprcp real Hourly accumulated convective precipitation. !> @param[in] cin real Convective inhibition (CIN). @@ -178,7 +178,7 @@ elemental real function get_tLCL(t, td) end function get_tLCL !-----------------------------------------------------------------------+ -!> @brief mixing_ratio() Calculate the mixing ratio in g/kg = water vapor/dry air. +!> @brief mixing_ratio() Calculates the mixing ratio in g/kg = water vapor/dry air. !> !> @param[in] td real dew point temperture (K). !> @param[in] pres real Pressure (Pa). @@ -260,7 +260,7 @@ end function getPrecipCond !-----------------------------------------------------------------------+ !> -!> calc_indice() calculates 2-D indices that are used for convective icing severity. +!> calc_indice() Calculates 2-D indices that are used for convective icing severity. !> subroutine calc_indice(t, td, pres, wvm, nz, topoK, & kIndex, liftedIndex, totalTotals) @@ -624,24 +624,17 @@ module CloudLayers public clouds_t integer, parameter :: MaxLayers = 30 - type :: clouds_t + type :: clouds_t !< _____? ! 2-D - !> nLayers integer Number of layers - integer :: nLayers - !> wmnIdx integer Warm nose index @memberof cloudlayers::clouds_t - integer :: wmnIdx ! warm nose index - !> avv real Average vertical velocity @memberof cloudlayers::clouds_t - real :: avv ! average vertical velocity + integer :: nLayers !< Number of layers + integer :: wmnIdx !< Warm nose index @memberof cloudlayers::clouds_t + real :: avv !< Average vertical velocity @memberof cloudlayers::clouds_t ! 3-D, on model levels of nz - !> layerQ real array 3-D, of cloud layers @memberof cloudlayers::clouds_t - real, allocatable :: layerQ(:) + real, allocatable :: layerQ(:) !< array 3-D, of cloud layers @memberof cloudlayers::clouds_t ! 3-D, of cloud layers - !> topIdx @memberof cloudlayers::clouds_t - integer :: topIdx(MaxLayers) - !> baseIdx @memberof cloudlayers::clouds_t - integer :: baseIdx(MaxLayers) - !> ctt @memberof cloudlayers::clouds_t - real :: ctt(MaxLayers) + integer :: topIdx(MaxLayers) !< Layer top @memberof cloudlayers::clouds_t + integer :: baseIdx(MaxLayers) !< Layer base @memberof cloudlayers::clouds_t + real :: ctt(MaxLayers) !< Cloud top temperature @memberof cloudlayers::clouds_t end type clouds_t contains @@ -1178,6 +1171,7 @@ module SeverityMaps ! scenario dependant !-----------------------------------------------------------------------+ !> twp_map() @memberof SeverityMaps +!> @return twp_map Total water path map real function twp_map(v, scenario) implicit none real, intent(in) :: v @@ -1209,6 +1203,7 @@ end function twp_map ! Only precip below warmnose has a different temperature map !> t_map() @memberof SeverityMaps + !> @return t_map Temperature map real function t_map(v, scenario) implicit none real, intent(in) :: v @@ -1255,6 +1250,7 @@ end function t_map ! Condensates near the surface take place of radar reflectivity in CIP !> prcpcondensate_map() @memberof SeverityMaps + !> @return prcpcondensate_map Mapping of condensates near the surface real function prcpCondensate_map(v, scenario) implicit none real, intent(in) :: v @@ -1296,6 +1292,7 @@ real function prcpCondensate_map(v, scenario) end function prcpCondensate_map !> deltaz_map() @memberof SeverityMaps + !> @return deltaz_map Mapping of change in Z (geopotential height?) ? real function deltaZ_map(v, scenario) implicit none real, intent(in) :: v @@ -1347,6 +1344,7 @@ end function deltaZ_map ! 223.15 0.8, 233.15 0.7446, 243.15 0.5784, 253.15 0.3014 ! 261.15 0.0, 280.15 0.0, 280.151 1.0 !> ctt_map() @memberof SeverityMaps +!> @return ctt_map Mapping of cloud top temperature (CTT)? real function ctt_map(v) implicit none real, intent(in) :: v @@ -1367,6 +1365,7 @@ end function ctt_map ! -0.5 1.0, 0.0 0.0 !> vv_map() @memberof SeverityMaps +!> @return mapping of vertical velocity real function vv_map(v) implicit none real, intent(in) :: v @@ -1383,6 +1382,7 @@ end function vv_map ! cloud top distance ! 609.6 1.0, 3048.0 0.0 !> cldTopDist_map() @memberof SeverityMaps +!> @return cldTopDist_map Cloud top distance map real function cldTopDist_map(v) implicit none real, intent(in) :: v @@ -1399,6 +1399,7 @@ end function cldTopDist_map ! cloud base distance ! 304.8 1.0, 1524.0 0.0 !> cldBaseDist_map() @memberof SeverityMaps +!> @return cldBaseDist_map Cloud base distance map real function cldBaseDist_map(v) implicit none real, intent(in) :: v @@ -1413,6 +1414,7 @@ end function cldBaseDist_map ! 0.0 0.0, 1.0 1.0 !> deltaQ_map() @memberof SeverityMaps +!> @return deltaQ_map Map of change in specific humidity real function deltaQ_map(v) implicit none real, intent(in) :: v @@ -1426,6 +1428,7 @@ real function deltaQ_map(v) end function deltaQ_map !> moisture_map_cond() @memberof SeverityMaps +!> @return moisture_map_cond Condensate moisture map real function moisture_map_cond(rh, liqCond, iceCond, pres, t) IMPLICIT NONE real, intent(in) :: rh, liqCond, iceCond, pres, t @@ -1442,6 +1445,7 @@ end function moisture_map_cond ! If not identify liquid/ice condensate !> moisture_map_cwat() @memberof SeverityMaps +!> @return moisture_map_cwat Cloud water moisture map real function moisture_map_cwat(rh, cwat, pres, t) IMPLICIT NONE real, intent(in) :: rh, cwat, pres, t @@ -1457,6 +1461,7 @@ end function moisture_map_cwat ! only called by moisture_map ! 70.0 0.0, 100.0 1.0 !> rh_map() @memberof SeverityMaps +!> @return rh_map Relative humidity moisture map real function rh_map(v) implicit none real, intent(in) :: v @@ -1472,6 +1477,7 @@ end function rh_map ! only called by moisture_map ! 0.00399 0.0, 0.004 0.0, 0.2 1.0 !> condensate_map() @memberof SeverityMaps +!> @return condensate_map() Condensate map real function condensate_map(v) implicit none real, intent(in) :: v @@ -1492,6 +1498,7 @@ end function condensate_map ! 243.150 0.0, 265.15 1.0, 269.15 1.0, 270.15 0.87 ! 271.15 0.71, 272.15 0.50, 273.15 0.0 !> convect_t_map() @memberof SeverityMaps + !> @return convect_t_map Convection and temperature mapping ? real function convect_t_map(v) implicit none real, intent(in) :: v @@ -1517,6 +1524,7 @@ end function convect_t_map ! 1.0 0.0, 3.0 1.0 !> convect_qpf_map() @memberof SeverityMaps + !> @return convect_qpf_map Convection and quantitative precipitation forecast (QPF) mapping ? real function convect_qpf_map(v) implicit none real, intent(in) :: v @@ -1531,6 +1539,7 @@ end function convect_qpf_map ! 1000.0 0.0, 2500.0 1.0 !> convect_cape_map() @memberof SeverityMaps + !> @return convect_cape_map Convection and Convective Available Potential Energy (CAPE) mapping? real function convect_cape_map(v) implicit none real, intent(in) :: v @@ -1547,6 +1556,7 @@ end function convect_cape_map ! -10.0 1.0, 0.0 0.0 !> convect_liftedIdx_map() @memberof SeverityMaps + !> @return convect_liftedIdx_map Convection and lifted index mapping ? real function convect_liftedIdx_map(v) implicit none real, intent(in) :: v @@ -1562,6 +1572,7 @@ end function convect_liftedIdx_map ! 20.0 0.0, 40.0 1.0 !> convectkIdx_map() @memberof SeverityMaps + !> @return convectkIdx_map Convection and k-index mapping ? real function convect_kIdx_map(v) implicit none real, intent(in) :: v @@ -1576,6 +1587,7 @@ end function convect_kIdx_map ! 20.0 0.0, 55.0 1.0 !> convect_totals_map() @memberof SeverityMaps + !> @return convect_totals_map _____? real function convect_totals_map(v) implicit none real, intent(in) :: v @@ -1622,7 +1634,7 @@ module IcingSeverity contains !-----------------------------------------------------------------------+ -!> @brief icing_sev() calculates icing severity. +!> @brief icing_sev() Calculates icing severity. !> !> @param[in] imp_physics integer Microphysics scheme. !> @param[in] hgt real Geopotential height (m). @@ -2427,12 +2439,12 @@ subroutine icing_algo(i,j,pres,temp,rh,hgt,omega,wh,& end subroutine icing_algo !-------------------------------------------------------------------------+ -!> getTopoK() Map the topography height to the model's vertical coordinate +!> getTopoK() Maps the topography height to the model's vertical coordinate !> !> @param[in] hgt real Geopotential height (m). !> @param[in] alt real Topography height (m). !> @param[in] nz integer Number of vertical levels. -!> @return getTopoK integer +!> @return getTopoK Mapping of the topography height to the model's vertical coordinates !> integer function getTopoK(hgt, alt, nz) IMPLICIT NONE diff --git a/sorc/ncep_post.fd/GFSPOSTSIG.F b/sorc/ncep_post.fd/GFSPOSTSIG.F index 033c04007..c703eef0a 100644 --- a/sorc/ncep_post.fd/GFSPOSTSIG.F +++ b/sorc/ncep_post.fd/GFSPOSTSIG.F @@ -1,40 +1,6 @@ !> @file !> -!> @brief rtsig() reads and transforms sigma file. -!> -!> This subprogram reads a sigma file and transforms -!> the fields to a designated global grid. -!> Add Iredells subroutine to read sigma files. -!> -!> @param[out] lusig integer(sigio_intkind) sigma file unit number. -!> @param[out] head type(sigio_head) sigma file header. -!> @param[out] k1 integer first model level to return. -!> @param[out] k2 integer last model level to return. -!> @param[out] kgds integer (200) GDS to which to transform. -!> @param[out] ijo integer dimension of output fields. -!> @param[out] levs integer number of total vertical levels. -!> @param[out] ntrac integer number of output tracers. -!> @param[out] jcap integer number of waves. -!> @param[out] lnt2 integer (jcap+1)*(jcap+2). -!> @param[out] h real (ijo) surface orography (m). -!> @param[out] p real (ijo) surface pressure (Pa). -!> @param[out] px real (ijo) log surface pressure x-gradient (1/m). -!> @param[out] py real (ijo) log surface pressure y-gradient (1/m). -!> @param[out] t real (ijo,k1:k2) temperature (K). -!> @param[out] tx real (ijo,k1:k2) virtual temperature x-gradient (K/m). -!> @param[out] ty real (ijo,k1:k2) virtual temperature y-gradient (K/m). -!> @param[out] u real (ijo,k1:k2) x-component wind (m/s). -!> @param[out] v real (ijo,k1:k2) y-component wind (m/s). -!> @param[out] d real (ijo,k1:k2) wind divergence (1/s). -!> @param[out] trc real (ijo,k1:k2,ntrac) tracers. -!>
-!>                                   1 = specific humidity (kg/kg)
-!>                                   2 = Ozone mixing ratio (kg/kg)
-!>                                   3 = cloud condensate mixing ratio (kg/kg)
-!>                                       atomic oxyge, oxygen etc
-!>
-!>
-!> @param[out] iret Integer return code. +!> @brief RTSIG reads a sigma file and transforms the fields to a designated global grid. !> !> ### Program History Log !> Date | Programmer | Comments @@ -47,10 +13,8 @@ !> 2014-02-20 | Shrinivas Moorthi | Modified conversion from spectral to grid taking advantage of threding in SP library. This really speeds up the code. Also threaded loop for Temperature from Tv !> !> @author Mark Iredell np23 @date 1999-10-18 - -! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -!> rtsig() reads and transforms sigma file. -!> +!------------------------------------------------------------------------------------------ +!> @brief Reads and transforms a sigma file. !> @param[out] lusig integer(sigio_intkind) sigma file unit number. !> @param[out] head type(sigio_head) sigma file header. !> @param[out] k1 integer first model level to return. @@ -58,10 +22,10 @@ !> @param[out] kgds integer (200) GDS to which to transform. !> @param[out] ijo integer dimension of output fields. !> @param[out] levs integer number of total vertical levels. +!> @param[in] me integer MPI rank. !> @param[out] ntrac integer number of output tracers. !> @param[out] jcap integer number of waves. !> @param[out] lnt2 integer (jcap+1)*(jcap+2). -!> @param[in] me integer !> @param[out] h real (ijo) surface orography (m). !> @param[out] p real (ijo) surface pressure (Pa). !> @param[out] px real (ijo) log surface pressure x-gradient (1/m). @@ -71,26 +35,13 @@ !> @param[out] v real (ijo,k1:k2) y-component wind (m/s). !> @param[out] d real (ijo,k1:k2) wind divergence (1/s). !> @param[out] trc real (ijo,k1:k2,ntrac) tracers. -!>
+!> 
 !>                                   1 = specific humidity (kg/kg)
 !>                                   2 = Ozone mixing ratio (kg/kg)
 !>                                   3 = cloud condensate mixing ratio (kg/kg)
 !>                                       atomic oxyge, oxygen etc
-!>
-!>
+!>
!> @param[out] iret Integer return code. -!> -!> ### Program History Log -!> Date | Programmer | Comments -!> -----|------------|--------- -!> 1999-10-18 | Mark Iredell | Initial -!> 2013-04-19 | Jun Wang | Add option to get tmp and ps(in pascal) from enthalpy and ps(cb) option -!> 2013-05-06 | Shrinivas Moorthi | Initialize midea to 0 -!> 2013-05-07 | Shrinivas Moorthi | Remove mo3, mct, midea and define io3, ict etc correctly and get correct cloud condensate. -!> 2013-08-02 | Shrinivas Moorthi | Rewrote the whole routine to read the sigma file differently and to read all tracers. Added sptezj for two 2d fields -!> 2014-02-20 | Shrinivas Moorthi | Modified conversion from spectral to grid taking advantage of threding in SP library. This really speeds up the code. Also threaded loop for Temperature from Tv -!> -!> @author Mark Iredell np23 @date 1999-10-18 subroutine rtsig(lusig,head,k1,k2,kgds,ijo,levs,ntrac,jcap,lnt2,me, & h,p,px,py,t,u,v,d,trc,iret) @@ -267,7 +218,7 @@ subroutine rtsig(lusig,head,k1,k2,kgds,ijo,levs,ntrac,jcap,lnt2,me, & end subroutine ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -!> modstuff() computes model coordinate dependent functions. +!> @brief Computes model coordinate dependent functions. !> !> This subprogram computes fields which depend on the model coordinate !> such as pressure thickness and vertical velocity. @@ -342,7 +293,7 @@ subroutine modstuff(km,idvc,idsl,nvcoord,vcoord,ps,psx,psy,d,u,v,& end subroutine !------------------------------------------------------------------------------- -!> modstuff2() computes model coordinate dependent functions. +!> @brief Computes model coordinate dependent functions. !> !> This subprogram computes fields which depend on the model coordinate !> such as pressure thickness and vertical velocity. @@ -447,7 +398,7 @@ subroutine modstuff2(im,ix,km,idvc,idsl,nvcoord,vcoord,ps,psx,psy,d,u,v,& end subroutine !----------------------------------------------------------------------- -!> trssc() transforms sigma spectral fields to grid. +!> @brief Transforms sigma spectral fields to grid. !> !> Transforms sigma spectral fields to grid and converts !> log surface pressure to surface pressure and virtual temperature @@ -659,7 +610,7 @@ subroutine trssc(jcap,nc,km,ntrac,idvc,idvm,idsl,nvcoord,vcoord, & return end !----------------------------------------------------------------------- -!> getomega() computes omega. +!> @brief Computes omega. !> !> @param[in] jcap integer spectral truncation. !> @param[in] nc integer first dimension (nc>=(jcap+1)*(jcap+2)). diff --git a/sorc/ncep_post.fd/IFI.F b/sorc/ncep_post.fd/IFI.F index 3c726597e..aa94a8c03 100644 --- a/sorc/ncep_post.fd/IFI.F +++ b/sorc/ncep_post.fd/IFI.F @@ -1,3 +1,5 @@ +!> @file +!> @brief upp_ifi_mod declares variables used in the in-flight icing (IFI) routines. module upp_ifi_mod #ifdef USE_IFI @@ -14,13 +16,13 @@ module upp_ifi_mod public run_ifi, set_ifi_dims, ifi_real_t, write_ifi_debug_files, & first_supported_ifi_hour, last_supported_ifi_hour - logical :: write_ifi_debug_files = .false. - real, parameter :: first_supported_ifi_hour = 1 - real, parameter :: last_supported_ifi_hour = 21 + logical :: write_ifi_debug_files = .false. !< Whether to output IFI debug files (true) or not (false) + real, parameter :: first_supported_ifi_hour = 1 !< First supported in-flight icing hour + real, parameter :: last_supported_ifi_hour = 21 !< Last supported in-flight icing hour #ifndef USE_IFI ! Stubs need their own version of the ifi_real_t since it is defined in ifi_type_mod - integer, parameter :: ifi_real_t = c_float + integer, parameter :: ifi_real_t = c_float !< Value used to make public UPP code run #else ! Actual IFI code needs a few more module-scope variables. @@ -121,7 +123,7 @@ end subroutine send_missing_data #ifndef USE_IFI ! IFI stubs - +!> @brief Contains stub values for flight levels, which are used in public UPP subroutine set_ifi_dims() use CTLBLK_mod, only: ifi_nflight, ifi_flight_levels implicit none @@ -139,9 +141,8 @@ subroutine set_ifi_dims() end subroutine set_ifi_dims ! -------------------------------------------------------------------- - +!> @brief Fills in any requested IFI fields with stub values for missing data. subroutine run_ifi() - ! Fill any requested IFI fields with missing data. call send_missing_data(1007) ! ICE_PROB = missing call send_missing_data(1008) ! SLD = missing call send_missing_data(1009) ! ICE_SEV_CAT = missing @@ -695,7 +696,7 @@ subroutine scatter_ifi(local_buf_c,global_buf_c,sending_rank_c)bind(C) end subroutine scatter_ifi ! -------------------------------------------------------------------- - +!> @brief run_ifi() runs the IFI code. subroutine run_ifi() use ctlblk_mod, only: spval, lm, lp1, im, jsta_2l,jend_2u, ITPREC, IFHR, IFMIN, grib, & jm, jsta,jend, me, num_procs, mpi_comm_comp, ista, iend, ista_2l, iend_2u, dtq2 diff --git a/sorc/ncep_post.fd/LOOKUP.f b/sorc/ncep_post.fd/LOOKUP.f index 927b4d12f..c55eda980 100644 --- a/sorc/ncep_post.fd/LOOKUP.f +++ b/sorc/ncep_post.fd/LOOKUP.f @@ -1,15 +1,33 @@ +!> @file +!> @brief lookup_mod defines variables used to create lookup tables for pressure, temperature, and specific humidity. module lookup_mod ! implicit none ! - integer,parameter :: ITB=076,JTB=134,ITBQ=152,JTBQ=440 - real :: PL,THL,RDQ,RDTH,RDP,RDTHE,PLQ,RDPQ,RDTHEQ + integer,parameter :: ITB=076, & !< Table horizontal size (i index) + JTB=134, & !< Table vertical size (j index) + ITBQ=152, & !< _____? + JTBQ=440 !< _____? + + + real :: PL & !< Lower bound of pressure range + ,THL & !< Lower bound of potential temperature range + ,RDQ & !< Scaling factor for specific humidity + ,RDTH & !< Scaling factor for potential temperature + ,RDP & !< Scaling factor for pressure + ,RDTHE & !< Scaling factor for equivalent potential temperature + ,PLQ & !< Lower bound of pressure range for specific humidity _____? + ,RDPQ & !< Scaling factor for pressure and specific humidity _____? + ,RDTHEQ !< Scaling factor for equivalent potential temperature and specific humidity _____? - real,dimension(JTB) :: QS0,SQS - real,dimension(ITB) :: THE0,STHE - real,dimension(ITBQ) :: THE0Q,STHEQ - real,dimension(ITB,JTB) :: PTBL - real,dimension(JTB,ITB) :: TTBL - real,dimension(JTBQ,ITBQ) :: TTBLQ + real,dimension(JTB) :: QS0, & !< Base for specific humidity + SQS !< Scaling factor for specific humidity + real,dimension(ITB) :: THE0, & !< Base for equivalent potential temperature + STHE !< Range for equivalent potential temperature + real,dimension(ITBQ) :: THE0Q, & !< _____? + STHEQ !< _____? + real,dimension(ITB,JTB) :: PTBL !< Saturation pressure table + real,dimension(JTB,ITB) :: TTBL !< Temperature table + real,dimension(JTBQ,ITBQ) :: TTBLQ !< _____? ! end module lookup_mod diff --git a/sorc/ncep_post.fd/MASKS_mod.f b/sorc/ncep_post.fd/MASKS_mod.f index 24f97b4c1..2ce8b9ad2 100644 --- a/sorc/ncep_post.fd/MASKS_mod.f +++ b/sorc/ncep_post.fd/MASKS_mod.f @@ -1,9 +1,19 @@ +!> @file +!> @brief MASKS declares values used in masks module masks ! implicit none ! - REAL, ALLOCATABLE :: HBM2(:,:),SM(:,:),SICE(:,:) & - &,GDLAT(:,:),GDLON(:,:),LMH(:,:),LMV(:,:) & - &,HTM (:,:,:),VTM (:,:,:),DX(:,:),DY(:,:) + REAL, ALLOCATABLE :: HBM2(:,:) & !< _____? + ,SM(:,:) & !< Land-sea mask ? + ,SICE(:,:) & !< Sea ice mask + ,GDLAT(:,:) & !< Grid latitude + ,GDLON(:,:) & !< Grid longitude + ,LMH(:,:) & !< Mass point at ETA surface mask ? + ,LMV(:,:) & !< Velocity point at ETA surface mask ? + ,HTM (:,:,:) & !< Height topography mask array + ,VTM (:,:,:) & !< _____? + ,DX(:,:) & !< Grid spacing in the x-direction ? + ,DY(:,:) !< Grid spacing in the y-direction ? ! end module masks diff --git a/sorc/ncep_post.fd/MISCLN.f b/sorc/ncep_post.fd/MISCLN.f index c2bce66fb..4ff9bdc89 100644 --- a/sorc/ncep_post.fd/MISCLN.f +++ b/sorc/ncep_post.fd/MISCLN.f @@ -1,96 +1,59 @@ !> @file -! -!> SUBPROGRAM: MISCLN POSTS MISCELLANEOUS FIELDS -!! PRGRMMR: TREADON ORG: W/NP2 DATE: 92-12-20 -!! -!! ABSTRACT: -!! THIS ROUTINE HAS BECOME THE CATCH-ALL FOR MISCELLANEOUS -!! OUTPUT FIELDS POSTED BY THE ETA POST PROCESSOR. -!! CURRENTLY THIS ROUTINE POSTS THE FOLLOWING FIELDS: -!! (1) TROPOPAUSE LEVEL Z,P, T, U, V, AND VERTICAL WIND SHEAR, -!! (2) MAX WIND LEVEL Z, P, U, AND V, -!! (3) FD LEVEL T, Q, U, AND V, -!! (4) FREEZING LEVEL Z AND RH, -!! (5) CONSTANT MASS (BOUNDARY) FIELDS, -!! (6) LFM LOOK-ALIKE FIELDS, AND -!! (7) NGM LOOK-ALIKE FIELDS. -!! -!! -!! PROGRAM HISTORY LOG: -!! 92-12-20 RUSS TREADON -!! 93-06-19 RUSS TREADON - ADDED TYPE 2 CAPE POSTING. -!! 94-11-07 MIKE BALDWIN - ADDED HELICITY POSTING. -!! 96-03-26 MIKE BALDWIN - CHANGE ETA BOUNDARY LAYER LABELS FOR GRIB -!! 96-11-19 MIKE BALDWIN - BACK OUT PREVIOUS CHANGE -!! 97-04-25 MIKE BALDWIN - CHANGE ETA BOUNDARY LAYER LABELS FOR GRIB -!! 97-04-29 GEOFF MANIKIN - ADDED TROPOPAUSE HEIGHT AND -!! MAX WIND LEVEL FIELDS -!! 98-06-15 T BLACK - CONVERSION FROM 1-D TO 2-D -!! 98-07-17 MIKE BALDWIN - REMOVED LABL84 -!! 00-01-04 JIM TUCCILLO - MPI VERSION -!! 02-04-23 MIKE BALDWIN - WRF VERSION -!! 11-02-06 JUN WANG - ADD GRIB2 OPTION -!! 11-10-16 SARAH LU - ADD FD LEVEL DUST/ASH -!! 12-04-03 Jun Wang - FIXED LVLSXML for fields at FD height (spec_hgt_lvl_above_grnd) -!! 13-05-3 Shrinivas Moorthi - Fix some bugs and make more efficient code -!! 14-02-21 Shrinivas Moorthi - Add more threading -!! 14-02-26 S Moorthi - threading datapd assignment and some cleanup & -!! bug fix -!! 15-11-18 S Moorthi - fixed some logical errors in the helicity and -!! i storm motion part of the code -!! 17-06-01 Y Mao - ADD FD levels for GTG(EDPARM CATEDR MWTURB) and allow -!! levels input from control file -!! 19-09-03 J Meng - ADD CAPE related variables for HRRR -!! 20-03-24 J Meng - remove grib1 -!! 20-11-10 J Meng - USE UPP_PHYSICS MODULE -!! 21-03-25 E Colon - 3D-RTMA-specific SPC fields added as output -!! 21-04-01 J Meng - computation on defined points only -!! 21-09-01 E Colon - Correction to the effective layer top and -!! bottoma calculation which is only employed -!! for RTMA usage. -!! 21-10-14 J MENG - 2D DECOMPOSITION -!! 22-09-22 L Zhang - Li(Kate) Zhang - Remove Dust=> AERFD -!! 22-10-06 W Meng - Generate SPC fields with RRFS input -!! 23-01-24 Sam Trahan - when IFI is enabled, calculate and store CAPE & CIN. Add allocate_cape_arrays -!! 23-04-03 E Colon - Added additional array assignments to resolve SPC fields crashes for RRFS input -!! 23-08-16 Y Mao - Updated interpolation to flight levels for regional GTG fields -!! 23-08-24 Y Mao - Add gtg_on option for GTG interpolation -!! 24-01-07 H LIN - Add CIT output in NCAR GTG turbulence calculation -!! 24-01-09 Y Mao - Correct the height level of EDPARM (ID=467) on 0m to index 52 from the control file, instead of 0. -!! 24-04-09 Y Mao - Change the mnemonics of EDPARM (ID=467) on 0m to MXEDPRM (ID=476) on the entire atmoshpere -!! USAGE: CALL MISCLN -!! INPUT ARGUMENT LIST: -!! -!! OUTPUT ARGUMENT LIST: -!! NONE -!! -!! SUBPROGRAMS CALLED: -!! UTILITIES: -!! TRPAUS - COMPUTE TROPOPAUSE LEVEL FIELDS. -!! CALMXW - COMPUTE MAX WIND LEVEL FIELDS. -!! SCLFLD - SCALE ARRAY ELEMENTS BY CONSTANT. -!! GRIBIT - OUTPUT FIELD TO GRIB FILE. -!! CALPOT - CALCULATE POTENTIAL TEMPERATURE. -!! FDLVL - COMPUTE FD LEVEL DATA (AGL OR MSL). -!! FRZLVL - COMPUTE FREEZING LEVEL DATA. -!! BOUND - BOUND ARRAY ELEMENTS BETWEEN MINIMUM AND MAXIMUM VALUES. -!! BNDLYR - COMPUTE BOUNDARY LAYER FIELDS. -!! CALDWP - CALCULATE DEWPOINT TEMPERATURE. -!! OTLFT - COMPUTE LIFTED INDEX AT 500MB. -!! CALLCL - COMPUTE LCL DATA. -!! LFMFLD - COMPUTE LFM LOOK-ALIKE FIELDS. -!! NGMFLD - COMPUTE NGM LOOK-ALIKE FIELDS. -!! CALTHTE - COMPUTE THETA-E. -!! CALHEL - COMPUTE HELICITY AND STORM MOTION. -!! -!! LIBRARY: -!! COMMON - RQSTFLD -!! CTLBLK -!! -!! ATTRIBUTES: -!! LANGUAGE: FORTRAN -!! MACHINE : CRAY C-90 -!! +!> @brief MISCLN posts miscellaneous fields +!> +!> This routine has become the catch-all for miscellaneous output fields posted by the ETA post-processor. +!> Currently this routine posts the following fields: +!> -# TROPOPAUSE LEVEL Z,P, T, U, V, AND VERTICAL WIND SHEAR, +!> -# MAX WIND LEVEL Z, P, U, AND V, +!> -# FD LEVEL T, Q, U, AND V, +!> -# FREEZING LEVEL Z AND RH, +!> -# CONSTANT MASS (BOUNDARY) FIELDS, +!> -# LFM LOOK-ALIKE FIELDS, AND +!> -# NGM LOOK-ALIKE FIELDS. +!> +!> ### Program history log: +!> Date | Programmer | Comments +!> -----|------------|--------- +!! 1992-12-20 | RUSS TREADON | Original file +!! 1993-06-19 | RUSS TREADON | ADDED TYPE 2 CAPE POSTING. +!! 1994-11-07 | MIKE BALDWIN | ADDED HELICITY POSTING. +!! 1996-03-26 | MIKE BALDWIN | CHANGE ETA BOUNDARY LAYER LABELS FOR GRIB +!! 1996-11-19 | MIKE BALDWIN | BACK OUT PREVIOUS CHANGE +!! 1997-04-25 | MIKE BALDWIN | CHANGE ETA BOUNDARY LAYER LABELS FOR GRIB +!! 1997-04-29 | GEOFF MANIKIN | ADDED TROPOPAUSE HEIGHT AND MAX WIND LEVEL FIELDS +!! 1998-06-15 | T BLACK | CONVERSION FROM 1-D TO 2-D +!! 1998-07-17 | MIKE BALDWIN | REMOVED LABL84 +!! 2000-01-04 | JIM TUCCILLO | MPI VERSION +!! 2002-04-23 | MIKE BALDWIN | WRF VERSION +!! 2011-02-06 | JUN WANG | ADD GRIB2 OPTION +!! 2011-10-16 | SARAH LU | ADD FD LEVEL DUST/ASH +!! 2012-04-03 | Jun Wang | FIXED LVLSXML for fields at FD height (spec_hgt_lvl_above_grnd) +!! 2013-05-3 | Shrinivas Moorthi | Fix some bugs and make more efficient code +!! 2014-02-21 | Shrinivas Moorthi | Add more threading +!! 2014-02-26 | S Moorthi | threading datapd assignment and some cleanup & bug fix +!! 2015-11-18 | S Moorthi | fixed some logical errors in the helicity and storm motion part of the code +!! 2017-06-01 | Y Mao | ADD FD levels for GTG(EDPARM CATEDR MWTURB) and allow levels input from control file +!! 2019-09-03 | J Meng | ADD CAPE related variables for HRRR +!! 2020-03-24 | J Meng | remove grib1 +!! 2020-11-10 | J Meng | USE UPP_PHYSICS MODULE +!! 2021-03-25 | E Colon | 3D-RTMA-specific SPC fields added as output +!! 2021-04-01 | J Meng | computation on defined points only +!! 2021-09-01 | E Colon | Correction to the effective layer top and bottoma calculation which is only employed for RTMA usage. +!! 2021-10-14 | J MENG | 2D DECOMPOSITION +!! 2022-09-22 | L Zhang | Li(Kate) Zhang - Remove Dust=> AERFD +!! 2022-10-06 | W Meng | Generate SPC fields with RRFS input +!! 2023-01-24 | Sam Trahan | when IFI is enabled, calculate and store CAPE & CIN. Add allocate_cape_arrays +!! 2023-04-03 | E Colon | Added additional array assignments to resolve SPC fields crashes for RRFS input +!! 2023-08-16 | Y Mao | Updated interpolation to flight levels for regional GTG fields +!! 2023-08-24 | Y Mao | Add gtg_on option for GTG interpolation +!! 2024-01-07 | H LIN | Add CIT output in NCAR GTG turbulence calculation +!! 2024-01-09 | Y Mao | Correct the height level of EDPARM (ID=467) on 0m to index 52 from the control file, instead of 0. +!! 2024-04-09 | Y Mao | Change the mnemonics of EDPARM (ID=467) on 0m to MXEDPRM (ID=476) on the entire atmoshpere +!> +!> @author RUSS TREADON +!> @date 1992-12-20 +!----------------------------------------------------------------------------------------------------- +!> @brief MISCLN posts miscellaneous fields SUBROUTINE MISCLN ! @@ -4600,7 +4563,7 @@ SUBROUTINE MISCLN ! RETURN CONTAINS - +!> @brief allocate_cape_arrays - store CAPE in arrays subroutine allocate_cape_arrays if(.not.allocated(OMGBND)) allocate(OMGBND(ista:iend,jsta:jend,NBND)) if(.not.allocated(PWTBND)) allocate(PWTBND(ista:iend,jsta:jend,NBND)) diff --git a/sorc/ncep_post.fd/OTLFT.f b/sorc/ncep_post.fd/OTLFT.f index ee691f9cd..9e1146e65 100644 --- a/sorc/ncep_post.fd/OTLFT.f +++ b/sorc/ncep_post.fd/OTLFT.f @@ -8,11 +8,6 @@ !> parcel's temperature at 500mb and the ambient 500mb !> temperature. !> -!> @param[in] PBND Parcel pressure. -!> @param[in] TBND Parcel temperature. -!> @param[in] QBND Parcel specific humidity. -!> @param[out] SLINDX Lifted index. -!> !> ### Program History Log !> Date | Programmer | Comments !> -----|------------|--------- @@ -25,16 +20,8 @@ !> 2021-09-30 | JESSE MENG | 2D DECOMPOSITION !> !> @author Russ Treadon W/NP2 @date 1993-03-10 - ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -!> otlft() computes lifted index. -!> -!> This routine lifts a parcel specified by the -!> passed pressure, temperature, and specific humidity to -!> 500mb and then computes a lifted index. This -!> lifted index is the difference between the lifted -!> parcel's temperature at 500mb and the ambient 500mb -!> temperature. +!> @brief Computes lifted index at 500mb. !> !> @param[in] PBND Parcel pressure. !> @param[in] TBND Parcel temperature. diff --git a/sorc/ncep_post.fd/PARA_RANGE.f b/sorc/ncep_post.fd/PARA_RANGE.f index e748f7475..b6bab4820 100644 --- a/sorc/ncep_post.fd/PARA_RANGE.f +++ b/sorc/ncep_post.fd/PARA_RANGE.f @@ -1,14 +1,5 @@ !> @file -!> @brief para_range() sets up decomposition values. -!> -!> This subroutine sets up decomposition values. -!> -!> @param[in] N1 First interate value. -!> @param[in] N2 Last interate value. -!> @param[in] NPROCS Number of MPI tasks. -!> @param[in] IRANK My taks ID. -!> @param[out] ISTA First loop value. -!> @param[out] IEND Last loop value. +!> @brief Subroutines in this file set up decomposition values for 1D and 2D decomposition. !> !> ### Program History Log !> Date | Programmer | Comments @@ -17,7 +8,7 @@ !> !> @author Jim Tuccillo IBM @date 2000-01-06 !----------------------------------------------------------------- -!> para_range() sets up decomposition values. +!> @brief Sets up decomposition values. !> !> @param[in] N1 First interate value. !> @param[in] N2 Last interate value. @@ -40,34 +31,18 @@ SUBROUTINE PARA_RANGE (N1,N2,NPROCS,IRANK,ISTA,IEND) if ( iwork2 > irank ) iend = iend + 1 return end -!! -!! USAGE: CALL PARA_RANGE2(N1,N2,NX,NY,NRANK,ISTA,IEND,JSTA,JEND)(A) -!! INPUT ARGUMENT LIST: -!! N1 - LAAT INTERATE VALUE I dimension -!! N2 - LAST INTERATE VALUE J dimension -!! NX NUMBER OF subdomains in Z dimension -!! NY NUMBER OF subdomains in Y dimension -!! NX * NY should be the total number of MPI procs -!! NRANK - MY TAKS ID -!! -!! OUTPUT ARGUMENT LIST: -!! ISTA - FIRST LOOP VALUE I -!! IEND - LAST LOOP VALUE I -!! JSTA - FIRST LOOP VALUE J -!! JEND - LAST LOOP VALUE J -!! -!! OUTPUT FILES: -!! STDOUT - RUN TIME STANDARD OUT. -!! -!! SUBPROGRAMS CALLED: -!! UTILITIES: -!! NONE -!! LIBRARY: -!! -!! ATTRIBUTES: -!! LANGUAGE: FORTRAN -!! MACHINE : IBM RS/6000 SP -!! + +! ---------------------------------------------------------------------------------------------------- +!> @brief para_range2() sets up 2D decomposition values +!> @param[in] N1 - LAAT INTERATE VALUE I dimension +!> @param[in] N2 - LAST INTERATE VALUE J dimension +!> @param[in] NX NUMBER OF subdomains in Z dimension (NX * NY should be the total number of MPI procs) +!> @param[in] NY NUMBER OF subdomains in Y dimension (NX * NY should be the total number of MPI procs) +!> @param[in] NRANK - MY TASK ID +!> @param[out] ISTA - FIRST LOOP VALUE I +!> @param[out] IEND - LAST LOOP VALUE I +!> @param[out] JSTA - FIRST LOOP VALUE J +!> @param[out] JEND - LAST LOOP VALUE J subroutine para_range2(im,jm,nx,ny,nrank,ista,iend,jsta,jend) implicit none diff --git a/sorc/ncep_post.fd/READ_xml.f b/sorc/ncep_post.fd/READ_xml.f index 013cec5ca..836a7dd49 100644 --- a/sorc/ncep_post.fd/READ_xml.f +++ b/sorc/ncep_post.fd/READ_xml.f @@ -1,48 +1,17 @@ !> @file -! . . . -!> SUBPROGRAM: READCNTRLgrb2_xml READS POST xml CONTROL FILE -!! PRGRMMR: J. WANG ORG: NCEP/EMC DATE: 12-01-27 -!! -!! ABSTRACT: -!! THIS ROUTINE READS THE POST AVAILABLE FIELD XML FILE and -!! POST CONTROL XML FILE. EACH SET OF OUTPUT FIELDS GOING TO ONE -!! OUTPUT FILE WILL WILL BE SAVED AND PROCESSED LATER. IN OTHER -!! WORDS, POST CONTROL FILE WILL BE READ IN WHOLE ONCE. -!! -!! PROGRAM HISTORY LOG: -!! 01_27_2012 Jun Wang - INITIAL CODE -!! 03_10_2015 Lin Gan - Replace XML file with flat file implementation -!! with parameter marshalling -!! 07_08_2016 J. Carley - Clean up prints -!! -!! USAGE: CALL READ_XML() -!! INPUT ARGUMENT LIST: -!! NONE -!! -!! OUTPUT ARGUMENT LIST: -!! NONE - -!! -!! OUTPUT FILES: -!! NONE -!! -!! SUBPROGRAMS CALLED: -!! UTILITIES: -!! -!! LIBRARY: -!! COMMON - RQSTFLDGRB2 -!! CTLBLK -!! -!! ATTRIBUTES: -!! LANGUAGE: FORTRAN -!! MACHINE : IBM -!! +!> @brief read_postxconfig() reads the post available field XML file and post control XML file. +!> Each set of output fields going to one output file will be saved and processed later. +!> In other words, post control file will be read in whole once. +!> +!> ### Program history log: +!> Date | Programmer | Comments +!> -----|------------|--------- +!> 2012-01-27 | Jun Wang | INITIAL CODE +!> 2015-03-10 | Lin Gan | Replace XML file with flat file implementation with parameter marshalling +!> 2016-07-08 | J. Carley | Clean up prints + SUBROUTINE READ_xml() -! -! -! -! INCLUDE ETA GRID DIMENSIONS. SET/DERIVE PARAMETERS. -! use xml_perl_data,only: post_avblflds,paramset,read_postxconfig use grib2_module, only: num_pset use rqstfld_mod,only: num_post_afld,MXLVL,lvlsxml @@ -55,7 +24,8 @@ SUBROUTINE READ_xml() !****************************************************************************** ! START READCNTRL_XML HERE. ! -! READ post available field table +!> @brief Read post available field table + call read_postxconfig() num_post_afld=size(paramset(1)%param) num_pset=size(paramset) diff --git a/sorc/ncep_post.fd/RHGRD.f b/sorc/ncep_post.fd/RHGRD.f index d1d35d9f8..90bb531a6 100644 --- a/sorc/ncep_post.fd/RHGRD.f +++ b/sorc/ncep_post.fd/RHGRD.f @@ -1,7 +1,9 @@ +!> @file +!> @brief RHGRD_mod defines the relative humidity threshold for onset of condensation module RHGRD_mod !----------------------------------------------------------------------- implicit none ! - real :: RHgrd + real :: RHgrd !< Grid-scale relative humidity threshold for onset of condensation !----------------------------------------------------------------------- end module RHGRD_mod diff --git a/sorc/ncep_post.fd/RQSTFLD.f b/sorc/ncep_post.fd/RQSTFLD.f index ecdcb0388..f77dc9a93 100644 --- a/sorc/ncep_post.fd/RQSTFLD.f +++ b/sorc/ncep_post.fd/RQSTFLD.f @@ -1,44 +1,45 @@ - module RQSTFLD_mod -!-------------------------------------------------------------------- -! revision history -! 2011-02-06 Jun Wang add grib2 option -! 2011-10-18 Sarah Lu add GOCART aerosol fields -! 2011-12-18 Sarah Lu add GOCART aerosol optical properties, mass -! fields, and production/removal fluxes -! 2011-12-29 Sarah Lu add GOCART AOD at multiple channels -! 2012-01-06 Sarah Lu add GOCART SS, OC, BC, SU aerosols -! 2012-01-07 Sarah Lu add air density and dpres -! 2012-01-27 Sarah Lu use index 601-700 for GOCART -! 2012-01-30 Jun Wang add post available fields from xml file for grib2 -! 2012-05-07 Tricia Slovacek use index 800-899 for satellite -! use index 900-949 for HWRF -! 2014-12-09 William Lewis added MSG/SEVIRI imager, -! GOES-13 and GOES-15 imagers, -! and completed SSMI and SSMIS (F13-F20) -! 2019-04-01 Sharon Nebuda added GOES-16 GOES-17 ABI IR Channels 7-16 -! 2019-04-22 Wen Meng increased model MXLVL to 500 -! 2019-05-08 Wen Meng added continuous accumulated precipitations(417, 418, -! 419). -! 2019-09-03 Jesse Meng added cape related variables for hrrr (950-957) -! 2021-08-31 Lin Zhu added ssmis-f17 channels 15-18 grib2 output -! 2021-11-03 Tracy Hertneky removed all grib1 settings +!> @file +!> @brief RQSTFLD_mod declares variables related to the number of available fields +!> +!> ### Program history log: +!> Date | Programmer | Comments +!> -----|------------|--------- +!> 2011-02-06 | Jun Wang | Add grib2 option +!> 2011-10-18 | Sarah Lu | Add GOCART aerosol fields +!> 2011-12-18 | Sarah Lu | Add GOCART aerosol optical properties, mass fields, and production/removal fluxes +!> 2011-12-29 | Sarah Lu | Add GOCART AOD at multiple channels +!> 2012-01-06 | Sarah Lu | Add GOCART SS, OC, BC, SU aerosols +!> 2012-01-07 | Sarah Lu | Add air density and dpres +!> 2012-01-27 | Sarah Lu | Use index 601-700 for GOCART +!> 2012-01-30 | Jun Wang | Add post available fields from xml file for grib2 +!> 2012-05-07 | Tricia Slovacek | Use index 800-899 for satellite use index 900-949 for HWRF +!> 2014-12-09 | William Lewis | Added MSG/SEVIRI imager, GOES-13 and GOES-15 imagers, and completed SSMI and SSMIS (F13-F20) +!> 2019-04-01 | Sharon Nebuda | Added GOES-16 GOES-17 ABI IR Channels 7-16 +!> 2019-04-22 | Wen Meng | Ancreased model MXLVL to 500 +!> 2019-05-08 | Wen Meng | Added continuous accumulated precipitations(417, 418, 419). +!> 2019-09-03 | Jesse Meng | Added cape related variables for hrrr (950-957) +!> 2021-08-31 | Lin Zhu | Added ssmis-f17 channels 15-18 grib2 output +!> 2021-11-03 | Tracy Hertneky | Removed all grib1 settings !-------------------------------------------------------------------- + module RQSTFLD_mod implicit none ! ! increase MXFLD each time you add a new field - INTEGER, PARAMETER :: MXFLD=1200 - INTEGER, PARAMETER :: MXLVL=500 + INTEGER, PARAMETER :: MXFLD=1200 !< Available model field IDs + INTEGER, PARAMETER :: MXLVL=500 !< Available model levels - CHARACTER*6 DATSET + CHARACTER*6 DATSET !< String set in the postcntrl.xml file DATSET parameter ! - LOGICAL RITEHD + LOGICAL RITEHD !< Flag to open new output file ! - integer :: NFLD,IGET(MXFLD), & - LVLS(MXLVL,MXFLD), & - IDENT(MXFLD),IAVBLFLD(MXFLD), & - ID(25) - integer :: num_post_afld - integer,allocatable :: LVLSXML(:,:) + integer :: NFLD & !< Number of requested output fields + ,IGET(MXFLD) & !< The "get field" flag array indicating which fields to get + ,LVLS(MXLVL,MXFLD) & !< 2D array of model and field levels + ,IDENT(MXFLD) & !< Array of UPP ID numbers corresponding to the GRIB2 fields produced by UPP + ,IAVBLFLD(MXFLD) & !< _____? + ,ID(25) !< IDs for various GRIB Product Definition Section (PDS) parameters: https://www.nco.ncep.noaa.gov/pmb/docs/on388/section1.html + integer :: num_post_afld !< Number of fields available in post_avblflds.xml _____? + integer,allocatable :: LVLSXML(:,:) !< _____? end module RQSTFLD_mod diff --git a/sorc/ncep_post.fd/SET_LVLSXML.f b/sorc/ncep_post.fd/SET_LVLSXML.f index 6cd00d45a..e5fc21281 100644 --- a/sorc/ncep_post.fd/SET_LVLSXML.f +++ b/sorc/ncep_post.fd/SET_LVLSXML.f @@ -1,51 +1,29 @@ +!> @file +!> @brief SET_LVLSXML() sets field levels (LVLS and LVLSXML) from POST xml CONTROL FILE requested fields +!> +!> ### Program history log: +!> Date | Programmer | Comments +!> -----|------------|--------- +!> 2012-01-27 | Jun Wang | INITIAL CODE +!> 2012-04-03 | Jun Wang | add SPEC_PRES_ABOVE_GRND for different CAPE/CIN +!> 2013-08-06 | S Moorthi | fix index out of bound after iloop5 +!> 2013-10-03 | Jun Wang | add isentropic levels +!> 2015-03-10 | Lin Gan | Replace XML file with flat file implementation +!> 2016-07-08 | J. Carley | Comment out debug prints +!> 2017-06-01 | Y Mao | For MISCLN.f and FDLVL.f, allow FD levels input from control file +!> 2023-01-24 | Sam Trahan | IFI flight levels and related unit conversions +!--------------------------------------------------------------------------------- +!> @brief Sets field levels (LVLS and LVLSXML) from POST xml CONTROL FILE requested fields +!> @param[inout] param input field +!> @param[in] ifld field number in post control file +!> @param[inout] irec data fields number in output file +!> @param[in] kpv total number of potential vorticity levels +!> @param[in] pv potential vorticity levels +!> @param[in] kth total number of isentropic levels +!> @param[th] th isentropic levels subroutine SET_LVLSXML(param,ifld,irec,kpv,pv,kth,th) -! -!$$$ SUBPROGRAM DOCUMENTATION BLOCK -! . . . -! SUBPROGRAM: SET_LVLCXML SET field levels from POST xml CONTROL FILE -! PRGRMMR: J. WANG ORG: NCEP/EMC DATE: 12-01-27 -! -! ABSTRACT: -! THIS ROUTINE SET THE LVLS and LVLSXML for contain request field. -! -! PROGRAM HISTORY LOG: -! 01_27_2012 Jun Wang - INITIAL CODE -! 04_03_2012 Jun Wang - add SPEC_PRES_ABOVE_GRND for different CAPE/CIN -! 08_06_2013 S Moorthi - fix index out of bound after iloop5 -! 10_03_2013 Jun Wang - add isentropic levels -! 03_10_2015 Lin Gan - Replace XML file with flat file implementation -! 07_08_2016 J. Carley - Comment out debug prints -! 06_01_2017 Y Mao - For MISCLN.f and FDLVL.f, allow FD levels input from control file -! 01-24-2023 Sam Trahan - IFI flight levels and related unit conversions -! -! USAGE: CALL SET_LVLSXML(param,ifld,irec,kpv,pv,kth,th) -! INPUT ARGUMENT LIST: -! param: input field -! ifld : field number in post control file -! irec : data fields number in output file -! kpv : total number of potential vorticity levels -! pv : potential vorticity levels -! kth : total number of isentropic levels -! th : isentropic levels -! -! OUTPUT ARGUMENT LIST: -! -! OUTPUT FILES: -! NONE -! -! SUBPROGRAMS CALLED: -! UTILITIES: -! -! LIBRARY: -! MODULE: - RQSTFLD_MOD -! CTLBLK_MOD -! xml_data_post_t -! SOIL -! -! ATTRIBUTES: -! LANGUAGE: FORTRAN -! MACHINE : IBM -! + + use xml_perl_data, only: param_t use ctlblk_mod, only: lsm, spl, nsoil, isf_surface_physics, nfd, htfd, & petabnd, nbnd, ifi_nflight, ifi_flight_levels diff --git a/sorc/ncep_post.fd/SET_OUTFLDS.f b/sorc/ncep_post.fd/SET_OUTFLDS.f index c7482e1fd..3030f88ec 100644 --- a/sorc/ncep_post.fd/SET_OUTFLDS.f +++ b/sorc/ncep_post.fd/SET_OUTFLDS.f @@ -1,25 +1,25 @@ !> @file -!> @ brief set_outflds() reads post xml control file. +!> @brief set_outflds() reads the 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. -!> -!> @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 +!--------------------------------------------------------------------------- +!> @brief Reads post XML control file. !> -!> @author J. Wang NCEP/EMC @date 2012-01-27 +!> @param[in] KTH total number of isentropic levels +!> @param[in] TH isentropic levels +!> @param[in] KPV total number of potential vorticity levels +!> @param[in] PV potential vorticity levels SUBROUTINE SET_OUTFLDS(kth,th,kpv,pv) ! @@ -52,7 +52,7 @@ SUBROUTINE SET_OUTFLDS(kth,th,kpv,pv) ! WRITE(6,*)'READCNTRL_XML: POSTING FCST HR ',IFHR,' FROM ', & ! IHRST,'UTC ',SDAT(1),'-',SDAT(2),'-',SDAT(3),' RUN' ! ENDIF -! +! ! INITIALIZE VARIABLES. ! ARRAY IGET IS THE "GET FIELD" FLAG ARRAY. ! @@ -124,12 +124,12 @@ SUBROUTINE SET_OUTFLDS(kth,th,kpv,pv) ENDDO ! -! ALL DONE FOUNDING REQUESTED FIELDS FOR current OUTPUT GRID. +! ALL DONE FINDING REQUESTED FIELDS FOR current OUTPUT GRID. ! SET NFLD TO TOTAL NUMBER OF REQUESTED OUTPUT FIELDS THAT -! ARE AVAILABLE., SET NRECOUT to total number of OUTPUT records -! NOTE: here NFLD i s total number of fields found in post_avblfld_table, -! while nrecoutis the total number of grib messages that go -! into the output file. One fieldmay contain many different levels, +! ARE AVAILABLE. SET NRECOUT to total number of OUTPUT records +! NOTE: here NFLD is total number of fields found in post_avblfld_table, +! while nrecout is the total number of grib messages that go +! into the output file. One field may contain many different levels, ! which each different level will be counted as one record ! NFLD = IFLD diff --git a/sorc/ncep_post.fd/SOIL_mod.f b/sorc/ncep_post.fd/SOIL_mod.f index 736abe6ef..37f40dae8 100644 --- a/sorc/ncep_post.fd/SOIL_mod.f +++ b/sorc/ncep_post.fd/SOIL_mod.f @@ -1,7 +1,13 @@ +!> @file +!> @brief SOIL declares soil-related variables module soil !- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - implicit none ! - real, allocatable :: STC(:,:,:),SMC(:,:,:),SH2O(:,:,:) & - ,SLDPTH(:),RTDPTH(:),SLLEVEL(:) + real, allocatable :: STC(:,:,:) & !< Soil temperature + ,SMC(:,:,:) & !< Volumetric soil moisture + ,SH2O(:,:,:) & !< Liquid volumetric soil moisture + ,SLDPTH(:) & !< Thickness of each soil layer + ,RTDPTH(:) & !< Depth of the bottom of the root zone + ,SLLEVEL(:) !< Soil level end module soil diff --git a/sorc/ncep_post.fd/TRPAUS.f b/sorc/ncep_post.fd/TRPAUS.f index 24a27d71d..5dfe7bb92 100644 --- a/sorc/ncep_post.fd/TRPAUS.f +++ b/sorc/ncep_post.fd/TRPAUS.f @@ -1,25 +1,16 @@ !> @file -!> @brief trpaus() computes tropopause data. -!> -!> @author Russ Treadon W/NP2 @date 1992-12-22 - -!> This routine computes tropopause data. At each mass +!> @brief trpaus() computes tropopause level fields. +!> +!> 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 +!> or equal to a critical lapse rate. This critcal lapse +!> rate is 2 deg/km. This is in accord with the WMO +!> definition of a tropopause. A maximum tropopause +!> pressure of 500mb is enforced. Once 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 !> -----|------------|--------- @@ -32,6 +23,16 @@ !> 2021-09-13 | JESSE MENG | 2D DECOMPOSITION !> !> @author Russ Treadon W/NP2 @date 1992-12-22 +!------------------------------------------------------------------------------ +!> @brief Computes tropopause data. +!> +!> @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. +!> SUBROUTINE TRPAUS(PTROP,TTROP,ZTROP,UTROP,VTROP,SHTROP) ! diff --git a/sorc/ncep_post.fd/UPP_PHYSICS.f b/sorc/ncep_post.fd/UPP_PHYSICS.f index a2841e1e9..c194f0760 100644 --- a/sorc/ncep_post.fd/UPP_PHYSICS.f +++ b/sorc/ncep_post.fd/UPP_PHYSICS.f @@ -1,7 +1,5 @@ !> @file -!> -!> @brief upp_physics is a collection of UPP subroutines for physics variables calculation. -!> @author Jesse Meng @date 2020-05-20 +!> @brief UPP_PHYSICS is a collection of UPP subroutines for physics variables calculation. !> !> calcape() computes CAPE/CINS and other storm related variables. !> @@ -59,7 +57,7 @@ module upp_physics contains ! !------------------------------------------------------------------------------------- -!> CALRH() computes relative humidity +!> Computes relative humidity !> !> @param[in] P1 real Pressure (Pa) !> @param[in] T1 real Temperature (K) @@ -88,7 +86,7 @@ END SUBROUTINE CALRH ! !------------------------------------------------------------------------------------- ! -!> calrh_nam() computes relative humidity. +!> Computes relative humidity. !> !> This routine computes relative humidity given pressure, !> temperature, specific humidity. an upper and lower bound @@ -166,7 +164,7 @@ END SUBROUTINE CALRH_NAM ! !------------------------------------------------------------------------------------- ! -!> calrh_gfs() computes relative humidity. +!> Computes relative humidity. !> !> This routine computes relative humidity given pressure, !> temperature, specific humidity. an upper and lower bound @@ -256,7 +254,7 @@ SUBROUTINE CALRH_GFS(P1,T1,Q1,RH) END SUBROUTINE CALRH_GFS ! !------------------------------------------------------------------------------------- -!> CALRH_GSD() Compute RH with the NOAA GSL (formerly NOAA GSD) algorithm used for RUC and Rapid Refresh +!> Compute RH with the NOAA GSL (formerly NOAA GSD) algorithm used for RUC and Rapid Refresh !> !> @param P1 real Pressure (Pa) !> @param T1 real Temperature (K) @@ -304,7 +302,7 @@ END SUBROUTINE CALRH_GSD ! !------------------------------------------------------------------------------------- ! -!> CALRH_PW() algorithm used at GSL for RUC and Rapid Refresh. +!> Algorithm used at GSL for RUC and Rapid Refresh. !> !> @param RHPW real Relative humidity with respect to precipitable water (entire atmosphere) !> @@ -375,8 +373,7 @@ END SUBROUTINE CALRH_PW ! !------------------------------------------------------------------------------------- ! - elemental function fpvsnew(t) -!> fpvsnew() computes saturation vapor pressure. +!> @brief Computes saturation vapor pressure. !> !> Compute saturation vapor pressure from the temperature. !> A linear interpolation is done between values in a lookup table @@ -398,16 +395,18 @@ elemental function fpvsnew(t) !> 2001-02-26 | Iredell | Ice phase !> !> @author N Phillips w/NMC2X2 @date 1982-12-30 + elemental function fpvsnew(t) + implicit none integer,parameter:: nxpvs=7501 - real,parameter:: con_ttp =2.7316e+2 ! temp at H2O 3pt - real,parameter:: con_psat =6.1078e+2 ! pres at H2O 3pt - real,parameter:: con_cvap =1.8460e+3 ! spec heat H2O gas (J/kg/K) - real,parameter:: con_cliq =4.1855e+3 ! spec heat H2O liq - real,parameter:: con_hvap =2.5000e+6 ! lat heat H2O cond - real,parameter:: con_rv =4.6150e+2 ! gas constant H2O - real,parameter:: con_csol =2.1060e+3 ! spec heat H2O ice - real,parameter:: con_hfus =3.3358e+5 ! lat heat H2O fusion + real,parameter:: con_ttp =2.7316e+2 !< temp at H2O 3pt + real,parameter:: con_psat =6.1078e+2 !< pres at H2O 3pt + real,parameter:: con_cvap =1.8460e+3 !< spec heat H2O gas (J/kg/K) + real,parameter:: con_cliq =4.1855e+3 !< spec heat H2O liq + real,parameter:: con_hvap =2.5000e+6 !< lat heat H2O cond + real,parameter:: con_rv =4.6150e+2 !< gas constant H2O + real,parameter:: con_csol =2.1060e+3 !< spec heat H2O ice + real,parameter:: con_hfus =3.3358e+5 !< lat heat H2O fusion real,parameter:: tliq=con_ttp real,parameter:: tice=con_ttp-20.0 real,parameter:: dldtl=con_cvap-con_cliq @@ -467,7 +466,7 @@ elemental function fpvsnew(t) end function fpvsnew ! !------------------------------------------------------------------------------------- -!> calcape() computes CAPE and CINS. +!> Computes CAPE and CINS. !> !> This routine computes CAPE and CINS given temperature, !> pressure, and specific humidty. In "storm and cloud @@ -940,7 +939,7 @@ SUBROUTINE CALCAPE(ITYPE,DPBND,P1D,T1D,Q1D,L1D,CAPE, & END SUBROUTINE CALCAPE ! !------------------------------------------------------------------------------------- -!> calcape2() computes CAPE and CINS. +!> Computes CAPE and CINS. !> !> This routine computes CAPE and CINS given temperature, !> pressure, and specific humidty. In "storm and cloud @@ -1701,11 +1700,11 @@ END SUBROUTINE CALCAPE2 ! elemental function TVIRTUAL(T,Q) ! -!> TVIRTUAL() Computes virtual temperature +!> @brief Computes virtual temperature !> !> @param[in] T real Temperature !> @param[in] Q real Specific humidity -!> +!> @return virtual temperature ! IMPLICIT NONE REAL TVIRTUAL @@ -1717,7 +1716,7 @@ end function TVIRTUAL ! !------------------------------------------------------------------------------------- ! -!> CALVOR() computes absolute vorticity. +!> Computes absolute vorticity. !> !> @param[in] UWND U wind (m/s) mass-points. !> @param[in] VWND V wind (m/s) mass-points. @@ -2144,8 +2143,8 @@ SUBROUTINE CALVOR(UWND,VWND,ABSV) ! RETURN END - -!> CALDIV computes divergence. +!----------------------------------------------------------------------------- +!> Computes divergence. !> !> For GFS, this routine copmutes the horizontal divergence !> using 2nd-order centered scheme on a lat-lon grid @@ -2161,9 +2160,6 @@ SUBROUTINE CALVOR(UWND,VWND,ABSV) !> 2016-07-22 | S Moorthi | Modified polar divergence calculation !> !> @author Sajal Kar W/NP2 @date 2016-05-05 - -!----------------------------------------------------------------------------- -!> caldiv() computes divergence. ! SUBROUTINE CALDIV(UWND,VWND,DIV) use masks, only: gdlat, gdlon @@ -2427,7 +2423,7 @@ SUBROUTINE CALDIV(UWND,VWND,DIV) END SUBROUTINE CALDIV !------------------------------------------------------------------------ -!> CALGRADPS computes gardients of a scalar field PS or LNPS. +!> Computes gradients of a scalar field PS or LNPS. !> !> For GFS, this routine computes horizontal gradients of PS or LNPS. !> Using 2nd-order centered scheme on a lat-lon grid. @@ -2658,7 +2654,8 @@ SUBROUTINE CALGRADPS(PS,PSX,PSY) END SUBROUTINE CALGRADPS -!> calslr_roebber() computes snow solid-liquid-ratio slr using the Roebber algorithm. +!----------------------------------------------------------------------------------------- +!> Computes snow solid-liquid-ratio (SLR) using the Roebber algorithm. !> !> Obtained the code and data from WPC. WPC's SLR products include SLR computed from !> GFS and NAM, SLR climotology, and averaged SLR. UPP computes SLR for GFS and RRFS. @@ -3065,7 +3062,7 @@ SUBROUTINE CALSLR_ROEBBER(tprs,rhprs,slr) END SUBROUTINE CALSLR_ROEBBER ! !------------------------------------------------------------------------------------- -! +!> @brief Called by calslr_roebber(), the breadboard subroutines are an AI Machine Learning algorithm that uses a neural network method to predict the snow solid-to-liquid ratio (SLR) SUBROUTINE breadboard1_main(nswFileName,mf,f1,f2,f3,f4,f5,f6,p1,p2,p3) implicit none @@ -4313,7 +4310,7 @@ END SUBROUTINE Breadboard10 ! !------------------------------------------------------------------------------------- ! -!> calslr_uutah() computes snow solid-liquid-ratio slr using the Steenburgh algorithm. +!> Computes snow solid-liquid-ratio slr using the Steenburgh algorithm. !> !> Obtained the code and data from U of Utah Jim Steenburgh and Peter Veals. !> SLR = m1X1 + m2X2 + m3X3 + m4X4 + m5X5 + m6X6 + b. diff --git a/sorc/ncep_post.fd/VRBLS2D_mod.f b/sorc/ncep_post.fd/VRBLS2D_mod.f index 95cf8e37f..e3a143581 100644 --- a/sorc/ncep_post.fd/VRBLS2D_mod.f +++ b/sorc/ncep_post.fd/VRBLS2D_mod.f @@ -1,107 +1,356 @@ +!> @file +!> @brief VRBLS2D declares 2D variables that are used throughout the UPP code module vrbls2d !- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - implicit none ! - real, allocatable :: & - U10 (:,:),AKMS (:,:),AKHS (:,:),THS (:,:),QS(:,:) & - ,UZ0(:,:),VZ0(:,:),THZ0(:,:),QZ0(:,:) & - ,SNO (:,:),TSHLTR (:,:),QSHLTR(:,:), MRSHLTR(:,:) & - ,V10(:,:),ACPREC(:,:),CUPREC(:,:),ANCPRC(:,:),CUPPT(:,:) & - ,SMSTAV(:,:),SSROFF(:,:),BGROFF(:,:),VEGFRC(:,:) & - ,SHDMIN(:,:),SHDMAX(:,:),LAI(:,:) & - ,ACSNOW(:,:),ACSNOM(:,:),CMC(:,:),SST(:,:) & - ,RSWIN(:,:),RLWIN(:,:),RLWTOA(:,:) & - ,LWDNBC(:,:),LWUPBC(:,:) & - ,TG(:,:),SFCSHX(:,:),PSLP(:,:),T700(:,:),Z500(:,:),Z700(:,:) & - ,SFCLHX(:,:),FIS(:,:),T500(:,:),Z1000(:,:),SLP(:,:) & - ,CFRACL(:,:),CFRACM(:,:),CFRACH(:,:),ACFRST(:,:) & - ,ACFRCV(:,:),NCFRST(:,:),NCFRCV(:,:),HBOT(:,:) & - ,HTOP(:,:),ASWIN(:,:),ALWIN(:,:),ASWOUT(:,:) & - ,ALWOUT(:,:),ASWTOA(:,:),ALWTOA(:,:),CZEN(:,:) & - ,CZMEAN(:,:),SIGT4(:,:),RSWOUT(:,:),RADOT(:,:) & - ,SMSTOT(:,:),PCTSNO(:,:),PSHLTR(:,:),TH10(:,:) & - ,Q10(:,:),SR(:,:),PREC(:,:),SUBSHX(:,:) & - ,SNOPCX(:,:),SFCUVX(:,:),SFCEVP(:,:),POTEVP(:,:) & - ,Z0(:,:),USTAR(:,:),TWBS(:,:),QWBS(:,:) & - ,SFCEXC(:,:),GRNFLX(:,:),SOILTB(:,:),F(:,:) & - ,ALBEDO(:,:),CLDFRA(:,:),CPRATE(:,:),CNVCFR(:,:) & - ,PBLH(:,:),PBLHGUST(:,:),HBOTD(:,:),HTOPD(:,:),HBOTS(:,:),HTOPS(:,:) & - ,CLDEFI(:,:),ALBASE(:,:),SI(:,:),LSPA(:,:) & - ,RSWINC(:,:),VIS(:,:),PD(:,:),MXSNAL(:,:),MIXHT(:,:) & - ,SNONC(:,:),EPSR(:,:),RSWTOA(:,:),TEQL(:,:) & + real, allocatable :: & + U10 (:,:) & !< 10m u-wind component + ,AKMS (:,:) & !< Surface exchange coefficient of momentum + ,AKHS (:,:) & !< Surface exchange coefficient of heat/moisture + ,THS (:,:) & !< Surface potential temperature + ,QS(:,:) & !< Specific humidity + ,UZ0(:,:) & !< U-wind component at roughness length (m/s) + ,VZ0(:,:) & !< V-wind component at roughness length (m/s) + ,THZ0(:,:) & !< Potential temperature at roughness length (K) + ,QZ0(:,:) & !< Specific humidity at roughness length (kg/kg) + ,SNO (:,:) & !< Instantaneous snow water equivalent + ,TSHLTR (:,:) & !< 2m temperature + ,QSHLTR(:,:) & !< 2m specific humidity + ,MRSHLTR(:,:) & !< Shelter mixing ratio + ,V10(:,:) & !< 10 m v-wind component + ,ACPREC(:,:) & !< Accumulated total precipitation + ,CUPREC(:,:) & !< Accumulated total convective precipitation + ,ANCPRC(:,:) & !< Accumulated total grid-scale precipitation + ,CUPPT(:,:) & !< Accumulated convective rain since last call to radiation + ,SMSTAV(:,:) & !< Soil moisture availability [%] + ,SSROFF(:,:) & !< Storm surface runoff + ,BGROFF(:,:) & !< Underground/subsurface runoff + ,VEGFRC(:,:) & !< Vegetation fraction + ,SHDMIN(:,:) & !< Annual MIN vegetation fraction + ,SHDMAX(:,:) & !< Annual MAX vegetation fraction + ,LAI(:,:) & !< Leaf area index + ,ACSNOW(:,:) & !< Accumulated snowfall + ,ACSNOM(:,:) & !< Accumulated snowmelt + ,CMC(:,:) & !< Canopy moisture content (m) + ,SST(:,:) & !< Sea surface temperature + ,RSWIN(:,:) & !< Incoming shortwave radiation at the surface + ,RLWIN(:,:) & !< Incoming longwave radiation at the surface + ,RLWTOA(:,:) & !< Outgoing longwave radiation at the top of the atmopshere + ,LWDNBC(:,:) & !< Downward longwave radiation at the surface + ,LWUPBC(:,:) & !< Upward longwave radiation at the surface + ,TG(:,:) & !< Ground temperature + ,SFCSHX(:,:) & !< Surface sensible heat flux + ,PSLP(:,:) & !< Reduced sea-level pressure array + ,T700(:,:) & !< Temperature at 700 hPa + ,Z500(:,:) & !< Geopotential height at 500 hPa + ,Z700(:,:) & !< Geopotential height at 700 hPa + ,SFCLHX(:,:) & !< Time averaged surface latent heat flux + ,FIS(:,:) & !< Geopotential height of the surface + ,T500(:,:) & !< Temperature at 500 hPa + ,Z1000(:,:) & !< Geopotential height at 1000 hPa + ,SLP(:,:) & !< Sea level pressure + ,CFRACL(:,:) & !< Radiation state variable - low cloud fraction + ,CFRACM(:,:) & !< Radiation state variable - middle cloud fraction + ,CFRACH(:,:) & !< Radiation state variable - high cloud fraction + ,ACFRST(:,:) & !< Radiation state variable - accumulated stratiform cloud fraction + ,ACFRCV(:,:) & !< Radiation state variable - accumulated convective cloud fraction + ,NCFRST(:,:) & !< Radiation state variable - times stratiform cloud >0 between rad calls + ,NCFRCV(:,:) & !< Radiation state variable - times convec cloud >0 between rad calls + ,HBOT(:,:) & !< Bottom of convection level + ,HTOP(:,:) & !< Top of convection level + ,ASWIN(:,:) & !< Time-averaged incoming shortwave radiation at the surface + ,ALWIN(:,:) & !< Time-averaged incoming longwave radiation at the surface + ,ASWOUT(:,:) & !< Time-averaged outgoing shortwave radiation at the surface + ,ALWOUT(:,:) & !< Time-averaged outgoing longwave radiation at the surface + ,ASWTOA(:,:) & !< Time-averaged outgoing shortwave radiation at the model top + ,ALWTOA(:,:) & !< Time-average outgoing longwave radiation at the model top + ,CZEN(:,:) & !< Cosine of solar zenith angle + ,CZMEAN(:,:) & !< Mean cosine of solar zenith angle + ,SIGT4(:,:) & !< Sigma of temperature (Stefan-Boltzmann * T**4) + ,RSWOUT(:,:) & !< Instantaneous outgoing shortwave radiation from the surface + ,RADOT(:,:) & !< Instantaneous outgoing longwave radiation from the surface + ,SMSTOT(:,:) & !< Total soil moisture + ,PCTSNO(:,:) & !< Snow cover percentage + ,PSHLTR(:,:) & !< Shelter-level pressure + ,TH10(:,:) & !< Potential temperature at 10 meters above the surface (anemometer level) + ,Q10(:,:) & !< Specific humidity at 10 meters above the surface (anemometer level) + ,SR(:,:) & !< Snow ratio + ,PREC(:,:) & !< Precipitation + ,SUBSHX(:,:) & !< Accumulated deep soil heat flux + ,SNOPCX(:,:) & !< Snow phase change heat flux + ,SFCUVX(:,:) & !< _____ Surface ultraviolet radiation? Derived from total momentum flux ? + ,SFCEVP(:,:) & !< Accumulated surface evaporation + ,POTEVP(:,:) & !< Potential evaporation + ,Z0(:,:) & !< Roughness length + ,USTAR(:,:) & !< Frictional velocity + ,TWBS(:,:) & !< Instantaneous surface sensible heat flux + ,QWBS(:,:) & !< Instantaneous surface latent heat flux + ,SFCEXC(:,:) & !< Surface exchange coefficient + ,GRNFLX(:,:) & !< Instantaneous ground heat flux + ,SOILTB(:,:) & !< Deep ground soil temperature + ,F(:,:) & !< ??? Coriolis-related - possibly (Coriolis * DT/2) or Coriolis sine latitude term + ,ALBEDO(:,:) & !< Surface albedo + ,CLDFRA(:,:) & !< Instantaneous 3D cloud fraction + ,CPRATE(:,:) & !< Convective precipitation rate + ,CNVCFR(:,:) & !< Convective cloud fraction + ,PBLH(:,:) & !< Planetary boundary layer (PBL) height + ,PBLHGUST(:,:) & !< Effective PBL height diagnosed from the theta-v profile, rather than the Ri profile + ,HBOTD(:,:) & !< Bottom of the deep convection layer + ,HTOPD(:,:) & !< Top of the deep convection layer + ,HBOTS(:,:) & !< Bottom of the shallow convection layer + ,HTOPS(:,:) & !< Top of the shallow convection layer + ,CLDEFI(:,:) & !< Convective cloud efficiency + ,ALBASE(:,:) & !< Base (snow-free) albedo + ,SI(:,:) & !< Snow depth in mm + ,LSPA(:,:) & !< Land surface precipitation accumulation + ,RSWINC(:,:) & !< Incoming clear-sky shortwave radiation at the surface (clear-sky equivalent of RSWIN) + ,VIS(:,:) & !< Visibility + ,PD(:,:) & !< Surface pressure minus PTOP + ,MXSNAL(:,:) & !< Maximum snow albedo + ,MIXHT(:,:) & !< Mixing height on surface + ,SNONC(:,:) & !< Accumulated total grid-scale snow/ice ? + ,EPSR(:,:) & !< Radiative emissivity + ,RSWTOA(:,:) & !< Outgoing shortwave radiation flux at top of atmosphere + ,TEQL(:,:) & !< Equivalent temperature ? ! Variables saved for input to IFI - ,IFI_APCP(:,:),CAPE(:,:),CIN(:,:) & + ,IFI_APCP(:,:) & !< In-flight icing (IFI) total accumulated precipitation at surface + ,CAPE(:,:) & !< Convective available potential energy + ,CIN(:,:) & !< Convective inhibition ! HWRF additions - ,MDLTAUX(:,:),MDLTAUY(:,:),CD10(:,:),CH10(:,:) & - ,ACSWUPT(:,:),SWDNT(:,:),ACSWDNT(:,:) & + ,MDLTAUX(:,:) & !< Zonal (u-) component of the wind stress + ,MDLTAUY(:,:) & !< Meridional (v-) component of the wind stress + ,CD10(:,:) & !< Drag coefficient at 10 meters above the ground + ,CH10(:,:) & !< Heat transfer coefficient at 10 meters above the ground + ,ACSWUPT(:,:) & !< Accumulated shortwave upwelling radiation flux at top + ,SWDNT(:,:) & !< Instantaneous shortwave downward radiation flux at top + ,ACSWDNT(:,:) & !< Accumulated shortwave downward radiation flux at top ! NAMB additions - ,SNOAVG(:,:),PSFCAVG(:,:),T10AVG(:,:),AKHSAVG(:,:),AKMSAVG(:,:) & - ,T10M(:,:),U10MAX(:,:),V10MAX(:,:),u10h(:,:),v10h(:,:) & - ,PRATE_MAX(:,:),FPRATE_MAX(:,:) & + ,SNOAVG(:,:) & !< Average snow cover + ,PSFCAVG(:,:) & !< Average surface pressure ? + ,T10AVG(:,:) & !< Time-averaged temperature at 10 meters above ground + ,AKHSAVG(:,:) & !< Time-averaged mass exchange coefficient or surface exchange coefficient for heat? + ,AKMSAVG(:,:) & !< Time-averaged wind exchange coefficient or surface exchange coefficient for momentum? + ,T10M(:,:) & !< Temperature at 10 meters above ground + ,U10MAX(:,:) & !< Maximum hourly zonal (u-) wind speed at 10 meters above ground level + ,V10MAX(:,:) & !< Maximum hourly meridional (v-) wind speed at 10 meters above ground level + ,u10h(:,:) & !< Hourly zonal (u-) wind speed at 10 meters above ground level + ,v10h(:,:) & !< Hourly meridional (v-) wind speed at 10 meters above ground level + ,PRATE_MAX(:,:) & !< Maximum precipitation rate in mm/h + ,FPRATE_MAX(:,:) & !< Maximum frozen precipitation rate in mm/h ! GSD addition - ,WSPD10MAX(:,:),W_UP_MAX(:,:),W_DN_MAX(:,:),REFD_MAX(:,:) & - ,UP_HELI_MAX(:,:),UP_HELI_MAX16(:,:),GRPL_MAX(:,:),QRMAX(:,:) & - ,UP_HELI(:,:),UP_HELI16(:,:),LTG1_MAX(:,:),LTG2_MAX(:,:),LTG3_MAX(:,:) & - ,UP_HELI_MIN(:,:),UP_HELI_MIN16(:,:) & - ,UP_HELI_MAX02(:,:),UP_HELI_MIN02(:,:) & - ,UP_HELI_MAX03(:,:),UP_HELI_MIN03(:,:) & - ,REL_VORT_MAX(:,:),REL_VORT_MAX01(:,:),REL_VORT_MAXHY1(:,:) & - ,WSPD10UMAX(:,:),WSPD10VMAX(:,:) & - ,REFDM10C_MAX(:,:),HAIL_MAX2D(:,:),HAIL_MAXK1(:,:) & - ,HAIL_MAXHAILCAST(:,:) & - ,NCI_LTG(:,:),NCA_LTG(:,:),NCI_WQ(:,:),NCA_WQ(:,:) & - ,NCI_REFD(:,:),NCA_REFD(:,:),RAINC_BUCKET1(:,:),RAINNC_BUCKET1(:,:) & - ,RAINC_BUCKET(:,:),RAINNC_BUCKET(:,:),SNOW_BUCKET(:,:) & - ,GRAUP_BUCKET(:,:),PCP_BUCKET(:,:),ACGRAUP(:,:),ACFRAIN(:,:) & - ,FRZRN_BUCKET(:,:),SNOW_ACM(:,:),SNOW_BKT(:,:) & - ,SNOW_BUCKET1(:,:),GRAUP_BUCKET1(:,:),PCP_BUCKET1(:,:) & - ,SNOWNC(:,:),GRAUPELNC(:,:),TMAX(:,:),W_MEAN(:,:) & - ,TSNOW(:,:),QVG(:,:),QV2m(:,:),QVl1(:,:) & - ,REFC_10CM(:,:), REF1KM_10CM(:,:), REF4KM_10CM(:,:) & - ,SWRADmean(:,:),U10mean(:,:),V10mean(:,:),SPDUV10mean(:,:) & - ,SWNORMmean(:,:),SNFDEN(:,:),SNDEPAC(:,:),SWDDNI(:,:),SWDDIF(:,:) & - ,SWDNBC(:,:),SWDDNIC(:,:),SWDDIFC(:,:), SWUPBC(:,:), SWUPT(:,:) & - ,TAOD5502D(:,:),AERASY2D(:,:),AERSSA2D(:,:),MEAN_FRP(:,:) & - ,HWP(:,:),LWP(:,:),IWP(:,:),XLAIXY(:,:),SMOKE_AVE(:,:),DUST_AVE(:,:) & - ,COARSEPM_AVE(:,:) & + ,WSPD10MAX(:,:) & !< Maximum hourly wind speed at 10 meters above ground level + ,W_UP_MAX(:,:) & !< Maximum hourly updraft velocity + ,W_DN_MAX(:,:) & !< Maximum hourly downdraft velocity + ,REFD_MAX(:,:) & !< Maximum hourly 1 km above ground level reflectivity + ,UP_HELI_MAX(:,:) & !< Maximum hourly updraft helicity + ,UP_HELI_MAX16(:,:) & !< Maximum 1-6km hourly updraft helicity + ,GRPL_MAX(:,:) & !< Maximum column-integrated graupel + ,QRMAX(:,:) & !< Maximum rain water mixing ratio + ,UP_HELI(:,:) & !< Updraft helicity + ,UP_HELI16(:,:) & !< Updraft helicity in 1-6km layer + ,LTG1_MAX(:,:) & !< Maximum lightning threat index 1 + ,LTG2_MAX(:,:) & !< Maximum lightning threat index 2 + ,LTG3_MAX(:,:) & !< Maximum lightning threat index 3 + ,UP_HELI_MIN(:,:) & !< Minimum updraft helicity + ,UP_HELI_MIN16(:,:) & !< Minimum updraft helicity over 1-6 km layer + ,UP_HELI_MAX02(:,:) & !< Maximum updraft helicity over 0-2 km layer + ,UP_HELI_MIN02(:,:) & !< Minimum updraft helicity over 0-2 km layer + ,UP_HELI_MAX03(:,:) & !< Maximum updraft helicity over 0-3 km layer + ,UP_HELI_MIN03(:,:) & !< Minimum updraft helicity over 0-3 km layer + ,REL_VORT_MAX(:,:) & !< Maximum relative vertical vorticity + ,REL_VORT_MAX01(:,:) & !< Maximum relative vertical vorticity at 0-1 km + ,REL_VORT_MAXHY1(:,:) & !< Maximum relative vertical vorticity at hybrid level 1 + ,WSPD10UMAX(:,:) & !< Maximum u-component of wind at 10 meters above ground level + ,WSPD10VMAX(:,:) & !< Maximum hourly v-component of wind at 10 meters above ground level + ,REFDM10C_MAX(:,:) & !< Maximum hourly -10C reflectivity + ,HAIL_MAX2D(:,:) & !< Maximum hail diameter in column + ,HAIL_MAXK1(:,:) & !< Maximum hail diameter at k=1 + ,HAIL_MAXHAILCAST(:,:) & !< Maximum hail diameter at surface from HAILCAST algorithm (HRRR and RRFS applications) + ,NCI_LTG(:,:) & !< Convective initiation lightning + ,NCA_LTG(:,:) & !< Convective activity lightning + ,NCI_WQ(:,:) & !< Convective Initiation Vertical Hydrometeor Flux + ,NCA_WQ(:,:) & !< Convective Activity Vertical Hydrometeor Flux + ,NCI_REFD(:,:) & !< Convective Initiation Reflectivity + ,NCA_REFD(:,:) & !< Convective Activity Reflectivity + ,RAINC_BUCKET1(:,:) & !< Accumulated cumulus precipitation over BUCKET_DT1 periods of time + ,RAINNC_BUCKET1(:,:) & !< Accumulated grid-scale precipitation over BUCKET_DT1 periods of time + ,RAINC_BUCKET(:,:) & !< Accumulated cumulus precipitation over BUCKET_DT periods of time + ,RAINNC_BUCKET(:,:) & !< Accumulated grid-scale precipitation over BUCKET_DT periods of time + ,SNOW_BUCKET(:,:) & !< Accumulated grid-scale snow over BUCKET_DT periods of time + ,GRAUP_BUCKET(:,:) & !< Accumulated grid-scale graupel over BUCKET_DT periods of time + ,PCP_BUCKET(:,:) & !< Bucket total precipitation over BUCKET_DT periods of time + ,ACGRAUP(:,:) & !< Accumulated graupel/sleet + ,ACFRAIN(:,:) & !< Accumulated freezing rain + ,FRZRN_BUCKET(:,:) & !< Freezing rain bucket + ,SNOW_ACM(:,:) & !< Accumulated snowfall + ,SNOW_BKT(:,:) & !< Snowfall bucket + ,SNOW_BUCKET1(:,:) & !< Accumulated grid-scale snow over BUCKET_DT1 periods of time + ,GRAUP_BUCKET1(:,:) & !< Accumulated grid-scale graupel over BUCKET_DT1 periods of time + ,PCP_BUCKET1(:,:) & !< Bucket total precipitation over BUCKET_DT1 periods of time + ,SNOWNC(:,:) & !< Accumulated total grid-scale snow/ice precipitation (per time step?) + ,GRAUPELNC(:,:) & !< Time step non-convective graupel in [m] + ,TMAX(:,:) & !< Maximum 2m temperature + ,W_MEAN(:,:) & !< Mean vertical velocity + ,TSNOW(:,:) & !< Snow temperature + ,QVG(:,:) & !< Water vapor mixing ratio at the surface + ,QV2m(:,:) & !< Water vapor mixing ratio at 2 meters above ground level + ,QVl1(:,:) & !< Water vapor mixing ratio at level 1 + ,REFC_10CM(:,:) & !< Composite (10cm) radar reflectivity + ,REF1KM_10CM(:,:) & !< (10cm) radar reflectivity at 1 km + ,REF4KM_10CM(:,:) & !< (10cm) radar reflectivity at 4 km + ,SWRADmean(:,:) & !< Time-averaged incoming shortwave radiation + ,U10mean(:,:) & !< Time-averaged u-component wind speed at 10 meters above ground level + ,V10mean(:,:) & !< Time-averaged v-component wind speed at 10 meters above ground level + ,SPDUV10mean(:,:) & !< Time-averaged wind speed at 10 meters above ground level + ,SWNORMmean(:,:) & !< Time-averaged SWNORM (terrain-normal downwelling shortwave radiation) + ,SNFDEN(:,:) & !< Snowfall density + ,SNDEPAC(:,:) & !< Accumulated depth of snowfall + ,SWDDNI(:,:) & !< Instantaneous shortwave surface downward direct normal irradiance + ,SWDDIF(:,:) & !< Instantaneous shortwave surface downward diffuse irradiance + ,SWDNBC(:,:) & !< Shortwave surface downward clear-sky shortwave irradiance + ,SWDDNIC(:,:) & !< Clear-sky shortwave surface downward direct normal irradiance + ,SWDDIFC(:,:) & !< Clear-sky shortwave surface downward diffuse horizontal irradiance + ,SWUPBC(:,:) & !< Clear-sky surface upwelling shortwave flux + ,SWUPT(:,:) & !< Upward shortwave flux at top of atmosphere + ,TAOD5502D(:,:) & !< Total aerosol optical depth at 550 nm + ,AERASY2D(:,:) & !< Aerosol asymmetry parameter + ,AERSSA2D(:,:) & !< Aerosol single-scattering albedo + ,MEAN_FRP(:,:) & !< Instantaneous mean fire radiative power + ,HWP(:,:) & !< Hourly wildfire potential + ,LWP(:,:) & !< Liquid water path + ,IWP(:,:) & !< Ice water path + ,XLAIXY(:,:) & !< Leaf area index ? + ,SMOKE_AVE(:,:) & !< Hourly averaged smoke + ,DUST_AVE(:,:) & !< Hourly averaged fine dust (PM 2.5) + ,COARSEPM_AVE(:,:) & !< Hourly averaged coarse dust (PM 10) ! add new fields for GFS - ,SFCUX(:,:),SFCVX(:,:),SFCUXI(:,:), SFCVXI(:,:),AVGALBEDO(:,:),AVGCPRATE(:,:) & - ,AVGPREC(:,:),PTOP(:,:),PBOT(:,:),AVGCFRACH(:,:) & - ,AVGCFRACM(:,:),AVGCFRACL(:,:),AVGTCDC(:,:) & - ,AUVBIN(:,:),AUVBINC(:,:) & - ,ptopl(:,:),pbotl(:,:),Ttopl(:,:) & - ,ptopm(:,:),pbotm(:,:),Ttopm(:,:) & - ,ptoph(:,:),pboth(:,:),Ttoph(:,:) & - ,sfcugs(:,:),sfcvgs(:,:),PBLCFR(:,:) & - ,cldwork(:,:),gtaux(:,:),gtauy(:,:),runoff(:,:) & - ,maxtshltr(:,:),mintshltr(:,:),maxrhshltr(:,:) & - ,minrhshltr(:,:),dzice(:,:),maxqshltr(:,:),minqshltr(:,:) & - ,alwinc(:,:),alwoutc(:,:),alwtoac(:,:) & - ,aswinc(:,:),aswoutc(:,:),aswtoac(:,:),aswintoa(:,:) & - ,smcwlt(:,:),suntime(:,:),fieldcapa(:,:) & - ,avisbeamswin(:,:),avisdiffswin(:,:),airbeamswin(:,:) & - ,airdiffswin(:,:),snowfall(:,:),acond(:,:),edir(:,:),ecan(:,:) & - ,etrans(:,:),esnow(:,:),avgedir(:,:),avgecan(:,:),avgetrans(:,:)& - ,avgesnow(:,:),avgpotevp(:,:),avgprec_cont(:,:),avgcprate_cont(:,:)& - ,ti(:,:),aod550(:,:),du_aod550(:,:),ss_aod550(:,:),su_aod550(:,:) & - ,bc_aod550(:,:),oc_aod550(:,:),landfrac(:,:),paha(:,:),pahi(:,:) & - ,tecan(:,:),tetran(:,:),tedir(:,:),twa(:,:),fdnsst(:,:),pwat(:,:) - integer, allocatable :: IVGTYP(:,:),ISLTYP(:,:),ISLOPE(:,:) & - ,IEQL(:,:) + ,SFCUX(:,:) & !< Time-averaged zonal momentum flux + ,SFCVX(:,:) & !< Time-averaged meridional momentum flux + ,SFCUXI(:,:) & !< Instantaneous zonal momentum flux + ,SFCVXI(:,:) & !< Instantaneous meridional momentum flux + ,AVGALBEDO(:,:) & !< Mid-day average albedo + ,AVGCPRATE(:,:) & !< Convective precipitation in m per physics time step + ,AVGPREC(:,:) & !< Average precipitation rate in m per physics time step + ,PTOP(:,:) & !< Instantaneous convective cloud top pressure + ,PBOT(:,:) & !< Instantaneous convective cloud bottom pressure + ,AVGCFRACH(:,:) & !< Average high cloud fraction + ,AVGCFRACM(:,:) & !< Average mid cloud fraction + ,AVGCFRACL(:,:) & !< Average low cloud fraction + ,AVGTCDC(:,:) & !< Time-averaged column cloud fraction + ,AUVBIN(:,:) & !< Time-averaged incoming surface UV-B + ,AUVBINC(:,:) & !< Time-averaged incoming surface clear-sky UV-B + ,ptopl(:,:) & !< Time-averaged low cloud top pressure + ,pbotl(:,:) & !< Time-averaged low cloud bottom pressure + ,Ttopl(:,:) & !< Time-averaged low cloud top temperature + ,ptopm(:,:) & !< Time-averaged middle cloud top pressure + ,pbotm(:,:) & !< Time-averaged middle cloud bottom pressure + ,Ttopm(:,:) & !< Time-averaged middle cloud top temperature + ,ptoph(:,:) & !< Time-averaged high cloud top pressure + ,pboth(:,:) & !< Time-averaged high cloud bottom pressure + ,Ttoph(:,:) & !< Time-averaged high cloud top temperature + ,sfcugs(:,:) & !< No longer used + ,sfcvgs(:,:) & !< No longer used + ,PBLCFR(:,:) & !< Boundary layer cloud cover + ,cldwork(:,:) & !< Cloud work function + ,gtaux(:,:) & !< Time-averaged zonal gravity wave stress + ,gtauy(:,:) & !< Time-averaged meridional gravity wave stress + ,runoff(:,:) & !< Accumulated total (base+surface) runoff + ,maxtshltr(:,:) & !< Shelter max temperature + ,mintshltr(:,:) & !< Shelter min temperature + ,maxrhshltr(:,:) & !< Shelter max relative humidity + ,minrhshltr(:,:) & !< Shelter min relative humidity + ,dzice(:,:) & !< Ice thickness + ,maxqshltr(:,:) & !< Shelter max specific humidity + ,minqshltr(:,:) & !< Shelter min specific humidity + ,alwinc(:,:) & !< Time-averaged surface clear-sky incoming longwave + ,alwoutc(:,:) & !< Time-averaged surface clear-sky outgoing longwave + ,alwtoac(:,:) & !< Time-averaged clear-sky outgoing longwave at top of atmosphere + ,aswinc(:,:) & !< Time-averaged surface clear-sky incoming shortwave + ,aswoutc(:,:) & !< Time-averaged surface clear-sky outgoing shortwave + ,aswtoac(:,:) & !< Time-averaged clear-sky outgoing shortwave at top of atmosphere + ,aswintoa(:,:) & !< Time-averaged model top incoming shortwave + ,smcwlt(:,:) & !< Wilting point + ,suntime(:,:) & !< Sunshine duration + ,fieldcapa(:,:) & !< Field capacity + ,avisbeamswin(:,:) & !< Time-averaged surface visible beam downward solar flux + ,avisdiffswin(:,:) & !< Time-averaged surface visible diffuse downward solar flux + ,airbeamswin(:,:) & !< Time-averaged surface near ir beam downward solar flux + ,airdiffswin(:,:) & !< Time-averaged surface near ir diffuse downward solar flux + ,snowfall(:,:) & !< Total accumulated snowfall ? + ,acond(:,:) & !< Aerodynamic conductance on surface + ,edir(:,:) & !< Direct soil evaporation (W/m2) + ,ecan(:,:) & !< Canopy water evaporation (W/m2) + ,etrans(:,:) & !< Plant transpiration (W/m2) + ,esnow(:,:) & !< Snow sublimation (W/m2) + ,avgedir(:,:) & !< Direct soil evaporation (6-hr average?) + ,avgecan(:,:) & !< Accumulated evaporation of intercepted water (6-hr average?) + ,avgetrans(:,:)& !< Plant transpiration (6-hr average?) + ,avgesnow(:,:) & !< Snow sublimation (6-hr average?) + ,avgpotevp(:,:) & !< Time-averaged accumulated potential evaporation + ,avgprec_cont(:,:) & !< Average precipitation rate - continuous bucket + ,avgcprate_cont(:,:) & !< Convective precipitation - coninuous bucket + ,ti(:,:) & !< Sea ice skin temperature + ,aod550(:,:) & !< Instantaneous aerosol optical depth at 550 nm + ,du_aod550(:,:) & !< Instantaneous aerosol optical depth at 550 nm (dust) + ,ss_aod550(:,:) & !< Instantaneous aerosol optical depth at 550 nm (seasalt) + ,su_aod550(:,:) & !< Instantaneous aerosol optical depth at 550 nm (sulfates) + ,bc_aod550(:,:) & !< Instantaneous aerosol optical depth at 550 nm (organic carbon) + ,oc_aod550(:,:) & !< Instantaneous aerosol optical depth at 550 nm (black carbon) + ,landfrac(:,:) & !< Land fraction + ,paha(:,:) & !< Averaged precipitation advected heat flux + ,pahi(:,:) & !< Instantaneous precipitation advected heat flux + ,tecan(:,:) & !< Accumulated evaporation of intercepted water + ,tetran(:,:) & !< Accumulated plant transpiration + ,tedir(:,:) & !< Accumulated soil surface evaporation + ,twa(:,:) & !< Total water storage in aquifer + ,fdnsst(:,:) & !< Foundation temperature + ,pwat(:,:) !< Precipitable water + integer, allocatable :: IVGTYP(:,:) & !< Vegetation type + ,ISLTYP(:,:) & !< Soil type + ,ISLOPE(:,:) & !< Slope type + ,IEQL(:,:) !< EQ level (highest positively buoyant level ?) -! Add 2d aerosol diagnosis fields for GOCART (NGAC) +! Add 2d aerosol diagnosis fields for GOCART (NEMS-GFS Aerosol Component [NGAC]) real, allocatable :: & - DUSMASS(:,:),DUCMASS(:,:),DUSMASS25(:,:),DUCMASS25(:,:) & - ,SUSMASS(:,:),SUCMASS(:,:),SUSMASS25(:,:),SUCMASS25(:,:) & - ,OCSMASS(:,:),OCCMASS(:,:),OCSMASS25(:,:),OCCMASS25(:,:) & - ,BCSMASS(:,:),BCCMASS(:,:),BCSMASS25(:,:),BCCMASS25(:,:) & - ,SSSMASS(:,:),SSCMASS(:,:),SSSMASS25(:,:),SSCMASS25(:,:) & - ,DUSTCB(:,:),SSCB(:,:),OCCB(:,:),BCCB(:,:),SULFCB(:,:) & - ,DUSTALLCB(:,:),SSALLCB(:,:),DUSTPM(:,:),SSPM(:,:),PP25CB(:,:) & - ,DUSTPM10(:,:),PP10CB(:,:),NO3CB(:,:),NH4CB(:,:),maod(:,:)!lzhang, add for FV3-Chem + DUSMASS(:,:) & !< Dust (PM10) surface mass concentration + ,DUCMASS(:,:) & !< Dust (PM10) column mass density + ,DUSMASS25(:,:) & !< Dust (PM25) surface mass concentration + ,DUCMASS25(:,:) & !< Dust (PM25) column mass density + ,SUSMASS(:,:) & !< Sulfate surface mass concentration - no longer used + ,SUCMASS(:,:) & !< Sulfate column mass density - no longer used + ,SUSMASS25(:,:) & !< Sulfate (PM25) surface mass concentration - no longer used + ,SUCMASS25(:,:) & !< Sulfate (PM25) column mass density - no longer used + ,OCSMASS(:,:) & !< Organic Carbon Surface Mass Concentration - no longer used + ,OCCMASS(:,:) & !< Organic Carbon Column Mass Density - no longer used + ,OCSMASS25(:,:) & !< Organic Carbon (PM25) Surface Mass Concentration - no longer used + ,OCCMASS25(:,:) & !< Organic Carbon (PM25) Column Mass Density - no longer used + ,BCSMASS(:,:) & !< Black Carbon Surface Mass Concentration - no longer used + ,BCCMASS(:,:) & !< Black Carbon Column Mass Density - no longer used + ,BCSMASS25(:,:) & !< Black Carbon (PM25) Surface Mass Concentration - no longer used + ,BCCMASS25(:,:) & !< Black Carbon (PM25) Column Mass Density - no longer used + ,SSSMASS(:,:) & !< Sea Salt Surface Mass Concentration - no longer used + ,SSCMASS(:,:) & !< Sea Salt Column Mass Density - no longer used + ,SSSMASS25(:,:) & !< Sea Salt (PM25) Surface Mass Concentration - no longer used + ,SSCMASS25(:,:) & !< Sea Salt (PM25) Column Mass Density - no longer used + ,DUSTCB(:,:) & !< GFS output dust in nemsio (GOCART) + ,SSCB(:,:) & !< GFS output sea salt in nemsio (GOCART) + ,OCCB(:,:) & !< GFS output organic carbon in nemsio (GOCART) + ,BCCB(:,:) & !< GFS output black carbon in nemsio (GOCART) + ,SULFCB(:,:) & !< GFS output sulfate in netcdf (GOCART) + ,DUSTALLCB(:,:) & !< GFS output dust in nemsio (GOCART) + ,SSALLCB(:,:) & !< GFS output sea salt in nemsio (GOCART) + ,DUSTPM(:,:) & !< PM25 dust + ,SSPM(:,:) & !< PM25 sea salt + ,PP25CB(:,:) & !< GFS output pp25 in nemsio (GOCART) + ,DUSTPM10(:,:) & !< Dust 10 micrometers mass density concentration on model surface + ,PP10CB(:,:) & !< GFS output pp10 in nemsio (GOCART) + ,NO3CB(:,:) & !< GFS output nitrate in netcdf (GOCART) + ,NH4CB(:,:) & !< GFS output NH4 in netcdf (GOCART) + ,maod(:,:) !< MIE AOD at 550nm (for FV3-Chem) ! Add new field for AQM - real, allocatable :: aqm_aod550(:,:) + real, allocatable :: aqm_aod550(:,:) !< Air quality model (AQM) aerosol optical depth at 550nm ! end module vrbls2d diff --git a/sorc/ncep_post.fd/VRBLS3D_mod.f b/sorc/ncep_post.fd/VRBLS3D_mod.f index 017445db8..ba2261b99 100644 --- a/sorc/ncep_post.fd/VRBLS3D_mod.f +++ b/sorc/ncep_post.fd/VRBLS3D_mod.f @@ -1,88 +1,157 @@ -! 01-10-22 H CHUANG - MODIFIED TO PROCESS HYBRID MODEL OUTPUT -! 02-04-17 BALDWIN - MODIFIED TO INCLUDE ALL 3D ARRAYS -! 11-10-18 SARAH LU - MODIFIED TO INCLUDE AEROSOL OPTICAL PROPERTIES -! 11-12-15 SARAH LU - MODIFIED TO INCLUDE AEROSOL DIAG FIELDS -! 12-01-06 SARAH LU - MODIFIED TO INCLUDE AIR DENSITY AND LAYER THICKNESS -! 15-07-02 SARAH LU - MODIFIED TO INCLUDE SCATTERING AEROSOL OPTICAL THICKNESS -! 23-03-22 WM LEWIS - ADDED EFFECTIVE RADIUS ARRAYS -! 23-08-16 Yali Mao - Add CIT (Convectively-Induced Turbulence) for GTG4 +!> @file +!> @brief VRBLS3D declares 3D variables that are used throughout the UPP code +!> +!> ### Program history log: +!> Date | Programmer | Comments +!> -----|------------|--------- +!> 2001-10-22 | H CHUANG | MODIFIED TO PROCESS HYBRID MODEL OUTPUT +!> 2002-04-17 | BALDWIN | MODIFIED TO INCLUDE ALL 3D ARRAYS +!> 2011-10-18 | SARAH LU | MODIFIED TO INCLUDE AEROSOL OPTICAL PROPERTIES +!> 2011-12-15 | SARAH LU | MODIFIED TO INCLUDE AEROSOL DIAG FIELDS +!> 2012-01-06 | SARAH LU | MODIFIED TO INCLUDE AIR DENSITY AND LAYER THICKNESS +!> 2015-07-02 | SARAH LU | MODIFIED TO INCLUDE SCATTERING AEROSOL OPTICAL THICKNESS +!> 2023-03-22 | WM LEWIS | ADDED EFFECTIVE RADIUS ARRAYS +!> 2023-08-16 | Yali Mao | Add CIT (Convectively-Induced Turbulence) for GTG4 module vrbls3d !- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - implicit none ! - real, allocatable :: UH(:,:,:),VH(:,:,:),WH(:,:,:) & - ,U(:,:,:),V(:,:,:),T(:,:,:),Q(:,:,:) & - ,CWM(:,:,:),Q2(:,:,:),PMID(:,:,:),PMIDV(:,:,:) & - ,PINT(:,:,:),ALPINT(:,:,:),ZMID(:,:,:) & - ,ZINT(:,:,:),OMGA(:,:,:) & - ,T_ADJ(:,:,:) & - ,F_ice(:,:,:),F_rain(:,:,:),F_RimeF(:,:,:) & - ,QQW(:,:,:), QQI(:,:,:), QQR(:,:,:), QQS(:,:,:), QQG(:,:,:), QQH(:,:,:) & - ,QQNW(:,:,:), QQNI(:,:,:),QQNR(:,:,:),QC_BL(:,:,:), QRIMEF(:,:,:) & - ,CFR(:,:,:), DBZ(:,:,:), DBZR(:,:,:), DBZI(:,:,:), DBZC(:,:,:) & - ,TTND(:,:,:),RSWTT(:,:,:),RLWTT(:,:,:), REF_10CM(:,:,:) & - ,EXCH_H(:,:,:),TRAIN(:,:,:),TCUCN(:,:,:),EL_PBL(:,:,:) & - ,MCVG(:,:,:),EXTCOF55(:,:,:),NLICE(:,:,:),CFR_RAW(:,:,:) & + + real, allocatable :: UH(:,:,:) & !< U-component wind (U at P-points including 2 row halo) + ,VH(:,:,:) & !< V-component wind (V at P-points including 2 row halo) + ,WH(:,:,:) & !< Geometric vertical velocity + ,U(:,:,:) & !< U-component wind + ,V(:,:,:) & !< V-component wind + ,T(:,:,:) & !< Temperature + ,Q(:,:,:) & !< Specific humidity + ,CWM(:,:,:) & !< Total condensate mixing ratio + ,Q2(:,:,:) & !< Turbulence kinetic energy + ,PMID(:,:,:) & !< Mid-layer pressure + ,PMIDV(:,:,:) & !< Model midlayer for v-point just below the pressure level to which we are interpolating ? + ,PINT(:,:,:) & !< Model layer interface pressure + ,ALPINT(:,:,:) & !< _____? + ,ZMID(:,:,:) & !< Mid-layer height + ,ZINT(:,:,:) & !< Model layer interface height + ,OMGA(:,:,:) & !< Omega - vertical velocity + ,T_ADJ(:,:,:) & !< No longer used/supported; temperature adjustment factor? + ,F_ice(:,:,:) & !< Fraction of condensate in form of ice + ,F_rain(:,:,:) & !< Fraction of condensate in form of rain + ,F_RimeF(:,:,:) & !< Rime Factor - ratio of total ice growth to deposition growth + ,QQW(:,:,:) & !< cloud water mixing ratio + ,QQI(:,:,:) & !< ice mixing ratio + ,QQR(:,:,:) & !< rain mixing ratio + ,QQS(:,:,:) & !< snow mixing ratio + ,QQG(:,:,:) & !< graupel mixing ratio + ,QQH(:,:,:) & !< hail mixing ratio + ,QQNW(:,:,:) & !< cloud water number concentration + ,QQNI(:,:,:) & !< ice number concentration + ,QQNR(:,:,:) & !< rain number concentration + ,QC_BL(:,:,:) & !< cloud water mixing ratio in PBL schemes + ,QRIMEF(:,:,:) & !< rime factor * ice mixing ratio ? + ,CFR(:,:,:) & !< Instantaneous 3d cloud fraction + ,DBZ(:,:,:) & !< Radar reflectivity factor ? + ,DBZR(:,:,:) & !< Radar reflectivity factor from rain + ,DBZI(:,:,:) & !< Radar reflectivity factor from ice (all forms) + ,DBZC(:,:,:) & !< Radar reflectivity factor from parameterized convection + ,TTND(:,:,:) & !< Temperature tendency due to radiative flux convergence + ,RSWTT(:,:,:) & !< Temperature tendency due to shortwave radiation + ,RLWTT(:,:,:) & !< Temperature tendency due to longwave radiation + ,REF_10CM(:,:,:) & !< Reflectivity + ,EXCH_H(:,:,:) & !< Exchange coefficient + ,TRAIN(:,:,:) & !< Temperature tendency due to latent heating from grid scale + ,TCUCN(:,:,:) & !< Temperature tendency due to latent heating from convection + ,EL_PBL(:,:,:) & !< Mixing length ? + ,MCVG(:,:,:) & !< Moisture convergence + ,EXTCOF55(:,:,:) & !< Unified extinction ext550/Aerosol optical depth + ,NLICE(:,:,:) & !< Time-averaged number concentration of large ice + ,CFR_RAW(:,:,:) & !< Cloud fraction (unprocessed) !! Wm Lewis: added - ,NRAIN(:,:,:),EFFRI(:,:,:), EFFRL(:,:,:), EFFRS(:,:,:) & - ,radius_cloud(:,:,:),radius_ice(:,:,:),radius_snow(:,:,:) & + ,NRAIN(:,:,:) & !< Number concentration of rain drops + ,EFFRI(:,:,:) & !< Thompson scheme cloud ice effective radius (for RRFS) + ,EFFRL(:,:,:) & !< Thompson scheme cloud water effective radius (for RRFS) + ,EFFRS(:,:,:) & !< Thompson scheme snow effective radius (for RRFS) + ,radius_cloud(:,:,:) & !< Effective radius, cloud drops + ,radius_ice(:,:,:) & !< Effective radius, cloud ice + ,radius_snow(:,:,:) & !< Effective radius, snow ! KRS Add HWRF fields - ,REFL_10CM(:,:,:) & + ,REFL_10CM(:,:,:) & !< Reflectivity (for HWRF) ! Add GFS fields - ,O3(:,:,:),O(:,:,:),O2(:,:,:) & + ,O3(:,:,:) & !< Ozone mixing ratio + ,O(:,:,:) & !< Atomic oxygen mixing ratio ? + ,O2(:,:,:) & !< Molecular oxygen mixing ratio ? ! Add GFS D3D fields - ,vdifftt(:,:,:) & - ,tcucns(:,:,:) & - ,vdiffmois(:,:,:) & - ,dconvmois(:,:,:) & - ,sconvmois(:,:,:) & - ,nradtt(:,:,:) & - ,o3vdiff(:,:,:) & - ,o3prod(:,:,:) & - ,o3tndy(:,:,:) & - ,mwpv(:,:,:) & - ,unknown(:,:,:) & - ,vdiffzacce(:,:,:) & - ,zgdrag(:,:,:) & - ,cnvctummixing(:,:,:) & - ,vdiffmacce(:,:,:) & - ,mgdrag(:,:,:) & - ,cnvctvmmixing(:,:,:) & - ,ncnvctcfrac(:,:,:) & - ,cnvctumflx(:,:,:) & - ,cnvctdmflx(:,:,:) & - ,cnvctdetmflx(:,:,:) & - ,cnvctzgdrag(:,:,:) & - ,cnvctmgdrag(:,:,:) & - ,QQNWFA(:,:,:) & - ,QQNIFA(:,:,:) & - ,TAOD5503D(:,:,:) & - ,AEXTC55(:,:,:) & + ,vdifftt(:,:,:) & !< Vertical diffusion temperature tendency ? + ,tcucns(:,:,:) & !< Temperature tendency due to latent heating from (shallow?) convection ? + ,vdiffmois(:,:,:) & !< Vertical diffusion moistening rate ? + ,dconvmois(:,:,:) & !< Deep convective moistening rate ? + ,sconvmois(:,:,:) & !< Shallow convective moistening rate ? + ,nradtt(:,:,:) & !< Net radiation temperature tendency ? + ,o3vdiff(:,:,:) & !< Ozone vertical diffusion ? + ,o3prod(:,:,:) & !< Ozone production ? + ,o3tndy(:,:,:) & !< Ozone tendency ? + ,mwpv(:,:,:) & !< Mass-weighted potential vorticity ? + ,unknown(:,:,:) & !< _____? + ,vdiffzacce(:,:,:) & !< Vertical diffusion zonal acceleration ? + ,zgdrag(:,:,:) & !< Gravity wave drag zonal acceleration ? + ,cnvctummixing(:,:,:) & !< Convective zonal momentum mixing acceleration ? + ,vdiffmacce(:,:,:) & !< Vertical diffusion meridional acceleration ? + ,mgdrag(:,:,:) & !< Gravity wave drag meridional acceleration ? + ,cnvctvmmixing(:,:,:) & !< Convective meridional momentum mixing acceleration ? + ,ncnvctcfrac(:,:,:) & !< Non-convective cloud fraction (%) ? + ,cnvctumflx(:,:,:) & !< Convective updraft mass flux ? + ,cnvctdmflx(:,:,:) & !< Convective downdraft mass flux ? + ,cnvctdetmflx(:,:,:) & !< Convective detrainment mass flux ? + ,cnvctzgdrag(:,:,:) & !< Convective gravity wave drag zonal acceleration ? + ,cnvctmgdrag(:,:,:) & !< Convective gravity wave drag meridional acceleration ? + ,QQNWFA(:,:,:) & !< Water-friendly aerosol number concentration + ,QQNIFA(:,:,:) & !< Ice-friendly aerosol number concentration + ,TAOD5503D(:,:,:) & !< 3D aerosol optical depth at 550 nm + ,AEXTC55(:,:,:) & !< Aerosol extinction coefficient ! ! Add aerosol optical properties for GOCART (NGAC) - ,ext(:,:,:), asy(:,:,:) & - ,ssa(:,:,:), sca(:,:,:) & + ,ext(:,:,:) & !< aerosol extinction coefficient + ,asy(:,:,:) & !< asymmetry parameter + ,ssa(:,:,:) & !< single-scattering albedo + ,sca(:,:,:) & !< aerosol scattering coefficient ? ! Add aerosol diagnosis fields for GOCART (NGAC) - ,duem(:,:,:), dusd(:,:,:) & - ,dudp(:,:,:), duwt(:,:,:) & - ,dusv(:,:,:), sssv(:,:,:) & - ,suem(:,:,:), susd(:,:,:) & - ,sudp(:,:,:), suwt(:,:,:) & - ,ssem(:,:,:), sssd(:,:,:) & - ,ssdp(:,:,:), sswt(:,:,:) & - ,ocem(:,:,:), ocsd(:,:,:) & - ,ocdp(:,:,:), ocwt(:,:,:) & - ,ocsv(:,:,:), bcsv(:,:,:) & - ,bcem(:,:,:), bcsd(:,:,:) & - ,bcdp(:,:,:), bcwt(:,:,:) & + ,duem(:,:,:) & !< Dust emission fluxes + ,dusd(:,:,:) & !< Dust sedimentation fluxes + ,dudp(:,:,:) & !< Dust dry deposition fluxes + ,duwt(:,:,:) & !< Dust wet deposition fluxes + ,dusv(:,:,:) & !< Dust scavenging fluxes + ,sssv(:,:,:) & !< Seasalt scavenging fluxes + ,suem(:,:,:) & !< Sulfate emission mass flux + ,susd(:,:,:) & !< Sulfate sedimentation mass flux + ,sudp(:,:,:) & !< Sulfate dry deposition mass flux + ,suwt(:,:,:) & !< Sulfate wet deposition mass flux + ,ssem(:,:,:) & !< Seasalt emission fluxes + ,sssd(:,:,:) & !< Seasalt emission/sedimentation + ,ssdp(:,:,:) & !< Seasalt dry deposition fluxes + ,sswt(:,:,:) & !< Seasalt wet deposition fluxes + ,ocem(:,:,:) & !< Organic carbon emission fluxes + ,ocsd(:,:,:) & !< Organic carbon sedimentation fluxes + ,ocdp(:,:,:) & !< Organic carbon dry deposition fluxes + ,ocwt(:,:,:) & !< Organic carbon large wet deposition fluxes + ,ocsv(:,:,:) & !< Organic carbon convective wet deposition fluxes + ,bcsv(:,:,:) & !< Black carbon convective wet deposition fluxes + ,bcem(:,:,:) & !< Black carbon emission fluxes + ,bcsd(:,:,:) & !< Black carbon sedimentation fluxes + ,bcdp(:,:,:) & !< Black carbon dry deposition fluxes + ,bcwt(:,:,:) & !< Black carbon large wet deposition fluxes ! Add air density and thickness for GOCART (NGAC) - ,dpres(:,:,:),rhomid(:,:,:) & + ,dpres(:,:,:) & !< Layer thickness in pressure on hybrid levels + ,rhomid(:,:,:) & !< Air density rhomid ! Add NCAR GFIP ICING - ,icing_gfip(:,:,:),icing_gfis(:,:,:) & + ,icing_gfip(:,:,:) & !< Global Forecast Icing Potential + ,icing_gfis(:,:,:) & !< Global Forecast Icing Severity ! Add NCAR GTG turbulence - ,catedr(:,:,:),mwt(:,:,:),gtg(:,:,:),cit(:,:,:) & + ,catedr(:,:,:) & !< Clean air turbulence (CAT) eddy dissipation parameter (EDR) + ,mwt(:,:,:) & !< Mountain wave turbulence + ,gtg(:,:,:) & !< Graphical turbulence guidance + ,cit(:,:,:) & !< Convectively-induced turbulence ! AQF - ,avgozcon(:,:,:),avgpmtf(:,:,:) + ,avgozcon(:,:,:) & !< Average ozone concentration + ,avgpmtf(:,:,:) !< Average particulate matter (fine) end module vrbls3d diff --git a/sorc/ncep_post.fd/VRBLS4D_mod.f b/sorc/ncep_post.fd/VRBLS4D_mod.f index 17bc0f6ff..5e42bd9aa 100644 --- a/sorc/ncep_post.fd/VRBLS4D_mod.f +++ b/sorc/ncep_post.fd/VRBLS4D_mod.f @@ -1,23 +1,29 @@ -! 01-10-22 H CHUANG - MODIFIED TO PROCESS HYBRID MODEL OUTPUT -! 02-04-17 BALDWIN - MODIFIED TO INCLUDE ALL 3D ARRAYS -! 11-10-18 SARAH LU - MODIFIED TO INCLUDE GOCART AEROSOLS -! 22-09-18 Li(Kate) Zhang - MODIFIED TO INCLUDE new NASA GOCART AEROSOLS of NO3 and NH4 +!> @file +!> @brief VRBLS4D declares 4D variables that are used throughout the UPP code +!> +!> ### Program history log: +!> Date | Programmer | Comments +!> -----|------------|--------- +!> 2001-10-22 | H CHUANG | MODIFIED TO PROCESS HYBRID MODEL OUTPUT +!> 2002-04-17 | BALDWIN | MODIFIED TO INCLUDE ALL 3D ARRAYS +!> 2011-10-18 | SARAH LU | MODIFIED TO INCLUDE GOCART AEROSOLS +!> 2022-09-18 | Li(Kate) Zhang | MODIFIED TO INCLUDE new NASA GOCART AEROSOLS of NO3 and NH4 module vrbls4d !- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - implicit none ! - real, allocatable :: DUST(:,:,:,:) ! dust - real, allocatable :: SALT(:,:,:,:) ! sea salt - real, allocatable :: SOOT(:,:,:,:) ! black carbon - real, allocatable :: WASO(:,:,:,:) ! organic carbon - real, allocatable :: SUSO(:,:,:,:) ! sulfate - real, allocatable :: NO3(:,:,:,:) ! no3 - real, allocatable :: NH4(:,:,:,:) ! nh4 - real, allocatable :: SMOKE(:,:,:,:) - real, allocatable :: FV3DUST(:,:,:,:) - real, allocatable :: COARSEPM(:,:,:,:) - real, allocatable :: EBB(:,:,:,:) - real, allocatable :: PP25(:,:,:,:) ! PP25 - real, allocatable :: PP10(:,:,:,:) ! PP10 + real, allocatable :: DUST(:,:,:,:) !< dust + real, allocatable :: SALT(:,:,:,:) !< sea salt + real, allocatable :: SOOT(:,:,:,:) !< black carbon + real, allocatable :: WASO(:,:,:,:) !< organic carbon + real, allocatable :: SUSO(:,:,:,:) !< sulfate + real, allocatable :: NO3(:,:,:,:) !< no3 + real, allocatable :: NH4(:,:,:,:) !< nh4 + real, allocatable :: SMOKE(:,:,:,:) !< smoke + real, allocatable :: FV3DUST(:,:,:,:) !< FV3 dust + real, allocatable :: COARSEPM(:,:,:,:) !< coarse dust particulate matter (PM) from RRFS + real, allocatable :: EBB(:,:,:,:) !< Biomass burning emissions + real, allocatable :: PP25(:,:,:,:) !< PP25 - fine particulate matter + real, allocatable :: PP10(:,:,:,:) !< PP10 - particulate matter < 10 microns in diameter ! end module vrbls4d diff --git a/sorc/ncep_post.fd/WRFPOST.F b/sorc/ncep_post.fd/WRFPOST.F index 1c778d6ab..396326ee7 100644 --- a/sorc/ncep_post.fd/WRFPOST.F +++ b/sorc/ncep_post.fd/WRFPOST.F @@ -33,8 +33,7 @@ !> 2022-11-08 | K Wang | Replace aqfamaq_on with aqf_on !> 2023-01-24 | Sam Trahan | write_ifi_debug_files flag for IFI debug capability !> 2023-03-21 | Jesse Meng | Add slrutah_on option to use U Utah SLR -!> 2023-04-04 | Li(Kate Zhang) |Add namelist optoin for CCPP-Chem (UFS-Chem) -! and 2D diag. output (d2d_chem) for GEFS-Aerosols and CCPP-Chem model. +!> 2023-04-04 | Li(Kate Zhang) |Add namelist optoin for CCPP-Chem (UFS-Chem) and 2D diag. output (d2d_chem) for GEFS-Aerosols and CCPP-Chem model. !> 2023-05-20 | Rahul Mahajan | Bug fix for fileNameFlat as namelist configurable !> 2023-08-16 | Yali Mao | Add gtg_on logical option !> 2023-11-29 | Eric James | Add method_blsn logical option diff --git a/sorc/ncep_post.fd/ZENSUN.f b/sorc/ncep_post.fd/ZENSUN.f index 1d9461f20..c46a94b44 100644 --- a/sorc/ncep_post.fd/ZENSUN.f +++ b/sorc/ncep_post.fd/ZENSUN.f @@ -1,8 +1,7 @@ !> @file -!> zensun() makes sun zenith and sun azimuth angle. +!> @brief zensun() makes sun zenith and sun azimuth angle. !> !> @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. !> @@ -44,7 +43,14 @@ !> !> 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 +!------------------------------------------------------------------------------------- +!> @brief Makes sun zenith and sun azimuth angle. !> @param[in] day integer Julian day (positive scalar or vector), (spring equinox = 80), (summer solstice= 171), (fall equinox = 266), (winter solstice= 356). !> @param[in] time real Universal Time in hours (scalar or vector). !> @param[in] lat real Geographic latitude of point on earth's surface (degrees). @@ -52,13 +58,6 @@ !> @param[in] pi real The mathematical constant pi. !> @param[out] sun_zenith real Solar zenith angle. !> @param[out] sun_azimuth real Solar azimuth angle. -!> -!> ### 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) ! diff --git a/sorc/ncep_post.fd/cuparm.f b/sorc/ncep_post.fd/cuparm.f index 2de97b119..5c3e56c34 100644 --- a/sorc/ncep_post.fd/cuparm.f +++ b/sorc/ncep_post.fd/cuparm.f @@ -1,26 +1,55 @@ +!> @file +!> @brief cuparm_mod defines variables used for cumulus parameterization module cuparm_mod -! + implicit none -! - real,parameter :: H1=1.E0,H1D5=1.5E0,H2D5=2.5E0,H3000=3000.E0, & - H10E5=100000.E0,D00=0.E0,D125=.125E0,D50=.5E0,D608=.608E0, & - G=9.8E0,CP=1004.6E0,CAPA=0.28589641E0,ROG=287.04/9.8, & - ELWV=2.50E6,ELIVW=2.72E6,ROW=1.E3,EPSQ=2.E-12, & - A2=17.2693882E0,A3=273.16E0,A4=35.86E0, & - T0=273.16E0,T1=274.16E0,PQ0=379.90516E0,STRESH=1.10E0, & - STABS=1.0E0,STABD=.90E0,STABFC=1.00E0,DTTOP=0.0E0, & + + real, parameter :: H1=1.E0, & !< 1.0 + H1D5=1.5E0, & !< 1.5 + H2D5=2.5E0, & !< 2.5 + H3000=3000.E0, & !< 3000 + H10E5=100000.E0, & !< 100,000 + D00=0.E0, & !< Decimal number 0 + D125=.125E0, & !< Decimal number 0.125 + D50=.5E0, & !< Decimal number 0.5 + D608=.608E0, & !< Decimal number 0.608 + G=9.8E0, & !< Acceleration due to gravity + CP=1004.6E0, & !< Specific heat capacity of dry air at constant pressure (kJ/kg-K) + CAPA=0.28589641E0, & !< R/Cp (universal gas constant over specific heat capacity of dry air at constant pressure) + ROG=287.04/9.8, & !< RD over G - Gas constant for dry air divided by acceleration due to gravity + ELWV=2.50E6, & !< Latent heat of vaporization of water + ELIVW=2.72E6, & !< Latent heat of vaporization of water in J/kg, used in calculations involving energy transfer during evaporation + ROW=1.E3, & !< Density (rho) of water + EPSQ=2.E-12, & !< Minimum q (specific humidity) for computing precipitation type ? + A2=17.2693882E0, & !< Constant used to parameterize specific humidity at 2m in WRFPOST: qs=pq0/p*exp(a2*(t-a3)/(t-a4)) + A3=273.16E0, & !< Constant used to parameterize specific humidity at 2m in WRFPOST: qs=pq0/p*exp(a2*(t-a3)/(t-a4)) + A4=35.86E0, & !< Constant used to parameterize specific humidity at 2m in WRFPOST: qs=pq0/p*exp(a2*(t-a3)/(t-a4)) + T0=273.16E0, & !< Triple point of water (K) + T1=274.16E0, & !< 1 degree above triple point of water (K) + PQ0=379.90516E0, & !< Constant used to parameterize specific humidity at 2m in WRFPOST: qs=pq0/p*exp(a2*(t-a3)/(t-a4)) + STRESH=1.10E0, & !< No longer used/supported + STABS=1.0E0, & !< No longer used/supported + STABD=.90E0, & !< No longer used/supported + STABFC=1.00E0, & !< No longer used/supported + DTTOP=0.0E0, & !< No longer used/supported !---VVVVV - RHF=0.10,EPSUP=1.00,EPSDN=1.05,EPSTH=0.0, & - PBM=13000.,PQM=20000.,PNO=1000.,PONE=2500.,ZSH=2000., & - PFRZ=15000.,PSHU=45000., & + RHF=0.10, & !< No longer used/supported (Relative humidity factor) + EPSUP=1.00, & !< No longer used/supported + EPSDN=1.05, & !< No longer used/supported + EPSTH=0.0, & !< No longer used/supported + PBM=13000., & !< _____? + PQM=20000., & !< No longer used/supported + PNO=1000., & !< No longer used/supported + PONE=2500., & !< _____? + ZSH=2000., & !< No longer used/supported + PFRZ=15000., & !< _____? + PSHU=45000., & !< No longer used/supported -! &, RHF=0.20,EPSUP=0.93,EPSDN=1.00,EPSTH=0.3 -! &, RHF=0.20,EPSUP=1.00,EPSDN=1.00,EPSTH=0.3 !AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ! ! AUGUST '91: SCHEME HAVING THE OPTION OF USING DIFFERENT FAST AND ! SLOW PROFILES FOR SEA AND FOR LAND POINTS; AND ALSO THE "SEA" AND -! THE "LAND" SCHEME EVERYWHERE. OVER LAND PROFILES DEPART FROM THE +! THE "LAND" SCHEME EVERYWHERE. OVER LAND PROFILES DEPART FROM THE ! FAST (DRY) PROFILES ONLY FOR PRECIPITATION/TIME STEP > ! A PRESCRIBED VALUE (CURRENTLY, IN THE VERSION #3 DONE WEDNESDAY ! 18 SEPTEMBER, 1/4 INCH/24 H). USE OF VARIOUS SWITCHES AS FOLLOWS. @@ -45,7 +74,11 @@ module cuparm_mod ! * SETTING OCT90=.TRUE. ! (WITH THESE SETTINGS FAST LAND PROFILES ONLY ARE USED). ! FM - FSS=.85E0,EFIMN=.20E0,EFMNT=.70E0,FCC=.50,FCP=H1-FCC, & + FSS=.85E0, & !< Factor to obtain “slow” profiles over the sea ? + EFIMN=.20E0, & !< Minimum convective cloud efficiency + EFMNT=.70E0, & !< _____? + FCC=.50, & !< _____? + FCP=H1-FCC, & !< _____? ! ! IN THIS VERSION 3.5, OVER LAND AND FOR THE FAST PROFILES, DSPB ! IS PRESCRIBED TO BE 25 PERCENT DRIER THAN THE FAST SEA VALUE @@ -55,13 +88,30 @@ module cuparm_mod ! AVERAGE OF THE FAST AND THE SLOW LAND PROFILES SOMEWHAT DRIER ! THAN THE OCT90 FIXED LAND PROFILES. FM ! - DSPBFL=-4843.75E0,DSP0FL=-7050.00E0,DSPTFL=-2250.0E0,FSL=.850E0, & +!> Deficit Saturation Pressure (DSP) +!> DSPB = cloud base +!> DSP0 = freezing level +!> DSPT = cloud top +! + DSPBFL=-4843.75E0, & !< Deficit Saturation Pressure (DSP) at cloud base - fast land ? + DSP0FL=-7050.00E0, & !< Deficit Saturation Pressure (DSP) at freezing level - fast land ? + DSPTFL=-2250.0E0, & !< Deficit Saturation Pressure (DSP) at cloud top - fast land ? + FSL=.850E0, & !< Factor to obtain "slow" profiles over land ? !*** ACTIVATE THE FOLLOWING LINE IF OCT90=.TRUE. (AND COMMENT OUT THE !*** PRECEDING LINE): -! DSPBFL=-3875.E0,DSP0FL=-5875.E0,DSPTFL=-1875.E0,FSL=1.0E0, & - DSPBFS=-3875.E0,DSP0FS=-5875.E0,DSPTFS=-1875.E0, & - DSPBSL=DSPBFL*FSL,DSP0SL=DSP0FL*FSL,DSPTSL=DSPTFL*FSL, & - DSPBSS=DSPBFS*FSS,DSP0SS=DSP0FS*FSS,DSPTSS=DSPTFS*FSS, & +! DSPBFL=-3875.E0, & !< Deficit Saturation Pressure (DSP) at cloud base - fast land ? +! DSP0FL=-5875.E0, & !< Deficit Saturation Pressure (DSP) at freezing level - fast land ? +! DSPTFL=-1875.E0, & !< Deficit Saturation Pressure (DSP) at cloud top - fast land ? +! FSL=1.0E0, & !< Factor to obtain "slow" profiles over land ? + DSPBFS=-3875.E0, & !< Deficit Saturation Pressure (DSP) at cloud base - fast sea ? + DSP0FS=-5875.E0, & !< Deficit Saturation Pressure (DSP) at freezing level - fast sea ? + DSPTFS=-1875.E0, & !< Deficit Saturation Pressure (DSP) at cloud top - fast sea ? + DSPBSL=DSPBFL*FSL, & !< Deficit Saturation Pressure (DSP) at cloud base - slow land ? + DSP0SL=DSP0FL*FSL, & !< Deficit Saturation Pressure (DSP) at freezing level - slow land ? + DSPTSL=DSPTFL*FSL, & !< Deficit Saturation Pressure (DSP) at cloud top - slow land ? + DSPBSS=DSPBFS*FSS, & !< Deficit Saturation Pressure (DSP) at cloud base - slow sea ? + DSP0SS=DSP0FS*FSS, & !< Deficit Saturation Pressure (DSP) at freezing level - slow sea ? + DSPTSS=DSPTFS*FSS, & !< Deficit Saturation Pressure (DSP) at cloud top - slow sea ? !*** NEW CONVECTION SCHEME WITH CROSSING DSP PROFILES ****************** !+- &, UNIS=.FALSE.,EFIMN=.71E0,EFMNT=.71,FCC=0.5,FCP=H1-FCC !+- &, DSPBL=-3875.E0,DSP0L=-5875.E0,DSPTL=-1875.E0 @@ -73,22 +123,31 @@ module cuparm_mod ! &, DSPBF=-3875.E0,DSP0F=-5875.E0,DSPTF=-1875.E0 ! &, DSPBS=-3875.E0,DSP0S=-5875.E0,DSPTS=-1875.E0 !*********************************************************************** - TREL=3000.,EPSNTP=.0010E0,EFIFC=5.0E0, & - AVGEFI=(EFIMN+1.E0)*.5E0,DSPC=-3000.E0,EPSP=1.E-7, & - STEFI=1.E0, & + TREL=3000., & !< Relaxation time + EPSNTP=.0010E0, & !< No longer used/supported + EFIFC=5.0E0, & !< No longer used/supported + AVGEFI=(EFIMN+1.E0)*.5E0, & !< Average cloud efficiency + DSPC=-3000.E0, & !< No longer used/supported + EPSP=1.E-7, & !< No longer used/supported + STEFI=1.E0, & !< Starting efficiency (EFI) !*** ACTIVATE THE FOLLOWING LINE AND COMMENT OUT THE PRECEDING LINE IF !*** OCT90=.TRUE. -! &, STEFI=AVGEFI - SLOPBL=(DSPBFL-DSPBSL)/(H1-EFIMN), & - SLOP0L=(DSP0FL-DSP0SL)/(H1-EFIMN), & - SLOPTL=(DSPTFL-DSPTSL)/(H1-EFIMN), & - SLOPBS=(DSPBFS-DSPBSS)/(H1-EFIMN), & - SLOP0S=(DSP0FS-DSP0SS)/(H1-EFIMN), & - SLOPTS=(DSPTFS-DSPTSS)/(H1-EFIMN), & - SLOPE=(H1 -EFMNT)/(H1-EFIMN) - real, parameter :: & - A23M4L=A2*(A3-A4)*ELWV, & - ELOCP=ELIVW/CP,CPRLG=CP/(ROW*G*ELWV),RCP=H1/CP - logical,parameter :: & - UNIS=.FALSE.,UNIL=.FALSE.,OCT90=.FALSE. +! STEFI=AVGEFI, & + SLOPBL=(DSPBFL-DSPBSL)/(H1-EFIMN), & !< Slope - cloud base over land ? + SLOP0L=(DSP0FL-DSP0SL)/(H1-EFIMN), & !< Slope - freezing level over land ? + SLOPTL=(DSPTFL-DSPTSL)/(H1-EFIMN), & !< Slope - cloud top over land ? + SLOPBS=(DSPBFS-DSPBSS)/(H1-EFIMN), & !< Slope - cloud base over sea ? + SLOP0S=(DSP0FS-DSP0SS)/(H1-EFIMN), & !< Slope - freezing level over sea ? + SLOPTS=(DSPTFS-DSPTSS)/(H1-EFIMN), & !< Slope - cloud top over sea ? + SLOPE=(H1 -EFMNT)/(H1-EFIMN) !< Slope ? + real, parameter :: & + A23M4L=A2*(A3-A4)*ELWV, & !< Coefficient derived from A2, A3, A4, and ELWV + ELOCP=ELIVW/CP, & !< ELIVW over CP + CPRLG=CP/(ROW*G*ELWV), & !< Ratio of CP to product of water density, acceleration due to gravity, and latent heat of vaporization of water + RCP=H1/CP !< Reciprocal of CP (1/CP) + logical,parameter :: & + UNIS=.FALSE., & !< _____? + UNIL=.FALSE., & !< _____? + OCT90=.FALSE. !< Flag to activate old Zavisa Oct 1990 land scheme with fixed land profiles end module cuparm_mod + diff --git a/sorc/ncep_post.fd/grib2_module.f b/sorc/ncep_post.fd/grib2_module.f index ef8a3db88..8908fa185 100644 --- a/sorc/ncep_post.fd/grib2_module.f +++ b/sorc/ncep_post.fd/grib2_module.f @@ -1,19 +1,18 @@ +!> @file +!> @brief This module generates grib2 messages and writes out the messages in parallel. +!> +!> ### Program history log: +!> Date | Programmer | Comments +!> -----|------------|--------- +!> March 2010 | Jun Wang | Initial code +!> January 2012 | Jun Wang | post available fields with grib2 description are defined in xml file +!> March 2015 | Lin Gan | Replace XML file with flat file implementation with parameter marshalling +!> July 2021 | Jesse Meng | 2D decomsition +!> June 2022 | Lin Zhu | Change the dx/dy to reading in from calculating for latlon grid +!> January 2023 | Sam Trahan | Foot & meter unit conversions for IFI +!------------------------------------------------------------------------- module grib2_module -!------------------------------------------------------------------------ -! -! This module generates grib2 messages and writes out the messages in -! parallel. -! -! program log: -! March, 2010 Jun Wang Initial code -! Jan, 2012 Jun Wang post available fields with grib2 description -! are defined in xml file -! March, 2015 Lin Gan Replace XML file with flat file implementation -! with parameter marshalling -! July, 2021 Jesse Meng 2D decomsition -! June, 2022 Lin Zhu change the dx/dy to reading in from calculating for latlon grid -! January, 2023 Sam Trahan foot&meter Unit conversions for IFI -!------------------------------------------------------------------------ +! use xml_perl_data, only: param_t,paramset_t ! implicit none @@ -78,11 +77,11 @@ module grib2_module ! character(len=50) :: type_derived_fcst='' ! type(param_t), dimension(:), pointer :: param => null() ! end type paramset_t - type(paramset_t),save :: pset + type(paramset_t),save :: pset !< parameter set ! !--- grib2 info related to a specific data file - integer nrecout - integer num_pset + integer nrecout !< Number of records to output + integer num_pset !< Number of parameter sets ? integer isec,hrs_obs_cutoff,min_obs_cutoff integer sec_intvl,stat_miss_val,time_inc_betwn_succ_fld integer perturb_num,num_ens_fcst,prob_num,tot_num_prob @@ -95,7 +94,7 @@ module grib2_module integer,parameter :: MAX_NUMBIT=16 integer,parameter :: lugi=650 character*255 fl_nametbl,fl_gdss3 - logical :: first_grbtbl + logical :: first_grbtbl !< _____? ! public num_pset,pset,nrecout,gribit2,grib_info_init,first_grbtbl,grib_info_finalize,read_grib2_head,read_grib2_sngle real(8), EXTERNAL :: timef @@ -104,15 +103,13 @@ module grib2_module contains ! !------------------------------------------------------------------------------------- +!> @brief Initializes general grib2 information and local variables subroutine grib_info_init() -! -!--- initialize general grib2 information and ! implicit none ! ! logical,intent(in) :: first_grbtbl ! -!-- local variables integer ierr character(len=80) outfile character(len=10) envvar @@ -185,10 +182,8 @@ subroutine grib_info_init() end subroutine grib_info_init !------------------------------------------------------------------------------------- !------------------------------------------------------------------------------------- -! +!> @brief Finalizes GRIB2 information and closes the file. subroutine grib_info_finalize -! -!--- finalize grib2 information and close file ! implicit none ! @@ -198,10 +193,9 @@ subroutine grib_info_finalize ! end subroutine grib_info_finalize !------------------------------------------------------------------------------------- -!------------------------------------------------------------------------------------- +!> @brief Outputs fields to grib file +!> @param[in] post_fname UPP file name subroutine gribit2(post_fname) -! -!------- use ctlblk_mod, only : im,jm,im_jm,num_procs,me,ista,iend,jsta,jend,ifhr,sdat,ihrst,imin, & mpi_comm_comp,ntlfld,fld_info,datapd,icnt,idsp implicit none @@ -491,7 +485,7 @@ end subroutine gribit2 ! !---------------------------------------------------------------------------------------- !---------------------------------------------------------------------------------------- -! +!> @brief Generates grib2 message subroutine gengrb2msg(idisc,icatg, iparm,nprm,nlvl,fldlvl1,fldlvl2,ntrange,tinvstat, & datafld1,cgrib,lengrib,level_unit_conversion) ! @@ -1003,7 +997,8 @@ subroutine gengrb2msg(idisc,icatg, iparm,nprm,nlvl,fldlvl1,fldlvl2,ntrange,tinvs ! !---------- ! idrstmpl array is the output from g2sec5 -! +!> @brief Gets GRIB2 Section 5 packing method +!> See GRIB2 data representation information: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_sect5.shtml call get_g2_sec5packingmethod(pset%packing_method,idrsnum,ierr) if(maxval(datafld1)==minval(datafld1))then idrsnum=0 @@ -1098,10 +1093,16 @@ end subroutine gengrb2msg ! ! E. JAMES: 10 JUN 2021 - Adding section to read in GRIB2 files for comparison ! within UPP. Two new subroutines added below. -! +!> @brief Reads in GRIB2 file header information +!> @param[in] filenameG2 Grib 2 file name +!> @param[out] nx Total number of grid points along x +!> @param[out] ny Total number of grid points along y +!> @param[out] nz Total number of grid points along z (vertical) +!> @param[out] rlonmin Westernmost longitude of the subdomain to extract (negative in Western hemisphere; in degrees) _____? +!> @param[out] rlatmax Northernmost latitude of the subdomain to extract (in degrees) _____? +!> @param[out] rdx Inverse x grid length +!> @param[out] rdy Inverse y grid length subroutine read_grib2_head(filenameG2,nx,ny,nz,rlonmin,rlatmax,rdx,rdy) -! -!--- read grib2 file head information ! use grib_mod implicit none @@ -1184,7 +1185,7 @@ subroutine read_grib2_head(filenameG2,nx,ny,nz,rlonmin,rlatmax,rdx,rdy) ! write(*,*) 'listsec0=',listsec0 ! write(*,*) 'listsec1=',listsec1 ! write(*,*) 'numfields=',numfields -! get information form grib2 file +! get information from grib2 file n=1 call gf_getfld(cgrib,lengrib,n,.FALSE.,expand,gfld,ierr) year =gfld%idsect(6) !(FOUR-DIGIT) YEAR OF THE DATA @@ -1248,10 +1249,12 @@ subroutine read_grib2_head(filenameG2,nx,ny,nz,rlonmin,rlatmax,rdx,rdy) end subroutine read_grib2_head ! !--- -! +!> @brief Reads GRIB2 files +!> @param[in] filenameG2 Grib 2 file name +!> @param[in] ntot Total count of variables ? +!> @param[out] height _____? +!> @param[out] var Array of variables subroutine read_grib2_sngle(filenameG2,ntot,height,var) -! -!--- read grib2 files ! use grib_mod implicit none @@ -1448,7 +1451,8 @@ subroutine read_grib2_sngle(filenameG2,ntot,height,var) end subroutine read_grib2_sngle ! !---------------------------------------------------------------------------------------- -! +!> @brief g2sec3tmpl40() Gets grid definition section (Section 3 of the WMO GRIB2 Standards) ? +!> See https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_sect3.shtml subroutine g2sec3tmpl40(nx,nY,lat1,lon1,lat2,lon2,lad,ds1,len3,igds,ifield3) implicit none ! @@ -1492,7 +1496,7 @@ subroutine g2sec3tmpl40(nx,nY,lat1,lon1,lat2,lon2,lad,ds1,len3,igds,ifield3) end subroutine g2sec3tmpl40 ! !------------------------------------------------------------------------------------- -! +!> @brief g2getbits() Compute the total number of bits subroutine g2getbits(MXBIT,ibm,scl,len,bmap,g,ibs,ids,nbits) !$$$ ! This subroutine is changed from w3 lib getbit to compute the total number of bits, @@ -1662,11 +1666,9 @@ subroutine g2getbits(MXBIT,ibm,scl,len,bmap,g,ibs,ids,nbits) END subroutine g2getbits ! !------------------------------------------------------------------------------------- -! +!> @brief getgds() Set up Grid Description Section (GDS) kpds (Product Definition Section?) to call Boi's code ? subroutine getgds(ldfgrd,len3,ifield3len,igds,ifield3) -! -!***** set up gds kpds to call Boi's code -! + use CTLBLK_mod, only : im,jm,gdsdegr,modelname use gridspec_mod, only: DXVAL,DYVAL,CENLAT,CENLON,LATSTART,LONSTART,LATLAST, & & LONLAST,MAPTYPE,STANDLON,latstartv,cenlatv,lonstartv, & diff --git a/sorc/ncep_post.fd/gtg_filter.F90 b/sorc/ncep_post.fd/gtg_filter.F90 index 0af041b1a..3dc603b2a 100644 --- a/sorc/ncep_post.fd/gtg_filter.F90 +++ b/sorc/ncep_post.fd/gtg_filter.F90 @@ -1,5 +1,8 @@ +!> @file +!> @brief Contains stub code for GTG protection that makes public UPP work module gtg_filter contains +!> @brief Stub code for GTG protection that makes public UPP work subroutine filt3d() implicit none print *, "Stub code for GTG protection but to make UPP public to work" diff --git a/sorc/ncep_post.fd/gtg_indices.F90 b/sorc/ncep_post.fd/gtg_indices.F90 index eff35708e..4a41b5119 100644 --- a/sorc/ncep_post.fd/gtg_indices.F90 +++ b/sorc/ncep_post.fd/gtg_indices.F90 @@ -1,5 +1,8 @@ +!> @file +!> @brief Contains stub code for GTG protection that makes public UPP work module gtg_indices contains +!> @brief Stub code for GTG protection that makes public UPP work subroutine indices_gtg() implicit none print *, "Stub code for GTG protection but to make UPP public to work" diff --git a/sorc/ncep_post.fd/gtg_read_config.F90 b/sorc/ncep_post.fd/gtg_read_config.F90 index 910261fcf..99decd291 100644 --- a/sorc/ncep_post.fd/gtg_read_config.F90 +++ b/sorc/ncep_post.fd/gtg_read_config.F90 @@ -1,5 +1,8 @@ +!> @file +!> @brief Contains stub code for GTG protection that makes public UPP work module gtg_config contains +!> @brief Stub code for GTG protection that makes public UPP work subroutine gtg_read_config() implicit none print *, "Stub code for GTG protection but to make UPP public to work" diff --git a/sorc/ncep_post.fd/intio_tags.f b/sorc/ncep_post.fd/intio_tags.f index d9e296b3a..d043d3931 100644 --- a/sorc/ncep_post.fd/intio_tags.f +++ b/sorc/ncep_post.fd/intio_tags.f @@ -1,42 +1,44 @@ +!> @file +!> @brief intio_tags_mod defines variables related to integer input/output + module intio_tags_mod -! -!- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + implicit none ! - INTEGER, PARAMETER :: int_ioexit = 10 - INTEGER, PARAMETER :: int_open_for_write_begin = 20 - INTEGER, PARAMETER :: int_open_for_write_commit = 30 - INTEGER, PARAMETER :: int_open_for_read = 40 - INTEGER, PARAMETER :: int_intio_nextrec = 50 - INTEGER, PARAMETER :: int_inquire_opened = 60 - INTEGER, PARAMETER :: int_inquire_filename = 70 - INTEGER, PARAMETER :: int_iosync = 80 - INTEGER, PARAMETER :: int_ioclose = 90 - INTEGER, PARAMETER :: int_next_time = 100 - INTEGER, PARAMETER :: int_set_time = 110 - INTEGER, PARAMETER :: int_next_var = 120 - INTEGER, PARAMETER :: int_dom_ti_real = 140 - INTEGER, PARAMETER :: int_dom_ti_double = 160 - INTEGER, PARAMETER :: int_dom_ti_integer = 180 - INTEGER, PARAMETER :: int_dom_ti_logical = 200 - INTEGER, PARAMETER :: int_dom_ti_char = 220 - INTEGER, PARAMETER :: int_dom_td_real = 240 - INTEGER, PARAMETER :: int_dom_td_double = 260 - INTEGER, PARAMETER :: int_dom_td_integer = 280 - INTEGER, PARAMETER :: int_dom_td_logical = 300 - INTEGER, PARAMETER :: int_dom_td_char = 320 - INTEGER, PARAMETER :: int_var_ti_real = 340 - INTEGER, PARAMETER :: int_var_ti_double = 360 - INTEGER, PARAMETER :: int_var_ti_integer = 380 - INTEGER, PARAMETER :: int_var_ti_logical = 400 - INTEGER, PARAMETER :: int_var_ti_char = 420 - INTEGER, PARAMETER :: int_var_td_real = 440 - INTEGER, PARAMETER :: int_var_td_double = 460 - INTEGER, PARAMETER :: int_var_td_integer = 480 - INTEGER, PARAMETER :: int_var_td_logical = 500 - INTEGER, PARAMETER :: int_var_td_char = 520 - INTEGER, PARAMETER :: int_field = 530 - INTEGER, PARAMETER :: int_var_info = 540 - INTEGER, PARAMETER :: int_noop = 550 + INTEGER, PARAMETER :: int_ioexit =10 !< Assigns ID 10 to int_ioexit - exit + INTEGER, PARAMETER :: int_open_for_write_begin =20 !< Assigns ID 20 to int_open_for_write_begin - open for write operation + INTEGER, PARAMETER :: int_open_for_write_commit =30 !< Assigns ID 30 to int_open_for_write_commit - open for write operation & commit + INTEGER, PARAMETER :: int_open_for_read =40 !< Assigns ID 40 to int_open_for_read - open for read + INTEGER, PARAMETER :: int_intio_nextrec =50 !< Assigns ID 50 to int_intio_nextrec - next record request + INTEGER, PARAMETER :: int_inquire_opened =60 !< Assigns ID 60 to int_inquire_opened - check if opened + INTEGER, PARAMETER :: int_inquire_filename =70 !< Assigns ID 70 to int_inquire_filename - filename request + INTEGER, PARAMETER :: int_iosync =80 !< Assigns ID 80 to int_iosync - sync data in buffer ? + INTEGER, PARAMETER :: int_ioclose =90 !< Assigns ID 90 to int_ioclose - close + INTEGER, PARAMETER :: int_next_time =100 !< Assigns ID 100 to int_next_time - get next timestamp + INTEGER, PARAMETER :: int_set_time =110 !< Assigns ID 110 to int_set_time - set time request + INTEGER, PARAMETER :: int_next_var =120 !< Assigns ID 120 to int_next_var - next variable request + INTEGER, PARAMETER :: int_dom_ti_real =140 !< Assigns ID 140 to int_dom_ti_real - time-independent domain metadata - real type + INTEGER, PARAMETER :: int_dom_ti_double =160 !< Assigns ID 160 to int_dom_ti_double - time-independent domain metadata - double type + INTEGER, PARAMETER :: int_dom_ti_integer =180 !< Assigns ID 180 to int_dom_ti_integer - time-independent domain metadata - integer type + INTEGER, PARAMETER :: int_dom_ti_logical =200 !< Assigns ID 200 to int_dom_ti_logical - time-independent domain metadata - logical/boolean type + INTEGER, PARAMETER :: int_dom_ti_char =220 !< Assigns ID 220 to int_dom_ti_char - time-independent domain metadata - character type + INTEGER, PARAMETER :: int_dom_td_real =240 !< Assigns ID 240 to int_dom_td_real - time-dependent domain metadata - real type + INTEGER, PARAMETER :: int_dom_td_double =260 !< Assigns ID 260 to int_dom_td_double - time-dependent domain metadata - double type + INTEGER, PARAMETER :: int_dom_td_integer =280 !< Assigns ID 280 to int_dom_td_integer - time-dependent domain metadata - integer type + INTEGER, PARAMETER :: int_dom_td_logical =300 !< Assigns ID 300 to int_dom_td_logical - time-dependent domain metadata - logical/boolean type + INTEGER, PARAMETER :: int_dom_td_char =320 !< Assigns ID 320 to int_dom_td_char - time-dependent domain metadata - character type + INTEGER, PARAMETER :: int_var_ti_real =340 !< Assigns ID 340 to int_var_ti_real - time-independent variable metadata - real type + INTEGER, PARAMETER :: int_var_ti_double =360 !< Assigns ID 360 to int_var_ti_double - time-independent variable metadata - double type + INTEGER, PARAMETER :: int_var_ti_integer =380 !< Assigns ID 380 to int_var_ti_integer - time-independent variable metadata - integer type + INTEGER, PARAMETER :: int_var_ti_logical =400 !< Assigns ID 400 to int_var_ti_logical - time-independent variable metadata - logical/boolean type + INTEGER, PARAMETER :: int_var_ti_char =420 !< Assigns ID 420 to int_var_ti_char - time-independent variable metadata - character type + INTEGER, PARAMETER :: int_var_td_real =440 !< Assigns ID 440 to int_var_td_real - time-dependent variable metadata - real type + INTEGER, PARAMETER :: int_var_td_double =460 !< Assigns ID 460 to int_var_td_double - time-dependent variable metadata - double type + INTEGER, PARAMETER :: int_var_td_integer =480 !< Assigns ID 480 to int_var_td_integer - time-dependent variable metadata - integer type + INTEGER, PARAMETER :: int_var_td_logical =500 !< Assigns ID 500 to int_var_td_logical - time-dependent variable metadata - logical/boolean type + INTEGER, PARAMETER :: int_var_td_char =520 !< Assigns ID 520 to int_var_td_char - time-dependent variable metadata - character type + INTEGER, PARAMETER :: int_field =530 !< Assigns ID 530 to int_field - write field request + INTEGER, PARAMETER :: int_var_info =540 !< Assigns ID 540 to int_var_info - variable info request ? + INTEGER, PARAMETER :: int_noop =550 !< Assigns ID 550 to int_noop - do nothing/no operation request end module intio_tags_mod diff --git a/sorc/ncep_post.fd/machine.f b/sorc/ncep_post.fd/machine.f index d2d3468fc..372b54bfc 100644 --- a/sorc/ncep_post.fd/machine.f +++ b/sorc/ncep_post.fd/machine.f @@ -1,14 +1,20 @@ +!> @file +!> @brief MACHINE_POST defines machine-dependent constants MODULE MACHINE_POST IMPLICIT NONE SAVE -! Machine dependant constants - integer kind_io4,kind_io8,kind_phys,kind_rad + + integer kind_io4 & !< 4-byte I/O variables ? + ,kind_io8 & !< 8-byte I/O variables ? + ,kind_phys & !< Physics variables ? + ,kind_rad & !< Radiation variables ? + ,kint_mpi !< MPI variables ? + parameter (kind_rad = selected_real_kind(13,60)) ! the '60' maps to 64-bit real parameter (kind_phys = selected_real_kind(13,60)) ! the '60' maps to 64-bit real parameter (kind_io4 = 4) parameter (kind_io8 = 8) - integer kint_mpi parameter (kint_mpi = 4) END MODULE MACHINE_POST diff --git a/sorc/ncep_post.fd/params.F b/sorc/ncep_post.fd/params.F index 5e5e58dbc..76f214ee8 100644 --- a/sorc/ncep_post.fd/params.F +++ b/sorc/ncep_post.fd/params.F @@ -1,117 +1,118 @@ +!> @file +!> @brief params_mod defines physical constants and smoothing coefficients module params_mod !- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - implicit none ! -! file: params.f -! defines physical constants and smoothing coefficients ! last update: 09/06/2006 ! ! SMOOTHING PARAMETERS. - integer, parameter :: KSMUD=4 - integer, parameter :: KSLPD=1 - integer, parameter :: KSSLP=2 - integer, parameter :: KSFI=2 - integer, parameter :: KST=2 - integer, parameter :: KSUV=2 - integer, parameter :: KSRH=2 - integer, parameter :: KSAV=2 - integer, parameter :: KSLI=2 - integer, parameter :: KSLP=2 - integer, parameter :: NSUMD=1 + integer, parameter :: KSMUD=4 !< No longer used/supported + integer, parameter :: KSLPD=1 !< No longer used/supported + integer, parameter :: KSSLP=2 !< No longer used/supported + integer, parameter :: KSFI=2 !< No longer used/supported + integer, parameter :: KST=2 !< No longer used/supported + integer, parameter :: KSUV=2 !< No longer used/supported + integer, parameter :: KSRH=2 !< No longer used/supported + integer, parameter :: KSAV=2 !< No longer used/supported + integer, parameter :: KSLI=2 !< No longer used/supported + integer, parameter :: KSLP=2 !< No longer used/supported + integer, parameter :: NSUMD=1 !< No longer used/supported - real, parameter :: SMTHA=-1.8E-4 - real, parameter :: SMTHB=16.0 + real, parameter :: SMTHA=-1.8E-4 !< No longer used/supported + real, parameter :: SMTHB=16.0 !< No longer used/supported ! ! CONSTANTS. - real, parameter :: CM1=2937.4 - real, parameter :: CM2=4.9283 - real, parameter :: CM3=23.5518 - real, parameter :: D00=0.0 - real, parameter :: D1=0.1 - real, parameter :: D01=0.01 - real, parameter :: D001=0.001 - real, parameter :: D50=0.50 - real, parameter :: H999=999. - real, parameter :: H1=1.0 - real, parameter :: H2=2.0 - real, parameter :: H4=4.0 - real, parameter :: H99999=99999. - real, parameter :: H1M12=1.E-12 - real, parameter :: H1000=1000. - real, parameter :: H1M5=1.E-5 - real, parameter :: D125=.125 - real, parameter :: D25=0.25 - real, parameter :: H100=100. - real, parameter :: H10000=10000. - real, parameter :: H10E5=1.E5 - real, parameter :: CAPA=0.28589641E0 - real, parameter :: D115=0.115 - real, parameter :: D608=0.608 - real, parameter :: D05=0.05 - real, parameter :: D0065=0.0065 - real, parameter :: H1E2=100. - real, parameter :: H1E4=1.E4 - real, parameter :: H1M2=1.E-2 - real, parameter :: G=9.81 - real, parameter :: RD=287.04 - real, parameter :: ROG=RD/G - real, parameter :: GI=1./G - real, parameter :: OVERRC=1.10 - real, parameter :: AD05=OVERRC*D05 - real, parameter :: CFT0=OVERRC-H1 - real, parameter :: PI=3.141592653589793 - real, parameter :: DTR=3.1415926/180. - real, parameter :: RTD=1./DTR - real, parameter :: ERAD=6.371E6 - real, parameter :: CP=1004.6 - real, parameter :: RCAPA=1./CAPA - real, parameter :: P1000=1000.E2,DP10M=110 - real, parameter :: ELWV=2.50E6 - real, parameter :: CPDR=CP/RD - real, parameter :: RG=1./GI - real, parameter :: ELDR=ELWV/RD - real, parameter :: BETA=.00367 - real, parameter :: BTG=BETA*G - real, parameter :: FMW=18.015 - real, parameter :: FMD=28.964 - real, parameter :: EPS=FMW/FMD - real, parameter :: ONEPS=1.-EPS - real, parameter :: TFRZ=273.15 - real, parameter :: RDOCP=RD/CP - real, parameter :: LHEAT=2.5E6 - real, parameter :: LHTOCP=LHEAT/CP - real, parameter :: EPSQ2=0.02 - real, parameter :: PQ0=379.90516 - real, parameter :: A2=17.2693882 - real, parameter :: A3=273.16 - real, parameter :: A4=35.86 - real, parameter :: EPSQ=1.E-12 + real, parameter :: CM1=2937.4 !< Constant used in Magnus Formula to calculate saturation water vapor pressure + real, parameter :: CM2=4.9283 !< Constant used in Magnus Formula to calculate saturation water vapor pressure + real, parameter :: CM3=23.5518 !< Constant used in Magnus Formula to calculate saturation water vapor pressure + real, parameter :: D00=0.0 !< Decimal form of 0 + real, parameter :: D1=0.1 !< Decimal number - one tenth + real, parameter :: D01=0.01 !< Decimal number - one hundreth + real, parameter :: D001=0.001 !< Decimal number - one thousandth + real, parameter :: D50=0.50 !< Decimal number 0.5 + real, parameter :: H999=999. !< 999 + real, parameter :: H1=1.0 !< 1.0 + real, parameter :: H2=2.0 !< 2.0 + real, parameter :: H4=4.0 !< 4.0 + real, parameter :: H99999=99999. !< 99999 + real, parameter :: H1M12=1.E-12 !< 1 * 10^(-12) + real, parameter :: H1000=1000. !< 1000 + real, parameter :: H1M5=1.E-5 !< 1/100000 == 0.00001 + real, parameter :: D125=.125 !< Decimal number 0.125 + real, parameter :: D25=0.25 !< Decimal number 0.25 + real, parameter :: H100=100. !< 100 + real, parameter :: H10000=10000. !< 10000 + real, parameter :: H10E5=1.E5 !< 100000 + real, parameter :: CAPA=0.28589641E0 !< R/Cp (universal gas constant over specific heat capacity of dry air at constant pressure) + real, parameter :: D115=0.115 !< Decimal number 0.125 + real, parameter :: D608=0.608 !< Decimal number 0.608 + real, parameter :: D05=0.05 !< Decimal number 0.05 + real, parameter :: D0065=0.0065 !< Decimal number 0.0065 + real, parameter :: H1E2=100. !< No longer used/supported + real, parameter :: H1E4=1.E4 !< No longer used/supported + real, parameter :: H1M2=1.E-2 !< No longer used/supported + real, parameter :: G=9.81 !< Acceleration due to gravity + real, parameter :: RD=287.04 !< Gas constant for dry air + real, parameter :: ROG=RD/G !< RD over G + real, parameter :: GI=1./G !< Inverse of acceleration due to gravity + real, parameter :: OVERRC=1.10 !< Overrelaxation coefficient + real, parameter :: AD05=OVERRC*D05 !< Overrelaxation coefficient * 0.05 + real, parameter :: CFT0=OVERRC-H1 !< A constant calculated by subtracting H1 from OVERRC + real, parameter :: PI=3.141592653589793 !< Pi + real, parameter :: DTR=3.1415926/180. !< Degrees to radians conversion + real, parameter :: RTD=1./DTR !< Radians to degrees conversion + real, parameter :: ERAD=6.371E6 !< Earth's radius in meters + real, parameter :: CP=1004.6 !< Specific heat capacity of dry air at constant pressure (kJ/kg-K) + real, parameter :: RCAPA=1./CAPA !< Reciprocal of CAPA + real, parameter :: P1000=1000.E2 !< 100,000 + real, parameter :: DP10M=110 !< No longer used/supported + real, parameter :: ELWV=2.50E6 !< Latent heat of vaporization of water in J/kg + real, parameter :: CPDR=CP/RD !< CP over RD + real, parameter :: RG=1./GI !< Reciprocal of GI (equal to G) + real, parameter :: ELDR=ELWV/RD !< No longer used/supported + real, parameter :: BETA=.00367 !< Thermal expansion coefficient of air + real, parameter :: BTG=BETA*G !< Beta times acceleration due to gravity + real, parameter :: FMW=18.015 !< Mean molecular mass of wet air + real, parameter :: FMD=28.964 !< Mean molecular mass of dry air + real, parameter :: EPS=FMW/FMD !< Ratio of dry air to water vapor gas constants + real, parameter :: ONEPS=1.-EPS !< _____ Represents the complement of the ratio of molecular weights of water vapor to dry air ? + real, parameter :: TFRZ=273.15 !< Freezing temperature of water + real, parameter :: RDOCP=RD/CP !< RD over CP + real, parameter :: LHEAT=2.5E6 !< Latent heat + real, parameter :: LHTOCP=LHEAT/CP !< Latent heat over CP + real, parameter :: EPSQ2=0.02 !< Minimum value of turbulent kinetic energy (m2 s^-2) ? + real, parameter :: PQ0=379.90516 !< Constant used to parameterize specific humidity at 2m in WRFPOST: qs=pq0/p*exp(a2*(t-a3)/(t-a4)) + real, parameter :: A2=17.2693882 !< Constant used to parameterize specific humidity at 2m in WRFPOST: qs=pq0/p*exp(a2*(t-a3)/(t-a4)) + real, parameter :: A3=273.16 !< Constant used to parameterize specific humidity at 2m in WRFPOST: qs=pq0/p*exp(a2*(t-a3)/(t-a4)) + real, parameter :: A4=35.86 !< Constant used to parameterize specific humidity at 2m in WRFPOST: qs=pq0/p*exp(a2*(t-a3)/(t-a4)) + real, parameter :: EPSQ=1.E-12 !< Minimum q (specific humidity) for computing precipitation type #ifdef GSDRAPR - real, parameter :: QCLDmin=1.E-6 ! was 1.E-6 + real, parameter :: QCLDmin=1.E-6 !< Minimum cloud mixing ratio - was 1.E-6 #else - real, parameter :: QCLDmin=1.E-5 ! was 1.E-6 + real, parameter :: QCLDmin=1.E-5 !< Minimum cloud mixing ratio - was 1.E-6 #endif - real, parameter :: CLFRmin=D1 - real, parameter :: NLImin=1.E3 + real, parameter :: CLFRmin=D1 !< Minimum cloud fraction + real, parameter :: NLImin=1.E3 !< Minimum number concentrations (m**-3) of large ice (snow/graupel/sleet) ! move definition of NLImax and T_ICE to MICROINIT 2012012018 ! real, parameter :: NLImax=5.E3 ! real, parameter :: T_ICE=-30. ! real, parameter :: TRAD_ice=0.5*T_ICE+TFRZ - real, parameter :: Qconv=0.1E-3 + real, parameter :: Qconv=0.1E-3 !< Heat transfer coefficient of convection _____? ! - real, parameter :: STBOL=1./5.67E-8 - real, parameter :: DBZmin=-20. - real, parameter :: abscoef=8.0 - real, parameter :: abscoefi=5.0 - real, parameter :: XLAI=4.0 ! Leaf area index - real, parameter :: RHmin=1.0E-6 ! minimal RH bound - real, parameter :: SMALL=1.E-6 + real, parameter :: STBOL=1./5.67E-8 !< 1 over Stefan-Boltzmann constant (W m^-2 deg^-4) + real, parameter :: DBZmin=-20. !< Minimum detectable radar reflectivity + real, parameter :: abscoef=8.0 !< Cloud water absorption coefficient + real, parameter :: abscoefi=5.0 !< Cloud ice absorption coefficient + real, parameter :: XLAI=4.0 !< Leaf area index + real, parameter :: RHmin=1.0E-6 !< minimal RH bound + real, parameter :: SMALL=1.E-6 !< _____? ! real, parameter :: PTHRESH=0.000000 - real, parameter :: ELIVW=2.72E6 - real, parameter :: ELOCP=ELIVW/CP + real, parameter :: ELIVW=2.72E6 !< Latent heat of vaporization of water in J/kg, used in calculations involving energy transfer during evaporation + real, parameter :: ELOCP=ELIVW/CP !< ELIVW over CP ! - real, parameter :: GAMMA=6.5E-3 - real, parameter :: RGAMOG=RD*GAMMA/G + real, parameter :: GAMMA=6.5E-3 !< Gamma - constant for lapse rate in troposphere + real, parameter :: RGAMOG=RD*GAMMA/G !< Gas constant for dry air times gamma over acceleration due to gravity end module params_mod diff --git a/sorc/ncep_post.fd/physcons.f b/sorc/ncep_post.fd/physcons.f index 126c993c8..7c3773677 100644 --- a/sorc/ncep_post.fd/physcons.f +++ b/sorc/ncep_post.fd/physcons.f @@ -1,3 +1,6 @@ +!> @file +!> @brief physcons_post declares physical constants used throughout UPP code. +!> module physcons_post use machine_post,only:kind_phys !- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -8,36 +11,37 @@ module physcons_post ! 1990/04/30: g and rd are made consistent with NWS usage. ! 2001/10/22: g made consistent with SI usage. ! Math constants -! real(kind=kind_phys),parameter:: con_pi =3.141593e+0 ! pi - real(kind=kind_phys),parameter:: con_pi =4.0d0*atan(1.0d0) - real(kind=kind_phys),parameter:: con_sqrt2 =1.414214e+0_kind_phys ! square root of 2 - real(kind=kind_phys),parameter:: con_sqrt3 =1.732051e+0_kind_phys ! square root of 3 -! Primary constants - real(kind=kind_phys),parameter:: con_rerth =6.3712e+6_kind_phys ! radius of earth (m) - real(kind=kind_phys),parameter:: con_g =9.80665e+0_kind_phys! gravity (m/s2) - real(kind=kind_phys),parameter:: con_omega =7.2921e-5_kind_phys ! ang vel of earth (1/s) - real(kind=kind_phys),parameter:: con_rd =2.8705e+2_kind_phys ! gas constant air (J/kg/K) - real(kind=kind_phys),parameter:: con_rv =4.6150e+2_kind_phys ! gas constant H2O (J/kg/K) - real(kind=kind_phys),parameter:: con_cp =1.0046e+3_kind_phys ! spec heat air @p (J/kg/K) - real(kind=kind_phys),parameter:: con_cv =7.1760e+2_kind_phys ! spec heat air @v (J/kg/K) - real(kind=kind_phys),parameter:: con_cvap =1.8460e+3_kind_phys ! spec heat H2O gas (J/kg/K) - real(kind=kind_phys),parameter:: con_cliq =4.1855e+3_kind_phys ! spec heat H2O liq (J/kg/K) - real(kind=kind_phys),parameter:: con_csol =2.1060e+3_kind_phys ! spec heat H2O ice (J/kg/K) - real(kind=kind_phys),parameter:: con_hvap =2.5000e+6_kind_phys ! lat heat H2O cond (J/kg) - real(kind=kind_phys),parameter:: con_hfus =3.3358e+5_kind_phys ! lat heat H2O fusion (J/kg) - real(kind=kind_phys),parameter:: con_psat =6.1078e+2_kind_phys ! pres at H2O 3pt (Pa) - real(kind=kind_phys),parameter:: con_sbc =5.6730e-8_kind_phys ! stefan-boltzmann (W/m2/K4) - real(kind=kind_phys),parameter:: con_solr =1.3533e+3_kind_phys ! solar constant (W/m2) - real(kind=kind_phys),parameter:: con_t0c =2.7315e+2_kind_phys ! temp at 0C (K) - real(kind=kind_phys),parameter:: con_ttp =2.7316e+2_kind_phys ! temp at H2O 3pt (K) -! Secondary constants - real(kind=kind_phys),parameter:: con_rocp =con_rd/con_cp - real(kind=kind_phys),parameter:: con_cpor =con_cp/con_rd - real(kind=kind_phys),parameter:: con_rog =con_rd/con_g - real(kind=kind_phys),parameter:: con_fvirt =con_rv/con_rd-1. - real(kind=kind_phys),parameter:: con_eps =con_rd/con_rv - real(kind=kind_phys),parameter:: con_epsm1 =con_rd/con_rv-1. - real(kind=kind_phys),parameter:: con_dldt =con_cvap-con_cliq - real(kind=kind_phys),parameter:: con_xpona =-con_dldt/con_rv - real(kind=kind_phys),parameter:: con_xponb =-con_dldt/con_rv+con_hvap/(con_rv*con_ttp) +! real(kind=kind_phys),parameter:: con_pi =3.141593e+0 !< pi + real(kind=kind_phys),parameter:: con_pi =4.0d0*atan(1.0d0) !< pi + real(kind=kind_phys),parameter:: con_sqrt2 =1.414214e+0_kind_phys !< square root of 2 + real(kind=kind_phys),parameter:: con_sqrt3 =1.732051e+0_kind_phys !< square root of 3 +!> Primary constants + real(kind=kind_phys),parameter:: con_rerth =6.3712e+6_kind_phys !< radius of earth (m) + real(kind=kind_phys),parameter:: con_g =9.80665e+0_kind_phys!< acceleration due to gravity (m/s2) + real(kind=kind_phys),parameter:: con_omega =7.2921e-5_kind_phys !< angular vel of earth (1/s) + real(kind=kind_phys),parameter:: con_rd =2.8705e+2_kind_phys !< gas constant dry air (J/kg/K) + real(kind=kind_phys),parameter:: con_rv =4.6150e+2_kind_phys !< gas constant H2O (J/kg/K) + real(kind=kind_phys),parameter:: con_cp =1.0046e+3_kind_phys !< specific heat dry air at constant pressure (J/kg/K) + real(kind=kind_phys),parameter:: con_cv =7.1760e+2_kind_phys !< specific heat dry air at constant volume (J/kg/K) + real(kind=kind_phys),parameter:: con_cvap =1.8460e+3_kind_phys !< specific heat H2O gas (J/kg/K) + real(kind=kind_phys),parameter:: con_cliq =4.1855e+3_kind_phys !< specific heat H2O liquid (J/kg/K) + real(kind=kind_phys),parameter:: con_csol =2.1060e+3_kind_phys !< specific heat H2O ice (J/kg/K) + real(kind=kind_phys),parameter:: con_hvap =2.5000e+6_kind_phys !< latent heat H2O condensation (J/kg) + real(kind=kind_phys),parameter:: con_hfus =3.3358e+5_kind_phys !< latent heat H2O fusion (J/kg) + real(kind=kind_phys),parameter:: con_psat =6.1078e+2_kind_phys !< pressure at H2O triple point (Pa) + real(kind=kind_phys),parameter:: con_sbc =5.6730e-8_kind_phys !< stefan-boltzmann constant (W/m2/K4) + real(kind=kind_phys),parameter:: con_solr =1.3533e+3_kind_phys !< solar constant (W/m2) + real(kind=kind_phys),parameter:: con_t0c =2.7315e+2_kind_phys !< temp at 0C (K) + real(kind=kind_phys),parameter:: con_ttp =2.7316e+2_kind_phys !< temp at H2O triple point (K) + +!> Secondary constants + real(kind=kind_phys), parameter :: con_rocp = con_rd / con_cp !< Rd/Cp -- Gas constant for dry air over specific heat of dry air at constant pressure + real(kind=kind_phys), parameter :: con_cpor = con_cp / con_rd !< Cp/Rd -- Specific heat of dry air at constant pressure over gas constant for dry air + real(kind=kind_phys), parameter :: con_rog = con_rd / con_g !< Rd/g -- Gas constant for dry air over acceleration due to gravity + real(kind=kind_phys), parameter :: con_fvirt = con_rv / con_rd - 1. !< Rv/Rd -- Virtual temperature correction factor - Gas constant for H2O over gas constant for dry air minus 1 + real(kind=kind_phys), parameter :: con_eps = con_rd / con_rv !< Epsilon -- Rd/Rv - ratio of gas constant of dry air to gas constant of water vapor + real(kind=kind_phys), parameter :: con_epsm1 = con_rd / con_rv - 1. !< Epsilon minus 1 + real(kind=kind_phys), parameter :: con_dldt = con_cvap - con_cliq !< Difference in specific heat between water vapor and liquid H2O + real(kind=kind_phys), parameter :: con_xpona = con_dldt / con_rv !< Dldt/Rv + real(kind=kind_phys), parameter :: con_xponb = -con_dldt / con_rv + con_hvap / (con_rv * con_ttp) !< -dldt/Rv + hvap/(Rv*Ttp) end module diff --git a/sorc/ncep_post.fd/svptbl.f b/sorc/ncep_post.fd/svptbl.f index 9b143d710..b31efe2f4 100644 --- a/sorc/ncep_post.fd/svptbl.f +++ b/sorc/ncep_post.fd/svptbl.f @@ -1,11 +1,16 @@ +!> @file +!> @brief SVPTBL declares variables related to saturation vapor pressure tables module svptbl_mod !--------------------------------------------------------------------- implicit none ! - integer,PARAMETER :: NX=7501 - real C1XPVS0,C2XPVS0 - real C1XPVS,C2XPVS - real TBPVS(NX),TBPVS0(NX) + integer,PARAMETER :: NX=7501 !< Table length + real C1XPVS0 !< Coefficient 1 for saturation vapor pressure in TBPVS0 + real C2XPVS0 !< Coefficient 2 for saturation vapor pressure in TBPVS0 + real C1XPVS !< Coefficient 1 for saturation vapor pressure in TBPVS + real C2XPVS !< Coefficient 2 for saturation vapor pressure in TBPVS + real TBPVS(NX) !< Table of saturation vapor pressure values + real TBPVS0(NX) !< Table of saturation vapor pressure values ! end module svptbl_mod diff --git a/sorc/ncep_post.fd/wrf_io_flags.f b/sorc/ncep_post.fd/wrf_io_flags.f index fbd773e52..a7221893e 100644 --- a/sorc/ncep_post.fd/wrf_io_flags.f +++ b/sorc/ncep_post.fd/wrf_io_flags.f @@ -1,12 +1,14 @@ +!> @file +!> @brief wrf_io_flags declares variables related to WRF input/output. module wrf_io_flags_mod implicit none - integer, parameter :: WRF_FILE_NOT_OPENED = 100 - integer, parameter :: WRF_FILE_OPENED_NOT_COMMITTED = 101 - integer, parameter :: WRF_FILE_OPENED_AND_COMMITTED = 102 - integer, parameter :: WRF_FILE_OPENED_FOR_READ = 103 - integer, parameter :: WRF_REAL = 104 - integer, parameter :: WRF_REAL8 = 105 - integer, parameter :: WRF_INTEGER = 106 - integer, parameter :: WRF_LOGICAL = 107 + integer, parameter :: WRF_FILE_NOT_OPENED = 100 !< Assigns ID 100 to WRF_FILE_NOT_OPENED + integer, parameter :: WRF_FILE_OPENED_NOT_COMMITTED = 101 !< Assigns ID 101 to WRF_FILE_OPENED_NOT_COMMITTED + integer, parameter :: WRF_FILE_OPENED_AND_COMMITTED = 102 !< Assigns ID 102 to WRF_FILE_OPENED_AND_COMMITTED + integer, parameter :: WRF_FILE_OPENED_FOR_READ = 103 !< Assigns ID 103 to WRF_FILE_OPENED_FOR_READ + integer, parameter :: WRF_REAL = 104 !< Assigns ID 104 to WRF_REAL + integer, parameter :: WRF_REAL8 = 105 !< Assigns ID 105 to WRF_REAL8 + integer, parameter :: WRF_INTEGER = 106 !< Assigns ID 106 to WRF_INTEGER + integer, parameter :: WRF_LOGICAL = 107 !< Assigns ID 107 to WRF_LOGICAL end module wrf_io_flags_mod diff --git a/sorc/ncep_post.fd/xml_perl_data.f b/sorc/ncep_post.fd/xml_perl_data.f index d2f4146e1..69e1ae105 100644 --- a/sorc/ncep_post.fd/xml_perl_data.f +++ b/sorc/ncep_post.fd/xml_perl_data.f @@ -1,30 +1,33 @@ module xml_perl_data !------------------------------------------------------------------------ -! -! This module read in Perl XML processed flat file and -! handle parameter marshalling for existing POST program -! -! program log: -! March, 2015 Lin Gan Initial Code -! July, 2016 J. Carley Clean up prints -! +!> @file +!> @brief This module reads in Perl XML processed flat file and +!> handles parameter marshalling for existing POST program +!> +!> ### Program history log: +!> Date | Programmer | Comments +!> -----|------------|--------- +!> March, 2015 | Lin Gan | Initial Code +!> July, 2016 | J. Carley | Clean up prints +!> !------------------------------------------------------------------------ -!> @defgroup xml_perl_data_mod Sets parameters that are used to read in -!> Perl XML processed flat file and handle parameter marshalling for -!> existing POST program. +!> @defgroup xml_perl_data_mod xml_perl_data +!> Sets parameters that are used to read in +!! Perl XML processed flat file and handle parameter marshalling for +!! existing POST program. ! implicit none ! !> @ingroup xml_perl_data_mod !> @{ Parameters that are used to read in Perl XML processed flat file -!> and handle parameter marshalling for existing POST program. +!! and handle parameter marshalling for existing POST program. integer :: NFCST,NBC,LIST,IOUT,NTSTM, & NRADS,NRADL,NDDAMP,IDTAD,NBOCO,NSHDE,NCP,IMDLTY !> @} !> @ingroup xml_perl_data_mod !> @{ Parameters that are used to read in Perl XML processed flat file -!> and handle parameter marshalling for existing POST program. +!! and handle parameter marshalling for existing POST program. type param_t integer :: post_avblfldidx=-9999 character(len=80) :: shortname='' @@ -64,7 +67,11 @@ module xml_perl_data character(len=20) :: stat_unit_time_key_succ='' character(len=20) :: bit_map_flag='' end type param_t +!> @} +!> @ingroup xml_perl_data_mod +!> @{ Parameters that are used to read in Perl XML processed flat file +!! and handle parameter marshalling for existing POST program. type paramset_t character(len=6) :: datset='' integer :: grid_num=255 @@ -85,7 +92,7 @@ module xml_perl_data !> @} !> @ingroup xml_perl_data_mod !> @{ Parameters that are used to read in Perl XML processed flat file -!> and handle parameter marshalling for existing POST program. +!! and handle parameter marshalling for existing POST program. character(len=50) :: type_ens_fcst='' character(len=50) :: type_derived_fcst='' type(param_t), dimension(:), pointer :: param => null() @@ -93,15 +100,20 @@ module xml_perl_data !> @} !> @ingroup xml_perl_data_mod !> @{ Parameters that are used to read in Perl XML processed flat file -!> and handle parameter marshalling for existing POST program. +!! and handle parameter marshalling for existing POST program. type post_avblfld_t type(param_t), dimension(:), pointer :: param => null() end type post_avblfld_t +!> @} +!> @ingroup xml_perl_data_mod +!> @{ Parameters that are used to read in Perl XML processed flat file +!! and handle parameter marshalling for existing POST program. type (paramset_t), dimension(:), pointer :: paramset type (post_avblfld_t),save :: post_avblflds !> @} contains +!> @brief Reads in and processes the postxconfig file subroutine read_postxconfig() use rqstfld_mod,only: num_post_afld,MXLVL,lvlsxml @@ -163,7 +175,6 @@ subroutine read_postxconfig() ! allocate array size from param for current paramset ! filter_char_inp is to check if "?" is found ! then replace to empty string because it means no input. - read(22,*)paramset(i)%datset call filter_char_inp(paramset(i)%datset) @@ -331,7 +342,8 @@ subroutine read_postxconfig() end subroutine read_postxconfig - +!> @brief Checks parameter set to see whether "?" is found and, if so, replaces it with an empty string because it means no input. +!> @param[inout] inpchar Input character subroutine filter_char_inp (inpchar) implicit none character, intent(inout) :: inpchar diff --git a/tests/logs/rt.log.HERA b/tests/logs/rt.log.HERA index 3b6cb6793..dcdbeca0c 100644 --- a/tests/logs/rt.log.HERA +++ b/tests/logs/rt.log.HERA @@ -1,69 +1,69 @@ ===== Start of UPP Regression Testing Log ===== UPP Hash Tested: -c07f26d786ce4408d12d370e579366dc0f06cc02 +8490516b147f7c939b8618d9f4c75ed9e373bcb2 Submodule hashes: -1ba8270870947b583cd51bc72ff8960f4c1fb36e sorc/libIFI.fd -567edcc94bc418d0dcd6cdaafed448eeb5aab570 sorc/ncep_post.fd/post_gtg.fd -Run directory: /scratch2/NAGAPE/epic/Fernando.Andrade-maldonado/regression-tests/upp/984/UPP/ci/rundir/upp-HERA +Run directory: /scratch2/NAGAPE/epic/Fernando.Andrade-maldonado/regression-tests/upp/965/UPP/ci/rundir/upp-HERA Baseline directory: /scratch2/NAGAPE/epic/UPP/test_suite -Total runtime: 00h:15m:18s -Test Date: 20240703 19:34:38 +Total runtime: 00h:15m:24s +Test Date: 20240708 14:57:28 Summary Results: -07/03 19:23:12Z -fv3gefs pe test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk -07/03 19:23:55Z -fv3hafs test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk -07/03 19:24:01Z -rap test: your new post executable generates bit-identical WRFPRS.GrbF16 as the trunk -07/03 19:24:03Z -rap test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk -07/03 19:24:20Z -hrrr pe test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk -07/03 19:24:21Z -fv3gefs test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk -07/03 19:24:22Z -hrrr pe test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk -07/03 19:24:24Z -hrrr pe test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk -07/03 19:24:34Z -rtma pe test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk -07/03 19:24:37Z -rtma pe test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk -07/03 19:24:38Z -rtma pe test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk -07/03 19:24:39Z -fv3hafs pe test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk -07/03 19:25:48Z -nmmb test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk -07/03 19:25:50Z -nmmb test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk -07/03 19:25:51Z -nmmb test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk -07/03 19:26:02Z -fv3r test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk -07/03 19:26:05Z -nmmb pe test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk -07/03 19:26:06Z -fv3r test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk -07/03 19:26:07Z -nmmb pe test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk -07/03 19:26:07Z -nmmb pe test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk -07/03 19:26:08Z -fv3r pe test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk -07/03 19:26:14Z -fv3r pe test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk -07/03 19:26:18Z -hrrr test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk -07/03 19:26:20Z -hrrr test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk -07/03 19:26:21Z -hrrr test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk -07/03 19:26:25Z -rtma test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk -07/03 19:26:29Z -rtma test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk -07/03 19:26:29Z -rtma test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk -07/03 19:26:43Z -rap pe test: your new post executable did generate changed results in WRFPRS.GrbF16 -07/03 19:26:45Z -rap pe test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk -07/03 19:34:07Z gfs_post_00.3101429-fv3gfs test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk -07/03 19:34:08Z gfs_post_00.3101429-fv3gfs test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk -07/03 19:34:08Z gfs_post_00.3101429-fv3gfs test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk -07/03 19:34:31Z gfs_post_00.907284-fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk -07/03 19:34:33Z gfs_post_00.907284-fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk -07/03 19:34:33Z gfs_post_00.907284-fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk -07/03 19:25:57Z -Runtime: nmmb_test 00:01:26 -- baseline 00:01:00 -07/03 19:26:12Z -Runtime: nmmb_pe_test 00:00:42 -- baseline 00:01:00 -07/03 19:26:12Z -Runtime: fv3gefs_test 00:00:17 -- baseline 00:40:00 -07/03 19:26:13Z -Runtime: fv3gefs_pe_test 00:00:31 -- baseline 00:40:00 -07/03 19:26:14Z -Runtime: rap_test 00:01:10 -- baseline 00:02:00 -07/03 19:26:59Z -Runtime: rap_pe_test 00:01:20 -- baseline 00:02:00 -07/03 19:27:00Z -Runtime: hrrr_test 00:02:23 -- baseline 00:02:00 -07/03 19:27:00Z -Runtime: hrrr_pe_test 00:02:07 -- baseline 00:02:00 -07/03 19:34:19Z -Runtime: fv3gfs_test 00:11:57 -- baseline 00:15:00 -07/03 19:34:35Z -Runtime: fv3gfs_pe_test 00:11:53 -- baseline 00:15:00 -07/03 19:34:35Z -Runtime: fv3r_test 00:01:37 -- baseline 00:03:00 -07/03 19:34:36Z -Runtime: fv3r_pe_test 00:01:45 -- baseline 00:03:00 -07/03 19:34:37Z -Runtime: fv3hafs_test 00:00:38 -- baseline 00:03:00 -07/03 19:34:37Z -Runtime: fv3hafs_pe_test 00:00:41 -- baseline 00:03:00 -07/03 19:34:38Z -Runtime: rtma_test 00:01:48 -- baseline 00:03:00 -07/03 19:34:38Z -Runtime: rtma_test_pe_test 00:01:57 -- baseline +07/08 14:45:43Z -fv3gefs pe test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk +07/08 14:45:44Z -fv3gefs test: your new post executable generates bit-identical geaer.t00z.master.grb2f060 as the trunk +07/08 14:45:54Z -fv3hafs test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk +07/08 14:45:55Z -fv3hafs pe test: your new post executable generates bit-identical HURPRS09.tm00 as the trunk +07/08 14:46:17Z -rap test: your new post executable generates bit-identical WRFPRS.GrbF16 as the trunk +07/08 14:46:19Z -rap test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk +07/08 14:46:36Z -rap pe test: your new post executable did generate changed results in WRFPRS.GrbF16 +07/08 14:46:36Z -rap pe test: your new post executable generates bit-identical WRFNAT.GrbF16 as the trunk +07/08 14:46:40Z -rtma pe test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk +07/08 14:46:43Z -rtma pe test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk +07/08 14:46:43Z -rtma pe test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk +07/08 14:46:44Z -nmmb pe test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk +07/08 14:46:46Z -nmmb pe test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk +07/08 14:46:47Z -nmmb pe test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk +07/08 14:46:50Z -nmmb test: your new post executable generates bit-identical BGDAWP03.tm00.Grib2 as the trunk +07/08 14:46:51Z -fv3r test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk +07/08 14:46:51Z -nmmb test: your new post executable generates bit-identical BGRD3D03.tm00.Grib2 as the trunk +07/08 14:46:51Z -nmmb test: your new post executable generates bit-identical BGRDSF03.tm00.Grib2 as the trunk +07/08 14:46:54Z -rtma test: your new post executable generates bit-identical NATLEV00.tm00 as the trunk +07/08 14:46:56Z -fv3r test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk +07/08 14:46:57Z -rtma test: your new post executable generates bit-identical PRSLEV00.tm00 as the trunk +07/08 14:46:58Z -rtma test: your new post executable generates bit-identical IFIFIP00.tm00 as the trunk +07/08 14:46:59Z -fv3r pe test: your new post executable generates bit-identical PRSLEV10.tm00 as the trunk +07/08 14:47:04Z -fv3r pe test: your new post executable generates bit-identical NATLEV10.tm00 as the trunk +07/08 14:47:20Z -hrrr pe test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk +07/08 14:47:21Z -hrrr pe test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk +07/08 14:47:23Z -hrrr pe test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk +07/08 14:47:47Z -hrrr test: your new post executable generates bit-identical WRFTWO.GrbF04 as the trunk +07/08 14:47:48Z -hrrr test: your new post executable generates bit-identical WRFPRS.GrbF04 as the trunk +07/08 14:47:50Z -hrrr test: your new post executable generates bit-identical WRFNAT.GrbF04 as the trunk +07/08 14:56:45Z gfs_post_00.1686556-fv3gfs test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk +07/08 14:56:46Z gfs_post_00.1686556-fv3gfs test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk +07/08 14:56:46Z gfs_post_00.1686556-fv3gfs test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk +07/08 14:57:21Z gfs_post_00.390880-fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.master.grb2f006 as the trunk +07/08 14:57:22Z gfs_post_00.390880-fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.sfluxgrbf006.grib2 as the trunk +07/08 14:57:22Z gfs_post_00.390880-fv3gfs pe test: your new post executable generates bit-identical gfs.t00z.special.grb2f006 as the trunk +07/08 14:47:02Z -Runtime: nmmb_test 00:01:44 -- baseline 00:01:00 +07/08 14:47:02Z -Runtime: nmmb_pe_test 00:01:40 -- baseline 00:01:00 +07/08 14:47:03Z -Runtime: fv3gefs_test 00:00:37 -- baseline 00:40:00 +07/08 14:47:03Z -Runtime: fv3gefs_pe_test 00:00:36 -- baseline 00:40:00 +07/08 14:47:03Z -Runtime: rap_test 00:01:12 -- baseline 00:02:00 +07/08 14:47:04Z -Runtime: rap_pe_test 00:01:29 -- baseline 00:02:00 +07/08 14:48:05Z -Runtime: hrrr_test 00:02:43 -- baseline 00:02:00 +07/08 14:48:05Z -Runtime: hrrr_pe_test 00:02:16 -- baseline 00:02:00 +07/08 14:56:55Z -Runtime: fv3gfs_test 00:11:39 -- baseline 00:15:00 +07/08 14:57:25Z -Runtime: fv3gfs_pe_test 00:12:15 -- baseline 00:15:00 +07/08 14:57:25Z -Runtime: fv3r_test 00:01:49 -- baseline 00:03:00 +07/08 14:57:26Z -Runtime: fv3r_pe_test 00:01:57 -- baseline 00:03:00 +07/08 14:57:26Z -Runtime: fv3hafs_test 00:00:47 -- baseline 00:03:00 +07/08 14:57:27Z -Runtime: fv3hafs_pe_test 00:00:48 -- baseline 00:03:00 +07/08 14:57:27Z -Runtime: rtma_test 00:01:51 -- baseline 00:03:00 +07/08 14:57:27Z -Runtime: rtma_test_pe_test 00:01:48 -- baseline No changes in test results detected. ===== End of UPP Regression Testing Log =====