Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
216 commits
Select commit Hold shift + click to select a range
212a2e8
Import of nalanda.
Mar 19, 2007
bef6d08
Import of nalanda_2007_04.
Apr 30, 2007
e083c51
Import of nalanda_2007_06.
Jun 30, 2007
6189161
Import of omsk.
Aug 15, 2007
f158cd6
Import of omsk_2007_10.
Oct 31, 2007
5b7c9e9
Import of omsk_2007_12.
Dec 31, 2007
8e27f66
Import of omsk_2008_03.
Mar 31, 2008
8efc138
Import of perth.
Jul 30, 2008
d9e5f4a
Import of perth_2008_10.
Oct 31, 2008
b618b97
Import of quebec.
Aug 10, 2009
3e56e03
Import of quebec_200910.
Oct 31, 2009
6cfd61e
Import of riga.
Mar 4, 2010
1dd5654
Import of riga_201004.
Apr 30, 2010
f887872
Import of riga_201006.
Jun 30, 2010
fff7ab6
Import of riga_201012.
Oct 31, 2010
1c520ad
Import of riga_201104.
May 1, 2011
811bb0b
Import of siena.
Jan 9, 2012
188f27a
Import of siena_201202.
Feb 29, 2012
9fa4c1a
Import of siena_201203.
Mar 31, 2012
709a586
Import of siena_201204.
Apr 30, 2012
3ba00f4
Import of siena_201207.
Jul 31, 2012
857b6e7
Import of siena_201211.
Nov 30, 2012
a2d182a
Import of siena_201303.
Mar 31, 2013
2bf4bfd
Import of siena_201305.
May 31, 2013
cb3dea7
Import of siena_201308.
Aug 31, 2013
3828366
Import of siena_201309.
Sep 30, 2013
cc3804f
Import of tikal.
Dec 20, 2013
8384a98
Import of tikal_201403.
Mar 13, 2014
8369603
Import of tikal_201409.
Sep 17, 2014
e126bfa
Updated to match CVS testing as of 20141209
underwoo Dec 9, 2014
ef21a16
Removed CVS keyword expansion
underwoo Dec 9, 2014
1b41f43
Changed name of geopk_halo_nh to nest_halo_nh as it is in the full-fu…
bensonr Dec 10, 2014
a46b1b5
Merge branch 'user/rab/ulmpre_bugfix' into 'dev/master'
underwoo Dec 10, 2014
2a3ab35
Gnu fix casting 4D to 3D array
bensonr Dec 12, 2014
92976db
Merge branch 'user/rab/ulmpre_bugfix' into 'dev/master'
underwoo Dec 12, 2014
a3527e8
Update master for Ulm release (21.0.0)
underwoo Dec 15, 2014
0dab327
Fix when using non-default NWP nudging
underwoo Dec 16, 2014
b80ed08
Merge branch 'user/rab/ulm_nudgefix' into dev/master
underwoo Dec 16, 2014
2b1e147
Merge for Ulm release (patched)
underwoo Dec 16, 2014
d4ce7ef
Fix for SEGFAULT
underwoo Dec 17, 2014
e4b7e28
Merge branch 'dev/master' for Ulm release
underwoo Dec 17, 2014
fd99d7d
Modifications from Ming Zhao needed for am4f3 configuration.
Mar 6, 2015
da25371
calling free_restart_type for local resart_type variables
Zhi-Liang Apr 27, 2015
15c0dca
Merge remote-tracking branch 'origin/user/z1l/clear_restart_type' int…
underwoo May 1, 2015
bdad3cd
Merge remote-tracking branch 'origin/dev/master' into user/gbw/awg_v2…
gbw-gfdl May 5, 2015
b42ac95
Merge branch 'dev/master' into 'master'
underwoo May 14, 2015
8b4c017
Fix PGI compilation issue
nikizadehgfdl Aug 19, 2015
ddec8a4
Added a module that writes CMIP diagnostic fields on model levels and…
Jan 13, 2016
381492c
Fix bug in climate nudging
lwhorowitz Jan 13, 2016
90f4b59
Add orography and made several other modifications.
Jan 27, 2016
6ebabcb
Merge branch 'user/bw/cmip_diag_20160127' into dev/awg
Jan 29, 2016
bcb22f6
Verona release AM3/AM4 co-existence updated for awg_v20160212
jwdGFDL Feb 17, 2016
57a7c80
initialize E_Flux_Nest to zero in model/fv_mapz.F90
Mar 2, 2016
72a1b57
Merge branch 'user/pjp/fv_mapz_bugfix_for_doubly_periodic_model_20160…
underwoo Apr 8, 2016
b7c28b5
Added new vertical axis and bounds and vertical coordinate
Apr 21, 2016
0f54d91
Merge branch 'dev/awg' into user/bw/cmip_diag_20160127
Apr 21, 2016
cc1655a
Merge branch 'dev/awg' into user/lwh/climate_nudge_fix
lwhorowitz May 10, 2016
bed15bd
Merge tag 'awg_v20160506' into dev/master
underwoo May 10, 2016
5f5ef2d
Merge branch 'user/nnz/pgi_compile' into dev/master
underwoo May 10, 2016
523630c
Merge branch 'user/lwh/climate_nudge_fix' into dev/awg
May 10, 2016
e6819f0
Merge branch 'verona_prerelease' into user/bw/cmip_diag_20160127
Jun 7, 2016
1c4efdd
Merge branch 'user/bw/cmip_diag_20160127' into user/bw/cmip_diag_2016…
Jun 24, 2016
18eb556
Major updates to the CMIP diagnostics.
Jun 30, 2016
3ef80ca
fix vmr mass balance
fabienpaulot Jul 8, 2016
1dea989
compile with all 4 compilers
menzel-r Jul 18, 2016
c026ca8
Added several CMIP diagnostic fields on single pressure levels.
Jul 21, 2016
91a9ced
add an option for doing hydrostatic adjustment in physics
Aug 4, 2016
eed03c3
Updated the scalar pressure level field names from plev??? to p???.
Aug 4, 2016
ba8429d
Merge tag 'verona' into user/lwh/climate_nudge_fix
lwhorowitz Aug 10, 2016
0bd29a1
Simplified changes
menzel-r Aug 11, 2016
d20d60f
read multiple re-analysis files for fv_nudge.F90
Aug 15, 2016
4c1e523
Merge branch 'dev/master' into dev/awg
Aug 17, 2016
754f35c
Merge branch 'user/h1g/awg_g11' into dev/awg
Aug 17, 2016
44e86d3
Merge branch 'dev/awg' into user/bw/cmip_diag_20160624
Aug 18, 2016
87a8d9a
Adds #ifdefs around do_uni_zfull
thomas-robinson Aug 22, 2016
7dd2e5b
Adds one more ifdef for AM3 compatibility
thomas-robinson Aug 22, 2016
0336db2
Merges user/f1p/fix_tracer_balance and adds AM3 compatibility
thomas-robinson Aug 22, 2016
90df5ed
Merge branch 'user/ter/AM3ifdefs' into dev/awg
Aug 22, 2016
84c1397
mpp_transmit is never called so it is no longer used
menzel-r Aug 24, 2016
a3b7f5c
Merge tag 'awg_v20160819' into user/f1p/fix_tracer_balance
lwhorowitz Aug 24, 2016
77ca882
broke long line into 3 lines
menzel-r Aug 24, 2016
f59523e
This is the same as 70d08a33e7bd6b4808dc53896774fc9f0ee2d742 (tag awg…
thomas-robinson Aug 26, 2016
7e8e85b
Merges dev/awg user/ter/devawgFix and user/f1p/fix_tracer_balance
thomas-robinson Aug 26, 2016
a869e44
Changes model/fv_arrays.F90 adj_mass_vmr=.false. as default to reprod…
thomas-robinson Aug 26, 2016
700801e
Comments out line where adj_mass_vmr = .true.
thomas-robinson Aug 26, 2016
e7becea
Merge branch 'user/rlm/4_compiler_fixes' into dev/master
underwoo Aug 26, 2016
1d5895e
Merge branch 'user/lwh/climate_nudge_fix' into dev/master
underwoo Aug 26, 2016
eeaa5a9
Merge branch 'user/ter/devawg' into dev/master
underwoo Aug 26, 2016
e276073
Merge branch 'user/rlm/mpp_transmit_removal' into dev/master
underwoo Aug 26, 2016
85d1601
Merge branch 'user/bw/cmip_diag_20160624' into dev/master
underwoo Aug 26, 2016
9695072
Merge branch 'user/lwh/climate_nudge_fix' into 'dev/master'
underwoo Aug 26, 2016
197a15a
set adj_mass_vmr=.false. in atmos_cubed_sphere/model/fv_arrays.F90 ba…
Sep 8, 2016
815e1f8
merge with dev/awg
Sep 14, 2016
dcca824
set adj_mass_vmr=.false. for backward compatibility
Sep 14, 2016
5af5dc1
Merge branch 'user/h1g/awg_v20160912' into dev/awg
Sep 14, 2016
6898ae1
Merge branch 'dev/master' into 'dev/awg'
Sep 26, 2016
f343ac6
Added cmip diagnostic fields. New fields include dynamics tendencies …
Oct 12, 2016
cdf9add
Merge branch 'dev/awg' into dev/master
underwoo Oct 13, 2016
a5a2b91
Merge branch 'dev/awg' into user/bw/cmip_diag_20160624
Oct 13, 2016
7054f23
Added code to initialize (and terminate) the new atmos_global_diag mo…
Oct 20, 2016
5b31f80
Initializes utmp and vtmp to ebe 999.e19 in sw_core.F90 to (hopefully…
thomas-robinson Nov 1, 2016
6cbefe9
Merge branch 'user/ter/sw_core_fix' into dev/master
underwoo Nov 4, 2016
59b1763
Added a scalar diagnostic for the energy fixer.
Dec 1, 2016
71b6849
Merge branch 'dev/master' into dev/awg
Dec 16, 2016
cde0e96
Merge branch 'user/bw/atmos_global_diag' into dev/awg
Dec 16, 2016
e9d8376
Merge branch 'dev/awg' into dev/master
underwoo Dec 22, 2016
5b4a41c
Protect atmos_global_diag_mod during AM3 builds
underwoo Dec 23, 2016
3ce1fe2
Merge branch 'user/sdu/2-am3.no.atmos_global_diag_mod' into dev/master
underwoo Jan 10, 2017
ed4e6fb
initial try at merging NGGPS and GFDL trunks of FV3
bensonr Jan 11, 2017
e032995
fixes to multiple files for mixed-precision computation as well as ma…
bensonr Jan 12, 2017
5bd26eb
fixed mixed-precision inconsistency inside of read_climate_nudge_data…
bensonr Jan 12, 2017
54dcafd
merge-related fixes to fv_cmip_diag.F90 and coupled/atmosphere.F90
bensonr Jan 12, 2017
0d47361
updated tp_core.F90 file
bensonr Jan 13, 2017
e7ec897
cleaned up model_nh 32/64 bit split
bensonr Jan 13, 2017
1b57e69
moved R_GRID from constants to fv_arrays
bensonr Jan 13, 2017
e0c84e0
updated public functions in fv_diagnostics.F90
bensonr Jan 13, 2017
901775a
added constants.F90 to driver/fvGFS even though this file is needed i…
bensonr Jan 13, 2017
f2a2ba2
merge of latest dev work
bensonr Jan 14, 2017
7d52aa3
fixed merge issue in fv_arrays
bensonr Jan 14, 2017
02b06c2
fixed a merge issue with fv_control
bensonr Jan 14, 2017
81b0fb0
fixed issue with multiple registration of same diag
bensonr Jan 14, 2017
ea7189d
fix to fv_diagnostics for bad merge
bensonr Jan 14, 2017
6b1a666
another fix to bad fv_diagnostics merge
bensonr Jan 14, 2017
5b06dfe
fix fv_diagnostics name collision with full chemistry variables
bensonr Jan 14, 2017
003b7c4
bugfix in external_ic.F90
bensonr Jan 14, 2017
34e78ac
fixed calling of diagnostics in coupled/atmosphere.F90
bensonr Jan 14, 2017
da4fe6e
updated lin_cloud_microphys - missed because of move to another direc…
bensonr Jan 14, 2017
0f04732
fixed openmp declaration and changed ifdefs inside of fv_cmip_diag
bensonr Jan 14, 2017
91dea21
created a new directory GFDL_tools and moved files into it
bensonr Jan 19, 2017
1a0f92a
latest code updates from S-J Linjiong and Lucas
bensonr Jan 19, 2017
97081c3
fixed bug in fv_arrays - double declaration
bensonr Jan 19, 2017
a894a8e
fixed omp declaration in fv_update_phys
bensonr Jan 19, 2017
e999ac2
fixed a bug in fv_surf_map
bensonr Jan 20, 2017
1ea4c4e
fixed parenthesis problem with adj_vmr option added by Fabien Paulot
bensonr Jan 29, 2017
f6730ce
updates to non-hydrostatic code management due to issues with fast tr…
bensonr Jan 30, 2017
a7a6bf1
Merge remote-tracking branch 'origin/dev/master' into user/lnz/fvGFS
linjiongzhou Jan 30, 2017
f0167d8
Changed register_diag_field to register_cmip_diag_field_2d where appr…
Jan 31, 2017
4495ddb
Added additional CMIP6 diagnostic fields: ua10, zg10, zg100, zg1000.
Jan 31, 2017
793e73d
Merged in changes to control fv_cmp from gfs_physics_nml
lharris4 Feb 2, 2017
9c879d1
Reduce delt in sponger layer to make the model stable.
linjiongzhou Feb 4, 2017
e74339a
Fix the reproducibility problem in tp_core when using hord=5 or 6.
linjiongzhou Feb 7, 2017
4a5d576
Merge branch 'user/lnz/fvGFS_dev' into user/lnz/fvGFS
linjiongzhou Feb 7, 2017
288d34c
fv_dynamics: enable calling fill2d() when hord_tr=7
linjiongzhou Feb 7, 2017
010532f
Merge branch 'user/lnz/fvGFS' of http://gitlab.gfdl.noaa.gov/fms/atmo…
lharris4 Feb 7, 2017
f1348a4
Fix new openmp issue in external_ic.F90
linjiongzhou Feb 7, 2017
89ab4f2
Merge branch 'user/lnz/fvGFS' of http://gitlab.gfdl.noaa.gov/fms/atmo…
lharris4 Feb 7, 2017
cd93dfc
Fix the reproducibility problem caused by using hord=4.
linjiongzhou Feb 15, 2017
3a347c9
Add kord=16 vertical remapping scheme.
linjiongzhou Feb 21, 2017
6c70ff8
Fix a monor bug, no answer changes
linjiongzhou Feb 21, 2017
5921db8
updates to atmosphee.F90 for the new IPD datatypes and blocking algor…
bensonr Feb 23, 2017
68a153a
Use mirror image method to extrapolate height field, this increases t…
linjiongzhou Feb 23, 2017
7131bd5
Merge remote-tracking branch 'origin/user/lmh/fvGFS' into user/lnz/fv…
linjiongzhou Feb 24, 2017
25b4d56
Reorganize the code
linjiongzhou Feb 24, 2017
d0f2109
Merge branch 'user/lnz/fvGFS' into user/rab/IPDv4_rel1
bensonr Feb 24, 2017
48e7609
Update parameters based on those in fv_cmp.F90
linjiongzhou Feb 24, 2017
1907d54
Recover OMP code in external_ic.F90, no answer changes
linjiongzhou Feb 25, 2017
1783510
Merge branch 'user/lnz/fvGFS' into user/rab/IPDv4_rel1
bensonr Feb 26, 2017
9fe57e9
Merge branch 'user/lnz/fvGFS' into user/rab/IPDv4_rel1
bensonr Feb 27, 2017
ff2728b
Minor bugfix from Xi
lharris4 Feb 27, 2017
bcca37d
Merge tag 'verona_release_v1.0' into user/lmh/fvGFS
lharris4 Feb 27, 2017
ed9d3f0
Merge branch 'user/bw/cmip_diag_v20170113' into dev/master
underwoo Feb 28, 2017
cdbe5ac
Fixed a bug with make_nh and also added some discussion of plans for …
lharris4 Mar 3, 2017
87a3bf2
Made S. Koch's modifications to the radar reflectivity diagnostics to…
lharris4 Mar 3, 2017
3ab1fa1
Merge branch 'user/lmh/fvGFS' into user/rab/IPDv4_rel1
bensonr Mar 4, 2017
5db8dcd
changed nwat code inside of update_phys and state_update
bensonr Mar 4, 2017
1ddabc5
updated fv_cmip_diag.F90
bensonr Mar 4, 2017
7046f23
merge of user/rab/IPDv4_rel1 into user/rab/IPDv4_gfdl
bensonr Mar 4, 2017
4381e09
updated needed to get NGGPS fv3 ready for GFDL
bensonr Mar 5, 2017
17fd37c
added a lin cloud stub file for the dycore
bensonr Mar 5, 2017
cc14d30
removed an unused module use in fv_sg
bensonr Mar 5, 2017
6acb281
updated fvGFS atmosphere.F90 to fix bugs I introduced
bensonr Mar 6, 2017
a5563db
Add LICENSE.md
bensonr Jul 17, 2019
75edcb4
Renamed driver directories and removed the null version of the nh ext…
bensonr Jul 17, 2019
1cc80fc
Update license header for FV3
underwoo Jul 18, 2019
131a732
Added a README.md file
bensonr Jul 18, 2019
77fd501
Replace GPL header with LGPL header
underwoo Jul 18, 2019
19b48bc
fixed license header in every file and added it to those without it
bensonr Jul 19, 2019
f59c776
commit of new version of dycore from Weather and Climate Dynamics Gro…
bensonr Jan 7, 2020
567afa7
Merge remote-tracking branch 'rusty/master_test' into dev/emc_nest
XiaqiongZhou-NOAA Jan 7, 2020
a2b40f5
Merge with the GFDL version
XiaqiongZhou-NOAA Jan 21, 2020
ff30d1d
delete unwanted files
XiaqiongZhou-NOAA Jan 21, 2020
0135aca
Corrections identified when running regression tests
XiaqiongZhou-NOAA Jan 27, 2020
3b9196c
Corrections identified during regression tests (tools)
XiaqiongZhou-NOAA Jan 27, 2020
8edebfa
More corrections when doing CCPP regression tests
XiaqiongZhou-NOAA Jan 30, 2020
2692a69
Fix the issue due to the change of delz array size to read DA increme…
XiaqiongZhou-NOAA Feb 3, 2020
db5b3b0
Ufs public release (#16)
junwang-noaa Feb 6, 2020
16d3604
Correct agrid in fv_iau_mode.F90
XiaqiongZhou-NOAA Feb 7, 2020
c80bebb
Add back the multi-gases parts that were missed
XiaqiongZhou-NOAA Feb 13, 2020
79ec560
Fixes for the multi_gases option
XiaqiongZhou-NOAA Mar 12, 2020
a2ca9a9
Merge EMC fork dev/emc branch
XiaqiongZhou-NOAA Mar 30, 2020
426d49e
updates needed for fms2_io as for GFDL
XiaqiongZhou-NOAA Mar 31, 2020
96c7c3c
Bug fix for two-way nest updating (#21)
XiaqiongZhou-NOAA Apr 16, 2020
4af1c79
Fixes for 2-way nesting bug fix
XiaqiongZhou-NOAA Apr 20, 2020
1d7b246
merge the EMC:emc/dev
XiaqiongZhou-NOAA May 4, 2020
0fbd13f
Fixes needed after merged EMC: dev/emc branch
XiaqiongZhou-NOAA May 5, 2020
88b655f
Change initial TKE=0 when TKE is absent in external ICs
XiaqiongZhou-NOAA May 12, 2020
ee8a899
Merge NOAA-EMC dev/emc branch
XiaqiongZhou-NOAA May 13, 2020
593616a
Fix an error in fv_regional_bc.F90; Delete unnecessary files
XiaqiongZhou-NOAA May 15, 2020
8ac2d70
Update boundary.F90
XiaqiongZhou-NOAA May 17, 2020
34748d9
Fixes to write sensible temperature in BCs correctly to the new resta…
XiaqiongZhou-NOAA Jun 4, 2020
06b1f3c
Merge remote-tracking branch 'EMC-dev/dev/emc' into dev/emc
XiaqiongZhou-NOAA Jun 8, 2020
dbcc271
Revise Atm(n)tile to Atm(n)tile_of_mosaic
XiaqiongZhou-NOAA Jun 8, 2020
9f9aa32
Merge remote-tracking branch 'emc/dev/emc' into dev/emc
XiaqiongZhou-NOAA Jun 11, 2020
118bd76
Merge GFDL dev/emc
XiaqiongZhou-NOAA Jun 11, 2020
746ccde
Update the namelist description corresponding to the FV3 dycore merg…
XiaqiongZhou-NOAA Jun 12, 2020
b06ac04
Merge remote-tracking branch 'EMC/dev/emc' into dev/emc
XiaqiongZhou-NOAA Sep 11, 2020
4e34f2d
Merge pull request #53 from XiaqiongZhou-NOAA/dev/emc
bensonr Sep 15, 2020
63521c5
Modify the halo extents of u and vt in the regional_boundary_update c…
chan-hoo Sep 23, 2020
27cc6ab
Merge pull request #54 from chan-hoo/feature/regional_bc_update
bensonr Sep 24, 2020
2cbdb7c
Merge pull request #38 from DusanJovic-NOAA/merge_gfdl_dev_emc
DusanJovic-NOAA Sep 24, 2020
673243e
Modify the halo extents of u and vt in the regional_boundary_update c…
bensonr Sep 25, 2020
4e2d46c
Merge pull request #57 from NOAA-GFDL/ufs-release/public-v2
bensonr Sep 28, 2020
cb1760a
Revert "merge ufs-release/public-v2 -> dev/emc"
bensonr Sep 28, 2020
7ccf953
Merge pull request #58 from NOAA-GFDL/revert-57-ufs-release/public-v2
bensonr Sep 28, 2020
2ec76f8
Merge pull request #40 from NOAA-GFDL/dev/emc
DusanJovic-NOAA Sep 30, 2020
7d52492
Merge branch 'dev/emc' of https://github.com/NOAA-EMC/GFDL_atmos_cube…
climbfuji Oct 1, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions docs/AdvectionOperators.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
A Brief Guide to Advection Operators in FV³ {#advection}
========================

By:

**Lucas Harris, Shian-Jiann Lin, and Xi Chen, GFDL**

*17 August 2018*

FV³ is unique among atmospheric dynamical cores in that it is formulated similarly to CFD solvers which treat most processes as the fluxes of some conserved quantity. With the exception of the pressure gradient force, all of the terms in the inviscid Euler equations, formulated along Lagrangian surfaces, can be expressed as fluxes. The fluxes are evaluated through the Lin & Rood (1996) FV advection scheme, extended to the cubed sphere by Putman and Lin (2007), based on a two-dimensional combination of one-dimensional flux operators. The operators in the most recent version of FV³ all use the piecewise-parabolic method (Collella and Woodward 1984), although this method gives great flexibility in choosing the subgrid reconstructions used to evaluate the fluxes.FV³

Some understanding of finite-volume methods is necessary to understand the operators. A true finite-volume method treats all variables as cell-mean values, instead of point values. (Fluxes and winds are treated as face-mean values.) To compute the fluxes, a ​reconstruction​ function describing an approximation to the (unknown) subgrid distribution of each variable is needed. In PPM, this reconstruction is a quadratic function, specified by the cell mean value and the values on the interfaces of the cells. The cell-interface values are derived by computing a high-order interpolation from the cell-mean values to point values on the interfaces. The reconstructions can then be altered by various means to enforce different shape preservation properties, such as monotonicity or positivity, by looking at the cell-mean and cell-interface values of the surrounding cells. This process, called ​limiting​ is a ​non-linear​ method, allowing us to create a high-order monotone solution without violating Godunov’s Theorem. (This should not be confused with flux-corrected transport, or FCT, a simpler means of enforcing monotonicity)

Monotonicity means that the reconstructions are chosen to ensure that no new extrema appear in the variable, in the absence of flow convergence or divergence. This is a property of scalar advection in real flows, and prevents the appearance of unphysical oscillations, or over- and under-shoots (which can create spurious condensates or unphysically rapid chemical reactions). Monotonicity also prevents the appearance of negative values in positive-definite mass scalars, which can rapidly lead to numerical instability. However, the stronger the enforcement of monotonicity, the more diffusive the solution is, so other techniques, such as schemes which only enforce positivity, or simple reconstruction filters.

Here we briefly describe three PPM operators, all formally the same fourth-order accuracy but with different reconstruction limiters: An unlimited (also called linear) “fifth-order” operator (hord = 5), an unlimited operator with a 2dx filter (hord = 6), and the monotone Lin 2004 operator (hord = 8). We also describe the optional positive-definite limiter which can be applied to methods 5 and 6, which is essential for scalar advection (hord_tr). ​The number indicated by hord is only the selection amongst a series of schemes, ​similar to how different numbers in the physics correspond to different schemes. ​They do not change the order of accuracy of the advection, only the diffusivity and shape-preserving characteristics.Hord = 5 is the “linear” or “unlimited” scheme originally devised by Collella and Woodward, modified with a weak 2dx filter: if the cell-interface values show a 2dx signal (that is, that the interpolated interface values on opposing sides of a cell switch between greater than and less than the cell-mean value) the flux is evaluated as a first-order upwind value. The 2dx filter is necessary to suppress 2dx noise; without this filter the solver is more prone to instability. Hord = 6 uses a much stronger 2dx filter: the hord = 5 method is extended by reverting to first-order upwind flux if the difference in cell-interface values exceeds the mean of the two interface values by a tunable threshold (1.5x by default).

The optional positive-definite limiter is activated by adding a minus sign to hord (for values <= 6). This forces all cell-interface values to be no more than 0, ensuring a positive-definite flux. The positive-definite hord = 5 further applies the positive-definite constraint of Lin and Rood (1996).

35 changes: 35 additions & 0 deletions docs/Chapter1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
FV&sup3; Introduction {#introduction}
============

##Chapter 1

###1.1 A brief history of FV&sup3;


FV&sup3; is a natural evolution of the hydrostatic Finite-Volume dynamical core (FV core) originally developed in the 90s on the latitude-longitude grid. The FV core started its life at NASA/Goddard Space Flight Center (GSFC) during early and mid 90s as an offline transport model with emphasis on the conservation, accuracy, consistency (tracer to tracer correlation), and efficiency of the transport process. The development and applications of monotonicity preserving Finite-Volume schemes at GSFC were motivated in part by the need to have a solution for the noisy and unphysical negative water vapor and chemical species (L94, LR96). It subsequently has been used by several high-profile Chemistry Transport Models (CTMs), including the NASA community GMI model (Rotman et al., 2001, J. Geophys. Res.), GOCART (Chin et al., 2000, J. Geophys. Res.), and the Harvard University-developed GEOS-CHEM community model (Bey et al, 2001, , J. Geophys. Res.). This transport module has also been used by some climate models, including the ECHAM5 AGCM (Roeckner et al, 2003, MPI-Report No. 349). Motivated by the success of monotonicity-preserving FV schemes in CTM applications, a consistently-formulated shallow-water model was developed. This solver was first presented at the 1994 PDE on the Sphere Workshop, and published in LR97. The Lin-Rood algorithm for shallow-water equations maintains mass conservation and a key Mimetic property of “no false vorticity generation”, and for the first time in computational geophysical fluid dynamics, uses high-order monotonic advection consistently for momentum and all other prognostic variables, instead of the inconsistent hybrid finite difference and finite-volume approach used by practically all other “finite volume” models today. The full 3D hydrostatic dynamical core, the FV core, was constructed based on the LR96 transport algorithm and the Lin-Rood shallow-water algorithm (LR97). The pressure gradient force is computed by the L97 finite-volume integration method, derived from Green’s integral theorem and based directly on first principles, and demonstrated errors an order of magnitude smaller than other pressure-gradient schemes at the time. The vertical discretization is the “vertically Lagrangian” scheme described by L04, the most powerful aspect of FV&sup3;, which permits great computational efficiency as well as greater accuracy given the same vertical resolution. The FV core was implemented in the NCAR CESM model in 2001 (Rasch et al, 2006, J. Climate) and in the GFDL CM2 model in 2004 (Delworth et al, 2006, J. Climate).


The need to scale to larger number of processors in modern massively parallel environments and the scientific advantage of eliminating the polar filter led to the development of FV&sup3;, the cubed-sphere version of FV. The cubed-sphere FV&sup3; is in use in all GFDL and GSFC global models, and the cubed-sphere version of the LR96 advection scheme is used by the most recent version of GEOS-CHEM. Most recently, a computationally efficient non-hydrostatic solver has been implemented using a traditional semi-implicit approach for treating the vertically propagating sound waves. A second option for the non-hydrostatic solver, using a Riemann solver to nearly exactly solve for vertical sound-wave propagation, is also available. The Riemann solver is highly accurate and is very efficient if the Courant number for vertical sound wave propagation is small, and so may be very useful for extremely high (< 1 km) horizontal resolutions. In July 2016 this non-hydrostatic core has been selected for the Next-Generation Global Prediction System (NGGPS), paving the way for the unification of not only weather and climate models but also potentially regional and global models.


###1.2 Outline of the solver

FV&sup3; is the solver that integrates the compressible, adiabatic Euler equations in a weather or climate model. The solver is modular and designed to be called as a largely independent component of a numerical model, consistent with modern standards for model design; however for best results it is recommended that a model using FV&sup3; as its dynamical core should use the provided application programming interface (API) to invoke the solver as well as to use the provided utility routines consistent with the dynamics, particularly for the initialization, updating the model state by time tendencies from the physics, and for incorporating increments from the data assimilation system.

The leftmost column of Figure 1.1 shows the external API calls used during a typical process-split model integration procedure. First, the solver is called, which advances the solver a full “physics” time step. This updated state is then passed to the physical parameterization package, which then computes the physics tendencies over the same time interval. Finally, the tendencies are then used to update the model state using a forward-in-time evaluation consistent with the dynamics, as described in Chapter 3.

There are two levels of time-stepping inside FV&sup3;. The first is the “remapping” loop, the orange column in Figure 1.1. This loop has three steps:
-# Perform the Lagrangian dynamics, the loop shown in the green column of Figure 1.1
-# Perform the sub-cycled tracer advection along Lagrangian surfaces,using accumulated mass fluxes from the Lagrangian dynamics. Subcycling is done independently within each layer to maintain local (within each layer) stability.
-# Remap the deformed Lagrangian surfaces on to the reference, or “Eulerian”, coordinate levels.



<img src="../image/FV3flowchart.png" alt="drawing" width="800"/>

**Figure 1.1:** *FV3 structure, including subroutines and time-stepping. Blue represents external API routines, called once per physics time step; orange routines are called once per remapping time step; green routines once per acoustic time step.*

This loop is typically performed once per call to the solver, although it is possible to improve the model’s stability by executing the loop (and thereby the vertical remapping) multiple times per solver call.

The Lagrangian dynamics is the second level of time-stepping in FV&sup3;. This is the integration of the dynamics along the Lagrangian surfaces, across which there is no mass transport. Since the time step of the Lagrangian dynamics is limited by horizontal sound-wave processes, this is called the “acoustic” time step loop. (Note that the typical assumption that the advective wind speed is much slower than the sound wave speed is often violated near the poles, since the speed of the polar night jets can exceed two-thirds of the speed of sound.) The Lagrangian dynamics has two parts: the C-grid winds are advanced a half-time step, using simplified (but similarly constructed) core routines, which are then used to provide the advective fluxes to advance the D-grid prognostic fields a full time step. The integration procedure is similar for both grids: the along-surface flux terms (mass, heat, vertical momentum, and vorticity, and the kinetic energy gradient terms) are evaluated forward-in-time, and the pressure-gradient force and elastic terms are then evaluated backwards-in-time, to achieve enhanced stability.

Loading