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

User/jml/operation fms2 the reckoning #1033

Closed
wants to merge 5,474 commits into from
Closed

User/jml/operation fms2 the reckoning #1033

wants to merge 5,474 commits into from

Conversation

wrongkindofdoctor
Copy link
Contributor

This is a draft PR for the MOM6 code with the new fms-io calls so that MOM6 developers can see what the preliminary round of changes looks like. The code compiles with gnu7 in debug on gaea, but still needs more thorough testing. I will change the PR status ( and branch head, if the MOM6 team would prefer to have separate branch to test the new IO similar to fms-io-dev in the FMS repo) when I have finished regression testing. The PR for the alpha tag will also include thorough descriptions of the major changes.

wrongkindofdoctor and others added 30 commits July 31, 2019 13:44
…al_condition, added a default case that throws a fatal error if the 't_grid_str' is empty in write_initial_conditions and save_restart
Merge in latest dev/gfdl updates
* dev/gfdl:
  Bugfix: diabatic_salt_tendency diagnostics in ALE
… facilitate use of new open_file, which requires that these values be associated
…nitialize_ocean_public_type to set the io_domain value in Ocean_sfc%domain, which is required by the new fms-io read_data calls for domain-decomposed netcdf files in xgrid.F90/
Merge in latest dev/gfdl updates
… routines MOM_open_file, MOM_close_file, and references to file_exists, FmsNetcdfFomainFile_t, read_data, defined in MOM_io to preserve encapsulation.
…e public routine references read_data from new fms_io, made FMSNetCDFDomainFile_t public
…o mpp_open_file and mpp_close_file, all open_file and close_file calls reference the new fms-io interfaces, added a routine to MOM_read_data to deal with the supergrid domain, removed unused open_file and close_file calls, replaced the fms read_data reference and calls with old_fms_read_data. MOM_read_data calls new fms read_data directly without fms2 prepended to the name, replaced old fms reads of netcdf files with new open, read, and close interface calls referenced from MOM_io
…and replaced calls with direct calls to register_variable_attribute
…blic, removed the fms2_ from the routine names
…pp_domain attribute to the new fms MOM_open_file wrapper call, replaced the create_file call with new MOM_open_file, register_field, axis registration routines, write_data, register_variable_attribute, and close_file calls
…and routines, made new fms write_data public
…ariable descriptions are already in a struct, added the field varaiable and attribute registration calls to the i-loop
…nters, put the new io public routines in abc order
…s for axis_data_CS%axis and axis_data_CS%data
…h the new fms io open, register, write, and close routines
…rface. This accomodates the writing of the vertical coordinate file in MOM_ALE and MOM_coord_initialization.
…ile routines, and call to MOM_open_file. This file is not domain-decomposed, and does not need the mpp_domains from G
wrongkindofdoctor and others added 20 commits February 7, 2020 17:35
…OM_io. Added use statements for fms_affinity_set,get to MOM_driver and mom_domains
merge in latest dev/gfdl updates
* dev/gfdl:
  Segment index added for several OBC segment flags
  Replaced intent(out) with intent(inout) in EOS
  Added option to trailer.py for line length excluding comments
  Adds MOM_random module
  Adds global extents to hor_index type
  Correct spelling in HI doxumentation
changed get_affinity and set_affinity to point to new wrappers in fms_affinity.F90
changed file_exist to file_exists in MOM_domains
…inity.F90, and fixed arguments in set_affinity
…ongkindofdoctor/MOM6 into user/jml/operation_fms2_the_reckoning

* 'user/jml/operation_fms2_the_reckoning' of github.com:wrongkindofdoctor/MOM6:
  redirected get_affinity and set_affinity calls to routines in fms_affinity.F90, and fixed arguments in set_affinity
  added procedure to set the io_layout for 1-pe jobs to restore_state changed get_affinity and set_affinity to point to new wrappers in fms_affinity.F90 changed file_exist to file_exists in MOM_domains
… added pelist definition and argument to open_file call in write_scalar
…ity with fms_cpu_affinity_set

