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

Gnu MCT builds will fail starting in ctsm5.1.dev113 #1887

Closed
billsacks opened this issue Oct 28, 2022 · 3 comments
Closed

Gnu MCT builds will fail starting in ctsm5.1.dev113 #1887

billsacks opened this issue Oct 28, 2022 · 3 comments
Labels
bug something is working incorrectly closed: wontfix We won't fix this issue, because it would be too difficult and/or isn't important enough to fix

Comments

@billsacks
Copy link
Member

Brief summary of bug

Starting in ctsm5.1.dev113, Gnu builds with the MCT driver are expected to fail. Since the MCT driver is deprecated, we do not plan to fix this issue.

General bug information

CTSM version you are using: ctsm5.1.dev113

Does this bug cause significantly incorrect results in the model's science? No

Configurations affected: Gnu builds with the MCT driver

Details of bug

The build fails when compiling clm_time_manager.F90 with errors like this:

/home/sacks/ctsm_code/ctsm/src/utils/clm_time_manager.F90:12:26:

   12 |    use ESMF        , only: operator(>), operator(<), operator(-)
      |                          1
Error: Intrinsic operator ‘>’ referenced at (1) not found in module ‘esmf’
/home/sacks/ctsm_code/ctsm/src/utils/clm_time_manager.F90:12:39:

   12 |    use ESMF        , only: operator(>), operator(<), operator(-)
      |                                       1
Error: Intrinsic operator ‘<’ referenced at (1) not found in module ‘esmf’
/home/sacks/ctsm_code/ctsm/src/utils/clm_time_manager.F90:11:53:

   11 |    use ESMF        , only: operator(==), operator(+), operator(<=), operator(>=)
      |                                                     1
Error: Intrinsic operator ‘<=’ referenced at (1) not found in module ‘esmf’
/home/sacks/ctsm_code/ctsm/src/utils/clm_time_manager.F90:11:67:

   11 |    use ESMF        , only: operator(==), operator(+), operator(<=), operator(>=)
      |                                                                   1
Error: Intrinsic operator ‘>=’ referenced at (1) not found in module ‘esmf’
/home/sacks/ctsm_code/ctsm/src/utils/clm_time_manager.F90:1715:12:

 1715 |     nstep = step_no
      |            1
Warning: Possible change of value in conversion from INTEGER(8) to INTEGER(4) at (1) [-Wconversion]
/home/sacks/ctsm_code/ctsm/src/utils/clm_time_manager.F90:785:16:

  785 |     get_nstep = step_no
      |                1
Warning: Possible change of value in conversion from INTEGER(8) to INTEGER(4) at (1) [-Wconversion]
/home/sacks/ctsm_code/ctsm/src/utils/clm_time_manager.F90:620:12:

  620 |     nstep = step_no
      |            1
Warning: Possible change of value in conversion from INTEGER(8) to INTEGER(4) at (1) [-Wconversion]
/home/sacks/ctsm_code/ctsm/src/utils/clm_time_manager.F90:279:9:

  279 |     if ( stop_date <= start_date ) then
      |         1
Error: Operands of comparison operator ‘<=’ at (1) are TYPE(esmf_time)/TYPE(esmf_time)
/home/sacks/ctsm_code/ctsm/src/utils/clm_time_manager.F90:287:9:

  287 |     if ( stop_date <= curr_date ) then
      |         1
Error: Operands of comparison operator ‘<=’ at (1) are TYPE(esmf_time)/TYPE(esmf_time)
/home/sacks/ctsm_code/ctsm/src/utils/clm_time_manager.F90:306:14:

  306 |     do while( curr_date > current )
      |              1
Error: Operands of comparison operator ‘>’ at (1) are TYPE(esmf_time)/TYPE(esmf_time)
gmake: *** [clm_time_manager.o] Error 1
@billsacks
Copy link
Member Author

Closing as a wontfix since mct is deprecated.

@billsacks billsacks added bug something is working incorrectly closed: wontfix We won't fix this issue, because it would be too difficult and/or isn't important enough to fix labels Oct 28, 2022
@billsacks
Copy link
Member Author

@ekluzek points out that you can probably workaround this issue with:

./xmlchange USE_ESMF_LIB=TRUE

before building (I haven't tested this).

@ekluzek
Copy link
Collaborator

ekluzek commented Oct 29, 2022

I looked into this a tiny bit and I think the difference is that the WRF time-manager defines the operators using the FORTRAN form .EQ., .LT. and the like, whereas the full ESMF defines using the symbolic form ==, <, etc. I'm guessing when you don't use the only clause and with most compilers, it can reconcile the difference, but GNU is failing for this case when the form doesn't match exactly.

As such we could fix this, but we shouldn't with MCT going away. And it should work with using the full ESMF library. That actually could be a nice stepping stone for people to move over to NUOPC, start using MCT but use the full ESMF library. Using the full ESMF library is a requirement for NUOPC, so you have to get it setup to make the switch anyway.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug something is working incorrectly closed: wontfix We won't fix this issue, because it would be too difficult and/or isn't important enough to fix
Projects
None yet
Development

No branches or pull requests

2 participants