Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge seaice/develop into cice/icebergs #8

Open
wants to merge 2,402 commits into
base: cice/icebergs
Choose a base branch
from

Conversation

darincomeau
Copy link
Owner

This PR merges seaice/develop 70a3396 into cice/icebergs.

Initial commit resolves conflicts only. Code does not compile.

Adrian K. Turner and others added 30 commits March 13, 2018 12:55
Consequentially removes memory leak in halo reuse.
Consequentially removes memory leak in halo reuse.
According to comment in #1501 config_pool entries created in halo
exchanges are no longer used and can be removed. Config_pool entries
when ported to halo data structure reuse also cause a memory leak.

According to comment in #1502 the code builds and passes testing.
According to comment in #1501 config_pool entries created in halo
exchanges are no longer used and can be removed. Config_pool entries
when ported to halo data structure reuse also cause a memory leak.

According to comment in #1502 the code builds and passes testing.
This merge moves the 'm_hybi' and 'm_ps' fields to the 'diag_physics' pool.
Previously, 'm_ps' was in the 'state' pool, and 'm_hybi' was in the 'mesh'
pool. The new location of these fields better fits with their role in the model,
since 'm_ps' really isn't part of the model prognostic state, and 'm_hybi'
isn't part of the MPAS mesh description.

* atmosphere/move_m_ps_and_m_hybi:
  Move 'm_hybi' and 'm_ps' to the 'diag_physics' pool

Conflicts:
	src/core_atmosphere/physics/mpas_atmphys_camrad_init.F
	src/core_atmosphere/physics/mpas_atmphys_driver_radiation_lw.F
	src/core_atmosphere/physics/mpas_atmphys_driver_radiation_sw.F
	src/core_atmosphere/physics/mpas_atmphys_init.F
This merge removes the unused physics_addtend routine with no change to results.

Prior to the MPAS v5.0 release, the physics_addtend routine was replaced by
the physics_get_tend routine in order to allow us to obtain tendencies from
physics schemes only once per full dynamics step. When the physics_get_tend
routine was introduced, the physics_addtend routine was left in
the mpas_atmphys_todynamics.F file. We can now safely remove this routine.

* atmosphere/remove_physics_addtend:
  Remove unused 'physics_addtend' routine

Conflicts:
	src/core_atmosphere/physics/mpas_atmphys_todynamics.F
* develop:
  Remove calls to config pool from halo exchanges.
  Fix PEP8 in COMPASS output scripts
  Break lines longer than 79 char. into multiple lines
  Modify white space for PEP8 compliance
  Add vim mode line
  Remove "naked" except statements
  Remove semicolons and the end of lines
  Change from % string formatting to .format() syntax
  break imports into single lines
  Change not {exp1} == {exp2} to {exp1} != {exp2}
  Change tabs to spaces in COMPASS scripts
  Add timing capability for test cases
* develop:
  Remove calls to config pool from halo exchanges.
  Fix PEP8 in COMPASS output scripts
  Break lines longer than 79 char. into multiple lines
  Modify white space for PEP8 compliance
  Add vim mode line
  Remove "naked" except statements
  Remove semicolons and the end of lines
  Change from % string formatting to .format() syntax
  break imports into single lines
  Change not {exp1} == {exp2} to {exp1} != {exp2}
  Change tabs to spaces in COMPASS scripts
  Add timing capability for test cases
Runs using these two fields were incorrect on restart.
If the BMB field exists in places where the ice is grounded, the current
analysis member calculations related to floatingBasalMassBal will
include those values in the calculation.  This commit restricts the
calculation of related stats to just floating ice.

In the long term, it would be more accurate to add a new model field
(e.g. floatingBasalMassBalApplied) that stores only what value was
actually applied - this would also catch against the situation where the
prescribed BMB was greater than the amount of ice in a cell.  Similar
terms for SMB should be added.
Conservation check in the thermal solver has been changed from an error
to a warning.

The conservation check in vertical_remap was already a warning but
included a 'stop' command which caused the model to hang in a
confusing-to-interpret way, making a horrible bug.  The 'stop' statement
is removed.
…ions

Current definition only includes grounded ice to floating ice.
This routine checks the velocity field after the solve is complete.  Any
ice moving faster than 100,000 m/yr is assumed to be an iceberg and
removed.  The removed ice is sent to calving.
After eigencalving is complete, remove cells that now have less than a
certain thickness threshold left.  This was found to be needed to obtain
calving fronts that don't oscillate wildly and creep up the coast.  This
addition to eigencalving is mentioned in Feldman & Levermann, PNAS (2015).
The regional stats calving flux calculation was incorrectly applying a
mask for current ice exent.  Most places with calving no longer have ice
by the end of the time step, so those locations would be excluded from
this calculation!  This fix remove that mask from the calculation.
…ded ice