added module use fms_affinity fms_affinity_set, fms_affinity_get to MOM_io. Added use statements for fms_affinity_set,get to MOM_driver and mom_domains
- Option -s now specifies the maximum length of lines after stripping
  out comments. The defaults are for the Fortran standard, not MOM6.
  MOM6 standard are specified in the Travis-CI invocation of trailer.py.
- niglobal,njglobal are available from the Domain type and
  usually accessed via a ocean_grid_type function. Modules
  that do not need the Domain but do use the hor_index type are
  obliged to use the ocean_grid_type to get the global extent,
  even though it's just integer information most closely related
  to the indices.
- This commit adds niglobal,njglobal to the hor_index type so
  that modules that use HI, and only need indices, do not need
  to the full ocean_grid_type.
- MOM_random provides a wrapper to the Mersenne twister pseudo-random
  number generator in FMS. In particular it allows for reproducible
  2d fields of numbers using the MOM6 domain decomposition.
- Commit includes unit tests that check specific values as well as the
  statistics (the latter are not unit tests but there's no harm in
  doing them).
In setup_[uv]_point_obc, a number of flags for each segment were
assigned without index (OBC%segment%flag), which was causing all
segments to be assigned the same value.

This could problems with, say, `[uv]_value_needed` flags, which have
different values depending on if they are E-W or N-S oriented.

This patch adds the index to the assignments.
- For arrays using intent(inout) avoids potential copies and also
  allows aliasing of arguments which can reduce the overhead
  of multiple spare arrays in the calling code.
changed get_affinity and set_affinity to point to new wrappers in fms_affinity.F90
changed file_exist to file_exists in MOM_domains

redirected get_affinity and set_affinity calls to routines in fms_affinity.F90, and fixed arguments in set_affinity

removed extraneous calls to open file from write_field_noDD routines, added pelist definition and argument to open_file call in write_scalar

declared variable i in write_scalar

removed extraneous open_file and pelist definition from write_field_1d_nodd
…ongkindofdoctor/MOM6 into user/jml/operation_fms2_the_reckoning

* 'user/jml/operation_fms2_the_reckoning' of github.com:wrongkindofdoctor/MOM6:
  added procedure to set the io_layout for 1-pe jobs to restore_state changed get_affinity and set_affinity to point to new wrappers in fms_affinity.F90 changed file_exist to file_exists in MOM_domains
  Replaced intent(out) with intent(inout) in EOS
  Segment index added for several OBC segment flags
  Adds MOM_random module
  Adds global extents to hor_index type
  Correct spelling in HI doxumentation
  Added option to trailer.py for line length excluding comments
  replaced get_cpu_affinity with fms_cpu_affinity_get and set_cpu_affinity with fms_cpu_affinity_set
…the sum to set_affinity if true, and 1 if false to prevent the new fms_affinity_set routine from evaluating cpuset_sz as 0 for 1-pe/1-thread jobs with openMP enabled
@marshallward
Copy link
Collaborator

Hi Jess, given that there are still lots of commits coming in to this PR, and since it will also require a squash at some point, can I request that we close this and re-open once it's ready?

@wrongkindofdoctor
Copy link
Contributor Author

@marshallward Sorry about that! I had to resolve issues incorporating the new thread affinity module in the latest FMS updates. but this should be it. If all of the Travis CI tests pass, you, @adcroft, and @MJHarrison-GFDL can proceed with the review of the code when you are able. In the mean time, I will start updating SIS2.

…et_cpu_affinity

cleaned up whitespace and commented out code

fixed line length issue in MOM_domains
@wrongkindofdoctor
Copy link
Contributor Author

Closed while I work through updates for internal gitlab CI tests.

adcroft referenced this pull request in adcroft/MOM6-examples Jun 19, 2020
- This version of FMS is a prerequisite to updating calls to FMS ready
  to try FMS2 I/O behind NOAA-GFDL/SIS2#117 and NOAA-GFDL/MOM6#1033
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.

6 participants