Source code for hyvr.geo.ae_types
"""
This module contains the architectural element types.
"""
from hyvr.geo.ae_realization import AERealization
from hyvr.geo.sheet_ae import SheetAE
from hyvr.geo.channel_ae import ChannelAE
from hyvr.geo.trough_ae import TroughAE
[docs]class AEType:
"""
Architectural element types are the kind of things that are read from the
supplied ini-file. For example, in the ``made.ini`` testcase, there are the
architectural element types "clay_sheet", "sand_sheet", "clay_lens",
"crossbedded_scour", ...
In HyVR, these are instances of the ``AEType`` class.
The actual AEs that are realized in a HyVR simulation are instances of
``AERealization`` and are implemented in 'ae_realization.py'.
To generate a realization, you should normally call the
``generate_realization`` method of a type instance.
"""
def __init__(self, ae_section, name):
"""
AE type constructor.
Parameters
----------
ae_section : dict
Parsed element section from the ini-file.
name : str
The name of the element type (e.g. 'crossbedded_scour').
"""
self.params = ae_section
self.geometry = ae_section['geometry']
self.name = name
# older ini-files might have 'flat' instead of 'massive' as trough structure
if self.params['structure'] == 'flat':
self.params['structure'] = 'massive'
[docs] def generate_realization(self, bottom_surface, top_surface, stratum, grid):
"""
Generates a realization of the AE type.
For example, if the AE geometry is 'trunc_ellip', this generates a
``TruncEllip`` object, i.e. a sub-layer containing trough features
within a stratum.
Parameters
----------
bottom_surface : ContactSurface object
The bottom surface of the AE.
top_surface : ContactSurface object
The top surface of the AE.
model : Model object
"""
if self.geometry == 'trough':
return TroughAE(bottom_surface, top_surface, self.name, self.params, stratum, grid)
elif self.geometry == 'channel':
return ChannelAE(bottom_surface, top_surface, self.name, self.params, stratum, grid)
elif self.geometry == 'sheet':
return SheetAE(bottom_surface, top_surface, self.name, self.params, stratum, grid)
else:
raise ValueError('No such geometry in ' + self.name + ': ' + self.geometry)