This commit includes a number of minor but significant adjustments to
the eigencalving functionality.
1. Change thickness-threshold to only apply to cells on the calving front.  This required
updating the geometry and mask before applying the thickness threshold. That in turn
required rearranging how the data-calving option is implemented in the calving module,
because eigencalving needs to make multiple 'passes' of calving,
applying it to the thickness and mask each time.
2. Mask definitions in the mask and calving modules have been updated.
Specifically, if a dynamic floating margin is adjacent to non-ice land,
then it should not be treated as a calving margin.  Before this fix,
holes were developing in shelves near the grounding line in some place
of relatively stagnant flow.  Once established, these holes would
eventually grow to consume the entire shelf from the inside out.
3. Eigencalving now includes an operation to remove abandoned floating
ice that can get cut off from the shelf (i.e. icebergs).  The cleanup
operation is not completely effective at removing icebergs immediately,
but in practice find most of them, and what it does not find immediately
is often garbage collected later as they thin from basal melting.

All of these changes were required to get AIS 20km spinups with
eigencalving to behave stably and reasonably.
This merge corrects an error in deriving the water vapor mixing ratio field (QV)
from relative humidity (RH) for real-data cases.

Under the assumption that real-data intermediate files were produced by
the WPS's ungrib program, we should always assume that the RH field is
with respect to liquid water, since this is what WRF's real.exe program assumes
and what the WPS ungrib.exe produces.

Thanks to The Weather Company for uncovering this issue.

* atmosphere/fix_RH_wrt_liquid_water:
  When deriving QV from RH, always assume RH is w.r.t. liquid water
…== nCells+1

Following the changes in the previous commit, the comment describing
the computation of the edge normal direction when cell1 == nCells+1 needed
to be updated to correctly state that the normal vector points from the edge
location to the cellsOnEdge(2,iEdge) (i.e., "cell2") location.
One script is used to set the values of the eigencalving parameter,
either by calibration from an existing output file or with specified
uniform values per region.

The other script was used to create plots of spin-up time-series used in
the description paper.
This merge corrects the sign of edgeNormalVectors for positive inflow boundary edges.

For edges that represent positive normal inflow along the boundary of a mesh,
i.e., for edges where (cellsOnEdge(1,iEdge) == nCells+1), the mpas_initialize_vectors
subroutine had incorrectly computed the value of the edgeNormalVectors field due
to the transposition of the iEdge and cell2 locations in the difference.

* framework/fix_edgeNormalVectors_sign:
  Update comment describing the direction of normal vectors when cell1 == nCells+1
  Correct the sign of edgeNormalVectors for positive inflow boundary edges
…istry.xml

The "units" attribute for scalar tendencies (e.g., tend_qv, tend_qc, etc.) in
the Registry.xml file incorrectly identified these fields as being specified
in kg kg^{-1} s^{-1}, when in fact the units are kg m^{-3} s^{-1}. Further,
these tendencies are divided by d(zeta)/dz, so that the meters in the units
refer to meters in the computational grid rather than the physical grid.

Note that current physics schemes in MPAS return scalar tendencies in
kg kg^{-1} s^{-1}, and these are converted to units of kg m^{-3} s^{-1}
in the physics_get_tend routine by multiplication by rho_zz.

This commit only addresses the previously incorrect units and description
attributes in the Registry.xml file; there is no impact on model results.
This merge corrects the "units" and "description" attributes for scalar tendencies
in the atmosphere core's Registry.xml file.

The "units" attribute for scalar tendencies (e.g., tend_qv, tend_qc, etc.) in
the Registry.xml file incorrectly identified these fields as being specified in
kg kg^{-1} s^{-1}, when in fact the units are kg m^{-3} s^{-1}. Further, these
tendencies are divided by d(zeta)/dz, so that the meters in the units refer to
meters in the computational grid rather than the physical grid.

Note that current physics schemes in MPAS return scalar tendencies in
kg kg^{-1} s^{-1}, and these are converted to units of kg m^{-3} s^{-1}
in the physics_get_tend routine via multiplication by rho_zz.

This merge only fixes the previously incorrect units and description
attributes in the Registry.xml file; there is no impact on model results.

* atmosphere/fix_scalar_tend_units:
  Correct the "units" attribute for scalar tendencies in atmosphere Registry.xml
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
amametjanov and others added 20 commits December 20, 2018 23:04
…eanup' into azamat/seaice/improve-threading-fluxes (PR amametjanov#1)

Moved tracer arrays out of the tracer object for clarity.
…meau/cice/icebergs/seaice_develop_merge_20190404. Minimal changes made to resolve conflicts. Does not compile.
@darincomeau darincomeau added WIP work in progress don't merge do not merge labels Apr 4, 2019
@darincomeau darincomeau self-assigned this Apr 4, 2019
@darincomeau
Copy link
Owner Author

Code now compiles and passes standard_physics testsuite; fails icebergs testsuite.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
don't merge do not merge WIP work in progress
Projects
None yet
Development

Successfully merging this pull request may close these issues.