From eeef036065d2de05c37cb9e99e38b19e69fe1184 Mon Sep 17 00:00:00 2001 From: Julian Heinze <julian.heinze@ufz.de> Date: Tue, 9 Jan 2024 12:46:31 +0100 Subject: [PATCH] write material for HT process --- ogstools/feflowlib/tools.py | 124 +++++++++++++++++++++++++++++++++++- 1 file changed, 123 insertions(+), 1 deletion(-) diff --git a/ogstools/feflowlib/tools.py b/ogstools/feflowlib/tools.py index 5f5f1ea98..67e0e0498 100644 --- a/ogstools/feflowlib/tools.py +++ b/ogstools/feflowlib/tools.py @@ -214,7 +214,7 @@ def get_material_properties(mesh: pv.UnstructuredGrid, property: str): material_ids = mesh.cell_data["MaterialIDs"] material_properties = {} # At the moment only properties named 'P_CONDX', 'P_CONDY', 'P_CONDZ' can be used. - assert property in ["P_COND", "P_CONDX", "P_CONDY", "P_CONDZ"] + # assert property in ["P_COND", "P_CONDX", "P_CONDY", "P_CONDZ"] for material_id in np.unique(material_ids): indices = np.where(material_ids == material_id) property_of_material = mesh.cell_data[property][indices] @@ -436,6 +436,126 @@ def materials_in_liquid_flow( return model +def materials_in_HT( + material_properties: dict, + model, +): + """ + Create the section for material properties for HT processes in the prj-file. + + :param bulk_mesh_path: path of bulk mesh + :type bulk_mesh_path: Path + :param mesh: mesh + :type mesh: pyvista.UnstructuredGrid + :param material_properties: material properties + :type material_properties: dict + :param model: model to setup prj-file + :type model: ogs6py.OGS + :return: model + :rtype: ogs6py.OGS + """ + for material_id in material_properties: + model.media.add_property( + medium_id=material_id, + phase_type="AqueousLiquid", + name="specific_heat_capacity", + type="Constant", + value=material_properties[material_id][ + "specific_heat_capacity_fluid" + ], + ) + model.media.add_property( + medium_id=material_id, + phase_type="AqueousLiquid", + name="thermal_conductivity", + type="Constant", + value=material_properties[material_id][ + "thermal_conductivity_fluid" + ], + ) + model.media.add_property( + medium_id=material_id, + phase_type="AqueousLiquid", + name="viscosity", + type="Constant", + value=1, + ) + model.media.add_property( + medium_id=material_id, + phase_type="AqueousLiquid", + name="density", + type="Constant", + value=1, + ) + model.media.add_property( + medium_id=material_id, + phase_type="Solid", + name="storage", + type="Constant", + value=material_properties[material_id]["storage"], + ) + model.media.add_property( + medium_id=material_id, + phase_type="Solid", + name="density", + type="Constant", + value=1, + ) + model.media.add_property( + medium_id=material_id, + phase_type="Solid", + name="specific_heat_capacity", + type="Constant", + value=material_properties[material_id][ + "specific_heat_capacity_solid" + ], + ) + model.media.add_property( + medium_id=material_id, + phase_type="Solid", + name="thermal_conductivity", + type="Constant", + value=material_properties[material_id][ + "thermal_conductivity_solid" + ], + ) + model.media.add_property( + medium_id=material_id, + name="permeability", + type="Constant", + value=material_properties[material_id]["permeability"], + ) + model.media.add_property( + medium_id=material_id, + name="porosity", + type="Constant", + value=material_properties[material_id]["porosity"], + ) + model.media.add_property( + medium_id=material_id, + name="thermal_conductivity", + type="EffectiveThermalConductivityPorosityMixing", + ) + model.media.add_property( + medium_id=material_id, + name="thermal_transversal_dispersivity", + type="Constant", + value=material_properties[material_id][ + "thermal_transversal_dispersivity" + ], + ) + model.media.add_property( + medium_id=material_id, + name="thermal_longitudinal_dispersivity", + type="Constant", + value=material_properties[material_id][ + "thermal_longitudinal_dispersivity" + ], + ) + + return model + + def setup_prj_file( bulk_mesh_path: Path, mesh: pv.UnstructuredGrid, @@ -579,6 +699,8 @@ def setup_prj_file( materials_in_steady_state_diffusion(material_properties, model) elif process == "liquid flow": materials_in_liquid_flow(material_properties, model) + elif process == "HT": + materials_in_HT(material_properties, model) else: msg = "Only 'steady state diffusion' and 'liquid flow' processes are supported." raise ValueError(msg) -- GitLab