diff --git a/README.md b/README.md index 3859ca9184..17d0383508 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -MPAS-v5.2 +MPAS-v5.3 ==== The Model for Prediction Across Scales (MPAS) is a collaborative project for diff --git a/src/core_atmosphere/Registry.xml b/src/core_atmosphere/Registry.xml index 752216937f..2336a7b030 100644 --- a/src/core_atmosphere/Registry.xml +++ b/src/core_atmosphere/Registry.xml @@ -1,5 +1,5 @@ - + @@ -1633,35 +1633,35 @@ - + - - - - - - - diff --git a/src/core_init_atmosphere/Registry.xml b/src/core_init_atmosphere/Registry.xml index fbbe4c8569..bb4d157384 100644 --- a/src/core_init_atmosphere/Registry.xml +++ b/src/core_init_atmosphere/Registry.xml @@ -1,5 +1,5 @@ - + diff --git a/src/core_init_atmosphere/mpas_init_atm_cases.F b/src/core_init_atmosphere/mpas_init_atm_cases.F index b86c4d5aba..44b5e0bd5e 100644 --- a/src/core_init_atmosphere/mpas_init_atm_cases.F +++ b/src/core_init_atmosphere/mpas_init_atm_cases.F @@ -4647,8 +4647,12 @@ subroutine init_atm_case_gfs(block, mesh, nCells, nEdges, nVertLevels, fg, state ! es = svp1*10.*exp(svp2*(t(k,iCell)-svpt0)/(t(k,iCell)-svp3)) ! es = min(es,0.99*0.01*pressure(k,iCell)) ! rs = 0.622*es*100. / (pressure(k,iCell)-es*100.) + + ! + ! Note: the RH field provided by ungrib should always be with respect to liquid water, + ! hence, we can always call rslf; see the routine fix_gfs_rh in WPS/ungrib/src/rrpr.F . + ! rs = rslf(pressure(k,iCell),t(k,iCell)) - if(t(k,iCell) .lt. svpt0) rs = rsif(pressure(k,iCell),t(k,iCell)) scalars(index_qv,k,iCell) = 0.01_RKIND*rs*relhum(k,iCell) enddo enddo diff --git a/src/core_landice/Registry.xml b/src/core_landice/Registry.xml index edab7c4c36..9de2900787 100644 --- a/src/core_landice/Registry.xml +++ b/src/core_landice/Registry.xml @@ -1,5 +1,5 @@ - + diff --git a/src/core_ocean/Registry.xml b/src/core_ocean/Registry.xml index ba2c65f36d..6c9addc4a7 100644 --- a/src/core_ocean/Registry.xml +++ b/src/core_ocean/Registry.xml @@ -1,5 +1,5 @@ - + - + diff --git a/src/core_test/Registry.xml b/src/core_test/Registry.xml index 33640eb50f..c4c4ee00cb 100644 --- a/src/core_test/Registry.xml +++ b/src/core_test/Registry.xml @@ -1,5 +1,5 @@ - + diff --git a/src/operators/mpas_vector_operations.F b/src/operators/mpas_vector_operations.F index db0da10e9f..98c526f5e0 100644 --- a/src/operators/mpas_vector_operations.F +++ b/src/operators/mpas_vector_operations.F @@ -706,21 +706,21 @@ subroutine mpas_initialize_vectors(meshPool)!{{{ ! Initialize normal unit vectors at each edge ! These vectors point from cell to cell. - ! At boundaries, one cell does not exist, so it points from cell to edge. + ! At boundaries, one cell does not exist, so it points from cell to edge or from edge to cell. do iEdge = 1,nEdges cell1 = cellsOnEdge(1,iEdge) cell2 = cellsOnEdge(2,iEdge) if (cell1 == nCells+1) then ! this is a boundary edge - ! the normal points from the cell location to the edge location + ! the normal points from the edge location to the cell location if (is_periodic) then - edgeNormalVectors(1,iEdge) = mpas_fix_periodicity(xEdge(iEdge), xCell(cell2), x_period) - xCell(cell2) - edgeNormalVectors(2,iEdge) = mpas_fix_periodicity(yEdge(iEdge), yCell(cell2), y_period) - yCell(cell2) - edgeNormalVectors(3,iEdge) = zEdge(iEdge) - zCell(cell2) + edgeNormalVectors(1,iEdge) = xCell(cell2) - mpas_fix_periodicity(xEdge(iEdge), xCell(cell2), x_period) + edgeNormalVectors(2,iEdge) = yCell(cell2) - mpas_fix_periodicity(yEdge(iEdge), yCell(cell2), y_period) + edgeNormalVectors(3,iEdge) = zCell(cell2) - zEdge(iEdge) else - edgeNormalVectors(1,iEdge) = xEdge(iEdge) - xCell(cell2) - edgeNormalVectors(2,iEdge) = yEdge(iEdge) - yCell(cell2) - edgeNormalVectors(3,iEdge) = zEdge(iEdge) - zCell(cell2) + edgeNormalVectors(1,iEdge) = xCell(cell2) - xEdge(iEdge) + edgeNormalVectors(2,iEdge) = yCell(cell2) - yEdge(iEdge) + edgeNormalVectors(3,iEdge) = zCell(cell2) - zEdge(iEdge) end if else if (cell2 == nCells+1) then ! this is a boundary edge