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

Field width is actually required by the Fortran standard #36

Closed
aerorahul opened this issue Oct 7, 2020 · 9 comments · Fixed by #37
Closed

Field width is actually required by the Fortran standard #36

aerorahul opened this issue Oct 7, 2020 · 9 comments · Fixed by #37

Comments

@aerorahul
Copy link

read(value, '(i)', iostat=iostat) scalar_field_count

Intel does not enforce this standard, while gfortran does.
The only way to go forward is to fix this line 298 (and L314, 330) by providing a positive width Iw instead of i

read(value, '(i)', iostat=iostat) scalar_field_count
@SMoorthi-emc
Copy link

SMoorthi-emc commented Oct 7, 2020 via email

@aerorahul
Copy link
Author

aerorahul commented Oct 8, 2020

I tested the suggestion from @SMoorthi-emc and it worked.

read(value, *, iostat=iostat) scalar_field_count

Is there anyone working on a MOM6 branch that expects to open a PR soon and I can piggy back this change?
This is a zero-diff change.

@junwang-noaa @jiandewang @JessicaMeixner-NOAA @DeniseWorthen any thoughts?

@junwang-noaa
Copy link

junwang-noaa commented Oct 9, 2020 via email

@SMoorthi-emc
Copy link

SMoorthi-emc commented Oct 9, 2020 via email

@junwang-noaa
Copy link

junwang-noaa commented Oct 9, 2020 via email

@aerorahul
Copy link
Author

The issue is this:

read(value, '(i)', iostat=iostat) scalar_field_count
              1
Error: Nonnegative width required in format string at (1)

@junwang-noaa
Copy link

junwang-noaa commented Oct 9, 2020 via email

@aerorahul
Copy link
Author

aerorahul commented Oct 9, 2020

It would, if you know, value <= 999, always! Otherwise, the result will be truncated to 3 places.

@DeniseWorthen
Copy link
Collaborator

DeniseWorthen commented Oct 9, 2020

This parameter is provided by the MOM6 cap to the CMEPS mediator so that mediator history files can be written on the MOM6 grid. A similar parameter is used in CICE. It is not used for global FV3, since the 6 tiles cannot be represented on a single x-y grid. Files written by CMEPS for the global FV3 are on the mesh. But I imagine something similar is done for FV3 regional. It is also used for the DATM.

The CMEPS mediator is a mesh, and so carries all fields internally on a mesh (1d). When CMEPs writes a file containing a MOM6 field, it wants to write them in the igrid,jgrid shape of the MOM6 grid. This is really for the user convenience. WIth global FV3, the user needs to process the CMEPS files if they want to view them on the tiles.

There are 2 scalar fields, the nx dimension and the ny dimension passed to CMEPS. So scalar_field_count itself would presumably always be < 100.

jiandewang pushed a commit to jiandewang/MOM6 that referenced this issue Jun 17, 2021
* TC4 integration into test suite

This patch renames the tc4 test to activate it in the test suite.  It
also modifies the Makefile to build the input field test scripts.

It also modifies the Python build scripts to be PEP8-conformant.

We temporarily disable tc4 in the restart tests, since they currently
fail.  This needs to be addressed before we can merge this into the main
branch.

The patch does not enable the necessary Python modules for running on
Travis, that will also be addressed later.

* Travis python support; tc4 Makefile

The custom TC4 Makefile has been added (oops), and the presumed Python
Ubuntu packages have been added for Travis.

* Verify ENABLE_THERMODYNAMICS is True before posting C_p diagnostic

* Make tc4 faster

* remove trailing whitespace

* add unit scaling

* fix restart fail for tc4 and some cleanup

* remove trailiny ws

* Enable tc4.restart test

* +Pass timeesteps to tracer diagnostics in [T]

  Pass timeesteps to the tracer diagnistics routines post_tracer_diagnostics and
postALE_tracer_diagnostics and to adiabatic in units of [T}.  All answers are
bitwise identical.

* +Rescaled tracer advective flux diagnostics

  Rescaled the internal units of the tracer advective flux diagnostics to units
of [conc H L2 T-1] for code simplicity and dimensional consistency testing.
Also corrected the units of some tracer fluxes as documented in comments and
commented out unused elements of the tracer_type.  All answers are bitwise
identical.

* +Pass timesteps to ALE_main in [T]

  Pass the timesteps to ALE_main, ALE_main_offline, and ALE_main_accelerated in
units of [T] for code simplicity and dimensional consistency testing.  This also
includes the rescaling of remapping-driven tracer tendencies.  All answers and
diagnostics are bitwise identical.

* +Pass timesteps to tracer column_physics in [T]

  Pass timesteps to the various tracer column_physics routines in [T] for
