-
Notifications
You must be signed in to change notification settings - Fork 216
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
FIXME at line 676 of case.py: validate compset settings for user-compset #1522
Comments
I'm not sure if this is what the FIXME note is referring to, but I see: (1) Valid compset (as a "control"):
(2) Invalid compset:
Specifically, note the use of The only way I can think of to catch errors like this is if every component lists allowed settings in its config_components.xml file... actually, that might be a good requirement to catch typos in user_compsets. |
So we could have a new variable in config_component.xml
I can make this optional so that all components do not need to supply it right away - if a component does supply it then any modifier provided for that component in the compset name will be checked against this list. If it's not supplied than no error check is done for modifiers in that component. |
@jedwards4b - yes, I really like that solution. |
Actually, I think (but am not sure) that datm, and maybe other components (probably mostly data models) require at least one modifier. i.e., I think it's invalid to have a compset like |
Yes, but can you confirm that? |
@jedwards4b - I don't know how to confirm this. @mvertens or @ekluzek - do you know if datm and/or other data models require a modifier? e.g., is it invalid to do a compset with |
@billsacks I'm pretty sure you have to specify what DATM_MODE as a %. It's possible there is a default of CORE forcing, but I doubt we EVER rely on the default. |
First - I really like this idea! I would suggest shorter name like
COMPNAME_MODIFIERS.
Second. I have validated that the following user compset
2000_DATM_SLND_DICE_DOCN_DROF_SGLC_SWAV works and gives the following data
modes:
DATM_MODE: CORE2_NYF
DICE_MODE: ssmi
DROF_MODE: DIATREN_ANN_RX1
DOCN_MODE: prescribed
Third - I am wondering if we don't already check that all the possible
modes have entries in the description element of config_component.xml.
…On Fri, May 12, 2017 at 2:14 PM, Erik Kluzek ***@***.***> wrote:
@billsacks <https://github.com/billsacks> I'm pretty sure you have to
specify what DATM_MODE as a %. It's possible there is a default of CORE
forcing, but I doubt we EVER rely on the default.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#1522 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/AHlxEzUqtr7VzCNcBN6ntiE5GvNHBFJXks5r5L22gaJpZM4NZcB->
.
|
Trying to sort out the requirements for the description matches on compset names: The compset name consists of a date field followed by a description of each specific component in COMP_CLASSES in the order of the COMP_CLASSES list. Currently for cesm this is: CPL,ATM,LND,ICE,OCN,ROF,GLC,WAV,ESP where the ESP component may or may not be explicitly listed. The compset name may optionally include at the end a BGC modifier - we need to be careful not to confuse this with the ESP component. Components are separated by _ symbols. Each component is described by a specific component name (cam40, clm45, etc) optionally followed by one or more modifiers separated by % symbols. For some components at least one modifier is required. An attribute in the xml description will indicate whether the component requires modifiers. One possible addition I see is that some components (datm, docn )? may only allow a single modifier. Perhaps the attribute should be "modifiers" with allowed values of '*','?','1','+' to indicate 0 or more, 0 or 1, exactly 1, and 1 or more respectively. |
Are you talking about the proposed |
So in the latest discussion we came up with the following: |
How does this prevent invalid combinations? |
Only fields with the additive attribute could be combined with other fields, although this would not absolutely prevent invalid combinations it should greatly reduce the potential for creating one. |
It doesn't prevent invalid combinations and also is not usable if an option isn't 'additive' for every entry in the |
Could you please give a concise summary of what the new cam description
would look like - with examples. My understanding is that you want to
remove the attribute in the <description> and rely on regular expression
matching for everything. That is really what Jim wanted from the beginning
and I talked him out of it. I thought that it make things clearer to have a
few attributes rather than complicated regular expressions that would lead
to a combinatoric nightmare. But we should all have a consensus about the
best way forwards. @billsacks - do you have an opinion on this issue?
…On Wed, Jun 7, 2017 at 5:34 PM, goldy ***@***.***> wrote:
It doesn't prevent invalid combinations and also is not usable if an
option isn't 'additive' for every entry in the <description> section. In
the CAM case, ramping CO2 can be added to any item:
compset="_CAM60_"
becomes
compset="_CAM60(%RCO2)?_"
and the behavior is explicit and local. This gives fine-grained control
and prevents invalid entries at the earliest stage.
Flagging @cacraigucar <https://github.com/cacraigucar> and @brian-eaton
<https://github.com/brian-eaton> in case they are not following this
discussion.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#1522 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/AHlxE3yfAC178360Cb4el57qCbvOQX2wks5sBzOKgaJpZM4NZcB->
.
|
Here is a pass through the CAM description section using new attributes which are component type names (e.g., atm). Rather than regular expression syntax, each allowed value is spelled out with optional additions in brackets. Thus,
One thing I'm not sure what to do with is the initial-condition / forcing scenario which is the first block of the compset. An example is the Any feedback on this proposal? |
@gold2718 - at a glance, I do agree that this is more understandable than the regex syntax. Is it intentional that some of these say CAM40%, CAM50% or CAM60%, some say CAM5%, and some just say CAM%? At least for CLM, it would really help moving forward if we separated lnd_name from lnd_opts. We have a lot of options that apply to both CLM45 and CLM50 - and in the future will also apply to CLM55, CLM60, etc. On a number of occasions, we've had buggy behavior because someone forgot to add a I'm okay deferring that to post-CESM2, but I feel like it's pretty important to address at some point, because this is getting problematic for CLM. Also, I wanted to point out that @mvertens and I thought through some of this last year and came up with this proposal: #119 (comment) |
@gold2718 It seems that you diverged from the conversation that we had leading to this proposal. @billsacks You seem to be proposing something different but you need to spell it out clearly with examples. Are you suggesting another layer such as
How would you specify which options can be combined and which are exclusive? |
What I meant was something like this: <desc lnd_name="CLM45"> clm45</desc>
<desc lnd_name="CLM50"> clm50</desc>
<desc lnd_opt="BGC"> with biogeochemistry</desc>
<desc lnd_opt="BGC-CROP"> with biogeochemistry and the crop model active</desc> rather than what we currently have, which has separate listings for CLM45%BGC, CLM50%BGC, CLM45%BGC-CROP, CLM50%BGC-CROP, etc. If we had an option that only applied to a certain physics option, it could be done like this: <desc lnd_name="CLM50" lnd_opt="FOO"> some option that only applies to CLM50</desc> (Although in the case of CLM, I think those restrictions might be easier to handle by having appropriate error checking in build-namelist rather than trying to list the allowed / disallowed combinations in the xml. But let's not get hung up on that point, because I think it's purely academic for now - since I think all options are supported with both CLM45 and CLM50.) |
Ah therein lies the problem. CLM has determined that only one option at a time is allowed. Instead of CLM50%BGC%CROP you do CLM50%BGC-CROP but other components want to allow multiple options CAM50%CLUBB%RMP We either need to standardize one syntax or the other or propose something that works for both - I think that what Steve has will work for both cases, what you have will not. |
@jedwards4b - my comment was not meant to address the combination of options. I am perfectly happy with @gold2718 's suggestion for that. I was really just trying to address the separation of the component name from the component's options. Sorry for creating confusion here. So we could have something like: <desc lnd_name="CLM45"> clm45</desc>
<desc lnd_name="CLM50"> clm50</desc>
<desc lnd_opt="%BGC[%CROP]"> with biogeochemistry, with optional crop model</desc> |
@billsacks - The issue with the separation is that in CAM, not all options apply to every CAM physics option. I think the choice comes down to duplication or lots of regular expression syntax. |
@jedwards4b - [%CLB] is only regular expression syntax if you treat the string as a regular expression. In our discussion last week, I thought we decided to try using sets with optional members with no regular expressions. My proposal above is using that idea. Parsing the string would create an exact string match plus a set of options. |
@billsacks - The CAM4% and CAM5% were typos (edited above) but everything else is intentional. CAM currently supports nine separate physics packages (roughly equivalent to to CLM's CLM45 and CLM50). The allowed option sets vary widely between these different packages. |
@gold2718 instead of just splitting the string on % I also have to deal with the [] now, |
@jedwards4b, I was hoping we could keep this syntax because it is clearer for users (mimics shell optional argument syntax). For parsing, something like: |
Here is a little test program that I think implements @gold2718 proposal. I'm not sure how to parse the description to separate the required from the optional part of the comment. It seems like you don't want 'with optional CO2 Ramp [%RCO2]' if your compset didn't specify it. Can we put optional argument descriptions separately? That is we might have
in addition to what you have above?
|
To record a conversation I just had with @gold2718 - regarding this point:
For CAM, I think this amounts to a pretty simple change for each line of xml: Anywhere where @gold2718 's xml file would have something like <desc atm="CAM50[%WCCM][%RCO2]" > my proposal simply separates the full 'atm' string into 'atm_name' and 'atm_opts' like this: <desc atm_name="CAM50" atm_opts="[%WCCM][%RCO2]" > For CAM, it sounds like this just adds some verbosity without much benefit. But for CLM, this would make things simpler (with less duplication) and more robust moving forward. |
@billsacks - where is the analogous clm example that shows the benefit of this additional change? Show me how it makes things simpler and more robust. |
Let me try to summarize my thinking on this, as well as what @jedwards4b and I just discussed. @jedwards4b helped clarify for me a misunderstanding I had about exactly how this would look. Under the combined @gold2718 & @jedwards4b proposal, I think CLM's options would look like this (partial example, but adding the rest of the entries doesn't help illuminate things any more): <desc lnd="CLM45[%SP][%BGC][%BGC-CROP]"> CLM45 physics</desc>
<desc lnd="CLM50[%SP][%BGC][%BGC-CROP]"> CLM50 physics</desc>
<desc option="SP"> satellite phenology</desc>
<desc option="BGC"> biogeochemistry</desc>
<desc option="BGC-CROP"> biogeochemistry with crop model</desc> I now see why my suggestion didn't get much traction, because under that scheme, the separation of lnd_name doesn't help much, if at all: Actually, @jedwards4b 's most recent suggestion went a long way towards what I was thinking. I have been approaching this more from the perspective of what I've wanted for a long time in matches outside of the entries. I understand that we're not dealing with that right now, but I'm getting some messages that it may be worth at least keeping that long-term goal in mind here. To that end, I was thinking about the compset matches that we have in these places:
Example (CLM's LND_TUNING_MODE) <value compset="_CLM40" >clm4_0_default</value>
<value compset="_CLM45" >clm4_5_CRUNCEP</value>
<value compset="_CLM50" >clm5_0_cam5.5</value>
<value compset="DATM.+_CLM50" >clm5_0_GSW3P</value>
<value compset="DATM%GSWP3.+_CLM50" >clm5_0_GSW3P</value>
<value compset="CAM.+_CLM50" >clm5_0_cam5.5</value> Example (CLM_BLDNML_OPTS, currently buggy because I think it's incomplete) <value compset="_CLM45%[^_]*SP" >-bgc sp</value>
<value compset="_CLM45%[^_]*CN" >-bgc cn</value>
<value compset="_CLM45%[^_]*BGC" >-bgc bgc</value>
<value compset="_CLM45%[^_]*CN-CROP" >-bgc cn -crop</value>
<value compset="_CLM45%[^_]*BGC-CROP" >-bgc bgc -crop</value>
<value compset="_CLM45%[^_]*CNDV" >-bgc cn -dynamic_vegetation</value>
<value compset="_CLM45%[^_]*BGCDV" >-bgc bgc -dynamic_vegetation</value>
<value compset="_CLM45%[^_]*CNDV-CROP" >-bgc cn -dynamic_vegetation -crop</value>
<value compset="_CLM45%[^_]*BGCDV-CROP" >-bgc bgc -dynamic_vegetation -crop</value>
<value compset="_CLM45%[^_]*FATES" >-bgc fates -no-megan</value>
<value compset="_CLM50%[^_]*SP" >-bgc sp</value>
<value compset="_CLM50%[^_]*BGC" >-bgc bgc</value>
<value compset="_CLM50%[^_]*BGCDV" >-bgc bgc -dynamic_vegetation</value>
<value compset="_CLM50%[^_]*BGC-CROP" >-bgc bgc -crop</value>
<value compset="HIST.*_CLM50%[^_]*BGC-CROP">-bgc bgc -crop -irrig .true.</value>
<value compset="2000.*_CLM50%[^_]*BGC-CROP">-bgc bgc -crop -irrig .true.</value>
<value compset="_CLM50%[^_]*BGCDV-CROP" >-bgc bgc -dynamic_vegetation -crop</value>
<value compset="_CLM50%[^_]*FATES" >-bgc fates -no-megan</value>
Example: CCSM_BGC <value compset="_CAM">CO2A</value>
<value compset="_DATM">none</value>
<value compset="_DATM%CPLHIST.+POP\d">CO2A</value>
<value compset="HIST.*_DATM.*_CLM">CO2A</value>
<value compset="RCP.*_DATM.*_CLM">CO2A</value>
<value compset="_BGC%BPRP">CO2C</value>
<value compset="_BGC%BDRD">CO2C</value> Example: ATM_NCPL <value compset="_CAM.*">48</value>
<value compset="_CAM\d+%WCBC">144</value>
<value compset="_CAM\d+%WCMX">288</value>
<value compset="_CAM\d+%WCXI">288</value>
<value compset="_CAM%ADIAB">48</value>
<value compset="_CAM%IDEAL">48</value>
<value compset="_DATM%COPYALL_NPS">72</value>
<value compset="_DATM.*_CLM">48</value>
<value compset="_DATM.*_DICE.*_POP2">4</value>
<value compset="_DATM.*_SLND.*_CICE.*_POP2">24</value>
<value compset="_DATM.*_CICE.*_DOCN">24</value>
<value compset="_DATM.*_DOCN%US20">24</value>
<value compset="_DATM%CPLHIST.+POP\d">48</value>
<value compset="_MPAS">1</value> Example: OCN_NCPL (note likely bugginess: it references CLM4, but not CLM5!) <value compset="_POP2">1</value>
<value compset="_POP2" grid="oi%tx0.1v2">4</value>
<value compset="_POP2" grid="oi%gx1v6">24</value>
<value compset="_POP2" grid="oi%gx1v7">24</value>
<value compset="_DATM.*_CLM4.*_SICE.*_SOCN">1</value>
<value compset="_DATM%NYF.*_SLND.*_DICE.*_DOCN.*_SWAV">1</value>
<value compset="_DATM%NYF.*_DLND.*_DICE.*_DOCN.*_DWAV">1</value>
<value compset="_XATM.*_XLND.*_XICE.*_XOCN">1</value>
<value compset="_DATM.*_CLM4.*_SICE.*_SOCN">1</value>
<value compset="_SATM.*_SLND.*_SICE.*_SOCN">1</value>
<value compset="_DLND.*_CISM\d">1</value>
Example: <pes pesize="any" compset="CAM.+CLM.+CICE.+POP.+SWAV">
Example: <model_grid alias="1x1_mexicocityMEX" compset="DATM.+CLM"> The way I could see to avoid buggy and hard-to-maintain regular expressions in all of these is to separate the compset into its various pieces: atm_model, atm_opts (and probably a separate atm_version (40, 50, 60, etc.)), lnd_model, lnd_opts (and probably a separate lnd_version (40, 45, 50, 55, etc.) - etc. Also, possibly having the more general variables atm_type, lnd_type, etc., which can be active, stub, data, coupler_test. I have to run now, but if people want me to write out what each of my examples would look like with this proposed separation, I can do so. |
@jedwards4b @gold2718 @mvertens - Actually, I'm feeling overwhelmed about everything I'm supposed to get done this week, so I'm hesitant to take more time to think through this. So I'd propose that you move ahead with what you have laid out for the |
Cam description updated to the current proposal.
|
@billsacks, without commentary or alternative proposals, it is hard to understand what issues you have with the current sections in config_componont.xml. All I can do now is move forward with the |
@jedwards4b, Here is an attempt for a hybrid solution. I also moved the option descriptions to their own section to make them easier to find.
|
@gold2718 I don't understand - I posted the compromise after talking with @billsacks, did you even look at it? With this compromise we don't need to separate atm_name and atm_opts. |
@jedwards4b, Yes, I looked at it and it works fine for CAM. I was exploring @billsacks' suggestion to separate out the options to allow a |
@mvertens and @gold2718 asked me to provide some more details of my thinking, and to work through There are two basic principles that are motivating me here:
How do we get there? In my ideal world, the scripts would parse the compset long name into each of its pieces, storing each piece in a separate variable that could be matched in xml files, without resorting to error-prone regular expressions in most cases. For each component (i.e., each piece of the compset long name that is separated by '_'), we can extract the following variables; here I use lnd as an example, but we'd have similar variables for atm, ocn, etc.:
Let's apply these principles to OCN_NCPL. For each line, I'll give the old, the proposed new, and some commentary. I know that the new is a bit more verbose than the old in these examples, but I think it's worth it for being more explicit and robust, and as I mention in my comments, I think many of these could be shortened. Old: <value compset="_POP2">1</value>
<value compset="_POP2" grid="oi%tx0.1v2">4</value>
<value compset="_POP2" grid="oi%gx1v6">24</value>
<value compset="_POP2" grid="oi%gx1v7">24</value> New: <value ocn_name="POP">1</value>
<value ocn_name="POP" grid="oi%tx0.1v2">4</value>
<value ocn_name="POP" grid="oi%gx1v6">24</value>
<value ocn_name="POP" grid="oi%gx1v7">24</value> Comments: It seems that these are really just meant to apply to POP, and would differ for some other ocean model (e.g., MOM). So there's not much change here. The leading underscore is no longer needed, breaking dependence on the format of the compset long name. And I've gotten rid of the version number, because if there were ever a POP v. 3, the old version would give the default value for OCN_NCPL rather than matching these lines. (One could argue that these lines are meant to apply to any active ocean model, or that these are only supposed to apply to POP v. 2; either of these could be done, and now the meaning would be more explicit.) Old: <value compset="_DATM.*_CLM4.*_SICE.*_SOCN">1</value> New: <value atm_type="data" lnd_type="active" ice_type="stub" ocn_type="stub">1</value> Comments: The important part here is getting rid of CLM4 from the match, since this should apply for any active land model (CLM5 or some alternative land model). I suspect that this rule could actually be shortened; e.g., maybe it really applies any time you're running with ocn_type="stub", because OCN_NCPL doesn't matter in that case??? Old: <value compset="_DATM%NYF.*_SLND.*_DICE.*_DOCN.*_SWAV">1</value>
<value compset="_DATM%NYF.*_DLND.*_DICE.*_DOCN.*_DWAV">1</value> New: ??? Comments: I'm not sure what the important thing here is. Is the important thing that we are running DATM with atm_opts="NYF"? Or is the important thing that we're running DOCN? Old: <value compset="_XATM.*_XLND.*_XICE.*_XOCN">1</value> New: <value atm_type="coupler_test" lnd_type="coupler_test" ice_type="coupler_test" ocn_type="coupler_test">1</value> Comments: Again, I think this should be shortened. I suspect the real rule is to use a value of 1 whenever ocn_type="coupler_test". Old: <value compset="_SATM.*_SLND.*_SICE.*_SOCN">1</value> New: <value atm_type="stub" lnd_type="stub" ice_type="stub" ocn_type="stub">1</value> Comments: Comments: Again, I think this should be shortened. I suspect the real rule is to use a value of 1 whenever ocn_type="stub". Old: <value compset="_DLND.*_CISM\d">1</value> New: <value atm_type="data" glc_type="active" ocn_type="stub">1</value> Comments: A key piece is making this more general so it matches any active glc. I've added ocn_type="stub" here because I think that's actually important in this rule. This could perhaps be combined with a general rule that we use a value of 1 whenever we have ocn_type="stub". Another good example is CLM_BLDNML_OPTS. Currently this looks like this: <value compset="_CLM45%[^_]*SP" >-bgc sp</value>
<value compset="_CLM45%[^_]*CN" >-bgc cn</value>
<value compset="_CLM45%[^_]*BGC" >-bgc bgc</value>
<value compset="_CLM45%[^_]*CN-CROP" >-bgc cn -crop</value>
<value compset="_CLM45%[^_]*BGC-CROP" >-bgc bgc -crop</value>
<value compset="_CLM45%[^_]*CNDV" >-bgc cn -dynamic_vegetation</value>
<value compset="_CLM45%[^_]*BGCDV" >-bgc bgc -dynamic_vegetation</value>
<value compset="_CLM45%[^_]*CNDV-CROP" >-bgc cn -dynamic_vegetation -crop</value>
<value compset="_CLM45%[^_]*BGCDV-CROP" >-bgc bgc -dynamic_vegetation -crop</value>
<value compset="_CLM45%[^_]*FATES" >-bgc fates -no-megan</value>
<value compset="_CLM50%[^_]*SP" >-bgc sp</value>
<value compset="_CLM50%[^_]*BGC" >-bgc bgc</value>
<value compset="_CLM50%[^_]*BGCDV" >-bgc bgc -dynamic_vegetation</value>
<value compset="_CLM50%[^_]*BGC-CROP" >-bgc bgc -crop</value>
<value compset="HIST.*_CLM50%[^_]*BGC-CROP">-bgc bgc -crop -irrig .true.</value>
<value compset="2000.*_CLM50%[^_]*BGC-CROP">-bgc bgc -crop -irrig .true.</value>
<value compset="_CLM50%[^_]*BGCDV-CROP" >-bgc bgc -dynamic_vegetation -crop</value>
<value compset="_CLM50%[^_]*FATES" >-bgc fates -no-megan</value> The problem here is that every option needs to be listed for CLM45 and CLM50. Note that, currently the CLM50 list is incomplete (buggy!). As new CLM versions are added, these lists will need to be duplicated over and over. As new compset options are added, they will need to be added to the list for each CLM version (assuming that we continue down our current path, where new options can be applied to old version packages). In contrast, under my proposal, the duplication would be removed, becoming something like this (only shown for the first few items, but the rest follow this same pattern): <value lnd_opts="SP" >-bgc sp</value>
<value lnd_opts="CN" >-bgc cn</value>
<value lnd_opts="BGC" >-bgc bgc</value>
<value lnd_opts="CN-CROP" >-bgc cn -crop</value> If certain options only applied to particular versions, this could be accomplished by adding a lnd_version attribute. (However, at least for CLM, it's probably most robust to do this consistency check in build-namelist, since a general rule would look like, "applies to versions >= X (and possibly <= Y)", which is currently impossible to express concisely with xml attributes, and challenging to express correctly even with regular expressions.) |
@billsacks, my short answer to your post is that I do not think any of this impacts the proposal for the change to the 1c) This is a CESM3 issue and compset names will adapt to include new component types along with the elimination of stubs. However, the new syntax must include the ability to separate out by component type so this type of change is a non issue. 1d) I'm sure the
I do not think your proposed
would apply to both POP and MOM even though it may only be valid for POP. This is analogous to your issue of falling through to to a default because you did not specify any values for a new model or model version. Regardless of syntax, overriding the default behavior of a system requires a new configuration entry and classification systems (e.g., 'active' vs. 'data' or regular expressions) are prone to 'pattern rot' (my new technical term of the day) in that a classification that works now, may break when new pattern possibilities are introduced to the system (e.g., new models, model types, or model versions). I suggest we strive for specific default overrides to avoid 'pattern rot'. I think your examples with stubs are irrelevant since stubs will be going away post-CESM2 (the NUOPC-based system does not require stubs). |
@gold2718 - thanks for your reply here. I think we're largely in agreement about (1) the need to move away from using the But I will continue to strongly argue for the need for a generic @jedwards4b recently added some code along these lines in case.py: _find_primary_component – i.e., determining the mix of prognostic components. I'm just asking for this information to be brought to a higher level and made available in the xml matches so that it can be used when needed. Again, this is a post-cesm2 request, and one that I'd be happy to help implement when the time comes. I'm just bringing it up now because I was asked :-) |
I'm glad we are postponing any decision on new attributes (beyond the component-type attribute we are adding for If searching through XML files for places where new entries need to be made is error prone, it sounds like a good place for a test. In fact, requiring entries for every supported model (e.g., DOCN, POP, MOM, MPAS-O) and avoiding default entries makes all of this easier and less error prone. |
Is the result of this discussion going to require changes to existing component xml files? |
Currently the description section is not parsed for error checking in user
compsets. We will introduce a new schema and version for the description
section that will be parsed for error checking when you specify user
compsets. If you want to turn on that error checking then you will need to
change ONLY the description section of your component file. But since the
current behavior is not to parse it and do any error checking everything
that we are doing is backwards compatible.
…On Tue, Jun 13, 2017 at 3:20 PM, Robert Jacob ***@***.***> wrote:
Is the result of this discussion going to require changes to existing
component xml files?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#1522 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/AHlxE-nCi_pd2VHGG3-PJuYO0ZcHGtohks5sDv0EgaJpZM4NZcB->
.
|
Description field error check of user compsets. This PR introduces version 3.0 schema for entry_id files bringing the description field to the top of the file and refining it to better define valid compsetname values. Change definition of primary component as suggested in PR 1692. Test suite: scripts_regression_tests.py, several F case user compsets with modified cam config_component.xml Test baseline: Test namelist changes: Test status: bit for bit Fixes #1522 Fixes #1683 User interface changes?: Update gh-pages html (Y/N)?: Code review: @gold2718 @billsacks
I would like to remove this comment in case.py - can someone give me an example that
gets this far with invalid compset settings?
The text was updated successfully, but these errors were encountered: