GEOS-DEV / GEOS-DEV/GEOS

`TimeHistory` cannot gather the same field from different locations

Open
#2,300 6 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

type: feature
Dominant language
C++
Stars
287
Forks
109
Avg merge
4d 41m
Merged PRs (30d)
5

Description

It’s possible for TimeHistory to gather multiple sources of information into one unique file.
But it’s not possible for the TimeHistory/PackCollection pair to extract the same field on multiple locations and save them into the same file.
Consider the PoroElastic_Mandel test case.
For convenience, generate the cubic mesh with two different cell blocks (here cb1 and cb2):

<Mesh>
 <InternalMesh
  name="mesh1"
  elementTypes="{ C3D8 }"
  xCoords="{ 0.0, 0.5, 1.0 }"
  yCoords="{ 0.0, 0.1 }"
  zCoords="{ 0.0, 1.0 }"
  nx="{ 10, 10 }"
  ny="{ 1 }"
  nz="{ 20 }"
  cellBlockNames="{ cb1, cb2 }"/>
</Mesh>

and accordingly

<ElementRegions>
 <CellElementRegion
  name="Domain"
  cellBlocks="{ cb1, cb2 }"
  materialList="{ shale, water }"/>
</ElementRegions>

Then create/update the Tasks

<PackCollection
 name="pressureCollection"
 objectPath="ElementRegions/Domain/cb1"
 fieldName="pressure"/>
<PackCollection
 name="pressureCollection2"
 objectPath="ElementRegions/Domain/cb2"
 fieldName="pressure"/>

and the TimeHistory

<TimeHistory
 name="pressureHistoryOutput"
 sources="{/Tasks/pressureCollection, /Tasks/pressureCollection2}"
 filename="pressure_history"/>

Do not forget to trigger

<PeriodicEvent
 name="pressureCollection" 
 target="/Tasks/pressureCollection"/>
<PeriodicEvent
 name="pressureCollection2"
 target="/Tasks/pressureCollection2"/>
<PeriodicEvent
 name="pressureOutput"
 targetExactTimestep="0"
 target="/Outputs/pressureHistoryOutput"/>

The case described does not work as TimeHistory does not know how to “merge” the same field into the same file.

Additionally, we can provide one set, but if this set is spread over two sub regions, then the process fails since they can't be merged.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the TimeHistory and PackCollection handling described in the PoroElastic_Mandel example, reproducing the configuration with cb1 and cb2. Done means pressure from both locations, including fields split across subregions, can be merged into one pressure_history file.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
data, hpc
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.