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

WIP: First attempt to add a generic tracer to OBC scheme #4

Open
wants to merge 147 commits into
base: dev/gfdl
Choose a base branch
from

Conversation

nikizadehgfdl
Copy link
Owner

  • This commit is the first attempt to add a (generic) tracer to the OBC.
  • The tracer "gtr1" is added from the ocean_bgc module generic_CFC.F90
  • It is to imitate "salt" as if it was a passive tracer.

nikizadehgfdl and others added 30 commits June 4, 2020 13:06
- This commit is the first attempt to add a (generic) tracer to the OBC.
- The tracer "gtr1" is added from the ocean_bgc module generic_CFC.F90
- It is to imitate "salt" as if it was a passive tracer.
- We always intended to use links so that we were not maintaining code
  that did not belong to us. `listpaths` used to not work as expected
  so Niki had placed copies here when adding TEOS10. Using links also
  avoids any license conflicts.
- Removed two git submodules and added bare interfaces to
  config_src/exernal/ODA_hooks/
- Added some missing documentation
- Updated Doxygen configuration to find files in config_src/external
- This version of FMS is a prerequisite to updating calls to FMS ready to
  try FMS2 I/O behind NOAA-GFDL/SIS2#117 and mom-ocean#1033
- The -B option forced make to make all targets. This was to ensure
  that everything was remade when work in a shared work space which
  is no longer the case. We always have a clean work space in these
  tests and in order to invoke make twice to handle srun errors we
  can't use the -B option anymore.
- Adding domain position arguments to diag_axis_init calls
Moved hooks from pkg to external
…testing

Use FMS tag 2019.01.02 in .testing
Due to unpredictable conflicts with flags, the realization that flag
testing would launch jobs on Slurm environment, and the fact that Slurm
launchers, OpenMPI, and MPICH all appear to pass environment variables
on default, we now just assume that "env=val $(MPIRUN)" will pass an
environment variable to the MPI job in all cases.

This may not be true on all systems, but for now we will assume this
works.
…MS2019.01.02

This is the minimum required update to use 2020.01 FMS & FMScoupler
  Corrected halo size in density derivative calculations in smoothed_dRdT_dRdS
This fixes an i-parallelization problem that was recently introduced (as a part
of MOM6 PR#1089) when VERTEX_SHEAR is True, and closes MOM6 issue mom-ocean#1146.  All
answers in the existing MOM6-examples test suite are bitwise identical, but this
does change (correct) answers when VERTEX_SHEAR is true.
- FMS2020 has newer cpu affinity work. These are mostly to fix the
  issues with thread placing and  hyperthreadng under slurm on gaea.
  But it also works on Orion.
- The new affinity module simplifies the thread-placing calls in the
  component models.
- The name of some functions has changed, that's the reason for crashes
  like:
      FATAL: input domain does not have an io_domain.
- This update fixes those issues.
- openmp runs with 1 and 2 threads gives the same answers as non-openmp
- NOTE: I don't rememer why we put the thread placing calls in MOM_domains.F90
        They look as unnecessary and the whole #ifndef NOT_SET_AFFINITY block
        can probably be removed. ocean_nthreads is either set in coupler
or solo_driver.
…_halo

(*)Corrected halo size in EOS call if VERTEX_SHEAR=T
marshallward and others added 25 commits July 30, 2020 10:56
The current OBC segment list includes a "segment zero" which corresponds
to when the segment maps (segnum_u, segnum_v) point to OBC_NONE, which
is set to zero.

The purpose of this "segment zero" seems to be for avoiding invalid
references, so that OBC%segment(OBC%segnum_[uv](i,j)) always returns a
valid result, included when set to OBC_NONE.  This results in reading
and setting values which are unused or unneeded.

This patch replaces these redundant accesses to segment zero with
various conditional blocks for avoiding these accesses.
There were a few remaining segnum_[uv] references in MOM_open_boundary
which could reference segment zero.  This patch fixes those references.
  Improve the handling of very thin layers in make_frazil.  This does not change
answers for typical values of ANGSTROM, but can avoid problems that can arise
when ANGSTROM=0.  All answers in the existing MOM6-examples test cases are
bitwise identical.
  Improved handling of massless layers in the calculation of the advective CFL
numbers used in PPM tracer advection by using an Adcroft reciprocal instead of
adding a small value in the denominator.  Although all answers are bitwise
identical in the existing MOM6-examples test cases, this can avoid problems
with tracer advection when ANGSTROM is 0 or very small like those that were
recently found in analogous SIS2 code.
  Revised module use statements and some infrastructure calls to go via the
MOM6 framework directory rather than directly calling FMS infrastructure
routines.  All answers are bitwise identical.
  Set dSV_dT and dSV_dS if present in applyBoundaryFluxesInOut, even if boundary
fluxes are not associated.  With this change, setting BUOY_CONFIG='NONE' and
BUOY_CONFIG='zero' both work and give similar (but not identical) answers in
some test cases with an ePBL boundary layer parameterization, whereas before
answers were tainted with uninitialized values when BUOY_CONFIG='NONE'.  All
answers in the existing MOM6-examples test suite are bitwise identical, but
answers can change in other cases.
  Corrected a horizontal indexing bug in int_density_dz_linear that caused the
ISOMIP/layer test case to fail.  This bug was first introduced with PR#732 on
March 8, 2018.  This bug fix will change answers with a linear equation of state
and the finite volume pressure gradient force, however it does not change any of
the verified answers in the MOM6-examples regression suite.
Infrastructure calls via framework directory
…_CFL

(*)Improve advective CFL calculation with tiny h
(*)Fix code problems that appear in ISOMIP cases
…seg_data

Move call to initialize_segment_data to MOM_state_initialization
- This update queries the obgc modules (generic_tracers) for the
  OBC source files and var names for each generic tracers and
  initializes the segment fields accoringly.
- With this update the obgc tracers should NOT appear in OBC_SEGMENT_XXX_DATA
  in MOM parameter files (MOM_override).
- The default source file name is obgc_obc.nc
- The default source file var name is the generic_tracer name
- These can be overriden by field_table mechanism. E.g.,

"namelists","ocean_mod","generic_CFC"
cfc11_obc_src_field_name = salt
cfc12_obc_src_field_name = salt
/
- This update adds OBC reservoirs for all obgc tracers that are
registered to have OBC.
- This fixes restart issue with obgc tracers in test runs
nikizadehgfdl pushed a commit that referenced this pull request Apr 30, 2021
nikizadehgfdl pushed a commit that referenced this pull request Apr 30, 2021
Update CPT fork of MOM6 to latest (12/10/2020) from NOAA-GFDL
nikizadehgfdl pushed a commit that referenced this pull request Apr 30, 2021
Only write checksums from root PE MCT/NUOPC caps
- These are some fixes towards understanding the restart issue for OBC
models.
- Also, introduce a time period for OBC_segment update
nikizadehgfdl pushed a commit that referenced this pull request Jan 7, 2022
Correct a couple of typos in hor_visc
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants