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

Adds first version of the MCT driver #578

Merged
merged 62 commits into from
Aug 17, 2017
Merged

Conversation

gustavo-marques
Copy link
Collaborator

Summary of commits:

  • config_src/mct_driver/ocn_comp_mct.F90 - Adds the main driver for MOM6 in CIME. This module 1) initializes, 2) runs, and 3) finalizes MOM6 via the CESM framework. The model successfully run for one month using CORE forcing. There are mismatches between MCT and MOM6 in terms of ice ocean boundary fluxes that need to be accounted in the future. These have been documented in the code. We have followed MOM6 code style guide and the module has been Doxygenized.

Changes on existent MOM6 modules

  • config_src/coupled_driver/ocean_model_MOM.F90 - Adds a subroutine that returns pointers to objects within ocean_state_type;

  • src/core/MOM_grid.F90 - Adds a subroutine that returns global shape of horizontal grid;

  • src/framework/MOM_domains.F90 - Adds a subroutine that returns the global shape of h-point arrays;

  • src/initialization/MOM_coord_initialization.F90 - Fixes gprime(1) when no layer coordinates are set.

  • src/initialization/MOM_state_initialization.F90 - Adds option to read initial temp and salt from separate files;

  • src/ice_shelf/MOM_ice_shelf.F90 - Removes frazil's contribution to evaporation. Frazil formation was being converted to surface layer evaporation under ice shelves and this was double counting the effect of frazil on the system;

  • src/parameterizations/lateral/MOM_hor_visc.F90 - Avoids a SEGV when OBC are not in use with bi-harmonic friction.

gustavo-marques and others added 30 commits June 23, 2017 13:48
Frazil formation was being converted to surface layer evaporation under ice sheves and this was double counting the effect of frazil on the system.
Removes frazil's contribution to evaporation
This commit adds the option to read initial temperature and salinity
fields from separate z-space input files. Before, both T and S had
to be in the same file. The input parameter TEMP_SALT_Z_INIT_FILE is
kept, so previous configurations do not to be changed. Two new
parameters are introduced (TEMP_Z_INIT_FILE and SALT_Z_INIT_FILE).

Answers should not change.
 Adds option to read initial temp and salt from separate files
committing pull request #2 to dev/ncar branch
Added coupler indices module
- get_global_shape() returns niglobal, njglobal from domain type.
- get_global_grid_shape() returns niglobal, njglobal by calling
  get_global_shape().
- This avoids exposing members inside opaque types otherwise needed
  for initializing under MCT.
- To initialize within the MCT coupler we need access to members
  of ocean_state_type which are private. This method allows us
  to have local pointers to those members.
First version with working initialization routine
- In keeping with MOM6 style guide, all module use statements
  now have "only" and each imported entity is explicitly listed.
- something we'll get in the habit of doing...
- Add place holders and diagnostics of time types
Adds placeholders for stepping foward MOM
- To later facilitate MOM doing the time-averaging within the
  DT_FORCING time-step, we need to use the ocean_public_type when
  export surface state to the MCT coupler.
- Removes a buffer array inspired by POP interface.
- Removes the time-averaging routine we wrote that worked on the
  POP-like buffer.
- The ocean_public_type uses global indexing without halos.
gustavo-marques and others added 21 commits July 26, 2017 11:11
- If OBC is not associated, the if expression could lead to a segmentation
  violation even when apply_OBC is false.
- No answer changes.
- The "none" option for COORD_CONFIG literally did nothing which
  meant that Rlay and gprime were unset (they actually appeared to
  be zero).  This mode was added with the intent that the model
  should not need these coordinate variables in ALE mode. However,
  gprime(k=1) is used and should be set to GFS, which this commit
  now does.
- I also added "ALE" as an option for COORD_CONFIG which is
  equivalent to "none" since "ALE" is bit more intuitive.
  - We might even use this as a master switch or check that
    COORD_CONFIG is consistent with USE_REGRIDDING (for later)?
