diff --git a/GFS_layer/GFS_driver.F90 b/GFS_layer/GFS_driver.F90 index 09b92f41c..9458a1b7d 100644 --- a/GFS_layer/GFS_driver.F90 +++ b/GFS_layer/GFS_driver.F90 @@ -250,69 +250,41 @@ subroutine GFS_time_vary_step (Model, Statein, Stateout, Sfcprop, Coupling, & type(GFS_radtend_type), intent(inout) :: Radtend(:) type(GFS_diag_type), intent(inout) :: Diag(:) !--- local variables - integer :: nb, nblks + integer :: nblks real(kind=kind_phys) :: rinc(5) real(kind=kind_phys) :: sec - nblks = size(blksz) + + ! Set the value of nblks + call Set_nblks (nblks) + !--- Model%jdat is being updated directly inside of FV3GFS_cap.F90 !--- update calendars and triggers - rinc(1:5) = 0 - call w3difdat(Model%jdat,Model%idat,4,rinc) - sec = rinc(4) - Model%phour = sec/con_hr - !--- set current bucket hour - Model%zhour = Model%phour - Model%fhour = (sec + Model%dtp)/con_hr - Model%kdt = nint((sec + Model%dtp)/Model%dtp) + call Update_cal_and_triggers (Model, rinc, sec) - Model%ipt = 1 - Model%lprnt = .false. - Model%lssav = .true. + !--- set current bucket hour + call Set_bucket_hour (Model, sec) - !--- radiation triggers - Model%lsswr = (mod(Model%kdt, Model%nsswr) == 1) - Model%lslwr = (mod(Model%kdt, Model%nslwr) == 1) + !--- radiation triggers + call Set_radiation_triggers (Model) !--- set the solar hour based on a combination of phour and time initial hour - Model%solhr = mod(Model%phour+Model%idate(1),con_24) + call Set_solar_h (Model) - if ((Model%debug) .and. (Model%me == Model%master)) then - print *,' sec ', sec - print *,' kdt ', Model%kdt - print *,' nsswr ', Model%nsswr - print *,' nslwr ', Model%nslwr - print *,' nscyc ', Model%nscyc - print *,' lsswr ', Model%lsswr - print *,' lslwr ', Model%lslwr - print *,' fhour ', Model%fhour - print *,' phour ', Model%phour - print *,' solhr ', Model%solhr - endif + ! Print debug info + call Print_debug_info (Model, sec) !--- radiation time varying routine - if (Model%lsswr .or. Model%lslwr) then - call GFS_rad_time_vary (Model, Statein, Tbd, sec) - endif + call Gfs_rad_time_vary_driver (Model, Statein, Tbd, sec) !--- physics time varying routine call GFS_phys_time_vary (Model, Grid, Tbd) !--- repopulate specific time-varying sfc properties for AMIP/forecast runs - if (Model%nscyc > 0) then - if (mod(Model%kdt,Model%nscyc) == 1) THEN - call gcycle (nblks, Model, Grid(:), Sfcprop(:), Cldprop(:)) - endif - endif + call Gcycle_driver (nblks, Model, Grid, Sfcprop, Cldprop) !--- determine if diagnostics buckets need to be cleared - if (mod(Model%kdt,Model%nszero) == 1) then - do nb = 1,nblks - call Diag(nb)%rad_zero (Model) - call Diag(nb)%phys_zero (Model) - !!!! THIS IS THE POINT AT WHICH DIAG%ZHOUR NEEDS TO BE UPDATED - enddo - endif + call Clear_buckets (Model, Diag, nblks) end subroutine GFS_time_vary_step @@ -582,5 +554,161 @@ subroutine GFS_grid_populate (Grid, xlon, xlat, area) end subroutine GFS_grid_populate + + ! Subroutines added by PAJ + + subroutine Set_nblks (nblks) + + implicit none + + integer, intent(out) :: nblks + + ! blksz is a global var + nblks = size(blksz) + + end subroutine Set_nblks + + + subroutine Update_cal_and_triggers (Model, rinc, sec) + + implicit none + + type(GFS_control_type), intent(inout) :: Model + real(kind=kind_phys), intent(inout) :: rinc(:) + real(kind=kind_phys), intent(inout) :: sec + + + rinc(1:5) = 0 + call W3difdat (Model%jdat, Model%idat, 4, rinc) + sec = rinc(4) + Model%phour = sec/con_hr + + end subroutine Update_cal_and_triggers + + + subroutine Set_bucket_hour (Model, sec) + + implicit none + + type(GFS_control_type), intent(inout) :: Model + real(kind=kind_phys), intent(in) :: sec + + Model%zhour = Model%phour + ! con_hr is a global var + Model%fhour = (sec + Model%dtp)/con_hr + Model%kdt = nint((sec + Model%dtp)/Model%dtp) + + Model%ipt = 1 + Model%lprnt = .false. + Model%lssav = .true. + + end subroutine Set_bucket_hour + + + subroutine Set_radiation_triggers (Model) + + implicit none + + type(GFS_control_type), intent(inout) :: Model + + Model%lsswr = (mod (Model%kdt, Model%nsswr) == 1) + Model%lslwr = (mod (Model%kdt, Model%nslwr) == 1) + + end subroutine Set_radiation_triggers + + + subroutine Set_solar_h (Model) + + implicit none + + type(GFS_control_type), intent(inout) :: Model + + ! con_24 is a global variable + Model%solhr = mod (Model%phour + Model%idate(1), con_24) + + end subroutine Set_solar_h + + + subroutine Print_debug_info (Model, sec) + + implicit none + + type(GFS_control_type), intent(inout) :: Model + real(kind=kind_phys), intent(in) :: sec + + if ((Model%debug) .and. (Model%me == Model%master)) then + print *,' sec ', sec + print *,' kdt ', Model%kdt + print *,' nsswr ', Model%nsswr + print *,' nslwr ', Model%nslwr + print *,' nscyc ', Model%nscyc + print *,' lsswr ', Model%lsswr + print *,' lslwr ', Model%lslwr + print *,' fhour ', Model%fhour + print *,' phour ', Model%phour + print *,' solhr ', Model%solhr + endif + + end subroutine Print_debug_info + + + subroutine Gfs_rad_time_vary_driver (Model, Statein, Tbd, sec) + + implicit none + + type(GFS_control_type), intent(inout) :: Model + type(GFS_statein_type), intent(in) :: Statein(:) + type(GFS_tbd_type), intent(inout) :: Tbd(:) + real(kind=kind_phys), intent(in) :: sec + + if (Model%lsswr .or. Model%lslwr) then + call GFS_rad_time_vary (Model, Statein, Tbd, sec) + endif + + end subroutine Gfs_rad_time_vary_driver + + + subroutine Gcycle_driver (nblks, Model, Grid, Sfcprop, Cldprop) + + implicit none + + integer, intent(in) :: nblks + type(GFS_control_type), intent(in) :: Model + type(GFS_grid_type), intent(in) :: Grid(nblks) + type(GFS_sfcprop_type), intent(inout) :: Sfcprop(nblks) + type(GFS_cldprop_type), intent(inout) :: Cldprop(nblks) + + + if (Model%nscyc > 0) then + if (mod (Model%kdt, Model%nscyc) == 1) then + call gcycle (nblks, Model, Grid(:), Sfcprop(:), Cldprop(:)) + end if + end if + + end subroutine Gcycle_driver + + + subroutine Clear_buckets (Model, Diag, nblks) + + implicit none + + type(GFS_control_type), intent(in) :: Model + type(GFS_diag_type), intent(inout) :: Diag(:) + integer, intent(in) :: nblks + + ! Local vars + integer :: nb + + + if (mod (Model%kdt, Model%nszero) == 1) then + do nb = 1, nblks + call Diag(nb)%rad_zero (Model) + call Diag(nb)%phys_zero (Model) + enddo + endif + + end subroutine Clear_buckets + + end module GFS_driver diff --git a/GFS_layer/GFS_physics_driver.F90 b/GFS_layer/GFS_physics_driver.F90 index 9b92e4764..249d8fd6a 100644 --- a/GFS_layer/GFS_physics_driver.F90 +++ b/GFS_layer/GFS_physics_driver.F90 @@ -1680,8 +1680,9 @@ subroutine GFS_physics_driver & islmsk, Statein%vvl, Model%ncld, ud_mf, dd_mf, & dt_mf, cnvw, cnvc) elseif (Model%imfdeepcnv == 2) then - call mfdeepcnv (im, ix, levs, dtp, del, Statein%prsl, & - Statein%pgr, Statein%phil, clw(:,:,1:2), Stateout%gq0, & + call sasasdeep_run (im, ix, levs, dtp, del, Statein%prsl, & + Statein%pgr, Statein%phil, clw(:,:,1), & + clw(:,:,2), Stateout%gq0(:,:,1), & Stateout%gt0, Stateout%gu0, Stateout%gv0, & cld1d, rain1, kbot, ktop, kcnv, islmsk, & garea, Statein%vvl, Model%ncld, ud_mf, dd_mf, & diff --git a/GFS_layer/GFS_radiation_driver.F90 b/GFS_layer/GFS_radiation_driver.F90 index 56aac8ca0..9e2f66f70 100644 --- a/GFS_layer/GFS_radiation_driver.F90 +++ b/GFS_layer/GFS_radiation_driver.F90 @@ -1,7 +1,7 @@ !> \file grrad.f This file is the radiation driver module. It prepares !! the atmospheric profiles and invokes the main radiation calculation. -!> \defgroup rad RRTMG Shortwave/Longwave Radiation Scheme +!> \defgroup RRTMG RRTMG Shortwave/Longwave Radiation !> @{ !! \brief The GFS radiation scheme !! \details Radiative processes are among the most complex and @@ -1018,7 +1018,7 @@ subroutine GFS_radiation_driver & type(GFS_cldprop_type), intent(in) :: Cldprop type(GFS_radtend_type), intent(inout) :: Radtend type(GFS_diag_type), intent(inout) :: Diag - + ! ================= subprogram documentation block ================ ! ! ! @@ -1180,7 +1180,7 @@ subroutine GFS_radiation_driver & integer, dimension(size(Grid%xlon,1),3) :: mbota, mtopa !--- REAL VARIABLES - real(kind=kind_phys) :: raddt, es, qs, delt, tem0d + real(kind=kind_phys) :: raddt, es, qs, delt, tem0d real(kind=kind_phys), dimension(size(Grid%xlon,1)) :: & tsfa, cvt1, cvb1, tem1d, tsfg, tskn @@ -1328,7 +1328,7 @@ subroutine GFS_radiation_driver & !> - Call coszmn(), to compute cosine of zenith angle. call coszmn (Grid%xlon,Grid%sinlat, & ! --- inputs - Grid%coslat,Model%solhr, IM, me, & + Grid%coslat,Model%solhr, IM, me, & Radtend%coszen, Radtend%coszdg) ! --- outputs !> - Call getgases(), to set up non-prognostic gas volume mixing @@ -1609,12 +1609,12 @@ subroutine GFS_radiation_driver & htswc, Diag%topfsw, Radtend%sfcfsw, & ! --- outputs hsw0=htsw0, fdncmp=scmpsw) ! --- optional else - call swrad (plyr, plvl, tlyr, tlvl, qlyr, olyr, & ! --- inputs + call swrad (plyr, plvl, tlyr, tlvl, qlyr, olyr, & ! --- inputs gasvmr, clouds, Tbd%icsdsw, faersw, & sfcalb, Radtend%coszen, Model%solcon, & nday, idxday, IM, LMK, LMP, Model%lprnt,& - htswc, Diag%topfsw, Radtend%sfcfsw, & ! --- outputs - FDNCMP=scmpsw) ! --- optional + htswc, Diag%topfsw, Radtend%sfcfsw, & ! --- outputs + FDNCMP=scmpsw) ! --- optional endif do k = 1, LM @@ -1636,7 +1636,7 @@ subroutine GFS_radiation_driver & ! --- repopulate the points above levr if (Model%levr < Model%levs) then do k = LM,Model%levs - Radtend%swhc(:,k) = Radtend%swhc(:,LM) + Radtend%swhc(:,k) = Radtend%swhc(:,LM) enddo endif endif @@ -1693,7 +1693,7 @@ subroutine GFS_radiation_driver & call setemis (Grid%xlon, Grid%xlat, Sfcprop%slmsk, & ! --- inputs Sfcprop%snowd, Sfcprop%sncovr, Sfcprop%zorl, & - tsfg, tsfa, Sfcprop%hprim, IM, & + tsfg, tsfa, Sfcprop%hprim, IM, & Radtend%semis) ! --- outputs !> - Call module_radlw_main::lwrad(), to compute LW heating rates and @@ -1736,7 +1736,7 @@ subroutine GFS_radiation_driver & ! --- repopulate the points above levr if (Model%levr < Model%levs) then do k = LM,Model%levs - Radtend%lwhc(:,k) = Radtend%lwhc(:,LM) + Radtend%lwhc(:,k) = Radtend%lwhc(:,LM) enddo endif endif diff --git a/physics/docs/ccpp_dox b/physics/docs/ccpp_dox new file mode 100644 index 000000000..a512aa0ab --- /dev/null +++ b/physics/docs/ccpp_dox @@ -0,0 +1,318 @@ +# Doxyfile 1.8.11 +DOXYFILE_ENCODING = UTF-8 +PROJECT_NAME = "CCPP Physics Documentation" +PROJECT_NUMBER = "" +PROJECT_BRIEF = "" +PROJECT_LOGO = img/dtc_logo.png +OUTPUT_DIRECTORY = doc +CREATE_SUBDIRS = NO +ALLOW_UNICODE_NAMES = NO +OUTPUT_LANGUAGE = English +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = NO +ABBREVIATE_BRIEF = +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = YES +STRIP_FROM_PATH = +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +QT_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 4 +ALIASES = +TCL_SUBST = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +OPTIMIZE_FOR_FORTRAN = YES +OPTIMIZE_OUTPUT_VHDL = NO +EXTENSION_MAPPING = .f=FortranFixed \ + .f=FortranFree +MARKDOWN_SUPPORT = YES +AUTOLINK_SUPPORT = YES +BUILTIN_STL_SUPPORT = NO +CPP_CLI_SUPPORT = NO +SIP_SUPPORT = NO +IDL_PROPERTY_SUPPORT = YES +DISTRIBUTE_GROUP_DOC = NO +GROUP_NESTED_COMPOUNDS = NO +SUBGROUPING = YES +INLINE_GROUPED_CLASSES = NO +INLINE_SIMPLE_STRUCTS = NO +TYPEDEF_HIDES_STRUCT = NO +LOOKUP_CACHE_SIZE = 0 +EXTRACT_ALL = NO +EXTRACT_PRIVATE = YES +EXTRACT_PACKAGE = NO +EXTRACT_STATIC = NO +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +EXTRACT_ANON_NSPACES = NO +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO + +CASE_SENSE_NAMES = NO + +HIDE_SCOPE_NAMES = NO + +HIDE_COMPOUND_REFERENCE= NO + +SHOW_INCLUDE_FILES = YES + +SHOW_GROUPED_MEMB_INC = NO + +FORCE_LOCAL_INCLUDES = NO + +INLINE_INFO = YES + +SORT_MEMBER_DOCS = YES + +SORT_BRIEF_DOCS = NO +SORT_MEMBERS_CTORS_1ST = NO +SORT_GROUP_NAMES = NO +SORT_BY_SCOPE_NAME = NO +STRICT_PROTO_MATCHING = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_FILES = YES +SHOW_NAMESPACES = YES +FILE_VERSION_FILTER = +LAYOUT_FILE = ccpp_dox_layout.xml +CITE_BIB_FILES = library.bib +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = NO +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_AS_ERROR = NO +WARN_FORMAT = +WARN_LOGFILE = +INPUT = txt/mainpage.txt \ +### Radiation + ../../GFS_layer/GFS_radiation_driver.F90 \ + ../radiation_aerosols.f \ + ../radiation_astronomy.f \ + ../radiation_clouds.f \ + ../radiation_gases.f \ + ../radiation_surface.f \ + ../radlw_datatb.f \ + ../radlw_main.f \ + ../radlw_param.f \ + ../radsw_datatb.f \ + ../radsw_main.f \ + ../radsw_param.f \ +### Deep Convection + ../mfdeepcnv.f \ +### Shallow Convection + ../mfshalcnv.f \ +### PBL + ../moninedmf.f \ + ../mfpbl.f \ +### Microphysics + ../precpd.f \ + ../gscond.f \ +### Land Surface + ../sfc_drv.f \ + ../sfc_diff.f \ +### Sea Ice Surface + ../sfc_sice.f \ +### Ocean Surface + ../sfc_nst.f \ +### Orographic Gravity Wave + ../gwdps.f \ +### Convective Gravity Wave + ../gwdc.f \ +### Prognostic Ozone + ../ozphys.f +INPUT_ENCODING = UTF-8 +FILE_PATTERNS = *.f \ + *.txt +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXCLUDE_SYMBOLS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = img +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +FILTER_SOURCE_PATTERNS = +USE_MDFILE_AS_MAINPAGE = +SOURCE_BROWSER = YES +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +REFERENCES_LINK_SOURCE = YES +SOURCE_TOOLTIPS = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES +#CLANG_ASSISTED_PARSING = NO +#CLANG_OPTIONS = +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_EXTRA_STYLESHEET = ccpp_dox_extra_style.css +HTML_EXTRA_FILES = +HTML_COLORSTYLE_HUE = 220 +HTML_COLORSTYLE_SAT = 100 +HTML_COLORSTYLE_GAMMA = 80 +HTML_TIMESTAMP = NO +HTML_DYNAMIC_SECTIONS = NO +HTML_INDEX_NUM_ENTRIES = 100 +GENERATE_DOCSET = NO +DOCSET_FEEDNAME = "Doxygen generated docs" +DOCSET_BUNDLE_ID = org.doxygen.Project +DOCSET_PUBLISHER_ID = org.doxygen.Publisher +DOCSET_PUBLISHER_NAME = Publisher +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +CHM_INDEX_ENCODING = +BINARY_TOC = NO +TOC_EXPAND = NO +GENERATE_QHP = NO +QCH_FILE = +QHP_NAMESPACE = org.doxygen.Project +QHP_VIRTUAL_FOLDER = doc +QHP_CUST_FILTER_NAME = +QHP_CUST_FILTER_ATTRS = +QHP_SECT_FILTER_ATTRS = +QHG_LOCATION = +GENERATE_ECLIPSEHELP = NO +ECLIPSE_DOC_ID = org.doxygen.Project +DISABLE_INDEX = YES +GENERATE_TREEVIEW = YES +ENUM_VALUES_PER_LINE = 4 +TREEVIEW_WIDTH = 250 +EXT_LINKS_IN_WINDOW = NO +FORMULA_FONTSIZE = 10 +FORMULA_TRANSPARENT = YES +USE_MATHJAX = YES +MATHJAX_FORMAT = HTML-CSS +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest +MATHJAX_EXTENSIONS = +MATHJAX_CODEFILE = +SEARCHENGINE = YES +SERVER_BASED_SEARCH = NO +EXTERNAL_SEARCH = NO +SEARCHENGINE_URL = +SEARCHDATA_FILE = searchdata.xml +EXTERNAL_SEARCH_ID = +EXTRA_SEARCH_MAPPINGS = +GENERATE_LATEX = YES +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4 +EXTRA_PACKAGES = amsmath +LATEX_HEADER = +LATEX_FOOTER = +LATEX_EXTRA_STYLESHEET = +LATEX_EXTRA_FILES = +PDF_HYPERLINKS = YES +USE_PDFLATEX = YES +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +LATEX_SOURCE_CODE = NO + +LATEX_BIB_STYLE = plainnat + +LATEX_TIMESTAMP = NO + +GENERATE_RTF = NO + +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +RTF_SOURCE_CODE = NO +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_SUBDIR = +MAN_LINKS = NO +GENERATE_XML = NO +XML_OUTPUT = xml +XML_PROGRAMLISTING = YES +GENERATE_DOCBOOK = NO +DOCBOOK_OUTPUT = docbook +DOCBOOK_PROGRAMLISTING = NO +GENERATE_AUTOGEN_DEF = NO +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +EXTERNAL_PAGES = YES +PERL_PATH = /usr/bin/perl +CLASS_DIAGRAMS = NO +MSCGEN_PATH = +DIA_PATH = +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = YES +DOT_NUM_THREADS = 0 +DOT_FONTNAME = Helvetica +DOT_FONTSIZE = 10 +DOT_FONTPATH = +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +UML_LIMIT_NUM_FIELDS = 10 +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = YES +CALLER_GRAPH = YES +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +INTERACTIVE_SVG = NO +DOT_PATH = +DOTFILE_DIRS = +MSCFILE_DIRS = +DIAFILE_DIRS = +PLANTUML_JAR_PATH = +PLANTUML_INCLUDE_PATH = +DOT_GRAPH_MAX_NODES = 50 +MAX_DOT_GRAPH_DEPTH = 0 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES diff --git a/physics/docs/ccpp_dox_extra_style.css b/physics/docs/ccpp_dox_extra_style.css new file mode 100644 index 000000000..6110b1472 --- /dev/null +++ b/physics/docs/ccpp_dox_extra_style.css @@ -0,0 +1,19 @@ +div.image img[src="Hybrid_EDMF_Flowchart.png"]{ + width:5cm; +} + +div.image img[src="SAS_Flowchart.png"]{ + width:5cm; +} + +div.image img[src="Shallow_SAS_Flowchart.png"]{ + width:5cm; +} + +div.image img[src="schematic_Rad_mod.png"]{ + width:600px; +} + +div.image img[src="GFS_Operational_Physics.png"]{ + width:16cm; +} diff --git a/physics/docs/ccpp_dox_layout.xml b/physics/docs/ccpp_dox_layout.xml new file mode 100644 index 000000000..527034db2 --- /dev/null +++ b/physics/docs/ccpp_dox_layout.xml @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/physics/docs/img/GFS_Operational_Physics.png b/physics/docs/img/GFS_Operational_Physics.png new file mode 100644 index 000000000..7ce7fdc4d Binary files /dev/null and b/physics/docs/img/GFS_Operational_Physics.png differ diff --git a/physics/docs/img/GFS_Operational_Physics.png.bak.png b/physics/docs/img/GFS_Operational_Physics.png.bak.png new file mode 100644 index 000000000..d7483a585 Binary files /dev/null and b/physics/docs/img/GFS_Operational_Physics.png.bak.png differ diff --git a/physics/docs/img/Hybrid_EDMF_Flowchart.png b/physics/docs/img/Hybrid_EDMF_Flowchart.png new file mode 100644 index 000000000..63ce15ba8 Binary files /dev/null and b/physics/docs/img/Hybrid_EDMF_Flowchart.png differ diff --git a/physics/docs/img/SAS_Flowchart.png b/physics/docs/img/SAS_Flowchart.png new file mode 100644 index 000000000..80583479b Binary files /dev/null and b/physics/docs/img/SAS_Flowchart.png differ diff --git a/physics/docs/img/Shallow_SAS_Flowchart.png b/physics/docs/img/Shallow_SAS_Flowchart.png new file mode 100644 index 000000000..e92815237 Binary files /dev/null and b/physics/docs/img/Shallow_SAS_Flowchart.png differ diff --git a/physics/docs/img/dtc_logo.png b/physics/docs/img/dtc_logo.png new file mode 100644 index 000000000..f0666dcda Binary files /dev/null and b/physics/docs/img/dtc_logo.png differ diff --git a/physics/docs/img/ipd_rad.png b/physics/docs/img/ipd_rad.png new file mode 100644 index 000000000..9373069f1 Binary files /dev/null and b/physics/docs/img/ipd_rad.png differ diff --git a/physics/docs/img/precpd-micop.png b/physics/docs/img/precpd-micop.png new file mode 100644 index 000000000..818c71da8 Binary files /dev/null and b/physics/docs/img/precpd-micop.png differ diff --git a/physics/docs/img/schematic_MPS.png b/physics/docs/img/schematic_MPS.png new file mode 100644 index 000000000..85f8a564e Binary files /dev/null and b/physics/docs/img/schematic_MPS.png differ diff --git a/physics/docs/img/schematic_Rad_mod.png b/physics/docs/img/schematic_Rad_mod.png new file mode 100644 index 000000000..365530ab0 Binary files /dev/null and b/physics/docs/img/schematic_Rad_mod.png differ diff --git a/physics/docs/library.bib b/physics/docs/library.bib new file mode 100644 index 000000000..991b7d21b --- /dev/null +++ b/physics/docs/library.bib @@ -0,0 +1,938 @@ +%% This BibTeX bibliography file was created using BibDesk. +%% http://bibdesk.sourceforge.net/ + +%% Created for Man Zhang at 2016-10-11 14:56:34 -0600 + + +%% Saved with string encoding Unicode (UTF-8) + + + +@article{raisanen_and_barker_2004, + Author = {P. Raisanen and H.W. Barker}, + Date-Added = {2016-10-11 20:51:22 +0000}, + Date-Modified = {2016-10-11 20:53:35 +0000}, + Journal = {Quarterly Journal of the Royal Meteorological Society}, + Pages = {2069-2085}, + Title = {Evaluation and optimization of sampling errors for the Monte Carlo Independent Column Approximation}, + Volume = {130}, + Year = {2004}} + +@article{pincus_et_al_2003, + Annote = {DOI: 10.1029/2002JD003322}, + Author = {R. Pincus and H.W. Barker and J.-J. Morcrette}, + Date-Added = {2016-10-11 20:43:58 +0000}, + Date-Modified = {2016-10-11 20:49:03 +0000}, + Journal = {J. Geophys. Res.}, + Rss-Description = {DOI: 10.1029/2002JD003322}, + Title = {A fast, flexible, approximate technique for computing radiative transfer in inhomogeneous cloud fields}, + Volume = {108}, + Year = {2003}} + +@article{barker_et_al_2015, + Author = {H.W. Barker and J.N.S. Cole and J. Li and B. Yi and P. Yang}, + Date-Added = {2016-10-11 20:41:36 +0000}, + Date-Modified = {2016-10-11 20:43:49 +0000}, + Journal = {J. Atmos. Sci.}, + Pages = {4053-4074}, + Title = {Estimation of errors in two-stream approximations of the solar radiative transfer equation for cloudy-sky conditions}, + Volume = {72}, + Year = {2015}} + +@article{raisanen_2002, + Author = {P. Raisanen}, + Date-Added = {2016-10-11 20:39:27 +0000}, + Date-Modified = {2016-10-11 20:41:23 +0000}, + Journal = {Quarterly Journal of the Royal Meteorological Society}, + Pages = {2397-2416}, + Title = {Two-stream approximations revisited: A new improvement and tests with GCM data}, + Volume = {128}, + Year = {2002}} + +@article{king_and_harshvardhan_1986, + Author = {M.D. King and Harshvardhan}, + Date-Added = {2016-10-11 20:33:56 +0000}, + Date-Modified = {2016-10-11 20:37:59 +0000}, + Journal = {J. Atmos. Sci.}, + Pages = {784-801}, + Title = {Comparative accuracy of selected multiple scattering approximations}, + Volume = {43}, + Year = {1986}} + +@url{key_2002, + Address = {Madison, Wisconsin}, + Author = {J.R. Key}, + Date-Added = {2016-10-05 15:09:28 +0000}, + Date-Modified = {2016-10-05 15:12:26 +0000}, + Organization = {Cooptical. NOAA/NESDIS}, + Title = {Streamer User's Guide}, + Urldate = {https://stratus.ssec.wisc.edu/streamer/userman.pdf)}} + +@article{fu_et_al_1998, + Author = {Q. Fu and P. Yang and W. B. Sun}, + Date-Added = {2016-06-21 19:58:59 +0000}, + Date-Modified = {2016-06-21 20:00:51 +0000}, + Journal = {J. Climate}, + Pages = {2223-2237}, + Title = {An accurate parameterization of the infrared radiative properties of cirrus clouds for climate models}, + Volume = {11}, + Year = {1998}} + +@techreport{key_2001, + Author = {J. Key}, + Date-Added = {2016-06-21 17:33:34 +0000}, + Date-Modified = {2016-06-21 17:41:46 +0000}, + Institution = {Cooperative Institute for Meteorological Satellite Studies, University of Wisconsin}, + Number = {96pp}, + Title = {Streamer User's Guide}, + Year = {2001}} + +@article{liou_1973, + Author = {K. N. Liou}, + Date-Added = {2016-06-21 17:20:02 +0000}, + Date-Modified = {2016-06-21 17:22:03 +0000}, + Journal = {Journal of the Atmospheric Sciences}, + Pages = {1303-1326}, + Title = {A numerical experiment on Chandrasekhar's discrete-ordinate method for radiative transfer: Applications to cloudy and hazy atmospheres}, + Volume = {30}, + Year = {1973}} + +@article{zdunkowski_et_al_1980, + Author = {W. G. Zdunkowski and R. M. Welch and G. Korb}, + Date-Added = {2016-06-21 16:52:12 +0000}, + Date-Modified = {2016-06-21 16:55:04 +0000}, + Journal = {Beitr. Phys. Atmos.}, + Pages = {147-166}, + Title = {An investigation of the structure of typical two-stream methods for the calculation of solar fluxes and heating rates in clouds}, + Volume = {53}, + Year = {1980}} + +@article{joseph_et_al_1976, + Author = {J. H. Joseph and W. J. Wiscombe and J. A. Weinman}, + Date-Added = {2016-06-21 16:48:05 +0000}, + Date-Modified = {2016-06-21 16:50:31 +0000}, + Journal = {Journal of the Atmospheric Sciences}, + Pages = {2452-2459}, + Title = {The Delta-Eddington approximation for radiative flux transfer}, + Volume = {33}, + Year = {1976}} + +@article{iacono_et_al_2008, + Annote = {doi:10.1029/2008JD009944}, + Author = {M.J. Iacono and J.S. Delamere and E.J. Mlawer and M. W. Shephard and S. A. Clough and W.D. Collins}, + Date-Added = {2016-06-19 23:25:28 +0000}, + Date-Modified = {2016-06-19 23:32:46 +0000}, + Journal = {J. Geophys. Res.}, + Title = {Radiative forcing by long-lived greenhouse gases: Calculations with the AER radiative transfer models}, + Volume = {113}, + Year = {2008}} + +@article{grant_2001, + Abstract = {A closure for the fluxes of mass, heat, and moisture at cloud base in the cumulus-capped boundary layer is developed. The cloud-base mass flux is obtained from a simplifed turbulence kinetic energy (TKE) budget for the sub-cloud layer, in which cumulus convection is assumed to be associated with a transport of TKE from the sub-cloud layer to the cloud layer.The heat and moisture fluxes are obtained from a jump model based on the virtual-potential-temperature equation. A key part of this parametrization is the parametrization of the virtual-temperature flux at the top of the transition zone between the sub-cloud and cloud layers.It is argued that pressure fluctuations must be responsible for the transport of TKE from the cloud layer to the sub-cloud layer.}, + Author = {Grant, A. L. M.}, + Date-Added = {2016-06-15 22:11:22 +0000}, + Date-Modified = {2016-06-15 22:11:22 +0000}, + Doi = {10.1002/qj.49712757209}, + Issn = {1477-870X}, + Journal = {Quarterly Journal of the Royal Meteorological Society}, + Keywords = {Cloud-base closure, Convection, Fluxes, Jump model, Shallow cumulus, Turbulence kinetic energy}, + Number = {572}, + Pages = {407--421}, + Publisher = {John Wiley & Sons, Ltd}, + Title = {Cloud-base fluxes in the cumulus-capped boundary layer}, + Url = {http://dx.doi.org/10.1002/qj.49712757209}, + Volume = {127}, + Year = {2001}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QQS4uLy4uL0Nsb3VkU3RhdGlvbi9maXJsX2xpYnJhcnkvZmlybF9saWJyYXJ5X2ZpbGVzL0dyYW50LzIwMDEucGRm0hcLGBlXTlMuZGF0YU8RAcQAAAAAAcQAAgAADE1hY2ludG9zaCBIRAAAAAAAAAAAAAAAAAAAANHnJFJIKwAAACiJXggyMDAxLnBkZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGAm404cuTgAAAAAAAAAAAAIABQAACSAAAAAAAAAAAAAAAAAAAAAFR3JhbnQAABAACAAA0ed4sgAAABEACAAA04eCrgAAAAEAGAAoiV4AKGyWAChsiwAoZ3sAG14HAAKYXAACAFtNYWNpbnRvc2ggSEQ6VXNlcnM6AGdyYW50ZjoAQ2xvdWRTdGF0aW9uOgBmaXJsX2xpYnJhcnk6AGZpcmxfbGlicmFyeV9maWxlczoAR3JhbnQ6ADIwMDEucGRmAAAOABIACAAyADAAMAAxAC4AcABkAGYADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQAEgBIVXNlcnMvZ3JhbnRmL0Nsb3VkU3RhdGlvbi9maXJsX2xpYnJhcnkvZmlybF9saWJyYXJ5X2ZpbGVzL0dyYW50LzIwMDEucGRmABMAAS8AABUAAgAN//8AAIAG0hscHR5aJGNsYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox0fIFZOU0RhdGFYTlNPYmplY3TSGxwiI1xOU0RpY3Rpb25hcnmiIiBfEA9OU0tleWVkQXJjaGl2ZXLRJidUcm9vdIABAAgAEQAaACMALQAyADcAQABGAE0AVQBgAGcAagBsAG4AcQBzAHUAdwCEAI4A0gDXAN8CpwKpAq4CuQLCAtAC1ALbAuQC6QL2AvkDCwMOAxMAAAAAAAACAQAAAAAAAAAoAAAAAAAAAAAAAAAAAAADFQ==}, + Bdsk-Url-1 = {http://dx.doi.org/10.1002/qj.49712757209}} + +@article{zhang_and_wu_2003, + Abstract = {Abstract This study uses a 2D cloud-resolving model to investigate the vertical transport of horizontal momentum and to understand the role of a convection-generated perturbation pressure field in the momentum transport by convective systems during part of the Tropical Ocean and Global Atmosphere Coupled Ocean?Atmosphere Response Experiment (TOGA COARE) Intensive Observation Period. It shows that convective updrafts transport a significant amount of momentum vertically. This transport is downgradient in the easterly wind regime, but upgradient during a westerly wind burst. The differences in convective momentum transport between easterly and westerly wind regimes are examined. The perturbation pressure gradient accounts for an important part of the apparent momentum source. In general it is opposite in sign to the product of cloud mass flux and the vertical wind shear, with smaller magnitude. Examination of the dynamic forcing to the pressure field demonstrates that the linear forcing representing the interaction between the convective updrafts and the large-scale wind shear is the dominant term, while the nonlinear forcing is of secondary importance. Thus, parameterization schemes taking into account the linear interaction between the convective updrafts and the large-scale wind shear can capture the essential features of the perturbation pressure field. The parameterization scheme for momentum transport by Zhang and Cho is evaluated using the model simulation data. The parameterized pressure gradient force using the scheme is in excellent agreement with the simulated one. The parameterized apparent momentum source is also in good agreement with the model simulation. Other parameterization methods for the pressure gradient are also discussed.}, + Annote = {doi: 10.1175/1520-0469(2003)060<1120:CMTAPP>2.0.CO;2}, + Author = {Zhang, Guang J. and Wu, Xiaoqing}, + Booktitle = {Journal of the Atmospheric Sciences}, + Da = {2003/05/01}, + Date-Added = {2016-06-14 23:39:50 +0000}, + Date-Modified = {2016-06-16 15:30:17 +0000}, + Doi = {10.1175/1520-0469(2003)060<1120:CMTAPP>2.0.CO;2}, + Isbn = {0022-4928}, + Journal = {Journal of the Atmospheric Sciences}, + Journal1 = {J. Atmos. Sci.}, + M3 = {doi: 10.1175/1520-0469(2003)060<1120:CMTAPP>2.0.CO;2}, + N2 = {Abstract This study uses a 2D cloud-resolving model to investigate the vertical transport of horizontal momentum and to understand the role of a convection-generated perturbation pressure field in the momentum transport by convective systems during part of the Tropical Ocean and Global Atmosphere Coupled Ocean?Atmosphere Response Experiment (TOGA COARE) Intensive Observation Period. It shows that convective updrafts transport a significant amount of momentum vertically. This transport is downgradient in the easterly wind regime, but upgradient during a westerly wind burst. The differences in convective momentum transport between easterly and westerly wind regimes are examined. The perturbation pressure gradient accounts for an important part of the apparent momentum source. In general it is opposite in sign to the product of cloud mass flux and the vertical wind shear, with smaller magnitude. Examination of the dynamic forcing to the pressure field demonstrates that the linear forcing representing the interaction between the convective updrafts and the large-scale wind shear is the dominant term, while the nonlinear forcing is of secondary importance. Thus, parameterization schemes taking into account the linear interaction between the convective updrafts and the large-scale wind shear can capture the essential features of the perturbation pressure field. The parameterization scheme for momentum transport by Zhang and Cho is evaluated using the model simulation data. The parameterized pressure gradient force using the scheme is in excellent agreement with the simulated one. The parameterized apparent momentum source is also in good agreement with the model simulation. Other parameterization methods for the pressure gradient are also discussed.}, + Number = {9}, + Pages = {1120--1139}, + Publisher = {American Meteorological Society}, + Title = {Convective Momentum Transport and Perturbation Pressure Field from a Cloud-Resolving Model Simulation}, + Ty = {JOUR}, + Url = {http://dx.doi.org/10.1175/1520-0469(2003)060<1120:CMTAPP>2.0.CO;2}, + Volume = {60}, + Year = {2003}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QQS4uLy4uL0Nsb3VkU3RhdGlvbi9maXJsX2xpYnJhcnkvZmlybF9saWJyYXJ5X2ZpbGVzL1poYW5nLzIwMDMucGRm0hcLGBlXTlMuZGF0YU8RAcQAAAAAAcQAAgAADE1hY2ludG9zaCBIRAAAAAAAAAAAAAAAAAAAANHnJFJIKwAAACqO5ggyMDAzLnBkZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWtQ/0rQvwwAAAAAAAAAAAAIABQAACSAAAAAAAAAAAAAAAAAAAAAFWmhhbmcAABAACAAA0ed4sgAAABEACAAA0rSSMwAAAAEAGAAqjuYAKGyWAChsiwAoZ3sAG14HAAKYXAACAFtNYWNpbnRvc2ggSEQ6VXNlcnM6AGdyYW50ZjoAQ2xvdWRTdGF0aW9uOgBmaXJsX2xpYnJhcnk6AGZpcmxfbGlicmFyeV9maWxlczoAWmhhbmc6ADIwMDMucGRmAAAOABIACAAyADAAMAAzAC4AcABkAGYADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQAEgBIVXNlcnMvZ3JhbnRmL0Nsb3VkU3RhdGlvbi9maXJsX2xpYnJhcnkvZmlybF9saWJyYXJ5X2ZpbGVzL1poYW5nLzIwMDMucGRmABMAAS8AABUAAgAN//8AAIAG0hscHR5aJGNsYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox0fIFZOU0RhdGFYTlNPYmplY3TSGxwiI1xOU0RpY3Rpb25hcnmiIiBfEA9OU0tleWVkQXJjaGl2ZXLRJidUcm9vdIABAAgAEQAaACMALQAyADcAQABGAE0AVQBgAGcAagBsAG4AcQBzAHUAdwCEAI4A0gDXAN8CpwKpAq4CuQLCAtAC1ALbAuQC6QL2AvkDCwMOAxMAAAAAAAACAQAAAAAAAAAoAAAAAAAAAAAAAAAAAAADFQ==}, + Bdsk-Url-1 = {http://dx.doi.org/10.1175/1520-0469(2003)060%3C1120:CMTAPP%3E2.0.CO;2}} + +@article{fritsch_and_chappell_1980, + Abstract = {Abstract A parameterization formulation for incorporating the effects of midlatitude deep convection into mesoscale-numerical models is presented. The formulation is based on the hypothesis that the buoyant energy available to a parcel, in combination with a prescribed period of time for the convection to remove that energy, can be used to regulate the amount of convection in a mesoscale numerical model grid element. Individual clouds are represented as entraining moist updraft and downdraft plumes. The fraction of updraft condensate evaporated in moist downdrafts is determined from an empirical relationship between the vertical shear of the horizontal wind and precipitation efficiency. Vertical transports of horizontal momentum and warming by compensating subsidence are included in the parameterization. Since updraft and downdraft areas are sometimes a substantial fraction of mesoscale model grid-element areas, grid-point temperatures (adjusted for convection) are an area-weighted mean of updraft, downdraft and environmental temperatures.}, + Annote = {doi: 10.1175/1520-0469(1980)037<1722:NPOCDM>2.0.CO;2}, + Author = {Fritsch, J. M. and Chappell, C. F.}, + Booktitle = {Journal of the Atmospheric Sciences}, + Da = {1980/08/01}, + Date = {1980/08/01}, + Date-Added = {2016-06-14 23:18:40 +0000}, + Date-Modified = {2016-06-16 15:29:09 +0000}, + Doi = {10.1175/1520-0469(1980)037<1722:NPOCDM>2.0.CO;2}, + Isbn = {0022-4928}, + Journal = {Journal of the Atmospheric Sciences}, + Journal1 = {J. Atmos. Sci.}, + M3 = {doi: 10.1175/1520-0469(1980)037<1722:NPOCDM>2.0.CO;2}, + N2 = {Abstract A parameterization formulation for incorporating the effects of midlatitude deep convection into mesoscale-numerical models is presented. The formulation is based on the hypothesis that the buoyant energy available to a parcel, in combination with a prescribed period of time for the convection to remove that energy, can be used to regulate the amount of convection in a mesoscale numerical model grid element. Individual clouds are represented as entraining moist updraft and downdraft plumes. The fraction of updraft condensate evaporated in moist downdrafts is determined from an empirical relationship between the vertical shear of the horizontal wind and precipitation efficiency. Vertical transports of horizontal momentum and warming by compensating subsidence are included in the parameterization. Since updraft and downdraft areas are sometimes a substantial fraction of mesoscale model grid-element areas, grid-point temperatures (adjusted for convection) are an area-weighted mean of updraft, downdraft and environmental temperatures.}, + Number = {8}, + Pages = {1722--1733}, + Publisher = {American Meteorological Society}, + Title = {Numerical Prediction of Convectively Driven Mesoscale Pressure Systems. Part I: Convective Parameterization}, + Ty = {JOUR}, + Url = {http://dx.doi.org/10.1175/1520-0469(1980)037<1722:NPOCDM>2.0.CO;2}, + Volume = {37}, + Year = {1980}, + Year1 = {1980}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QQy4uLy4uL0Nsb3VkU3RhdGlvbi9maXJsX2xpYnJhcnkvZmlybF9saWJyYXJ5X2ZpbGVzL0ZyaXRzY2gvMTk4MC5wZGbSFwsYGVdOUy5kYXRhTxEBygAAAAABygACAAAMTWFjaW50b3NoIEhEAAAAAAAAAAAAAAAAAAAA0eckUkgrAAABEK4zCDE5ODAucGRmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQqzXTfG+mAAAAAAAAAAAAAgAFAAAJIAAAAAAAAAAAAAAAAAAAAAdGcml0c2NoAAAQAAgAANHneLIAAAARAAgAANN8xAYAAAABABgBEK4zAChslgAobIsAKGd7ABteBwACmFwAAgBdTWFjaW50b3NoIEhEOlVzZXJzOgBncmFudGY6AENsb3VkU3RhdGlvbjoAZmlybF9saWJyYXJ5OgBmaXJsX2xpYnJhcnlfZmlsZXM6AEZyaXRzY2g6ADE5ODAucGRmAAAOABIACAAxADkAOAAwAC4AcABkAGYADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQAEgBKVXNlcnMvZ3JhbnRmL0Nsb3VkU3RhdGlvbi9maXJsX2xpYnJhcnkvZmlybF9saWJyYXJ5X2ZpbGVzL0ZyaXRzY2gvMTk4MC5wZGYAEwABLwAAFQACAA3//wAAgAbSGxwdHlokY2xhc3NuYW1lWCRjbGFzc2VzXU5TTXV0YWJsZURhdGGjHR8gVk5TRGF0YVhOU09iamVjdNIbHCIjXE5TRGljdGlvbmFyeaIiIF8QD05TS2V5ZWRBcmNoaXZlctEmJ1Ryb290gAEACAARABoAIwAtADIANwBAAEYATQBVAGAAZwBqAGwAbgBxAHMAdQB3AIQAjgDUANkA4QKvArECtgLBAsoC2ALcAuMC7ALxAv4DAQMTAxYDGwAAAAAAAAIBAAAAAAAAACgAAAAAAAAAAAAAAAAAAAMd}, + Bdsk-Url-1 = {http://dx.doi.org/10.1175/1520-0469(1980)037%3C1722:NPOCDM%3E2.0.CO;2}} + +@article{bechtold_et_al_2008, + Abstract = {Advances in simulating atmospheric variability with the ECMWF model are presented that stem from revisions of the convection and diffusion parametrizations. The revisions concern in particular the introduction of a variable convective adjustment time-scale, a convective entrainment rate proportional to the environmental relative humidity, as well as free tropospheric diffusion coefficients for heat and momentum based on Monin--Obukhov functional dependencies.The forecasting system is evaluated against analyses and observations using high-resolution medium-range deterministic and ensemble forecasts, monthly and seasonal integrations, and decadal integrations with coupled atmosphere-ocean models. The results show a significantly higher and more realistic level of model activity in terms of the amplitude of tropical and extratropical mesoscale, synoptic and planetary perturbations. Importantly, with the higher variability and reduced bias not only the probabilistic scores are improved, but also the midlatitude deterministic scores in the short and medium ranges. Furthermore, for the first time the model is able to represent a realistic spectrum of convectively coupled equatorial Kelvin and Rossby waves, and maintains a realistic amplitude of the Madden--Julian oscillation (MJO) during monthly forecasts. However, the propagation speed of the MJO is slower than observed. The higher tropical tropospheric wave activity also results in better stratospheric temperatures and winds through the deposition of momentum.The partitioning between convective and resolved precipitation is unaffected by the model changes with roughly 62% of the total global precipitation being of the convective type. Finally, the changes in convection and diffusion parametrizations resulted in a larger spread of the ensemble forecasts, which allowed the amplitude of the initial perturbations in the ensemble prediction system to decrease by 30%. Copyright {\copyright} 2008 Royal Meteorological Society}, + Author = {Bechtold, Peter and K{\"o}hler, Martin and Jung, Thomas and Doblas-Reyes, Francisco and Leutbecher, Martin and Rodwell, Mark J. and Vitart, Frederic and Balsamo, Gianpaolo}, + Date-Added = {2016-06-14 23:11:58 +0000}, + Date-Modified = {2016-06-14 23:11:58 +0000}, + Doi = {10.1002/qj.289}, + Issn = {1477-870X}, + Journal = {Quarterly Journal of the Royal Meteorological Society}, + Keywords = {atmospheric variability, model climate, tropical waves, convection, vertical diffusion, numerical weather prediction}, + Number = {634}, + Pages = {1337--1351}, + Publisher = {John Wiley & Sons, Ltd.}, + Title = {Advances in simulating atmospheric variability with the ECMWF model: From synoptic to decadal time-scales}, + Url = {http://dx.doi.org/10.1002/qj.289}, + Volume = {134}, + Year = {2008}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QRC4uLy4uL0Nsb3VkU3RhdGlvbi9maXJsX2xpYnJhcnkvZmlybF9saWJyYXJ5X2ZpbGVzL0JlY2h0b2xkLzIwMDgucGRm0hcLGBlXTlMuZGF0YU8RAcwAAAAAAcwAAgAADE1hY2ludG9zaCBIRAAAAAAAAAAAAAAAAAAAANHnJFJIKwAAACht+QgyMDA4LnBkZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFlx704SMTAAAAAAAAAAAAAIABQAACSAAAAAAAAAAAAAAAAAAAAAIQmVjaHRvbGQAEAAIAADR53iyAAAAEQAIAADThOCsAAAAAQAYACht+QAobJYAKGyLAChnewAbXgcAAphcAAIAXk1hY2ludG9zaCBIRDpVc2VyczoAZ3JhbnRmOgBDbG91ZFN0YXRpb246AGZpcmxfbGlicmFyeToAZmlybF9saWJyYXJ5X2ZpbGVzOgBCZWNodG9sZDoAMjAwOC5wZGYADgASAAgAMgAwADAAOAAuAHAAZABmAA8AGgAMAE0AYQBjAGkAbgB0AG8AcwBoACAASABEABIAS1VzZXJzL2dyYW50Zi9DbG91ZFN0YXRpb24vZmlybF9saWJyYXJ5L2ZpcmxfbGlicmFyeV9maWxlcy9CZWNodG9sZC8yMDA4LnBkZgAAEwABLwAAFQACAA3//wAAgAbSGxwdHlokY2xhc3NuYW1lWCRjbGFzc2VzXU5TTXV0YWJsZURhdGGjHR8gVk5TRGF0YVhOU09iamVjdNIbHCIjXE5TRGljdGlvbmFyeaIiIF8QD05TS2V5ZWRBcmNoaXZlctEmJ1Ryb290gAEACAARABoAIwAtADIANwBAAEYATQBVAGAAZwBqAGwAbgBxAHMAdQB3AIQAjgDVANoA4gKyArQCuQLEAs0C2wLfAuYC7wL0AwEDBAMWAxkDHgAAAAAAAAIBAAAAAAAAACgAAAAAAAAAAAAAAAAAAAMg}, + Bdsk-Url-1 = {http://dx.doi.org/10.1002/qj.289}} + +@article{han_and_pan_2011, + Annote = {doi: 10.1175/WAF-D-10-05038.1}, + Author = {Han, Jongil and Pan, Hua-Lu}, + Booktitle = {Weather and Forecasting}, + Da = {2011/08/01}, + Date = {2011/08/01}, + Date-Added = {2016-06-14 23:07:16 +0000}, + Date-Modified = {2016-06-14 23:07:16 +0000}, + Doi = {10.1175/WAF-D-10-05038.1}, + Isbn = {0882-8156}, + Journal = {Weather and Forecasting}, + Journal1 = {Wea. Forecasting}, + M3 = {doi: 10.1175/WAF-D-10-05038.1}, + Month = {2016/03/25}, + Number = {4}, + Pages = {520--533}, + Publisher = {American Meteorological Society}, + Title = {Revision of Convection and Vertical Diffusion Schemes in the NCEP Global Forecast System}, + Ty = {JOUR}, + Url = {http://dx.doi.org/10.1175/WAF-D-10-05038.1}, + Volume = {26}, + Year = {2011}, + Year1 = {2011}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QPy4uLy4uL0Nsb3VkU3RhdGlvbi9maXJsX2xpYnJhcnkvZmlybF9saWJyYXJ5X2ZpbGVzL0hhbi8yMDExLnBkZtIXCxgZV05TLmRhdGFPEQG+AAAAAAG+AAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAADR5yRSSCsAAABaxPkIMjAxMS5wZGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMLVx9Ma+W8AAAAAAAAAAAACAAUAAAkgAAAAAAAAAAAAAAAAAAAAA0hhbgAAEAAIAADR53iyAAAAEQAIAADTG03PAAAAAQAYAFrE+QAobJYAKGyLAChnewAbXgcAAphcAAIAWU1hY2ludG9zaCBIRDpVc2VyczoAZ3JhbnRmOgBDbG91ZFN0YXRpb246AGZpcmxfbGlicmFyeToAZmlybF9saWJyYXJ5X2ZpbGVzOgBIYW46ADIwMTEucGRmAAAOABIACAAyADAAMQAxAC4AcABkAGYADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQAEgBGVXNlcnMvZ3JhbnRmL0Nsb3VkU3RhdGlvbi9maXJsX2xpYnJhcnkvZmlybF9saWJyYXJ5X2ZpbGVzL0hhbi8yMDExLnBkZgATAAEvAAAVAAIADf//AACABtIbHB0eWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMdHyBWTlNEYXRhWE5TT2JqZWN00hscIiNcTlNEaWN0aW9uYXJ5oiIgXxAPTlNLZXllZEFyY2hpdmVy0SYnVHJvb3SAAQAIABEAGgAjAC0AMgA3AEAARgBNAFUAYABnAGoAbABuAHEAcwB1AHcAhACOANAA1QDdAp8CoQKmArECugLIAswC0wLcAuEC7gLxAwMDBgMLAAAAAAAAAgEAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAw0=}, + Bdsk-Url-1 = {http://dx.doi.org/10.1175/WAF-D-10-05038.1}} + +@article{pan_and_wu_1995, + Author = {Pan, H. -L. and W.-S. Wu}, + Date-Added = {2016-06-14 23:06:41 +0000}, + Date-Modified = {2016-06-14 23:06:41 +0000}, + Journal = {NMC Office Note, No. 409}, + Pages = {40pp}, + Title = {Implementing a Mass Flux Convection Parameterization Package for the NMC Medium-Range Forecast Model}, + Year = {1995}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QPy4uLy4uL0Nsb3VkU3RhdGlvbi9maXJsX2xpYnJhcnkvZmlybF9saWJyYXJ5X2ZpbGVzL1Bhbi8xOTk1LnBkZtIXCxgZV05TLmRhdGFPEQG+AAAAAAG+AAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAADR5yRSSCsAAADC1M0IMTk5NS5wZGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMK1T9Ma8wkAAAAAAAAAAAACAAUAAAkgAAAAAAAAAAAAAAAAAAAAA1BhbgAAEAAIAADR53iyAAAAEQAIAADTG0dpAAAAAQAYAMLUzQAobJYAKGyLAChnewAbXgcAAphcAAIAWU1hY2ludG9zaCBIRDpVc2VyczoAZ3JhbnRmOgBDbG91ZFN0YXRpb246AGZpcmxfbGlicmFyeToAZmlybF9saWJyYXJ5X2ZpbGVzOgBQYW46ADE5OTUucGRmAAAOABIACAAxADkAOQA1AC4AcABkAGYADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQAEgBGVXNlcnMvZ3JhbnRmL0Nsb3VkU3RhdGlvbi9maXJsX2xpYnJhcnkvZmlybF9saWJyYXJ5X2ZpbGVzL1Bhbi8xOTk1LnBkZgATAAEvAAAVAAIADf//AACABtIbHB0eWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMdHyBWTlNEYXRhWE5TT2JqZWN00hscIiNcTlNEaWN0aW9uYXJ5oiIgXxAPTlNLZXllZEFyY2hpdmVy0SYnVHJvb3SAAQAIABEAGgAjAC0AMgA3AEAARgBNAFUAYABnAGoAbABuAHEAcwB1AHcAhACOANAA1QDdAp8CoQKmArECugLIAswC0wLcAuEC7gLxAwMDBgMLAAAAAAAAAgEAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAw0=}} + +@article{grell_1993, + Annote = {doi: 10.1175/1520-0493(1993)121<0764:PEOAUB>2.0.CO;2}, + Author = {Grell, Georg A.}, + Booktitle = {Monthly Weather Review}, + Da = {1993/03/01}, + Date = {1993/03/01}, + Date-Added = {2016-06-14 23:06:02 +0000}, + Date-Modified = {2016-06-14 23:06:02 +0000}, + Doi = {10.1175/1520-0493(1993)121<0764:PEOAUB>2.0.CO;2}, + Isbn = {0027-0644}, + Journal = {Monthly Weather Review}, + Journal1 = {Mon. Wea. Rev.}, + M3 = {doi: 10.1175/1520-0493(1993)121<0764:PEOAUB>2.0.CO;2}, + Month = {2016/03/25}, + Number = {3}, + Pages = {764--787}, + Publisher = {American Meteorological Society}, + Title = {Prognostic Evaluation of Assumptions Used by Cumulus Parameterizations}, + Ty = {JOUR}, + Url = {http://dx.doi.org/10.1175/1520-0493(1993)121<0764:PEOAUB>2.0.CO;2}, + Volume = {121}, + Year = {1993}, + Year1 = {1993}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QQS4uLy4uL0Nsb3VkU3RhdGlvbi9maXJsX2xpYnJhcnkvZmlybF9saWJyYXJ5X2ZpbGVzL0dyZWxsLzE5OTMucGRm0hcLGBlXTlMuZGF0YU8RAcQAAAAAAcQAAgAADE1hY2ludG9zaCBIRAAAAAAAAAAAAAAAAAAAANHnJFJIKwAAACiJ7QgxOTkzLnBkZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwrh20xr0swAAAAAAAAAAAAIABQAACSAAAAAAAAAAAAAAAAAAAAAFR3JlbGwAABAACAAA0ed4sgAAABEACAAA0xtJEwAAAAEAGAAoie0AKGyWAChsiwAoZ3sAG14HAAKYXAACAFtNYWNpbnRvc2ggSEQ6VXNlcnM6AGdyYW50ZjoAQ2xvdWRTdGF0aW9uOgBmaXJsX2xpYnJhcnk6AGZpcmxfbGlicmFyeV9maWxlczoAR3JlbGw6ADE5OTMucGRmAAAOABIACAAxADkAOQAzAC4AcABkAGYADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQAEgBIVXNlcnMvZ3JhbnRmL0Nsb3VkU3RhdGlvbi9maXJsX2xpYnJhcnkvZmlybF9saWJyYXJ5X2ZpbGVzL0dyZWxsLzE5OTMucGRmABMAAS8AABUAAgAN//8AAIAG0hscHR5aJGNsYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox0fIFZOU0RhdGFYTlNPYmplY3TSGxwiI1xOU0RpY3Rpb25hcnmiIiBfEA9OU0tleWVkQXJjaGl2ZXLRJidUcm9vdIABAAgAEQAaACMALQAyADcAQABGAE0AVQBgAGcAagBsAG4AcQBzAHUAdwCEAI4A0gDXAN8CpwKpAq4CuQLCAtAC1ALbAuQC6QL2AvkDCwMOAxMAAAAAAAACAQAAAAAAAAAoAAAAAAAAAAAAAAAAAAADFQ==}, + Bdsk-Url-1 = {http://dx.doi.org/10.1175/1520-0493(1993)121%3C0764:PEOAUB%3E2.0.CO;2}} + +@article{arakawa_and_schubert_1974, + Author = {Arakawa, A and Schubert, WH}, + Date-Added = {2016-06-14 23:04:30 +0000}, + Date-Modified = {2016-06-14 23:04:30 +0000}, + Isi = {A1974S778800004}, + Isi-Recid = {24736409}, + Isi-Ref-Recids = {24736410 23263039 23263040 24736411 15230512 21078942 22066681 13999272 6131549 20808007 23263032 22546570 1962258 24736412 24736413 9042903 16367418 21296696 23263044 21323290 23263019 4978012 10294413 15490227 23900510 23900511 23263046 8901065 2093366 6656763 11547033 18049905 22066680 16333678 24736414 7439245 23900506 20768916 13675076 14800951 23065740 15230507 18858907 24736415 5605133 6656847 24736416 19667767 16976778 19116793 10788368 19758747 21930663 23263053 23263035 8901222 23263054 9041925 23263055}, + Iso-Source-Abbreviation = {J Atmos Sci}, + Journal = {Journal of the Atmospheric Sciences}, + Pages = {674--701}, + Times-Cited = {1300}, + Title = {INTERACTION OF A CUMULUS CLOUD ENSEMBLE WITH the LARGE-SCALE ENVIRONMENT, \uppercase{P}art \uppercase{I}}, + Volume = {31}, + Year = {1974}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QQy4uLy4uL0Nsb3VkU3RhdGlvbi9maXJsX2xpYnJhcnkvZmlybF9saWJyYXJ5X2ZpbGVzL0FyYWthd2EvMTk3NC5wZGbSFwsYGVdOUy5kYXRhTxEBygAAAAABygACAAAMTWFjaW50b3NoIEhEAAAAAAAAAAAAAAAAAAAA0eckUkgrAAAAKG1VCDE5NzQucGRmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAobVy0zyH0AAAAAAAAAAAAAgAFAAAJIAAAAAAAAAAAAAAAAAAAAAdBcmFrYXdhAAAQAAgAANHneLIAAAARAAgAALTPhGQAAAABABgAKG1VAChslgAobIsAKGd7ABteBwACmFwAAgBdTWFjaW50b3NoIEhEOlVzZXJzOgBncmFudGY6AENsb3VkU3RhdGlvbjoAZmlybF9saWJyYXJ5OgBmaXJsX2xpYnJhcnlfZmlsZXM6AEFyYWthd2E6ADE5NzQucGRmAAAOABIACAAxADkANwA0AC4AcABkAGYADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQAEgBKVXNlcnMvZ3JhbnRmL0Nsb3VkU3RhdGlvbi9maXJsX2xpYnJhcnkvZmlybF9saWJyYXJ5X2ZpbGVzL0FyYWthd2EvMTk3NC5wZGYAEwABLwAAFQACAA3//wAAgAbSGxwdHlokY2xhc3NuYW1lWCRjbGFzc2VzXU5TTXV0YWJsZURhdGGjHR8gVk5TRGF0YVhOU09iamVjdNIbHCIjXE5TRGljdGlvbmFyeaIiIF8QD05TS2V5ZWRBcmNoaXZlctEmJ1Ryb290gAEACAARABoAIwAtADIANwBAAEYATQBVAGAAZwBqAGwAbgBxAHMAdQB3AIQAjgDUANkA4QKvArECtgLBAsoC2ALcAuMC7ALxAv4DAQMTAxYDGwAAAAAAAAIBAAAAAAAAACgAAAAAAAAAAAAAAAAAAAMd}, + Bdsk-Url-1 = {http://ws.isiknowledge.com/cps/openurl/service?url_ver=Z39.88-2004&rft_id=info:ut/A1974S778800004}} + +@article{harshvardhan_et_al_1989, + Author = {Harshvardhan and D. A. Randall and T. G. Corsetti and D. A. Dazlich}, + Date-Added = {2016-06-08 21:28:55 +0000}, + Date-Modified = {2016-06-08 21:32:23 +0000}, + Journal = {J. Atmos. Sci.}, + Number = {13}, + Pages = {1922-1942}, + Title = {Earth radiation budget and cloudiness simulations with a general circulation model}, + Volume = {46}, + Year = {1989}} + +@article{yang_et_al_2008, + Author = {F. Yang and K. Mitchell and Y. Hou and Y. Dai and X. Zeng and Z. Wang and X. Liang}, + Date-Added = {2016-06-08 16:52:08 +0000}, + Date-Modified = {2016-06-08 16:55:40 +0000}, + Journal = {Journal of Applied Meteorology and Climatology}, + Number = {11}, + Pages = {2963-2982}, + Title = {Dependence of land surface albedo on solar zenith angle: Observations and model parameterizations}, + Volume = {47}, + Year = {2008}} + +@article{mccormack_et_al_2006, + Author = {J. P. McCormack and S. D. Eckermann and D. E. Siskind and T. J. McGee}, + Date-Added = {2016-06-06 17:33:25 +0000}, + Date-Modified = {2016-06-06 17:37:45 +0000}, + Journal = {Atmos. Chem. Phys.}, + Pages = {4943-4972}, + Title = {CHEM2D-OPP: A new linearized gas-phase ozone photochemistry parameterization for high-altitude NWP and climate models}, + Volume = {6}, + Year = {2006}} + +@article{kim_1996, + Author = {Y.-J. Kim}, + Date-Added = {2016-06-01 20:18:51 +0000}, + Date-Modified = {2016-06-01 20:21:44 +0000}, + Journal = {J. Climate}, + Pages = {2698-2717}, + Title = {Representation of subgrid-scale orographic effects in a general circulation model. Part I: Impact on the dynamics of simulated January climate}, + Volume = {9}, + Year = {1996}} + +@article{palmer_et_al_1986, + Author = {T. N. Palmer and G. J. Shutts and R. Swinbank}, + Date-Added = {2016-05-31 22:08:22 +0000}, + Date-Modified = {2016-05-31 22:11:18 +0000}, + Journal = {Quarterly Journal of the Royal Meteorological Society}, + Pages = {1001-1039}, + Title = {Alleviation of a systematic westerly bias in circulation and numerical weather prediction model through an orographic gravity wave drag parameterization}, + Volume = {112}, + Year = {1986}} + +@article{fritts_1984, + Author = {D. C. Fritts}, + Date-Added = {2016-05-31 22:05:39 +0000}, + Date-Modified = {2016-05-31 22:07:46 +0000}, + Journal = {Rev. Geophys. Space Phys.}, + Pages = {275-308}, + Title = {Gravity wave saturation in the middle atmosphere: A review of theory and observations}, + Volume = {22}, + Year = {1984}} + +@techreport{baines_and_palmer_1990, + Author = {P. G. Baines and T. N. Palmer}, + Date-Added = {2016-05-25 19:56:51 +0000}, + Date-Modified = {2016-05-25 21:40:15 +0000}, + Institution = {European Centre for Medium Range Weather Forecasts}, + Number = {169}, + Title = {Rationale for a new physically based parametrization of sub-grid scale orographic effects}, + Type = {Technical Memorandum}, + Year = {1990}} + +@techreport{hong_1999, + Author = {S-Y. Hong}, + Date-Added = {2016-05-25 17:36:09 +0000}, + Date-Modified = {2016-05-25 17:38:50 +0000}, + Institution = {National Centers for Environmental Predicition}, + Number = {424}, + Title = {New global orograhy data sets}, + Type = {Office note}, + Year = {1999}} + +@article{lott_and_miller_1997, + Author = {F. Lott and M. J. Miller}, + Date-Added = {2016-05-24 21:29:18 +0000}, + Date-Modified = {2016-05-24 21:31:09 +0000}, + Journal = {Quarterly Journal of the Royal Meteorological Society}, + Pages = {101-127}, + Title = {A new subgrid-scale orographic drag parametrization: Its formulation and testing}, + Volume = {123}, + Year = {1997}} + +@article{lindzen_1981, + Author = {R. S. Lindzen}, + Date-Added = {2016-05-24 17:23:58 +0000}, + Date-Modified = {2016-05-24 17:26:01 +0000}, + Journal = {J. Geophys. Res.}, + Pages = {9707-9714}, + Title = {Turbulence and stress due to gravity wave and tidal breakdown}, + Volume = {86}, + Year = {1981}} + +@periodical{pierrehumbert_1987, + Author = {R. T. Pierrehumbert}, + Date-Added = {2016-05-24 17:20:08 +0000}, + Date-Modified = {2016-05-24 17:23:52 +0000}, + Institution = {European Centre for Medium Range Weather Forecasts, Reading, UK}, + Pages = {251-282}, + Title = {An essay on the parameterization of orographic wave drag. Observation, Theory, and Modelling of Orographic Effects}, + Volume = {1}, + Year = {1986}} + +@inbook{sundqvist_1988, + Author = {H. Sundqvist}, + Chapter = {Parameterization of condensation and associated clouds in models for weather prediction and general circulation simulation}, + Date-Added = {2016-05-24 04:23:10 +0000}, + Date-Modified = {2016-05-24 23:03:22 +0000}, + Pages = {433-461}, + Publisher = {M. E. Schlesinger, Ed., Reidel}, + Title = {Physically-based modeling and simulation of climate and climatic changes, Part I}, + Year = {1988}} + +@misc{Rogers_1979, + Author = {R. R. Rogers}, + Date-Added = {2016-05-24 04:20:01 +0000}, + Date-Modified = {2016-05-24 04:22:28 +0000}, + Edition = {2}, + Publisher = {Pergamon Press}, + Title = {A short course in cloud physics}, + Year = {1979}} + +@article{lin_et_al_1983, + Author = {Y.-L. Lin and R. D. Farley and H. D. Orville}, + Date-Added = {2016-05-24 04:16:35 +0000}, + Date-Modified = {2016-05-24 04:19:19 +0000}, + Journal = {J. Climate Appl. Meteor.}, + Pages = {1065-1092}, + Title = {Bulk parameterization of the snow field in a cloud model}, + Volume = {22}, + Year = {1983}} + +@booklet{kessler_1969, + Author = {E. Kessler}, + Date-Added = {2016-05-24 04:11:05 +0000}, + Date-Modified = {2016-05-24 04:16:10 +0000}, + Howpublished = {Amer. Meteor. Soc.}, + Journal = {Meteor. Monogr.}, + Number = {32}, + Pages = {84pp}, + Title = {On the distribution and continuity of water substance in atmospheric circulations}, + Year = {1969}} + +@article{rutledge_and_hobbs_1983, + Author = {S.A. Rutledge and P.V. Hobbs}, + Date-Added = {2016-05-24 04:07:48 +0000}, + Date-Modified = {2016-05-24 04:10:43 +0000}, + Journal = {J. Atmos. Sci.}, + Pages = {1185-1206}, + Title = {The mesoscale and microscale structure and organization of clouds and precipitation in mid-latitude cyclones. VIII: A model for the 'seeder-feeder' process in warm-frontal rainbands}, + Volume = {40}, + Year = {1983}} + +@article{zhao_and_carr_1997, + Author = {Q. Zhao and F.H. Carr}, + Date-Added = {2016-05-24 03:57:40 +0000}, + Date-Modified = {2016-05-24 04:02:27 +0000}, + Journal = {Monthly Weather Review}, + Pages = {1931-1953}, + Title = {A prognostic cloud scheme for operational NWP models}, + Volume = {125}, + Year = {1997}} + +@article{sundqvist_et_al_1989, + Author = {H. Sundqvist and E. Berge and J.E. Kristjansson}, + Date-Added = {2016-05-24 03:56:22 +0000}, + Date-Modified = {2016-05-24 18:05:06 +0000}, + Journal = {Monthly Weather Review}, + Pages = {1641-1657}, + Title = {Condensation and cloud studies with a mesoscale numerical weather prediction model}, + Volume = {117}, + Year = {1989}} + +@article{chun_et_al_2001, + Author = {H.-Y. Chun and M.-D. Song and J.-W. Kim and J.-J. Baik}, + Date-Added = {2016-05-20 22:19:31 +0000}, + Date-Modified = {2016-05-20 22:21:45 +0000}, + Journal = {J. Atmos. Sci.}, + Keywords = {convective gwd}, + Pages = {302-319}, + Title = {Effects of gravity wave drag induced by cumulus convection on the atmospheric general circulation}, + Volume = {58}, + Year = {2001}} + +@article{chun_et_al_2004, + Author = {H.-Y. Chun and I.-S. Song and J.-J. Baik and Y.-J. Kim}, + Date-Added = {2016-05-20 22:16:39 +0000}, + Date-Modified = {2016-05-20 22:19:24 +0000}, + Journal = {J. Climate}, + Keywords = {convective gwd}, + Pages = {3530-3547}, + Title = {Impact of a convectively forced gravity wave drag parameterization in NCAR CCM3}, + Volume = {17}, + Year = {2004}} + +@article{chun_and_baik_1998, + Author = {H.-Y. Chun and J.-J. Baik}, + Date-Added = {2016-05-20 22:11:32 +0000}, + Date-Modified = {2016-05-20 22:15:06 +0000}, + Journal = {J. Atmos. Sci.}, + Keywords = {convective gwd}, + Pages = {3299-3310}, + Title = {Momentum flux by thermally induced internal gravity waves and its approximation for large-scale models}, + Volume = {55}, + Year = {1998}} + +@article{akmaev_1991, + Author = {R.A. Akmaev}, + Date-Added = {2016-05-20 20:41:25 +0000}, + Date-Modified = {2016-05-20 20:44:22 +0000}, + Journal = {Monthly Weather Review}, + Pages = {2499-2504}, + Title = {A direct algorithm for convective adjustment of the vertical temperature profile for an arbitrary critical lapse rate}, + Volume = {119}, + Year = {1991}} + +@article{siebesma_et_al_2007, + Abstract = {A better conceptual understanding and more realistic parameterizations of convective boundary layers in climate and weather prediction models have been major challenges in meteorological research. In particular, parameterizations of the dry convective boundary layer, in spite of the absence of water phase-changes and its consequent simplicity as compared to moist convection, typically suffer from problems in attempting to represent realistically the boundary layer growth and what is often referred to as countergradient fluxes. The eddy-diffusivity (ED) approach has been relatively successful in representing some characteristics of neutral boundary layers and surface layers in general. The mass-flux (MF) approach, on the other hand, has been used for the parameterization of shallow and deep moist convection. In this paper, a new approach that relies on a combination of the ED and MF parameterizations (EDMF) is proposed for the dry convective boundary layer. It is shown that the EDMF approach follows naturally from a decomposition of the turbulent fluxes into 1) a part that includes strong organized updrafts, and 2) a remaining turbulent field. At the basis of the EDMF approach is the concept that nonlocal subgrid transport due to the strong updrafts is taken into account by the MF approach, while the remaining transport is taken into account by an ED closure. Large-eddy simulation (LES) results of the dry convective boundary layer are used to support the theoretical framework of this new approach and to determine the parameters of the EDMF model. The performance of the new formulation is evaluated against LES results, and it is shown that the EDMF closure is able to reproduce the main properties of dry convective boundary layers in a realistic manner. Furthermore, it will be shown that this approach has strong advantages over the more traditional countergradient approach, especially in the entrainment layer. As a result, this EDMF approach opens the way to parameterize the clear and cumulus-topped boundary layer in a simple and unified way.}, + Author = {Siebesma, A. Pier and Soares, Pedro M. M. and Teixeira, Joao}, + Date-Added = {2016-05-20 17:17:49 +0000}, + Date-Modified = {2016-05-20 17:17:49 +0000}, + Doi = {DOI 10.1175/JAS3888.1}, + Isi = {000245742600011}, + Isi-Recid = {155740544}, + Isi-Ref-Recids = {115014593 127680992 155740545 133137768 72045051 119371807 118686109 113234126 94069283 76955063 85219981 132018694 107966278 155740546 131396353 120868636 120868639 29141512 142871054 41570940 124456950 137282089 93259654 23900506 108293652 81292629 77285327 132368713 90793545 129381436 97209359 16976778 142871103 120666841 114648984 68302965 107133693 119331008 137282122 142871106 65959905 60433145 105313074 155740547 71456809 80400802 23263035}, + Iso-Source-Abbreviation = {J Atmos Sci}, + Journal = {Journal of the Atmospheric Sciences}, + Pages = {1230--1248}, + Times-Cited = {32}, + Title = {A combined eddy-diffusivity mass-flux approach for the convective boundary layer}, + Volume = {64}, + Year = {2007}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QRC4uLy4uL0Nsb3VkU3RhdGlvbi9maXJsX2xpYnJhcnkvZmlybF9saWJyYXJ5X2ZpbGVzL1NpZWJlc21hLzIwMDcucGRm0hcLGBlXTlMuZGF0YU8RAcwAAAAAAcwAAgAADE1hY2ludG9zaCBIRAAAAAAAAAAAAAAAAAAAANHnJFJIKwAAACpgTAgyMDA3LnBkZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKmHIxzv7iFBERiBDQVJPAAIABQAACSAAAAAAAAAAAAAAAAAAAAAIU2llYmVzbWEAEAAIAADR53iyAAAAEQAIAADHPF34AAAAAQAYACpgTAAobJYAKGyLAChnewAbXgcAAphcAAIAXk1hY2ludG9zaCBIRDpVc2VyczoAZ3JhbnRmOgBDbG91ZFN0YXRpb246AGZpcmxfbGlicmFyeToAZmlybF9saWJyYXJ5X2ZpbGVzOgBTaWViZXNtYToAMjAwNy5wZGYADgASAAgAMgAwADAANwAuAHAAZABmAA8AGgAMAE0AYQBjAGkAbgB0AG8AcwBoACAASABEABIAS1VzZXJzL2dyYW50Zi9DbG91ZFN0YXRpb24vZmlybF9saWJyYXJ5L2ZpcmxfbGlicmFyeV9maWxlcy9TaWViZXNtYS8yMDA3LnBkZgAAEwABLwAAFQACAA3//wAAgAbSGxwdHlokY2xhc3NuYW1lWCRjbGFzc2VzXU5TTXV0YWJsZURhdGGjHR8gVk5TRGF0YVhOU09iamVjdNIbHCIjXE5TRGljdGlvbmFyeaIiIF8QD05TS2V5ZWRBcmNoaXZlctEmJ1Ryb290gAEACAARABoAIwAtADIANwBAAEYATQBVAGAAZwBqAGwAbgBxAHMAdQB3AIQAjgDVANoA4gKyArQCuQLEAs0C2wLfAuYC7wL0AwEDBAMWAxkDHgAAAAAAAAIBAAAAAAAAACgAAAAAAAAAAAAAAAAAAAMg}, + Bdsk-Url-1 = {http://ws.isiknowledge.com/cps/openurl/service?url_ver=Z39.88-2004&rft_id=info:ut/000245742600011}} + +@article{soares_et_al_2004, + Abstract = {Recently, a new consistent way of parametrizing simultaneously local and non-local turbulent transport for the convective atmospheric boundary layer has been proposed and tested for the clear boundary layer. This approach assumes that in the convective boundary layer the subgrid-scale fluxes result from two different mixing scales: small eddies, that are parametrized by an eddy-diffusivity approach, and thermals, which are represented by a mass-flux contribution. Since the interaction between the cloud layer and the underlying sub-cloud layer predominantly takes place through strong updraughts, this approach offers an interesting avenue of establishing a unified description of the turbulent transport in the cumulus-topped boundary layer. This paper explores the possibility of such a new approach for the cumulus-topped boundary layer. In the sub-cloud and cloud layers, the mass-flux term represents the effect of strong updraughts. These are modelled by a simple entraining parcel, which determines the mean properties of the strong updraughts, the boundary-layer height, the lifting condensation level and cloud top. The residual smaller-scale turbulent transport is parametrized with an eddy-diffusivity approach that uses a turbulent kinetic energy closure. The new scheme is implemented and tested in the research model MesoNH. Copyright {\copyright} 2004 Royal Meteorological Society}, + Author = {Soares, P. M. M. and Miranda, P. M. A. and Siebesma, A. P. and Teixeira, J.}, + Date-Added = {2016-05-20 17:17:49 +0000}, + Date-Modified = {2016-05-20 17:17:49 +0000}, + Doi = {10.1256/qj.03.223}, + Issn = {1477-870X}, + Journal = {Quarterly Journal of the Royal Meteorological Society}, + Keywords = {Boundary layer, Clouds, Turbulence}, + Number = {604}, + Pages = {3365--3383}, + Publisher = {John Wiley & Sons, Ltd.}, + Title = {An eddy-diffusivity/mass-flux parametrization for dry and shallow cumulus convection}, + Url = {http://dx.doi.org/10.1256/qj.03.223}, + Volume = {130}, + Year = {2004}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QQi4uLy4uL0Nsb3VkU3RhdGlvbi9maXJsX2xpYnJhcnkvZmlybF9saWJyYXJ5X2ZpbGVzL1NvYXJlcy8yMDA0LnBkZtIXCxgZV05TLmRhdGFPEQHGAAAAAAHGAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAADR5yRSSCsAAABYgLYIMjAwNC5wZGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFh/oNKyo3AAAAAAAAAAAAACAAUAAAkgAAAAAAAAAAAAAAAAAAAABlNvYXJlcwAQAAgAANHneLIAAAARAAgAANKzBeAAAAABABgAWIC2AChslgAobIsAKGd7ABteBwACmFwAAgBcTWFjaW50b3NoIEhEOlVzZXJzOgBncmFudGY6AENsb3VkU3RhdGlvbjoAZmlybF9saWJyYXJ5OgBmaXJsX2xpYnJhcnlfZmlsZXM6AFNvYXJlczoAMjAwNC5wZGYADgASAAgAMgAwADAANAAuAHAAZABmAA8AGgAMAE0AYQBjAGkAbgB0AG8AcwBoACAASABEABIASVVzZXJzL2dyYW50Zi9DbG91ZFN0YXRpb24vZmlybF9saWJyYXJ5L2ZpcmxfbGlicmFyeV9maWxlcy9Tb2FyZXMvMjAwNC5wZGYAABMAAS8AABUAAgAN//8AAIAG0hscHR5aJGNsYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox0fIFZOU0RhdGFYTlNPYmplY3TSGxwiI1xOU0RpY3Rpb25hcnmiIiBfEA9OU0tleWVkQXJjaGl2ZXLRJidUcm9vdIABAAgAEQAaACMALQAyADcAQABGAE0AVQBgAGcAagBsAG4AcQBzAHUAdwCEAI4A0wDYAOACqgKsArECvALFAtMC1wLeAucC7AL5AvwDDgMRAxYAAAAAAAACAQAAAAAAAAAoAAAAAAAAAAAAAAAAAAADGA==}, + Bdsk-Url-1 = {http://dx.doi.org/10.1256/qj.03.223}} + +@article{troen_and_mahrt_1986, + Author = {Troen, IB and Mahrt, L.}, + Date-Added = {2016-05-20 17:17:49 +0000}, + Date-Modified = {2016-05-20 17:17:49 +0000}, + Doi = {10.1007/BF00122760}, + Issn = {0006-8314}, + Journal = {Boundary-Layer Meteorology}, + Language = {English}, + Number = {1-2}, + Pages = {129-148}, + Publisher = {Kluwer Academic Publishers}, + Title = {A simple model of the atmospheric boundary layer; sensitivity to surface evaporation}, + Url = {http://dx.doi.org/10.1007/BF00122760}, + Volume = {37}, + Year = {1986}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QQS4uLy4uL0Nsb3VkU3RhdGlvbi9maXJsX2xpYnJhcnkvZmlybF9saWJyYXJ5X2ZpbGVzL1Ryb2VuLzE5ODYucGRm0hcLGBlXTlMuZGF0YU8RAcQAAAAAAcQAAgAADE1hY2ludG9zaCBIRAAAAAAAAAAAAAAAAAAAANHnJFJIKwAAAE156AgxOTg2LnBkZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATXeQ0pRbBQAAAAAAAAAAAAIABQAACSAAAAAAAAAAAAAAAAAAAAAFVHJvZW4AABAACAAA0ed4sgAAABEACAAA0pS9dQAAAAEAGABNeegAKGyWAChsiwAoZ3sAG14HAAKYXAACAFtNYWNpbnRvc2ggSEQ6VXNlcnM6AGdyYW50ZjoAQ2xvdWRTdGF0aW9uOgBmaXJsX2xpYnJhcnk6AGZpcmxfbGlicmFyeV9maWxlczoAVHJvZW46ADE5ODYucGRmAAAOABIACAAxADkAOAA2AC4AcABkAGYADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQAEgBIVXNlcnMvZ3JhbnRmL0Nsb3VkU3RhdGlvbi9maXJsX2xpYnJhcnkvZmlybF9saWJyYXJ5X2ZpbGVzL1Ryb2VuLzE5ODYucGRmABMAAS8AABUAAgAN//8AAIAG0hscHR5aJGNsYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox0fIFZOU0RhdGFYTlNPYmplY3TSGxwiI1xOU0RpY3Rpb25hcnmiIiBfEA9OU0tleWVkQXJjaGl2ZXLRJidUcm9vdIABAAgAEQAaACMALQAyADcAQABGAE0AVQBgAGcAagBsAG4AcQBzAHUAdwCEAI4A0gDXAN8CpwKpAq4CuQLCAtAC1ALbAuQC6QL2AvkDCwMOAxMAAAAAAAACAQAAAAAAAAAoAAAAAAAAAAAAAAAAAAADFQ==}, + Bdsk-Url-1 = {http://dx.doi.org/10.1007/BF00122760}} + +@article{macvean_and_mason_1990, + Abstract = {Abstract In a recent paper, Kuo and Schubert demonstrated the lack of observational support for the relevance of the criterion for cloud-top entrainment instability proposed by Randall and by Deardorff. Here we derive a new criterion, based on a model of the instability as resulting from the energy released close to cloud top, by Mixing between saturated boundary-layer air and unsaturated air from above the capping inversion. The condition is derived by considering the net conversion from potential to kinetic energy in a system consisting of two layers of fluid straddling cloud-top, when a small amount of mixing occurs between these layers. This contrasts with previous analyses, which only considered the change in buoyancy of the cloud layer when unsaturated air is mixed into it. In its most general form, this new criterion depends on the ratio of the depths of the layers involved in the mixing. It is argued that, for a self-sustaining instability, there must be a net release of kinetic energy on the same depth and time scales as the entrainment process itself. There are two plausible ways in which this requirement may be satisfied. Either one takes the depths of the layers involved in the mixing to each be comparable to the vertical scale of the entrainment process, which is typically of order tens of meters or less, or alternatively, one must allow for the efficiency with which energy released by mixing through a much deeper lower layer becomes available to initiate further entrainment. In both cases the same criterion for instability results. This criterion is much more restrictive than that proposed by Randall and by Deardorff; furthermore, the observational data is then consistent with the predictions of the current theory. Further analysis provides estimates of the turbulent fluxes associated with cloud-top entrainment instability. This analysis effectively constitutes an energetically consistent turbulence closure for models of boundary layers with cloud. The implications for such numerical models are discussed. Comparisons are also made with other possible criteria for cloud-top entrainment instability which have recently been suggested.}, + Annote = {doi: 10.1175/1520-0469(1990)047<1012:CTEITS>2.0.CO;2}, + Author = {MacVean, M. K. and Mason, P. J.}, + Booktitle = {Journal of the Atmospheric Sciences}, + Da = {1990/04/01}, + Date-Added = {2016-05-20 17:16:05 +0000}, + Date-Modified = {2016-05-20 17:16:05 +0000}, + Doi = {10.1175/1520-0469(1990)047<1012:CTEITS>2.0.CO;2}, + Isbn = {0022-4928}, + Journal = {Journal of the Atmospheric Sciences}, + Journal1 = {J. Atmos. Sci.}, + M3 = {doi: 10.1175/1520-0469(1990)047<1012:CTEITS>2.0.CO;2}, + N2 = {Abstract In a recent paper, Kuo and Schubert demonstrated the lack of observational support for the relevance of the criterion for cloud-top entrainment instability proposed by Randall and by Deardorff. Here we derive a new criterion, based on a model of the instability as resulting from the energy released close to cloud top, by Mixing between saturated boundary-layer air and unsaturated air from above the capping inversion. The condition is derived by considering the net conversion from potential to kinetic energy in a system consisting of two layers of fluid straddling cloud-top, when a small amount of mixing occurs between these layers. This contrasts with previous analyses, which only considered the change in buoyancy of the cloud layer when unsaturated air is mixed into it. In its most general form, this new criterion depends on the ratio of the depths of the layers involved in the mixing. It is argued that, for a self-sustaining instability, there must be a net release of kinetic energy on the same depth and time scales as the entrainment process itself. There are two plausible ways in which this requirement may be satisfied. Either one takes the depths of the layers involved in the mixing to each be comparable to the vertical scale of the entrainment process, which is typically of order tens of meters or less, or alternatively, one must allow for the efficiency with which energy released by mixing through a much deeper lower layer becomes available to initiate further entrainment. In both cases the same criterion for instability results. This criterion is much more restrictive than that proposed by Randall and by Deardorff; furthermore, the observational data is then consistent with the predictions of the current theory. Further analysis provides estimates of the turbulent fluxes associated with cloud-top entrainment instability. This analysis effectively constitutes an energetically consistent turbulence closure for models of boundary layers with cloud. The implications for such numerical models are discussed. Comparisons are also made with other possible criteria for cloud-top entrainment instability which have recently been suggested.}, + Number = {8}, + Pages = {1012--1030}, + Publisher = {American Meteorological Society}, + Title = {Cloud-Top Entrainment Instability through Small-Scale Mixing and Its Parameterization in Numerical Models}, + Ty = {JOUR}, + Url = {http://dx.doi.org/10.1175/1520-0469(1990)047<1012:CTEITS>2.0.CO;2}, + Volume = {47}, + Year = {1990}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QQy4uLy4uL0Nsb3VkU3RhdGlvbi9maXJsX2xpYnJhcnkvZmlybF9saWJyYXJ5X2ZpbGVzL01hY1ZlYW4vMTk5MC5wZGbSFwsYGVdOUy5kYXRhTxEBygAAAAABygACAAAMTWFjaW50b3NoIEhEAAAAAAAAAAAAAAAAAAAA0eckUkgrAAAAXHzPCDE5OTAucGRmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcfKfSuSRFAAAAAAAAAAAAAgAFAAAJIAAAAAAAAAAAAAAAAAAAAAdNYWNWZWFuAAAQAAgAANHneLIAAAARAAgAANK5hrUAAAABABgAXHzPAChslgAobIsAKGd7ABteBwACmFwAAgBdTWFjaW50b3NoIEhEOlVzZXJzOgBncmFudGY6AENsb3VkU3RhdGlvbjoAZmlybF9saWJyYXJ5OgBmaXJsX2xpYnJhcnlfZmlsZXM6AE1hY1ZlYW46ADE5OTAucGRmAAAOABIACAAxADkAOQAwAC4AcABkAGYADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQAEgBKVXNlcnMvZ3JhbnRmL0Nsb3VkU3RhdGlvbi9maXJsX2xpYnJhcnkvZmlybF9saWJyYXJ5X2ZpbGVzL01hY1ZlYW4vMTk5MC5wZGYAEwABLwAAFQACAA3//wAAgAbSGxwdHlokY2xhc3NuYW1lWCRjbGFzc2VzXU5TTXV0YWJsZURhdGGjHR8gVk5TRGF0YVhOU09iamVjdNIbHCIjXE5TRGljdGlvbmFyeaIiIF8QD05TS2V5ZWRBcmNoaXZlctEmJ1Ryb290gAEACAARABoAIwAtADIANwBAAEYATQBVAGAAZwBqAGwAbgBxAHMAdQB3AIQAjgDUANkA4QKvArECtgLBAsoC2ALcAuMC7ALxAv4DAQMTAxYDGwAAAAAAAAIBAAAAAAAAACgAAAAAAAAAAAAAAAAAAAMd}, + Bdsk-Url-1 = {http://dx.doi.org/10.1175/1520-0469(1990)047%3C1012:CTEITS%3E2.0.CO;2}} + +@article{louis_1979, + Author = {Louis, JF}, + Date-Added = {2016-05-20 17:15:52 +0000}, + Date-Modified = {2016-05-20 17:15:52 +0000}, + Isi = {A1979HT69700004}, + Isi-Recid = {38589235}, + Isi-Ref-Recids = {32937272 27172655 27973995 38589236 29980755 19632344 38589237 19828140 34242210 21296696 19828138 27480279 38589238 29798585 34762259 10294413 6132564 31988234 6116967 38589239 19944180 20358801 11541869}, + Iso-Source-Abbreviation = {Bound-Lay Meteorol}, + Journal = {Boundary-Layer Meteorology}, + Pages = {187--202}, + Times-Cited = {1308}, + Title = {A PARAMETRIC MODEL OF VERTICAL EDDY FLUXES IN THE ATMOSPHERE}, + Volume = {17}, + Year = {1979}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QQS4uLy4uL0Nsb3VkU3RhdGlvbi9maXJsX2xpYnJhcnkvZmlybF9saWJyYXJ5X2ZpbGVzL0xvdWlzLzE5NzkucGRm0hcLGBlXTlMuZGF0YU8RAcQAAAAAAcQAAgAADE1hY2ludG9zaCBIRAAAAAAAAAAAAAAAAAAAANHnJFJIKwAAACieiAgxOTc5LnBkZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKJ6PwW5TilBERiBDQVJPAAIABQAACSAAAAAAAAAAAAAAAAAAAAAFTG91aXMAABAACAAA0ed4sgAAABEACAAAwW61+gAAAAEAGAAonogAKGyWAChsiwAoZ3sAG14HAAKYXAACAFtNYWNpbnRvc2ggSEQ6VXNlcnM6AGdyYW50ZjoAQ2xvdWRTdGF0aW9uOgBmaXJsX2xpYnJhcnk6AGZpcmxfbGlicmFyeV9maWxlczoATG91aXM6ADE5NzkucGRmAAAOABIACAAxADkANwA5AC4AcABkAGYADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQAEgBIVXNlcnMvZ3JhbnRmL0Nsb3VkU3RhdGlvbi9maXJsX2xpYnJhcnkvZmlybF9saWJyYXJ5X2ZpbGVzL0xvdWlzLzE5NzkucGRmABMAAS8AABUAAgAN//8AAIAG0hscHR5aJGNsYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox0fIFZOU0RhdGFYTlNPYmplY3TSGxwiI1xOU0RpY3Rpb25hcnmiIiBfEA9OU0tleWVkQXJjaGl2ZXLRJidUcm9vdIABAAgAEQAaACMALQAyADcAQABGAE0AVQBgAGcAagBsAG4AcQBzAHUAdwCEAI4A0gDXAN8CpwKpAq4CuQLCAtAC1ALbAuQC6QL2AvkDCwMOAxMAAAAAAAACAQAAAAAAAAAoAAAAAAAAAAAAAAAAAAADFQ==}, + Bdsk-Url-1 = {http://ws.isiknowledge.com/cps/openurl/service?url_ver=Z39.88-2004&rft_id=info:ut/A1979HT69700004}} + +@article{lock_et_al_2000, + Abstract = {A new boundary layer turbulent mixing scheme has been developed for use in the UKMO weather forecasting and climate prediction models. This includes a representation of nonlocal mixing (driven by both surface fluxes and cloud-top processes) in unstable layers, either coupled to or decoupled from the surface, and an explicit entrainment parameterization. The scheme is formulated in moist conserved variables so that it can treat both dry and cloudy layers. Details of the scheme and examples of its performance in single-column model tests are presented.}, + Author = {Lock, AP and Brown, AR and Bush, MR and Martin, GM and Smith, RNB}, + Date-Added = {2016-05-20 17:15:36 +0000}, + Date-Modified = {2016-05-20 17:15:36 +0000}, + Isi = {000089461100008}, + Isi-Recid = {116839422}, + Isi-Ref-Recids = {66113175 96966405 98903448 97216236 59908706 113485125 109411221 98903447 103672714 101890728 47069286 95806864 73121798 76563289 85219981 116839423 108520240 38589235 30293075 116839425 92736669 109796435 83200873 90793545 72956034 72311841 44393377 60433145 63750105 105313074 98909959 27148086}, + Iso-Source-Abbreviation = {Mon Weather Rev}, + Journal = {Monthly Weather Review}, + Pages = {3187--3199}, + Times-Cited = {195}, + Title = {A new boundary layer mixing scheme. {P}art {I}: Scheme description and single-column model tests}, + Volume = {128}, + Year = {2000}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QQC4uLy4uL0Nsb3VkU3RhdGlvbi9maXJsX2xpYnJhcnkvZmlybF9saWJyYXJ5X2ZpbGVzL0xvY2svMjAwMC5wZGbSFwsYGVdOUy5kYXRhTxEBwAAAAAABwAACAAAMTWFjaW50b3NoIEhEAAAAAAAAAAAAAAAAAAAA0eckUkgrAAAAKJt7CDIwMDAucGRmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAom4vLA+s8AAAAAAAAAAAAAgAFAAAJIAAAAAAAAAAAAAAAAAAAAARMb2NrABAACAAA0ed4sgAAABEACAAAywRNrAAAAAEAGAAom3sAKGyWAChsiwAoZ3sAG14HAAKYXAACAFpNYWNpbnRvc2ggSEQ6VXNlcnM6AGdyYW50ZjoAQ2xvdWRTdGF0aW9uOgBmaXJsX2xpYnJhcnk6AGZpcmxfbGlicmFyeV9maWxlczoATG9jazoAMjAwMC5wZGYADgASAAgAMgAwADAAMAAuAHAAZABmAA8AGgAMAE0AYQBjAGkAbgB0AG8AcwBoACAASABEABIAR1VzZXJzL2dyYW50Zi9DbG91ZFN0YXRpb24vZmlybF9saWJyYXJ5L2ZpcmxfbGlicmFyeV9maWxlcy9Mb2NrLzIwMDAucGRmAAATAAEvAAAVAAIADf//AACABtIbHB0eWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMdHyBWTlNEYXRhWE5TT2JqZWN00hscIiNcTlNEaWN0aW9uYXJ5oiIgXxAPTlNLZXllZEFyY2hpdmVy0SYnVHJvb3SAAQAIABEAGgAjAC0AMgA3AEAARgBNAFUAYABnAGoAbABuAHEAcwB1AHcAhACOANEA1gDeAqICpAKpArQCvQLLAs8C1gLfAuQC8QL0AwYDCQMOAAAAAAAAAgEAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAxA=}, + Bdsk-Url-1 = {http://ws.isiknowledge.com/cps/openurl/service?url_ver=Z39.88-2004&rft_id=info:ut/000089461100008}} + +@article{hong_and_pan_1996, + Abstract = {Abstract In this paper, the incorporation of a simple atmospheric boundary layer diffusion scheme into the NCEP Medium-Range Forecast Model is described. A boundary layer diffusion package based on the Troen and Mahrt nonlocal diffusion concept has been tested for possible operational implementation. The results from this approach are compared with those from the local diffusion approach, which is the current operational scheme, and verified against FIFE observations during 9?10 August 1987. The comparisons between local and nonlocal approaches are extended to the forecast for a heavy rain case of 15?17 May 1995. The sensitivity of both the boundary layer development and the precipitation forecast to the tuning parameters in the nonlocal diffusion scheme is also investigated. Special attention is given to the interaction of boundary layer processes with precipitation physics. Some results of parallel runs during August 1995 are also presented.}, + Annote = {doi: 10.1175/1520-0493(1996)124<2322:NBLVDI>2.0.CO;2}, + Author = {Hong, Song-You and Pan, Hua-Lu}, + Booktitle = {Monthly Weather Review}, + Da = {1996/10/01}, + Date = {1996/10/01}, + Date-Added = {2016-05-20 17:14:38 +0000}, + Date-Modified = {2016-05-20 17:14:38 +0000}, + Doi = {10.1175/1520-0493(1996)124<2322:NBLVDI>2.0.CO;2}, + Isbn = {0027-0644}, + Journal = {Monthly Weather Review}, + Journal1 = {Mon. Wea. Rev.}, + M3 = {doi: 10.1175/1520-0493(1996)124<2322:NBLVDI>2.0.CO;2}, + N2 = {Abstract In this paper, the incorporation of a simple atmospheric boundary layer diffusion scheme into the NCEP Medium-Range Forecast Model is described. A boundary layer diffusion package based on the Troen and Mahrt nonlocal diffusion concept has been tested for possible operational implementation. The results from this approach are compared with those from the local diffusion approach, which is the current operational scheme, and verified against FIFE observations during 9?10 August 1987. The comparisons between local and nonlocal approaches are extended to the forecast for a heavy rain case of 15?17 May 1995. The sensitivity of both the boundary layer development and the precipitation forecast to the tuning parameters in the nonlocal diffusion scheme is also investigated. Special attention is given to the interaction of boundary layer processes with precipitation physics. Some results of parallel runs during August 1995 are also presented.}, + Number = {10}, + Pages = {2322--2339}, + Publisher = {American Meteorological Society}, + Title = {Nonlocal Boundary Layer Vertical Diffusion in a Medium-Range Forecast Model}, + Ty = {JOUR}, + Url = {http://dx.doi.org/10.1175/1520-0493(1996)124<2322:NBLVDI>2.0.CO;2}, + Volume = {124}, + Year = {1996}, + Year1 = {1996}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QQC4uLy4uL0Nsb3VkU3RhdGlvbi9maXJsX2xpYnJhcnkvZmlybF9saWJyYXJ5X2ZpbGVzL0hvbmcvMTk5Ni5wZGbSFwsYGVdOUy5kYXRhTxEBwAAAAAABwAACAAAMTWFjaW50b3NoIEhEAAAAAAAAAAAAAAAAAAAA0eckUkgrAAAATXwWCDE5OTYucGRmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNe9jSlFvxAAAAAAAAAAAAAgAFAAAJIAAAAAAAAAAAAAAAAAAAAARIb25nABAACAAA0ed4sgAAABEACAAA0pS+YQAAAAEAGABNfBYAKGyWAChsiwAoZ3sAG14HAAKYXAACAFpNYWNpbnRvc2ggSEQ6VXNlcnM6AGdyYW50ZjoAQ2xvdWRTdGF0aW9uOgBmaXJsX2xpYnJhcnk6AGZpcmxfbGlicmFyeV9maWxlczoASG9uZzoAMTk5Ni5wZGYADgASAAgAMQA5ADkANgAuAHAAZABmAA8AGgAMAE0AYQBjAGkAbgB0AG8AcwBoACAASABEABIAR1VzZXJzL2dyYW50Zi9DbG91ZFN0YXRpb24vZmlybF9saWJyYXJ5L2ZpcmxfbGlicmFyeV9maWxlcy9Ib25nLzE5OTYucGRmAAATAAEvAAAVAAIADf//AACABtIbHB0eWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMdHyBWTlNEYXRhWE5TT2JqZWN00hscIiNcTlNEaWN0aW9uYXJ5oiIgXxAPTlNLZXllZEFyY2hpdmVy0SYnVHJvb3SAAQAIABEAGgAjAC0AMgA3AEAARgBNAFUAYABnAGoAbABuAHEAcwB1AHcAhACOANEA1gDeAqICpAKpArQCvQLLAs8C1gLfAuQC8QL0AwYDCQMOAAAAAAAAAgEAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAxA=}, + Bdsk-Url-1 = {http://dx.doi.org/10.1175/1520-0493(1996)124%3C2322:NBLVDI%3E2.0.CO;2}} + +@article{han_et_al_2015, + Abstract = {AbstractThe current operational eddy-diffusivity counter-gradient (EDCG) planetary boundary layer (PBL) scheme in the NCEP Global Forecast System (GFS) tends to underestimate the PBL growth in the convective boundary layer (CBL). To improve CBL growth, an eddy-diffusivity mass-flux (EDMF) PBL scheme is developed, where the nonlocal transport by large turbulent eddies is represented by a mass-flux (MF) scheme and the local transport by small eddies is represented by an eddy-diffusivity (ED) scheme. For the vertical momentum mixing, the MF scheme is modified to include the effect of the updraft-induced pressure gradient force.While the EDMF scheme displays better CBL growth than the EDCG scheme, it tends to overproduce the amount of low clouds and degrades wind vector forecasts over the tropical ocean where strongly unstable PBLs are rarely found. In order not to degrade the forecast skill in the tropics, a hybrid scheme is developed, where the EDMF scheme is applied only for the strongly unstable PBL, while the EDCG scheme is used for the weakly unstable PBL. Along with the hybrid EDMF scheme, the heating by turbulent kinetic energy (TKE) dissipation is parameterized to reduce an energy imbalance in the GFS. To enhance a too weak vertical turbulent mixing for weakly and moderately stable conditions, the current local scheme in the stable boundary layer (SBL) is modified to use an ED profile method. The hybrid EDMF PBL scheme with TKE dissipative heating and modified SBL mixing led to significant improvements in some key medium-range weather forecast metrics and was operationally implemented into the NCEP GFS in January 2015.}, + Annote = {doi: 10.1175/WAF-D-15-0053.1}, + Author = {Han, Jongil and Witek, Marcin L. and Teixeira, Joao and Sun, Ruiyu and Pan, Hua-Lu and Fletcher, Jennifer K. and Bretherton, Christopher S.}, + Booktitle = {Weather and Forecasting}, + Date-Added = {2016-05-20 17:11:42 +0000}, + Date-Modified = {2016-05-20 17:11:42 +0000}, + Doi = {10.1175/WAF-D-15-0053.1}, + Isbn = {0882-8156}, + Journal = {Weather and Forecasting}, + Journal1 = {Wea. Forecasting}, + M3 = {doi: 10.1175/WAF-D-15-0053.1}, + N2 = {AbstractThe current operational eddy-diffusivity counter-gradient (EDCG) planetary boundary layer (PBL) scheme in the NCEP Global Forecast System (GFS) tends to underestimate the PBL growth in the convective boundary layer (CBL). To improve CBL growth, an eddy-diffusivity mass-flux (EDMF) PBL scheme is developed, where the nonlocal transport by large turbulent eddies is represented by a mass-flux (MF) scheme and the local transport by small eddies is represented by an eddy-diffusivity (ED) scheme. For the vertical momentum mixing, the MF scheme is modified to include the effect of the updraft-induced pressure gradient force.While the EDMF scheme displays better CBL growth than the EDCG scheme, it tends to overproduce the amount of low clouds and degrades wind vector forecasts over the tropical ocean where strongly unstable PBLs are rarely found. In order not to degrade the forecast skill in the tropics, a hybrid scheme is developed, where the EDMF scheme is applied only for the strongly unstable PBL, while the EDCG scheme is used for the weakly unstable PBL. Along with the hybrid EDMF scheme, the heating by turbulent kinetic energy (TKE) dissipation is parameterized to reduce an energy imbalance in the GFS. To enhance a too weak vertical turbulent mixing for weakly and moderately stable conditions, the current local scheme in the stable boundary layer (SBL) is modified to use an ED profile method. The hybrid EDMF PBL scheme with TKE dissipative heating and modified SBL mixing led to significant improvements in some key medium-range weather forecast metrics and was operationally implemented into the NCEP GFS in January 2015.}, + Publisher = {American Meteorological Society}, + Title = {Implementation in the NCEP GFS of a Hybrid Eddy-Diffusivity Mass-Flux (EDMF) Boundary Layer Parameterization with Dissipative Heating and Modified Stable Boundary Layer Mixing}, + Ty = {JOUR}, + Url = {http://dx.doi.org/10.1175/WAF-D-15-0053.1}, + Year = {2015}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QPy4uLy4uL0Nsb3VkU3RhdGlvbi9maXJsX2xpYnJhcnkvZmlybF9saWJyYXJ5X2ZpbGVzL0hhbi8yMDE1LnBkZtIXCxgZV05TLmRhdGFPEQG+AAAAAAG+AAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAADR5yRSSCsAAABaxPkIMjAxNS5wZGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFrEYNK0KbgAAAAAAAAAAAACAAUAAAkgAAAAAAAAAAAAAAAAAAAAA0hhbgAAEAAIAADR53iyAAAAEQAIAADStIwoAAAAAQAYAFrE+QAobJYAKGyLAChnewAbXgcAAphcAAIAWU1hY2ludG9zaCBIRDpVc2VyczoAZ3JhbnRmOgBDbG91ZFN0YXRpb246AGZpcmxfbGlicmFyeToAZmlybF9saWJyYXJ5X2ZpbGVzOgBIYW46ADIwMTUucGRmAAAOABIACAAyADAAMQA1AC4AcABkAGYADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQAEgBGVXNlcnMvZ3JhbnRmL0Nsb3VkU3RhdGlvbi9maXJsX2xpYnJhcnkvZmlybF9saWJyYXJ5X2ZpbGVzL0hhbi8yMDE1LnBkZgATAAEvAAAVAAIADf//AACABtIbHB0eWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMdHyBWTlNEYXRhWE5TT2JqZWN00hscIiNcTlNEaWN0aW9uYXJ5oiIgXxAPTlNLZXllZEFyY2hpdmVy0SYnVHJvb3SAAQAIABEAGgAjAC0AMgA3AEAARgBNAFUAYABnAGoAbABuAHEAcwB1AHcAhACOANAA1QDdAp8CoQKmArECugLIAswC0wLcAuEC7gLxAwMDBgMLAAAAAAAAAgEAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAw0=}, + Bdsk-Url-1 = {http://dx.doi.org/10.1175/WAF-D-15-0053.1}} + +@article{han_and_pan_2006, + Abstract = {Abstract A parameterization of the convection-induced pressure gradient force (PGF) in convective momentum transport (CMT) is tested for hurricane intensity forecasting using NCEP's operational Global Forecast System (GFS) and its nested Regional Spectral Model (RSM). In the parameterization the PGF is assumed to be proportional to the product of the cloud mass flux and vertical wind shear. Compared to control forecasts using the present operational GFS and RSM where the PGF effect in CMT is taken into account empirically, the new PGF parameterization helps increase hurricane intensity by reducing the vertical momentum exchange, giving rise to a closer comparison to the observations. In addition, the new PGF parameterization forecasts not only show more realistically organized precipitation patterns with enhanced hurricane intensity but also reduce the forecast track error. Nevertheless, the model forecasts with the new PGF parameterization still largely underpredict the observed intensity. One of the many possible reasons for the large underprediction may be the absence of hurricane initialization in the models.}, + Annote = {doi: 10.1175/MWR3090.1}, + Author = {Han, Jongil and Pan, Hua-Lu}, + Booktitle = {Monthly Weather Review}, + Da = {2006/02/01}, + Date-Added = {2016-05-20 17:11:17 +0000}, + Date-Modified = {2016-05-20 17:11:17 +0000}, + Doi = {10.1175/MWR3090.1}, + Isbn = {0027-0644}, + Journal = {Monthly Weather Review}, + Journal1 = {Mon. Wea. Rev.}, + M3 = {doi: 10.1175/MWR3090.1}, + N2 = {Abstract A parameterization of the convection-induced pressure gradient force (PGF) in convective momentum transport (CMT) is tested for hurricane intensity forecasting using NCEP's operational Global Forecast System (GFS) and its nested Regional Spectral Model (RSM). In the parameterization the PGF is assumed to be proportional to the product of the cloud mass flux and vertical wind shear. Compared to control forecasts using the present operational GFS and RSM where the PGF effect in CMT is taken into account empirically, the new PGF parameterization helps increase hurricane intensity by reducing the vertical momentum exchange, giving rise to a closer comparison to the observations. In addition, the new PGF parameterization forecasts not only show more realistically organized precipitation patterns with enhanced hurricane intensity but also reduce the forecast track error. Nevertheless, the model forecasts with the new PGF parameterization still largely underpredict the observed intensity. One of the many possible reasons for the large underprediction may be the absence of hurricane initialization in the models.}, + Number = {2}, + Pages = {664--674}, + Publisher = {American Meteorological Society}, + Title = {Sensitivity of Hurricane Intensity Forecast to Convective Momentum Transport Parameterization}, + Ty = {JOUR}, + Url = {http://dx.doi.org/10.1175/MWR3090.1}, + Volume = {134}, + Year = {2006}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QPy4uLy4uL0Nsb3VkU3RhdGlvbi9maXJsX2xpYnJhcnkvZmlybF9saWJyYXJ5X2ZpbGVzL0hhbi8yMDA2LnBkZtIXCxgZV05TLmRhdGFPEQG+AAAAAAG+AAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAADR5yRSSCsAAABaxPkIMjAwNi5wZGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFrMWNK0K9UAAAAAAAAAAAACAAUAAAkgAAAAAAAAAAAAAAAAAAAAA0hhbgAAEAAIAADR53iyAAAAEQAIAADStI5FAAAAAQAYAFrE+QAobJYAKGyLAChnewAbXgcAAphcAAIAWU1hY2ludG9zaCBIRDpVc2VyczoAZ3JhbnRmOgBDbG91ZFN0YXRpb246AGZpcmxfbGlicmFyeToAZmlybF9saWJyYXJ5X2ZpbGVzOgBIYW46ADIwMDYucGRmAAAOABIACAAyADAAMAA2AC4AcABkAGYADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQAEgBGVXNlcnMvZ3JhbnRmL0Nsb3VkU3RhdGlvbi9maXJsX2xpYnJhcnkvZmlybF9saWJyYXJ5X2ZpbGVzL0hhbi8yMDA2LnBkZgATAAEvAAAVAAIADf//AACABtIbHB0eWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMdHyBWTlNEYXRhWE5TT2JqZWN00hscIiNcTlNEaWN0aW9uYXJ5oiIgXxAPTlNLZXllZEFyY2hpdmVy0SYnVHJvb3SAAQAIABEAGgAjAC0AMgA3AEAARgBNAFUAYABnAGoAbABuAHEAcwB1AHcAhACOANAA1QDdAp8CoQKmArECugLIAswC0wLcAuEC7gLxAwMDBgMLAAAAAAAAAgEAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAw0=}, + Bdsk-Url-1 = {http://dx.doi.org/10.1175/MWR3090.1}} + +@article{businger_et_al_1971, + Author = {Businger, JA and Wyngaard, JC and Izumi, Y and Bradley, EF}, + Date-Added = {2016-05-20 17:10:50 +0000}, + Date-Modified = {2016-05-20 17:10:50 +0000}, + Isi = {A1971I822800004}, + Isi-Recid = {19632344}, + Isi-Ref-Recids = {16272216 16824421 15490261 18767713 13407665 19632345 10481101 14142571 12686164 19632346 18858658 6152690 19632347 13839218 13839220 16272206 8976449 16824425 5541689 5062496 12462060 8185394 19632348 773111 19632349 19632350 19632351 8997317 15704607 15542957 18734229}, + Iso-Source-Abbreviation = {J Atmos Sci}, + Journal = {Journal of the Atmospheric Sciences}, + Pages = {181--\&}, + Times-Cited = {1862}, + Title = {FLUX-PROFILE RELATIONSHIPS IN the ATMOSPHERIC SURFACE LAYER}, + Volume = {28}, + Year = {1971}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QRC4uLy4uL0Nsb3VkU3RhdGlvbi9maXJsX2xpYnJhcnkvZmlybF9saWJyYXJ5X2ZpbGVzL0J1c2luZ2VyLzE5NzEucGRm0hcLGBlXTlMuZGF0YU8RAcwAAAAAAcwAAgAADE1hY2ludG9zaCBIRAAAAAAAAAAAAAAAAAAAANHnJFJIKwAAACh1RQgxOTcxLnBkZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKHVxtM8jHAAAAAAAAAAAAAIABQAACSAAAAAAAAAAAAAAAAAAAAAIQnVzaW5nZXIAEAAIAADR53iyAAAAEQAIAAC0z4WMAAAAAQAYACh1RQAobJYAKGyLAChnewAbXgcAAphcAAIAXk1hY2ludG9zaCBIRDpVc2VyczoAZ3JhbnRmOgBDbG91ZFN0YXRpb246AGZpcmxfbGlicmFyeToAZmlybF9saWJyYXJ5X2ZpbGVzOgBCdXNpbmdlcjoAMTk3MS5wZGYADgASAAgAMQA5ADcAMQAuAHAAZABmAA8AGgAMAE0AYQBjAGkAbgB0AG8AcwBoACAASABEABIAS1VzZXJzL2dyYW50Zi9DbG91ZFN0YXRpb24vZmlybF9saWJyYXJ5L2ZpcmxfbGlicmFyeV9maWxlcy9CdXNpbmdlci8xOTcxLnBkZgAAEwABLwAAFQACAA3//wAAgAbSGxwdHlokY2xhc3NuYW1lWCRjbGFzc2VzXU5TTXV0YWJsZURhdGGjHR8gVk5TRGF0YVhOU09iamVjdNIbHCIjXE5TRGljdGlvbmFyeaIiIF8QD05TS2V5ZWRBcmNoaXZlctEmJ1Ryb290gAEACAARABoAIwAtADIANwBAAEYATQBVAGAAZwBqAGwAbgBxAHMAdQB3AIQAjgDVANoA4gKyArQCuQLEAs0C2wLfAuYC7wL0AwEDBAMWAxkDHgAAAAAAAAIBAAAAAAAAACgAAAAAAAAAAAAAAAAAAAMg}, + Bdsk-Url-1 = {http://ws.isiknowledge.com/cps/openurl/service?url_ver=Z39.88-2004&rft_id=info:ut/A1971I822800004}} + +@article{xu_and_randall_1996, + Author = {K-M. Xu and D. A. Randall}, + Date-Added = {2016-05-20 16:22:45 +0000}, + Date-Modified = {2016-05-20 16:24:47 +0000}, + Journal = {J. Atmos. Sci.}, + Month = {3102}, + Number = {21}, + Pages = {3084}, + Title = {A semiempirical cloudiness parameterization for use in climate models}, + Volume = {53}, + Year = {1996}} + +@article{clough_et_al_1992, + Author = {S. A. Clough and M. J. Iacono and J. L. Moncet}, + Date-Added = {2016-05-20 15:32:24 +0000}, + Date-Modified = {2016-05-20 15:36:33 +0000}, + Journal = {J. Geophys. Res.}, + Month = {October}, + Number = {D14}, + Pages = {15761-15785}, + Title = {Line-by-line calculation of atmospheric fluxes and cooling rates: Application to water vapor}, + Volume = {97}, + Year = {1992}} + +@techreport{chou_and_suarez_1999, + Author = {M.D. Chou and M. J. Suarez}, + Date-Added = {2016-05-20 15:27:31 +0000}, + Date-Modified = {2016-05-20 15:30:02 +0000}, + Institution = {NASA}, + Number = {15}, + Title = {A solar radiation parameterization for atmospheric studies}, + Type = {Technical Memorandum}, + Year = {1999}} + +@article{sato_et_al_1993, + Author = {M. Sato and J.E. Hansan and M. P. McCormick and J. B. Pollack}, + Date-Added = {2016-05-20 04:23:08 +0000}, + Date-Modified = {2016-05-20 15:07:03 +0000}, + Journal = {J. Geophys. Res.}, + Month = {December}, + Number = {D12}, + Pages = {22987-22994}, + Title = {Stratospheric aerosol optical depth, 1985-1990}, + Volume = {98}, + Year = {1993}} + +@article{chin_et_al_2000, + Author = {M. Chin and R. B. Rood and S-J. Lin and J-F. Muller and A. M. Thompson}, + Date-Added = {2016-05-20 04:18:03 +0000}, + Date-Modified = {2016-05-20 15:07:33 +0000}, + Journal = {J. Geophys. Res.}, + Month = {October}, + Number = {D20}, + Pages = {24671-24687}, + Title = {Atmospheric sulfur cycle simulated in the global model GOCART: Model description and global properties}, + Volume = {105}, + Year = {2000}} + +@article{hess_et_al_1998, + Author = {M. Hess and P. Koepke and I. Schult}, + Date-Added = {2016-05-20 04:06:58 +0000}, + Date-Modified = {2016-05-20 15:08:21 +0000}, + Journal = {Bull. Am. Meteor. Soc.}, + Pages = {831-844}, + Title = {Optical properties of aerosols and clouds: The software package OPAC.}, + Volume = {79}, + Year = {1998}} + +@article{iacono_et_al_2000, + Author = {M.J. Iacono and E.J. Mlawer and S. A. Clough and J.-J. Morcrette}, + Date-Added = {2016-05-20 03:45:26 +0000}, + Date-Modified = {2016-05-20 15:08:59 +0000}, + Journal = {J. Geophys. Res.}, + Pages = {14873-14890}, + Title = {Impact of an improved longwave radiation model, RRTM, on the energy budget and thermodynamic properties of the NCAR community climate model, CCM3}, + Volume = {105}, + Year = {2000}} + +@article{clough_et_al_2005, + Author = {S. A. Clough and M. W. Shephard and E. J. Mlawer and J.S. Delamere and M. J. Iacono and K. Cady-Pereira and S. Boukabara and P. D. Brown}, + Date-Added = {2016-05-20 03:39:46 +0000}, + Date-Modified = {2016-05-20 15:10:30 +0000}, + Journal = {J. Quant. Spectrosc. Radiat. Transfer}, + Pages = {233-244}, + Title = {Atmospheric radiative transfer modeling: A summary of the AER codes}, + Volume = {91}, + Year = {2005}} + +@article{heymsfield_and_mcfarquhar_1996, + Author = {A.J. Heymsfield and G. M. McFarquhar}, + Date-Added = {2016-05-20 03:35:53 +0000}, + Date-Modified = {2016-05-24 17:35:50 +0000}, + Journal = {J. Atmos. Sci.}, + Pages = {2424-2451}, + Title = {High albedos of cirrus in the tropical Pacific warm pool: Microphysical interpretations from CEPEX and from Kwajalein, Marshall Islands}, + Volume = {53}, + Year = {1996}} + +@article{mlawer_et_al_1997, + Author = {E.J. Mlawer and S.J. Taubman and P.D. Brown and M. J. Iacono and S. A. Clough}, + Date-Added = {2016-05-20 03:32:32 +0000}, + Date-Modified = {2016-05-20 15:12:05 +0000}, + Journal = {J. Geophys. Res.}, + Number = {16663-16682}, + Title = {Radiative transfer for inhomogenerous atmospheres: RRTM, a validated correlated-k model for the longwave}, + Volume = {102}, + Year = {1997}} + +@article{Schwarzkopf_and_Fels_1991, + Author = {M.D. Schwarzkopf and S.B. Fels}, + Date-Added = {2016-05-20 03:29:16 +0000}, + Date-Modified = {2016-05-20 15:12:19 +0000}, + Journal = {J. Geophys. Res.}, + Pages = {9075-9096}, + Title = {The simplified exchange method revisited: An accurate, rapid method for computation of infrared cooling rates and fluxes}, + Volume = {96}, + Year = {1991}} + +@article{briegleb_1992, + Author = {B.P. Briegleb}, + Date-Added = {2016-05-20 03:09:50 +0000}, + Date-Modified = {2016-05-20 15:12:27 +0000}, + Journal = {J. Geophys. Res.}, + Pages = {7603-7612}, + Title = {Delta-Eddington approximation for solar radiation in the NCAR community climate model}, + Volume = {97}, + Year = {1992}} + +@conference{alpert_et_al_1988, + Address = {Baltimore, MD}, + Author = {J. Alpert and M. Kanamitsu and P.M. Caplan and J.G. Sela and G. H. White and E. Kalnay}, + Date-Added = {2016-05-19 22:40:01 +0000}, + Date-Modified = {2016-05-20 15:13:59 +0000}, + Organization = {Eighth Conf. on Numerical Weather Prediction, Amer. Meteor. Soc.}, + Pages = {726-733}, + Title = {Mountain induced gravity wave drag parameterization in the NMC medium-range forecast model}, + Year = {1988}} + +@conference{alpert_et_al_1996, + Address = {Norfolk}, + Author = {J.C. Alpert and S-Y. Hong and Y-J. Kim}, + Date-Added = {2016-05-19 22:36:02 +0000}, + Date-Modified = {2016-05-20 15:14:15 +0000}, + Organization = {11 Conf. on NWP}, + Pages = {322-323}, + Title = {Sensitivity of cyclogenesis to lower troposphere enhancement of gravity wave drag using the EMC MRF}, + Year = {1996}} + +@conference{alpert_2006, + Author = {J.C. Alpert}, + Booktitle = {20th Conf. WAF/16 Conf. NWP}, + Date-Added = {2016-05-19 21:24:23 +0000}, + Date-Modified = {2016-05-20 15:14:34 +0000}, + Number = {P2.4}, + Title = {Sub-grid scale mountain blocking at NCEP}, + Year = {2006}} + +@article{ebert_and_curry_1992, + Author = {E.E. Ebert and J.A. Curry}, + Date-Added = {2016-05-19 21:19:00 +0000}, + Date-Modified = {2016-05-20 15:12:43 +0000}, + Journal = {J. Geophys. Res.}, + Pages = {3831-3836}, + Title = {A parameterization of ice cloud optical properties for climate models}, + Volume = {97}, + Year = {1992}} + +@article{fu_1996, + Author = {Q. Fu}, + Date-Added = {2016-05-19 21:16:22 +0000}, + Date-Modified = {2016-05-20 15:12:51 +0000}, + Journal = {J. Climate}, + Pages = {2058-2082}, + Title = {An accurate parameterization of the solar radiative properties of cirrus clouds for climate models}, + Volume = {9}, + Year = {1996}} + +@article{kim_and_arakawa_1995, + Author = {Y.-J. KIM and A. Arakawa}, + Date-Added = {2016-05-19 21:06:13 +0000}, + Date-Modified = {2016-05-20 15:13:01 +0000}, + Journal = {J. Atmos. Sci.}, + Pages = {1875-1902}, + Title = {Improvement of orographic gravity wave parameterization using a mesoscale gravity-wave model}, + Volume = {52}, + Year = {1995}} + +@techreport{hou_et_al_2002, + Author = {Y. Hou and S. Moorthi and K. Campana}, + Date-Added = {2016-05-19 19:52:22 +0000}, + Date-Modified = {2016-05-20 15:14:59 +0000}, + Institution = {NCEP}, + Number = {441}, + Title = {Parameterization of Solar Radiation Transfer}, + Type = {office note}, + Year = {2002}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QIi4uLy4uL3poYW5nLWxpYi9ob3VfZXRfYWxfMjAwMi5wZGbSFwsYGVdOUy5kYXRhTxEB3AAAAAAB3AACAAAMTWFjaW50b3NoIEhEAAAAAAAAAAAAAAAAAAAAz9PWZkgrAAAAUqSNEmhvdV9ldF9hbF8yMDAyLnBkZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSpqLTY4YKAAAAAAAAAAAAAgACAAAJIAAAAAAAAAAAAAAAAAAAAAl6aGFuZy1saWIAABAACAAAz9QqxgAAABEACAAA02PaagAAAAEAGABSpI0ATWVKACPX1AAJNsUACTbEAAJm+QACAFtNYWNpbnRvc2ggSEQ6VXNlcnM6AG1hbnpoYW5nOgBEb2N1bWVudHM6AE1hbi5aaGFuZzoAZ210Yi1kb2M6AHpoYW5nLWxpYjoAaG91X2V0X2FsXzIwMDIucGRmAAAOACYAEgBoAG8AdQBfAGUAdABfAGEAbABfADIAMAAwADIALgBwAGQAZgAPABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASAEhVc2Vycy9tYW56aGFuZy9Eb2N1bWVudHMvTWFuLlpoYW5nL2dtdGItZG9jL3poYW5nLWxpYi9ob3VfZXRfYWxfMjAwMi5wZGYAEwABLwAAFQACAA///wAAgAbSGxwdHlokY2xhc3NuYW1lWCRjbGFzc2VzXU5TTXV0YWJsZURhdGGjHR8gVk5TRGF0YVhOU09iamVjdNIbHCIjXE5TRGljdGlvbmFyeaIiIF8QD05TS2V5ZWRBcmNoaXZlctEmJ1Ryb290gAEACAARABoAIwAtADIANwBAAEYATQBVAGAAZwBqAGwAbgBxAHMAdQB3AIQAjgCzALgAwAKgAqICpwKyArsCyQLNAtQC3QLiAu8C8gMEAwcDDAAAAAAAAAIBAAAAAAAAACgAAAAAAAAAAAAAAAAAAAMO}} + +@article{hu_and_stamnes_1993, + Author = {Y.X. Hu and K. Stamnes}, + Date-Added = {2016-05-19 19:31:56 +0000}, + Date-Modified = {2016-05-20 15:13:12 +0000}, + Journal = {J. Climate}, + Month = {April}, + Pages = {728-742}, + Title = {An accurate parameterization of the radiative properties of water clouds suitable for use in climate models}, + Volume = {6}, + Year = {1993}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QJy4uLy4uL3poYW5nLWxpYi9odV9hbmRfc3RhbW5lc18xOTkzLnBkZtIXCxgZV05TLmRhdGFPEQHwAAAAAAHwAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAADP09ZmSCsAAABSpI0XaHVfYW5kX3N0YW1uZXNfMTk5My5wZGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFKkkdNjdH4AAAAAAAAAAAACAAIAAAkgAAAAAAAAAAAAAAAAAAAACXpoYW5nLWxpYgAAEAAIAADP1CrGAAAAEQAIAADTY8jeAAAAAQAYAFKkjQBNZUoAI9fUAAk2xQAJNsQAAmb5AAIAYE1hY2ludG9zaCBIRDpVc2VyczoAbWFuemhhbmc6AERvY3VtZW50czoATWFuLlpoYW5nOgBnbXRiLWRvYzoAemhhbmctbGliOgBodV9hbmRfc3RhbW5lc18xOTkzLnBkZgAOADAAFwBoAHUAXwBhAG4AZABfAHMAdABhAG0AbgBlAHMAXwAxADkAOQAzAC4AcABkAGYADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQAEgBNVXNlcnMvbWFuemhhbmcvRG9jdW1lbnRzL01hbi5aaGFuZy9nbXRiLWRvYy96aGFuZy1saWIvaHVfYW5kX3N0YW1uZXNfMTk5My5wZGYAABMAAS8AABUAAgAP//8AAIAG0hscHR5aJGNsYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox0fIFZOU0RhdGFYTlNPYmplY3TSGxwiI1xOU0RpY3Rpb25hcnmiIiBfEA9OU0tleWVkQXJjaGl2ZXLRJidUcm9vdIABAAgAEQAaACMALQAyADcAQABGAE0AVQBgAGcAagBsAG4AcQBzAHUAdwCEAI4AuAC9AMUCuQK7AsACywLUAuIC5gLtAvYC+wMIAwsDHQMgAyUAAAAAAAACAQAAAAAAAAAoAAAAAAAAAAAAAAAAAAADJw==}} diff --git a/physics/docs/txt/log.txt b/physics/docs/txt/log.txt new file mode 100644 index 000000000..160df7547 --- /dev/null +++ b/physics/docs/txt/log.txt @@ -0,0 +1,10 @@ +/** +\page log SVN infomation page +- svn checkout https://svnemc.ncep.noaa.gov/projects/gsm/branches/DTC/phys-doc-all/gsmphys +- \version 83319 +- \date Last Changed Date: 2016-10-11 14:57:34 -0600 (Tue, 11 Oct 2016) + +- svn log -l 10 +\n ------------------------------------------------------------------------ r82970 | man.zhang@noaa.gov | 2016-10-11 14:57:34 -0600 (Tue, 11 Oct 2016) | 1 line Changed paths: M /gsm/branches/DTC/phys-doc-all/docs/CCPP/library.bib M /gsm/branches/DTC/phys-doc-all/gsmphys/radsw_main.f cite updates on rad ------------------------------------------------------------------------ r82966 | man.zhang@noaa.gov | 2016-10-11 14:23:03 -0600 (Tue, 11 Oct 2016) | 1 line Changed paths: M /gsm/branches/DTC/phys-doc-all M /gsm/branches/DTC/phys-doc-all/dyn M /gsm/branches/DTC/phys-doc-all/dyn/do_dynamics_slg_loop.f M /gsm/branches/DTC/phys-doc-all/dyn/gfs_dynamics_grid_comp_mod.f M /gsm/branches/DTC/phys-doc-all/dyn/gfs_dynamics_initialize_slg_mod.f M /gsm/branches/DTC/phys-doc-all/gsmphys A /gsm/branches/DTC/phys-doc-all/io (from /gsm/trunk/io:82951) M /gsm/branches/DTC/phys-doc-all/libutil M /gsm/branches/DTC/phys-doc-all/libutil/makefile M /gsm/branches/DTC/phys-doc-all/libutil/module_DM_PARALLEL_GFS.F90 A /gsm/branches/DTC/phys-doc-all/libutil/module_TIMERS.F90 (from /gsm/trunk/libutil/module_TIMERS.F90:82951) M /gsm/branches/DTC/phys-doc-all/libutil/module_gfs_mpi_def.F90 M /gsm/branches/DTC/phys-doc-all/makefile M /gsm/branches/DTC/phys-doc-all/module_GFS_CORE_SETUP.F90 M /gsm/branches/DTC/phys-doc-all/module_GFS_GRID_COMP.F90 M /gsm/branches/DTC/phys-doc-all/module_GFS_GRID_COMP_stub.F90 M /gsm/branches/DTC/phys-doc-all/module_GFS_INTEGRATE.F90 M /gsm/branches/DTC/phys-doc-all/module_GFS_INTERNAL_STATE.F90 M /gsm/branches/DTC/phys-doc-all/module_GOCART_ROUTINES.F90 M /gsm/branches/DTC/phys-doc-all/module_GOCART_ROUTINES_stub.F90 M /gsm/branches/DTC/phys-doc-all/phys M /gsm/branches/DTC/phys-doc-all/phys/do_physics_one_step.f M /gsm/branches/DTC/phys-doc-all/phys/gfs_physics_grid_comp_mod.f M /gsm/branches/DTC/phys-doc-all/phys/gloopb.f M /gsm/branches/DTC/phys-doc-all/phys/gloopr.f ------------------------------------------------------------------------ r82951 | man.zhang@noaa.gov | 2016-10-11 11:41:37 -0600 (Tue, 11 Oct 2016) | 1 line Changed paths: M /gsm/branches/DTC/phys-doc-all/docs/CCPP/library.bib M /gsm/branches/DTC/phys-doc-all/gsmphys/grrad.f M /gsm/branches/DTC/phys-doc-all/gsmphys/gscond.f M /gsm/branches/DTC/phys-doc-all/gsmphys/moninedmf.f M /gsm/branches/DTC/phys-doc-all/gsmphys/precpd.f M /gsm/branches/DTC/phys-doc-all/gsmphys/radsw_main.f fix documentation bugs ------------------------------------------------------------------------ r82897 | grantf@ucar.edu | 2016-10-07 14:06:21 -0600 (Fri, 07 Oct 2016) | 1 line Changed paths: M /gsm/branches/DTC/phys-doc-all/docs/CCPP/ccpp_dox M /gsm/branches/DTC/phys-doc-all/docs/CCPP/txt/log.txt M /gsm/branches/DTC/phys-doc-all/gsmphys/gbphys.f doxygen correction; fixed missing ! on line 630 in gbphys.f ------------------------------------------------------------------------ r82787 | man.zhang@noaa.gov | 2016-10-05 15:34:43 -0600 (Wed, 05 Oct 2016) | 1 line Changed paths: M /gsm/branches/DTC/phys-doc-all M /gsm/branches/DTC/phys-doc-all/dyn M /gsm/branches/DTC/phys-doc-all/dyn/gfs_dynamics_initialize_slg_mod.f M /gsm/branches/DTC/phys-doc-all/gsmphys M /gsm/branches/DTC/phys-doc-all/gsmphys/README.PHYSDRV M /gsm/branches/DTC/phys-doc-all/gsmphys/nuopc_physics.F90 M /gsm/branches/DTC/phys-doc-all/libutil M /gsm/branches/DTC/phys-doc-all/makefile M /gsm/branches/DTC/phys-doc-all/module_GFS_CORE_SETUP.F90 M /gsm/branches/DTC/phys-doc-all/module_GFS_GRID_COMP.F90 M /gsm/branches/DTC/phys-doc-all/module_GFS_GRID_COMP_stub.F90 M /gsm/branches/DTC/phys-doc-all/module_GFS_INTEGRATE.F90 M /gsm/branches/DTC/phys-doc-all/module_GFS_INTERNAL_STATE.F90 M /gsm/branches/DTC/phys-doc-all/module_GOCART_ROUTINES.F90 M /gsm/branches/DTC/phys-doc-all/module_GOCART_ROUTINES_stub.F90 M /gsm/branches/DTC/phys-doc-all/phys M /gsm/branches/DTC/phys-doc-all/phys/do_physics_one_step.f M /gsm/branches/DTC/phys-doc-all/phys/gfs_physics_initialize_mod.f M /gsm/branches/DTC/phys-doc-all/phys/gloopb.f M /gsm/branches/DTC/phys-doc-all/phys/gloopr.f ------------------------------------------------------------------------ r82781 | man.zhang@noaa.gov | 2016-10-05 14:25:01 -0600 (Wed, 05 Oct 2016) | 1 line Changed paths: M /gsm/branches/DTC/phys-doc-all/gsmphys/gscond.f M /gsm/branches/DTC/phys-doc-all/gsmphys/gwdc.f M /gsm/branches/DTC/phys-doc-all/gsmphys/gwdps.f M /gsm/branches/DTC/phys-doc-all/gsmphys/mfpbl.f M /gsm/branches/DTC/phys-doc-all/gsmphys/moninedmf.f M /gsm/branches/DTC/phys-doc-all/gsmphys/ozphys.f M /gsm/branches/DTC/phys-doc-all/gsmphys/precpd.f M /gsm/branches/DTC/phys-doc-all/gsmphys/radsw_main.f M /gsm/branches/DTC/phys-doc-all/gsmphys/sascnvn.f M /gsm/branches/DTC/phys-doc-all/gsmphys/shalcnv.f minor changes on Fortran code ------------------------------------------------------------------------ r82744 | man.zhang@noaa.gov | 2016-10-05 09:23:05 -0600 (Wed, 05 Oct 2016) | 1 line Changed paths: M /gsm/branches/DTC/phys-doc-all/gsmphys/grrad.f doxygen documentation and related text files update ------------------------------------------------------------------------ r82743 | man.zhang@noaa.gov | 2016-10-05 09:22:16 -0600 (Wed, 05 Oct 2016) | 1 line Changed paths: M /gsm/branches/DTC/phys-doc-all/docs/CCPP/gen_doxfile M /gsm/branches/DTC/phys-doc-all/docs/CCPP/library.bib M /gsm/branches/DTC/phys-doc-all/docs/CCPP/txt/mainpage.txt M /gsm/branches/DTC/phys-doc-all/gsmphys/gbphys.f M /gsm/branches/DTC/phys-doc-all/gsmphys/gscond.f M /gsm/branches/DTC/phys-doc-all/gsmphys/gwdc.f M /gsm/branches/DTC/phys-doc-all/gsmphys/gwdps.f M /gsm/branches/DTC/phys-doc-all/gsmphys/mfpbl.f M /gsm/branches/DTC/phys-doc-all/gsmphys/moninedmf.f M /gsm/branches/DTC/phys-doc-all/gsmphys/ozphys.f M /gsm/branches/DTC/phys-doc-all/gsmphys/precpd.f M /gsm/branches/DTC/phys-doc-all/gsmphys/radiation_clouds.f M /gsm/branches/DTC/phys-doc-all/gsmphys/radsw_main.f M /gsm/branches/DTC/phys-doc-all/gsmphys/sascnvn.f M /gsm/branches/DTC/phys-doc-all/gsmphys/shalcnv.f doxygen documentation and related text files update ------------------------------------------------------------------------ r82622 | man.zhang@noaa.gov | 2016-10-03 16:40:26 -0600 (Mon, 03 Oct 2016) | 1 line Changed paths: M /gsm/branches/DTC/phys-doc-all/docs/CCPP/ccpp_dox M /gsm/branches/DTC/phys-doc-all/docs/CCPP/gen_doxfile M /gsm/branches/DTC/phys-doc-all/gsmphys/gscond.f M /gsm/branches/DTC/phys-doc-all/gsmphys/gwdc.f M /gsm/branches/DTC/phys-doc-all/gsmphys/gwdps.f documentation and doxygen setup minor changes ------------------------------------------------------------------------ r82506 | man.zhang@noaa.gov | 2016-09-30 15:10:19 -0600 (Fri, 30 Sep 2016) | 1 line Changed paths: M /gsm/branches/DTC/phys-doc-all M /gsm/branches/DTC/phys-doc-all/dyn M /gsm/branches/DTC/phys-doc-all/dyn/gfs_dynamics_initialize_slg_mod.f M /gsm/branches/DTC/phys-doc-all/gsmphys M /gsm/branches/DTC/phys-doc-all/gsmphys/grrad.f M /gsm/branches/DTC/phys-doc-all/gsmphys/nuopc_physics.F90 M /gsm/branches/DTC/phys-doc-all/libutil M /gsm/branches/DTC/phys-doc-all/makefile M /gsm/branches/DTC/phys-doc-all/module_GFS_CORE_SETUP.F90 M /gsm/branches/DTC/phys-doc-all/module_GFS_GRID_COMP.F90 M /gsm/branches/DTC/phys-doc-all/module_GFS_GRID_COMP_stub.F90 M /gsm/branches/DTC/phys-doc-all/module_GFS_INTEGRATE.F90 M /gsm/branches/DTC/phys-doc-all/module_GFS_INTERNAL_STATE.F90 M /gsm/branches/DTC/phys-doc-all/module_GOCART_ROUTINES.F90 M /gsm/branches/DTC/phys-doc-all/module_GOCART_ROUTINES_stub.F90 M /gsm/branches/DTC/phys-doc-all/phys M /gsm/branches/DTC/phys-doc-all/phys/fix_fields.f M /gsm/branches/DTC/phys-doc-all/phys/gfs_physics_initialize_mod.f M /gsm/branches/DTC/phys-doc-all/phys/gloopr.f M /gsm/branches/DTC/phys-doc-all/phys/read_fix.f M /gsm/branches/DTC/phys-doc-all/phys/resol_def.f ------------------------------------------------------------------------ + +*/ diff --git a/physics/docs/txt/mainpage.txt b/physics/docs/txt/mainpage.txt new file mode 100644 index 000000000..4ef07b8b1 --- /dev/null +++ b/physics/docs/txt/mainpage.txt @@ -0,0 +1,16 @@ +/** +\mainpage 2017 GFS Operational Physics + +The documentation found here corresponds to the state of the operational GFS physics suite as of 2017. Documentation for the operational physics suite can be access through these links:: + - \ref RRTMG + - \ref SASAS + - \ref SASHAL + - \ref HEDMF + - \ref Zhao-Carr + - \ref NOAH + - \ref GFS_Ice + - \ref GFS_NSST + - \ref GFS_ogwd + - \ref GFS_cgwd + - \ref GFS_ozn +*/ diff --git a/physics/gscond.f b/physics/gscond.f index 52fc3a16f..0ab6c5387 100644 --- a/physics/gscond.f +++ b/physics/gscond.f @@ -1,35 +1,35 @@ !> \file gscond.f -!! This file contains the subroutine that calculates grid-scale -!! condensation and evaporation for use in the Zhao and Carr (1997) +!! This file contains the subroutine that calculates grid-scale +!! condensation and evaporation for use in the Zhao and Carr (1997) !! \cite zhao_and_carr_1997 scheme. -!> \defgroup MPscheme Grid-scale Condensation, Evaporation and Precipitation +!> \defgroup Zhao-Carr Zhao-Carr Microphysics !! @{ !! \brief The GFS scheme for large-scale condensation and precipitation !! , based on Zhao and Carr (1997) \cite zhao_and_carr_1997 !! and Sundqvist et al. (1989) \cite sundqvist_et_al_1989 . !! \image html schematic_MPS.png "Figure 1: Schematic illustration of the precipitation scheme" width=10cm !! \details Figure 1 shows a schematic illustration of this scheme. -!! There are two sources of prognostic cloud condensate, convective +!! There are two sources of prognostic cloud condensate, convective !! detrainment (see convection) and grid-sale -!! condensate. The sinks of cloud condensate are grid-scale -!! precipitation and evaporation of the cloud condensate. Evaporation -!! of rain in the unsaturated layers below the level of condensation -!! is also taken into account. All precipitation that penetrates the -!! lowest atmospheric layer is allowed to fall to the surface. -!! Subsequent to the May 2001 implementation, excessive amounts of -!! light precipitation were noted. This was addressed through a minor -!! implementation in August 2001, which involved a slight modification -!! of the autoconversion rate of ice. At the same time, an -!! empirically-based calculation of the effective radius for ice -!! crystals (Heymsfield and McFarquhar 1996 +!! condensate. The sinks of cloud condensate are grid-scale +!! precipitation and evaporation of the cloud condensate. Evaporation +!! of rain in the unsaturated layers below the level of condensation +!! is also taken into account. All precipitation that penetrates the +!! lowest atmospheric layer is allowed to fall to the surface. +!! Subsequent to the May 2001 implementation, excessive amounts of +!! light precipitation were noted. This was addressed through a minor +!! implementation in August 2001, which involved a slight modification +!! of the autoconversion rate of ice. At the same time, an +!! empirically-based calculation of the effective radius for ice +!! crystals (Heymsfield and McFarquhar 1996 !! \cite heymsfield_and_mcfarquhar_1996) was introduced. !> \section tune Important Tunable Parameters !! The parameters below, which can be set through a namelist, influence -!! the amount of cloud condensate in the atmosphere and thus the cloud +!! the amount of cloud condensate in the atmosphere and thus the cloud !! radiative properties: !! - PSAUTCO, PRAUTCO: Auto conversion coefficients (ice and water) -!! - WMINCO(2): Coefficients for minimum value of cloud condensate to +!! - WMINCO(2): Coefficients for minimum value of cloud condensate to !! conversion from condensate (water and ice) to precipitation !! - EVPCO: Coefficient for evaporation of precipitation !! @@ -38,16 +38,16 @@ !! - Routine PRECPD is called from GBPHYS after call to GSCOND !> \defgroup condense Grid-Scale Condensation and Evaporation of Cloud -!! This subroutine computes grid-scale condensation and evaporation of +!! This subroutine computes grid-scale condensation and evaporation of !! cloud condensate. !! -!> There are two sources of condensation, one from large-scale -!! processes and the other from convective processes. Both of them -!! produce either cloud water or cloud ice, depending on the cloud +!> There are two sources of condensation, one from large-scale +!! processes and the other from convective processes. Both of them +!! produce either cloud water or cloud ice, depending on the cloud !! substance at and above the grid point at current and previous time -!! steps, and on the temperature. Evaporation of cloud is allowed at +!! steps, and on the temperature. Evaporation of cloud is allowed at !! points where the relative humidity is lower than the critical value -!! required for condensation. +!! required for condensation. !! @{ !> \param[in] ix horizontal dimension @@ -58,24 +58,29 @@ !! \param[in] prsl pressure values for model layers !! \param[in] ps surface pressure (Pa) !! \param[in,out] q model layer specific humidity (gm/gm) -!! \param[in,out] cwm model layer cloud condensate +!! \param[in,out] cwm model layer cloud condensate !! \param[in,out] t model layer mean temperature (K) -!! \param[in,out] tp model layer mean temperature (K) saved for +!! \param[in,out] tp model layer mean temperature (K) saved for !! restart -!! \param[in,out] qp model layer specific humidity (gm/gm) saved +!! \param[in,out] qp model layer specific humidity (gm/gm) saved !! for restart !! \param[in,out] psp surface pressure (Pa) saved for restart !! \param[in,out] tp1 updated model layer mean temperature (K) saved !! for restart !! \param[in,out] qp1 updated model layer specific humidity (gm/gm) !! saved for restart -!! \param[in,out] psp1 updated surface pressure (Pa) saved for +!! \param[in,out] psp1 updated surface pressure (Pa) saved for !! restart -!! \param[in] u the critical value of relative humidity for +!! \param[in] u the critical value of relative humidity for !! large-scale condensation !! \param[in] lprnt logical print flag !! \param[in] ipr check print point for debugging -!! +!! +!! \section arg_table_Zhao_Carr_run Arguments +!! | local var name | longname | description | units | rank | type | kind | intent | optional | +!! |----------------|-------------------------------------------------------|------------------------------------|---------|------|---------|-----------|--------|----------| +!! | im | horizontal_loop_extent | horizontal loop extent, start at 1 | index | 0 | integer | | in | F | +!! !! \section def Definition of symbols !! - \f$C_{g}\f$: grid-scale condensation rate (\f$s^{-1}\f$) !! - \f$E_{c}\f$: evaporation rate of cloud (\f$s^{-1}\f$) @@ -128,7 +133,7 @@ subroutine gscond (im,ix,km,dt,dtf,prsl,ps,q,cwm,t & real (kind=kind_phys) qi(im), qint(im), u(im,km), ccrik, e0 &, cond, rdt, us, cclimit, climit &, tmt0, tmt15, qik, cwmik - &, ai, qw, u00ik, tik, pres, pp0, fi + &, ai, qw, u00ik, tik, pres, pp0, fi &, at, aq, ap, fiw, elv, qc, rqik &, rqikk, tx1, tx2, tx3, es, qs &, tsq, delq, condi, cone0, us00, ccrik1 @@ -171,7 +176,7 @@ subroutine gscond (im,ix,km,dt,dtf,prsl,ps,q,cwm,t & ! endif ! !************************************************************* -!> -# Begining of grid-scale condensation/evaporation loop (start of +!> -# Begining of grid-scale condensation/evaporation loop (start of !! k-loop, i-loop) !************************************************************* ! @@ -180,7 +185,7 @@ subroutine gscond (im,ix,km,dt,dtf,prsl,ps,q,cwm,t & ! vprs(:) = 0.001 * fpvs(t(:,k)) ! fpvs in pa !----------------------------------------------------------------------- !------------------qw, qi and qint-------------------------------------- - do i = 1, im + do i = 1, im tmt0 = t(i,k)-273.16 tmt15 = min(tmt0,cons_m15) qik = max(q(i,k),epsq) @@ -209,26 +214,26 @@ subroutine gscond (im,ix,km,dt,dtf,prsl,ps,q,cwm,t & !> -# Compute ice-water identification number IW. !!\n The distinction between cloud water and cloud ice is made by the -!! cloud identification number IW, which is zero for cloud water and -!! unity for cloud ice (Table 2 in zhao and Carr (1997) +!! cloud identification number IW, which is zero for cloud water and +!! unity for cloud ice (Table 2 in zhao and Carr (1997) !! \cite zhao_and_carr_1997): -!! - All clouds are defined to consist of liquid water below the -!! freezing level (\f$T\geq 0^oC\f$) and of ice particles above the +!! - All clouds are defined to consist of liquid water below the +!! freezing level (\f$T\geq 0^oC\f$) and of ice particles above the !! \f$T=-15^oC\f$ level. -!! - In the temperature region between \f$-15^oC\f$ and \f$0^oC\f$, -!! clouds may be composed of liquid water or ice. If there are cloud +!! - In the temperature region between \f$-15^oC\f$ and \f$0^oC\f$, +!! clouds may be composed of liquid water or ice. If there are cloud !! ice particles above this point at the previous or current time step, -!! or if the cloud at this point at the previous time step consists of -!! ice particles, then the cloud substance at this point is considered +!! or if the cloud at this point at the previous time step consists of +!! ice particles, then the cloud substance at this point is considered !! to be ice particles because of the cloud seeding effect and the -!! memory of its content. Otherwise, all clouds in this region are +!! memory of its content. Otherwise, all clouds in this region are !! considered to contain supercooled cloud water. !-------------------ice-water id number iw------------------------------ if(tmt0.lt.-15.0) then u00ik = u(i,k) - fi = qik - u00ik*qi(i) - if(fi > d00.or.cwmik > climit) then + fi = qik - u00ik*qi(i) + if(fi > d00.or.cwmik > climit) then iw(i,k) = 1 else iw(i,k) = 0 @@ -249,8 +254,8 @@ subroutine gscond (im,ix,km,dt,dtf,prsl,ps,q,cwm,t & !> -# Condensation and evaporation of cloud !--------------condensation and evaporation of cloud-------------------- do i = 1, im -!> - Compute the changes in t, q and p (\f$A_{t}\f$,\f$A_{q}\f$ and -!! \f$A_{p}\f$) caused by all the processes except grid-scale +!> - Compute the changes in t, q and p (\f$A_{t}\f$,\f$A_{q}\f$ and +!! \f$A_{p}\f$) caused by all the processes except grid-scale !! condensation and evaporation. !!\f[ !! A_{t}=(t-tp)/dt @@ -272,7 +277,7 @@ subroutine gscond (im,ix,km,dt,dtf,prsl,ps,q,cwm,t & at = (tik-tp(i,k)) * rdt aq = (qik-qp(i,k)) * rdt ap = (pres-pp0) * rdt -!> - Calculate the saturation specific humidity \f$q_{s}\f$ and the +!> - Calculate the saturation specific humidity \f$q_{s}\f$ and the !! relative humidity \f$f\f$ using IW. !----------------the satuation specific humidity------------------------ fiw = float(iwik) @@ -281,49 +286,49 @@ subroutine gscond (im,ix,km,dt,dtf,prsl,ps,q,cwm,t & ! if (lprnt) print *,' qc=',qc,' qint=',qint(i),' qi=',qi(i) !----------------the relative humidity---------------------------------- if(qc.le.1.0e-10) then - rqik=d00 + rqik=d00 else rqik = qik/qc endif -!> - According to Sundqvist et al. (1989) \cite sundqvist_et_al_1989, -!! estimate cloud fraction \f$b\f$ at a grid point from relative -!! humidity \f$f\f$ using the equation +!> - According to Sundqvist et al. (1989) \cite sundqvist_et_al_1989, +!! estimate cloud fraction \f$b\f$ at a grid point from relative +!! humidity \f$f\f$ using the equation !!\f[ !! b=1-\left ( \frac{f_{s}-f}{f_{s}-u} \right )^{1/2} !!\f] !! for \f$f>u\f$; and \f$b=0\f$ for \f$f1.0\times10^{-3}\f$, condense water vapor !! in to cloud condensate (\f$C_{g}\f$). -!!\n Using \f$q=fq_{s}\f$, \f$q_{s}=\epsilon e_{s}/p\f$, and the -!! Clausius-Clapeyron equation \f$de_{s}/dT=\epsilon Le_{s}/RT^{2}\f$, +!!\n Using \f$q=fq_{s}\f$, \f$q_{s}=\epsilon e_{s}/p\f$, and the +!! Clausius-Clapeyron equation \f$de_{s}/dT=\epsilon Le_{s}/RT^{2}\f$, !! where \f$q_{s}\f$ is the saturation specific humidity,\f$e_{s}\f$ !! is the saturation vapor pressure, \f$R\f$ is the specific gas -!! constant for dry air, \f$f\f$ is the relative humidity, and +!! constant for dry air, \f$f\f$ is the relative humidity, and !! \f$\epsilon=0.622\f$, the expression for \f$C_{g}\f$ has the form !!\f[ !! C_{g}=\frac{M-q_{s}f_{t}}{1+(f\epsilon L^{2}q_{s}/RC_{p}T^{2})}+E_{c} @@ -345,10 +350,10 @@ subroutine gscond (im,ix,km,dt,dtf,prsl,ps,q,cwm,t & !! M=A_{q}-\frac{f\epsilon Lq_{s}}{RT^{2}}A_{t}+\frac{fq_{s}}{p}A_{p} !!\f] !! To close the system, an equation for the relative humidity tendency -!! \f$f_{t}\f$ was derived by Sundqvist et al. (1989) +!! \f$f_{t}\f$ was derived by Sundqvist et al. (1989) !! \cite sundqvist_et_al_1989 using the hypothesis that the quantity !! \f$M+E_{c}\f$ is divided into one part,\f$bM\f$,which condenses -!! in the already cloudy portion of a grid square, and another part, +!! in the already cloudy portion of a grid square, and another part, !! \f$(1-b)M+E_{c}\f$,which is used to increase the relative humidity !! of the cloud-free portion and the cloudiness in the square. The !! equation is written as @@ -356,7 +361,7 @@ subroutine gscond (im,ix,km,dt,dtf,prsl,ps,q,cwm,t & !! f_{t}=\frac{2(1-b)(f_{s}-u)[(1-b)M+E_{c}]}{2q_{s}(1-b)(f_{s}-u)+cwm/b} !!\f] !! - Check and correct if over condensation occurs. -!! - Update t, q and cwm (according to Eqs(6) and (7) in Zhao and +!! - Update t, q and cwm (according to Eqs(6) and (7) in Zhao and !! Carr (1997) \cite zhao_and_carr_1997) !!\f[ !! cwm=cwm+(C_{g}-E_{c})\times dt @@ -367,7 +372,7 @@ subroutine gscond (im,ix,km,dt,dtf,prsl,ps,q,cwm,t & !!\f[ !! t=t+\frac{L}{C_{p}}(C_{g}-E_{c})\times dt !!\f] -!!\n where \f$L\f$ is the latent heat of condensation/deposition, and +!!\n where \f$L\f$ is the latent heat of condensation/deposition, and !! \f$C_{p}\f$ is the specific heat of air at constant pressure. !----------------cloud cover ratio ccrik-------------------------------- @@ -388,7 +393,7 @@ subroutine gscond (im,ix,km,dt,dtf,prsl,ps,q,cwm,t & ! if no cloud exists then evaporate any existing cloud condensate !----------------evaporation of cloud water----------------------------- e0 = d00 - if (ccrik <= cclimit.and. cwmik > climit) then + if (ccrik <= cclimit.and. cwmik > climit) then ! ! first iteration - increment halved ! @@ -437,7 +442,7 @@ subroutine gscond (im,ix,km,dt,dtf,prsl,ps,q,cwm,t & cond = d00 ! if (ccrik .gt. 0.20 .and. qc .gt. epsq) then if (ccrik .gt. cclimit .and. qc .gt. epsq) then - us00 = us - u00ik + us00 = us - u00ik ccrik1 = 1.0 - ccrik aa = eps*elv*pres*qik ab = ccrik*ccrik1*qc*us00 diff --git a/physics/gwdc.f b/physics/gwdc.f index fd37d74d0..b7ac407b7 100644 --- a/physics/gwdc.f +++ b/physics/gwdc.f @@ -1,34 +1,34 @@ !> \file gwdc.f This file is the original code for parameterization of -!! stationary convection forced gravity wave drag based on Chun and +!! stationary convection forced gravity wave drag based on Chun and !! Baik(1998) \cite chun_and_baik_1998 -!> \ingroup gwd -!> \defgroup convective Convective Gravity Wave Drag +!> \ingroup GFS_gwd +!> \defgroup GFS_cgwd GFS Convective Gravity Wave Drag !! This subroutine is the parameterization of convective gravity wave -!! drag based on the theory given by Chun and Baik (1998) -!! \cite chun_and_baik_1998 modified for implementation into the +!! drag based on the theory given by Chun and Baik (1998) +!! \cite chun_and_baik_1998 modified for implementation into the !! GFS/CFS by Ake Johansson(Aug 2005). !! -!> Parameterizing subgrid-scale convection-induced gravity wave +!> Parameterizing subgrid-scale convection-induced gravity wave !! momentum flux for use in large-scale models inherently requires !! some information from subgrid-scale cumulus parameterization. !! The methodology for parameterizing the zonal momentum flux induced !! by thermal forcing can be summarized as follows. From the cloud-base !! to cloud-top height, the effect of the momentum flux !! induced by subgrid-scale diabatic forcing is not considered because -!! subgrid-scale cumulus convection in large-scale models is only +!! subgrid-scale cumulus convection in large-scale models is only !! activated in a conditionally unstable atmosphere. Below the cloud -!! base, the momentum flux is also not considered because of the wave -!! momentum cancellation. At the cloud top, the momentum flux is -!! obtained by eq.(18) and (19) in Chun and Baik (1998) +!! base, the momentum flux is also not considered because of the wave +!! momentum cancellation. At the cloud top, the momentum flux is +!! obtained by eq.(18) and (19) in Chun and Baik (1998) !! \cite chun_and_baik_1998. Above the cloud top, there are two ways to !! construct the momentum flux profile. One way is to specify a !! vertical structure of the momentum flux normalized by the cloud-top -!! value, similar to what has been done for mountain drag +!! value, similar to what has been done for mountain drag !! parameterization. The other way is to apply the wave saturation !! hypothesis in order to find wave breaking levels in terms of the -!! Richardon number criterion using the nonlinearity factor of -!! thermally induced waves. +!! Richardon number criterion using the nonlinearity factor of +!! thermally induced waves. !!@{ !> \param[in] IM horizontal number of used pts @@ -43,36 +43,41 @@ !> \param[in] PMID1 mean layer pressure !> \param[in] PINT1 pressure at layer interfaces !> \param[in] DPMID1 mean layer delta p -!> \param[in] QMAX maximum convective heating rate (k/s) in a -!! horizontal grid point calculated +!> \param[in] QMAX maximum convective heating rate (k/s) in a +!! horizontal grid point calculated !! from cumulus parameterization !> \param[in] KTOP vertical level index for cloud top !> \param[in] KBOT vertical level index for cloud bottom !> \param[in] KCNV (0,1) dependent on whether convection occur or not !> \param[in] CLDF deep convective cloud fraction at the cloud top !> \param[in] GRAV gravity defined in physcon -!> \param[in] CP specific heat at constant pressure defined in +!> \param[in] CP specific heat at constant pressure defined in !! physcon !> \param[in] RD gas constant air defined in physcon !> \param[in] FV con_fvirt = con_rv/con_rd-1 -!> \param[in] DLENGTH grid spacing in the direction of basic wind at +!> \param[in] DLENGTH grid spacing in the direction of basic wind at !! the cloud top !> \param[in] LPRNT logical print flag !> \param[in] IPR check print point for debugging !> \param[in] FHOUR forecast hour !> \param[out] UTGWC zonal wind tendency !> \param[out] VTGWC meridional wind tendency -!> \param[out] TAUCTX wave stress at the cloud top projected in the +!> \param[out] TAUCTX wave stress at the cloud top projected in the !! east -!> \param[out] TAUCTY wave stress at the cloud top projected in the +!> \param[out] TAUCTY wave stress at the cloud top projected in the !! north !! +!! \section arg_table_gwdc_run Arguments +!! | local var name | longname | description | units | rank | type | kind | intent | optional | +!! |----------------|-------------------------------------------------------|------------------------------------|---------|------|---------|-----------|--------|----------| +!! | im | horizontal_loop_extent | horizontal loop extent, start at 1 | index | 0 | integer | | in | F | +!! !> \section al_gwdc General Algorithm !> @{ - subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, - & pmid1,pint1,dpmid1,qmax,ktop,kbot,kcnv,cldf, - & grav,cp,rd,fv,pi,dlength,lprnt,ipr,fhour, - & utgwc,vtgwc,tauctx,taucty) + subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, & + & pmid1,pint1,dpmid1,qmax,ktop,kbot,kcnv,cldf, & + & grav,cp,rd,fv,pi,dlength,lprnt,ipr,fhour, & + & utgwc,vtgwc,tauctx,taucty) !*********************************************************************** ! aug 2005 Ake Johansson - ORIGINAL CODE FOR PARAMETERIZATION OF CONVECTIVELY FORCED @@ -82,7 +87,7 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, ! 2013 S. Moorthi - Updated and optimized code for T1534 GFS implementation ! ??? ?? 2015 J. Alpert - reducing the magnitude of tauctmax to fix blow up in L64 GFS ! S. Kar & M. Young -! aug 15 2016 - S. Moorthi - Fix for exessive dissipation which led to blow up in +! aug 15 2016 - S. Moorthi - Fix for exessive dissipation which led to blow up in ! 128 level runs with NEMS/GSM !*********************************************************************** @@ -101,7 +106,7 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, ! dpmid : midpoint delta p ( pi(k)-pi(k-1) ) ! lat : latitude index ! qmax : deep convective heating -! kcldtop : Vertical level index for cloud top ( mid level ) +! kcldtop : Vertical level index for cloud top ( mid level ) ! kcldbot : Vertical level index for cloud bottom ( mid level ) ! kcnv : (0,1) dependent on whether convection occur or not ! @@ -121,7 +126,7 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, &, tauctx, taucty real(kind=kind_phys), dimension(im) :: cldf,dlength real(kind=kind_phys), dimension(ix,km) :: u1,v1,t1,q1, & - & pmid1,dpmid1 + & pmid1,dpmid1 ! &, cumchr1 real(kind=kind_phys), dimension(iy,km) :: utgwc,vtgwc real(kind=kind_phys), dimension(ix,km+1) :: pint1 @@ -142,19 +147,19 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, ! parallel to the wind vector at the cloud top ( mid level ) ! tauctx : Wave stress at the cloud top projected in the east ! taucty : Wave stress at the cloud top projected in the north -! qmax : Maximum deep convective heating rate ( K s-1 ) in a +! qmax : Maximum deep convective heating rate ( K s-1 ) in a ! horizontal grid point calculated from cumulus para- ! meterization. ( mid level ) ! wtgwc : Wind tendency in direction to the wind vector at the cloud top level ! due to convectively generated gravity waves ( mid level ) -! utgwcl : Zonal wind tendency due to convectively generated +! utgwcl : Zonal wind tendency due to convectively generated ! gravity waves ( mid level ) ! vtgwcl : Meridional wind tendency due to convectively generated ! gravity waves ( mid level ) ! taugwci : Profile of wave stress calculated using basic-wind -! parallel to the wind vector at the cloud top +! parallel to the wind vector at the cloud top ! taugwcxi : Profile of zonal component of gravity wave stress -! taugwcyi : Profile of meridional component of gravity wave stress +! taugwcyi : Profile of meridional component of gravity wave stress ! ! taugwci, taugwcxi, and taugwcyi are defined at the interface level ! @@ -164,7 +169,7 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, ! rhom : Air density ( mid level ) ! ti : Temperature ( interface level ) ! basicum : Basic-wind profile. Basic-wind is parallel to the wind -! vector at the cloud top level. (mid level) +! vector at the cloud top level. (mid level) ! basicui : Basic-wind profile. Basic-wind is parallel to the wind ! vector at the cloud top level. ( interface level ) ! riloc : Local Richardson number ( interface level ) @@ -174,9 +179,9 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, ! break : Horizontal location where wave breaking is occurred. ! critic : Horizontal location where critical level filtering is ! occurred. -! dogwdc : Logical flag whether the GWDC parameterization is +! dogwdc : Logical flag whether the GWDC parameterization is ! calculated at a grid point or not. -! +! ! dogwdc is used in order to lessen CPU time for GWDC calculation. ! !----------------------------------------------------------------------- @@ -212,7 +217,7 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, & ti(:,:), riloc(:,:), & rimin(:,:), pint(:,:) ! real(kind=kind_phys), allocatable :: ugwdc(:,:), vgwdc(:,:), - real(kind=kind_phys), allocatable :: + real(kind=kind_phys), allocatable :: ! & plnmid(:,:), wtgwc(:,:), & plnmid(:,:), taugw(:,:), & utgwcl(:,:), vtgwcl(:,:), @@ -227,7 +232,7 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, ! ucltop : Zonal wind at the cloud top ( mid level ) ! vcltop : Meridional wind at the cloud top ( mid level ) ! windcltop : Wind speed at the cloud top ( mid level ) -! shear : Vertical shear of basic wind +! shear : Vertical shear of basic wind ! cosphi : Cosine of angle of wind vector at the cloud top ! sinphi : Sine of angle of wind vector at the cloud top ! c1 : Tunable parameter @@ -348,7 +353,7 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, & rimin(npt,km+1), pint(npt,km+1)) ! allocate (ugwdc(npt,km), vgwdc(npt,km), - allocate + allocate ! & (plnmid(npt,km), wtgwc(npt,km), & (plnmid(npt,km), velco(npt,km), & utgwcl(npt,km), vtgwcl(npt,km), @@ -460,7 +465,7 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, ! 4 ======== pint(4) dpint(4) ! 4 -------- pmid(4) dpmid(4) ! ........ -! 17 ======== pint(17) dpint(17) +! 17 ======== pint(17) dpint(17) ! 17 -------- pmid(17) dpmid(17) ! 18 ======== pint(18) dpint(18) ! 18 -------- pmid(18) dpmid(18) @@ -492,7 +497,7 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, ! ! -!> - The top interface temperature, density, and Brunt-Vaisala +!> - The top interface temperature, density, and Brunt-Vaisala !! frequencies (\f$N\f$) are calculated assuming an isothermal !! atmosphere above the top mid level. @@ -500,7 +505,7 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, rhoi(i,1) = pint(i,1)/(rd*ti(i,1)) bruni(i,1) = sqrt ( gsqr / (cp*ti(i,1)) ) ! -!> - The bottom interface temperature, density, and Brunt-Vaisala +!> - The bottom interface temperature, density, and Brunt-Vaisala !! frequencies (\f$N\f$) are calculated assuming an isothermal !! atmosphere below the bottom mid level. @@ -525,11 +530,11 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, qtem = spfh(i,k-1) * tem1 + spfh(i,k) * tem2 rhoi(i,k) = pint(i,k) / ( rd * ti(i,k)*(1.0+fv*qtem) ) dtdp = (t(i,k)-t(i,k-1)) / (pmid(i,k)-pmid(i,k-1)) - n2 = gsqr / ti(i,k) * ( 1./cp - rhoi(i,k)*dtdp ) + n2 = gsqr / ti(i,k) * ( 1./cp - rhoi(i,k)*dtdp ) bruni(i,k) = sqrt (max (n2min, n2)) enddo enddo - + deallocate (spfh) !----------------------------------------------------------------------- ! @@ -540,7 +545,7 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, do k = 1, km do i = 1, npt dtdp = (ti(i,k+1)-ti(i,k)) / (pint(i,k+1)-pint(i,k)) - n2 = gsqr / t(i,k) * ( 1./cp - rhom(i,k)*dtdp ) + n2 = gsqr / t(i,k) * ( 1./cp - rhom(i,k)*dtdp ) brunm(i,k) = sqrt (max (n2min, n2)) enddo enddo @@ -602,7 +607,7 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, !----------------------------------------------------------------------- ! -!> -# Calculate the cloud top wind components and speed. +!> -# Calculate the cloud top wind components and speed. !! Here, ucltop, vcltop, and windcltop are wind components and !! wind speed at mid-level cloud top index ! @@ -684,7 +689,7 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, ! 18 -------- U(18) ! 19 ======== UI(19) rhoi(19) bruni(19) riloc(19) ! -!----------------------------------------------------------------------- +!----------------------------------------------------------------------- do k=2,km do i=1,npt @@ -696,10 +701,10 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, tem = bruni(i,k) / shear riloc(i,k) = tem * tem if (riloc(i,k) >= rimax ) riloc(i,k) = rilarge - end if + end if enddo enddo - + do i=1,npt riloc(i,1) = riloc(i,2) riloc(i,km+1) = riloc(i,km) @@ -740,33 +745,33 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, ! it can be thought that there is deep convective cloud. However, ! deep convective heating between kcldbot and kcldtop is sometimes ! zero in spite of kcldtop less than kcldbot. In this case, -! maximum deep convective heating is assumed to be 1.e-30. +! maximum deep convective heating is assumed to be 1.e-30. ! ! B : kk is the vertical index for interface level cloud top ! ! C : Total convective fractional cover (cldf) is used as the -! convective cloud cover for GWDC calculation instead of +! convective cloud cover for GWDC calculation instead of ! convective cloud cover in each layer (concld). ! a1 = cldf*dlength ! You can see the difference between cldf(i) and concld(i) -! in (4.a.2) in Description of the NCAR Community Climate +! in (4.a.2) in Description of the NCAR Community Climate ! Model (CCM3). ! In NCAR CCM3, cloud fractional cover in each layer in a deep ! cumulus convection is determined assuming total convective -! cloud cover is randomly overlapped in each layer in the +! cloud cover is randomly overlapped in each layer in the ! cumulus convection. ! ! D : Wave stress at cloud top is calculated when the atmosphere ! is dynamically stable at the cloud top ! -! E : Cloud top wave stress and nonlinear parameter are calculated +! E : Cloud top wave stress and nonlinear parameter are calculated ! using density, temperature, and wind that are defined at mid ! level just below the interface level in which cloud top wave ! stress is defined. ! Nonlinct is defined at the interface level. -! +! ! F : If the atmosphere is dynamically unstable at the cloud top, -! GWDC calculation in current horizontal grid is skipped. +! GWDC calculation in current horizontal grid is skipped. ! ! G : If mean wind at the cloud top is less than zero, GWDC @@ -777,18 +782,18 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, !! using density, temperature, and wind that are defined at mid !! level just below the interface level in which cloud top wave !! stress is defined. -!! The parameter \f$\mu\f$ is the nonlinearity factor of thermally -!! induced internal gravity waves defined by eq.(17) in Chun and +!! The parameter \f$\mu\f$ is the nonlinearity factor of thermally +!! induced internal gravity waves defined by eq.(17) in Chun and !! Baik, 1998 \cite chun_and_baik_1998 !! \f[ !! \mu=\frac{gQ_{0}a_{1}}{c_{p}T_{0}NU^{2}} !! \f] !! where \f$Q_{0}\f$ is the maximum deep convective heating rate in a -!! horizontal grid point calculated from cumulus parameterization. +!! horizontal grid point calculated from cumulus parameterization. !! \f$a_{1}\f$ is the half-width of -!! the forcing function.\f$g\f$ is gravity. \f$c_{p}\f$ is specific -!! heat at constant pressure. \f$T_{0}\f$ is the layer mean -!! temperature (T1). As eqs.(18) and (19) \cite chun_and_baik_1998, +!! the forcing function.\f$g\f$ is gravity. \f$c_{p}\f$ is specific +!! heat at constant pressure. \f$T_{0}\f$ is the layer mean +!! temperature (T1). As eqs.(18) and (19) \cite chun_and_baik_1998, !! the zonal momentum flux is given by !! \f[ !! \tau_{x}=-[\rho U^{3}/(N\triangle x)]G(\mu) @@ -798,11 +803,11 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, !! G(\mu)=c_{1}c_2^2 \mu^{2} !! \f] !! wher \f$\rho\f$ is the local density. -!! The tunable parameter \f$c_1\f$ is related to the horizontal -!! structure of thermal forcing. The tunable parameter \f$c_2\f$ is -!! related to the basic-state wind and stability and the bottom and +!! The tunable parameter \f$c_1\f$ is related to the horizontal +!! structure of thermal forcing. The tunable parameter \f$c_2\f$ is +!! related to the basic-state wind and stability and the bottom and !! top heights of thermal forcing. If the atmosphere is dynamically -!! unstable at the cloud top, the convective GWD calculation is +!! unstable at the cloud top, the convective GWD calculation is !! skipped at that grid point. !! ! - If mean wind at the cloud top is less than zero, GWDC @@ -833,10 +838,10 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, do_gwc(i) = .true. else !F - tauctxl(i) = zero + tauctxl(i) = zero tauctyl(i) = zero do_gwc(i) = .false. - end if + end if !H enddo @@ -863,15 +868,15 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, ! ! Minimum RI is calculated for the following two cases ! -! (1) RIloc < 1.e+20 +! (1) RIloc < 1.e+20 ! (2) Riloc = 1.e+20 ----> Vertically uniform basic-state wind ! ! RIloc cannot be smaller than zero because N^2 becomes 1.E-32 in the -! case of N^2 < 0.. Thus the sign of RINUM is determined by +! case of N^2 < 0.. Thus the sign of RINUM is determined by ! 1 - nonlin*|c2|. ! !----------------------------------------------------------------------- -!> -# Calculate the minimum Richardson number including both the +!> -# Calculate the minimum Richardson number including both the !! basic-state condition and wave effects. !!\f[ !! Ri_{min}\approx\frac{Ri(1-\mu|c_{2}|)}{(1+\mu Ri^{1/2}|c_{2}|)^{2}} @@ -897,10 +902,10 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, ! if (lprnt .and. i == npr) write(7000,*)' k=',k,' crit1=', ! &crit1,' crit2=',crit2,' basicui=',basicui(i,k) - if ( abs(basicui(i,k)) > zero .and. crit1 > zero + if ( abs(basicui(i,k)) > zero .and. crit1 > zero & .and. crit2 > zero ) then tem = basicui(i,k) * basicui(i,k) - nonlin = gqmcldlen(i) / (bruni(i,k)*ti(i,k)*tem) + nonlin = gqmcldlen(i) / (bruni(i,k)*ti(i,k)*tem) tem = nonlin*abs(c2) if ( riloc(i,k) < rimaxm ) then tem1 = 1 + tem*sqrt(riloc(i,k)) @@ -926,7 +931,7 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, !----------------------------------------------------------------------- ! -!> -# Calculate the gravity wave stress profile using the wave +!> -# Calculate the gravity wave stress profile using the wave !! saturation hypothesis of Lindzen (1981) \cite lindzen_1981. ! ! Assuming kcldtop(i)=10 and kcldbot=16, @@ -938,20 +943,20 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, ! 2 ======== - 0.001 -1.e20 ! 2 -------- 0.000 ! 3 ======== - 0.001 -1.e20 -! 3 -------- -.xxx +! 3 -------- -.xxx ! 4 ======== - 0.001 2.600 2.000 ! 4 -------- 0.000 ! 5 ======== - 0.001 2.500 2.000 ! 5 -------- 0.000 ! 6 ======== - 0.001 1.500 0.110 -! 6 -------- +.xxx +! 6 -------- +.xxx ! 7 ======== - 0.005 2.000 3.000 ! 7 -------- 0.000 ! 8 ======== - 0.005 1.000 0.222 ! 8 -------- +.xxx ! 9 ======== - 0.010 1.000 2.000 ! 9 -------- 0.000 -! kcldtopi 10 ======== $$$ - 0.010 +! kcldtopi 10 ======== $$$ - 0.010 ! kcldtop 10 -------- $$$ yyyyy ! 11 ======== $$$ 0 ! 11 -------- $$$ @@ -966,22 +971,22 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, ! 16 ======== $$$ 0 ! kcldbot 16 -------- $$$ ! 17 ======== 0 -! 17 -------- +! 17 -------- ! 18 ======== 0 -! 18 -------- +! 18 -------- ! 19 ======== 0 ! !----------------------------------------------------------------------- ! ! Even though the cloud top level obtained in deep convective para- ! meterization is defined in mid-level, the cloud top level for -! the GWDC calculation is assumed to be the interface level just +! the GWDC calculation is assumed to be the interface level just ! above the mid-level cloud top vertical level index. ! !----------------------------------------------------------------------- -!> - When \f$Ri_{min}\f$ is set to 1/4 based on Lindzen's (1981) -!! \cite lindzen_1981 saturation hypothesis, the nonlinearity factor +!> - When \f$Ri_{min}\f$ is set to 1/4 based on Lindzen's (1981) +!! \cite lindzen_1981 saturation hypothesis, the nonlinearity factor !! for wave saturation can be derived by !! \f[ !! \mu_{s}=\frac{1}{|c_{2}|}[2\sqrt{2+\frac{1}{\sqrt{Ri}}}-(2+\frac{1}{\sqrt{Ri}})] @@ -998,22 +1003,22 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, taugwci(i,k) = taugwci(i,k+1) elseif (rimin(i,k) > riminp) then tem = 2.0 + 1.0 / sqrt(riloc(i,k)) - nonlins = (1.0/abs(c2)) * (2.*sqrt(tem) - tem) + nonlins = (1.0/abs(c2)) * (2.*sqrt(tem) - tem) tem1 = basicui(i,k) tem2 = c2*nonlins*tem1 taugwci(i,k) = - rhoi(i,k) * c1 * tem1 * tem2 * tem2 & / (bruni(i,k)*dlen(i)) elseif (rimin(i,k) > riminm) then - taugwci(i,k) = zero -! taugwci(i,k) = taugwci(i,k+1) + taugwci(i,k) = zero +! taugwci(i,k) = taugwci(i,k+1) end if ! RImin else -!> - If the minimum \f$R_{i}\f$ at interface cloud top is less than +!> - If the minimum \f$R_{i}\f$ at interface cloud top is less than !! or equal to 1/4, the convective GWD calculation is skipped at that !! grid point. - taugwci(i,k) = zero + taugwci(i,k) = zero end if ! RIloc else taugwci(i,k) = zero @@ -1059,7 +1064,7 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, taugw(i,k) = (taugwci(i,k+1) - taugwci(i,k)) / dpmid(i,k) if (taugw(i,k) /= 0.0) then tem = deltim * taugw(i,k) - dtfac(i) = min(dtfac(i), abs(velco(i,k)/tem)) + dtfac(i) = min(dtfac(i), abs(velco(i,k)/tem)) endif else taugw(i,k) = 0.0 @@ -1164,8 +1169,8 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, !----------------------------------------------------------------------- ! -! The GWDC should accelerate the zonal and meridional wind in the -! opposite direction of the previous zonal and meridional wind, +! The GWDC should accelerate the zonal and meridional wind in the +! opposite direction of the previous zonal and meridional wind, ! respectively ! !----------------------------------------------------------------------- @@ -1176,10 +1181,10 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, !-------------------- x-component------------------- -! write(6,'(a)') +! write(6,'(a)') ! + '(GWDC) WARNING: The GWDC should accelerate the zonal wind ' -! write(6,'(a,a,i3,a,i3)') -! + 'in the opposite direction of the previous zonal wind', +! write(6,'(a,a,i3,a,i3)') +! + 'in the opposite direction of the previous zonal wind', ! + ' at I = ',i,' and J = ',lat ! write(6,'(4(1x,e17.10))') u(i,kk),v(i,kk),u(i,k),v(i,k) ! write(6,'(a,1x,e17.10))') 'Vcld . V =', @@ -1189,7 +1194,7 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, ! do k1=1,km ! write(6,'(i2,36x,2(1x,e17.10))') ! + k1,taugwcxi(i,k1),taugwci(i,k1) -! write(6,'(i2,2(1x,e17.10))') k1,utgwcl(i,k1),u(i,k1) +! write(6,'(i2,2(1x,e17.10))') k1,utgwcl(i,k1),u(i,k1) ! end do ! write(6,'(i2,36x,1x,e17.10)') (km+1),taugwcxi(i,km+1) ! end if @@ -1199,7 +1204,7 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, ! do k1=1,km ! write(6,'(i2,36x,2(1x,e17.10))') ! + k1,taugwci(i,k1) -! write(6,'(i2,2(1x,e17.10))') k1,wtgwc(i,k1),basicum(i,k1) +! write(6,'(i2,2(1x,e17.10))') k1,wtgwc(i,k1),basicum(i,k1) ! end do ! write(6,'(i2,36x,1x,e17.10)') (km+1),taugwci(i,km+1) @@ -1219,7 +1224,7 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, ! do k1=1,km ! write(6,'(i2,36x,2(1x,e17.10))') ! + k1,taugwcyi(i,k1),taugwci(i,k1) -! write(6,'(i2,2(1x,e17.10))') k1,vtgwc(i,k1),v(i,k1) +! write(6,'(i2,2(1x,e17.10))') k1,vtgwc(i,k1),v(i,k1) ! end do ! write(6,'(i2,36x,1x,e17.10)') (km+1),taugwcyi(i,km+1) ! end if @@ -1249,7 +1254,7 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, !----------------------------------------------------------------------- ! -! For GWDC performance analysis +! For GWDC performance analysis ! !----------------------------------------------------------------------- @@ -1265,7 +1270,7 @@ subroutine gwdc(im,ix,iy,km,lat,u1,v1,t1,q1,deltim, ! if ( abs(taugwci(i,k)-taugwci(i,kk)) > taumin ) then ! break(i) = 1.0 ! go to 2000 -! endif +! endif ! enddo !2000 continue diff --git a/physics/gwdps.f b/physics/gwdps.f index d1cf8131d..046a5e519 100644 --- a/physics/gwdps.f +++ b/physics/gwdps.f @@ -1,137 +1,143 @@ !> \file gwdps.f -!! This file is the parameterization of orographic gravity wave +!! This file is the parameterization of orographic gravity wave !! drag and mountain blocking. -!> \defgroup gwd Orographic and Convective Gravity Wave Drag +!> \defgroup GFS_gwd GFS Orographic and Convective Gravity Wave Drag !! @{ -!! Parameterization developed specifically for orographic and +!! Parameterization developed specifically for orographic and !! convective source of gravity waves are documented separately. -!! +!! !! At present, global models must be run with horizontal resolutions -!! that cannot typically resolve atmospheric phenomena shorter than -!! ~10-100 km or greater for weather prediction and ~100-1000 km or -!! greater for climate predicition. Many atmospheric processes have +!! that cannot typically resolve atmospheric phenomena shorter than +!! ~10-100 km or greater for weather prediction and ~100-1000 km or +!! greater for climate predicition. Many atmospheric processes have !! shorter horizontal scales than these "subgrid-scale" processes -!! interact with and affect the larger-scale atmosphere in important +!! interact with and affect the larger-scale atmosphere in important !! ways. !! -!! Atmospheric gravity waves are one such unresolved processes. These -!! waves are generated by lower atmospheric sources. e.g., flow over +!! Atmospheric gravity waves are one such unresolved processes. These +!! waves are generated by lower atmospheric sources. e.g., flow over !! irregularities at the Earth's surface such as mountains and valleys, !! uneven distribution of diabatic heat sources asscociated with -!! convective systems, and highly dynamic atmospheric processes such -!! as jet streams and fronts. The dissipation of these waves produces -!! synoptic-scale body forces on the atmospheric flow, known as -!! "gravity wave drag"(GWD), which affects both short-term evolution -!! of weather systems and long-term climate. However, the spatial -!! scales of these waves (in the range of ~5-500 km horizontally) are -!! too short to be fully captured in models, and so GWD must be -!! parameterized. In addition, the role of GWD in driving the global -!! middle atmosphere circulation and thus global mean wind/temperature -!! structures is well established. Thus, GWD parametrizations are now -!! critical components of virtually all large-scale atmospheric models. -!! GFS physics includes parameterizations of gravity waves from two +!! convective systems, and highly dynamic atmospheric processes such +!! as jet streams and fronts. The dissipation of these waves produces +!! synoptic-scale body forces on the atmospheric flow, known as +!! "gravity wave drag"(GWD), which affects both short-term evolution +!! of weather systems and long-term climate. However, the spatial +!! scales of these waves (in the range of ~5-500 km horizontally) are +!! too short to be fully captured in models, and so GWD must be +!! parameterized. In addition, the role of GWD in driving the global +!! middle atmosphere circulation and thus global mean wind/temperature +!! structures is well established. Thus, GWD parametrizations are now +!! critical components of virtually all large-scale atmospheric models. +!! GFS physics includes parameterizations of gravity waves from two !! important sources: mountains and convection. !! -!! Atmospheric flow is significantly influenced by orography creating -!! lift and frictional forces. The representation of orography and its -!! influence in numerical weather prediction models are necessarily -!! divided into the resolvable scales of motion and treated by +!! Atmospheric flow is significantly influenced by orography creating +!! lift and frictional forces. The representation of orography and its +!! influence in numerical weather prediction models are necessarily +!! divided into the resolvable scales of motion and treated by !! primitive equations, the remaining sub-grid scales to be treated by -!! parameterization. In terms of large scale NWP models, mountain -!! blocking of wind flow around sub-grid scale orograph is a process -!! that retards motion at various model vertical levels near or in the -!! boundary layer. Flow around the mountain encounters larger -!! frictional forces by being in contact with the mountain surfaces -!! for longer time as well as the interaction of the atmospheric -!! environment with vortex shedding which occurs in numerous +!! parameterization. In terms of large scale NWP models, mountain +!! blocking of wind flow around sub-grid scale orograph is a process +!! that retards motion at various model vertical levels near or in the +!! boundary layer. Flow around the mountain encounters larger +!! frictional forces by being in contact with the mountain surfaces +!! for longer time as well as the interaction of the atmospheric +!! environment with vortex shedding which occurs in numerous !! observations. Lott and Miller (1997) \cite lott_and_miller_1997, -!! incorporated the dividing streamline and mountain blocking in +!! incorporated the dividing streamline and mountain blocking in !! conjunction with sub-grid scale vertically propagating gravity wave -!! parameterization in the context of NWP. The dividing streamline is -!! seen as a source of gravity waves to the atmosphere above and +!! parameterization in the context of NWP. The dividing streamline is +!! seen as a source of gravity waves to the atmosphere above and !! nonlinear subgrid low-level mountain drag effect below. !! !! In a review paper on gravity waves in the middle atmosphere, Fritts -!! (1984) \cite fritts_1984 showed that a large portion of observed -!! gravity wave momentum flux has higher frequencies than those of -!! stationary mountain waves. This phenomenon was explained by cumulus -!! convection, which is an additional source of tropospheric gravity +!! (1984) \cite fritts_1984 showed that a large portion of observed +!! gravity wave momentum flux has higher frequencies than those of +!! stationary mountain waves. This phenomenon was explained by cumulus +!! convection, which is an additional source of tropospheric gravity !! waves, and is particularly important in summertime. When the surface -!! wind and stability are weak, the magnitude of the surface drag and +!! wind and stability are weak, the magnitude of the surface drag and !! the resultant influence of orographically-induced gravity wave drag -!! on the large-scale flow are relatively small compared with those in -!! wintertime (Palmer et al. 1986 \cite palmer_et_al_1986). In this +!! on the large-scale flow are relatively small compared with those in +!! wintertime (Palmer et al. 1986 \cite palmer_et_al_1986). In this !! situation, the relative importance of cumulus convection as a source -!! of gravity waves is larger. In addition, in the tropical regions +!! of gravity waves is larger. In addition, in the tropical regions !! where persistent convection exists, deep cumulus clouds impinging on -!! the stable stratosphere can generate gravity waves that influence +!! the stable stratosphere can generate gravity waves that influence !! the large-scale flow. !! !> \section outlines GWD parameterization in GFS -!! - Gravity-wave drag is simulated as described by Alpert et al. -!! (1988) \cite alpert_et_al_1988. The parameterization includes +!! - Gravity-wave drag is simulated as described by Alpert et al. +!! (1988) \cite alpert_et_al_1988. The parameterization includes !! determination of the momentum flux due to gravity waves at the -!! surface, as well as upper levels. The surface stress is a nonlinear -!! function of the surface wind speed and the local Froude number, -!! following Pierrehumbert (1987) \cite pierrehumbert_1987. Vertical -!! variations in the momentum flux occur when the local Richardson -!! number is less than 0.25 (the stress vanishes), or when wave -!! breaking occurs (local Froude number becomes critical); in the -!! latter case, the momentum flux is reduced according to the -!! Lindzen(1981) \cite lindzen_1981 wave saturation hypothesis. -!! Modifications are made to avoid instability when the critical layer -!! is near the surface, since the time scale for gravity-wave drag is -!! shorter than the model time step. +!! surface, as well as upper levels. The surface stress is a nonlinear +!! function of the surface wind speed and the local Froude number, +!! following Pierrehumbert (1987) \cite pierrehumbert_1987. Vertical +!! variations in the momentum flux occur when the local Richardson +!! number is less than 0.25 (the stress vanishes), or when wave +!! breaking occurs (local Froude number becomes critical); in the +!! latter case, the momentum flux is reduced according to the +!! Lindzen(1981) \cite lindzen_1981 wave saturation hypothesis. +!! Modifications are made to avoid instability when the critical layer +!! is near the surface, since the time scale for gravity-wave drag is +!! shorter than the model time step. !! -!! - The treatment of the GWD in the lower troposphere is enhanced -!! according to Kim and Arakawa (1995) \cite kim_and_arakawa_1995 . -!! Orographic Std Dev (HPRIME), Convexity(OC), Asymmetry (OA4) and Lx -!! (CLX4) are input topographic statistics needed (see Appendix in Kim +!! - The treatment of the GWD in the lower troposphere is enhanced +!! according to Kim and Arakawa (1995) \cite kim_and_arakawa_1995 . +!! Orographic Std Dev (HPRIME), Convexity(OC), Asymmetry (OA4) and Lx +!! (CLX4) are input topographic statistics needed (see Appendix in Kim !! and Arakawa (1995) \cite kim_and_arakawa_1995) . !! -!! - Mountain blocking influences are incorporated following the Lott -!! and Miller (1997) \cite lott_and_miller_1997 parameterization with -!! minor changes, including their dividing streamline concept. The -!! model subgrid scale orography is represented by four parameters, -!! after Baines and Palmer (1990) \cite baines_and_palmer_1990, the -!! standard deviation (HPRIME), the anisotropy (GAMMA), the slope -!! (SIGMA) and the geographical orientation of the orography (THETA). -!! These are calculated off-line as a function of model resolution in -!! the fortran code ml01rg2.f, with script mlb2.sh (see Appendix: -!! Specification of subgrid-scale orography in Lott and Miller (1997) +!! - Mountain blocking influences are incorporated following the Lott +!! and Miller (1997) \cite lott_and_miller_1997 parameterization with +!! minor changes, including their dividing streamline concept. The +!! model subgrid scale orography is represented by four parameters, +!! after Baines and Palmer (1990) \cite baines_and_palmer_1990, the +!! standard deviation (HPRIME), the anisotropy (GAMMA), the slope +!! (SIGMA) and the geographical orientation of the orography (THETA). +!! These are calculated off-line as a function of model resolution in +!! the fortran code ml01rg2.f, with script mlb2.sh (see Appendix: +!! Specification of subgrid-scale orography in Lott and Miller (1997) !! \cite lott_and_miller_1997). !! !! - The orographic GWD parameterizations automatically scales -!! with model resolution. For example, the T574L64 version of GFS uses -!! four times stronger mountain blocking and one half the strength of -!! gravity wave drag than the T383L64 version. +!! with model resolution. For example, the T574L64 version of GFS uses +!! four times stronger mountain blocking and one half the strength of +!! gravity wave drag than the T383L64 version. !! !! - The parameterization of stationary convectively-forced GWD follows -!! the development of Chun and Baik (1998) \cite chun_and_baik_1998 , -!! which was tested in GCMs by Chun et al. (2001,2004) -!! \cite chun_et_al_2001 \cite chun_et_al_2004 was implemented in GFS -!! by Ake Johansson (2008) and the work of the GCWMB staff. Modest -!! positive effects from using the parameterization are seen in the +!! the development of Chun and Baik (1998) \cite chun_and_baik_1998 , +!! which was tested in GCMs by Chun et al. (2001,2004) +!! \cite chun_et_al_2001 \cite chun_et_al_2004 was implemented in GFS +!! by Ake Johansson (2008) and the work of the GCWMB staff. Modest +!! positive effects from using the parameterization are seen in the !! tropical upper troposphere and lower stratosphere. !! !!\section intra_gwdps Intraphysics Communication -!! - Routine GWDPS (\ref orographic) is called from GBPHYS after call +!! - Routine GWDPS (\ref orographic) is called from GBPHYS after call !! to MONINEDMF -!! - Routine GWDC (\ref convective) is called from GBPHYS after call +!! - Routine GWDC (\ref convective) is called from GBPHYS after call !! to SASCNVN -!> \ingroup gwd -!> \defgroup orographic Orographic Gravity Wave Drag and Mountain Blocking -!! This subroutine includes orographic gravity wave drag and mountain +!> \ingroup GFS_gwd +!> \defgroup GFS_ogwd GFS Orographic Gravity Wave Drag and Mountain Blocking +!! This subroutine includes orographic gravity wave drag and mountain !! blocking. !! -!> The time tendencies of zonal and meridional wind are altered to -!! include the effect of mountain induced gravity wave drag from -!! subgrid scale orography including convective breaking, shear +!> The time tendencies of zonal and meridional wind are altered to +!! include the effect of mountain induced gravity wave drag from +!! subgrid scale orography including convective breaking, shear !! breaking and the presence of critical levels. !! @{ +!> +!! \section arg_table_gwdps_run Arguments +!! | local var name | longname | description | units | rank | type | kind | intent | optional | +!! |----------------|-------------------------------------------------------|------------------------------------|---------|------|---------|-----------|--------|----------| +!! | im | horizontal_loop_extent | horizontal loop extent, start at 1 | index | 0 | integer | | in | F | +!! !> \param[in] IM horizontal number of used pts !> \param[in] IX horizontal dimension !> \param[in] IY horizontal number of used pts @@ -140,10 +146,10 @@ !> \param[in,out] B non-linear tendency for u wind component !> \param[in,out] C non-linear tendency for temperature (not used) !> \param[in] U1 zonal wind component of model layer wind (m/s) -!> \param[in] V1 meridional wind component of model layer wind +!> \param[in] V1 meridional wind component of model layer wind !! (m/s) !> \param[in] T1 model layer mean temperature (K) -!> \param[in] Q1 model layer mean specific humidity +!> \param[in] Q1 model layer mean specific humidity !> \param[in] KPBL index for the PBL top layer !> \param[in] PRSI pressure at layer interfaces !> \param[in] DEL positive increment of p/psfc across layer @@ -156,10 +162,10 @@ !> \param[in] HPRIME orographic standard deviation (m) (mtnvar(:,1)) !> \param[in] OC orographic Convexity (mtnvar(:,2)) !> \param[in] OA4 orographic Asymmetry (mtnvar(:,3:6)) -!> \param[in] CLX4 Lx, the fractional area covered by the -!! subgrid-scale orography higher than a critical height for a grid +!> \param[in] CLX4 Lx, the fractional area covered by the +!! subgrid-scale orography higher than a critical height for a grid !! box with the interval \f$ \triangle x \f$ (mtnvar(:,7:10)) -!> \param[in] THETA the angle of the mtn with that to the east (x) +!> \param[in] THETA the angle of the mtn with that to the east (x) !! axis (mtnvar(:,11)) !> \param[in] SIGMA orographic slope (mtnvar(:,13)) !> \param[in] GAMMA orographic anisotropy (mtnvar(:,12)) @@ -171,8 +177,8 @@ !> \param[in] RD see physcons::con_tird !> \param[in] RV see physcons::con_rv !> \param[in] IMX number of longitude points -!> \param[in] NMTVR number of topographic variables such as -!! variance etc used in the GWD parameterization,current operational, +!> \param[in] NMTVR number of topographic variables such as +!! variance etc used in the GWD parameterization,current operational, !! nmtvr=14 !> \param[in] CDMBGWD multiplication factors for cdmb and gwd !> \param[in] ME pe number - used for debug prints @@ -197,7 +203,7 @@ SUBROUTINE GWDPS(IM,IX,IY,KM,A,B,C,U1,V1,T1,Q1,KPBL, & !----- ALSO INCLUDED IS RI SMOOTH OVER A THICK LOWER LAYER !----- ALSO INCLUDED IS DECREASE IN DE-ACC AT TOP BY 1/2 !----- THE NMC GWD INCORPORATING BOTH GLAS(P&S) AND GFDL(MIGWD) -!----- MOUNTAIN INDUCED GRAVITY WAVE DRAG +!----- MOUNTAIN INDUCED GRAVITY WAVE DRAG !----- CODE FROM .FR30(V3MONNX) FOR MONIN3 !----- THIS VERSION (06 MAR 1987) !----- THIS VERSION (26 APR 1987) 3.G @@ -273,8 +279,8 @@ SUBROUTINE GWDPS(IM,IX,IY,KM,A,B,C,U1,V1,T1,Q1,KPBL, & ! OTHER INPUT VARIABLES UNMODIFIED. ! revision log: ! May 2013 J. Wang change cleff back to opn setting -! Jan 2014 J. Wang merge Henry and Fangin's dissipation heat in gfs to nems -! +! Jan 2014 J. Wang merge Henry and Fangin's dissipation heat in gfs to nems +! ! ! ******************************************************************** USE MACHINE , ONLY : kind_phys @@ -313,8 +319,8 @@ SUBROUTINE GWDPS(IM,IX,IY,KM,A,B,C,U1,V1,T1,Q1,KPBL, & parameter (FRC=1.0, CE=0.8, CEOFRC=CE/FRC, frmax=100., CG=0.5) parameter (GMAX=1.0, VELEPS=1.0, FACTOP=0.5) ! parameter (GMAX=1.0, CRITAC=5.0E-4, VELEPS=1.0, FACTOP=0.5) - parameter (RLOLEV=50000.0) -! parameter (RLOLEV=500.0) + parameter (RLOLEV=50000.0) +! parameter (RLOLEV=500.0) ! parameter (RLOLEV=0.5) ! real(kind=kind_phys) dpmin,hminmt,hncrit,minwnd,sigfac @@ -368,7 +374,7 @@ SUBROUTINE GWDPS(IM,IX,IY,KM,A,B,C,U1,V1,T1,Q1,KPBL, & &, dtaux, dtauy, pkp1log, pklog integer kmm1, kmm2, lcap, lcapp1, kbps, kbpsp1,kbpsm1 & &, kmps, idir, nwd, i, j, k, klcap, kp1, kmpbl, npt, npr & - &, kmll + &, kmll ! &, kmll,kmds,ihit,jhit logical lprnt ! @@ -406,12 +412,12 @@ SUBROUTINE GWDPS(IM,IX,IY,KM,A,B,C,U1,V1,T1,Q1,KPBL, & LCAPP1 = LCAP + 1 ! ! - IF ( NMTVR .eq. 14) then + IF ( NMTVR .eq. 14) then ! ---- for lm and gwd calculation points ipt = 0 npt = 0 DO I = 1,IM - IF ( (elvmax(i) .GT. HMINMT) + IF ( (elvmax(i) .GT. HMINMT) & .and. (hprime(i) .GT. hpmin) ) then npt = npt + 1 ipt(npt) = i @@ -429,10 +435,10 @@ SUBROUTINE GWDPS(IM,IX,IY,KM,A,B,C,U1,V1,T1,Q1,KPBL, & ! do i=1,npt iwklm(i) = 2 - IDXZB(i) = 0 + IDXZB(i) = 0 kreflm(i) = 0 enddo -! if (lprnt) +! if (lprnt) ! & print *,' in gwdps_lm.f npt,IM,IX,IY,km,me=',npt,IM,IX,IY,km,me ! ! @@ -445,7 +451,7 @@ SUBROUTINE GWDPS(IM,IX,IY,KM,A,B,C,U1,V1,T1,Q1,KPBL, & ! then do not need hncrit -- test with large hncrit first. ! KMLL = km / 2 ! maximum mtnlm height : # of vertical levels / 2 KMLL = kmm1 -! --- No mtn should be as high as KMLL (so we do not have to start at +! --- No mtn should be as high as KMLL (so we do not have to start at ! --- the top of the model but could do calc for all levels). ! DO I = 1, npt @@ -461,12 +467,12 @@ SUBROUTINE GWDPS(IM,IX,IY,KM,A,B,C,U1,V1,T1,Q1,KPBL, & pkp1log = phil(j,k+1) / G pklog = phil(j,k) / G !!!------- ELVMAX(J) = min (ELVMAX(J) + sigfac * hprime(j), hncrit) - if ( ( ELVMAX(j) .le. pkp1log ) .and. + if ( ( ELVMAX(j) .le. pkp1log ) .and. & ( ELVMAX(j) .ge. pklog ) ) THEN ! print *,' in gwdps_lm.f 1 =',k,ELVMAX(j),pklog,pkp1log,me -! --- wk for diags but can be saved and reused. +! --- wk for diags but can be saved and reused. wk(i) = G * ELVMAX(j) / ( phil(j,k+1) - phil(j,k) ) - iwklm(I) = MAX(iwklm(I), k+1 ) + iwklm(I) = MAX(iwklm(I), k+1 ) ! print *,' in gwdps_lm.f 2 npt=',npt,i,j,wk(i),iwklm(i),me endif ! @@ -484,16 +490,16 @@ SUBROUTINE GWDPS(IM,IX,IY,KM,A,B,C,U1,V1,T1,Q1,KPBL, & ! jhit = 0 ! do i = 1, npt ! j=ipt(i) -! if ( iwklm(i) .gt. ihit ) then +! if ( iwklm(i) .gt. ihit ) then ! ihit = iwklm(i) ! jhit = j ! endif ! enddo ! print *, ' mb: kdt,max(iwklm),jhit,phil,me=', ! & kdt,ihit,jhit,phil(jhit,ihit),me - + klevm1 = KMLL - 1 - DO K = 1, klevm1 + DO K = 1, klevm1 DO I = 1, npt j = ipt(i) RDZ = g / ( phil(j,k+1) - phil(j,k) ) @@ -518,7 +524,7 @@ SUBROUTINE GWDPS(IM,IX,IY,KM,A,B,C,U1,V1,T1,Q1,KPBL, & BNV2bar(I) = (PRSL(J,1)-PRSL(J,2)) * DELKS1(I) * BNV2LM(I,1) ENDDO -! --- find the dividing stream line height +! --- find the dividing stream line height ! --- starting from the level above the max mtn downward ! --- iwklm(i) is the k-index of mtn elvmax elevation !> - Find the dividing streamline height starting from the level above @@ -536,14 +542,14 @@ SUBROUTINE GWDPS(IM,IX,IY,KM,A,B,C,U1,V1,T1,Q1,KPBL, & ! --- make averages, guess dividing stream (DS) line layer. ! --- This is not used in the first cut except for testing and ! --- is the vert ave of quantities from the surface to mtn top. -! +! DO I = 1, npt DO K = 1, Kreflm(I) J = ipt(i) RDELKS = DEL(J,K) * DELKS(I) - UBAR(I) = UBAR(I) + RDELKS * U1(J,K) ! trial Mean U below - VBAR(I) = VBAR(I) + RDELKS * V1(J,K) ! trial Mean V below - ROLL(I) = ROLL(I) + RDELKS * RO(I,K) ! trial Mean RO below + UBAR(I) = UBAR(I) + RDELKS * U1(J,K) ! trial Mean U below + VBAR(I) = VBAR(I) + RDELKS * V1(J,K) ! trial Mean V below + ROLL(I) = ROLL(I) + RDELKS * RO(I,K) ! trial Mean RO below RDELKS = (PRSL(J,K)-PRSL(J,K+1)) * DELKS1(I) BNV2bar(I) = BNV2bar(I) + BNV2lm(I,K) * RDELKS ! --- these vert ave are for diags, testing and GWD to follow (*j*). @@ -552,7 +558,7 @@ SUBROUTINE GWDPS(IM,IX,IY,KM,A,B,C,U1,V1,T1,Q1,KPBL, & ! print *,' in gwdps_lm.f 5 =',i,kreflm(npt),BNV2bar(npt),me ! ! --- integrate to get PE in the trial layer. -! --- Need the first layer where PE>EK - as soon as +! --- Need the first layer where PE>EK - as soon as ! --- IDXZB is not 0 we have a hit and Zb is found. ! DO I = 1, npt @@ -568,38 +574,38 @@ SUBROUTINE GWDPS(IM,IX,IY,KM,A,B,C,U1,V1,T1,Q1,KPBL, & !!\f[ !! UDS=\max(\sqrt{U1^2+V1^2},minwnd) !!\f] -!! where \f$ minwnd=0.1 \f$, \f$U1\f$ and \f$V1\f$ are zonal and +!! where \f$ minwnd=0.1 \f$, \f$U1\f$ and \f$V1\f$ are zonal and !! meridional wind components of model layer wind. - UDS(I,K) = + UDS(I,K) = & MAX(SQRT(U1(J,K)*U1(J,K) + V1(J,K)*V1(J,K)), minwnd) ! --- Test to see if we found Zb previously IF (IDXZB(I) .eq. 0 ) then - PE(I) = PE(I) + BNV2lm(I,K) * - & ( G * ELVMAX(J) - phil(J,K) ) * + PE(I) = PE(I) + BNV2lm(I,K) * + & ( G * ELVMAX(J) - phil(J,K) ) * & ( PHII(J,K+1) - PHII(J,K) ) / (G*G) ! --- KE ! --- Wind projected on the line perpendicular to mtn range, U(Zb(K)). ! --- kenetic energy is at the layer Zb ! --- THETA ranges from -+90deg |_ to the mtn "largest topo variations" UP(I) = UDS(I,K) * cos(ANG(I,K)) - EK(I) = 0.5 * UP(I) * UP(I) + EK(I) = 0.5 * UP(I) * UP(I) ! --- Dividing Stream lime is found when PE =exceeds EK. IF ( PE(I) .ge. EK(I) ) IDXZB(I) = K ! --- Then mtn blocked flow is between Zb=k(IDXZB(I)) and surface ! -!> - The dividing streamline height (idxzb), of a subgrid scale -!! obstable, is found by comparing the potential (PE) and kinetic +!> - The dividing streamline height (idxzb), of a subgrid scale +!! obstable, is found by comparing the potential (PE) and kinetic !! energies (EK) of the upstream large scale wind and subgrid scale air !! parcel movements. the dividing streamline is found when -!! \f$PE\geq EK\f$. Mountain-blocked flow is defined to exist between -!! the surface and the dividing streamline height (\f$h_d\f$), which -!! can be found by solving an integral equation for \f$h_d\f$: +!! \f$PE\geq EK\f$. Mountain-blocked flow is defined to exist between +!! the surface and the dividing streamline height (\f$h_d\f$), which +!! can be found by solving an integral equation for \f$h_d\f$: !!\f[ !! \frac{U^{2}(h_{d})}{2}=\int_{h_{d}}^{H} N^{2}(z)(H-z)dz !!\f] !! where \f$H\f$ is the maximum subgrid scale elevation within the grid -!! box of actual orography, \f$h\f$, obtained from the GTOPO30 dataset +!! box of actual orography, \f$h\f$, obtained from the GTOPO30 dataset !! from the U.S. Geological Survey. ENDIF ENDDO @@ -628,12 +634,12 @@ SUBROUTINE GWDPS(IM,IX,IY,KM,A,B,C,U1,V1,T1,Q1,KPBL, & ! endif ! ! --- The drag for mtn blocked flow -! +! DO I = 1, npt J = ipt(i) ZLEN = 0. ! print *,' in gwdps_lm.f 9 =',i,j,IDXZB(i),me - IF ( IDXZB(I) .gt. 0 ) then + IF ( IDXZB(I) .gt. 0 ) then DO K = IDXZB(I), 1, -1 IF ( PHIL(J,IDXZB(I)) .gt. PHIL(J,K) ) then @@ -642,40 +648,40 @@ SUBROUTINE GWDPS(IM,IX,IY,KM,A,B,C,U1,V1,T1,Q1,KPBL, & !!\f[ !! ZLEN=\sqrt{[\frac{h_{d}-z}{z+h'}]} !!\f] -!! where \f$z\f$ is the height, \f$h'\f$ is the orographic standard +!! where \f$z\f$ is the height, \f$h'\f$ is the orographic standard !! deviation (HPRIME). - ZLEN = SQRT( ( PHIL(J,IDXZB(I)) - PHIL(J,K) ) / + ZLEN = SQRT( ( PHIL(J,IDXZB(I)) - PHIL(J,K) ) / & ( PHIL(J,K ) + G * hprime(J) ) ) ! --- lm eq 14: -!> - Calculate the drag coefficient to vary with the aspect ratio of +!> - Calculate the drag coefficient to vary with the aspect ratio of !! the obstable as seen by the incident flow (see eq.14 in Lott and -!! Miller (1997) \cite lott_and_miller_1997) +!! Miller (1997) \cite lott_and_miller_1997) !!\f[ !! R=\frac{\cos^{2}\psi+\gamma\sin^{2}\psi}{\gamma\cos^{2}\psi+\sin^{2}\psi} !!\f] -!! where \f$\psi\f$, which is derived from THETA, is the angle between -!! the incident flow direction and the normal ridge direcion. +!! where \f$\psi\f$, which is derived from THETA, is the angle between +!! the incident flow direction and the normal ridge direcion. !! \f$\gamma\f$ is the orographic anisotropy (GAMMA). - R = (cos(ANG(I,K))**2 + GAMMA(J) * sin(ANG(I,K))**2) / + R = (cos(ANG(I,K))**2 + GAMMA(J) * sin(ANG(I,K))**2) / & (gamma(J) * cos(ANG(I,K))**2 + sin(ANG(I,K))**2) ! --- (negitive of DB -- see sign at tendency) -!> - In each model layer below the dividing streamlines, a drag from +!> - In each model layer below the dividing streamlines, a drag from !! the blocked flow is exerted by the obstacle on the large scale flow. -!! The drag per unit area and per unit height is written (eq.15 in +!! The drag per unit area and per unit height is written (eq.15 in !! Lott and Miller (1997) \cite lott_and_miller_1997): !!\f[ !! D_{b}(z)=-C_{d}\max(2-\frac{1}{R},0)\rho\frac{\sigma}{2h'}ZLEN\max(\cos\psi,\gamma\sin\psi)\frac{UDS}{2} !!\f] -!! where \f$C_{d}\f$ is a specified constant, \f$\sigma\f$ is the -!! orographic slope. +!! where \f$C_{d}\f$ is a specified constant, \f$\sigma\f$ is the +!! orographic slope. DBTMP = 0.25 * CDmb * & MAX( 2. - 1. / R, 0. ) * sigma(J) * & MAX(cos(ANG(I,K)), gamma(J)*sin(ANG(I,K))) * - & ZLEN / hprime(J) - DB(I,K) = DBTMP * UDS(I,K) + & ZLEN / hprime(J) + DB(I,K) = DBTMP * UDS(I,K) ! -! if(lprnt .and. i .eq. npr) then +! if(lprnt .and. i .eq. npr) then ! print *,' in gwdps_lmi.f 10 npt=',npt,i,j,idxzb(i) ! &, DBTMP,R' ang=',ang(i,k),' gamma=',gamma(j),' K=',K ! print *,' in gwdps_lmi.f 11 K=',k,ZLEN,cos(ANG(I,K)) @@ -686,13 +692,13 @@ SUBROUTINE GWDPS(IM,IX,IY,KM,A,B,C,U1,V1,T1,Q1,KPBL, & ! if(lprnt) print *,' @K=1,ZLEN,DBTMP=',K,ZLEN,DBTMP endif ENDDO -! +! !............................. !............................. ! end mtn blocking section ! - ELSEIF ( NMTVR .ne. 14) then -! ---- for mb not present and gwd (nmtvr .ne .14) + ELSEIF ( NMTVR .ne. 14) then +! ---- for mb not present and gwd (nmtvr .ne .14) ipt = 0 npt = 0 DO I = 1,IM @@ -791,13 +797,13 @@ SUBROUTINE GWDPS(IM,IX,IY,KM,A,B,C,U1,V1,T1,Q1,KPBL, & enddo enddo ! -!> - Calculate the reference level index: kref=max(2,KPBL+1). where +!> - Calculate the reference level index: kref=max(2,KPBL+1). where !! KPBL is the index for the PBL top layer. KBPS = 1 KMPS = KM DO I=1,npt J = ipt(i) - kref(I) = MAX(IWK(I), KPBL(J)+1 ) ! reference level + kref(I) = MAX(IWK(I), KPBL(J)+1 ) ! reference level DELKS(I) = 1.0 / (PRSI(J,1) - PRSI(J,kref(I))) DELKS1(I) = 1.0 / (PRSL(J,1) - PRSL(J,kref(I))) UBAR (I) = 0.0 @@ -832,8 +838,8 @@ SUBROUTINE GWDPS(IM,IX,IY,KM,A,B,C,U1,V1,T1,Q1,KPBL, & ! NWD 1 2 3 4 5 6 7 8 ! WD W S SW NW E N NE SE ! -!> - Calculate low-level horizontal wind direction, the derived -!! orographic asymmetry parameter (OA), and the derived Lx (CLX). +!> - Calculate low-level horizontal wind direction, the derived +!! orographic asymmetry parameter (OA), and the derived Lx (CLX). DO I = 1,npt J = ipt(i) wdir = atan2(UBAR(I),VBAR(I)) + pi @@ -862,7 +868,7 @@ SUBROUTINE GWDPS(IM,IX,IY,KM,A,B,C,U1,V1,T1,Q1,KPBL, & ULOW (I) = 0.0 DTFAC(I) = 1.0 ICRILV(I) = .FALSE. ! INITIALIZE CRITICAL LEVEL CONTROL VECTOR - + ! !----COMPUTE THE "LOW LEVEL" WIND MAGNITUDE (M/S) ! @@ -881,7 +887,7 @@ SUBROUTINE GWDPS(IM,IX,IY,KM,A,B,C,U1,V1,T1,Q1,KPBL, & ! ENDIF ENDDO ENDDO -! +! ! ! find the interface level of the projected wind where ! low levels & upper levels meet above pbl @@ -919,15 +925,15 @@ SUBROUTINE GWDPS(IM,IX,IY,KM,A,B,C,U1,V1,T1,Q1,KPBL, & ! RATIO CONST. USE SIMPLIFIED RELATIONSHIP BETWEEN STANDARD ! DEVIATION & CRITICAL HGT ! -!> - Calculate enhancement factor (E),number of mountans (m') and +!> - Calculate enhancement factor (E),number of mountans (m') and !! aspect ratio constant. -!!\n As in eq.(4.9),(4.10),(4.11) in Kim and Arakawa (1995) -!! \cite kim_and_arakawa_1995, we define m' and E in such a way that they -!! depend on the geometry and location of the subgrid-scale orography -!! through OA and the nonlinearity of flow above the orography through -!! Fr. OC, which is the orographic convexity, and statistically -!! determine how protruded (sharp) the subgrid-scale orography is, is -!! included in the saturation flux G' in such a way that G' is +!!\n As in eq.(4.9),(4.10),(4.11) in Kim and Arakawa (1995) +!! \cite kim_and_arakawa_1995, we define m' and E in such a way that they +!! depend on the geometry and location of the subgrid-scale orography +!! through OA and the nonlinearity of flow above the orography through +!! Fr. OC, which is the orographic convexity, and statistically +!! determine how protruded (sharp) the subgrid-scale orography is, is +!! included in the saturation flux G' in such a way that G' is !! proportional to OC. The forms of E,m' and G' are: !!\f[ !! E(OA,F_{r_{0}})=(OA+2)^{\delta} @@ -944,17 +950,17 @@ SUBROUTINE GWDPS(IM,IX,IY,KM,A,B,C,U1,V1,T1,Q1,KPBL, & !!\f[ !! a^{2}=C_{G}OC^{-1} !!\f] -!! where \f$F_{r_{c}}(=1)\f$ is the critical Froude number, +!! where \f$F_{r_{c}}(=1)\f$ is the critical Froude number, !! \f$F_{r_{0}}\f$ is the Froude number. \f$C_{E}\f$,\f$C_{m}\f$, !! \f$C_{G}\f$ are constants. -!> - Calculate the reference-level drag \f$\tau_{0}\f$ (eq.(4.8) in +!> - Calculate the reference-level drag \f$\tau_{0}\f$ (eq.(4.8) in !! Kim and Arakawa (1995) \cite kim_and_arakawa_1995): !!\f[ !! \tau_0=E\frac{m'}{\triangle x}\frac{\rho_{0}U_0^3}{N_{0}}G' !!\f] -!! where \f$E\f$,\f$m'\f$, and \f$G'\f$ are the enhancement factor, -!! "the number of mountains", and the flux function defined above, +!! where \f$E\f$,\f$m'\f$, and \f$G'\f$ are the enhancement factor, +!! "the number of mountains", and the flux function defined above, !! respectively. EFACT = (OA(I) + 2.) ** (CEOFRC*FR) @@ -978,7 +984,7 @@ SUBROUTINE GWDPS(IM,IX,IY,KM,A,B,C,U1,V1,T1,Q1,KPBL, & SCOR(I) = BNV2(I,K) / TEM ! Scorer parameter below ref level ENDDO ! if(lprnt) print *,' taub=',taub -! +! !----SET UP BOTTOM VALUES OF STRESS ! DO K = 1, KBPS @@ -1005,12 +1011,12 @@ SUBROUTINE GWDPS(IM,IX,IY,KM,A,B,C,U1,V1,T1,Q1,KPBL, & ! !> - Compute the drag above the reference level (\f$k\geq kref\f$): !! - Calculate the ratio of the Scorer parameter (\f$R_{scor}\f$). -!! \n From a series of experiments, Kim and Arakawa (1995) -!! \cite kim_and_arakawa_1995 found that the magnitude of drag divergence -!! tends to be underestimated by the revised scheme in low-level +!! \n From a series of experiments, Kim and Arakawa (1995) +!! \cite kim_and_arakawa_1995 found that the magnitude of drag divergence +!! tends to be underestimated by the revised scheme in low-level !! downstream regions with wave breaking. Therefore, at low levels when -!! OA > 0 (i.e., in the "downstream" region) the saturation hypothesis -!! is replaced by the following formula based on the ratio of the +!! OA > 0 (i.e., in the "downstream" region) the saturation hypothesis +!! is replaced by the following formula based on the ratio of the !! the Scorer parameter: !!\f[ !! R_{scor}=\min \left[\frac{\tau_i}{\tau_{i+1}},1\right] @@ -1024,7 +1030,7 @@ SUBROUTINE GWDPS(IM,IX,IY,KM,A,B,C,U1,V1,T1,Q1,KPBL, & SCORK = BNV2(I,K) * TEMV * TEMV RSCOR = MIN(1.0, SCORK / SCOR(I)) SCOR(I) = SCORK - ELSE + ELSE RSCOR = 1. ENDIF ! @@ -1033,11 +1039,11 @@ SUBROUTINE GWDPS(IM,IX,IY,KM,A,B,C,U1,V1,T1,Q1,KPBL, & !! \tau=\frac{m'}{\triangle x}\rho NUh_d^2 !!\f] !! where \f$h_{d}\f$ is the displacement wave amplitude. In the absence -!! of wave breaking, the displacement amplitude for the \f$i^{th}\f$ -!! layer can be expressed using the drag for the layer immediately +!! of wave breaking, the displacement amplitude for the \f$i^{th}\f$ +!! layer can be expressed using the drag for the layer immediately !! below. Thus, assuming \f$\tau_i=\tau_{i+1}\f$, we can get: !!\f[ -!! h_{d_i}^2=\frac{\triangle x}{m'}\frac{\tau_{i+1}}{\rho_{i}N_{i}U_{i}} +!! h_{d_i}^2=\frac{\triangle x}{m'}\frac{\tau_{i+1}}{\rho_{i}N_{i}U_{i}} !!\f] BRVF = SQRT(BNV2(I,K)) ! Brunt-Vaisala Frequency @@ -1049,9 +1055,9 @@ SUBROUTINE GWDPS(IM,IX,IY,KM,A,B,C,U1,V1,T1,Q1,KPBL, & ! ! RIM is the MINIMUM-RICHARDSON NUMBER BY SHUTTS (1985) ! -!> - The minimum Richardson number (\f$Ri_{m}\f$) or local +!> - The minimum Richardson number (\f$Ri_{m}\f$) or local !! wave-modified Richardson number, which determines the onset of wave -!! breaking, is expressed in terms of \f$R_{i}\f$ and +!! breaking, is expressed in terms of \f$R_{i}\f$ and !! \f$F_{r_{d}}=Nh_{d}/U\f$: !!\f[ !! Ri_{m}=\frac{Ri(1-Fr_{d})}{(1+\sqrt{Ri}\cdot Fr_{d})^{2}} @@ -1068,17 +1074,17 @@ SUBROUTINE GWDPS(IM,IX,IY,KM,A,B,C,U1,V1,T1,Q1,KPBL, & !> - Check stability to employ the 'saturation hypothesis' of Lindzen !! (1981) \cite lindzen_1981 except at tropospheric downstream regions. !! \n Wave breaking occurs when \f$Ri_{m} - Calculate outputs: A, B, DUSFC, DVSFC (see parameter description). -!! - Below the dividing streamline height (k < idxzb), mountain -!! blocking(\f$D_{b}\f$) is applied. +!! - Below the dividing streamline height (k < idxzb), mountain +!! blocking(\f$D_{b}\f$) is applied. !! - Otherwise (k>= idxzb), orographic GWD (\f$\tau\f$) is applied. DO K = 1,KM DO I = 1,npt @@ -1163,7 +1169,7 @@ SUBROUTINE GWDPS(IM,IX,IY,KM,A,B,C,U1,V1,T1,Q1,KPBL, & A(J,K) = - DBIM * V1(J,K) + A(J,K) B(J,K) = - DBIM * U1(J,K) + B(J,K) ENG1 = ENG0*(1.0-DBIM*DELTIM)*(1.0-DBIM*DELTIM) -! if ( ABS(DBIM * U1(J,K)) .gt. .01 ) +! if ( ABS(DBIM * U1(J,K)) .gt. .01 ) ! & print *,' in gwdps_lmi.f KDT=',KDT,I,K,DB(I,K), ! & dbim,idxzb(I),U1(J,K),V1(J,K),me DUSFC(J) = DUSFC(J) - DBIM * V1(J,K) * DEL(J,K) @@ -1193,7 +1199,7 @@ SUBROUTINE GWDPS(IM,IX,IY,KM,A,B,C,U1,V1,T1,Q1,KPBL, & DUSFC(J) = TEM * DUSFC(J) DVSFC(J) = TEM * DVSFC(J) ENDDO -! +! ! MONITOR FOR EXCESSIVE GRAVITY WAVE DRAG TENDENCIES IF NCNT>0 ! ! IF(NCNT.GT.0) THEN diff --git a/physics/mfdeepcnv.f b/physics/mfdeepcnv.f index 3fd80606a..9db6d0f2d 100755 --- a/physics/mfdeepcnv.f +++ b/physics/mfdeepcnv.f @@ -1,6 +1,72 @@ - subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, - & q1,t1,u1,v1,cldwrk,rn,kbot,ktop,kcnv,islimsk,garea, +!> \file mfdeepcnv.f +!! This file contains NCEP's Scale Aware Simplified Arakawa Schubert Scheme +!! for deep convection. + + module sasas_deep + contains + +!> \defgroup SASAS Scale-Aware Simplified Arakawa-Schubert Deep Convection +!! @{ +!! \brief Brief description of the parameterization +!! \section diagram Calling Hierarchy Diagram +!! \section intraphysics Intraphysics Communication + +!> \brief Brief description of the subroutine +!! +!! \section arg_table_sasasdeep_init Argument Table +!! + subroutine sasasdeep_init + end subroutine sasasdeep_init + + +!> \brief Brief description of the subroutine +!! +!! \section arg_table_sasasdeep_finalize Argument Table +!! + subroutine sasasdeep_finalize + end subroutine sasasdeep_finalize + +!> \brief Brief description of the subroutine +!! +!! \section arg_table_sasasdeep_run Argument Table +!! | local var name | longname | description | units | rank | type | kind | intent | optional | +!! |----------------|-----------------------------------------------------------|------------------------------------|---------|------|---------|-----------|--------|----------| +!! | im | horizontal_loop_extent | horizontal loop extent, start at 1 | index | 0 | integer | | in | F | +!! | ix | horizontal_dimension | horizontal dimension | index | 0 | integer | | in | F | +!! | km | vertical_dimension | vertical layer dimension | index | 0 | integer | | in | F | +!! | delt | time_step_for_physics | physics time step | s | 0 | real | kind_phys | in | F | +!! | delp | air_pressure_difference_between_midlayers | pres(k) - pres(k+1) | Pa | 2 | real | kind_phys | in | F | +!! | prslp | air_pressure | mean layer pressure | Pa | 2 | real | kind_phys | in | F | +!! | psp | surface_air_pressure | surface pressure | Pa | 1 | real | kind_phys | in | F | +!! | phil | geopotential | layer geopotential | m2 s-2 | 2 | real | kind_phys | in | F | +!! | ql1 | cloud_ice_specific_humidity | cloud ice specific humidity | kg kg-1 | 2 | real | kind_phys | inout | F | +!! | ql2 | cloud_liquid_water_specific_humidity | cloud water specific humidity | kg kg-1 | 2 | real | kind_phys | inout | F | +!! | q1 | water_vapor_specific_humidity_updated_by_physics | updated vapor specific humidity | kg kg-1 | 2 | real | kind_phys | inout | F | +!! | t1 | air_temperature_updated_by_physics | updated temperature | K | 2 | real | kind_phys | inout | F | +!! | u1 | x_wind_updated_by_physics | updated x-direction wind | m s-1 | 2 | real | kind_phys | inout | F | +!! | v1 | y_wind_updated_by_physics | updated y-direction wind | m s-1 | 2 | real | kind_phys | inout | F | +!! | cldwrk | cloud_work_function | cloud work function | m2 s-2 | 1 | real | kind_phys | out | F | +!! | rn | instantaneous_rainfall_amount | convective rain | m | 1 | real | kind_phys | out | F | +!! | kbot | vertical_index_at_cloud_base | index for cloud base | index | 1 | integer | | out | F | +!! | ktop | vertical_index_at_cloud_top | index for cloud top | index | 1 | integer | | out | F | +!! | kcnv | flag_deep_convection | deep convection: 0=no, 1=yes | flag | 1 | integer | | out | F | +!! | islimsk | sea_land_ice_mask | landmask: sea/land/ice=0/1/2 | flag | 1 | integer | | in | F | +!! | garea | cell_area | grid cell area | m2 | 1 | real | kind_phys | in | F | +!! | dot | omega | layer mean vertical velocity | Pa s-1 | 2 | real | kind_phys | in | F | +!! | ncloud | number_of_hydrometeors | number of hydrometeors | count | 0 | integer | | in | F | +!! | ud_mf | instantaneous_atmosphere_updraft_convective_mass_flux | (updraft mass flux) * delt | kg m-2 | 2 | real | kind_phys | out | F | +!! | dd_mf | instantaneous_atmosphere_downdraft_convective_mass_flux | (downdraft mass flux) * delt | kg m-2 | 2 | real | kind_phys | out | F | +!! | dt_mf | instantaneous_atmosphere_detrainment_convective_mass_flux | (detrainment mass flux) * delt | kg m-2 | 2 | real | kind_phys | out | F | +!! | cnvw | convective_cloud_water_specific_humidity | convective cloud water | kg kg-1 | 2 | real | kind_phys | out | F | +!! | cnvc | convective_cloud_cover | convective cloud cover | frac | 2 | real | kind_phys | out | F | +!! +!! \section general General Algorithm +!! \section detailed Detailed Algorithm +!! @{ + subroutine sasasdeep_run(im,ix,km,delt,delp,prslp,psp,phil,ql1, & + & ql2,q1,t1,u1,v1,cldwrk,rn,kbot,ktop,kcnv,islimsk,garea, & & dot,ncloud,ud_mf,dd_mf,dt_mf,cnvw,cnvc) + ! use machine , only : kind_phys use funcphys , only : fpvs @@ -10,20 +76,21 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, &, eps => con_eps, epsm1 => con_epsm1 implicit none ! - integer im, ix, km, ncloud, - & kbot(im), ktop(im), kcnv(im) +! In the current NCEP spectral model im <= ix for reduced grid numbers +! near the pole and a parallel computing. For FV3, im=ix. + integer im, ix, km, ncloud, & + & kbot(im), ktop(im), kcnv(im) ! &, me real(kind=kind_phys) delt real(kind=kind_phys) psp(im), delp(ix,km), prslp(ix,km) - real(kind=kind_phys) ps(im), del(ix,km), prsl(ix,km), - & ql(ix,km,2),q1(ix,km), t1(ix,km), - & u1(ix,km), v1(ix,km), -! & u1(ix,km), v1(ix,km), rcs(im), - & cldwrk(im), rn(im), garea(im), - & dot(ix,km), phil(ix,km), - & cnvw(ix,km),cnvc(ix,km), -! hchuang code change mass flux output - & ud_mf(im,km),dd_mf(im,km),dt_mf(im,km) + real(kind=kind_phys) ps(im), del(ix,km), prsl(ix,km), & + & ql(ix,km,2),q1(ix,km), t1(ix,km), & + & u1(ix,km), v1(ix,km), & !rcs(im), + & cldwrk(im), rn(im), garea(im), & + & dot(ix,km), phil(ix,km), & + & cnvw(ix,km),cnvc(ix,km), & + & ud_mf(im,km),dd_mf(im,km),dt_mf(im,km) ! hchuang code change mass flux output + ! integer i, indx, jmn, k, kk, km1, n integer, dimension(im), intent(in) :: islimsk @@ -32,7 +99,7 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, real(kind=kind_phys) clam, cxlamu, cxlamd, & xlamde, xlamdd, & crtlamu, crtlamd -! +! ! real(kind=kind_phys) detad real(kind=kind_phys) adw, aup, aafac, & beta, betal, betas, @@ -41,7 +108,7 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, & dellat, delta, desdt, dg, & dh, dhh, dp, & dq, dqsdp, dqsdt, dt, - & dt2, dtmax, dtmin, + & dt2, dtmax, dtmin, & dxcrtas, dxcrtuf, & dv1h, dv2h, dv3h, & dv1q, dv2q, dv3q, @@ -50,7 +117,7 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, & es, etah, & cthk, dthk, & evef, evfact, evfactl, fact1, - & fact2, factor, + & fact2, factor, & g, gamma, pprime, cm, & qlk, qrch, qs, & rain, rfact, shear, tfac, @@ -77,7 +144,7 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, & delqbar(im), delqev(im), deltbar(im), & deltv(im), dtconv(im), edt(im), & edto(im), edtx(im), fld(im), - & hcdo(im,km), hmax(im), hmin(im), + & hcdo(im,km), hmax(im), hmin(im), & ucdo(im,km), vcdo(im,km),aa2(im), & pdot(im), po(im,km), & pwavo(im), pwevo(im), mbdt(im), @@ -87,30 +154,30 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, & xmb(im), xmbmax(im), xpwav(im), & xpwev(im), xlamx(im), & delubar(im),delvbar(im) -! + real(kind=kind_phys) c0(im) cj real(kind=kind_phys) cinpcr, cinpcrmx, cinpcrmn, & cinacr, cinacrmx, cinacrmn cj -! -! parameters for updraft velocity calculation + +!> parameters for updraft velocity calculation real(kind=kind_phys) bet1, cd1, f1, gam1, & bb1, bb2, wucb -! + c physical parameters parameter(g=grav,asolfac=0.89) parameter(elocp=hvap/cp,el2orc=hvap*hvap/(rv*cp)) parameter(c0s=.002,c1=.002,d0=.01) parameter(c0l=c0s*asolfac) -! -! asolfac: aerosol-aware parameter based on Lim & Hong (2012) -! asolfac= cx / c0s(=.002) -! cx = min([-0.7 ln(Nccn) + 24]*1.e-4, c0s) -! Nccn: CCN number concentration in cm^(-3) -! Until a realistic Nccn is provided, typical Nccns are assumed -! as Nccn=100 for sea and Nccn=7000 for land -! + +!> asolfac: aerosol-aware parameter based on Lim & Hong (2012) +!! asolfac= cx / c0s(=.002) +!! cx = min([-0.7 ln(Nccn) + 24]*1.e-4, c0s) +!! Nccn: CCN number concentration in cm^(-3) +!! Until a realistic Nccn is provided, typical Nccns are assumed +!! as Nccn=100 for sea and Nccn=7000 for land + parameter(cm=1.0,delta=fv) parameter(fact1=(cvap-cliq)/rv,fact2=hvap/rv-fact1*t0c) parameter(cthk=200.,dthk=25.) @@ -119,18 +186,18 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, parameter(cinacrmx=-120.,cinacrmn=-80.) parameter(bet1=1.875,cd1=.506,f1=2.0,gam1=.5) parameter(betaw=.03,dxcrtas=8.e3,dxcrtuf=15.e3) -! -! local variables and arrays + +!> local variables and arrays real(kind=kind_phys) pfld(im,km), to(im,km), qo(im,km), & uo(im,km), vo(im,km), qeso(im,km) -! for updraft velocity calculation +!> for updraft velocity calculation real(kind=kind_phys) wu2(im,km), buo(im,km), drag(im,km) real(kind=kind_phys) wc(im), scaldfunc(im), sigmagfm(im) -! -c cloud water + +!> cloud water ! real(kind=kind_phys) tvo(im,km) real(kind=kind_phys) qlko_ktcon(im), dellal(im,km), tvo(im,km), - & dbyo(im,km), zo(im,km), + & dbyo(im,km), zo(im,km), & xlamue(im,km), xlamud(im,km), & fent1(im,km), fent2(im,km), frh(im,km), & heo(im,km), heso(im,km), @@ -142,11 +209,11 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, & pwo(im,km), pwdo(im,km), c0t(im,km), & tx1(im), sumx(im), cnvwt(im,km) ! &, rhbar(im) -! + logical totflg, cnvflg(im), asqecflg(im), flg(im) -! -! asqecflg: flag for the quasi-equilibrium assumption of Arakawa-Schubert -! + +!> asqecflg: flag for the quasi-equilibrium assumption of Arakawa-Schubert + ! real(kind=kind_phys) pcrit(15), acritt(15), acrit(15) !! save pcrit, acritt ! data pcrit/850.,800.,750.,700.,650.,600.,550.,500.,450.,400., @@ -162,7 +229,7 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, c----------------------------------------------------------------------- ! !************************************************************************ -! convert input Pa terms to Cb terms -- Moorthi +!> convert input Pa terms to Cb terms -- Moorthi ps = psp * 0.001 prsl = prslp * 0.001 del = delp * 0.001 @@ -170,9 +237,9 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, ! ! km1 = km - 1 -c -c initialize arrays -c + +!> initialize arrays + do i=1,im cnvflg(i) = .true. rn(i)=0. @@ -250,7 +317,7 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, ! val = 5400. val = 10800. dtmax = max(dt2, val ) -c model tunable parameters are all here +!> model tunable parameters are all here edtmaxl = .3 edtmaxs = .3 clam = .1 @@ -274,25 +341,25 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, ! pgcon = 0.7 ! Gregory et al. (1997, QJRMS) pgcon = 0.55 ! Zhang & Wu (2003,JAS) ! - w1l = -8.e-3 + w1l = -8.e-3 w2l = -4.e-2 - w3l = -5.e-3 + w3l = -5.e-3 w4l = -5.e-4 w1s = -2.e-4 w2s = -2.e-3 w3s = -1.e-3 w4s = -2.e-5 -c -c define top layer for search of the downdraft originating layer -c and the maximum thetae for updraft -c + +!> define top layer for search of the downdraft originating layer +!! and the maximum thetae for updraft + do i=1,im kbmax(i) = km kbm(i) = km kmax(i) = km tx1(i) = 1.0 / ps(i) enddo -! +! do k = 1, km do i=1,im if (prsl(i,k)*tx1(i) > 0.04) kmax(i) = k + 1 @@ -305,10 +372,11 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, kbmax(i) = min(kbmax(i),kmax(i)) kbm(i) = min(kbm(i),kmax(i)) enddo -c -c hydrostatic height assume zero terr and initially assume -c updraft entrainment rate as an inverse function of height -c + +!> hydrostatic height assume zero terr and initially assume +!! updraft entrainment rate as an inverse function of height + + do k = 1, km do i=1,im zo(i,k) = phil(i,k) / g @@ -321,10 +389,9 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, ! xlamue(i,k) = max(xlamue(i,k), crtlamu) enddo enddo -c -c!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -c convert surface pressure to mb from cb -c + +!> convert surface pressure to mb from cb + do k = 1, km do i = 1, im if (k <= kmax(i)) then @@ -362,14 +429,14 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, endif enddo enddo -c -c column variables -c p is pressure of the layer (mb) -c t is temperature at t-dt (k)..tn -c q is mixing ratio at t-dt (kg/kg)..qn -c to is temperature at t+dt (k)... this is after advection and turbulan -c qo is mixing ratio at t+dt (kg/kg)..q1 -c + +!> column variables +!! p is pressure of the layer (mb) +!! t is temperature at t-dt (k)..tn +!! q is specific humidity at t-dt (kg/kg)..qn +!! to is temperature at t+dt (k)... this is after advection and turbulence +!! qo is specific humidity at t+dt (kg/kg)..q1 + do k = 1, km do i=1,im if (k <= kmax(i)) then @@ -384,9 +451,9 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, endif enddo enddo -c -c compute moist static energy -c + +!> compute moist static energy + do k = 1, km do i=1,im if (k <= kmax(i)) then @@ -398,10 +465,10 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, endif enddo enddo -c -c determine level with largest moist static energy -c this is the level where updraft starts -c + +!> determine level with largest moist static energy +!! this is the level where updraft starts + do i=1,im hmax(i) = heo(i,1) kb(i) = 1 @@ -458,9 +525,9 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, endif enddo enddo -c -c look for the level of free convection as cloud base -c + +!> look for the level of free convection as cloud base + do i=1,im flg(i) = .true. kbcon(i) = kmax(i) @@ -492,10 +559,10 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, pdot(i) = 0.01 * dot(i,kbcon(i)) ! Now dot is in Pa/s endif enddo -c -c turn off convection if pressure depth between parcel source level -c and cloud base is larger than a critical value, cinpcr -c + +!> turn off convection if pressure depth between parcel source level +!! and cloud base is larger than a critical value, cinpcr + do i=1,im if(cnvflg(i)) then if(islimsk(i) == 1) then @@ -535,11 +602,10 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, totflg = totflg .and. (.not. cnvflg(i)) enddo if(totflg) return -!! -c -c assume that updraft entrainment rate above cloud base is -c same as that at cloud base -c + +!> assume that updraft entrainment rate above cloud base is +!! same as that at cloud base + do i=1,im if(cnvflg(i)) then xlamx(i) = xlamue(i,kbcon(i)) @@ -553,9 +619,9 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, endif enddo enddo -c -c specify a background (turbulent) detrainment rate for the updrafts -c + +!> specify a background (turbulent) detrainment rate for the updrafts + do k = 1, km1 do i=1,im if(cnvflg(i) .and. k < kmax(i)) then @@ -564,10 +630,10 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, endif enddo enddo -c -c functions rapidly decreasing with height, mimicking a cloud ensemble -c (Bechtold et al., 2008) -c + +!> functions rapidly decreasing with height, mimicking a cloud ensemble +!! (Bechtold et al., 2008) + do k = 2, km1 do i=1,im if(cnvflg(i).and. @@ -578,11 +644,11 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, endif enddo enddo -c -c final entrainment and detrainment rates as the sum of turbulent part and -c organized entrainment depending on the environmental relative humidity -c (Bechtold et al., 2008) -c + +!> final entrainment and detrainment rates as the sum of turbulent part and +!! organized entrainment depending on the environmental relative humidity +!! (Bechtold et al., 2008) + do k = 2, km1 do i=1,im if(cnvflg(i) .and. @@ -594,11 +660,9 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, endif enddo enddo -! -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -c -c determine updraft mass flux for the subcloud layers -c + +!> determine updraft mass flux for the subcloud layers + do k = km1, 1, -1 do i = 1, im if (cnvflg(i)) then @@ -611,9 +675,9 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, endif enddo enddo -c -c compute mass flux above cloud base -c + +!> compute mass flux above cloud base + do i = 1, im flg(i) = cnvflg(i) enddo @@ -634,9 +698,9 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, endif enddo enddo -c -c compute updraft cloud properties -c + +!> compute updraft cloud properties + do i = 1, im if(cnvflg(i)) then indx = kb(i) @@ -646,11 +710,11 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, pwavo(i) = 0. endif enddo -c -c cloud property is modified by the entrainment process -c -! cm is an enhancement factor in entrainment rates for momentum -! + +!> cloud property is modified by the entrainment process + +!> cm is an enhancement factor in entrainment rates for momentum + do k = 2, km1 do i = 1, im if (cnvflg(i)) then @@ -675,10 +739,10 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, endif enddo enddo -c -c taking account into convection inhibition due to existence of -c dry layers below cloud base -c + +!> taking account into convection inhibition due to existence of +!! dry layers below cloud base + do i=1,im flg(i) = cnvflg(i) kbcon1(i) = kmax(i) @@ -713,9 +777,9 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, enddo if(totflg) return !! -c -c calculate convective inhibition -c + +!> calculate convective inhibition + do k = 2, km1 do i = 1, im if (cnvflg(i)) then @@ -759,7 +823,7 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, else tem = 0. endif - + val1 = -1. tem = max(tem,val1) val2 = 1. @@ -778,10 +842,9 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, totflg = totflg .and. (.not. cnvflg(i)) enddo if(totflg) return -!! -c -c determine first guess cloud top as the level of zero buoyancy -c + +!> determine first guess cloud top as the level of zero buoyancy + do i = 1, im flg(i) = cnvflg(i) ktcon(i) = 1 @@ -812,10 +875,9 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, totflg = totflg .and. (.not. cnvflg(i)) enddo if(totflg) return -!! -c -c search for downdraft originating level above theta-e minimum -c + +!> search for downdraft originating level above theta-e minimum + do i = 1, im if(cnvflg(i)) then hmin(i) = heo(i,kbcon1(i)) @@ -833,9 +895,9 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, endif enddo enddo -c -c make sure that jmin(i) is within the cloud -c + +!> make sure that jmin(i) is within the cloud + do i = 1, im if(cnvflg(i)) then jmin(i) = min(lmin(i),ktcon(i)-1) @@ -843,9 +905,9 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, if(jmin(i) >= ktcon(i)) cnvflg(i) = .false. endif enddo -c -c specify upper limit of mass flux at cloud base -c + +!> specify upper limit of mass flux at cloud base + do i = 1, im if(cnvflg(i)) then ! xmbmax(i) = .1 @@ -860,9 +922,9 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, ! xmbmax(i) = min(tem, xmbmax(i)) endif enddo -c -c compute cloud moisture property and precipitation -c + +!> compute cloud moisture property and precipitation + do i = 1, im if (cnvflg(i)) then ! aa1(i) = 0. @@ -890,9 +952,9 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, dq = eta(i,k) * (qcko(i,k) - qrch) c ! rhbar(i) = rhbar(i) + qo(i,k) / qeso(i,k) -c -c check if there is excess moisture to release latent heat -c + +!> check if there is excess moisture to release latent heat + if(k >= kbcon(i) .and. dq > 0.) then etah = .5 * (eta(i,k) + eta(i,k-1)) if(ncloud > 0 .and. k > jmin(i)) then @@ -912,9 +974,9 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, ! cnvwt(i,k) = (etah*qlk + pwo(i,k)) * g / dp cnvwt(i,k) = etah * qlk * g / dp endif -! -! compute buoyancy and drag for updraft velocity -! + +!> compute buoyancy and drag for updraft velocity + if(k >= kbcon(i)) then rfact = 1. + delta * cp * gamma & * to(i,k) / hvap @@ -938,9 +1000,9 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, ! rhbar(i) = rhbar(i) / float(indx) ! endif ! enddo -c -c calculate cloud work function -c + +!> calculate cloud work function + ! do k = 2, km1 ! do i = 1, im ! if (cnvflg(i)) then @@ -963,9 +1025,9 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, ! endif ! enddo ! enddo -! -! calculate cloud work function -! + +!> calculate cloud work function + do i = 1, im if (cnvflg(i)) then aa1(i) = 0. @@ -992,12 +1054,11 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, totflg = totflg .and. (.not. cnvflg(i)) enddo if(totflg) return -!! -c -c estimate the onvective overshooting as the level -c where the [aafac * cloud work function] becomes zero, -c which is the final cloud top -c + +!> estimate the onvective overshooting as the level +!! where the [aafac * cloud work function] becomes zero, +!! which is the final cloud top + do i = 1, im if (cnvflg(i)) then aa2(i) = aafac * aa1(i) @@ -1034,10 +1095,10 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, endif enddo enddo -c -c compute cloud moisture property, detraining cloud water -c and precipitation in overshooting layers -c + +!> compute cloud moisture property, detraining cloud water +!! and precipitation in overshooting layers + do k = 2, km1 do i = 1, im if (cnvflg(i)) then @@ -1055,9 +1116,9 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, qrcko(i,k) = qcko(i,k) cj dq = eta(i,k) * (qcko(i,k) - qrch) -c -c check if there is excess moisture to release latent heat -c + +!> check if there is excess moisture to release latent heat + if(dq > 0.) then etah = .5 * (eta(i,k) + eta(i,k-1)) if(ncloud > 0) then @@ -1078,9 +1139,9 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, endif enddo enddo -! -! compute updraft velocity square(wu2) -! + +!> compute updraft velocity square(wu2) + ! bb1 = 2. * (1.+bet1*cd1) ! bb2 = 2. / (f1*(1.+gam1)) ! @@ -1120,9 +1181,9 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, endif enddo enddo -! -! compute updraft velocity average over the whole cumulus -! + +!> compute updraft velocity average over the whole cumulus + do i = 1, im wc(i) = 0. sumx(i) = 0. @@ -1150,9 +1211,9 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, if (wc(i) < val) cnvflg(i)=.false. endif enddo -c -c exchange ktcon with ktcon1 -c + +!> exchange ktcon with ktcon1 + do i = 1, im if(cnvflg(i)) then kk = ktcon(i) @@ -1160,13 +1221,13 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, ktcon1(i) = kk endif enddo -c -c this section is ready for cloud water -c + +!> this section is ready for cloud water + if(ncloud > 0) then -c -c compute liquid and vapor separation at cloud top -c + +!> compute liquid and vapor separation at cloud top + do i = 1, im if(cnvflg(i)) then k = ktcon(i) - 1 @@ -1174,9 +1235,9 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, qrch = qeso(i,k) & + gamma * dbyo(i,k) / (hvap * (1. + gamma)) dq = qcko(i,k) - qrch -c -c check if there is excess moisture to release latent heat -c + +!> check if there is excess moisture to release latent heat + if(dq > 0.) then qlko_ktcon(i) = dq qcko(i,k) = qrch @@ -1188,11 +1249,11 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, ccccc if(lat.==.latd.and.lon.==.lond.and.cnvflg(i)) then ccccc print *, ' aa1(i) before dwndrft =', aa1(i) ccccc endif -c -c------- downdraft calculations -c -c--- compute precipitation efficiency in terms of windshear -c + +!> ----- downdraft calculations + +!> - compute precipitation efficiency in terms of windshear + do i = 1, im if(cnvflg(i)) then vshear(i) = 0. @@ -1223,9 +1284,9 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, edtx(i)=edt(i) endif enddo -c -c determine detrainment rate between 1 and kbcon -c + +!> determine detrainment rate between 1 and kbcon + do i = 1, im if(cnvflg(i)) then sumx(i) = 0. @@ -1250,9 +1311,9 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, xlamd(i) = (1.-beta**tem)/dz endif enddo -c -c determine downdraft mass flux -c + +!> determine downdraft mass flux + do k = km1, 1, -1 do i = 1, im if (cnvflg(i) .and. k <= kmax(i)-1) then @@ -1268,9 +1329,9 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, endif enddo enddo -c -c--- downdraft moisture properties -c + +!> - downdraft moisture properties + do i = 1, im if(cnvflg(i)) then jmn = jmin(i) @@ -1341,11 +1402,11 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, endif enddo enddo -c -c--- final downdraft strength dependent on precip -c--- efficiency (edt), normalized condensate (pwav), and -c--- evaporate (pwev) -c + +!> - final downdraft strength dependent on precip +!! - efficiency (edt), normalized condensate (pwav), and +!! - evaporate (pwev) + do i = 1, im edtmax = edtmaxl if(islimsk(i) == 0) edtmax = edtmaxs @@ -1471,14 +1532,14 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, tem2=eta(i,k-1)*(uo(i,k-1)-ucko(i,k-1)) ptem1=etad(i,k)*(uo(i,k)-ucdo(i,k)) ptem2=etad(i,k-1)*(uo(i,k-1)-ucdo(i,k-1)) - dellau(i,k) = dellau(i,k) + + dellau(i,k) = dellau(i,k) + & (aup*(tem1-tem2)-adw*edto(i)*(ptem1-ptem2))*g/dp cj tem1=eta(i,k)*(vo(i,k)-vcko(i,k)) tem2=eta(i,k-1)*(vo(i,k-1)-vcko(i,k-1)) ptem1=etad(i,k)*(vo(i,k)-vcdo(i,k)) ptem2=etad(i,k-1)*(vo(i,k-1)-vcdo(i,k-1)) - dellav(i,k) = dellav(i,k) + + dellav(i,k) = dellav(i,k) + & (aup*(tem1-tem2)-adw*edto(i)*(ptem1-ptem2))*g/dp cj endif @@ -1511,9 +1572,9 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, c c------- final changed variable per unit mass flux c -! if grid size is less than a threshold value (dxcrtas), +! if grid size is less than a threshold value (dxcrtas), ! the quasi-equilibrium assumption of Arakawa-Schubert is not -! used any longer. +! used any longer. ! do i = 1, im asqecflg(i) = cnvflg(i) @@ -1910,7 +1971,7 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, c compute cloud base mass flux as a function of the mean c updraft velcoity for the grid sizes where c the quasi-equilibrium assumption of Arakawa-Schubert is not -c valid any longer. +c valid any longer. c do i= 1, im if(cnvflg(i) .and. .not.asqecflg(i)) then @@ -1923,7 +1984,7 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, enddo c c compute cloud base mass flux using -c the quasi-equilibrium assumption of Arakawa-Schubert +c the quasi-equilibrium assumption of Arakawa-Schubert c do i= 1, im if(asqecflg(i)) then @@ -2172,7 +2233,7 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, do i = 1, im if (cnvflg(i) .and. rn(i) > 0.) then if (k >= kbcon(i) .and. k < ktcon(i)) then - cnvc(i,k) = 0.04 * log(1. + 675. * eta(i,k) * xmb(i)) + cnvc(i,k) = 0.04 * log(1. + 675. * eta(i,k) * xmb(i)) cnvc(i,k) = min(cnvc(i,k), 0.6) cnvc(i,k) = max(cnvc(i,k), 0.0) endif @@ -2192,11 +2253,11 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, if (k >= kbcon(i) .and. k <= ktcon(i)) then tem = dellal(i,k) * xmb(i) * dt2 tem1 = max(0.0, min(1.0, (tcr-t1(i,k))*tcrf)) - if (ql(i,k,2) > -999.0) then - ql(i,k,1) = ql(i,k,1) + tem * tem1 ! ice - ql(i,k,2) = ql(i,k,2) + tem *(1.0-tem1) ! water + if (ql2(i,k) > -999.0) then + ql1(i,k) = ql1(i,k) + tem * tem1 ! ice + ql2(i,k) = ql2(i,k) + tem *(1.0-tem1) ! water else - ql(i,k,1) = ql(i,k,1) + tem + ql1(i,k) = ql1(i,k) + tem endif endif endif @@ -2247,3 +2308,7 @@ subroutine mfdeepcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, !! return end + !> @} + !> @} + + end module sasas_deep diff --git a/physics/mfpbl.f b/physics/mfpbl.f index d534c1e23..b510f658b 100755 --- a/physics/mfpbl.f +++ b/physics/mfpbl.f @@ -1,7 +1,7 @@ !> \file mfpbl.f !! This file contains the subroutine that calculates the updraft properties and mass flux for use in the Hybrid EDMF PBL scheme. -!> \ingroup PBL +!> \ingroup HEDMF !! \brief This subroutine is used for calculating the mass flux and updraft properties. !! !! The mfpbl routines works as follows: if the PBL is convective, first, the ascending parcel entrainment rate is calculated as a function of height. Next, a surface parcel is initiated according to surface layer properties and the updraft buoyancy is calculated as a function of height. Next, using the buoyancy and entrainment values, the parcel vertical velocity is calculated using a well known steady-state budget equation. With the profile of updraft vertical velocity, the PBL height is recalculated as the height where the updraft vertical velocity returns to 0, and the entrainment profile is updated with the new PBL height. Finally, the mass flux profile is calculated using the updraft vertical velocity and assumed updraft fraction and the updraft properties are calculated using the updated entrainment profile, surface values, and environmental profiles. diff --git a/physics/mfshalcnv.f b/physics/mfshalcnv.f index 422d937aa..24539f1d6 100755 --- a/physics/mfshalcnv.f +++ b/physics/mfshalcnv.f @@ -1,5 +1,24 @@ - subroutine mfshalcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, - & q1,t1,u1,v1,rn,kbot,ktop,kcnv,islimsk,garea, +!> \file mfshalcnv.f +!! This file contains the Scale-Aware mass flux Shallow Convection scheme. + +!> \defgroup SASHAL Scale-Aware Mass Flux Shallow Convection +!! @{ +!! \brief Brief description of the parameterization +!! \section diagram Calling Hierarchy Diagram +!! \section intraphysics Intraphysics Communication + +!> \brief Brief description of the subroutine +!!!! +!! \section arg_table_mfshalcnv_run Arguments +!! | local var name | longname | description | units | rank | type | kind | intent | optional | +!! |----------------|-------------------------------------------------------|------------------------------------|---------|------|---------|-----------|--------|----------| +!! | im | horizontal_loop_extent | horizontal loop extent, start at 1 | index | 0 | integer | | in | F | +!! +!! \section general General Algorithm +!! \section detailed Detailed Algorithm +!! @{ + subroutine mfshalcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, & + & q1,t1,u1,v1,rn,kbot,ktop,kcnv,islimsk,garea, & & dot,ncloud,hpbl,ud_mf,dt_mf,cnvw,cnvc) ! & dot,ncloud,hpbl,ud_mf,dt_mf,cnvw,cnvc,me) ! @@ -11,20 +30,18 @@ subroutine mfshalcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, &, eps => con_eps, epsm1 => con_epsm1 implicit none ! - integer im, ix, km, ncloud, - & kbot(im), ktop(im), kcnv(im) + integer im, ix, km, ncloud, & + & kbot(im), ktop(im), kcnv(im) ! &, me real(kind=kind_phys) delt real(kind=kind_phys) psp(im), delp(ix,km), prslp(ix,km) - real(kind=kind_phys) ps(im), del(ix,km), prsl(ix,km), - & ql(ix,km,2),q1(ix,km), t1(ix,km), - & u1(ix,km), v1(ix,km), -! & u1(ix,km), v1(ix,km), rcs(im), - & rn(im), garea(im), - & dot(ix,km), phil(ix,km), hpbl(im), - & cnvw(ix,km),cnvc(ix,km) -! hchuang code change mass flux output - &, ud_mf(im,km),dt_mf(im,km) + real(kind=kind_phys) ps(im), del(ix,km), prsl(ix,km), & + & ql(ix,km,2),q1(ix,km), t1(ix,km), & + & u1(ix,km), v1(ix,km), & !rcs(im), + & rn(im), garea(im), & + & dot(ix,km), phil(ix,km), hpbl(im), & + & cnvw(ix,km),cnvc(ix,km) & + &, ud_mf(im,km),dt_mf(im,km) & ! hchuang code change mass flux output ! integer i,j,indx, k, kk, km1, n integer kpbl(im) @@ -50,7 +67,7 @@ subroutine mfshalcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, & w1, w1l, w1s, w2, & w2l, w2s, w3, w3l, & w3s, w4, w4l, w4s, - & rho, tem, tem1, tem2, + & rho, tem, tem1, tem2, & ptem, ptem1, & pgcon ! @@ -58,7 +75,7 @@ subroutine mfshalcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, & ktcon(im), ktcon1(im), ktconn(im), & kbm(im), kmax(im) ! - real(kind=kind_phys) aa1(im), cina(im), + real(kind=kind_phys) aa1(im), cina(im), & umean(im), tauadv(im), gdx(im), & delhbar(im), delq(im), delq2(im), & delqbar(im), delqev(im), deltbar(im), @@ -116,7 +133,7 @@ subroutine mfshalcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, ! real(kind=kind_phys) qlko_ktcon(im), dellal(im,km), tvo(im,km), real(kind=kind_phys) qlko_ktcon(im), dellal(im,km), & dbyo(im,km), zo(im,km), xlamue(im,km), - & heo(im,km), heso(im,km), + & heo(im,km), heso(im,km), & dellah(im,km), dellaq(im,km), & dellau(im,km), dellav(im,km), hcko(im,km), & ucko(im,km), vcko(im,km), qcko(im,km), @@ -214,9 +231,9 @@ subroutine mfshalcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, ! ! pgcon = 0.7 ! Gregory et al. (1997, QJRMS) pgcon = 0.55 ! Zhang & Wu (2003,JAS) - w1l = -8.e-3 + w1l = -8.e-3 w2l = -4.e-2 - w3l = -5.e-3 + w3l = -5.e-3 w4l = -5.e-4 w1s = -2.e-4 w2s = -2.e-3 @@ -231,7 +248,7 @@ subroutine mfshalcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, kmax(i) = km tx1(i) = 1.0 / ps(i) enddo -! +! do k = 1, km do i=1,im if (prsl(i,k)*tx1(i) > 0.70) kbm(i) = k + 1 @@ -653,7 +670,7 @@ subroutine mfshalcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, else tem = 0. endif - + val1 = -1. tem = max(tem,val1) val2 = 1. @@ -1437,3 +1454,5 @@ subroutine mfshalcnv(im,ix,km,delt,delp,prslp,psp,phil,ql, !! return end +!> @} +!> @} diff --git a/physics/moninedmf.f b/physics/moninedmf.f index bab282641..bf3314a25 100755 --- a/physics/moninedmf.f +++ b/physics/moninedmf.f @@ -2,7 +2,7 @@ !! Contains most of the hybrid eddy-diffusivity mass-flux scheme except for the !! subroutine that calculates the mass flux and updraft properties. -!> \defgroup PBL Hybrid Eddy-diffusivity Mass-flux Scheme +!> \defgroup HEDMF Hybrid Eddy-diffusivity Mass-flux PBL and Free Atmospheric Turbulence !! @{ !! \brief The Hybrid EDMF scheme is a first-order turbulent transport scheme used for subgrid-scale vertical turbulent mixing in the PBL and above. It blends the traditional first-order approach that has been used and improved over the last several years with a more recent scheme that uses a mass-flux approach to calculate the countergradient diffusion terms. !! @@ -17,6 +17,11 @@ !! !! The scheme works on a basic level by calculating background diffusion coefficients and updating them according to which processes are occurring in the column. The most important difference in diffusion coefficients occurs between those levels in the PBL and those above the PBL, so the PBL height calculation is of utmost importance. An initial estimate is calculated in a "predictor" step in order to calculate Monin-Obukhov similarity values and a corrector step recalculates the PBL height based on updated surface thermal characteristics. Using the PBL height and the similarity parameters, the diffusion coefficients are updated below the PBL top based on Hong and Pan (1996) \cite hong_and_pan_1996 (including counter-gradient terms). Diffusion coefficients in the free troposphere (above the PBL top) are calculated according to Louis (1979) \cite louis_1979 with updated Richardson number-dependent functions. If it is diagnosed that PBL top-down mixing is occurring according to Lock et al. (2000) \cite lock_et_al_2000 , then then diffusion coefficients are updated accordingly. Finally, for convective boundary layers (defined as when the Obukhov length exceeds a threshold), the counter-gradient terms are replaced using the mass flux scheme of Siebesma et al. (2007) \cite siebesma_et_al_2007 . In order to return time tendencies, a fully implicit solution is found using tridiagonal matrices, and time tendencies are "backed out." Before returning, the time tendency of temperature is updated to reflect heating due to TKE dissipation following Han et al. (2015) \cite han_et_al_2015 . !! +!! \section arg_table_edmf_run Arguments +!! | local var name | longname | description | units | rank | type | kind | intent | optional | +!! |----------------|-------------------------------------------------------|------------------------------------|---------|------|---------|-----------|--------|----------| +!! | im | horizontal_loop_extent | horizontal loop extent, start at 1 | index | 0 | integer | | in | F | +!! !! \param[in] ix horizontal dimension !! \param[in] im number of used points !! \param[in] km vertical layer dimension @@ -150,7 +155,7 @@ subroutine moninedmf(ix,im,km,ntrac,ntcw,dv,du,tau,rtg, & & govrth(im), hrad(im), & ! & hradm(im), radmin(im), vrad(im), & & radmin(im), vrad(im), & - & zd(im), zdd(im), thlvx1(im) + & zd(im), zdd(im), thlvx1(im) ! real(kind=kind_phys) rdzt(im,km-1),dktx(im,km-1), & & zi(im,km+1), zl(im,km), xkzo(im,km-1), & @@ -1188,11 +1193,11 @@ subroutine moninedmf(ix,im,km,ntrac,ntcw,dv,du,tau,rtg, & !> @} c----------------------------------------------------------------------- -!> \ingroup PBL +!> \ingroup HEDMF !! \brief Routine to solve the tridiagonal system to calculate temperature and moisture at \f$ t + \Delta t \f$; part of two-part process to calculate time tendencies due to vertical diffusion. !! !! Origin of subroutine unknown. - subroutine tridi2(l,n,cl,cm,cu,r1,r2,au,a1,a2) + subroutine tridi2(l,n,cl,cm,cu,r1,r2,au,a1,a2) cc use machine , only : kind_phys implicit none @@ -1231,7 +1236,7 @@ subroutine tridi2(l,n,cl,cm,cu,r1,r2,au,a1,a2) return end c----------------------------------------------------------------------- -!> \ingroup PBL +!> \ingroup HEDMF !! \brief Routine to solve the tridiagonal system to calculate u- and v-momentum at \f$ t + \Delta t \f$; part of two-part process to calculate time tendencies due to vertical diffusion. !! !! Origin of subroutine unknown. diff --git a/physics/ozphys.f b/physics/ozphys.f index 09530f742..6ac865366 100644 --- a/physics/ozphys.f +++ b/physics/ozphys.f @@ -1,8 +1,8 @@ !> \file ozphys.f !! This file is ozone sources and sinks. -!> \defgroup ozn Ozone Sources and Sinks -!! The operational GFS currently parameterizes ozone production and +!> \defgroup GFS_ozn GFS Ozone Sources and Sinks +!! The operational GFS currently parameterizes ozone production and !! destruction based on monthly mean coefficients provided by Naval !! Research Laboratory through CHEM2D chemistry model !! (McCormack et al. 2006 \cite mccormack_et_al_2006). @@ -12,9 +12,15 @@ !! Original version of these terms were provided by NASA/DAO based on !! NASA 2D Chemistry model - GSM is capable of running both versions !! -!! \section intra_oz Intraphysics Cummunication +!! \section intra_oz Intraphysics Communication !! - Routine OZPHYS is called from GBPHYS after call to RAYLEIGH_DAMP !! @{ + +!> +!! \section arg_table_ozphys_run Arguments +!! | local var name | longname | description | units | rank | type | kind | intent | optional | +!! |----------------|-------------------------------------------------------|------------------------------------|---------|------|---------|-----------|--------|----------| +!! | im | horizontal_loop_extent | horizontal loop extent, start at 1 | index | 0 | integer | | in | F | !! !! \param[in] ix,im integer, horizontal dimension and num of used pts !! \param[in] levs integer, vertical layer dimension @@ -27,9 +33,9 @@ !! (ln(Pa)) !! \param[in] prsl real, (ix,levs),mean layer pressure !! \param[in] prdout real, (ix,ko3,pl_coeff),ozone forcing data -!! \param[in] pl_coeff integer, number coefficients in ozone forcing +!! \param[in] pl_coeff integer, number coefficients in ozone forcing !! \param[in] delp real, (ix,levs) -!! \param[in] ldiag3d logical, flag for 3d diagnostic fields +!! \param[in] ldiag3d logical, flag for 3d diagnostic fields !! \param[out] ozp real, ozone change due to physics !! \param[in] me integer, pe number - used for debug prints !! \section gen_al General Algorithm @@ -47,9 +53,9 @@ subroutine ozphys (ix, im, levs, ko3, dt, ozi, ozo, tin, po3, & ! real, parameter :: gravi=1.0/grav integer im, ix, levs, ko3, pl_coeff,me - real(kind=kind_phys) ozi(ix,levs), ozo(ix,levs), po3(ko3), - & prsl(ix,levs), tin(ix,levs), delp(ix,levs), - & prdout(ix,ko3,pl_coeff), + real(kind=kind_phys) ozi(ix,levs), ozo(ix,levs), po3(ko3), & + & prsl(ix,levs), tin(ix,levs), delp(ix,levs), & + & prdout(ix,ko3,pl_coeff), & & ozp(ix,levs,pl_coeff), dt ! integer k,kmax,kmin,l,i,j @@ -114,7 +120,7 @@ subroutine ozphys (ix, im, levs, ko3, dt, ozi, ozo, tin, po3, & endif enddo enddo - if (pl_coeff == 2) then + if (pl_coeff == 2) then do i=1,im ozib(i) = ozi(i,l) ! no filling ozo(i,l) = (ozib(i) + prod(i,1)*dt) / (1.0 + prod(i,2)*dt) @@ -127,7 +133,7 @@ subroutine ozphys (ix, im, levs, ko3, dt, ozi, ozo, tin, po3, & enddo endif endif - if (pl_coeff == 4) then + if (pl_coeff == 4) then do i=1,im ozib(i) = ozi(i,l) ! no filling tem = prod(i,1) + prod(i,3)*tin(i,l) diff --git a/physics/physcons.f90 b/physics/physcons.f90 index 6148208be..a0f5dcd63 100644 --- a/physics/physcons.f90 +++ b/physics/physcons.f90 @@ -27,9 +27,9 @@ !!!!! end descriptions !!!!! !!!!! ========================================================== !!!!! -!> \ingroup rad +!> \ingroup RRTMG !! \defgroup physcons physcons -!! This module contains some of the most frequently used math and physics +!! This module contains some of the most frequently used math and physics !! constants for GCM models. !! @{ !========================================! @@ -45,65 +45,65 @@ module physcons ! !> \name Math constants !> pi - real(kind=kind_phys),parameter:: con_pi =3.1415926535897931 + real(kind=kind_phys),parameter:: con_pi =3.1415926535897931 !> square root of 2 - real(kind=kind_phys),parameter:: con_sqrt2 =1.414214e+0 + real(kind=kind_phys),parameter:: con_sqrt2 =1.414214e+0 !> square root of 3 - real(kind=kind_phys),parameter:: con_sqrt3 =1.732051e+0 + real(kind=kind_phys),parameter:: con_sqrt3 =1.732051e+0 !> \name Geophysics/Astronomy constants !> radius of earth (m) - real(kind=kind_phys),parameter:: con_rerth =6.3712e+6 + real(kind=kind_phys),parameter:: con_rerth =6.3712e+6 !> gravity (\f$m/s^{2}\f$) - real(kind=kind_phys),parameter:: con_g =9.80665e+0 + real(kind=kind_phys),parameter:: con_g =9.80665e+0 !> ang vel of earth (\f$s^{-1}\f$) - real(kind=kind_phys),parameter:: con_omega =7.2921e-5 + real(kind=kind_phys),parameter:: con_omega =7.2921e-5 !> std atms pressure (pa) - real(kind=kind_phys),parameter:: con_p0 =1.01325e5 + real(kind=kind_phys),parameter:: con_p0 =1.01325e5 ! real(kind=kind_phys),parameter:: con_solr =1.36822e+3 ! solar constant (W/m2)-aer(2001) !> solar constant (\f$W/m^{2}\f$)-liu(2002) - real(kind=kind_phys),parameter:: con_solr_old =1.3660e+3 + real(kind=kind_phys),parameter:: con_solr_old =1.3660e+3 !> solar constant (\f$W/m^{2}\f$)-nasa-sorce Tim(2008) - real(kind=kind_phys),parameter:: con_solr =1.3608e+3 + real(kind=kind_phys),parameter:: con_solr =1.3608e+3 ! real(kind=kind_phys),parameter:: con_solr =1.36742732e+3 ! solar constant (W/m2)-gfdl(1989) - OPR as of Jan 2006 !> \name Thermodynamics constants !> molar gas constant (\f$J/mol/K\f$) - real(kind=kind_phys),parameter:: con_rgas =8.314472 + real(kind=kind_phys),parameter:: con_rgas =8.314472 !> gas constant air (\f$J/kg/K\f$) - real(kind=kind_phys),parameter:: con_rd =2.8705e+2 + real(kind=kind_phys),parameter:: con_rd =2.8705e+2 !> gas constant H2O (\f$J/kg/K\f$) - real(kind=kind_phys),parameter:: con_rv =4.6150e+2 + real(kind=kind_phys),parameter:: con_rv =4.6150e+2 !> spec heat air at p (\f$J/kg/K\f$) - real(kind=kind_phys),parameter:: con_cp =1.0046e+3 + real(kind=kind_phys),parameter:: con_cp =1.0046e+3 !> spec heat air at v (\f$J/kg/K\f$) - real(kind=kind_phys),parameter:: con_cv =7.1760e+2 + real(kind=kind_phys),parameter:: con_cv =7.1760e+2 !> spec heat H2O gas (\f$J/kg/K\f$) - real(kind=kind_phys),parameter:: con_cvap =1.8460e+3 + real(kind=kind_phys),parameter:: con_cvap =1.8460e+3 !> spec heat H2O liq (\f$J/kg/K\f$) - real(kind=kind_phys),parameter:: con_cliq =4.1855e+3 + real(kind=kind_phys),parameter:: con_cliq =4.1855e+3 !> spec heat H2O ice (\f$J/kg/K\f$) - real(kind=kind_phys),parameter:: con_csol =2.1060e+3 + real(kind=kind_phys),parameter:: con_csol =2.1060e+3 !> lat heat H2O cond (\f$J/kg\f$) - real(kind=kind_phys),parameter:: con_hvap =2.5000e+6 + real(kind=kind_phys),parameter:: con_hvap =2.5000e+6 !> lat heat H2O fusion (\f$J/kg\f$) - real(kind=kind_phys),parameter:: con_hfus =3.3358e+5 + real(kind=kind_phys),parameter:: con_hfus =3.3358e+5 !> pres at H2O 3pt (Pa) - real(kind=kind_phys),parameter:: con_psat =6.1078e+2 + real(kind=kind_phys),parameter:: con_psat =6.1078e+2 !> temp at 0C (K) - real(kind=kind_phys),parameter:: con_t0c =2.7315e+2 + real(kind=kind_phys),parameter:: con_t0c =2.7315e+2 !> temp at H2O 3pt (K) - real(kind=kind_phys),parameter:: con_ttp =2.7316e+2 + real(kind=kind_phys),parameter:: con_ttp =2.7316e+2 !> temp freezing sea (K) - real(kind=kind_phys),parameter:: con_tice =2.7120e+2 + real(kind=kind_phys),parameter:: con_tice =2.7120e+2 !> joules per calorie - real(kind=kind_phys),parameter:: con_jcal =4.1855E+0 + real(kind=kind_phys),parameter:: con_jcal =4.1855E+0 !> sea water reference density (\f$kg/m^{3}\f$) - real(kind=kind_phys),parameter:: con_rhw0 =1022.0 + real(kind=kind_phys),parameter:: con_rhw0 =1022.0 !> min q for computing precip type - real(kind=kind_phys),parameter:: con_epsq =1.0E-12 + real(kind=kind_phys),parameter:: con_epsq =1.0E-12 !> \name Secondary constants @@ -120,35 +120,35 @@ module physcons ! !> \name Other Physics/Chemistry constants (source: 2002 CODATA) !> speed of light (\f$m/s\f$) - real(kind=kind_phys),parameter:: con_c =2.99792458e+8 + real(kind=kind_phys),parameter:: con_c =2.99792458e+8 !> planck constant (\f$J/s\f$) - real(kind=kind_phys),parameter:: con_plnk =6.6260693e-34 + real(kind=kind_phys),parameter:: con_plnk =6.6260693e-34 !> boltzmann constant (\f$J/K\f$) - real(kind=kind_phys),parameter:: con_boltz =1.3806505e-23 + real(kind=kind_phys),parameter:: con_boltz =1.3806505e-23 !> stefan-boltzmann (\f$W/m^{2}/K^{4}\f$) - real(kind=kind_phys),parameter:: con_sbc =5.670400e-8 + real(kind=kind_phys),parameter:: con_sbc =5.670400e-8 !> avogadro constant (\f$mol^{-1}\f$) - real(kind=kind_phys),parameter:: con_avgd =6.0221415e23 + real(kind=kind_phys),parameter:: con_avgd =6.0221415e23 !> vol of ideal gas at 273.15K, 101.325kPa (\f$m^{3}/mol\f$) - real(kind=kind_phys),parameter:: con_gasv =22413.996e-6 + real(kind=kind_phys),parameter:: con_gasv =22413.996e-6 ! real(kind=kind_phys),parameter:: con_amd =28.970 ! molecular wght of dry air (g/mol) !> molecular wght of dry air (\f$g/mol\f$) - real(kind=kind_phys),parameter:: con_amd =28.9644 + real(kind=kind_phys),parameter:: con_amd =28.9644 !> molecular wght of water vapor (\f$g/mol\f$) - real(kind=kind_phys),parameter:: con_amw =18.0154 + real(kind=kind_phys),parameter:: con_amw =18.0154 !> molecular wght of o3 (\f$g/mol\f$) - real(kind=kind_phys),parameter:: con_amo3 =47.9982 + real(kind=kind_phys),parameter:: con_amo3 =47.9982 ! real(kind=kind_phys),parameter:: con_amo3 =48.0 ! molecular wght of o3 (g/mol) !> molecular wght of co2 (\f$g/mol\f$) - real(kind=kind_phys),parameter:: con_amco2 =44.011 + real(kind=kind_phys),parameter:: con_amco2 =44.011 !> molecular wght of o2 (\f$g/mol\f$) - real(kind=kind_phys),parameter:: con_amo2 =31.9999 + real(kind=kind_phys),parameter:: con_amo2 =31.9999 !> molecular wght of ch4 (\f$g/mol\f$) - real(kind=kind_phys),parameter:: con_amch4 =16.043 + real(kind=kind_phys),parameter:: con_amch4 =16.043 !> molecular wght of n2o (\f$g/mol\f$) - real(kind=kind_phys),parameter:: con_amn2o =44.013 + real(kind=kind_phys),parameter:: con_amn2o =44.013 !> temperature the H.G.Nuc. ice starts - real(kind=kind_phys), parameter:: con_thgni =-38.15 + real(kind=kind_phys), parameter:: con_thgni =-38.15 !> \name Miscellaneous physics related constants (Moorthi - Jul 2014) diff --git a/physics/physparam.f b/physics/physparam.f index 0bcf182c9..e967186b7 100755 --- a/physics/physparam.f +++ b/physics/physparam.f @@ -19,18 +19,18 @@ ! ! !!!!! ========================================================== !!!!! -!> \ingroup rad +!> \ingroup RRTMG !> \defgroup physparam physparam !! @{ !> This module defines commonly used control variables and parameters -!! in physics related programs. +!! in physics related programs. !! !! Those variables are grouped together in accordance with functionaity -!! and are given brief descriptions and value specifications. There are +!! and are given brief descriptions and value specifications. There are !! two types of attributes (parameters vs. save) designated for the -!! control variables. Those with a "parameter" attribute are prescribed +!! control variables. Those with a "parameter" attribute are prescribed !! with a preferred option value, while the ones with a "save" attribute -!! are given a default value but could be changed at the model's +!! are given a default value but could be changed at the model's !! execution-time (usually through an input of name-list file or through !! run scripts). !========================================! @@ -61,76 +61,76 @@ module physparam ! !================================================================================== ! ............................................. ! -!> \name -1.1- Control flags for SW radiation +!> \name -1.1- Control flags for SW radiation ! ............................................. ! !> SW heating rate unit control flag: =1:k/day; =2:k/second. - integer,parameter :: iswrate = 2 - + integer,parameter :: iswrate = 2 + !> SW minor gases effect control flag (CH4 and O2): =0:no; =1:yes. !!\n =0: minor gases' effects are not included in calculations !!\n =1: minor gases' effects are included in calculations integer,parameter :: iswrgas = 1 - + !> SW optical property for liquid clouds !!\n =0:input cld opt depth, ignoring iswcice setting -!!\n =1:cloud optical property scheme based on Hu and Stamnes(1993) \cite +!!\n =1:cloud optical property scheme based on Hu and Stamnes(1993) \cite !! hu_and_stamnes_1993 method - integer,save :: iswcliq = 1 - + integer,save :: iswcliq = 1 + !> SW optical property for ice clouds (only iswcliq>0) -!!\n =1:optical property scheme based on Ebert and Curry (1992) +!!\n =1:optical property scheme based on Ebert and Curry (1992) !! \cite ebert_and_curry_1992 method -!!\n =2:optical property scheme based on Streamer v3.0 +!!\n =2:optical property scheme based on Streamer v3.0 !! \cite key_2002 method -!!\n =3:optical property scheme based on Fu's method (1996) +!!\n =3:optical property scheme based on Fu's method (1996) !! \cite fu_1996 method - integer,save :: iswcice = 3 - + integer,save :: iswcice = 3 + !> SW control flag for scattering process approximation -!!\n =1:two-stream delta-eddington (Joseph et al. 1976 +!!\n =1:two-stream delta-eddington (Joseph et al. 1976 !! \cite joseph_et_al_1976) -!!\n =2:two-stream PIFM (Zdunkowski et al. 1980 +!!\n =2:two-stream PIFM (Zdunkowski et al. 1980 !! \cite zdunkowski_et_al_1980) -!!\n =3:discrete ordinates (Liou, 1973 +!!\n =3:discrete ordinates (Liou, 1973 !! \cite liou_1973) - integer,parameter :: iswmode = 2 + integer,parameter :: iswmode = 2 ! ............................................. ! -!> \name -1.2- Control flags for LW radiation +!> \name -1.2- Control flags for LW radiation ! ............................................. ! !> LW heating rate unit: =1:k/day; =2:k/second. - integer,parameter :: ilwrate = 2 + integer,parameter :: ilwrate = 2 !> LW minor gases effect control flag (CH4,N2O,O2,and some CFCs): !!\n =0: minor gases' effects are not included in calculations !!\n =1: minor gases' effects are included in calculations - integer,parameter :: ilwrgas = 1 + integer,parameter :: ilwrgas = 1 !> LW optical property scheme for liquid clouds !!\n =0:input cloud optical properties directly, not computed within -!!\n =1:input cwp,rew, use Hu and Stamnes(1993) +!!\n =1:input cwp,rew, use Hu and Stamnes(1993) !! \cite hu_and_stamnes_1993 method - integer,save :: ilwcliq = 1 + integer,save :: ilwcliq = 1 !> LW optical property scheme for ice clouds (only ilwcliq>0) -!!\n =1:optical property scheme based on Ebert and Curry (1992) +!!\n =1:optical property scheme based on Ebert and Curry (1992) !! \cite ebert_and_curry_1992 method -!!\n =2:optical property scheme based on Streamer v3 +!!\n =2:optical property scheme based on Streamer v3 !! \cite key_2002 method -!!\n =3:optical property scheme use Fu's method (1998) +!!\n =3:optical property scheme use Fu's method (1998) !! \cite fu_et_al_1998 method - integer,save :: ilwcice = 3 + integer,save :: ilwcice = 3 ! ............................................. ! -!>\name -1.3- Control flag for LW aerosol property +!>\name -1.3- Control flag for LW aerosol property !> selects 1 band or multi bands for LW aerosol properties !!\n =.true.:aerosol properties calculated in 1 broad LW band !!\n =.false.:aerosol properties calculated in all LW bands !!\n variable names diff in Opr CFS - logical,parameter :: lalw1bd =.false. + logical,parameter :: lalw1bd =.false. !================================================================================== ! Section - 2 - @@ -139,7 +139,7 @@ module physparam ! !================================================================================== ! ............................................. ! -!>\name -2.1- For module radiation_astronomy +!>\name -2.1- For module radiation_astronomy ! ............................................. ! !> solar constant scheme control flag @@ -150,15 +150,15 @@ module physparam ! !!\n =3:CMIP5 TIM-scale TSI table (yearly) w 11-yr cycle approx !!\n =4:CMIP5 TIM-scale TSI table (monthly) w 11-yr cycle approx !!\n see ISOL in run scripts: Opr GFS=2; Opr CFS=1 - integer, save :: isolar = 0 + integer, save :: isolar = 0 !> external solar constant data table,solarconstant_noaa_a0.txt - character, save :: solar_file*26 + character, save :: solar_file*26 ! data solar_file / 'solarconstantdata.txt ' / data solar_file / 'solarconstant_noaa_a0.txt ' / ! ............................................. ! -!> \name -2.2- For module radiation_aerosols +!> \name -2.2- For module radiation_aerosols ! ............................................. ! !> aerosol model scheme control flag @@ -166,7 +166,7 @@ module physparam ! !!\n =1:monthly global distributed GOCART aerosol climatology !!\n =2: GOCART prognostic aerosol model !!\n Opr GFS=0; Opr CFS=n/a - integer, save :: iaermdl = 0 + integer, save :: iaermdl = 0 !> aerosol effect control flag !!\n 3-digit flag 'abc': !!\n a-stratospheric volcanic aerols @@ -174,27 +174,27 @@ module physparam ! !!\n c-tropospheric aerosols for SW !!\n =0:aerosol effect is not included; =1:aerosol effect is included !!\n Opr GFS/CFS =111; see IAER in run scripts - integer, save :: iaerflg = 0 + integer, save :: iaerflg = 0 !> LW aerosols effect control flag !!\n =.true.:aerosol effect is included in LW radiation !!\n =.false.:aerosol effect is not included in LW radiation - logical, save :: lalwflg = .true. + logical, save :: lalwflg = .true. !> SW aerosols effect control flag !!\n =.true.:aerosol effect is included in SW radiation !!\n =.false.:aerosol effect is not included in SW radiation - logical, save :: laswflg = .true. + logical, save :: laswflg = .true. !> stratospheric volcanic aerosol effect flag !!\n =.true.:historical events of stratosphere volcanic aerosol effect !! is included radiation (limited by data availability) !!\n =.false.:volcanic aerosol effect is not included in radiation - logical, save :: lavoflg = .true. + logical, save :: lavoflg = .true. !> external aerosols data file: aerosol.dat - character, save :: aeros_file*26 + character, save :: aeros_file*26 ! data aeros_file / 'climaeropac_global.txt ' / data aeros_file / 'aerosol.dat ' / ! ............................................. ! -!> \name -2.3- For module radiation_gases +!> \name -2.3- For module radiation_gases ! ............................................. ! !> co2 data source control flag @@ -202,8 +202,8 @@ module physparam ! !!\n =1:yearly global averaged annual mean from observations !!\n =2:monthly 15 degree horizontal resolution from observations !!\n Opr GFS/CFS=2; see ICO2 in run scripts - integer, save :: ico2flg = 0 -!> controls external data at initial time and data usage during + integer, save :: ico2flg = 0 +!> controls external data at initial time and data usage during !! forecast time !!\n =-2:as in 0,but superimpose with seasonal climatology cycle !!\n =-1:use user data,no extrapolation in overtime @@ -212,18 +212,18 @@ module physparam ! !!\n =yyyy0:use yyyy year of data, no extrapolation !!\n =yyyy1:use yyyy year of data, extrapolate when necessary !!\n Opr GFS/CFS=1; see ICTM in run scripts - integer, save :: ictmflg = 0 + integer, save :: ictmflg = 0 !> ozone data source control flag !!\n =0:use seasonal climatology ozone data -!!\n >0:use prognostic ozone scheme (also depend on other model control +!!\n >0:use prognostic ozone scheme (also depend on other model control !! variable at initial time) - integer, save :: ioznflg = 1 + integer, save :: ioznflg = 1 !> external co2 2d monthly obsv data table: co2historicaldata_2004.txt - character, save :: co2dat_file*26 + character, save :: co2dat_file*26 !> external co2 global annual mean data tb: co2historicaldata_glob.txt - character, save :: co2gbl_file*26 -!> external co2 user defined data table: co2userdata.txt - character, save :: co2usr_file*26 + character, save :: co2gbl_file*26 +!> external co2 user defined data table: co2userdata.txt + character, save :: co2usr_file*26 !> external co2 clim monthly cycle data tb: co2monthlycyc.txt character, save :: co2cyc_file*26 data co2dat_file / 'co2historicaldata_2004.txt' / !year is run-time selected @@ -232,75 +232,75 @@ module physparam ! data co2cyc_file / 'co2monthlycyc.txt ' / ! ............................................. ! -!>\name -2.4- For module radiation_clouds +!>\name -2.4- For module radiation_clouds ! ............................................. ! !> cloud optical property scheme control flag !!\n =0:use diagnostic cloud scheme for cloud cover and mean optical properties !!\n =1:use prognostic cloud scheme for cloud cover and cloud properties - integer, save :: icldflg = 1 + integer, save :: icldflg = 1 !> cloud micorphysics scheme control flag !!\n =1:modified Zhao/Carr/Sundqvist scheme (Moorthi, 2001) !!\n =2:Ferrier microphysics scheme (Ferrier et al. 2002) !!\n =3:as in 1 but with pdf method defined cloud cover - integer, save :: icmphys = 1 + integer, save :: icmphys = 1 !> cloud overlapping control flag for SW !!\n =0:use random cloud overlapping method !!\n =1:use maximum-random cloud overlapping method !!\n Opr GFS/CFS=1; see IOVR_SW in run scripts - integer, save :: iovrsw = 1 + integer, save :: iovrsw = 1 !> cloud overlapping control flag for LW !!\n =0:use random cloud overlapping method !!\n =1:use maximum-random cloud overlapping method !!\n Opr GFS/CFS=1; see IOVR_LW in run scripts - integer, save :: iovrlw = 1 + integer, save :: iovrlw = 1 !> eliminating CRICK control flag - logical, save :: lcrick =.false. + logical, save :: lcrick =.false. !> in-cld condensate control flag logical, save :: lcnorm =.false. !> precip effect on radiation flag (Ferrier microphysics) - logical, save :: lnoprec =.false. + logical, save :: lnoprec =.false. !> shallow convetion flag - logical, save :: lsashal =.false. + logical, save :: lsashal =.false. ! ............................................. ! -!>\name -2.5- For module radiation_surface +!>\name -2.5- For module radiation_surface ! ............................................. ! !> surface albedo scheme control flag !!\n =0:vegetation type based climatological albedo scheme !!\n =1:seasonal albedo derived from MODIS measurements - integer, save :: ialbflg = 0 + integer, save :: ialbflg = 0 !> surface emissivity scheme control flag !!\n =0:black-body surface emissivity(=1.0) !!\n =1:vegetation type based climatology emissivity(<1.0) !!\n Opr GFS/CFS=1; see IEMS in run scripts - integer, save :: iemsflg = 0 + integer, save :: iemsflg = 0 !> external sfc emissivity data table: sfc_emissivity_idx.txt - character, save :: semis_file*26 + character, save :: semis_file*26 data semis_file / 'sfc_emissivity_idx.txt ' / ! ............................................. ! -!> \name -2.6- general purpose +!> \name -2.6- general purpose ! ............................................. ! !> vertical profile indexing flag - integer, save :: ivflip = 1 + integer, save :: ivflip = 1 !> sub-column cloud approx flag in SW radiation !!\n =0:no McICA approximation in SW radiation !!\n =1:use McICA with precribed permutation seeds (test mode) !!\n =2:use McICA with randomly generated permutation seeds !!\n Opr GFS/CFS=2; see ISUBC_SW in run scripts - integer, save :: isubcsw = 0 + integer, save :: isubcsw = 0 !> sub-column cloud approx flag in LW radiation !!\n =0:no McICA approximation in LW radiation !!\n =1:use McICA with prescribed permutation seeds (test mode) !!\n =2:use McICA with randomly generatedo !!\n Opr GFS/CFS=2; see ISUBC_LW in run scripts - integer, save :: isubclw = 0 + integer, save :: isubclw = 0 !> initial permutaion seed for mcica radiation - integer, save :: ipsd0 = 0 + integer, save :: ipsd0 = 0 integer, save :: ipsdlim = 1e8 ! !...................................! diff --git a/physics/precpd.f b/physics/precpd.f index 9c4ac6949..0b5fb24f8 100644 --- a/physics/precpd.f +++ b/physics/precpd.f @@ -1,26 +1,26 @@ !> \file precpd.f -!! This file contains the subroutine that calculates precipitation +!! This file contains the subroutine that calculates precipitation !! processes from suspended cloud water/ice -!> \ingroup MPscheme +!> \ingroup Zhao-Carr !> \defgroup precip Precipitation (snow or rain) Production !! This subroutine computes the conversion from condensation to !! precipitation (snow or rain) or evaporation of rain. !! !> The parameterization of precipitation is required in order to remove -!! water from the atmosphere and transport it to the ground. In the +!! water from the atmosphere and transport it to the ground. In the !! scheme discussed here, simplifications in the precipitation -!! parameterization are used due to computational limitations required +!! parameterization are used due to computational limitations required !! by operational NWP models. First, consideration of particle size and -!! shape can be avoided by using the bulk parameterization method +!! shape can be avoided by using the bulk parameterization method !! introduced by Kessler (1969) \cite kessler_1969. Second, only two -!! types of precipitation, rain and snow, are considered in this +!! types of precipitation, rain and snow, are considered in this !! scheme. Third, only the most important microphysical processes -!! associated with the formation of rain and snow are included. -!! Figure 2 presents the microphysical processes considered in the -!! precipitation parameterization. +!! associated with the formation of rain and snow are included. +!! Figure 2 presents the microphysical processes considered in the +!! precipitation parameterization. !! \image html precpd-micop.png "Figure 2: Microphysical processes simulated in the precipitation scheme " width=5cm -!! Basically, there are four types of microphysical processes +!! Basically, there are four types of microphysical processes !! considered here: !! - production of rain from cloud water !! (\f$P_{racw}\f$, \f$P_{raut}\f$, \f$P_{sacw}\f$) @@ -30,24 +30,30 @@ !! (\f$P_{sm1}\f$, \f$P_{sm2}\f$) !! - the evaporation of precipitation !! (\f$E_{rr}\f$, \f$E_{rs}\f$) -!! -!! The following two equations can be used to calculate the +!! +!! The following two equations can be used to calculate the !! precipitation rates of rain and snow at each module level: !!\f[ -!! P_{r}(\eta)=\frac{p_{s}-p_{t}}{g\eta_{s}}\int_{\eta}^{\eta_{t}}(P_{raut}+P_{racw}+P_{sacw}+P_{sm1}+P_{sm2}-E_{rr})d\eta +!! P_{r}(\eta)=\frac{p_{s}-p_{t}}{g\eta_{s}}\int_{\eta}^{\eta_{t}}(P_{raut}+P_{racw}+P_{sacw}+P_{sm1}+P_{sm2}-E_{rr})d\eta !!\f] !! and !!\f[ -!! P_{s}(\eta)=\frac{p_{s}-p_{t}}{g\eta_{s}}\int_{\eta}^{\eta_{t}}(P_{saut}+P_{saci}-P_{sm1}-P_{sm2}-E_{rs})d\eta +!! P_{s}(\eta)=\frac{p_{s}-p_{t}}{g\eta_{s}}\int_{\eta}^{\eta_{t}}(P_{saut}+P_{saci}-P_{sm1}-P_{sm2}-E_{rs})d\eta !!\f] -!! where \f$p_{s}\f$ and\f$p_{t}\f$ are the surface pressure and the -!! pressure at the top of model domain, respectively, and \f$g\f$ is -!! gravity. The implementation of the precipitation scheme also -!! includes a simplified procedure of computing \f$P_{r}\f$ -!! and \f$P_{s}\f$ (Zhao and Carr(1997) \cite zhao_and_carr_1997). +!! where \f$p_{s}\f$ and\f$p_{t}\f$ are the surface pressure and the +!! pressure at the top of model domain, respectively, and \f$g\f$ is +!! gravity. The implementation of the precipitation scheme also +!! includes a simplified procedure of computing \f$P_{r}\f$ +!! and \f$P_{s}\f$ (Zhao and Carr(1997) \cite zhao_and_carr_1997). !! @{ -!> \param[in] im horizontal number of used pts +!> +!! \section arg_table_Zhao_Carr_run Arguments +!! | local var name | longname | description | units | rank | type | kind | intent | optional | +!! |----------------|-------------------------------------------------------|------------------------------------|---------|------|---------|-----------|--------|----------| +!! | im | horizontal_loop_extent | horizontal loop extent, start at 1 | index | 0 | integer | | in | F | +!! +!! \param[in] im horizontal number of used pts !! \param[in] ix horizontal dimension !! \param[in] km vertical layer dimension !! \param[in] dt time step in seconds @@ -59,7 +65,7 @@ !! \param[out] rn precipitation over one time-step dt (m/dt) !! \param[out] sr "snow ratio", ratio of snow to total precipitation !! \param[out] rainp rainwater path -!! \param[in] u00k the critical value of relative humidity for +!! \param[in] u00k the critical value of relative humidity for !! large-scale condensation !! \param[in] psautco auto conversion coeff from ice to snow !! \n = 4.0E-4; defined in module_MP_GFS.F90 @@ -67,7 +73,7 @@ !! \n = 1.0E-4; defined in module_MP_GFS.F90 !! \param[in] evpco coeff for evaporation of largescale rain !! \n = 2.0E-5; defined in module_MP_GFS.F90 -!! \param[in] wminco coeff for water and ice minimum threshold to +!! \param[in] wminco coeff for water and ice minimum threshold to !! conversion from condensate to precipitation !! \n = \1.0E-5, 1.0E-5\; defined in module_MP_GFS.F90 !! \param[in] lprnt logical print flag @@ -87,7 +93,7 @@ subroutine precpd (im,ix,km,dt,del,prsl,q,cwm,t,rn,sr & ! ****************************************************************** ! * * ! * originally created by q. zhao jan. 1995 * -! * ------- * +! * ------- * ! * modified and rewritten by shrinivas moorthi oct. 1998 * ! * ----------------- * ! * and hua-lu pan * @@ -332,7 +338,7 @@ subroutine precpd (im,ix,km,dt,del,prsl,q,cwm,t,rn,sr & ! rq(n) = max(1.0e-10, rq(n)) ! -- relative humidity--- ! ! the global qsat computation is done in pa - pres1 = pres(n) + pres1 = pres(n) ! qw = es(n) qw = min(pres1, fpvs(tt(n))) qw = eps * qw / (pres1 + epsm1 * qw) @@ -353,7 +359,7 @@ subroutine precpd (im,ix,km,dt,del,prsl,q,cwm,t,rn,sr & ! if (tmt0(n).le.-40.) qint = qi ! !-------------------ice-water id number iw------------------------------ -!> -# Compute ice-water identification number IW (see algorithm in +!> -# Compute ice-water identification number IW (see algorithm in !! \ref condense). if(tmt0(n) < -15.) then fi = qk - u00k(i,k)*qi @@ -414,9 +420,9 @@ subroutine precpd (im,ix,km,dt,del,prsl,q,cwm,t,rn,sr & !!\f[ !! P_{saut}=a_{1}(cwm-wmini) !!\f] -!! Since snow production in this process is caused by the increase in -!! size of cloud ice particles due to depositional growth and -!! aggregation of small ice particles, \f$P_{saut}\f$ is a function of +!! Since snow production in this process is caused by the increase in +!! size of cloud ice particles due to depositional growth and +!! aggregation of small ice particles, \f$P_{saut}\f$ is a function of !! temperature as determined by coefficient \f$a_{1}\f$, given by !! \f[ !! a_{1}=psautco \times dt \times exp\left[ 0.025\left(T-273.15\right)\right] @@ -428,10 +434,10 @@ subroutine precpd (im,ix,km,dt,del,prsl,q,cwm,t,rn,sr & !! P_{saci}=C_{s}cwm P_{s} !!\f] !! where \f$P_{s}\f$ is the precipitation rate of snow. The collection -!! coefficient \f$C_{s}\f$ is a function of temperature since the open -!! structures of ice crystals at relative warm temperatures are more +!! coefficient \f$C_{s}\f$ is a function of temperature since the open +!! structures of ice crystals at relative warm temperatures are more !! likely to stick, given a collision, than crystals of other shapes -!! (Rogers 1979 \cite rogers_1979). Above the freezing level, +!! (Rogers 1979 \cite rogers_1979). Above the freezing level, !! \f$C_{s}\f$ is expressed by !!\f[ !! C_{s}=c_{1}exp\left[ 0.025\left(T-273.15\right)\right] @@ -461,7 +467,7 @@ subroutine precpd (im,ix,km,dt,del,prsl,q,cwm,t,rn,sr & else ! liquid water ! !> - Following Sundqvist et al. (1989) \cite sundqvist_et_al_1989, -!! the autoconversion of cloud water to rain (\f$P_{raut}\f$) can be +!! the autoconversion of cloud water to rain (\f$P_{raut}\f$) can be !! parameterized from the cloud water mixing ratio \f$m\f$ and cloud !! coverage \f$b\f$, that is, !!\f[ @@ -484,14 +490,14 @@ subroutine precpd (im,ix,km,dt,del,prsl,q,cwm,t,rn,sr & praut = min(praut, cwmk) ww(n) = ww(n) - praut ! -!> - Calculate the accretion of cloud water by rain \f$P_{racw}\f$, +!> - Calculate the accretion of cloud water by rain \f$P_{racw}\f$, !! can be expressed using the cloud mixing ratio \f$cwm\f$ and rainfall !! rate \f$P_{r}\f$: !!\f[ !! P_{saci}=C_{s}cwmP_{r} !!\f] -!! where \f$C_{r}=5.0\times10^{-4}m^{2}kg^{-1}s{-1}\f$ is the -!! collection coeffiecient. Note that this process is not included in +!! where \f$C_{r}=5.0\times10^{-4}m^{2}kg^{-1}s{-1}\f$ is the +!! collection coeffiecient. Note that this process is not included in !! current operational physcics. ! below is for zhao's precip formulation (water) ! @@ -514,25 +520,25 @@ subroutine precpd (im,ix,km,dt,del,prsl,q,cwm,t,rn,sr & enddo !> -# Evaporation of precipitation (\f$E_{rr}\f$ and \f$E_{rs}\f$) !!\n Evaporation of precipitation is an important process that moistens -!! the layers below cloud base. Through this process, some of the -!! precipitating water is evaporated back to the atmosphere and the +!! the layers below cloud base. Through this process, some of the +!! precipitating water is evaporated back to the atmosphere and the !! precipitation efficiency is reduced. !! - Evaporation of rain is calculated using the equation (Sundqvist !! 1988 \cite sundqvist_1988): !!\f[ !! E_{rr}= evpco \times (u-f)(P_{r})^{\beta} !!\f] -!! where \f$u\f$ is u00k, \f$f\f$ is the relative humidity. -!! \f$\beta = 0.5\f$ are empirical parameter. +!! where \f$u\f$ is u00k, \f$f\f$ is the relative humidity. +!! \f$\beta = 0.5\f$ are empirical parameter. !! - Evaporation of snow is calculated using the equation: !!\f[ !! E_{rs}=[C_{rs1}+C_{rs2}(T-273.15)](\frac{u-f}{u})P_{s} !!\f] !! where \f$C_{rs1}=5\times 10^{-6}m^{2}kg^{-1}s^{-1}\f$ and -!! \f$C_{rs2}=6.67\times 10^{-10}m^{2}kg^{-1}K^{-1}s^{-1}\f$. The -!! evaporation of melting snow below the freezing level is ignored in -!! this scheme because of the difficulty in the latent heat treatment -!! since the surface of a melting snowflake is usually covered by a +!! \f$C_{rs2}=6.67\times 10^{-10}m^{2}kg^{-1}K^{-1}s^{-1}\f$. The +!! evaporation of melting snow below the freezing level is ignored in +!! this scheme because of the difficulty in the latent heat treatment +!! since the surface of a melting snowflake is usually covered by a !! thin layer of liquid water. ! !-----evaporation of precipitation------------------------- @@ -579,30 +585,30 @@ subroutine precpd (im,ix,km,dt,del,prsl,q,cwm,t,rn,sr & enddo !> -# Melting of snow (\f$P_{sm1}\f$ and \f$P_{sm2}\f$) !!\n In this scheme, we allow snow melting to take place in certain -!! temperature regions below the freezing level in two ways. In both +!! temperature regions below the freezing level in two ways. In both !! cases, the melted snow is assumed to become raindrops. -!! - One is the continuous melting of snow due to the increase in -!! temperature as it falls down through the freezing level. This +!! - One is the continuous melting of snow due to the increase in +!! temperature as it falls down through the freezing level. This !! process is parameterized as a function of temperature and snow !! precipitation rate, that is, !!\f[ !! P_{sm1}=C_{sm}(T-273.15)^{2}P_{s} !!\f] !! where \f$C_{sm}=5\times 10^{-8}m^{2}kg^{-1}K^{-2}s^{-1}\f$ -!! cause the falling snow to melt almost completely before it reaches +!! cause the falling snow to melt almost completely before it reaches !! the \f$T=278.15 K\f$ level. !! - Another is the immediate melting of melting snow by collection of -!! the cloud water below the freezing level. In order to calculate the -!! melting rate, the collection rate of cloud water by melting snow is -!! computed first. Similar to the collection of cloud water by rain, -!! the collection of cloud water by melting snow can be parameterized +!! the cloud water below the freezing level. In order to calculate the +!! melting rate, the collection rate of cloud water by melting snow is +!! computed first. Similar to the collection of cloud water by rain, +!! the collection of cloud water by melting snow can be parameterized !! to be proportional to the cloud water mixing ratio \f$m\f$ and the !! precipitation rate of snow \f$P_{s}\f$: !!\f[ !! P_{sacw}=C_{r}cwmP_{s} !!\f] !! where \f$C_{r}\f$ is the collection coefficient, -!! \f$C_{r}=5.0\times 10^{-4}m^{2}kg^{-1}s^{-1}\f$ . The melting rate +!! \f$C_{r}=5.0\times 10^{-4}m^{2}kg^{-1}s^{-1}\f$ . The melting rate !! of snow then can be computed from !!\f[ !! P_{sm2}=C_{ws}P_{sacw} @@ -682,7 +688,7 @@ subroutine precpd (im,ix,km,dt,del,prsl,q,cwm,t,rn,sr & !-----------------------end of precipitation processes----------------- !********************************************************************** ! -!> -# Compute precipitation at surface (\f$rn\f$)and determine +!> -# Compute precipitation at surface (\f$rn\f$)and determine !! fraction of frozen precipitation (\f$sr\f$). !!\f[ !! rn= (P_{r}(\eta_{sfc})+P_{s}(\eta_{sfc}))/10^3 @@ -710,7 +716,7 @@ subroutine precpd (im,ix,km,dt,del,prsl,q,cwm,t,rn,sr & sr(i) = 0. else sr(i) = precsl1(n)/rid - endif + endif enddo ! return diff --git a/physics/radiation_aerosols.f b/physics/radiation_aerosols.f index 718345734..e8b2e5a1b 100644 --- a/physics/radiation_aerosols.f +++ b/physics/radiation_aerosols.f @@ -115,7 +115,7 @@ -!> \ingroup rad +!> \ingroup RRTMG !! \defgroup module_radiation_aerosols module_radiation_aerosols !> @{ !! This module contains climatological atmospheric aerosol schemes for @@ -132,7 +132,7 @@ !! !!\n References: !! - OPAC climatological aerosols: -!! Hou et al. 2002 \cite hou_et_al_2002; Hess et al. 1998 +!! Hou et al. 2002 \cite hou_et_al_2002; Hess et al. 1998 !! \cite hess_et_al_1998 !! - GOCART interactive aerosols: !! Chin et al., 2000 \cite chin_et_al_2000 @@ -184,12 +184,12 @@ module module_radiation_aerosols ! ! --- module control parameters set in subroutine "aer_init" !> number of actual bands for sw aerosols; calculated according to !! laswflg setting - integer, save :: NSWBND = NBDSW + integer, save :: NSWBND = NBDSW !> number of actual bands for lw aerosols; calculated according to !! lalwflg and lalw1bd settings - integer, save :: NLWBND = NBDLW + integer, save :: NLWBND = NBDLW !> total number of bands for sw+lw aerosols - integer, save :: NSWLWBD = NBDSW+NBDLW + integer, save :: NSWLWBD = NBDSW+NBDLW ! --------------------------------------------------------------------- ! ! section-1 : module variables for spectral band interpolation ! @@ -510,14 +510,14 @@ module module_radiation_aerosols ! ! aerosol units (mass concentration for geos3/mixing ratio for geos4) !> num of lon-points in geos dataset - integer, parameter :: IMXG = 144 + integer, parameter :: IMXG = 144 !> num of lat-points in geos dataset - integer, parameter :: JMXG = 91 + integer, parameter :: JMXG = 91 !> num of vertical layers in geos dataset - integer, parameter :: KMXG = 30 -!* integer, parameter :: NMXG = 12 + integer, parameter :: KMXG = 30 +!* integer, parameter :: NMXG = 12 !> to be determined by set_aerspc - integer, save :: NMXG + integer, save :: NMXG real (kind=kind_phys), parameter :: dltx = 360.0 / float(IMXG) real (kind=kind_phys), parameter :: dlty = 180.0 / float(JMXG-1) @@ -566,9 +566,9 @@ module module_radiation_aerosols ! real (kind=kind_phys), save :: ctaer = f_zero ! user specified wgt !> option to get fcst gocart aerosol field - logical, save :: get_fcst = .true. + logical, save :: get_fcst = .true. !> option to get clim gocart aerosol field - logical, save :: get_clim = .true. + logical, save :: get_clim = .true. ! ------ gocart aerosol specification ------ ! => transported aerosol species: @@ -588,7 +588,7 @@ module module_radiation_aerosols ! ! OC (waso) and BC (soot) ! -!> index for rh dependent aerosol optical properties (2nd +!> index for rh dependent aerosol optical properties (2nd !! dimension for extrhd_grt, ssarhd_grt, and asyrhd_grt) integer, save :: isoot, iwaso, isuso, issam, isscm @@ -631,9 +631,9 @@ module module_radiation_aerosols ! ! - grid components to be included in the aeropt calculations !> number of aerosol grid components - integer, save :: num_gridcomp = 0 + integer, save :: num_gridcomp = 0 !> aerosol grid components - character, allocatable , save :: gridcomp(:)*2 + character, allocatable , save :: gridcomp(:)*2 !> default full-package setting integer, parameter :: max_num_gridcomp = 5 @@ -944,11 +944,11 @@ subroutine set_spectrum ! ! ! ==================== defination of variables =================== ! ! ! -!> - inputs: (module constants) -!! - NWVTOT: total num of wave numbers used in sw spectrum -!! - NWVTIR: total num of wave numbers used in the ir region -!! -!> - outputs: (in-scope variables) +!> - inputs: (module constants) +!! - NWVTOT: total num of wave numbers used in sw spectrum +!! - NWVTIR: total num of wave numbers used in the ir region +!! +!> - outputs: (in-scope variables) !! - solfwv(NWVTOT): solar flux for each individual wavenumber !! (\f$W/m^2\f$) !! - eirfwv(NWVTIR): ir flux(273k) for each individual wavenumber @@ -1066,7 +1066,7 @@ end subroutine aer_init !!@} -!> This subroutine is the opac-climatology aerosol initialization +!> This subroutine is the opac-climatology aerosol initialization !! program to set up necessary parameters and working arrays. !>\param solfwv (NWVTOT), solar flux for each individual wavenumber !! \f$(w/m^2)\f$ @@ -1259,7 +1259,7 @@ subroutine set_aercoef ! !===> ... begin here ! -!> -# Reading climatological aerosols optical data from aeros_file, +!> -# Reading climatological aerosols optical data from aeros_file, !! including: inquire (file=aeros_file, exist=file_exist) @@ -1304,56 +1304,56 @@ subroutine set_aercoef endif !> - ending wave num for 61 aerosol spectral bands - read(NIAERCM,21) cline + read(NIAERCM,21) cline 21 format(a80) read(NIAERCM,22) iendwv(:) 22 format(13i6) !> - atmos scale height for 5 domains, 7 profs - read(NIAERCM,21) cline + read(NIAERCM,21) cline read(NIAERCM,24) haer(:,:) 24 format(20f4.1) !> - reference pressure for 5 domains, 7 profs - read(NIAERCM,21) cline + read(NIAERCM,21) cline read(NIAERCM,26) prsref(:,:) 26 format(10f7.2) !> - rh independent ext coef for 61 bands, 6 species - read(NIAERCM,21) cline + read(NIAERCM,21) cline read(NIAERCM,28) rhidext0(:,:) 28 format(8e10.3) !> - rh independent sca coef for 61 bands, 6 species - read(NIAERCM,21) cline + read(NIAERCM,21) cline read(NIAERCM,28) rhidsca0(:,:) !> - rh independent ssa coef for 61 bands, 6 species - read(NIAERCM,21) cline + read(NIAERCM,21) cline read(NIAERCM,28) rhidssa0(:,:) !> - rh independent asy coef for 61 bands, 6 species - read(NIAERCM,21) cline + read(NIAERCM,21) cline read(NIAERCM,28) rhidasy0(:,:) !> - rh dependent ext coef for 61 bands, 8 rh lev, 4 species - read(NIAERCM,21) cline + read(NIAERCM,21) cline read(NIAERCM,28) rhdpext0(:,:,:) !> - rh dependent sca coef for 61 bands, 8 rh lev, 4 species - read(NIAERCM,21) cline + read(NIAERCM,21) cline read(NIAERCM,28) rhdpsca0(:,:,:) !> - rh dependent ssa coef for 61 bands, 8 rh lev, 4 species - read(NIAERCM,21) cline + read(NIAERCM,21) cline read(NIAERCM,28) rhdpssa0(:,:,:) !> - rh dependent asy coef for 61 bands, 8 rh lev, 4 species - read(NIAERCM,21) cline + read(NIAERCM,21) cline read(NIAERCM,28) rhdpasy0(:,:,:) !> - stratospheric background aeros for 61 bands - read(NIAERCM,21) cline + read(NIAERCM,21) cline read(NIAERCM,28) straext0(:) close (NIAERCM) @@ -1845,12 +1845,12 @@ subroutine aer_update & endif !> -# Call trop_update() to update monthly tropospheric aerosol data. - if ( lalwflg .or. laswflg ) then + if ( lalwflg .or. laswflg ) then call trop_update endif !> -# Call volc_update() to update yearly stratospheric volcanic aerosol data. - if ( lavoflg ) then + if ( lavoflg ) then call volc_update endif @@ -2448,7 +2448,7 @@ subroutine setaer & !> -# Compute stratosphere volcanic forcing: !! - select data in 4 lat bands, interpolation at the boundaries -!! - Find lower boundary of stratosphere: polar, fixed at 25000pa +!! - Find lower boundary of stratosphere: polar, fixed at 25000pa !! (250mb); tropic, fixed at 15000pa (150mb); mid-lat, interpolation !! - SW: add volcanic aerosol optical depth to the background value !! - Smoothing profile at boundary if needed @@ -2762,13 +2762,13 @@ end subroutine setaer !!\n (:,:,:,2): single scattering albedo !!\n (:,:,:,3): asymmetry parameter !!\param aerodp (IMAX,NSPC+1), vertically integrated aer-opt-depth -!!\section gel_aer_pro General Algorithm +!!\section gel_aer_pro General Algorithm !> @{ !----------------------------------- - subroutine aer_property & + subroutine aer_property & & ( prsi,prsl,prslk,tvly,rhlay,dz,hz,tracer, & ! --- inputs: - & alon,alat,slmsk, laersw,laerlw, & - & IMAX,NLAY,NLP1, & + & alon,alat,slmsk, laersw,laerlw, & + & IMAX,NLAY,NLP1, & & aerosw,aerolw,aerodp & ! --- outputs: & ) @@ -3189,9 +3189,9 @@ subroutine aer_property & contains ! ================= -!> This subroutine computes aerosols optical properties in NSWLWBD +!> This subroutine computes aerosols optical properties in NSWLWBD !! bands. there are seven different vertical profile structures. in the -!! troposphere, aerosol distribution at each grid point is composed +!! troposphere, aerosol distribution at each grid point is composed !! from up to six components out of ten different substances. !-------------------------------- subroutine radclimaer @@ -3506,27 +3506,27 @@ end subroutine aer_property !> The initialization program for gocart aerosols !! - determine weight and index for aerosol composition/luts !! - read in monthly global distribution of gocart aerosols -!! - read and map the tabulated aerosol optical spectral data onto +!! - read and map the tabulated aerosol optical spectral data onto !! corresponding SW/LW radiation spectral bands. !! -!>\param NWVTOT total num of wave numbers used in sw spectrum +!>\param NWVTOT total num of wave numbers used in sw spectrum !!\param solfwv (NWVTOT), solar flux for each individual !! wavenumber (w/m2) !!\param soltot total solar flux for the spectrual range (w/m2) -!!\param NWVTIR total num of wave numbers used in the ir region +!!\param NWVTIR total num of wave numbers used in the ir region !!\param eirfwv (NWVTIR), ir flux(273k) for each individual !! wavenumber (w/m2) -!!\param NBDSW num of bands calculated for sw aeros opt prop -!!\param NLWBND num of bands calculated for lw aeros opt prop +!!\param NBDSW num of bands calculated for sw aeros opt prop +!!\param NLWBND num of bands calculated for lw aeros opt prop !!\param NSWLWBD total num of bands calc for sw+lw aeros opt prop -!!\param imon month of the year -!!\param me print message control flag +!!\param imon month of the year +!!\param me print message control flag !!\param raddt !!\param fdaer !>\section gel_go_ini General Algorithm !! @{ !----------------------------------- - subroutine gocart_init & + subroutine gocart_init & & ( NWVTOT,solfwv,soltot,NWVTIR,eirfwv, & ! --- inputs: & NBDSW,NLWBND,NSWLWBD,imon,me,raddt,fdaer & ! --- outputs: ( none ) & ) @@ -4180,7 +4180,7 @@ subroutine rd_gocart_luts real (kind=kind_io8), Dimension( NP2 ) :: Angle, Cos_Angle, & & Cos_Weight real (kind=kind_io8), Dimension(n_p,nAero) :: RH, rm, reff - real (kind=kind_io8), Dimension(nWave,n_p,nAero) :: & + real (kind=kind_io8), Dimension(nWave,n_p,nAero) :: & & ext0, sca0, asy0 real (kind=kind_io8), Dimension(NP2,n_p,nWave,nAero) :: ph0 real (kind=kind_io8) :: wavelength(nWave), density(nAero), & @@ -4316,7 +4316,7 @@ end subroutine rd_gocart_luts !----------------------------------- ! ! !> This subroutine computes mean aerosols optical properties over each -!! SW/LW radiation spectral band for each of the species components. +!! SW/LW radiation spectral band for each of the species components. !! This program follows GFDL's approach for thick cloud optical property !! in SW radiation scheme (2000). !----------------------------- @@ -4863,33 +4863,33 @@ end subroutine gocart_init !! gocart aerosol species (merged from fcst and clim fields). !! !>\param alon IMAX, longitude of given points in degree -!!\param alat IMAX, latitude of given points in degree -!!\param prslk (IMAX,NLAY), pressure in cb +!!\param alat IMAX, latitude of given points in degree +!!\param prslk (IMAX,NLAY), pressure in cb !!\param rhlay (IMAX,NLAY), layer mean relative humidity !!\param dz (IMAX,NLAY), layer thickness in m -!!\param hz (IMAX,NLP1), level high in m -!!\param NSWLWBD total number of sw+ir bands for aeros opt prop -!!\param prsl (IMAX,NLAY), layer mean pressure in mb -!!\param tvly (IMAX,NLAY), layer mean virtual temperature in K +!!\param hz (IMAX,NLP1), level high in m +!!\param NSWLWBD total number of sw+ir bands for aeros opt prop +!!\param prsl (IMAX,NLAY), layer mean pressure in mb +!!\param tvly (IMAX,NLAY), layer mean virtual temperature in K !!\param trcly (IMAX,NLAY,NTRAC), layer mean specific tracer in g/g -!!\param IMAX horizontal dimension of arrays -!!\param NLAY,NLP1 vertical dimensions of arrays -!!\param ivflip control flag for direction of vertical index -!!\n =0: index from toa to surface -!!\n =1: index from surface to toa -!!\param lsswr,lslwr logical flag for sw/lw radiation calls -!!\param aerosw (IMAX,NLAY,NBDSW,NF_AESW), aeros opt properties for SW -!!\n (:,:,:,1): optical depth -!!\n (:,:,:,2): single scattering albedo -!!\n (:,:,:,3): asymmetry parameter -!!\param aerolw (IMAX,NLAY,NBDLW,NF_AELW), aeros opt properties for LW -!!\n (:,:,:,1): optical depth -!!\n (:,:,:,2): single scattering albedo -!!\n (:,:,:,3): asymmetry parameter +!!\param IMAX horizontal dimension of arrays +!!\param NLAY,NLP1 vertical dimensions of arrays +!!\param ivflip control flag for direction of vertical index +!!\n =0: index from toa to surface +!!\n =1: index from surface to toa +!!\param lsswr,lslwr logical flag for sw/lw radiation calls +!!\param aerosw (IMAX,NLAY,NBDSW,NF_AESW), aeros opt properties for SW +!!\n (:,:,:,1): optical depth +!!\n (:,:,:,2): single scattering albedo +!!\n (:,:,:,3): asymmetry parameter +!!\param aerolw (IMAX,NLAY,NBDLW,NF_AELW), aeros opt properties for LW +!!\n (:,:,:,1): optical depth +!!\n (:,:,:,2): single scattering albedo +!!\n (:,:,:,3): asymmetry parameter !>\section gen_setgo General Algorithm !!@{ !----------------------------------- - subroutine setgocartaer & + subroutine setgocartaer & & ( alon,alat,prslk,rhlay,dz,hz,NSWLWBD, & ! --- inputs: & prsl,tvly,trcly, & & IMAX,NLAY,NLP1, ivflip, lsswr,lslwr, & @@ -4964,7 +4964,7 @@ subroutine setgocartaer & ! --- locals: real (kind=kind_phys), dimension(NLAY) :: rh1, dz1 real (kind=kind_phys), dimension(NLAY,NSWLWBD)::tauae,ssaae,asyae - real (kind=kind_phys), dimension(NLAY,max_num_gridcomp) :: & + real (kind=kind_phys), dimension(NLAY,max_num_gridcomp) :: & & tauae_gocart real (kind=kind_phys) :: tmp1, tmp2 diff --git a/physics/radiation_astronomy.f b/physics/radiation_astronomy.f index 888de73fd..ac1bbd500 100644 --- a/physics/radiation_astronomy.f +++ b/physics/radiation_astronomy.f @@ -1,5 +1,5 @@ !> \file radiation_astronomy.f -!! This file sets up astronomical quantities for solar radiation +!! This file sets up astronomical quantities for solar radiation !! calculations. ! ========================================================== !!!!! @@ -75,7 +75,7 @@ -!> \ingroup rad +!> \ingroup RRTMG !! \defgroup module_radiation_astronomy module_radiation_astronomy !! @{ !> This module sets up astronomical quantities for solar radiation @@ -116,21 +116,21 @@ module module_radiation_astronomy ! !> \name Module variables (to be set in module_radiation_astronomy::sol_update) !> equation of time - real (kind=kind_phys) :: sollag=0.0 + real (kind=kind_phys) :: sollag=0.0 !> sine of the solar declination angle - real (kind=kind_phys) :: sindec=0.0 + real (kind=kind_phys) :: sindec=0.0 !> cosine of the solar declination angle - real (kind=kind_phys) :: cosdec=0.0 + real (kind=kind_phys) :: cosdec=0.0 !> solar angle increment per interation of cosz calc - real (kind=kind_phys) :: anginc=0.0 + real (kind=kind_phys) :: anginc=0.0 !> saved monthly solar constants (isolflg=4 only) - real (kind=kind_phys) :: smon_sav(12) + real (kind=kind_phys) :: smon_sav(12) data smon_sav(1:12) / 12*con_solr / !> saved year of data used - integer :: iyr_sav =0 + integer :: iyr_sav =0 !> total number of zenith angle iterations - integer :: nstp =6 + integer :: nstp =6 public sol_init, sol_update, coszmn @@ -301,7 +301,7 @@ end subroutine sol_init !> This subroutine computes solar parameters at forecast time. -!!\param jdate ncep absolute date and time at fcst time +!!\param jdate ncep absolute date and time at fcst time !! (yr, mon, day, t-zone, hr, min, sec, mil-sec) !!\param kyear usually kyear=jdate(1). if not, it is for hindcast !! mode, and it is usually the init cond time and diff --git a/physics/radiation_clouds.f b/physics/radiation_clouds.f index 0ea2f3a98..80b401032 100644 --- a/physics/radiation_clouds.f +++ b/physics/radiation_clouds.f @@ -145,7 +145,7 @@ !!!!! end descriptions !!!!! !!!!! ========================================================== !!!!! -!> \ingroup rad +!> \ingroup RRTMG !! \defgroup module_radiation_clouds module_radiation_clouds !! @{ !> This module computes cloud related quantities for radiation @@ -162,14 +162,14 @@ !! !! This module has three externally accessible subroutines: !! - cld_init() --- initialization routine -!! - progcld1() --- zhao/moorthi prognostic cloud scheme +!! - progcld1() --- zhao/moorthi prognostic cloud scheme !! - progcld2() --- ferrier prognostic cloud microphysics !! - progcld3() --- zhao/moorthi prognostic cloud + pdfcld !! - diagcld1() --- diagnostic cloud calculation routine !! -!! and two internally accessable only subroutines: -!! - gethml() --- get diagnostic hi, mid, low,total,BL clouds -!! - rhtable() --- rh lookup table for diag cloud scheme +!! and two internally accessable only subroutines: +!! - gethml() --- get diagnostic hi, mid, low,total,BL clouds +!! - rhtable() --- rh lookup table for diag cloud scheme !! !> \section gen_al General Algorithm !! @{ @@ -177,7 +177,7 @@ !!\n We define the fraction of liquid and ice cloud as: !!\n Fraction of ice cloud (F): \f$F=(273.16K-T)/20\f$ !!\n LWP = total cloud condensate path X (1-F) -!!\n IWP = total clod condensate path X F +!!\n IWP = total clod condensate path X F !! !! -# GFS Cloud Fraction !! \n The cloud fraction in a given grid box of the GFS model is @@ -202,7 +202,7 @@ !! (\f$r_{e}\f$) !>\n Two methods has been used to parameterize cloud properties in the !! GFS model. The first method makes use of a diagnostic cloud scheme, -!! in which cloud properties are determined based on model-predicted +!! in which cloud properties are determined based on model-predicted !! temperature, pressure, and boundary layer circulation from !! Harshvardhan et al. (1989) \cite harshvardhan_et_al_1989 . The !! diagnostic scheme is now replaced with a prognostic scheme that uses @@ -214,7 +214,7 @@ !! r_{ew} = 5+5\times F !!\f] !! Thus, the effective radius of cloud water droplets will reach to a -!! minimum values of \f$5\mu m\f$ when F=0, and to a maximum value of +!! minimum values of \f$5\mu m\f$ when F=0, and to a maximum value of !! \f$10\mu m\f$ when the ice fraction is increasing. !! \n For ice clouds, following Heymsfield and McFarquhar (1996) !! \cite heymsfield_and_mcfarquhar_1996, @@ -254,9 +254,9 @@ module module_radiation_clouds ! real (kind=kind_phys), parameter :: gfac=1.0e5/con_g & &, gord=con_g/con_rd !> number of fields in cloud array - integer, parameter, public :: NF_CLDS = 9 + integer, parameter, public :: NF_CLDS = 9 !> number of cloud vertical domains - integer, parameter, public :: NK_CLDS = 3 + integer, parameter, public :: NK_CLDS = 3 !> pressure limits of cloud domain interfaces (low,mid,high) in mb (0.1kPa) real (kind=kind_phys), save :: ptopc(NK_CLDS+1,2) @@ -269,29 +269,29 @@ module module_radiation_clouds ! real (kind=kind_phys), parameter :: ovcst = 1.0 - 1.0e-8 !> default liq radius to 10 micron - real (kind=kind_phys), parameter :: reliq_def = 10.0 + real (kind=kind_phys), parameter :: reliq_def = 10.0 !> default ice radius to 50 micron - real (kind=kind_phys), parameter :: reice_def = 50.0 + real (kind=kind_phys), parameter :: reice_def = 50.0 !> default rain radius to 1000 micron - real (kind=kind_phys), parameter :: rrain_def = 1000.0 + real (kind=kind_phys), parameter :: rrain_def = 1000.0 !> default snow radius to 250 micron - real (kind=kind_phys), parameter :: rsnow_def = 250.0 + real (kind=kind_phys), parameter :: rsnow_def = 250.0 !> rh in one percent interval - integer, parameter :: NBIN=100 + integer, parameter :: NBIN=100 !> =1,2 for eastern and western hemispheres - integer, parameter :: NLON=2 + integer, parameter :: NLON=2 !> =1,4 for 60n-30n,30n-equ,equ-30s,30s-60s - integer, parameter :: NLAT=4 + integer, parameter :: NLAT=4 !> =1,4 for bl,low,mid,hi cld type - integer, parameter :: MCLD=4 + integer, parameter :: MCLD=4 !> =1,2 for land,sea - integer, parameter :: NSEAL=2 + integer, parameter :: NSEAL=2 !> default cld single scat albedo - real (kind=kind_phys), parameter :: cldssa_def = 0.99 + real (kind=kind_phys), parameter :: cldssa_def = 0.99 !> default cld asymmetry factor - real (kind=kind_phys), parameter :: cldasy_def = 0.84 + real (kind=kind_phys), parameter :: cldasy_def = 0.84 ! --- xlabdy: lat bndry between tuning regions, +/- xlim for transition ! xlobdy: lon bndry between tuning regions @@ -316,9 +316,9 @@ module module_radiation_clouds ! real (kind=kind_phys) :: rhcl(NBIN,NLON,NLAT,MCLD,NSEAL) !> upper limit of boundary layer clouds - integer :: llyr = 2 + integer :: llyr = 2 !> maximum-random cloud overlapping method - integer :: iovr = 1 + integer :: iovr = 1 public progcld1, progcld2, progcld3, progclduni, diagcld1, & & cld_init @@ -427,7 +427,7 @@ subroutine cld_init & endif endif -!> -# Compute the top of BL cld (llyr), which is the topmost non +!> -# Compute the top of BL cld (llyr), which is the topmost non !! cld(low) layer for stratiform (at or above lowest 0.1 of the !! atmosphere). @@ -454,7 +454,7 @@ end subroutine cld_init !----------------------------------- !> @} -!> This subroutine computes cloud related quantities using +!> This subroutine computes cloud related quantities using !! zhao/moorthi's prognostic cloud microphysics scheme. !!\param plyr (IX,NLAY), model layer mean pressure in mb (100Pa) !!\param plvl (IX,NLP1), model level pressure in mb (100Pa) @@ -464,7 +464,7 @@ end subroutine cld_init !!\param qstl (IX,NLAY), layer saturate humidity in gm/gm !!\param rhly (IX,NLAY), layer relative humidity \f$ (=qlyr/qstl) \f$ !!\param clw (IX,NLAY), layer cloud condensate amount -!!\param xlat (IX), grid latitude in radians, default to pi/2 -> +!!\param xlat (IX), grid latitude in radians, default to pi/2 -> !! -pi/2 range, otherwise see in-line comment !!\param xlon (IX), grid longitude in radians (not used) !!\param slmsk (IX), sea/land mask array (sea:0,land:1,sea-ice:2) @@ -839,7 +839,7 @@ subroutine progcld1 & enddo endif -!> -# Compute effective ice cloud droplet radius following Heymsfield +!> -# Compute effective ice cloud droplet radius following Heymsfield !! and McFarquhar (1996) \cite heymsfield_and_mcfarquhar_1996. do k = 1, NLAY @@ -921,7 +921,7 @@ end subroutine progcld1 !!\param f_rain (IX,NLAY), fraction of layer rain water (ferrier micro-phys) !!\param r_rime (IX,NLAY), mass ratio of total ice to unrimed ice (>=1) !!\param flgmin (IX), minimum large ice fraction -!!\param xlat (IX), grid latitude in radians, default to pi/2 -> +!!\param xlat (IX), grid latitude in radians, default to pi/2 -> !! -pi/2 range, otherwise see in-line comment !!\param xlon (IX), grid longitude in radians (not used) !!\param slmsk (IX), sea/land mask array (sea:0,land:1,sea-ice:2) @@ -1147,7 +1147,7 @@ subroutine progcld2 & !> -# Call module_microphysics::rsipath2(), in Ferrier's scheme, to !! compute layer's cloud liquid, ice, rain, and snow water condensate -!! path and the partical effective radius for liquid droplet, rain drop, +!! path and the partical effective radius for liquid droplet, rain drop, !! and snow flake. call rsipath2 & ! --- inputs: @@ -1407,7 +1407,7 @@ end subroutine progcld2 !----------------------------------- !> @} -!> This subroutine computes cloud related quantities using +!> This subroutine computes cloud related quantities using !! zhao/moorthi's prognostic cloud microphysics scheme + pdfcld. !!\param plyr (ix,nlay), model layer mean pressure in mb (100pa) !!\param plvl (ix,nlp1), model level pressure in mb (100pa) @@ -1425,7 +1425,7 @@ end subroutine progcld2 !!\param nlay,nlp1 vertical layer/level dimensions !!\param deltaq (ix,nlay), half total water distribution width !!\param sup supersaturation -!!\param kdt +!!\param kdt !!\param me print control flag !!\param clouds (ix,nlay,nf_clds), cloud profiles !!\n (:,:,1) - layer total cloud fraction @@ -1839,7 +1839,7 @@ end subroutine progcld3 !----------------------------------- !> @} -!> This subroutine computes cloud related quantities using +!> This subroutine computes cloud related quantities using !! zhao/moorthi's prognostic cloud microphysics scheme. !!\param plyr (IX,NLAY), model layer mean pressure in mb (100Pa) !!\param plvl (IX,NLP1), model level pressure in mb (100Pa) @@ -1848,7 +1848,7 @@ end subroutine progcld3 !!\param qlyr (IX,NLAY), layer specific humidity in gm/gm !!\param clw (IX,NLAY), layer cloud liquid water amount !!\param ciw (IX,NLAY), layer cloud ice water amount -!!\param xlat (IX), grid latitude in radians, default to pi/2 -> +!!\param xlat (IX), grid latitude in radians, default to pi/2 -> !! -pi/2 range, otherwise see in-line comment !!\param xlon (IX), grid longitude in radians (not used) !!\param slmsk (IX), sea/land mask array (sea:0,land:1,sea-ice:2) @@ -2099,7 +2099,7 @@ subroutine progclduni & enddo endif -!> -# Compute effective ice cloud droplet radius following Heymsfield +!> -# Compute effective ice cloud droplet radius following Heymsfield !! and McFarquhar (1996) \cite heymsfield_and_mcfarquhar_1996. do k = 1, NLAY @@ -2463,7 +2463,7 @@ subroutine diagcld1 & do i = 1, IX -!> - Find the stratosphere cut off layer for high cloud (about +!> - Find the stratosphere cut off layer for high cloud (about !! 250mb). It is assumed to be above the layerwith dthdp less than !! -0.25 in the high cloud domain. @@ -2795,7 +2795,7 @@ end subroutine diagcld1 !! fractions and cloud top/bottom layer indices for model diagnostic !! output. The three cloud domain boundaries are defined by ptopc. The !! cloud overlapping method is defined by control flag 'iovr', which is -!! also used by LW and SW radiation programs. +!! also used by LW and SW radiation programs. !> \param plyr (IX,NLAY), model layer mean pressure in mb (100Pa) !> \param ptop1 (IX,4), pressure limits of cloud domain interfaces !! (sfc,low,mid,high) in mb (100Pa) @@ -2803,8 +2803,8 @@ end subroutine diagcld1 !> \param cldcnv (IX,NLAY), convective cloud (for diagnostic scheme only) !> \param IX horizontal dimension !> \param NLAY vertical layer dimensions -!> \param clds (IX,5), fraction of clouds for low, mid, hi, tot, bl -!> \param mtop (IX,3),vertical indices for low, mid, hi cloud tops +!> \param clds (IX,5), fraction of clouds for low, mid, hi, tot, bl +!> \param mtop (IX,3),vertical indices for low, mid, hi cloud tops !> \param mbot (IX,3),vertical indices for low, mid, hi cloud bases !! !>\section detail Detailed Algorithm diff --git a/physics/radiation_gases.f b/physics/radiation_gases.f index 79e049e1a..a2fa97a94 100644 --- a/physics/radiation_gases.f +++ b/physics/radiation_gases.f @@ -104,7 +104,7 @@ !!!!! ========================================================== !!!!! -!> \ingroup rad +!> \ingroup RRTMG !! \defgroup module_radiation_gases module_radiation_gases !! @{ !> This module sets up ozone climatological profiles and other constant @@ -139,22 +139,22 @@ module module_radiation_gases ! !>\name parameter constants !> number of gas species - integer, parameter, public :: NF_VGAS = 10 + integer, parameter, public :: NF_VGAS = 10 !> input co2 dat lon points - integer, parameter :: IMXCO2 = 24 + integer, parameter :: IMXCO2 = 24 !> input co2 data lat points - integer, parameter :: JMXCO2 = 12 + integer, parameter :: JMXCO2 = 12 !> earlist year 2-d co2 data available integer, parameter :: MINYEAR = 1957 - + !> horizontal resolution in degree - real (kind=kind_phys), parameter :: resco2=15.0 + real (kind=kind_phys), parameter :: resco2=15.0 !> rad->deg conversion - real (kind=kind_phys), parameter :: raddeg=180.0/con_pi + real (kind=kind_phys), parameter :: raddeg=180.0/con_pi !> pressure limitation for 2-d co2 (mb) - real (kind=kind_phys), parameter :: prsco2=788.0 + real (kind=kind_phys), parameter :: prsco2=788.0 !> half of pi - real (kind=kind_phys), parameter :: hfpi =0.5*con_pi + real (kind=kind_phys), parameter :: hfpi =0.5*con_pi !>\name parameter constants for gas volume mixing ratioes @@ -164,15 +164,15 @@ module module_radiation_gases ! real (kind=kind_phys), parameter :: o2vmr_def = 0.209 real (kind=kind_phys), parameter :: covmr_def = 1.50e-8 !> aer 2003 value - real (kind=kind_phys), parameter :: f11vmr_def = 3.520e-10 + real (kind=kind_phys), parameter :: f11vmr_def = 3.520e-10 !> aer 2003 value - real (kind=kind_phys), parameter :: f12vmr_def = 6.358e-10 + real (kind=kind_phys), parameter :: f12vmr_def = 6.358e-10 !> aer 2003 value - real (kind=kind_phys), parameter :: f22vmr_def = 1.500e-10 + real (kind=kind_phys), parameter :: f22vmr_def = 1.500e-10 !> aer 2003 value real (kind=kind_phys), parameter :: cl4vmr_def = 1.397e-10 !> gfdl 1999 value - real (kind=kind_phys), parameter :: f113vmr_def= 8.2000e-11 + real (kind=kind_phys), parameter :: f113vmr_def= 8.2000e-11 ! --- ozone seasonal climatology parameters defined in module ozne_def ! - 4x5 ozone data parameter @@ -888,9 +888,9 @@ end subroutine gas_update !! from observed values, all other gases are asigned to the !! climatological values. !!\param plvl (IMAX,LMAX+1), pressure at model layer interfaces (mb) -!!\param xlon (IMAX), grid longitude in radians, ok both 0->2pi +!!\param xlon (IMAX), grid longitude in radians, ok both 0->2pi !! or -pi -> +pi arrangements -!!\param xlat (IMAX), grid latitude in radians, default range to +!!\param xlat (IMAX), grid latitude in radians, default range to !! pi/2 -> -pi/2, otherwise see in-line comment !!\param IMAX, LMAX horizontal/vertical dimensions for output data !!\param gasdat (IMAX,LMAX,NF_VGAS) - gases volume mixing ratioes @@ -906,9 +906,9 @@ end subroutine gas_update !!\n (:,:,10) - cfc113 !----------------------------------- subroutine getgases & - & ( plvl, xlon, xlat, & ! --- inputs + & ( plvl, xlon, xlat, & ! --- inputs & IMAX, LMAX, & - & gasdat & ! --- outputs + & gasdat & ! --- outputs & ) ! =================================================================== ! @@ -1053,7 +1053,7 @@ end subroutine getgases !!\param xlat (IMAX), latitude in radians, default to pi/2 -> !! -pi/2 range, otherwise see in-line comment !!\param IMAX, LM horizontal and vertical dimensions -!!\param o3mmr (IMAX,LM), output ozone profile in mass mixing +!!\param o3mmr (IMAX,LM), output ozone profile in mass mixing !! ratio (g/g) !----------------------------------- subroutine getozn & diff --git a/physics/radiation_surface.f b/physics/radiation_surface.f index 12006c585..f3b8d63c9 100644 --- a/physics/radiation_surface.f +++ b/physics/radiation_surface.f @@ -1,5 +1,5 @@ !> \file radiation_surface.f -!! This file contains routines that set up surface albedo for SW +!! This file contains routines that set up surface albedo for SW !! radiation and surface emissivity for LW radiation. ! ========================================================== !!!!! @@ -74,7 +74,7 @@ !!!!! ========================================================== !!!!! -!> \ingroup rad +!> \ingroup RRTMG !! \defgroup module_radiation_surface module_radiation_surface !! @{ !> This module sets up surface albedo for sw radiation and surface @@ -100,13 +100,13 @@ module module_radiation_surface ! ! --- constant parameters !> num of sfc albedo components - integer, parameter, public :: NF_ALBD = 4 + integer, parameter, public :: NF_ALBD = 4 !> num of longitude points in global emis-type map - integer, parameter, public :: IMXEMS = 360 + integer, parameter, public :: IMXEMS = 360 !> num of latitude points in global emis-type map - integer, parameter, public :: JMXEMS = 180 + integer, parameter, public :: JMXEMS = 180 real (kind=kind_phys), parameter :: f_zero = 0.0 real (kind=kind_phys), parameter :: f_one = 1.0 @@ -180,7 +180,7 @@ subroutine sfc_init & if ( me == 0 ) print *, VTAGSFC ! print out version tag !> - Initialization of surface albedo section -!! \n physparam::ialbflg +!! \n physparam::ialbflg !! - = 0: using climatology surface albedo scheme for SW !! - = 1: using MODIS based land surface albedo for SW @@ -502,11 +502,11 @@ subroutine setalb & enddo ! end_do_i_loop !> -# If use modis based albedo for land area: - else + else do i = 1, IMAX -!> - Calculate snow cover input directly for land model, no +!> - Calculate snow cover input directly for land model, no !! conversion needed. fsno0 = sncovr(i) @@ -541,7 +541,7 @@ subroutine setalb & asend = 0.65 - 3.6875*a1 endif -!> - Calculate diffused snow albedo, land area use input max snow +!> - Calculate diffused snow albedo, land area use input max snow !! albedo. if (nint(slmsk(i)) == 2) then @@ -586,7 +586,7 @@ subroutine setalb & ! rfcs = 1.89 - 3.34*coszf(i) + 4.13*coszf(i)*coszf(i) & ! & - 2.02*coszf(i)*coszf(i)*coszf(i) - rfcs = 1.775/(1.0+1.55*coszf(i)) + rfcs = 1.775/(1.0+1.55*coszf(i)) if (tsknf(i) >= con_t0c) then asevb = max(asevd, 0.026/(coszf(i)**1.7+0.065) & @@ -627,7 +627,7 @@ end subroutine setalb !! -pi/2 range, otherwise see in-line comment !!\param slmsk (IMAX), sea(0),land(1),ice(2) mask on fcst model grid !!\param snowf (IMAX), snow depth water equivalent in mm -!!\param sncovr (IMAX), snow cover over land +!!\param sncovr (IMAX), snow cover over land !!\param zorlf (IMAX), surface roughness in cm !!\param tsknf (IMAX), ground surface temperature in K !!\param tairf (IMAX), lowest model layer air temperature in K @@ -687,7 +687,7 @@ subroutine setemis & ! --- inputs integer, intent(in) :: IMAX - real (kind=kind_phys), dimension(:), intent(in) :: & + real (kind=kind_phys), dimension(:), intent(in) :: & & xlon,xlat, slmsk, snowf,sncovr, zorlf, tsknf, tairf, hprif ! --- outputs diff --git a/physics/radlw_main.f b/physics/radlw_main.f index 701505296..9e2d96380 100644 --- a/physics/radlw_main.f +++ b/physics/radlw_main.f @@ -110,7 +110,7 @@ ! ! ! ! ! a rapid radiative transfer model ! -! for the longwave region ! +! for the longwave region ! ! for application to general circulation models ! ! ! ! ! @@ -228,7 +228,7 @@ ! apr 2012, b. ferrier and y. hou -- added conversion factor to fu's! ! cloud-snow optical property scheme. ! ! nov 2012, yu-tai hou -- modified control parameters thru ! -! module 'physparam'. ! +! module 'physparam'. ! ! ! !!!!! ============================================================== !!!!! !!!!! end descriptions !!!!! @@ -236,7 +236,7 @@ !> \defgroup module_radlw_main module_radlw_main -!! \ingroup rad +!! \ingroup RRTMG !! This module includes NCEP's modifications of the rrtmg-lw radiation !! code from AER. !! @@ -258,13 +258,13 @@ !! module 'module_radlw_main' and many of them are not directly !! accessable from places outside the module. !! -!!\author Eli J. Mlawer, emlawer@aer.com -!!\author Jennifer S. Delamere, jdelamer@aer.com -!!\author Michael J. Iacono, miacono@aer.com +!!\author Eli J. Mlawer, emlawer@aer.com +!!\author Jennifer S. Delamere, jdelamer@aer.com +!!\author Michael J. Iacono, miacono@aer.com !!\author Shepard A. Clough !!\version NCEP LW v5.1 Nov 2012 -RRTMG-LW v4.82 -!! -!! The authors wish to acknowledge the contributions of the +!! +!! The authors wish to acknowledge the contributions of the !! following people: Steven J. Taubman, Karen Cady-Pereira, !! Patrick D. Brown, Ronald E. Farren, Luke Chen, Robert Bergstrom. !! @@ -394,8 +394,8 @@ module module_radlw_main ! !!\param plvl model interface pressure in mb !!\param tlyr model layer mean temperature in K !!\param tlvl model interface temperature in K -!!\param qlyr layer specific humidity in gm/gm -!!\param olyr layer ozone concentration in gm/gm +!!\param qlyr layer specific humidity in gm/gm +!!\param olyr layer ozone concentration in gm/gm !!\param gasvmr atmospheric gases amount: !!\n (:,:,1) - co2 volume mixing ratio !!\n (:,:,2) - n2o volume mixing ratio @@ -423,7 +423,7 @@ module module_radlw_main ! !!\n (:,:,3) - layer cloud single scattering albedo !!\n (:,:,4) - layer cloud asymmetry factor !!\param icseed auxiliary special cloud related array. -!!\param aerosols aerosol optical properties +!!\param aerosols aerosol optical properties !!\n (:,:,:,1) - optical depth !!\n (:,:,:,2) - single scattering albedo !!\n (:,:,:,3) - asymmetry parameter @@ -715,7 +715,7 @@ subroutine lwrad & lhlwb = present ( hlwb ) lhlw0 = present ( hlw0 ) lflxprf= present ( flxprf ) - + colamt(:,:) = f_zero @@ -738,7 +738,7 @@ subroutine lwrad & ! endif ! --- ... loop over horizontal npts profiles - + lab_do_iplon : do iplon = 1, npts !> -# Read surface emissivity. @@ -1090,7 +1090,7 @@ subroutine lwrad & ! print *,'indfor',indfor ! endif -!> -# Call taumol() to calculte the gaseous optical depths and Plank +!> -# Call taumol() to calculte the gaseous optical depths and Plank !! fractions for each longwave spectral band. call taumol & @@ -1969,18 +1969,18 @@ end subroutine mcica_subcol !!\param rfrate ref ratios of binary species param !!\n (:,m,:)m=1-h2o/co2,2-h2o/o3,3-h2o/n2o, !! 4-h2o/ch4,5-n2o/co2,6-o3/co2 -!!\n (:,:,n)n=1,2: the rates of ref press at +!!\n (:,:,n)n=1,2: the rates of ref press at !! the 2 sides of the layer !!\param facij factors multiply the reference ks, i,j=0/1 for !! lower/higher of the 2 appropriate temperatures !! and altitudes. !!\param selffac scale factor for w. v. self-continuum equals !! (w. v. density)/(atmospheric density at 296k and 1013 mb) -!!\param selffrac factor for temperature interpolation of +!!\param selffrac factor for temperature interpolation of !! reference w. v. self-continuum data !!\param indself index of lower ref temp for selffac !!\param forfac scale factor for w. v. foreign-continuum -!!\param forfrac factor for temperature interpolation of +!!\param forfrac factor for temperature interpolation of !! reference w.v. foreign-continuum data !!\param indfor index of lower ref temp for forfac !!\param minorfrac factor for minor gases @@ -2251,7 +2251,7 @@ end subroutine setcoef !! randomly overlaping in a vertical column. !!\brief Original Code Description: this program calculates the upward !! fluxes, downward fluxes, and heating rates for an arbitrary clear or -!! cloudy atmosphere. The input to this program is the atmospheric +!! cloudy atmosphere. The input to this program is the atmospheric !! profile, all Planck function information, and the cloud fraction by !! layer. A variable diffusivity angle (secdif) is used for the angle !! integration. Bands 2-3 and 5-9 use a value for secdif that varies @@ -2585,7 +2585,7 @@ subroutine rtrn & enddo ! end do_ig_loop -!> -# Process longwave output from band for total and clear streams. +!> -# Process longwave output from band for total and clear streams. !! Calculate upward, downward, and net flux. flxfac = wtdiff * fluxfac @@ -2641,7 +2641,7 @@ end subroutine rtrn !> This subroutine computes the upward/downward radiative fluxes, and -!! heating rates for both clear or cloudy atmosphere. Clouds are +!! heating rates for both clear or cloudy atmosphere. Clouds are !! assumed as in maximum-randomly overlaping in a vertical column. !!\param semiss lw surface emissivity !!\param delp layer pressure thickness (mb) @@ -3629,13 +3629,13 @@ end subroutine rtrnmc !> This subroutine contains optical depths developed for the rapid !! radiative transfer model. !!\brief This file contains the subroutines taugbn (where n goes from -!! 1 to 16). taugbn calculates the optical depths and planck fractions +!! 1 to 16). taugbn calculates the optical depths and planck fractions !! per g-value and layer for band n. -!!\param laytrop tropopause layer index (unitless) layer at +!!\param laytrop tropopause layer index (unitless) layer at !! which switch is made for key species !!\param pavel layer pressures (mb) !!\param coldry column amount for dry air \f$(mol/cm^2)\f$ -!!\param colamt column amounts of h2o, co2, o3, n2o, ch4,o2, +!!\param colamt column amounts of h2o, co2, o3, n2o, ch4,o2, !! co \f$(mol/cm^2)\f$ !!\param colbrd column amount of broadening gases !!\param wx cross-section amounts \f$(mol/cm^2)\f$ @@ -3646,7 +3646,7 @@ end subroutine rtrnmc !!\n (:,:,n)n=1,2: the rates of ref press at the 2 !! sides of the layer !!\param facij factors multiply the reference ks, i,j of 0/1 -!! for lower/higher of the 2 appropriate +!! for lower/higher of the 2 appropriate !! temperatures and altitudes !!\param jp index of lower reference pressure !!\param jt, jt1 indices of lower reference temperatures for @@ -3855,7 +3855,7 @@ subroutine taumol & ! ================= !> band 1: 10-350 cm-1 (low key - h2o; low minor - n2); -!! (high key - h2o; high minor - n2) +!! (high key - h2o; high minor - n2) ! ---------------------------------- subroutine taugb01 ! .................................. @@ -3914,7 +3914,7 @@ subroutine taugb01 tauself = selffac(k) * (selfref(ig,inds) + selffrac(k) & & * (selfref(ig,indsp) - selfref(ig,inds))) taufor = forfac(k) * (forref(ig,indf) + forfrac(k) & - & * (forref(ig,indfp) - forref(ig,indf))) + & * (forref(ig,indfp) - forref(ig,indf))) taun2 = scalen2 * (ka_mn2(ig,indm) + minorfrac(k) & & * (ka_mn2(ig,indmp) - ka_mn2(ig,indm))) @@ -3945,7 +3945,7 @@ subroutine taugb01 do ig = 1, ng01 taufor = forfac(k) * (forref(ig,indf) + forfrac(k) & - & * (forref(ig,indfp) - forref(ig,indf))) + & * (forref(ig,indfp) - forref(ig,indf))) taun2 = scalen2 * (kb_mn2(ig,indm) + minorfrac(k) & & * (kb_mn2(ig,indmp) - kb_mn2(ig,indm))) @@ -4000,7 +4000,7 @@ subroutine taugb02 tauself = selffac(k) * (selfref(ig,inds) + selffrac(k) & & * (selfref(ig,indsp) - selfref(ig,inds))) taufor = forfac(k) * (forref(ig,indf) + forfrac(k) & - & * (forref(ig,indfp) - forref(ig,indf))) + & * (forref(ig,indfp) - forref(ig,indf))) taug(ns02+ig,k) = corradj * (colamt(k,1) & & * (fac00(k)*absa(ig,ind0) + fac10(k)*absa(ig,ind0p) & @@ -4024,7 +4024,7 @@ subroutine taugb02 do ig = 1, ng02 taufor = forfac(k) * (forref(ig,indf) + forfrac(k) & - & * (forref(ig,indfp) - forref(ig,indf))) + & * (forref(ig,indfp) - forref(ig,indf))) taug(ns02+ig,k) = colamt(k,1) & & * (fac00(k)*absb(ig,ind0) + fac10(k)*absb(ig,ind0p) & @@ -4087,7 +4087,7 @@ subroutine taugb03 specparm = colamt(k,1) / speccomb specmult = 8.0 * min(specparm, oneminus) js = 1 + int(specmult) - fs = mod(specmult, f_one) + fs = mod(specmult, f_one) ind0 = ((jp(k)-1)*5 + (jt(k)-1)) * nspa(3) + js speccomb1 = colamt(k,1) + rfrate(k,1,2)*colamt(k,2) @@ -4320,7 +4320,7 @@ subroutine taugb03 do ig = 1, ng03 taufor = forfac(k) * (forref(ig,indf) + forfrac(k) & - & * (forref(ig,indfp) - forref(ig,indf))) + & * (forref(ig,indfp) - forref(ig,indf))) n2om1 = kb_mn2o(ig,jmn2o,indm) + fmn2o & & * (kb_mn2o(ig,jmn2op,indm) - kb_mn2o(ig,jmn2o,indm)) n2om2 = kb_mn2o(ig,jmn2o,indmp) + fmn2o & @@ -4336,7 +4336,7 @@ subroutine taugb03 & + fac101*absb(ig,id101) + fac111*absb(ig,id111)) taug(ns03+ig,k) = tau_major + tau_major1 & - & + taufor + adjcoln2o*absn2o + & + taufor + adjcoln2o*absn2o fracs(ns03+ig,k) = fracrefb(ig,jpl) + fpl & & * (fracrefb(ig,jplp) - fracrefb(ig,jpl)) @@ -4495,7 +4495,7 @@ subroutine taugb04 tauself = selffac(k)* (selfref(ig,inds) + selffrac(k) & & * (selfref(ig,indsp) - selfref(ig,inds))) taufor = forfac(k) * (forref(ig,indf) + forfrac(k) & - & * (forref(ig,indfp) - forref(ig,indf))) + & * (forref(ig,indfp) - forref(ig,indf))) tau_major = speccomb & & * (fac000*absa(ig,id000) + fac010*absa(ig,id010) & @@ -4591,8 +4591,8 @@ subroutine taugb04 end subroutine taugb04 ! ---------------------------------- -!> Band 5: 700-820 cm-1 (low key - h2o,co2; low minor - o3, ccl4) -!! (high key - o3,co2) +!> Band 5: 700-820 cm-1 (low key - h2o,co2; low minor - o3, ccl4) +!! (high key - o3,co2) ! ---------------------------------- subroutine taugb05 ! .................................. @@ -4604,7 +4604,7 @@ subroutine taugb05 use module_radlw_kgb05 -! --- locals: +! --- locals: integer :: k, ind0, ind1, inds, indsp, indf, indfp, indm, indmp, & & id000, id010, id100, id110, id200, id210, jmo3, jmo3p, & & id001, id011, id101, id111, id201, id211, jpl, jplp, & @@ -4854,7 +4854,7 @@ subroutine taugb05 end subroutine taugb05 ! ---------------------------------- -!> Band 6: 820-980 cm-1 (low key - h2o; low minor - co2) +!> Band 6: 820-980 cm-1 (low key - h2o; low minor - co2) !! (high key - none; high minor - cfc11, cfc12) ! ---------------------------------- subroutine taugb06 @@ -4867,7 +4867,7 @@ subroutine taugb06 use module_radlw_kgb06 -! --- locals: +! --- locals: integer :: k, ind0, ind0p, ind1, ind1p, inds, indsp, indf, indfp, & & indm, indmp, ig @@ -5129,7 +5129,7 @@ subroutine taugb07 tauself = selffac(k)* (selfref(ig,inds) + selffrac(k) & & * (selfref(ig,indsp) - selfref(ig,inds))) taufor = forfac(k) * (forref(ig,indf) + forfrac(k) & - & * (forref(ig,indfp) - forref(ig,indf))) + & * (forref(ig,indfp) - forref(ig,indf))) co2m1 = ka_mco2(ig,jmco2,indm) + fmco2 & & * (ka_mco2(ig,jmco2p,indm) - ka_mco2(ig,jmco2,indm)) co2m2 = ka_mco2(ig,jmco2,indmp) + fmco2 & @@ -5202,8 +5202,8 @@ subroutine taugb07 end subroutine taugb07 ! ---------------------------------- -!> Band 8: 1080-1180 cm-1 (low key - h2o; low minor - co2,o3,n2o) -!! (high key - o3; high minor - co2, n2o) +!> Band 8: 1080-1180 cm-1 (low key - h2o; low minor - co2,o3,n2o) +!! (high key - o3; high minor - co2, n2o) ! ---------------------------------- subroutine taugb08 ! .................................. @@ -5328,7 +5328,7 @@ end subroutine taugb08 ! ---------------------------------- !> Band 9: 1180-1390 cm-1 (low key - h2o,ch4; low minor - n2o) -!! (high key - ch4; high minor - n2o) +!! (high key - ch4; high minor - n2o) ! ---------------------------------- subroutine taugb09 ! .................................. @@ -5514,7 +5514,7 @@ subroutine taugb09 tauself = selffac(k)* (selfref(ig,inds) + selffrac(k) & & * (selfref(ig,indsp) - selfref(ig,inds))) taufor = forfac(k) * (forref(ig,indf) + forfrac(k) & - & * (forref(ig,indfp) - forref(ig,indf))) + & * (forref(ig,indfp) - forref(ig,indf))) n2om1 = ka_mn2o(ig,jmn2o,indm) + fmn2o & & * (ka_mn2o(ig,jmn2op,indm) - ka_mn2o(ig,jmn2o,indm)) n2om2 = ka_mn2o(ig,jmn2o,indmp) + fmn2o & @@ -5529,7 +5529,7 @@ subroutine taugb09 & * (fac001*absa(ig,id001) + fac011*absa(ig,id011) & & + fac101*absa(ig,id101) + fac111*absa(ig,id111) & & + fac201*absa(ig,id201) + fac211*absa(ig,id211)) & - & + tauself + taufor + adjcoln2o*absn2o + & + tauself + taufor + adjcoln2o*absn2o fracs(ns09+ig,k) = fracrefa(ig,jpl) + fpl & & * (fracrefa(ig,jplp) - fracrefa(ig,jpl)) @@ -5613,7 +5613,7 @@ subroutine taugb10 tauself = selffac(k) * (selfref(ig,inds) + selffrac(k) & & * (selfref(ig,indsp) - selfref(ig,inds))) taufor = forfac(k) * (forref(ig,indf) + forfrac(k) & - & * (forref(ig,indfp) - forref(ig,indf))) + & * (forref(ig,indfp) - forref(ig,indf))) taug(ns10+ig,k) = colamt(k,1) & & * (fac00(k)*absa(ig,ind0) + fac10(k)*absa(ig,ind0p) & @@ -5652,8 +5652,8 @@ subroutine taugb10 end subroutine taugb10 ! ---------------------------------- -!> Band 11: 1480-1800 cm-1 (low - h2o; low minor - o2) -!! (high key - h2o; high minor - o2) +!> Band 11: 1480-1800 cm-1 (low - h2o; low minor - o2) +!! (high key - h2o; high minor - o2) ! ---------------------------------- subroutine taugb11 ! .................................. @@ -5728,7 +5728,7 @@ subroutine taugb11 do ig = 1, ng11 taufor = forfac(k) * (forref(ig,indf) + forfrac(k) & - & * (forref(ig,indfp) - forref(ig,indf))) + & * (forref(ig,indfp) - forref(ig,indf))) tauo2 = scaleo2 * (kb_mo2(ig,indm) + minorfrac(k) & & * (kb_mo2(ig,indmp) - kb_mo2(ig,indm))) @@ -5900,7 +5900,7 @@ subroutine taugb12 tauself = selffac(k)* (selfref(ig,inds) + selffrac(k) & & * (selfref(ig,indsp) - selfref(ig,inds))) taufor = forfac(k) * (forref(ig,indf) + forfrac(k) & - & * (forref(ig,indfp) - forref(ig,indf))) + & * (forref(ig,indfp) - forref(ig,indf))) taug(ns12+ig,k) = speccomb & & * (fac000*absa(ig,id000) + fac010*absa(ig,id010) & @@ -6129,7 +6129,7 @@ subroutine taugb13 tauself = selffac(k)* (selfref(ig,inds) + selffrac(k) & & * (selfref(ig,indsp) - selfref(ig,inds))) taufor = forfac(k) * (forref(ig,indf) + forfrac(k) & - & * (forref(ig,indfp) - forref(ig,indf))) + & * (forref(ig,indfp) - forref(ig,indf))) co2m1 = ka_mco2(ig,jmco2,indm) + fmco2 & & * (ka_mco2(ig,jmco2p,indm) - ka_mco2(ig,jmco2,indm)) co2m2 = ka_mco2(ig,jmco2,indmp) + fmco2 & @@ -6177,7 +6177,7 @@ subroutine taugb13 end subroutine taugb13 ! ---------------------------------- -!> Band 14: 2250-2380 cm-1 (low - co2; high - co2) +!> Band 14: 2250-2380 cm-1 (low - co2; high - co2) ! ---------------------------------- subroutine taugb14 ! .................................. @@ -6213,7 +6213,7 @@ subroutine taugb14 tauself = selffac(k) * (selfref(ig,inds) + selffrac(k) & & * (selfref(ig,indsp) - selfref(ig,inds))) taufor = forfac(k) * (forref(ig,indf) + forfrac(k) & - & * (forref(ig,indfp) - forref(ig,indf))) + & * (forref(ig,indfp) - forref(ig,indf))) taug(ns14+ig,k) = colamt(k,2) & & * (fac00(k)*absa(ig,ind0) + fac10(k)*absa(ig,ind0p) & @@ -6246,8 +6246,8 @@ subroutine taugb14 end subroutine taugb14 ! ---------------------------------- -!> Band 15: 2380-2600 cm-1 (low - n2o,co2; low minor - n2) -!! (high - nothing) +!> Band 15: 2380-2600 cm-1 (low - n2o,co2; low minor - n2) +!! (high - nothing) ! ---------------------------------- subroutine taugb15 ! .................................. @@ -6325,7 +6325,7 @@ subroutine taugb15 indmp = indm + 1 jplp = jpl + 1 jmn2p = jmn2 + 1 - + if (specparm < 0.125 .and. specparm1 < 0.125) then p0 = fs - f_one @@ -6421,7 +6421,7 @@ subroutine taugb15 tauself = selffac(k)* (selfref(ig,inds) + selffrac(k) & & * (selfref(ig,indsp) - selfref(ig,inds))) taufor = forfac(k) * (forref(ig,indf) + forfrac(k) & - & * (forref(ig,indfp) - forref(ig,indf))) + & * (forref(ig,indfp) - forref(ig,indf))) n2m1 = ka_mn2(ig,jmn2,indm) + fmn2 & & * (ka_mn2(ig,jmn2p,indm) - ka_mn2(ig,jmn2,indm)) n2m2 = ka_mn2(ig,jmn2,indmp) + fmn2 & @@ -6611,7 +6611,7 @@ subroutine taugb16 tauself = selffac(k)* (selfref(ig,inds) + selffrac(k) & & * (selfref(ig,indsp) - selfref(ig,inds))) taufor = forfac(k) * (forref(ig,indf) + forfrac(k) & - & * (forref(ig,indfp) - forref(ig,indf))) + & * (forref(ig,indfp) - forref(ig,indf))) taug(ns16+ig,k) = speccomb & & * (fac000*absa(ig,id000) + fac010*absa(ig,id010) & diff --git a/physics/radsw_main.f b/physics/radsw_main.f index 6897c02de..dce59ed5b 100644 --- a/physics/radsw_main.f +++ b/physics/radsw_main.f @@ -260,7 +260,7 @@ !!!!! ============================================================== !!!!! -!> \ingroup rad +!> \ingroup RRTMG !! \defgroup module_radsw_main module_radsw_main !! This module includes NCEP's modifications of the rrtmg-sw radiation !! code from AER. diff --git a/physics/sfc_drv.f b/physics/sfc_drv.f index 5195ed6a6..2fe4db9d7 100644 --- a/physics/sfc_drv.f +++ b/physics/sfc_drv.f @@ -1,3 +1,22 @@ +!> \file sfc_drv.f +!! This file contains the NOAH land surface scheme. + +!> \defgroup NOAH NOAH Land Surface +!! @{ +!! \brief Brief description of the parameterization +!! \section diagram Calling Hierarchy Diagram +!! \section intraphysics Intraphysics Communication + +!> \brief Brief description of the subroutine +!! +!! \section arg_table_Noah_run Arguments +!! | local var name | longname | description | units | rank | type | kind | intent | optional | +!! |----------------|-------------------------------------------------------|------------------------------------|---------|------|---------|-----------|--------|----------| +!! | im | horizontal_loop_extent | horizontal loop extent, start at 1 | index | 0 | integer | | in | F | +!! +!! \section general General Algorithm +!! \section detailed Detailed Algorithm +!! @{ ! ===================================================================== ! ! description: ! ! ! @@ -105,20 +124,16 @@ !----------------------------------- subroutine sfc_drv & -!................................... -! --- inputs: & ( im, km, ps, u1, v1, t1, q1, soiltyp, vegtype, sigmaf, & & sfcemis, dlwflx, dswsfc, snet, delt, tg3, cm, ch, & & prsl1, prslki, zf, islimsk, ddvel, slopetyp, & & shdmin, shdmax, snoalb, sfalb, flag_iter, flag_guess, & - & isot, ivegsrc, & -! --- in/outs: + & isot, ivegsrc, & ! --- inputs from here and above & weasd, snwdph, tskin, tprcp, srflag, smc, stc, slc, & - & canopy, trans, tsurf, zorl, & -! --- outputs: + & canopy, trans, tsurf, zorl, & ! --- in/outs from here and above & sncovr1, qsurf, gflux, drain, evap, hflx, ep, runoff, & & cmm, chh, evbs, evcw, sbsno, snowc, stm, snohf, & - & smcwlt2, smcref2, wet1 & + & smcwlt2, smcref2, wet1 & ! -- outputs from here and above & ) ! use machine , only : kind_phys @@ -170,7 +185,7 @@ subroutine sfc_drv & & qsurf, gflux, drain, evap, hflx, ep, runoff, cmm, chh, & & evbs, evcw, sbsno, snowc, stm, snohf, smcwlt2, smcref2, & & zorl, wet1 - + ! --- locals: real (kind=kind_phys), dimension(im) :: rch, rho, & & q0, qs1, theta1, wind, weasd_old, snwdph_old, & @@ -192,7 +207,7 @@ subroutine sfc_drv & & snomlt, sncovr, soilw, soilm, ssoil, tsea, th2, tbot, & & xlai, zlvl, swdn, tem,z0 - integer :: couple, ice, nsoil, nroot, slope, stype, vtype + integer :: couple, ice, nsoil, nroot, slope, stype, vtype integer :: i, k logical :: flag(im) @@ -245,7 +260,7 @@ subroutine sfc_drv & endif enddo -! --- ... initialize variables +! --- ... initialize variables do i = 1, im if (flag_iter(i) .and. flag(i)) then @@ -276,8 +291,8 @@ subroutine sfc_drv & ! --- ... noah: prepare variables to run noah lsm ! 1. configuration information (c): ! ------------------------------ -! couple - couple-uncouple flag (=1: coupled, =0: uncoupled) -! ffrozp - flag for snow-rain detection (1.=snow, 0.=rain) +! couple - couple-uncouple flag (=1: coupled, =0: uncoupled) +! ffrozp - flag for snow-rain detection (1.=snow, 0.=rain) ! ice - sea-ice flag (=1: sea-ice, =0: land) ! dt - timestep (sec) (dt should not exceed 3600 secs) = delt ! zlvl - height (m) above ground of atmospheric forcing variables @@ -316,9 +331,9 @@ subroutine sfc_drv & solnet = snet(i) !..net sw rad flx (dn-up) at sfc in w/m2 sfcems = sfcemis(i) - sfcprs = prsl1(i) + sfcprs = prsl1(i) prcp = rhoh2o * tprcp(i) / delt - sfctmp = t1(i) + sfctmp = t1(i) th2 = theta1(i) q2 = q0(i) @@ -349,9 +364,9 @@ subroutine sfc_drv & slope = slopetyp(i) shdfac= sigmaf(i) - shdmin1d = shdmin(i) - shdmax1d = shdmax(i) - snoalb1d = snoalb(i) + shdmin1d = shdmin(i) + shdmax1d = shdmax(i) + snoalb1d = snoalb(i) ptu = 0.0 alb = sfalb(i) @@ -403,13 +418,13 @@ subroutine sfc_drv & & vtype, stype, slope, shdmin1d, alb, snoalb1d, & ! --- input/outputs: & tbot, cmc, tsea, stsoil, smsoil, slsoil, sneqv, chx, cmx, & - & z0, & + & z0, & ! --- outputs: & nroot, shdfac, snowh, albedo, eta, sheat, ec, & & edir, et, ett, esnow, drip, dew, beta, etp, ssoil, & & flx1, flx2, flx3, runoff1, runoff2, runoff3, & & snomlt, sncovr, rc, pc, rsmin, xlai, rcs, rct, rcq, & - & rcsoil, soilw, soilm, smcwlt, smcdry, smcref, smcmax) + & rcsoil, soilw, soilm, smcwlt, smcdry, smcref, smcmax) ! --- ... noah: prepare variables for return to parent mode ! 6. output (o): @@ -441,7 +456,7 @@ subroutine sfc_drv & tsurf(i) = tsea do k = 1, km - stc(i,k) = stsoil(k) + stc(i,k) = stsoil(k) smc(i,k) = smsoil(k) slc(i,k) = slsoil(k) enddo @@ -537,7 +552,7 @@ subroutine sfc_drv & slc(i,k) = slc_old(i,k) enddo else - tskin(i) = tsurf(i) + tskin(i) = tsurf(i) endif endif enddo @@ -546,4 +561,5 @@ subroutine sfc_drv & !................................... end subroutine sfc_drv !----------------------------------- - +!> @} +!> @} diff --git a/physics/sfc_nst.f b/physics/sfc_nst.f index 9155172d4..f36df0285 100644 --- a/physics/sfc_nst.f +++ b/physics/sfc_nst.f @@ -1,17 +1,31 @@ +!> \file sfc_nst.f +!! This file contains the GFS NSST model. +!> \defgroup GFS_NSST GFS Near Sea Surface Temperature +!! @{ +!! \brief Brief description of the parameterization +!! \section diagram Calling Hierarchy Diagram +!! \section intraphysics Intraphysics Communication + +!> \brief Brief description of the subroutine +!! +!! \section arg_table_NSST_run Arguments +!! | local var name | longname | description | units | rank | type | kind | intent | optional | +!! |----------------|-------------------------------------------------------|------------------------------------|---------|------|---------|-----------|--------|----------| +!! | im | horizontal_loop_extent | horizontal loop extent, start at 1 | index | 0 | integer | | in | F | +!! +!! \section general General Algorithm +!! \section detailed Detailed Algorithm +!! @{ subroutine sfc_nst & -!................................... -! --- inputs: & ( im, km, ps, u1, v1, t1, q1, tref, cm, ch, & & prsl1, prslki, islimsk, xlon, sinlat, stress, & & sfcemis, dlwflx, sfcnsw, rain, timestep, kdt, solhr,xcosz, & - & ddvel, flag_iter, flag_guess, nstf_name, & - & lprnt, ipr, & -! --- input/output + & ddvel, flag_iter, flag_guess, nstf_name, & + & lprnt, ipr, & ! inputs from here and above & tskin, tsurf, xt, xs, xu, xv, xz, zm, xtts, xzts, dt_cool, & - & z_c, c_0, c_d, w_0, w_d, d_conv, ifd, qrain, & -! --- outputs: - & qsurf, gflux, cmm, chh, evap, hflx, ep & + & z_c, c_0, c_d, w_0, w_d, d_conv, ifd, qrain, & ! in/outs from here and above + & qsurf, gflux, cmm, chh, evap, hflx, ep & ! outputs & ) ! ! ===================================================================== ! @@ -189,7 +203,7 @@ subroutine sfc_nst & ! integer :: k,i ! - real (kind=kind_phys), dimension(im) :: q0, qss, rch, + real (kind=kind_phys), dimension(im) :: q0, qss, rch, & rho_a, theta1, tv1, wind, wndmag real(kind=kind_phys) elocp,tem @@ -197,7 +211,7 @@ subroutine sfc_nst & ! nstm related prognostic fields ! logical flag(im) - real (kind=kind_phys), dimension(im) :: + real (kind=kind_phys), dimension(im) :: & xt_old, xs_old, xu_old, xv_old, xz_old,zm_old,xtts_old, & xzts_old, ifd_old, tref_old, tskin_old, dt_cool_old,z_c_old @@ -291,8 +305,8 @@ subroutine sfc_nst & endif enddo -! run nst model: dtm + slm -! +! run nst model: dtm + slm +! zsea1 = 0.001*real(nstf_name(4)) zsea2 = 0.001*real(nstf_name(5)) do i = 1, im @@ -306,7 +320,7 @@ subroutine sfc_nst & call density(tsea,sss,rho_w) ! sea water density call rhocoef(tsea,sss,rho_w,alpha,beta) ! alpha & beta ! -! calculate sensible heat flux due to rainfall +! calculate sensible heat flux due to rainfall ! le = (2.501-.00237*tsea)*1e6 dwat = 2.11e-5*(t1(i)/t0k)**1.94 ! water vapor diffusivity @@ -382,7 +396,7 @@ subroutine sfc_nst & ! endif rich = ri_c - + call dtm_1p(kdt,timestep,rich,taux,tauy,nswsfc(i), & f_nsol,sss,sep,q_ts,hl_ts,rho_w,alpha,beta,alon, & sinlat(i),soltim,grav,le,d_conv(i), @@ -507,14 +521,14 @@ subroutine sfc_nst & ! qrain(i) = rig(i) zm(i) = wind(i) - + endif enddo ! restore nst-related prognostic fields for guess run do i=1, im if((islimsk(i) == 0) ) then - if(flag_guess(i)) then ! when it is guess of + if(flag_guess(i)) then ! when it is guess of xt(i) = xt_old(i) xs(i) = xs_old(i) xu(i) = xu_old(i) @@ -568,3 +582,4 @@ subroutine sfc_nst & return end +!> @} diff --git a/physics/sfc_sice.f b/physics/sfc_sice.f index 43dc075be..9340a0fb5 100644 --- a/physics/sfc_sice.f +++ b/physics/sfc_sice.f @@ -1,15 +1,30 @@ +!> \file sfc_sice.f +!! This file contains the GFS thermodynamics surface ice model. + +!> \defgroup GFS_Ice GFS Thermodynamics Surface Ice +!! @{ +!! \brief Brief description of the parameterization +!! \section diagram Calling Hierarchy Diagram +!! \section intraphysics Intraphysics Communication + +!> \brief Brief description of the subroutine +!! +!! \section arg_table_sice_run Arguments +!! | local var name | longname | description | units | rank | type | kind | intent | optional | +!! |----------------|-------------------------------------------------------|------------------------------------|---------|------|---------|-----------|--------|----------| +!! | im | horizontal_loop_extent | horizontal loop extent, start at 1 | index | 0 | integer | | in | F | +!! +!! \section general General Algorithm +!! \section detailed Detailed Algorithm +!! @{ !----------------------------------- subroutine sfc_sice & -!................................... -! --- inputs: & ( im, km, ps, u1, v1, t1, q1, delt, & & sfcemis, dlwflx, sfcnsw, sfcdsw, srflag, & & cm, ch, prsl1, prslki, islimsk, ddvel, & - & flag_iter, mom4ice, lsm, lprnt,ipr, & -! --- input/outputs: - & hice, fice, tice, weasd, tskin, tprcp, stc, ep, & -! --- outputs: - & snwdph, qsurf, snowmt, gflux, cmm, chh, evap, hflx & + & flag_iter, mom4ice, lsm, lprnt,ipr, & ! -- inputs from here and above + & hice, fice, tice, weasd, tskin, tprcp, stc, ep, & ! -- in/outs + & snwdph, qsurf, snowmt, gflux, cmm, chh, evap, hflx & ! -- outputs & ) ! ===================================================================== ! @@ -151,7 +166,7 @@ subroutine sfc_sice & real (kind=kind_phys), parameter :: cimin=0.15 ! --- minimum ice concentration integer :: i, k - + logical :: flag(im) ! !===> ... begin here @@ -380,8 +395,11 @@ subroutine sfc_sice & contains ! ================= +!> @} !----------------------------------- +!> \brief Brief description of the subroutine +!! subroutine ice3lay !................................... ! --- inputs: @@ -429,7 +447,7 @@ subroutine ice3lay ! input/outputs: ! ! snowd - real, surface pressure im ! ! hice - real, sea-ice thickness im ! -! stsice - real, temp @ midpt of ice levels (deg c) im,kmi! +! stsice - real, temp @ midpt of ice levels (deg c) im,kmi! ! tice - real, surface temperature (deg c) im ! ! snof - real, snowfall rate (m/sec) im ! ! ! @@ -463,9 +481,9 @@ subroutine ice3lay real (kind=kind_phys), parameter :: tfi = -mu*si ! sea ice freezing temp = -mu*salinity real (kind=kind_phys), parameter :: tfw = -1.8 ! tfw - seawater freezing temp (c) real (kind=kind_phys), parameter :: tfi0 = tfi-0.0001 - real (kind=kind_phys), parameter :: dici = di*ci - real (kind=kind_phys), parameter :: dili = di*li - real (kind=kind_phys), parameter :: dsli = ds*li + real (kind=kind_phys), parameter :: dici = di*ci + real (kind=kind_phys), parameter :: dili = di*li + real (kind=kind_phys), parameter :: dsli = ds*li real (kind=kind_phys), parameter :: ki4 = ki*4.0 ! --- inputs: @@ -650,3 +668,5 @@ end subroutine ice3lay !................................... end subroutine sfc_sice !----------------------------------- + +!> @}