From 9c92df63200ea0ff6c90783b9c96e7c7986f501a Mon Sep 17 00:00:00 2001 From: Thomas Fischer <thomas.fischer@ufz.de> Date: Thu, 20 Feb 2020 13:42:28 +0100 Subject: [PATCH] Handle Dupuit permeability. --- xml/convertLiquidFlowToMPL.py | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/xml/convertLiquidFlowToMPL.py b/xml/convertLiquidFlowToMPL.py index 7a5d19c..ceaffce 100755 --- a/xml/convertLiquidFlowToMPL.py +++ b/xml/convertLiquidFlowToMPL.py @@ -105,6 +105,14 @@ def readConstantPermeabilityTensorEntries(tree): return None +def readDupuitPermeabilityTensorParameter(tree): + type = tree.find("./type").text + if type == "Dupuit": + if (parameter := tree.find("./permeability_tensor_entries")) is not None: + return parameter.text + + return None + def mplAppendConstant(mpl_properties, name, value): mpl_properties.append(ET.XML("<property><name>" + name + "</name><type>" + \ "Constant</type><value>" + value + "</value>" + \ @@ -115,6 +123,11 @@ def mplAppendParameter(mpl_properties, tag_name, parameter_name): "Parameter</type><parameter_name>" + parameter_name + \ "</parameter_name></property>")) +def mplAppendDupuitParameter(mpl_properties, tag_name, parameter_name): + mpl_properties.append(ET.XML("<property><name>" + tag_name + "</name><type>" + \ + "Dupuit</type><parameter_name>" + parameter_name + \ + "</parameter_name></property>")) + def getVanGenuchtenSaturationValues(material_property): SLR = material_property.find("./sr").text SGR = "{0:.15g}".format(1 - float(material_property.find("./smax").text)) @@ -221,7 +234,6 @@ def addMPLMaterialProperty(root, property_type, property_name, phase, if p := readConstantPorosityParameter(material_property): # Find parameter - ET.dump(root) param = root.find("./parameters/parameter/[name='" + p + "']") if v := readConstantValue(param): mplAppendConstant(props, property_name, v) @@ -235,11 +247,15 @@ def addMPLMaterialProperty(root, property_type, property_name, phase, if parameterUsesLocalCoordinateSystem(param): # Keep parameters with local coord systems as they are. mplAppendParameter(props, property_name, p) - removeXmlSubtree(material_property) - if v := readConstantValue(param): + if v := readDupuitConstantValue(param): mplAppendConstant(props, property_name, v) - removeXmlSubtree(material_property) - #removeXmlSubtree(param) + return + + if p := readDupuitPermeabilityTensorParameter(material_property): + # Find parameter + param = root.find("./parameters/parameter/[name='" + p + "']") + # Keep parameters for Dupuit permeability as they are. + mplAppendDupuitParameter(props, property_name, p) return if (property_name == "relative_permeability" \ @@ -298,6 +314,10 @@ def removeMaterialProperty(root, property_type, property_name, phase, removeXmlSubtree(param) return + if p := readDupuitPermeabilityTensorParameter(material_property): + removeXmlSubtree(material_property) + return + if (property_name == "relative_permeability" \ or property_name == "capillary_pressure") \ and isCurveType(material_property): -- GitLab