about Evaluator "root_fraction@" when running ATS v1.5

137 views
Skip to first unread message

Yi Xu

unread,
Jul 16, 2024, 11:23:37 PM7/16/24
to Amanzi-ATS Users
Dear ATS Users/Developers,

I recently installed ATS v1.5.0 , the latest released version. I tried to run it with my v1.4 series xml file, however,  I got the error as follows.

what():  Evaluator "root_fraction@" cannot be created in State. Verify (1) SetEvaluator is called or (2) name exists in state->evaluators.


I think I may need to convert my xml file from v1.4 to v1.5 before I run it. I checked ats/tools/input_converter on ATS GitHub and there is no a python code (e.g., xml-1.4-1.5.py ) to do it.  



I post the relevant settings in my xml file as follows. I tried different settings and none of them can solve this issue.


(1)Original setting, which works for v1.4 series. It does not work for v1.5


<ParameterList name="rooting_depth_fraction" type="ParameterList">
    <Parameter name="evaluator type" type="string" value="rooting depth fraction" />
     <Parameter name="units" type="string" value="-" />
 </ParameterList>


I also tried the following two settings, however, I got the same error.


(2)

<ParameterList name="rooting_depth_fraction" type="ParameterList">
      <Parameter name="evaluator type" type="string" value="root fraction" />
      <Parameter name="units" type="string" value="-" />
 </ParameterList>


(3)

<ParameterList name="rooting_depth_fraction" type="ParameterList">
        <Parameter name="evaluator type" type="string" value="root_fraction" />
         <Parameter name="units" type="string" value="-" />
 </ParameterList>


Does anyone can help this ?  Or do you have any suggestions to convert xml file from v1.4 series to v1.5?  Thank you


Yi






Phong Le

unread,
Jul 16, 2024, 11:42:30 PM7/16/24
to Amanzi-ATS Users
Hi Yi,

In both master and ats-1.5 branches, there is a python converter file named xml-1.4-1.5.py in the folder: /ats/tools/input_converters/
You can use this to convert the xml files from 1.4 to 1.5.

Thanks
Phong

Yi Xu

unread,
Jul 17, 2024, 12:15:00 AM7/17/24
to Amanzi-ATS Users
Hi Phong,

I found it and it was updated a few hours ago.  That is great!  

Best regards,
Yi

Yi Xu

unread,
Jul 17, 2024, 1:17:52 AM7/17/24
to Amanzi-ATS Users
Hi Phong,

I did a test by using xml-1.4-1.5.py to convert xml file.


The relevant part in my xml file was converted from : 

        <ParameterList name="rooting_depth_fraction" type="ParameterList">
             <Parameter name="evaluator type" type="string" value="rooting depth fraction" />
             <Parameter name="units" type="string" value="-" />
       </ParameterList>

To: 

      <ParameterList name="rooting_depth_fraction" type="ParameterList">
           <Parameter name="evaluator type" type="string" value="root fraction" />
           <Parameter name="units" type="string" value="-" />
      </ParameterList>


I got the same error:

what():  Evaluator "root_fraction@" cannot be created in State. Verify (1) SetEvaluator is called or (2) name exists in state->evaluators.



I also tested <Parameter name="evaluator type" type="string" value="root_fraction" />. However, it is the same error. I am not sure why.



Best regards,

Yi





Ethan Coon

unread,
Jul 17, 2024, 2:22:09 AM7/17/24
to Yi Xu, Amanzi-ATS Users
This was a mistake on my part when I made the release — I forgot to rename the input converter.  It is called xml-1.4-master.py in the release.  I have fixed this issue this morning, but you wouldn’t have seen it without pulling the ATS repo.

Ethan


-------------------------------------------------------------------
Ethan Coon
917-969-6831
https://www.ornl.gov/staff-profile/ethan-t-coon
-------------------------------------------------------------------


--
You received this message because you are subscribed to the Google Groups "Amanzi-ATS Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ats-users+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ats-users/70bcd9d0-78b0-4727-8c4d-7e1fb80f27d3n%40googlegroups.com.

Bo Gao

unread,
Jul 17, 2024, 11:18:10 AM7/17/24
to Yi Xu, Amanzi-ATS Users
Hi Yi,

If you still have this issue, try to change the parameterlist name "rooting_depth_fraction" to "root_fraction". This has been renamed but probably not included in the input converter (?)

Best,
Bo Gao

--
You received this message because you are subscribed to the Google Groups "Amanzi-ATS Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ats-users+...@googlegroups.com.

Coon, Ethan

unread,
Jul 17, 2024, 12:06:07 PM7/17/24
to Bo Gao, Yi Xu, Amanzi-ATS Users

Yes, the default variable name and evaluator name were both changed, but it looks like only the evaluator name was updated by the input converter?  Bo, can you add that change to the input converter as well?

 

