-
Notifications
You must be signed in to change notification settings - Fork 3
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
Clean up Icepack interfaces #38
Clean up Icepack interfaces #38
Conversation
…acers Update merge_fluxes to make all merges optional Update derecho inputdata (currently on main) Update conda settings (currently on main)
remove them from the driver and interfaces.
These are the set of changes I want to be included in the bgc merge into the Consortium. This largely just removes arguments from interfaces that don't need to be there. These changes will require the E3SM and CICE calls to Icepack to be updated. Mostly what needs to happen is that extra arguments are removed from those calls, so it should be easy to do. These changes are all bit-for-bit and don't impact the model runs. Separately, I will continue to try to expand use of optional arguments and will do that as a separate PR if I find anything. |
I want to point out another thing I just noticed that I think has to be fixed. In the icepack parameters, there is a new input with the bgc, dictype_1. That is similar to doctype_l. But dictype has a "number one" and doctype has a "lower case L". I think it should be rename dictype_l with lower case L? Happy to fix that if everyone agrees. |
Just a quick follow up. It's very confusing actually. We have
which all have an undercase then lower case L. Then we have
which all have an undercase and then number 1. In the code, the 1 and L look very, very similar. Is there a reason some are "one" and some are "L"? It would be really good to either unify to "one" or "L" or to use some other nomenclature that is not a "one" or an "L" for one or the other. Let me know if there is something I should do. |
I have taken the latest version of the E3SM Icepack changes (including this PR) and merged it into a sandbox of the Consortium main Icepack and CICE codes. I then ran full test suites on derecho. For Icepack, everything is bit-for-bit except the bgc. The bgc results still have several problems and results vary depending on compiler,
For CICE, I've just run the full test suite on Derecho with the Intel compiler. Again, all results are bit-for-bit with the current Consortium main code except the bgc results. For bgc, all the tests abort before they finish. It looks like I'm running into some issues with the Icepack warning package. I think @njeffery was having some similar problems. I will look into that. Certainly, the updated bgc generates a huge number of warning messages with CICE (algal_dyn conservations errors, etc). I'm also thinking the warning messages may not be fully thread proof yet and the huge number of messages produced by bgc now is leading to that failure. Again, I'll look into that further. Overall, I think the changes we have are going OK. This PR seems to be robust in terms of updating the interfaces. I will work on the warning package problems, but on the SE side, I think we're in good shape. On the science side, we still have work to do to validate the bgc in standalone Icepack and CICE. |
@apcraig : DOC have _l and _s . The 'l' stands for "lipids" and 's' for "saccharids". The other fields, dic/fe, are a single generic type. |
Thanks @njeffery for clarifying, that makes sense. In the source code, interfaces, and documentation, it's very difficult to tell the difference between the 1 and small L. It might be nice to come up with some other nomenclature for the 1 for those variables. But I leave that up to you. Even if we just removed the underscore, that would help, _1 -> 1. If you do decide you want something different, I'm happy to do the search and replace throughout Icepack for you and create the PR, just let me know. I was working on the icepack warnings module today to try to make it thread safe. Made some progress, still some work to do. Will update the PR (or create a new one) when I have something ready. I think that will fix your issues with the warnings package as well. Thanks! |
@apcraig : we could use a capital? _L |
So you want _s (small s), _L (cap L) and _1 (one)? You're OK having lower case s and upper case L? I would say get rid of _1 (one), but there are already variables in use with that name. I'm open, could also leave it as is I guess. Happy to switch the _l to _L if that's what you want, just let me know. I would change the 5 variables noted above? |
@apcraig : It gets complicated. My vote is to leave it as is. |
OK, will leave as is. |
I just updated the PR to improve the icepack warnings package to make it more thread-safe. I ran the full icepack test suite with the E3SM Icepack + this PR and things look OK. Still running into lots of bgc issues, same as before the latest update. Also testing these latest changes in the Consortium Icepack and CICE sandboxes. The updated icepack warnings module got rid of the CICE bgc seg faults associated with the warning package. I'm still getting several bgc failures. Most of the CICE bgc test cases time out due to the amount of output generated by Icepack. I'm going to turn off that excess Icepack bgc output and retest. |
This PR has already been merged, but regarding the labeling, how about _lip and _sac? |
Happy to continue to think about the variable names. While the _l and _1 are confusing, the users will sort it out fairly quickly when their code don't compile. :) @njeffery, thanks for updating your Icepack calls in E3SM, I know this was a bit of extra work, but think it's worthwhile in the long run. |
PR checklist
Short (1 sentence) summary of your PR:
Clean up Interfaces, remove redundant arguments
Developer(s):
apcraig
Suggest PR reviewers from list in the column to the right.
Please copy the PR test results link or provide a summary of testing completed below.
Full test suite run on Derecho with intel, cray, and gnu. This is bit-for-bit except many of the bgc configurations still DO NOT run correctly/successfully in standalone mode. There is still work to be done to make the code more robust.
How much do the PR code changes differ from the unmodified code?
Does this PR create or have dependencies on CICE or any other models?
Does this PR add any new test cases?
Is the documentation being updated? ("Documentation" includes information on the wiki or in the .rst files from doc/source/, which are used to create the online technical docs at https://readthedocs.org/projects/cice-consortium-cice/.)
Please provide any additional information or relevant details below:
Migrate bgrid, cgrid, igrid, icgrid, swgrid to Icepack variables,
remove them from the driver and interfaces.
Remove redundant Icepack interface arguments set in parameters and tracers
Update merge_fluxes to make all merges optional
Update derecho inputdata (currently on main)
Update conda settings (currently on main)