Skip to content

Add utility/methods to generate more complex subsurfaces #176

Description

@dbrakenhoff

For more complex layering, it would be nice if there was a way of creating these more complex systems in a user-friendly way.

Some psuedo code to kick-start the thinking process (obviousy naming and desired features/functionality will have to be figured out when developing this).

import timflow as tf

# utility for specifying layers with thicknesses (accept either thickness or absolute z elevations?)
lm = tf.LayerModel(
    [
        tf.Aquifer("Aquifer 0", H=10.0, kaq=1e-4, Saq=1e-4),
        tf.Aquitard("Aquitard 0", H=2.0, c=100.0, Sll=1e-6),
        tf.Aquifer("Aquifer 1", H=[5.0, 5.0, 5.0], kaq=10, kzoverkh=0.1),  # <- generates 3 aquifers with thickness 5
    ],
    ztop=0.0,
    topboundary="confined",  # can maybe be derived from input above?
    ...
)

# helper functions for obtaining aquifer layer numbers
lm.get_aquifer_layer_number("Aquifer 0") # --> returns 0
lm.get_aquifer_layer_number("Aquifer 1", sublayer=2) # --> returns 3
lm.get_aquifer_layer_number("Aquifer 1") # --> returns [1, 2, 3]

# get layer summary
lm.get_layer_summary() # -> return table with layer properties kaq, c, etc. for each aquifer/aquitard

# build model directly from layer model
ml = tf.transient.Model.from_layer_model(lm)  # build model from layer model

One challenge to consider is when calibrating the example above you would want to calibrate kzoverkh in Aquifer 1, and not the individual derived resistance values of the sublayers. Not sure how to do that yet, but we can attempt crossing that bridge when we get there.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions