Skip to content

Commit 7221fbd

Browse files
committed
Merge branch 'hotfix-v5.3'
This merge corrects an issue in the computation of the initial QV field for MPAS-Atmosphere; it fixes a bug in the computation of the edgeNormalVectors field; and it corrects the units and descriptions of scalar tendencies in MPAS-Atmosphere. * hotfix-v5.3: Correct the "units" attribute for scalar tendencies in atmosphere Registry.xml Update comment describing the direction of normal vectors when cell1 == nCells+1 When deriving QV from RH, always assume RH is w.r.t. liquid water Correct the sign of edgeNormalVectors for positive inflow boundary edges Update version number to v5.3
2 parents a74c8d1 + 9156656 commit 7221fbd

File tree

9 files changed

+36
-32
lines changed

9 files changed

+36
-32
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
MPAS-v5.2
1+
MPAS-v5.3
22
====
33

44
The Model for Prediction Across Scales (MPAS) is a collaborative project for

src/core_atmosphere/Registry.xml

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0"?>
2-
<registry model="mpas" core="atmosphere" core_abbrev="atm" version="5.2">
2+
<registry model="mpas" core="atmosphere" core_abbrev="atm" version="5.3">
33

44
<!-- **************************************************************************************** -->
55
<!-- ************************************** Dimensions ************************************** -->
@@ -1633,35 +1633,35 @@
16331633

16341634
<!-- scalar tendencies -->
16351635
<var_array name="scalars_tend" type="real" dimensions="nVertLevels nCells Time">
1636-
<var name="tend_qv" name_in_code="qv" array_group="moist" units="kg kg^{-1} s^{-1}"
1637-
description="Tendency of water vapor mixing ratio"/>
1636+
<var name="tend_qv" name_in_code="qv" array_group="moist" units="kg m^{-3} s^{-1}"
1637+
description="Tendency of water vapor mass per unit volume divided by d(zeta)/dz"/>
16381638

1639-
<var name="tend_qc" name_in_code="qc" array_group="moist" units="kg kg^{-1} s^{-1}"
1640-
description="Tendency of cloud water mixing ratio"
1639+
<var name="tend_qc" name_in_code="qc" array_group="moist" units="kg m^{-3} s^{-1}"
1640+
description="Tendency of cloud water mass per unit volume divided by d(zeta)/dz"
16411641
packages="bl_mynn_in;bl_ysu_in;cu_tiedtke_in;mp_kessler_in;mp_thompson_in;mp_wsm6_in"/>
16421642

1643-
<var name="tend_qr" name_in_code="qr" array_group="moist" units="kg kg^{-1} s^{-1}"
1644-
description="Tendency of rain water mixing ratio"
1643+
<var name="tend_qr" name_in_code="qr" array_group="moist" units="kg m^{-3} s^{-1}"
1644+
description="Tendency of rain water mass per unit volume divided by d(zeta)/dz"
16451645
packages="mp_kessler_in;mp_thompson_in;mp_wsm6_in"/>
16461646

1647-
<var name="tend_qi" name_in_code="qi" array_group="moist" units="kg kg^{-1} s^{-1}"
1648-
description="Tendency of ice mixing ratio"
1647+
<var name="tend_qi" name_in_code="qi" array_group="moist" units="kg m^{-3} s^{-1}"
1648+
description="Tendency of ice mass per unit volume divided by d(zeta)/dz"
16491649
packages="bl_mynn_in;bl_ysu_in;cu_tiedtke_in;mp_thompson_in;mp_wsm6_in"/>
16501650

1651-
<var name="tend_qs" name_in_code="qs" array_group="moist" units="kg kg^{-1} s^{-1}"
1652-
description="Tendency of snow ratio"
1651+
<var name="tend_qs" name_in_code="qs" array_group="moist" units="kg m^{-3} s^{-1}"
1652+
description="Tendency of snow mass per unit volume divided by d(zeta)/dz"
16531653
packages="mp_thompson_in;mp_wsm6_in"/>
16541654

1655-
<var name="tend_qg" name_in_code="qg" array_group="moist" units="kg kg^{-1} s^{-1}"
1656-
description="Tendency of graupel mixing ratio"
1655+
<var name="tend_qg" name_in_code="qg" array_group="moist" units="kg m^{-3} s^{-1}"
1656+
description="Tendency of graupel mass per unit volume divided by d(zeta)/dz"
16571657
packages="mp_thompson_in;mp_wsm6_in"/>
16581658

1659-
<var name="tend_ni" name_in_code="ni" array_group="number" units="nb kg^{-1} s^{-1}"
1660-
description="Tendency of cloud ice number concentration"
1659+
<var name="tend_ni" name_in_code="ni" array_group="number" units="nb m^{-3} s^{-1}"
1660+
description="Tendency of cloud ice number concentration multiplied by dry air density divided by d(zeta)/dz"
16611661
packages="bl_mynn_in;mp_thompson_in"/>
16621662

1663-
<var name="tend_nr" name_in_code="nr" array_group="number" units="nb kg^{-1} s^{-1}"
1664-
description="Tendency of rain number concentration"
1663+
<var name="tend_nr" name_in_code="nr" array_group="number" units="nb m^{-3} s^{-1}"
1664+
description="Tendency of rain number concentration multiplied by dry air density divided by d(zeta)/dz"
16651665
packages="mp_thompson_in"/>
16661666
</var_array>
16671667
</var_struct>

