From f34be1cefb14652f2bcc07e5bacd68fd894157a2 Mon Sep 17 00:00:00 2001 From: Christoph Lehmann <christoph.lehmann@ufz.de> Date: Mon, 31 Jul 2017 13:48:49 +0200 Subject: [PATCH] inhomogeneous permeability and mass flux --- pre/BCs/inhomogeneous-mass-flux/README.md | 10 + .../prepare-inhomogeneous-mass-flux-BC.py | 118 ++++ .../smooth_velocity_profile.csv | 506 ++++++++++++++++++ .../inhomogeneous-permeability-cell/README.md | 5 + .../prepare-inhomogeneous-permeability.py | 103 ++++ .../smooth_permeability_profile.csv | 506 ++++++++++++++++++ 6 files changed, 1248 insertions(+) create mode 100644 pre/BCs/inhomogeneous-mass-flux/README.md create mode 100755 pre/BCs/inhomogeneous-mass-flux/prepare-inhomogeneous-mass-flux-BC.py create mode 100644 pre/BCs/inhomogeneous-mass-flux/smooth_velocity_profile.csv create mode 100644 pre/inhomogeneous-fields/inhomogeneous-permeability-cell/README.md create mode 100755 pre/inhomogeneous-fields/inhomogeneous-permeability-cell/prepare-inhomogeneous-permeability.py create mode 100644 pre/inhomogeneous-fields/inhomogeneous-permeability-cell/smooth_permeability_profile.csv diff --git a/pre/BCs/inhomogeneous-mass-flux/README.md b/pre/BCs/inhomogeneous-mass-flux/README.md new file mode 100644 index 0000000..e50238c --- /dev/null +++ b/pre/BCs/inhomogeneous-mass-flux/README.md @@ -0,0 +1,10 @@ +# Prepare an inhomogeneous node-based mass flux field along a slice through a mesh + +The superficial velocity is given as a profile in radial (i.e., x) direction in the file `smooth_velocity_profile.csv`. + +A slice (hard-coded) through the `--input` mesh is taken. The mass flux field is +evaluated at every node of the slice. The slice with the mass flux field is +written to a VTU file in `--output`. + +Additionally to the `mass_flux` field, there will be a field `bulk_mesh_node_ids` which is used by OGS to map the mass flux values to the right mesh nodes if used as a Neumann BC. + diff --git a/pre/BCs/inhomogeneous-mass-flux/prepare-inhomogeneous-mass-flux-BC.py b/pre/BCs/inhomogeneous-mass-flux/prepare-inhomogeneous-mass-flux-BC.py new file mode 100755 index 0000000..c8e791f --- /dev/null +++ b/pre/BCs/inhomogeneous-mass-flux/prepare-inhomogeneous-mass-flux-BC.py @@ -0,0 +1,118 @@ +#!/usr/bin/env pvpython + +import inspect + +import argparse +parser = argparse.ArgumentParser() +parser.add_argument("--input", type=str, required=True) +parser.add_argument("--output", type=str, required=True) +args = parser.parse_args() + +#### import the simple module from the paraview +from paraview.simple import * +#### disable automatic camera reset on 'Show' +paraview.simple._DisableFirstRenderCameraReset() + +# create a new 'XML Unstructured Grid Reader' +xMLUnstructuredGridReader1 = XMLUnstructuredGridReader(FileName=[args.input]) + + +def do_enumerate_points(): + data = self.GetInputDataObject(0, 0) + + # point_ids = vtk.vtkIdTypeArray() ## TODO why does that not work? + # point_ids = vtk.vtkLongArray() + point_ids = vtk.vtkUnsignedLongArray() + point_ids.SetName("bulk_mesh_node_ids") + point_ids.SetNumberOfComponents(1) + N = data.GetPoints().GetNumberOfPoints() + point_ids.SetNumberOfTuples(N) + + for i in range(N): + point_ids.SetComponent(i, 0, i) + + self.GetOutputDataObject(0).GetPointData().AddArray(point_ids) + + ### Cell ids do not work like that: + # cell_ids = vtk.vtkDoubleArray() + # cell_ids.SetName("bulk_mesh_element_ids") + # cell_ids.SetNumberOfComponents(1) + # C = data.GetCellData().GetNumberOfTuples() + # cell_ids.SetNumberOfTuples(N) + + # for i in range(C): + # cell_ids.SetComponent(i, 0, i) + + # self.GetOutputDataObject(0).GetCellData().AddArray(cell_ids) + + +enumerate_points = ProgrammableFilter(Input=xMLUnstructuredGridReader1) +enumerate_points.Script = inspect.getsource(do_enumerate_points) + "\n\ndo_enumerate_points()" +enumerate_points.RequestInformationScript = '' +enumerate_points.RequestUpdateExtentScript = '' +enumerate_points.PythonPath = '' +enumerate_points.CopyArrays = 0 + + +# create a new 'Slice' +slice1 = Slice(Input=enumerate_points) +slice1.SliceType = 'Plane' +slice1.Triangulatetheslice = 0 +slice1.SliceOffsetValues = [0.0] + +# init the 'Plane' selected for 'SliceType' +slice1.SliceType.Origin = [0.0044, 0.03, 0.0] +slice1.SliceType.Normal = [0.0, 1.0, 0.0] + + +# Trick from http://www.vtk.org/Wiki/VTK/Examples/Cxx/PolyData/PolyDataToUnstructuredGrid +# for converting slice's polydata to an unstructured grid +appendDatasets1 = AppendDatasets(Input=slice1) + + +def do_compute_mass_flux(): + import numpy as np + from scipy.interpolate import interp1d + data = self.GetInputDataObject(0, 0) + + ### compute predefined mass flux + + mu = 21.90e-6 # Pa s + rho = 0.9333 # kg/m³ + + csv = "smooth_velocity_profile.csv" + rs, velocities = np.loadtxt(csv, unpack=True, usecols=(0,1)) + velocity_fct = interp1d(rs, velocities) + + points = data.GetPoints() + + mass_flux = vtk.vtkDoubleArray() + mass_flux.SetName("mass_flux") + mass_flux.SetNumberOfComponents(1) + N = points.GetNumberOfPoints() + mass_flux.SetNumberOfTuples(N) + + for i in range(N): + r, z, phi = points.GetPoint(i) + mass_flux.SetComponent(i, 0, velocity_fct(r) * rho) + + self.GetOutputDataObject(0).GetPointData().AddArray(mass_flux) + + +mass_flux = ProgrammableFilter(Input=appendDatasets1) +mass_flux.Script = inspect.getsource(do_compute_mass_flux) + "\n\ndo_compute_mass_flux()" +mass_flux.RequestInformationScript = '' +mass_flux.RequestUpdateExtentScript = '' +mass_flux.PythonPath = '' +mass_flux.CopyArrays = 1 + +# ---------------------------------------------------------------- +# finally, restore active source +SetActiveSource(mass_flux) +# ---------------------------------------------------------------- + +# save data +SaveData(args.output, proxy=mass_flux, DataMode='Binary', + EncodeAppendedData=1, + CompressorType='ZLib') + diff --git a/pre/BCs/inhomogeneous-mass-flux/smooth_velocity_profile.csv b/pre/BCs/inhomogeneous-mass-flux/smooth_velocity_profile.csv new file mode 100644 index 0000000..1cd50e1 --- /dev/null +++ b/pre/BCs/inhomogeneous-mass-flux/smooth_velocity_profile.csv @@ -0,0 +1,506 @@ + +# Curve 0 of 1, 501 points +# Curve title: ""bed_center_cross_section.csv" u x_col:y_col" +# x y type + 0 0.488557 i + 1.76e-05 0.488557 i + 3.52e-05 0.488557 i + 5.28e-05 0.488557 i + 7.04e-05 0.488557 i + 8.8e-05 0.488557 i + 0.0001056 0.488557 i + 0.0001232 0.488557 i + 0.0001408 0.488557 i + 0.0001584 0.488557 i + 0.000176 0.488557 i + 0.0001936 0.488557 i + 0.0002112 0.488557 i + 0.0002288 0.488557 i + 0.0002464 0.488557 i + 0.000264 0.488557 i + 0.0002816 0.488557 i + 0.0002992 0.488557 i + 0.0003168 0.488557 i + 0.0003344 0.488557 i + 0.000352 0.488557 i + 0.0003696 0.488557 i + 0.0003872 0.488557 i + 0.0004048 0.488557 i + 0.0004224 0.488557 i + 0.00044 0.488557 i + 0.0004576 0.488557 i + 0.0004752 0.488557 i + 0.0004928 0.488557 i + 0.0005104 0.488557 i + 0.000528 0.488557 i + 0.0005456 0.488557 i + 0.0005632 0.488557 i + 0.0005808 0.488557 i + 0.0005984 0.488557 i + 0.000616 0.488557 i + 0.0006336 0.488557 i + 0.0006512 0.488557 i + 0.0006688 0.488557 i + 0.0006864 0.488557 i + 0.000704 0.488557 i + 0.0007216 0.488557 i + 0.0007392 0.488557 i + 0.0007568 0.488557 i + 0.0007744 0.488557 i + 0.000792 0.488557 i + 0.0008096 0.488557 i + 0.0008272 0.488557 i + 0.0008448 0.488557 i + 0.0008624 0.488557 i + 0.00088 0.488557 i + 0.0008976 0.488557 i + 0.0009152 0.488557 i + 0.0009328 0.488557 i + 0.0009504 0.488557 i + 0.000968 0.488557 i + 0.0009856 0.488557 i + 0.0010032 0.488557 i + 0.0010208 0.488557 i + 0.0010384 0.488557 i + 0.001056 0.488557 i + 0.0010736 0.488557 i + 0.0010912 0.488557 i + 0.0011088 0.488557 i + 0.0011264 0.488557 i + 0.001144 0.488557 i + 0.0011616 0.488556 i + 0.0011792 0.488556 i + 0.0011968 0.488556 i + 0.0012144 0.488556 i + 0.001232 0.488556 i + 0.0012496 0.488556 i + 0.0012672 0.488556 i + 0.0012848 0.488556 i + 0.0013024 0.488556 i + 0.00132 0.488556 i + 0.0013376 0.488556 i + 0.0013552 0.488556 i + 0.0013728 0.488556 i + 0.0013904 0.488556 i + 0.001408 0.488556 i + 0.0014256 0.488556 i + 0.0014432 0.488556 i + 0.0014608 0.488556 i + 0.0014784 0.488556 i + 0.001496 0.488556 i + 0.0015136 0.488556 i + 0.0015312 0.488556 i + 0.0015488 0.488556 i + 0.0015664 0.488556 i + 0.001584 0.488556 i + 0.0016016 0.488556 i + 0.0016192 0.488556 i + 0.0016368 0.488556 i + 0.0016544 0.488556 i + 0.001672 0.488556 i + 0.0016896 0.488556 i + 0.0017072 0.488556 i + 0.0017248 0.488556 i + 0.0017424 0.488556 i + 0.00176 0.488556 i + 0.0017776 0.488556 i + 0.0017952 0.488556 i + 0.0018128 0.488556 i + 0.0018304 0.488556 i + 0.001848 0.488556 i + 0.0018656 0.488556 i + 0.0018832 0.488556 i + 0.0019008 0.488556 i + 0.0019184 0.488556 i + 0.001936 0.488556 i + 0.0019536 0.488556 i + 0.0019712 0.488556 i + 0.0019888 0.488556 i + 0.0020064 0.488556 i + 0.002024 0.488556 i + 0.0020416 0.488556 i + 0.0020592 0.488556 i + 0.0020768 0.488556 i + 0.0020944 0.488556 i + 0.002112 0.488556 i + 0.0021296 0.488556 i + 0.0021472 0.488556 i + 0.0021648 0.488556 i + 0.0021824 0.488556 i + 0.0022 0.488556 i + 0.0022176 0.488556 i + 0.0022352 0.488556 i + 0.0022528 0.488556 i + 0.0022704 0.488556 i + 0.002288 0.488556 i + 0.0023056 0.488556 i + 0.0023232 0.488555 i + 0.0023408 0.488555 i + 0.0023584 0.488555 i + 0.002376 0.488555 i + 0.0023936 0.488555 i + 0.0024112 0.488555 i + 0.0024288 0.488555 i + 0.0024464 0.488555 i + 0.002464 0.488555 i + 0.0024816 0.488555 i + 0.0024992 0.488555 i + 0.0025168 0.488555 i + 0.0025344 0.488555 i + 0.002552 0.488555 i + 0.0025696 0.488555 i + 0.0025872 0.488555 i + 0.0026048 0.488555 i + 0.0026224 0.488555 i + 0.00264 0.488555 i + 0.0026576 0.488555 i + 0.0026752 0.488555 i + 0.0026928 0.488555 i + 0.0027104 0.488555 i + 0.002728 0.488555 i + 0.0027456 0.488555 i + 0.0027632 0.488555 i + 0.0027808 0.488555 i + 0.0027984 0.488555 i + 0.002816 0.488555 i + 0.0028336 0.488555 i + 0.0028512 0.488555 i + 0.0028688 0.488555 i + 0.0028864 0.488555 i + 0.002904 0.488555 i + 0.0029216 0.488555 i + 0.0029392 0.488555 i + 0.0029568 0.488555 i + 0.0029744 0.488555 i + 0.002992 0.488555 i + 0.0030096 0.488555 i + 0.0030272 0.488555 i + 0.0030448 0.488555 i + 0.0030624 0.488555 i + 0.00308 0.488555 i + 0.0030976 0.488555 i + 0.0031152 0.488555 i + 0.0031328 0.488555 i + 0.0031504 0.488555 i + 0.003168 0.488555 i + 0.0031856 0.488555 i + 0.0032032 0.488555 i + 0.0032208 0.488555 i + 0.0032384 0.488555 i + 0.003256 0.488556 i + 0.0032736 0.488556 i + 0.0032912 0.488556 i + 0.0033088 0.488556 i + 0.0033264 0.488556 i + 0.003344 0.488556 i + 0.0033616 0.488556 i + 0.0033792 0.488556 i + 0.0033968 0.488556 i + 0.0034144 0.488556 i + 0.003432 0.488556 i + 0.0034496 0.488556 i + 0.0034672 0.488556 i + 0.0034848 0.488556 i + 0.0035024 0.488556 i + 0.00352 0.488556 i + 0.0035376 0.488557 i + 0.0035552 0.488557 i + 0.0035728 0.488557 i + 0.0035904 0.488557 i + 0.003608 0.488557 i + 0.0036256 0.488557 i + 0.0036432 0.488557 i + 0.0036608 0.488558 i + 0.0036784 0.488558 i + 0.003696 0.488558 i + 0.0037136 0.488558 i + 0.0037312 0.488558 i + 0.0037488 0.488558 i + 0.0037664 0.488559 i + 0.003784 0.488559 i + 0.0038016 0.488559 i + 0.0038192 0.488559 i + 0.0038368 0.488559 i + 0.0038544 0.48856 i + 0.003872 0.48856 i + 0.0038896 0.48856 i + 0.0039072 0.488561 i + 0.0039248 0.488561 i + 0.0039424 0.488561 i + 0.00396 0.488562 i + 0.0039776 0.488562 i + 0.0039952 0.488562 i + 0.0040128 0.488563 i + 0.0040304 0.488563 i + 0.004048 0.488564 i + 0.0040656 0.488564 i + 0.0040832 0.488565 i + 0.0041008 0.488565 i + 0.0041184 0.488566 i + 0.004136 0.488566 i + 0.0041536 0.488567 i + 0.0041712 0.488567 i + 0.0041888 0.488568 i + 0.0042064 0.488569 i + 0.004224 0.488569 i + 0.0042416 0.48857 i + 0.0042592 0.488571 i + 0.0042768 0.488571 i + 0.0042944 0.488572 i + 0.004312 0.488573 i + 0.0043296 0.488574 i + 0.0043472 0.488575 i + 0.0043648 0.488576 i + 0.0043824 0.488577 i + 0.0044 0.488578 i + 0.0044176 0.488579 i + 0.0044352 0.488581 i + 0.0044528 0.488582 i + 0.0044704 0.488583 i + 0.004488 0.488585 i + 0.0045056 0.488586 i + 0.0045232 0.488588 i + 0.0045408 0.48859 i + 0.0045584 0.488591 i + 0.004576 0.488593 i + 0.0045936 0.488595 i + 0.0046112 0.488597 i + 0.0046288 0.488599 i + 0.0046464 0.4886 i + 0.004664 0.488603 i + 0.0046816 0.488605 i + 0.0046992 0.488607 i + 0.0047168 0.488609 i + 0.0047344 0.488612 i + 0.004752 0.488614 i + 0.0047696 0.488617 i + 0.0047872 0.48862 i + 0.0048048 0.488623 i + 0.0048224 0.488627 i + 0.00484 0.48863 i + 0.0048576 0.488634 i + 0.0048752 0.488638 i + 0.0048928 0.488642 i + 0.0049104 0.488646 i + 0.004928 0.48865 i + 0.0049456 0.488655 i + 0.0049632 0.488659 i + 0.0049808 0.488664 i + 0.0049984 0.488669 i + 0.005016 0.488674 i + 0.0050336 0.48868 i + 0.0050512 0.488685 i + 0.0050688 0.488691 i + 0.0050864 0.488697 i + 0.005104 0.488703 i + 0.0051216 0.48871 i + 0.0051392 0.488716 i + 0.0051568 0.488723 i + 0.0051744 0.488731 i + 0.005192 0.488739 i + 0.0052096 0.488747 i + 0.0052272 0.488756 i + 0.0052448 0.488765 i + 0.0052624 0.488775 i + 0.00528 0.488786 i + 0.0052976 0.488797 i + 0.0053152 0.488809 i + 0.0053328 0.488821 i + 0.0053504 0.488834 i + 0.005368 0.488847 i + 0.0053856 0.488861 i + 0.0054032 0.488875 i + 0.0054208 0.48889 i + 0.0054384 0.488905 i + 0.005456 0.488921 i + 0.0054736 0.488938 i + 0.0054912 0.488954 i + 0.0055088 0.488972 i + 0.0055264 0.48899 i + 0.005544 0.489008 i + 0.0055616 0.489028 i + 0.0055792 0.489048 i + 0.0055968 0.489069 i + 0.0056144 0.489092 i + 0.005632 0.489115 i + 0.0056496 0.489141 i + 0.0056672 0.489167 i + 0.0056848 0.489195 i + 0.0057024 0.489225 i + 0.00572 0.489256 i + 0.0057376 0.48929 i + 0.0057552 0.489324 i + 0.0057728 0.489361 i + 0.0057904 0.489399 i + 0.005808 0.489439 i + 0.0058256 0.48948 i + 0.0058432 0.489523 i + 0.0058608 0.489567 i + 0.0058784 0.489612 i + 0.005896 0.489659 i + 0.0059136 0.489708 i + 0.0059312 0.489757 i + 0.0059488 0.489808 i + 0.0059664 0.489861 i + 0.005984 0.489917 i + 0.0060016 0.489974 i + 0.0060192 0.490034 i + 0.0060368 0.490097 i + 0.0060544 0.490164 i + 0.006072 0.490235 i + 0.0060896 0.490309 i + 0.0061072 0.490389 i + 0.0061248 0.490474 i + 0.0061424 0.490564 i + 0.00616 0.490659 i + 0.0061776 0.49076 i + 0.0061952 0.490867 i + 0.0062128 0.490979 i + 0.0062304 0.491096 i + 0.006248 0.491218 i + 0.0062656 0.491345 i + 0.0062832 0.491477 i + 0.0063008 0.491612 i + 0.0063184 0.491752 i + 0.006336 0.491895 i + 0.0063536 0.492042 i + 0.0063712 0.492193 i + 0.0063888 0.492349 i + 0.0064064 0.492509 i + 0.006424 0.492675 i + 0.0064416 0.492847 i + 0.0064592 0.493027 i + 0.0064768 0.493216 i + 0.0064944 0.493415 i + 0.006512 0.493626 i + 0.0065296 0.49385 i + 0.0065472 0.494088 i + 0.0065648 0.494342 i + 0.0065824 0.494612 i + 0.0066 0.4949 i + 0.0066176 0.495204 i + 0.0066352 0.495526 i + 0.0066528 0.495865 i + 0.0066704 0.49622 i + 0.006688 0.49659 i + 0.0067056 0.496975 i + 0.0067232 0.497372 i + 0.0067408 0.497781 i + 0.0067584 0.498201 i + 0.006776 0.498631 i + 0.0067936 0.499072 i + 0.0068112 0.499522 i + 0.0068288 0.499984 i + 0.0068464 0.500459 i + 0.006864 0.500949 i + 0.0068816 0.501458 i + 0.0068992 0.501989 i + 0.0069168 0.502547 i + 0.0069344 0.503137 i + 0.006952 0.503765 i + 0.0069696 0.504436 i + 0.0069872 0.505154 i + 0.0070048 0.505925 i + 0.0070224 0.506752 i + 0.00704 0.507638 i + 0.0070576 0.508584 i + 0.0070752 0.50959 i + 0.0070928 0.510653 i + 0.0071104 0.511772 i + 0.007128 0.512941 i + 0.0071456 0.514155 i + 0.0071632 0.51541 i + 0.0071808 0.5167 i + 0.0071984 0.518019 i + 0.007216 0.519364 i + 0.0072336 0.520732 i + 0.0072512 0.522119 i + 0.0072688 0.523527 i + 0.0072864 0.524957 i + 0.007304 0.526411 i + 0.0073216 0.527897 i + 0.0073392 0.529423 i + 0.0073568 0.530996 i + 0.0073744 0.532631 i + 0.007392 0.534339 i + 0.0074096 0.536135 i + 0.0074272 0.538032 i + 0.0074448 0.540045 i + 0.0074624 0.542185 i + 0.00748 0.544462 i + 0.0074976 0.546884 i + 0.0075152 0.549456 i + 0.0075328 0.552183 i + 0.0075504 0.555065 i + 0.007568 0.558107 i + 0.0075856 0.561309 i + 0.0076032 0.564676 i + 0.0076208 0.568215 i + 0.0076384 0.571933 i + 0.007656 0.57584 i + 0.0076736 0.579946 i + 0.0076912 0.58426 i + 0.0077088 0.588787 i + 0.0077264 0.593533 i + 0.007744 0.598497 i + 0.0077616 0.603678 i + 0.0077792 0.609075 i + 0.0077968 0.614687 i + 0.0078144 0.620516 i + 0.007832 0.626571 i + 0.0078496 0.632864 i + 0.0078672 0.639413 i + 0.0078848 0.646237 i + 0.0079024 0.653355 i + 0.00792 0.660782 i + 0.0079376 0.668522 i + 0.0079552 0.676572 i + 0.0079728 0.684915 i + 0.0079904 0.693524 i + 0.008008 0.702365 i + 0.0080256 0.7114 i + 0.0080432 0.720592 i + 0.0080608 0.729907 i + 0.0080784 0.739317 i + 0.008096 0.748803 i + 0.0081136 0.758351 i + 0.0081312 0.767951 i + 0.0081488 0.777597 i + 0.0081664 0.787281 i + 0.008184 0.796991 i + 0.0082016 0.806708 i + 0.0082192 0.816401 i + 0.0082368 0.82602 i + 0.0082544 0.835491 i + 0.008272 0.84471 i + 0.0082896 0.853533 i + 0.0083072 0.861781 i + 0.0083248 0.869238 i + 0.0083424 0.875671 i + 0.00836 0.880844 i + 0.0083776 0.884531 i + 0.0083952 0.886525 i + 0.0084128 0.886624 i + 0.0084304 0.884615 i + 0.008448 0.880267 i + 0.0084656 0.873339 i + 0.0084832 0.863618 i + 0.0085008 0.850945 i + 0.0085184 0.835192 i + 0.008536 0.816184 i + 0.0085536 0.793597 i + 0.0085712 0.76695 i + 0.0085888 0.735767 i + 0.0086064 0.699851 i + 0.008624 0.659447 i + 0.0086416 0.615038 i + 0.0086592 0.566743 i + 0.0086768 0.51375 i + 0.0086944 0.454453 i + 0.008712 0.38766 i + 0.0087296 0.314133 i + 0.0087472 0.236631 i + 0.0087648 0.157861 i + 0.0087824 0.0789329 i + 0.0088 2.37192e-07 i + diff --git a/pre/inhomogeneous-fields/inhomogeneous-permeability-cell/README.md b/pre/inhomogeneous-fields/inhomogeneous-permeability-cell/README.md new file mode 100644 index 0000000..1a99570 --- /dev/null +++ b/pre/inhomogeneous-fields/inhomogeneous-permeability-cell/README.md @@ -0,0 +1,5 @@ +# Prepare an inhomogeneous cell-based permeability field + +The permeability is given as a profile in radial (i.e., x) direction in the file `smooth_permeability_profile.csv`. +The permeability value is evaluated at the center coordinate of each cell of the mesh read from `--input`. +The resulting field and mesh is written to `--output`. diff --git a/pre/inhomogeneous-fields/inhomogeneous-permeability-cell/prepare-inhomogeneous-permeability.py b/pre/inhomogeneous-fields/inhomogeneous-permeability-cell/prepare-inhomogeneous-permeability.py new file mode 100755 index 0000000..4d7cb61 --- /dev/null +++ b/pre/inhomogeneous-fields/inhomogeneous-permeability-cell/prepare-inhomogeneous-permeability.py @@ -0,0 +1,103 @@ +#!/usr/bin/env pvpython + +import inspect + +import argparse +parser = argparse.ArgumentParser() +parser.add_argument("--input", type=str, required=True) +parser.add_argument("--output", type=str, required=True) +args = parser.parse_args() + + +# state file generated using paraview version 5.3.0 + +# ---------------------------------------------------------------- +# setup views used in the visualization +# ---------------------------------------------------------------- + +#### import the simple module from the paraview +from paraview.simple import * +#### disable automatic camera reset on 'Show' +paraview.simple._DisableFirstRenderCameraReset() + +# create a new 'XML Unstructured Grid Reader' +xMLUnstructuredGridReader1 = XMLUnstructuredGridReader(FileName=[args.input]) + +# create a new 'Calculator' +coords_to_property = Calculator(Input=xMLUnstructuredGridReader1) +coords_to_property.ResultArrayName = 'cell_centers' +coords_to_property.Function = 'coords' + +# create a new 'Point Data to Cell Data' +pointDatatoCellData2 = PointDatatoCellData(Input=coords_to_property) + +def compute_perm(): + import os + import numpy as np + from scipy.interpolate import interp1d + + csv = "smooth_permeability_profile.csv" + rs, perms = np.loadtxt(csv, unpack=True, usecols=(0,1)) + perm_fct = interp1d(rs, perms) + + data = self.GetInputDataObject(0, 0) + cell_centers = data.GetCellData().GetArray("cell_centers") + + perm_cell = vtk.vtkDoubleArray() + perm_cell.SetName("K_rho_over_mu__eff") + perm_cell.SetNumberOfComponents(1) + N = cell_centers.GetNumberOfTuples() + perm_cell.SetNumberOfTuples(N) + + mu = 21.90e-6 # Pa s + rho = 0.9333 # kg/m³ + + for i in range(N): + r, z, _ = cell_centers.GetTuple(i) + K = perm_fct(r) + perm_cell.SetComponent(i, 0, K * rho / mu) + + self.GetOutputDataObject(0).GetCellData().AddArray(perm_cell) + + + if True: + # mass flux + + csv = "smooth_velocity_profile.csv" + rs, velocities = np.loadtxt(csv, unpack=True, usecols=(0,1)) + velocity_fct = interp1d(rs, velocities) + + points = data.GetPoints() + + mass_flux = vtk.vtkDoubleArray() + mass_flux.SetName("mass_flux_ref") + mass_flux.SetNumberOfComponents(2) + N = points.GetNumberOfPoints() + mass_flux.SetNumberOfTuples(N) + + for i in range(N): + r, z, phi = points.GetPoint(i) + mass_flux.SetComponent(i, 0, 0) + mass_flux.SetComponent(i, 1, -velocity_fct(r) * rho) + + self.GetOutputDataObject(0).GetPointData().AddArray(mass_flux) + + self.GetOutputDataObject(0).GetCellData().RemoveArray("cell_centers") + + +perm = ProgrammableFilter(Input=pointDatatoCellData2) +perm.Script = inspect.getsource(compute_perm) + "\n\ncompute_perm()" +perm.RequestInformationScript = '' +perm.RequestUpdateExtentScript = '' +perm.PythonPath = '' +perm.CopyArrays = 0 + +# ---------------------------------------------------------------- +# finally, restore active source +SetActiveSource(perm) +# ---------------------------------------------------------------- + +# save data +SaveData(args.output, proxy=perm, DataMode='Binary', + EncodeAppendedData=1, + CompressorType='ZLib') diff --git a/pre/inhomogeneous-fields/inhomogeneous-permeability-cell/smooth_permeability_profile.csv b/pre/inhomogeneous-fields/inhomogeneous-permeability-cell/smooth_permeability_profile.csv new file mode 100644 index 0000000..8985431 --- /dev/null +++ b/pre/inhomogeneous-fields/inhomogeneous-permeability-cell/smooth_permeability_profile.csv @@ -0,0 +1,506 @@ + +# Curve 0 of 1, 501 points +# Curve title: ""bed_center_cross_section.csv" u 14:1" +# x y type + 0 4.98451e-09 i + 1.76e-05 4.98451e-09 i + 3.52e-05 4.98451e-09 i + 5.28e-05 4.98451e-09 i + 7.04e-05 4.98451e-09 i + 8.8e-05 4.98451e-09 i + 0.0001056 4.98451e-09 i + 0.0001232 4.98451e-09 i + 0.0001408 4.98451e-09 i + 0.0001584 4.98451e-09 i + 0.000176 4.98451e-09 i + 0.0001936 4.98451e-09 i + 0.0002112 4.98451e-09 i + 0.0002288 4.98451e-09 i + 0.0002464 4.98451e-09 i + 0.000264 4.98451e-09 i + 0.0002816 4.98451e-09 i + 0.0002992 4.98451e-09 i + 0.0003168 4.98451e-09 i + 0.0003344 4.98451e-09 i + 0.000352 4.98451e-09 i + 0.0003696 4.98451e-09 i + 0.0003872 4.98451e-09 i + 0.0004048 4.98451e-09 i + 0.0004224 4.98451e-09 i + 0.00044 4.98451e-09 i + 0.0004576 4.98451e-09 i + 0.0004752 4.98451e-09 i + 0.0004928 4.98451e-09 i + 0.0005104 4.98451e-09 i + 0.000528 4.98451e-09 i + 0.0005456 4.98451e-09 i + 0.0005632 4.98451e-09 i + 0.0005808 4.98451e-09 i + 0.0005984 4.98451e-09 i + 0.000616 4.98451e-09 i + 0.0006336 4.98451e-09 i + 0.0006512 4.98451e-09 i + 0.0006688 4.98451e-09 i + 0.0006864 4.98451e-09 i + 0.000704 4.98451e-09 i + 0.0007216 4.98451e-09 i + 0.0007392 4.98451e-09 i + 0.0007568 4.98451e-09 i + 0.0007744 4.98451e-09 i + 0.000792 4.98451e-09 i + 0.0008096 4.98451e-09 i + 0.0008272 4.98451e-09 i + 0.0008448 4.98451e-09 i + 0.0008624 4.98451e-09 i + 0.00088 4.98451e-09 i + 0.0008976 4.98451e-09 i + 0.0009152 4.98451e-09 i + 0.0009328 4.98451e-09 i + 0.0009504 4.98451e-09 i + 0.000968 4.98451e-09 i + 0.0009856 4.98451e-09 i + 0.0010032 4.98451e-09 i + 0.0010208 4.98451e-09 i + 0.0010384 4.98451e-09 i + 0.001056 4.98451e-09 i + 0.0010736 4.98451e-09 i + 0.0010912 4.98451e-09 i + 0.0011088 4.98451e-09 i + 0.0011264 4.98451e-09 i + 0.001144 4.98451e-09 i + 0.0011616 4.98451e-09 i + 0.0011792 4.98451e-09 i + 0.0011968 4.98451e-09 i + 0.0012144 4.98451e-09 i + 0.001232 4.98451e-09 i + 0.0012496 4.98451e-09 i + 0.0012672 4.98451e-09 i + 0.0012848 4.98451e-09 i + 0.0013024 4.98451e-09 i + 0.00132 4.98451e-09 i + 0.0013376 4.98451e-09 i + 0.0013552 4.98451e-09 i + 0.0013728 4.98451e-09 i + 0.0013904 4.98451e-09 i + 0.001408 4.98451e-09 i + 0.0014256 4.98451e-09 i + 0.0014432 4.98451e-09 i + 0.0014608 4.98451e-09 i + 0.0014784 4.98451e-09 i + 0.001496 4.98451e-09 i + 0.0015136 4.98451e-09 i + 0.0015312 4.98451e-09 i + 0.0015488 4.98451e-09 i + 0.0015664 4.98451e-09 i + 0.001584 4.98451e-09 i + 0.0016016 4.98451e-09 i + 0.0016192 4.98451e-09 i + 0.0016368 4.98451e-09 i + 0.0016544 4.98451e-09 i + 0.001672 4.98451e-09 i + 0.0016896 4.98451e-09 i + 0.0017072 4.98452e-09 i + 0.0017248 4.98452e-09 i + 0.0017424 4.98452e-09 i + 0.00176 4.98452e-09 i + 0.0017776 4.98452e-09 i + 0.0017952 4.98452e-09 i + 0.0018128 4.98452e-09 i + 0.0018304 4.98452e-09 i + 0.001848 4.98452e-09 i + 0.0018656 4.98452e-09 i + 0.0018832 4.98452e-09 i + 0.0019008 4.98452e-09 i + 0.0019184 4.98452e-09 i + 0.001936 4.98452e-09 i + 0.0019536 4.98452e-09 i + 0.0019712 4.98452e-09 i + 0.0019888 4.98452e-09 i + 0.0020064 4.98452e-09 i + 0.002024 4.98452e-09 i + 0.0020416 4.98452e-09 i + 0.0020592 4.98452e-09 i + 0.0020768 4.98452e-09 i + 0.0020944 4.98452e-09 i + 0.002112 4.98452e-09 i + 0.0021296 4.98452e-09 i + 0.0021472 4.98452e-09 i + 0.0021648 4.98452e-09 i + 0.0021824 4.98452e-09 i + 0.0022 4.98452e-09 i + 0.0022176 4.98452e-09 i + 0.0022352 4.98452e-09 i + 0.0022528 4.98452e-09 i + 0.0022704 4.98452e-09 i + 0.002288 4.98452e-09 i + 0.0023056 4.98452e-09 i + 0.0023232 4.98452e-09 i + 0.0023408 4.98452e-09 i + 0.0023584 4.98452e-09 i + 0.002376 4.98452e-09 i + 0.0023936 4.98452e-09 i + 0.0024112 4.98452e-09 i + 0.0024288 4.98453e-09 i + 0.0024464 4.98453e-09 i + 0.002464 4.98453e-09 i + 0.0024816 4.98453e-09 i + 0.0024992 4.98453e-09 i + 0.0025168 4.98453e-09 i + 0.0025344 4.98453e-09 i + 0.002552 4.98453e-09 i + 0.0025696 4.98453e-09 i + 0.0025872 4.98453e-09 i + 0.0026048 4.98453e-09 i + 0.0026224 4.98453e-09 i + 0.00264 4.98453e-09 i + 0.0026576 4.98453e-09 i + 0.0026752 4.98453e-09 i + 0.0026928 4.98453e-09 i + 0.0027104 4.98453e-09 i + 0.002728 4.98453e-09 i + 0.0027456 4.98453e-09 i + 0.0027632 4.98453e-09 i + 0.0027808 4.98453e-09 i + 0.0027984 4.98453e-09 i + 0.002816 4.98453e-09 i + 0.0028336 4.98453e-09 i + 0.0028512 4.98453e-09 i + 0.0028688 4.98454e-09 i + 0.0028864 4.98454e-09 i + 0.002904 4.98454e-09 i + 0.0029216 4.98454e-09 i + 0.0029392 4.98454e-09 i + 0.0029568 4.98454e-09 i + 0.0029744 4.98454e-09 i + 0.002992 4.98454e-09 i + 0.0030096 4.98454e-09 i + 0.0030272 4.98454e-09 i + 0.0030448 4.98454e-09 i + 0.0030624 4.98454e-09 i + 0.00308 4.98454e-09 i + 0.0030976 4.98454e-09 i + 0.0031152 4.98454e-09 i + 0.0031328 4.98455e-09 i + 0.0031504 4.98455e-09 i + 0.003168 4.98455e-09 i + 0.0031856 4.98455e-09 i + 0.0032032 4.98455e-09 i + 0.0032208 4.98455e-09 i + 0.0032384 4.98455e-09 i + 0.003256 4.98455e-09 i + 0.0032736 4.98455e-09 i + 0.0032912 4.98455e-09 i + 0.0033088 4.98455e-09 i + 0.0033264 4.98456e-09 i + 0.003344 4.98456e-09 i + 0.0033616 4.98456e-09 i + 0.0033792 4.98456e-09 i + 0.0033968 4.98456e-09 i + 0.0034144 4.98456e-09 i + 0.003432 4.98456e-09 i + 0.0034496 4.98456e-09 i + 0.0034672 4.98456e-09 i + 0.0034848 4.98457e-09 i + 0.0035024 4.98457e-09 i + 0.00352 4.98457e-09 i + 0.0035376 4.98457e-09 i + 0.0035552 4.98457e-09 i + 0.0035728 4.98457e-09 i + 0.0035904 4.98458e-09 i + 0.003608 4.98458e-09 i + 0.0036256 4.98458e-09 i + 0.0036432 4.98458e-09 i + 0.0036608 4.98459e-09 i + 0.0036784 4.98459e-09 i + 0.003696 4.98459e-09 i + 0.0037136 4.98459e-09 i + 0.0037312 4.98459e-09 i + 0.0037488 4.9846e-09 i + 0.0037664 4.9846e-09 i + 0.003784 4.9846e-09 i + 0.0038016 4.98461e-09 i + 0.0038192 4.98461e-09 i + 0.0038368 4.98461e-09 i + 0.0038544 4.98461e-09 i + 0.003872 4.98462e-09 i + 0.0038896 4.98462e-09 i + 0.0039072 4.98462e-09 i + 0.0039248 4.98463e-09 i + 0.0039424 4.98463e-09 i + 0.00396 4.98464e-09 i + 0.0039776 4.98464e-09 i + 0.0039952 4.98465e-09 i + 0.0040128 4.98465e-09 i + 0.0040304 4.98466e-09 i + 0.004048 4.98466e-09 i + 0.0040656 4.98467e-09 i + 0.0040832 4.98467e-09 i + 0.0041008 4.98468e-09 i + 0.0041184 4.98468e-09 i + 0.004136 4.98469e-09 i + 0.0041536 4.9847e-09 i + 0.0041712 4.9847e-09 i + 0.0041888 4.98471e-09 i + 0.0042064 4.98472e-09 i + 0.004224 4.98472e-09 i + 0.0042416 4.98473e-09 i + 0.0042592 4.98474e-09 i + 0.0042768 4.98475e-09 i + 0.0042944 4.98476e-09 i + 0.004312 4.98477e-09 i + 0.0043296 4.98478e-09 i + 0.0043472 4.98479e-09 i + 0.0043648 4.9848e-09 i + 0.0043824 4.98481e-09 i + 0.0044 4.98482e-09 i + 0.0044176 4.98484e-09 i + 0.0044352 4.98485e-09 i + 0.0044528 4.98486e-09 i + 0.0044704 4.98488e-09 i + 0.004488 4.98489e-09 i + 0.0045056 4.98491e-09 i + 0.0045232 4.98493e-09 i + 0.0045408 4.98494e-09 i + 0.0045584 4.98496e-09 i + 0.004576 4.98498e-09 i + 0.0045936 4.985e-09 i + 0.0046112 4.98502e-09 i + 0.0046288 4.98504e-09 i + 0.0046464 4.98506e-09 i + 0.004664 4.98508e-09 i + 0.0046816 4.9851e-09 i + 0.0046992 4.98513e-09 i + 0.0047168 4.98515e-09 i + 0.0047344 4.98518e-09 i + 0.004752 4.98521e-09 i + 0.0047696 4.98523e-09 i + 0.0047872 4.98526e-09 i + 0.0048048 4.9853e-09 i + 0.0048224 4.98533e-09 i + 0.00484 4.98537e-09 i + 0.0048576 4.9854e-09 i + 0.0048752 4.98544e-09 i + 0.0048928 4.98549e-09 i + 0.0049104 4.98553e-09 i + 0.004928 4.98557e-09 i + 0.0049456 4.98562e-09 i + 0.0049632 4.98567e-09 i + 0.0049808 4.98572e-09 i + 0.0049984 4.98577e-09 i + 0.005016 4.98583e-09 i + 0.0050336 4.98588e-09 i + 0.0050512 4.98594e-09 i + 0.0050688 4.986e-09 i + 0.0050864 4.98606e-09 i + 0.005104 4.98612e-09 i + 0.0051216 4.98619e-09 i + 0.0051392 4.98626e-09 i + 0.0051568 4.98633e-09 i + 0.0051744 4.98641e-09 i + 0.005192 4.98649e-09 i + 0.0052096 4.98658e-09 i + 0.0052272 4.98667e-09 i + 0.0052448 4.98676e-09 i + 0.0052624 4.98687e-09 i + 0.00528 4.98697e-09 i + 0.0052976 4.98709e-09 i + 0.0053152 4.98721e-09 i + 0.0053328 4.98733e-09 i + 0.0053504 4.98746e-09 i + 0.005368 4.9876e-09 i + 0.0053856 4.98774e-09 i + 0.0054032 4.98789e-09 i + 0.0054208 4.98804e-09 i + 0.0054384 4.9882e-09 i + 0.005456 4.98836e-09 i + 0.0054736 4.98853e-09 i + 0.0054912 4.9887e-09 i + 0.0055088 4.98888e-09 i + 0.0055264 4.98906e-09 i + 0.005544 4.98925e-09 i + 0.0055616 4.98945e-09 i + 0.0055792 4.98966e-09 i + 0.0055968 4.98988e-09 i + 0.0056144 4.99011e-09 i + 0.005632 4.99035e-09 i + 0.0056496 4.99061e-09 i + 0.0056672 4.99088e-09 i + 0.0056848 4.99116e-09 i + 0.0057024 4.99147e-09 i + 0.00572 4.99179e-09 i + 0.0057376 4.99213e-09 i + 0.0057552 4.99248e-09 i + 0.0057728 4.99286e-09 i + 0.0057904 4.99325e-09 i + 0.005808 4.99365e-09 i + 0.0058256 4.99408e-09 i + 0.0058432 4.99451e-09 i + 0.0058608 4.99496e-09 i + 0.0058784 4.99543e-09 i + 0.005896 4.99591e-09 i + 0.0059136 4.9964e-09 i + 0.0059312 4.99691e-09 i + 0.0059488 4.99743e-09 i + 0.0059664 4.99797e-09 i + 0.005984 4.99853e-09 i + 0.0060016 4.99912e-09 i + 0.0060192 4.99973e-09 i + 0.0060368 5.00038e-09 i + 0.0060544 5.00106e-09 i + 0.006072 5.00178e-09 i + 0.0060896 5.00255e-09 i + 0.0061072 5.00336e-09 i + 0.0061248 5.00423e-09 i + 0.0061424 5.00514e-09 i + 0.00616 5.00612e-09 i + 0.0061776 5.00715e-09 i + 0.0061952 5.00824e-09 i + 0.0062128 5.00938e-09 i + 0.0062304 5.01058e-09 i + 0.006248 5.01183e-09 i + 0.0062656 5.01312e-09 i + 0.0062832 5.01446e-09 i + 0.0063008 5.01585e-09 i + 0.0063184 5.01727e-09 i + 0.006336 5.01873e-09 i + 0.0063536 5.02024e-09 i + 0.0063712 5.02178e-09 i + 0.0063888 5.02336e-09 i + 0.0064064 5.025e-09 i + 0.006424 5.02669e-09 i + 0.0064416 5.02845e-09 i + 0.0064592 5.03029e-09 i + 0.0064768 5.03222e-09 i + 0.0064944 5.03425e-09 i + 0.006512 5.0364e-09 i + 0.0065296 5.03869e-09 i + 0.0065472 5.04112e-09 i + 0.0065648 5.04371e-09 i + 0.0065824 5.04647e-09 i + 0.0066 5.0494e-09 i + 0.0066176 5.05251e-09 i + 0.0066352 5.05579e-09 i + 0.0066528 5.05925e-09 i + 0.0066704 5.06287e-09 i + 0.006688 5.06665e-09 i + 0.0067056 5.07057e-09 i + 0.0067232 5.07463e-09 i + 0.0067408 5.0788e-09 i + 0.0067584 5.08308e-09 i + 0.006776 5.08747e-09 i + 0.0067936 5.09197e-09 i + 0.0068112 5.09656e-09 i + 0.0068288 5.10128e-09 i + 0.0068464 5.10612e-09 i + 0.006864 5.11112e-09 i + 0.0068816 5.11631e-09 i + 0.0068992 5.12173e-09 i + 0.0069168 5.12743e-09 i + 0.0069344 5.13345e-09 i + 0.006952 5.13985e-09 i + 0.0069696 5.14669e-09 i + 0.0069872 5.15402e-09 i + 0.0070048 5.16189e-09 i + 0.0070224 5.17033e-09 i + 0.00704 5.17937e-09 i + 0.0070576 5.18902e-09 i + 0.0070752 5.19928e-09 i + 0.0070928 5.21012e-09 i + 0.0071104 5.22153e-09 i + 0.007128 5.23346e-09 i + 0.0071456 5.24585e-09 i + 0.0071632 5.25865e-09 i + 0.0071808 5.27181e-09 i + 0.0071984 5.28527e-09 i + 0.007216 5.29899e-09 i + 0.0072336 5.31294e-09 i + 0.0072512 5.32709e-09 i + 0.0072688 5.34145e-09 i + 0.0072864 5.35603e-09 i + 0.007304 5.37087e-09 i + 0.0073216 5.38603e-09 i + 0.0073392 5.40159e-09 i + 0.0073568 5.41764e-09 i + 0.0073744 5.43431e-09 i + 0.007392 5.45174e-09 i + 0.0074096 5.47005e-09 i + 0.0074272 5.48941e-09 i + 0.0074448 5.50993e-09 i + 0.0074624 5.53175e-09 i + 0.00748 5.55497e-09 i + 0.0074976 5.57967e-09 i + 0.0075152 5.60591e-09 i + 0.0075328 5.63371e-09 i + 0.0075504 5.66311e-09 i + 0.007568 5.69413e-09 i + 0.0075856 5.72678e-09 i + 0.0076032 5.76113e-09 i + 0.0076208 5.79722e-09 i + 0.0076384 5.83515e-09 i + 0.007656 5.87501e-09 i + 0.0076736 5.9169e-09 i + 0.0076912 5.96091e-09 i + 0.0077088 6.00711e-09 i + 0.0077264 6.05554e-09 i + 0.007744 6.10621e-09 i + 0.0077616 6.15909e-09 i + 0.0077792 6.21418e-09 i + 0.0077968 6.27146e-09 i + 0.0078144 6.33097e-09 i + 0.007832 6.39277e-09 i + 0.0078496 6.45701e-09 i + 0.0078672 6.52386e-09 i + 0.0078848 6.59353e-09 i + 0.0079024 6.6662e-09 i + 0.00792 6.74202e-09 i + 0.0079376 6.82104e-09 i + 0.0079552 6.90323e-09 i + 0.0079728 6.98841e-09 i + 0.0079904 7.07632e-09 i + 0.008008 7.16661e-09 i + 0.0080256 7.25891e-09 i + 0.0080432 7.35283e-09 i + 0.0080608 7.44805e-09 i + 0.0080784 7.5443e-09 i + 0.008096 7.64139e-09 i + 0.0081136 7.7392e-09 i + 0.0081312 7.83763e-09 i + 0.0081488 7.93664e-09 i + 0.0081664 8.03613e-09 i + 0.008184 8.136e-09 i + 0.0082016 8.23602e-09 i + 0.0082192 8.33587e-09 i + 0.0082368 8.43502e-09 i + 0.0082544 8.53271e-09 i + 0.008272 8.62783e-09 i + 0.0082896 8.71891e-09 i + 0.0083072 8.80409e-09 i + 0.0083248 8.88116e-09 i + 0.0083424 8.9477e-09 i + 0.00836 9.00129e-09 i + 0.0083776 9.0396e-09 i + 0.0083952 9.06048e-09 i + 0.0084128 9.06184e-09 i + 0.0084304 9.04147e-09 i + 0.008448 8.99695e-09 i + 0.0084656 8.92579e-09 i + 0.0084832 8.82581e-09 i + 0.0085008 8.69539e-09 i + 0.0085184 8.53329e-09 i + 0.008536 8.33782e-09 i + 0.0085536 8.1058e-09 i + 0.0085712 7.83247e-09 i + 0.0085888 7.51308e-09 i + 0.0086064 7.14565e-09 i + 0.008624 6.73267e-09 i + 0.0086416 6.27902e-09 i + 0.0086592 5.78583e-09 i + 0.0086768 5.24475e-09 i + 0.0086944 4.63935e-09 i + 0.008712 3.95745e-09 i + 0.0087296 3.20683e-09 i + 0.0087472 2.41565e-09 i + 0.0087648 1.61152e-09 i + 0.0087824 8.05785e-10 i + 0.0088 2.42076e-15 i + -- GitLab