.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/howto_conversions/plot_C_feflowlib_prj.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code. .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_examples_howto_conversions_plot_C_feflowlib_prj.py: Feflowlib: How to modify the project-file after converting a FEFLOW model. ========================================================================== .. sectionauthor:: Julian Heinze (Helmholtz Centre for Environmental Research GmbH - UFZ) This example shows how to convert a FEFLOW model and how to modify the corresponding OGS project file and boundary meshes after conversion. .. GENERATED FROM PYTHON SOURCE LINES 11-12 0. Necessary imports .. GENERATED FROM PYTHON SOURCE LINES 12-19 .. code-block:: Python import tempfile import xml.etree.ElementTree as ET from pathlib import Path import ogstools as ot from ogstools.examples import feflow_model_2D_CT_t_560 .. GENERATED FROM PYTHON SOURCE LINES 20-22 1. Load a FEFLOW model (.fem) as a FeflowModel object to further work it. During the initialisation, the FEFLOW file is converted. .. GENERATED FROM PYTHON SOURCE LINES 22-24 .. code-block:: Python temp_dir = Path(tempfile.mkdtemp("converted_models")) feflow_model = ot.FeflowModel(feflow_model_2D_CT_t_560, temp_dir / "CT_model") .. GENERATED FROM PYTHON SOURCE LINES 25-26 2. Get the mesh and run the FEFLOW model in OGS. .. GENERATED FROM PYTHON SOURCE LINES 26-31 .. code-block:: Python mesh = feflow_model.mesh feflow_model.setup_prj( end_time=1e11, time_stepping=[(1, 1e6), (1, 1e8), (1, 1e10)] ) feflow_model.run() .. rst-class:: sphx-glr-script-out .. code-block:: none OGS finished with project file /tmp/tmpxkx0_ojuconverted_models/CT_model.prj. Execution took 0.6365079879760742 s Project file written to output. .. GENERATED FROM PYTHON SOURCE LINES 32-33 3. Plot the results. .. GENERATED FROM PYTHON SOURCE LINES 33-36 .. code-block:: Python ms = ot.MeshSeries(temp_dir / "CT_model.pvd") ogs_sim_res = ms.mesh(ms.timesteps[-1]) ot.plot.contourf(ogs_sim_res, "single_species") .. image-sg:: /auto_examples/howto_conversions/images/sphx_glr_plot_C_feflowlib_prj_001.png :alt: plot C feflowlib prj :srcset: /auto_examples/howto_conversions/images/sphx_glr_plot_C_feflowlib_prj_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none
.. GENERATED FROM PYTHON SOURCE LINES 37-39 4. Replace the scalar pore diffusion constant by a tensor to introducec anisotropy. How to manipulate a prj file also is explained in this example: :ref:`sphx_glr_auto_examples_howto_prjfile_plot_manipulation.py`. .. GENERATED FROM PYTHON SOURCE LINES 39-48 .. code-block:: Python tensor = """ 1e-9 1e-12 """ feflow_model.project.replace_phase_property_value( mediumid=0, component="single_species", name="pore_diffusion", value=tensor ) feflow_model.save() model_prjfile = ET.parse(temp_dir / "CT_model.prj") ET.dump(model_prjfile) .. rst-class:: sphx-glr-script-out .. code-block:: none CT_model.vtu single_species_P_BC_MASS.vtu CT ComponentTransport staggered 2 0 0 HEAD_OGS single_species AqueousLiquid viscosity Constant 1 density Constant 1 single_species decay_rate Constant 0.0 pore_diffusion Constant 1e-9 1e-12 retardation_factor Constant 16441.72737282367 porosity Constant 0.10999999940395355 longitudinal_dispersivity Constant 0.0 transversal_dispersivity Constant 0.0 permeability Constant 1.1574074074074073e-05 basic_picard DeltaX NORM2 1e-6 BackwardEuler FixedTimeStepping 0 100000000000.0 1 1000000.0 1 100000000.0 1 10000000000.0 basic_picard DeltaX NORM2 1e-6 BackwardEuler FixedTimeStepping 0 100000000000.0 1 1000000.0 1 100000000.0 1 10000000000.0 VTK /tmp/tmpxkx0_ojuconverted_models/CT_model 1 1 single_species HEAD_OGS 100000000000.0 1 DeltaX NORM2 1e-10 DeltaX NORM2 1e-10 C0 Constant 0 p0 Constant 0 single_species_P_BC_MASS MeshNode single_species_P_BC_MASS single_species_P_BC_MASS single_species 1 1 C0 Dirichlet single_species_P_BC_MASS single_species_P_BC_MASS HEAD_OGS 1 1 p0 basic_picard Picard 100 general_linear_solver general_linear_solver -i cg -p jacobi -tol 1e-10 -maxiter 100000 CG DIAGONAL 100000 1e-10 .. GENERATED FROM PYTHON SOURCE LINES 49-50 5. Remove some points of the boundary mesh, which is part of the subdomains. .. GENERATED FROM PYTHON SOURCE LINES 50-55 .. code-block:: Python bounds = [0.037, 0.039, 0.003, 0.006, 0, 0] new_bc_mesh = feflow_model.subdomains["single_species_P_BC_MASS"].clip_box( bounds, invert=False ) feflow_model.subdomains["single_species_P_BC_MASS"] = new_bc_mesh .. GENERATED FROM PYTHON SOURCE LINES 56-57 6. Run the model. .. GENERATED FROM PYTHON SOURCE LINES 57-61 .. code-block:: Python feflow_model.run(overwrite=True) ms = ot.MeshSeries(temp_dir / "CT_model.pvd") ogs_sim_res = ms.mesh(ms.timesteps[-1]) ot.plot.contourf(ogs_sim_res, "single_species") .. image-sg:: /auto_examples/howto_conversions/images/sphx_glr_plot_C_feflowlib_prj_002.png :alt: plot C feflowlib prj :srcset: /auto_examples/howto_conversions/images/sphx_glr_plot_C_feflowlib_prj_002.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none OGS finished with project file /tmp/tmpxkx0_ojuconverted_models/CT_model.prj. Execution took 0.7029359340667725 s Project file written to output.
.. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 1.920 seconds) .. _sphx_glr_download_auto_examples_howto_conversions_plot_C_feflowlib_prj.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_C_feflowlib_prj.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_C_feflowlib_prj.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_C_feflowlib_prj.zip `