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.

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