Heterogeneous permeability field

44 views
Skip to first unread message

Peishi Jiang

unread,
Nov 3, 2021, 2:20:54 PM11/3/21
to Amanzi-ATS Users
Hi there,

Is there a way to specify a heterogeneous permeability field in ATS (i.e., different permeability in each cell)? For example, can we do something like having a h5 file storing all permeability values and linking them with cell ids?

If yes, is there an example that I can refer to?

Thank you,
Peishi

Olawale Quadri Ogunsola

unread,
Jul 28, 2026, 2:19:03 PM (5 days ago) Jul 28
to Amanzi-ATS Users

Hi ATS community,

I would like to follow up on a question raised in 2021. Is ATS v1.6 currently able to initialise a spatially variable permeability field directly from an Exodus file at the cell level?

I have been attempting to initialise permeability using an Exodus element variable with the following configuration, and I have been working through this issue for several days now:

<ParameterList name="permeability" type="ParameterList">

                <Parameter name="evaluator type" type="string" value="independent variable tensor"/>

                <Parameter name="constant in time" type="bool" value="true"/>

                <Parameter name="tensor type" type="string" value="scalar"/>

                <ParameterList name="exodus file initialization" type="ParameterList">

                                <Parameter name="file" type="string" value="../Geo_permeability.exo"/>

                                <Parameter name="attributes" type="Array(string)" value="{PERMEABILITY}"/>

                </ParameterList>

</ParameterList>

 

The Exodus file contains the permeability field as an element variable named PERMEABILITY. The file contains 10,791 elements distributed across four element blocks, following the same block-based structure used previously before introducing the heterogeneous permeability field.

The Exodus file is successfully storing the spatially variable permeability values. For example, the first few entries of the element variable are:

Block 1:

Element0: ##e-##

Element1: ##e-##

 

Block 2:

Element 0: ##e-##

Element 1: ##e-##

 

Block 3:

Element 0: ##e-##

Element 1: ##e-##

 

Block 4:

Element 0: ##e-##

Element 1: ##e-##

Therefore, the Exodus file appears to contain the correct element-centred permeability field. However, I have not been able to determine the correct input structure required by ATS to map this element variable to the ATS cell component.

The errors I encountered include messages such as:

CompositeVectorFunctionFactory:

missing "function" sublist

FunctionFactory:

unknown function type: exodus file initialization

An alternative approach I also tried was to first extract cell IDs from the Paraview-supported Exodus file (Docker version), then manually assign permeability values to each element block using constant functions. However, this requires an additional preprocessing step because I have not been able to obtain the complete cell-to-permeability mapping directly from the ATS-supported Exodus file.

My questions are:

  1.  Does ATS v1.6 support direct initialisation of a cell-centred permeability field from an Exodus element variable?
  2.  If so, what is the correct input structure for specifying the cell component and mapping the PERMEABILITY element variable to ATS mesh cells?
  3.  Are there any limitations regarding element block ordering, Exodus element numbering, or cell ordering that should be considered when using this approach?

Thank you for your support. I look forward to hearing from the community.


Best regards,

Olawale

Ethan Coon

unread,
Jul 28, 2026, 2:42:55 PM (5 days ago) Jul 28
to Peishi Jiang, Amanzi-ATS Users
Yes.  The tricky part is doing it in the right order.  I'm not sure if we have an example or not -- I'm sure there is one around somewhere but it may not be somewhere obvious.

Effectively, the key is to remember that Amanzi's mesh is fully unstructured, so cells can appear in an arbitrary order.  Then, know that, when you partition onto multiple cores, you re-order those cells.  The h5 file must be in the "re-ordered" order.

So, there are few ways to do this:

1. Run with homogeneous permeability, then write a python script that maps your cells in the order of your exodus file to the cells in the order of the partitioned output.  There are a few scripts like this floating around -- hopefully someone has one that they can share.
2. Run with homogeneous permeability, then use the vis file associated with that run to figure out the cell (x,y,z) coordinates in the correct order, and compute and write your perm h5 file in that order.
3. Pre-partition the mesh using watershed workflow, which preserves order.  This will become the preferred method as of the next release.  You can do it now using specific branches of Watershed Workflow and ATS.

Either way, you'll write an h5 file and use the IndependentVariableFromFile evaluator to read that file into permeability.

Hopefully this gets you started and pointed in the right direction, and we can iterate with details as you have trouble.

Ethan







--
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/93ef26ca-a16d-4b8c-97c6-a1f9853eb9c6n%40googlegroups.com.


--

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

Ethan Coon

unread,
Jul 28, 2026, 2:47:23 PM (5 days ago) Jul 28
to Peishi Jiang, Amanzi-ATS Users
Haha, apologies, I missed that Olawale had replied to this email and was responding to Peishi's 2021 email!  I'm going to have to look into the details of this -- I don't think there is a current way to get it out of the exo file, but I want to confirm.

The working way is through separate h5 files.  But now that you mention the tensor part of it, I'm not sure we have a way of going from the h5 file into the tensor.  So let me think about this a bit.

Ethan

Reply all
Reply to author
Forward
0 new messages