Run simulation length seems out of sync between EAMxx and CIME
There appears to be a discrepancy between the length of simulation run reported in the e3sm_timing file vs. the actual length of the run, when running with EAMxx. This was first noticed when looking at PACE results, which always reported a run length that was 1-day short.
It may be related to the fact that EAMxx has 0-based indices rather than 1-based. But it isn't clear if ATM reports nsteps back to CIME, or CIME keeps track some other way.
Making this issue to have a central location for discussion.
According to CESG folks, get_timing.py is a port of perl which was a port of csh that predated the env XML system. CIME now tracks run length via STOP_N, so it's possible we could refactor this script to make it simpler and more portable.
Yes, that script's logic has been there forever. We can change that if truly needed.
However, I think this discrepancy between 0 and 1 based would bite us in unexpected ways in the future.
@sarats , OK, then is this a ticket for eamXX developers?
But isn't STOP_N correct? I mean like in our example STOP_N is 7. So if the script only used STOP_N we would be good right?
I'm Ok with using STOP_N but I wonder what's the reason behind using the logic there? Are there edge cases it would cover? We probably have to ask around: Pat or others at NCAR.
Anyway, are you guys sure the 0-based won't have any other so far invisible issues besides the timing report? That's my bigger worry.
STOP_N only works simply if STOP_TYPE is nsteps. If it's something like ndays, then you have to know how many steps per day.
I'm not 100% sure what you are referring to with 0 based vs 1 based. If you are referring to what is printed by the driver
Atmosphere step = X
model time = Y
the reason that number is 0-based is that we print at the beginning of the step, and we print the current time (at the beginning of the time step) rather than the time we're advancing to. But that has zero impact on what's saved in the nc files, it's a mere printout statement.
That said, if you prefer to see something else printed to screen, we can change the printf statement.