Since PLAXIS 2D 2019, the Input program has an improved way of modelling soil layers. As an addition to the “Modify Soil Layers” window, the soil stratigraphy is now also available in the model explorer under “Stratigraphy”. The “Boreholes” group is now also moved here. Users can, for example, change the layer thickness or top and bottom depths directly via the Model explorer, instead of only relying on the “Modify Soil Layers” window. The changes are also reflected in the command line, giving users who use Python scripting a better structure to access the soil layers information in the model.
With the new PLAXIS 2019 implementation, we have introduced a new item called Stratigraphy which is split into two parts: Boreholes and Soil layers:
The Python script below shows how to return a list of dictionaries with the following relevant info: soil layer's name, top, bottom and thickness.
def get_borehole_layers(borehole): """ reads the borehole information to collect soillayer thickness information and returns a dictionary per layer top-down """ borehole_layers = [] for soillayer in g_i.Soillayers: for zone in soillayer.Zones: if (zone.Borehole.value) == borehole: borehole_layers.append({"name": soillayer.Name.value, "top": zone.Top.value, "bottom": zone.Bottom.value, "thickness": zone.Thickness.value } ) return borehole_layers boreholelayers = get_borehole_layers(g_i.Borehole_1) for boreholelayer in boreholelayers: print(boreholelayer)
When using this code for 2D's Tutorial Lesson 2, this will be the result:
Python response in interpreter >>> {'name': 'Soillayer_1', 'bottom': 0, 'thickness': 20, 'top': 20} {'name': 'Soillayer_2', 'bottom': -30, 'thickness': 30, 'top': 0} >>>
In older versions (e.g. PLAXIS 2D 2018, 3D 2018) the information was only stored in theBorehole object.
In each borehole, the information is stored for the different soil layers and their height. The Python script below returns a list of dictionaries with the relevant info: the soil layer's name, top, bottomand thickness.The Soillayers will be sorted top-down.
import re def get_borehole_layers(borehole): results = [] for line in borehole.echo().splitlines(): # Try to match something like: # "Layer 4: From -19 to -21 (thickness = 2)" m = re.search('(Layer .*): From (.*) to (.*) \(thickness = (.*)\)', line) if m is not None: results.append({'name': m.group(1), 'top': float(m.group(2)), 'bottom': float(m.group(3)), 'thickness': float(m.group(4))}) return results # for a model with at least two soil layers print(get_borehole_layers(g_i.Borehole_1)[1]) # prints the dict print(get_borehole_layers(g_i.Borehole_1)[1]["top"]) # prints the top level value
The script uses the re module for regular expressions.
The first example was made with PLAXIS 2D 2019.00 using Python 3.4.x.
The above examples are made with PLAXIS 2D 2017.00 and PLAXIS 3D 2016.02 using Python 3.4.x.
Using PLAXIS Remote scripting with the Python wrapper
[Tips and Tricks]
Identify Python commands from Plaxis command line
[Python Scripts]
Plaxis Soil model numbers in command line
Soil layer material assignment using Python