Thanks,

 

Ethan

 

Bo Gao

unread,
Jul 17, 2024, 12:25:54 PM7/17/24
to Coon, Ethan, Yi Xu, Amanzi-ATS Users
Yep, submitted a PR.

Yi Xu

unread,
Jul 17, 2024, 12:34:30 PM7/17/24
to Bo Gao, Coon, Ethan, Amanzi-ATS Users
Hi Ethan and Bo,

Thanks for your updates! After I changed  "rooting_depth_fraction" to "root_fraction" in xml-1.4-1.5.py (last night's version), it works now!  Thanks for your suggestions!

Best regards,

Yi

Bing Li

unread,
Apr 7, 2025, 5:17:58 PM4/7/25
to Amanzi-ATS Users

Hi Ethan,

I'm currently working with the RootingDepthFractionEvaluator in ATS and was wondering whether the current implementation supports multiple root depth profile functions beyond the default double-exponential form. Specifically, I'm interested in adding support for other commonly used profiles such as:

  • Single exponential

  • Gaussian

  • Jackson function (cumulative form)

This would provide more flexibility in modeling different plant functional types (PFTs), and align with root distribution representations in models like CLM, Noah-MP, and JULES.

If this functionality is not currently available, would it be acceptable for me to implement this extension and submit a pull request to the GitHub repository?

I'm happy to ensure that the design is general and backward-compatible. 

Best regards,
Bing

Ethan Coon

unread,
Apr 7, 2025, 6:35:40 PM4/7/25
to Bing Li, Amanzi-ATS Users
Nope, the current code is pretty much hard coded as double exponential.  Alternative implementations shouldn’t be hard and the contribution would be welcome!

Ethan


-------------------------------------------------------------------
Ethan Coon
917-969-6831
https://www.ornl.gov/staff-profile/ethan-t-coon
-------------------------------------------------------------------

Bing Li

unread,
Apr 18, 2025, 12:14:48 AM4/18/25
to Amanzi-ATS Users
Hi Ethan,

Thanks for your previous response. I have successfully compiled the updated version of the rooting depth evaluator, and I am currently testing both the Gaussian and Jackson profile types.

In the meantime, I would like to ask a follow-up question. I have observational data describing the root density distribution with depth, but it does not follow an analytical form such as double exponential, Gaussian, or Jackson.

In this case, is it possible to directly use the root_fraction evaluator to prescribe the root distribution values manually?

<ParameterList name="root_fraction" type="ParameterList">
  <Parameter name="evaluator type" type="string" value="independent variable"/>
  <ParameterList name="function" type="ParameterList">
    <ParameterList name="domain" type="ParameterList">
      <Parameter name="region" type="string" value="computational domain"/>
      <Parameter name="component" type="string" value="cell"/>
      <ParameterList name="function" type="ParameterList">
        <ParameterList name="function-tabular" type="ParameterList">
          <Parameter name="file" type="string" value="custom_root_fraction.dat"/>
          <Parameter name="x header" type="string" value="cell index"/>
          <Parameter name="y header" type="string" value="root fraction"/>
        </ParameterList>
      </ParameterList>
    </ParameterList>
  </ParameterList>
</ParameterList>

"custom_root_fraction.dat "
cell index    root fraction
0             0.15
1             0.18
2             0.22
3             0.17
4             0.10

If so, do I still need to define the rooting profile parameters such as rooting profile alpha and beta in the land cover types section, or can those be omitted when root_fraction is explicitly provided?

I appreciate your guidance on this and thank you again for your help.

Best regards,
Bing Li

Coon, Ethan

unread,
Apr 21, 2025, 10:07:13 AM4/21/25
to Bing Li, Amanzi-ATS Users

Absolutely.  This is the advantage of the dependency graph/evaluator system – it can be any of ATS’s evaluators that you want; loading it from data as an independent variable is completely valid.

 

Likely you actually want to write this as a function of depth, so you’ll want to first make sure you have a “depth evaluator” defining the depth of each grid cell.  Then, you can write your rooting fraction as a function of the depth as an “secondary variable from function”, where the “dependencies” are just “{depth}”.  Then your function can be tabular in depth.  Realize this will have to be a function of actual depth, not of “cell index”.

 

Alternatively, you could provide a file that prescribed the rooting fraction, but this would have to be a value for every grid cell, not for a vertical column.

 

I’m not entirely sure if the rooting exponents can then be omitted.  They should be able to be omitted – they’ll be NaN but they shouldn’t get used, so it shouldn’t be a problem.  But if the code errors complaining about the NaN, you may find that you have to provide them to get the code to not error even if they’re not used (I’ll fix this if it’s true).

 

Ethan

 

Reply all
Reply to author
Forward
0 new messages