dimensional consistency testing.  Also added a new unit_scale_type argument to
these routines.  All answers are bitwise identical, but there are minor
interface changes to 13 subroutines.

* +Pass timesteps to applyTracerBoundaryFluxesInOut in [T]

  Pass timesteps to applyTracerBoundaryFluxesInOut in [T], and use units of
[T-1] for internal source and decay rates for the oil tracer and in fluxes of
CFCs.  Also modified extract_offline_main to return timesteps as real values
with units of [T].  Also there is a new unit_scale_type argument to
register_oil_tracer.   All answers in the MOM6_examples test cases and
regression tests are bitwise identical.

* Simplified expressions in MOM_PointAccel

  Simplified expressions inside of MOM_PointAccel, taking into account that all
velocities use the same units of [L T-1].  All answers are bitwise identical.

* Corrected dimensional epsilons in downscaling

  Added distinct negligible volumes, face areas, horizonal areas and lengths
with proper dimensional rescaling in the downsample field routines.  With these
changes, downscaled diagnostics should now pass the dimensional rescaling tests,
whereas previously there would have been a problem when the numbers used to
represent lengths are smaller than about 1e-8 times their MKS values.  All
answers are bitwise identical without dimensional rescaling.

* Simplified expressions in MOM_offline_aux

  Simplified expressions in distribute_residual_uh_barotropic.  All answers are
bitwise identical.

* Revised wave_speed to return speed in [L T-1]

  Revised wave_speed to return the internal wave speed in units of [L T-1] and
to use mono_N2_depth in units of [Z] for code simplification and expanded
dimensional consistency testing.  Also revised the internal units of some
related diagnostics in calculate_diagnostic_fields.  All answers and diagnostics
are bitwise identical.

* Rescaled internal variables in wave_speed

  Rescale internal calculations in wave_speed and wave_speeds for greater
robustness and dimensional consistency testing.  All answers are bitwise
identical and pass dimensional scaling tests.

* +Changed the units of minimum_forcing_depth to [H]

  Changed the units of minimum_forcing_depth passed to applyBoundaryFluxesInOut
and applyTracerBoundaryFluxesInOut to [H].  All answers are bitwise identical.

* Correction of documented units in comments

  Corrected some units in comments and eliminated some unused variables.
All answers are bitwise identical.

* Adiabatic clock ID bugfix

This patch fixes an initialization bug of the diabatic timer, which was
being used to measure adiabatic time but was never initialized if the
experiment was configured as adiabatic.

We fix this by introducing a separate timer for the adiabatic solver.
Although we could have reused the diabatic timer, the addition of a new
variable should not add any overhead on modern compilers.

* Corrected an OMP declaration

  Added a variable to an OMP declaration.  All answers are bitwise identical,
and a recently added compile-time error with openMP was fixed.

* Update MOM.F90

Fixed Alistair's embarrassing error.

* Dimensional rescaling in MOM_open_boundary.F90

  Added rescaling for dimensional consistency testing in MOM_open_boundary.F90,
including splitting variables with different units that had previously shared
the same variable and adding more extensive documentation of variables.  Also
changed the dimensions of the timesteps passed to radiation_open_bdry_conds and
update_segment_tracer_reservoirs to [T] and added vertical_grid_type and
unit_scale_type arguments to open_boundary_init and open_boundary_test_extern_h.
All answers are bitwise identical, although some probably bugs have been noted
in comments and there are new or altered arguments to several routines.

* (*)Fixed invariance bugs in MOM_open_boundary.F90

  Corrected dimensional consistency bugs in update_segment_tracer_reservoirs and
horizontal indexing and related bugs in gradient_at_q_points with oblique_grad
OBCs.  These will both change answers in test cases that use some open boundary
condition options, but not in any of the MOM6-examples test cases.
jiandewang pushed a commit to jiandewang/MOM6 that referenced this issue Feb 1, 2022
* Adding temperature restore capability for SPEAR.

Added parameter SPEAR_ECDA_SST_RESTORE_TFREEZE to allow activation of
sea surface salinity based modification of restoring of temperature.
The formula used is different from the Millero (default in SPEAR runs)
scheme.

* removed spaces on blank line.

* (*)Changed hard wired value to parameter defined in MOM_override

The freezing temperature came from SIS2 code. Changing the default value here to be consistent with that. (-0.054 vs -0.0539)
The salinity restoring code used the -0.0539 value also so answers may change if using that code (RESTORE_SALINITY=T)

* (*)Changed hard wired value to parameter defined in MOM_override

The freezing temperature came from SIS2 code. Changing the default value here to be consistent with that. (-0.054 vs -0.0539)
The salinity restoring code used the -0.0539 value also so answers may change if using that code (RESTORE_SALINITY=T)

* Forgot to replace the salinity masking mulitplier with the override
parameter
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 a pull request may close this issue.

4 participants