src/core_init_atmosphere/Registry.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0"?>
2-
<registry model="mpas" core="init_atmosphere" core_abbrev="init_atm" version="5.2">
2+
<registry model="mpas" core="init_atmosphere" core_abbrev="init_atm" version="5.3">
33

44
<!-- **************************************************************************************** -->
55
<!-- ************************************** Dimensions ************************************** -->

src/core_init_atmosphere/mpas_init_atm_cases.F

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4647,8 +4647,12 @@ subroutine init_atm_case_gfs(block, mesh, nCells, nEdges, nVertLevels, fg, state
46474647
! es = svp1*10.*exp(svp2*(t(k,iCell)-svpt0)/(t(k,iCell)-svp3))
46484648
! es = min(es,0.99*0.01*pressure(k,iCell))
46494649
! rs = 0.622*es*100. / (pressure(k,iCell)-es*100.)
4650+
4651+
!
4652+
! Note: the RH field provided by ungrib should always be with respect to liquid water,
4653+
! hence, we can always call rslf; see the routine fix_gfs_rh in WPS/ungrib/src/rrpr.F .
4654+
!
46504655
rs = rslf(pressure(k,iCell),t(k,iCell))
4651-
if(t(k,iCell) .lt. svpt0) rs = rsif(pressure(k,iCell),t(k,iCell))
46524656
scalars(index_qv,k,iCell) = 0.01_RKIND*rs*relhum(k,iCell)
46534657
enddo
46544658
enddo

src/core_landice/Registry.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0"?>
2-
<registry model="mpas" core="landice" core_abbrev="li" version="5.2">
2+
<registry model="mpas" core="landice" core_abbrev="li" version="5.3">
33

44

55
<!-- ======================================================================= -->

src/core_ocean/Registry.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0"?>
2-
<registry model="mpas" core="ocean" core_abbrev="ocn" version="5.2">
2+
<registry model="mpas" core="ocean" core_abbrev="ocn" version="5.3">
33

44
<dims>
55
<dim name="nCells" units="unitless"

src/core_sw/Registry.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0"?>
2-
<registry model="mpas" core="sw" core_abbrev="sw" version="5.2">
2+
<registry model="mpas" core="sw" core_abbrev="sw" version="5.3">
33
<dims>
44
<dim name="nCells"/>
55
<dim name="nEdges"/>

src/core_test/Registry.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0"?>
2-
<registry model="mpas" core="test" core_abbrev="test" version="5.2">
2+
<registry model="mpas" core="test" core_abbrev="test" version="5.3">
33
<dims>
44
<dim name="nCells"/>
55
<dim name="nEdges"/>

src/operators/mpas_vector_operations.F

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -706,21 +706,21 @@ subroutine mpas_initialize_vectors(meshPool)!{{{
706706

707707
! Initialize normal unit vectors at each edge
708708
! These vectors point from cell to cell.
709-
! At boundaries, one cell does not exist, so it points from cell to edge.
709+
! At boundaries, one cell does not exist, so it points from cell to edge or from edge to cell.
710710
do iEdge = 1,nEdges
711711
cell1 = cellsOnEdge(1,iEdge)
712712
cell2 = cellsOnEdge(2,iEdge)
713713

714714
if (cell1 == nCells+1) then ! this is a boundary edge
715-
! the normal points from the cell location to the edge location
715+
! the normal points from the edge location to the cell location
716716
if (is_periodic) then
717-
edgeNormalVectors(1,iEdge) = mpas_fix_periodicity(xEdge(iEdge), xCell(cell2), x_period) - xCell(cell2)
718-
edgeNormalVectors(2,iEdge) = mpas_fix_periodicity(yEdge(iEdge), yCell(cell2), y_period) - yCell(cell2)
719-
edgeNormalVectors(3,iEdge) = zEdge(iEdge) - zCell(cell2)
717+
edgeNormalVectors(1,iEdge) = xCell(cell2) - mpas_fix_periodicity(xEdge(iEdge), xCell(cell2), x_period)
718+
edgeNormalVectors(2,iEdge) = yCell(cell2) - mpas_fix_periodicity(yEdge(iEdge), yCell(cell2), y_period)
719+
edgeNormalVectors(3,iEdge) = zCell(cell2) - zEdge(iEdge)
720720
else
721-
edgeNormalVectors(1,iEdge) = xEdge(iEdge) - xCell(cell2)
722-
edgeNormalVectors(2,iEdge) = yEdge(iEdge) - yCell(cell2)
723-
edgeNormalVectors(3,iEdge) = zEdge(iEdge) - zCell(cell2)
721+
edgeNormalVectors(1,iEdge) = xCell(cell2) - xEdge(iEdge)
722+
edgeNormalVectors(2,iEdge) = yCell(cell2) - yEdge(iEdge)
723+
edgeNormalVectors(3,iEdge) = zCell(cell2) - zEdge(iEdge)
724724
end if
725725

726726
else if (cell2 == nCells+1) then ! this is a boundary edge

0 commit comments

Comments
 (0)