- This commit "appears" to changes answers but I don't think it
  does. What changes is the calculation of energy for some
  experiments in which Rlay was not set before this commit.
  A non-zero gprime(1) produces different APEs.
  Experiments affected are:
    - CVmix_SCM_tests/cooling_only/EPBL
    - CVmix_SCM_tests/cooling_only/KPP
    - CVmix_SCM_tests/mech_only/EPBL
    - CVmix_SCM_tests/mech_only/KPP
    - CVmix_SCM_tests/skin_warming_wind/EPBL
    - CVmix_SCM_tests/skin_warming_wind/KPP
    - CVmix_SCM_tests/wind_only/EPBL
    - CVmix_SCM_tests/wind_only/KPP
    - SCM_idealized_hurricane
    - single_column/EPBL
    - single_column/KPP
    - unit_tests
  All the above have COORD_CONFIG="none".
Merging latest dev/master into dev/ncar
Some code got that I added in MOM_state_initialization.F90 was lost during the merge with dev/master. This PR fixes that.

* adds do_not_log=just_read
* doxygenizes new variables
* passes all MOM-examples/ocean_only tests on Cheyenne
Adds code that got lost during merge
Updates IOB fluxes and adds option to write restart files
Copy link
Collaborator

@adcroft adcroft left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a PR from NCAR to dev/master. dev/master is currently using a different version of FMS so testing this PR requires a clean build.

  • Answers change (see below);
  • MOM_parameter_docs are affected due to some new FROM_Z_INIT parameters.

Commit be46fee is cherry-picked from dev/gfdl and changes the apparent answers due to a change in definition of energy (this commit set gprime to non-zero in ALE mode).

  • Affected experiments are logged in the be46fee commit message;
  • I have checked that reverting commit be46fee recovers answer on dev/master;
  • I have also checked that merging from the candidate dev/master on to dev/gfdl recovers dev/gfdl (which already has commit be46fee ).

In all, this passes tests.

@adcroft
Copy link
Collaborator

adcroft commented Aug 17, 2017

@kshedstrom Can you that check that this branch works for you (given the caveats in previous comment) and give us the thumbs up or down?

@kshedstrom
Copy link
Collaborator

So I have to guess which version of FMS? It's not obvious to me how to know that. Guessing dev/master gives a compile-time error:

-fcray-pointer -fdefault-double-8 -fdefault-real-8 -Waliasing -ffree-line-length-none -fno-range-check -I/u1/uaf/kshedstrom/include -I../../shared/repro -c -I//center1/d/kate/ESMG/ESMG-configs/src/MOM6/src/framework //center1/d/kate/ESMG/ESMG-configs/src/MOM6/src/diagnostics/MOM_debugging.F90
//center1/d/kate/ESMG/ESMG-configs/src/MOM6/src/framework/MOM_io.F90:19:32:

use fms_io_mod, only : get_filename_appendix => get_filename_appendix
1
Error: Symbol ‘get_filename_appendix’ referenced at (1) not found in module ‘fms_io_mod’
//center1/d/kate/ESMG/ESMG-configs/src/MOM6/src/framework/MOM_io.F90:39:93:

public :: close_file, create_file, field_exists, field_size, fieldtype, get_filename_appendix
1
Error: Symbol ‘get_filename_appendix’ at (1) has no IMPLICIT type
make[1]: *** [Makefile:175: MOM_io.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make[1]: Leaving directory '/import/c1/w/kshedstrom/MOM6/build/gnu/symmetric_ocean_only/repro'
make: *** [Makefile:497: /center1/w/kshedstrom/MOM6/build/gnu/symmetric_ocean_only/repro/MOM6] Error 2

@adcroft
Copy link
Collaborator

adcroft commented Aug 17, 2017 via email

@kshedstrom
Copy link
Collaborator

Thanks. Yes, all my little ocean-only tests run, with small answer changes I would expect. CCS is in the queue.

@adcroft adcroft merged commit ae22a0f into mom-ocean:dev/master Aug 17, 2017
nikizadehgfdl pushed a commit to nikizadehgfdl/MOM6 that referenced this pull request Oct 9, 2017
- NOAA-GFDL/MOM6@ae22a0f Merge pull request mom-ocean#578 from NCAR/dev/ncar
- NOAA-GFDL/MOM6@f4f882f Merge pull request mom-ocean#23 from gustavo-marques/combine_mct_modules
- NOAA-GFDL/MOM6@a85b728 Merge MCT modules
- NOAA-GFDL/MOM6@ba5b5ba Merge pull request mom-ocean#22 from gustavo-marques/check_fluxes
- NOAA-GFDL/MOM6@f5a8483 Adds option to write restart files
- NOAA-GFDL/MOM6@8745b4b Fills additional IOB fluxes
- NOAA-GFDL/MOM6@f6b22ff Merge branch 'dev/ncar' into check_fluxes
- NOAA-GFDL/MOM6@369d5d6 Merge pull request mom-ocean#21 from alperaltuntas/dev/ncar
- NOAA-GFDL/MOM6@2582e0a Adds run paramaters to control SW decomposition
- NOAA-GFDL/MOM6@58f78b9 Fill IOB, some fluxes still need to be checked
- NOAA-GFDL/MOM6@06a30ab Fixed clock and timing
- NOAA-GFDL/MOM6@1bca79b Merge pull request mom-ocean#20 from gustavo-marques/fix_merge
- NOAA-GFDL/MOM6@fb89b08 Adds code that got lost during merge
- NOAA-GFDL/MOM6@7480492 Merge pull request mom-ocean#19 from gustavo-marques/new_merge
- NOAA-GFDL/MOM6@be1e6cf Merge branch 'dev/master' into dev/ncar
- NOAA-GFDL/MOM6@76565cb Merge pull request mom-ocean#17 from gustavo-marques/fix_ssh_slopes
- NOAA-GFDL/MOM6@c04f081 Fix ssh slope calculation
- NOAA-GFDL/MOM6@17d4586 Merge pull request mom-ocean#16 from adcroft/ncar-cherry-picked-fixes
- NOAA-GFDL/MOM6@be46fee (*)Fixes gprime(1) when no layer coordinates are set
- NOAA-GFDL/MOM6@fccb7ae Avoids a SEGV when OBC are not in use with bi-harmonic friction
- NOAA-GFDL/MOM6@f42c970 Merge pull request mom-ocean#15 from gustavo-marques/small_fixes
- NOAA-GFDL/MOM6@31787c2 Adds reference to set_time that was lost during a conflict handling
- NOAA-GFDL/MOM6@d77936e Fix intent(inout) in ice_ocean_boundary
- NOAA-GFDL/MOM6@b403edd Merge pull request mom-ocean#14 from gustavo-marques/docs
- NOAA-GFDL/MOM6@4d346ca Merge branch 'dev/ncar' into docs
- NOAA-GFDL/MOM6@f7c26a5 Clean the module and start doxygenizing it
- NOAA-GFDL/MOM6@cd58e2a Merge pull request mom-ocean#13 from alperaltuntas/dev/ncar
- NOAA-GFDL/MOM6@37a53bc reorganize file structure
- NOAA-GFDL/MOM6@e6c5ddd Merge pull request mom-ocean#12 from gustavo-marques/fill_ice_ocean_bnd
- NOAA-GFDL/MOM6@6b6289a Remove trailing whitespace
- NOAA-GFDL/MOM6@7ce40e5 Fix undefined reference to fill_ice_ocean_bnd
- NOAA-GFDL/MOM6@d517719 Merge branch 'dev/ncar' into fill_ice_ocean_bnd
- NOAA-GFDL/MOM6@b69ab33 Filling ice_ocean_bnd - Draft
- NOAA-GFDL/MOM6@a306c90 Merge pull request mom-ocean#11 from adcroft/use-ocn-public-for-surface
- NOAA-GFDL/MOM6@c83e238 Correct indexing when using ocean_public_type
- NOAA-GFDL/MOM6@1f39c84 Replaces use of "surface" with "ocean_public_type"
- NOAA-GFDL/MOM6@5cd8d7a Filling ice_ocean_bnd, still needs work
- NOAA-GFDL/MOM6@3ceef26 Merge pull request mom-ocean#10 from adcroft/sketch-out-mct-run
- NOAA-GFDL/MOM6@714e8d6 Adds placeholders for stepping foward MOM
- NOAA-GFDL/MOM6@7f2207c Merge pull request #7 from adcroft/fix-mct-whitespace
- NOAA-GFDL/MOM6@a1db77f Cleans up white space
- NOAA-GFDL/MOM6@5700d67 Merge pull request #6 from adcroft/add-use-only-for-imports
- NOAA-GFDL/MOM6@beac3ed Adds "only" for all use statements
- NOAA-GFDL/MOM6@231d19e Merge pull request #5 from alperaltuntas/dev/ncar
- NOAA-GFDL/MOM6@3a923a2 Got initialization working
- NOAA-GFDL/MOM6@8b38141 Wrapped global data
- NOAA-GFDL/MOM6@970f848 added debugging
- NOAA-GFDL/MOM6@2540ed8 Filled empty subroutines in ocn_comp_mct.F90
- NOAA-GFDL/MOM6@ed3ed30 Added ocn_import_export module
- NOAA-GFDL/MOM6@aba7dc2 Completed ocn_init_mct
- NOAA-GFDL/MOM6@5df3bc3 Added method to point ponters to members of ocean_state_type
- NOAA-GFDL/MOM6@57e6086 Added methods to return domain/grid shape
- NOAA-GFDL/MOM6@37e7356 Added ocn_import_export.F90
- NOAA-GFDL/MOM6@2b794da Merge pull request #4 from alperaltuntas/dev/ncar
- NOAA-GFDL/MOM6@fbd405b Added coupler indices module
- NOAA-GFDL/MOM6@fa86163 Merge pull request #3 from NCAR/dev/gfdl
- NOAA-GFDL/MOM6@e8f2999 Merge pull request #2 from gustavo-marques/temp_salt_z_init_file
- NOAA-GFDL/MOM6@86936ba Adds option to read initial temp and salt from separate files
- NOAA-GFDL/MOM6@54f7976 Most initialization working
- NOAA-GFDL/MOM6@426357c Time and calendar initialization in ocn_comp_mct.F90
- NOAA-GFDL/MOM6@346097d Moved blank ocn_comp_mct.F90
- NOAA-GFDL/MOM6@405fecb Merge pull request #1 from gustavo-marques/ice_shelf
- NOAA-GFDL/MOM6@711a613 Removes frazil's contribution to evaporation
nikizadehgfdl pushed a commit to nikizadehgfdl/MOM6 that referenced this pull request Oct 9, 2017
- Updates MOM_parameter_doc files.

- NOAA-GFDL/MOM6@cde6d3f Merge branch 'dev/master' into dev/gfdl
- NOAA-GFDL/MOM6@ae22a0f Merge pull request mom-ocean#578 from NCAR/dev/ncar
- NOAA-GFDL/MOM6@f4f882f Merge pull request mom-ocean#23 from gustavo-marques/combine_mct_modules
- NOAA-GFDL/MOM6@a85b728 Merge MCT modules
- NOAA-GFDL/MOM6@ba5b5ba Merge pull request mom-ocean#22 from gustavo-marques/check_fluxes
- NOAA-GFDL/MOM6@f5a8483 Adds option to write restart files
- NOAA-GFDL/MOM6@8745b4b Fills additional IOB fluxes
- NOAA-GFDL/MOM6@f6b22ff Merge branch 'dev/ncar' into check_fluxes
- NOAA-GFDL/MOM6@369d5d6 Merge pull request mom-ocean#21 from alperaltuntas/dev/ncar
- NOAA-GFDL/MOM6@2582e0a Adds run paramaters to control SW decomposition
- NOAA-GFDL/MOM6@58f78b9 Fill IOB, some fluxes still need to be checked
- NOAA-GFDL/MOM6@06a30ab Fixed clock and timing
- NOAA-GFDL/MOM6@1bca79b Merge pull request mom-ocean#20 from gustavo-marques/fix_merge
- NOAA-GFDL/MOM6@fb89b08 Adds code that got lost during merge
- NOAA-GFDL/MOM6@7480492 Merge pull request mom-ocean#19 from gustavo-marques/new_merge
- NOAA-GFDL/MOM6@be1e6cf Merge branch 'dev/master' into dev/ncar
- NOAA-GFDL/MOM6@76565cb Merge pull request mom-ocean#17 from gustavo-marques/fix_ssh_slopes
- NOAA-GFDL/MOM6@c04f081 Fix ssh slope calculation
- NOAA-GFDL/MOM6@17d4586 Merge pull request mom-ocean#16 from adcroft/ncar-cherry-picked-fixes
- NOAA-GFDL/MOM6@be46fee (*)Fixes gprime(1) when no layer coordinates are set
- NOAA-GFDL/MOM6@fccb7ae Avoids a SEGV when OBC are not in use with bi-harmonic friction
- NOAA-GFDL/MOM6@f42c970 Merge pull request mom-ocean#15 from gustavo-marques/small_fixes
- NOAA-GFDL/MOM6@31787c2 Adds reference to set_time that was lost during a conflict handling
- NOAA-GFDL/MOM6@d77936e Fix intent(inout) in ice_ocean_boundary
- NOAA-GFDL/MOM6@b403edd Merge pull request mom-ocean#14 from gustavo-marques/docs
- NOAA-GFDL/MOM6@4d346ca Merge branch 'dev/ncar' into docs
- NOAA-GFDL/MOM6@f7c26a5 Clean the module and start doxygenizing it
- NOAA-GFDL/MOM6@cd58e2a Merge pull request mom-ocean#13 from alperaltuntas/dev/ncar
- NOAA-GFDL/MOM6@37a53bc reorganize file structure
- NOAA-GFDL/MOM6@e6c5ddd Merge pull request mom-ocean#12 from gustavo-marques/fill_ice_ocean_bnd
- NOAA-GFDL/MOM6@6b6289a Remove trailing whitespace
- NOAA-GFDL/MOM6@7ce40e5 Fix undefined reference to fill_ice_ocean_bnd
- NOAA-GFDL/MOM6@d517719 Merge branch 'dev/ncar' into fill_ice_ocean_bnd
- NOAA-GFDL/MOM6@b69ab33 Filling ice_ocean_bnd - Draft
- NOAA-GFDL/MOM6@a306c90 Merge pull request mom-ocean#11 from adcroft/use-ocn-public-for-surface
- NOAA-GFDL/MOM6@c83e238 Correct indexing when using ocean_public_type
- NOAA-GFDL/MOM6@1f39c84 Replaces use of "surface" with "ocean_public_type"
- NOAA-GFDL/MOM6@5cd8d7a Filling ice_ocean_bnd, still needs work
- NOAA-GFDL/MOM6@3ceef26 Merge pull request mom-ocean#10 from adcroft/sketch-out-mct-run
- NOAA-GFDL/MOM6@714e8d6 Adds placeholders for stepping foward MOM
- NOAA-GFDL/MOM6@7f2207c Merge pull request #7 from adcroft/fix-mct-whitespace
- NOAA-GFDL/MOM6@a1db77f Cleans up white space
- NOAA-GFDL/MOM6@5700d67 Merge pull request #6 from adcroft/add-use-only-for-imports
- NOAA-GFDL/MOM6@beac3ed Adds "only" for all use statements
- NOAA-GFDL/MOM6@231d19e Merge pull request #5 from alperaltuntas/dev/ncar
- NOAA-GFDL/MOM6@3a923a2 Got initialization working
- NOAA-GFDL/MOM6@8b38141 Wrapped global data
- NOAA-GFDL/MOM6@970f848 added debugging
- NOAA-GFDL/MOM6@2540ed8 Filled empty subroutines in ocn_comp_mct.F90
- NOAA-GFDL/MOM6@ed3ed30 Added ocn_import_export module
- NOAA-GFDL/MOM6@aba7dc2 Completed ocn_init_mct
- NOAA-GFDL/MOM6@5df3bc3 Added method to point ponters to members of ocean_state_type
- NOAA-GFDL/MOM6@57e6086 Added methods to return domain/grid shape
- NOAA-GFDL/MOM6@37e7356 Added ocn_import_export.F90
- NOAA-GFDL/MOM6@2b794da Merge pull request #4 from alperaltuntas/dev/ncar
- NOAA-GFDL/MOM6@fbd405b Added coupler indices module
- NOAA-GFDL/MOM6@fa86163 Merge pull request #3 from NCAR/dev/gfdl
- NOAA-GFDL/MOM6@e8f2999 Merge pull request #2 from gustavo-marques/temp_salt_z_init_file
- NOAA-GFDL/MOM6@86936ba Adds option to read initial temp and salt from separate files
- NOAA-GFDL/MOM6@54f7976 Most initialization working
- NOAA-GFDL/MOM6@426357c Time and calendar initialization in ocn_comp_mct.F90
- NOAA-GFDL/MOM6@346097d Moved blank ocn_comp_mct.F90
- NOAA-GFDL/MOM6@405fecb Merge pull request #1 from gustavo-marques/ice_shelf
- NOAA-GFDL/MOM6@711a613 Removes frazil's contribution to evaporation
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.

4 participants