From 9452965ef4fb751b20b6016071a972c4e125d7ab Mon Sep 17 00:00:00 2001
From: HBShaoUFZ <36633245+HBShaoUFZ@users.noreply.github.com>
Date: Wed, 7 Mar 2018 17:16:45 +0100
Subject: [PATCH] [Web] Add the benchmark "Buildup Test" (#2089)

* add the content of the benchmark buildup test

* add the benchmark description.

* remove tailing white space.

* fix the table format.

* fix figures

* linking the figures

* add input files to the Test data

* move input files to the LFS

* minor language and format issues fixed

* add standard benchmark results.

* activate the test

* correct the file name.

* fixing two issues raised by WW.
1) Fixing typo in the benchmark document;
2) Only print out the necessary time step for comparison.
---
 ProcessLib/LiquidFlow/Tests.cmake             |  12 +
 .../LiquidFlow/BuildupTest/buildup_test.prj   | 270 ++++++++++++++++++
 .../LiquidFlow/BuildupTest/line_1000_axi.gml  |   3 +
 .../LiquidFlow/BuildupTest/line_1000_axi.vtu  |   3 +
 ...ldup_test_pcs_0_ts_107_t_424800.000000.vtu |   3 +
 ...ldup_test_pcs_0_ts_211_t_720000.000000.vtu |   3 +
 .../liquid-flow/buildup_test.pandoc           | 150 ++++++++++
 .../benchmarks/liquid-flow/comparison.png     |   3 +
 .../docs/benchmarks/liquid-flow/error.png     |   3 +
 .../docs/benchmarks/liquid-flow/horner.png    |   3 +
 10 files changed, 453 insertions(+)
 create mode 100644 Tests/Data/Parabolic/LiquidFlow/BuildupTest/buildup_test.prj
 create mode 100644 Tests/Data/Parabolic/LiquidFlow/BuildupTest/line_1000_axi.gml
 create mode 100644 Tests/Data/Parabolic/LiquidFlow/BuildupTest/line_1000_axi.vtu
 create mode 100644 Tests/Data/Parabolic/LiquidFlow/BuildupTest/standard_solution_buildup_test_pcs_0_ts_107_t_424800.000000.vtu
 create mode 100644 Tests/Data/Parabolic/LiquidFlow/BuildupTest/standard_solution_buildup_test_pcs_0_ts_211_t_720000.000000.vtu
 create mode 100644 web/content/docs/benchmarks/liquid-flow/buildup_test.pandoc
 create mode 100644 web/content/docs/benchmarks/liquid-flow/comparison.png
 create mode 100644 web/content/docs/benchmarks/liquid-flow/error.png
 create mode 100644 web/content/docs/benchmarks/liquid-flow/horner.png

diff --git a/ProcessLib/LiquidFlow/Tests.cmake b/ProcessLib/LiquidFlow/Tests.cmake
index dafcce389bb..3a092a9f04c 100644
--- a/ProcessLib/LiquidFlow/Tests.cmake
+++ b/ProcessLib/LiquidFlow/Tests.cmake
@@ -45,6 +45,18 @@ AddTest(
     DIFF_DATA
     axisym_theis.vtu liquid_pcs_pcs_0_ts_30_t_1728.000000.vtu OGS5_pressure pressure 1e-8 1e-8
 )
+AddTest(
+    NAME LiquidFlow_BuildupTest
+    PATH Parabolic/LiquidFlow/BuildupTest
+    EXECUTABLE ogs
+    EXECUTABLE_ARGS buildup_test.prj
+    WRAPPER time
+    TESTER vtkdiff
+    REQUIREMENTS NOT OGS_USE_MPI
+    DIFF_DATA
+    standard_solution_buildup_test_pcs_0_ts_107_t_424800.000000.vtu buildup_test_pcs_0_ts_107_t_424800.000000.vtu pressure pressure 1e-12 0.0
+	standard_solution_buildup_test_pcs_0_ts_211_t_720000.000000.vtu buildup_test_pcs_0_ts_211_t_720000.000000.vtu pressure pressure 1e-12 0.0
+)
 
 AddTest(
     NAME LARGE_LiquidFlow_Anisotropic_GravityDriven3D
diff --git a/Tests/Data/Parabolic/LiquidFlow/BuildupTest/buildup_test.prj b/Tests/Data/Parabolic/LiquidFlow/BuildupTest/buildup_test.prj
new file mode 100644
index 00000000000..d9385c546aa
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/BuildupTest/buildup_test.prj
@@ -0,0 +1,270 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<OpenGeoSysProject>
+    <mesh axially_symmetric="true">line_1000_axi.vtu</mesh>
+    <geometry>line_1000_axi.gml</geometry>
+    <processes>
+        <process>
+            <name>LiquidFlow</name>
+            <type>LIQUID_FLOW</type>
+            <integration_order>2</integration_order>
+            <darcy_gravity>
+                <!-- axis_id: 0, 1, or the dimension of space minus one -->
+                <axis_id>1</axis_id>
+                <!-- g>=0. g=0: non gravity term -->
+                <g>0.</g>
+            </darcy_gravity>
+            <process_variables>
+                <process_variable>pressure</process_variable>
+            </process_variables>
+            <secondary_variables>
+                <secondary_variable type="static" internal_name="darcy_velocity" output_name="v"/>
+            </secondary_variables>
+            <material_property>
+                <fluid>
+                    <density>
+                        <type>Constant</type>
+                        <value> 78.68 </value>
+                    </density>
+                    <viscosity>
+                        <type>Constant</type>
+                        <value> 1.295e-4 </value>
+                    </viscosity>
+                </fluid>
+                <porous_medium>
+                    <porous_medium id="0">
+                        <permeability>
+                            <permeability_tensor_entries>kappa1</permeability_tensor_entries>
+                            <type>Constant</type>
+                        </permeability>
+                        <porosity>
+                            <type>Constant</type>
+                            <porosity_parameter>constant_porosity_parameter</porosity_parameter>
+                        </porosity>
+                        <storage>
+                            <type>Constant</type>
+                            <value> 8.05e-7 </value>
+                        </storage>
+                    </porous_medium>
+                </porous_medium>
+            </material_property>
+        </process>
+    </processes>
+    <time_loop>
+        <processes>
+            <process ref="LiquidFlow">
+                <nonlinear_solver>basic_picard</nonlinear_solver>
+                <convergence_criterion>
+                    <type>DeltaX</type>
+                    <norm_type>NORM2</norm_type>
+                    <abstol>1.e-6</abstol>
+                </convergence_criterion>
+                <time_discretization>
+                    <type>BackwardEuler</type>
+                </time_discretization>
+                <output>
+                    <variables>
+                        <variable> pressure </variable>
+                        <variable> v </variable>
+                    </variables>
+                </output>
+                <time_stepping>
+                    <type>FixedTimeStepping</type>
+                    <t_initial> 0.0 </t_initial>
+					<t_end> 720000 </t_end>
+                    <timesteps>
+						<pair>
+                            <repeat>10</repeat>
+                            <delta_t>0.432</delta_t>
+                        </pair>
+                        <pair>
+                            <repeat>10</repeat>
+                            <delta_t>0.864</delta_t>
+                        </pair>
+						<pair>
+                            <repeat>10</repeat>
+                            <delta_t>4.32</delta_t>
+                        </pair>
+                        <pair>
+                            <repeat>10</repeat>
+                            <delta_t>8.64</delta_t>
+                        </pair>
+						<pair>
+                            <repeat>10</repeat>
+                            <delta_t>43.2</delta_t>
+                        </pair>
+                        <pair>
+                            <repeat>10</repeat>
+                            <delta_t>86.4</delta_t>
+                        </pair>
+						<pair>
+                            <repeat>10</repeat>
+                            <delta_t>432.0</delta_t>
+                        </pair>
+                        <pair>
+                            <repeat>10</repeat>
+                            <delta_t>864.0</delta_t>
+                        </pair>
+						<pair>
+                            <repeat>10</repeat>
+                            <delta_t>4320.</delta_t>
+                        </pair>
+                        <pair>
+                            <repeat>10</repeat>
+                            <delta_t>8640.</delta_t>
+                        </pair>
+                        <pair>
+                            <repeat>6</repeat>
+                            <delta_t>43200.</delta_t>
+                        </pair>
+						<pair>
+                            <repeat>1</repeat>
+                            <delta_t>21601.44</delta_t>
+                        </pair>
+						<pair>
+                            <repeat>10</repeat>
+                            <delta_t>0.432</delta_t>
+                        </pair>
+                        <pair>
+                            <repeat>10</repeat>
+                            <delta_t>0.864</delta_t>
+                        </pair>
+						<pair>
+                            <repeat>10</repeat>
+                            <delta_t>4.32</delta_t>
+                        </pair>
+                        <pair>
+                            <repeat>10</repeat>
+                            <delta_t>8.64</delta_t>
+                        </pair>
+						<pair>
+                            <repeat>10</repeat>
+                            <delta_t>43.2</delta_t>
+                        </pair>
+                        <pair>
+                            <repeat>10</repeat>
+                            <delta_t>86.4</delta_t>
+                        </pair>
+						<pair>
+                            <repeat>10</repeat>
+                            <delta_t>432.0</delta_t>
+                        </pair>
+                        <pair>
+                            <repeat>10</repeat>
+                            <delta_t>864.0</delta_t>
+                        </pair>
+						<pair>
+                            <repeat>10</repeat>
+                            <delta_t>4320.</delta_t>
+                        </pair>
+						<pair>
+                            <repeat>10</repeat>
+                            <delta_t>8640.</delta_t>
+                        </pair>
+                        <pair>
+                            <repeat>10</repeat>
+                            <delta_t>43200.</delta_t>
+                        </pair>
+                    </timesteps>
+                </time_stepping>
+            </process>
+        </processes>
+        <output>
+            <type>VTK</type>
+            <prefix>buildup_test</prefix>
+            <timesteps>
+                <pair>
+                    <repeat> 1 </repeat>
+                    <each_steps> 107 </each_steps>
+                </pair>
+            </timesteps>
+        </output>
+    </time_loop>
+    <parameters>
+        <parameter>
+            <name>p0</name>
+            <type>Constant</type>
+            <value>67.5e5</value>
+        </parameter>
+        <parameter>
+            <name>p_dbc</name>
+            <type>Constant</type>
+            <value>67.5e5</value>
+        </parameter>
+        <parameter>
+            <name>constant_porosity_parameter</name>
+            <type>Constant</type>
+            <value>1</value>
+        </parameter>
+        <parameter>
+            <name>kappa1</name>
+            <type>Constant</type>
+            <values>9.2e-12</values>
+        </parameter>
+		<parameter>
+            <name>p_spatial</name>
+            <type>Constant</type>
+            <value>1</value>
+        </parameter>
+        <parameter>
+            <name>pressure_source_term</name>
+            <type>CurveScaled</type>
+            <curve>pressure_source_term_temporal</curve>
+            <parameter>p_spatial</parameter>
+        </parameter>
+    </parameters>
+	<curves>
+        <curve>
+            <name>pressure_source_term_temporal</name>
+			<coords> 0 424800 424800.001 849600</coords>
+			<values> -0.2754 -0.2754 0 0</values>
+		</curve>
+	</curves>
+    <process_variables>
+        <process_variable>
+            <name>pressure</name>
+            <components>1</components>
+            <order>1</order>
+            <initial_condition>p0</initial_condition>
+            <boundary_conditions>
+                <boundary_condition>
+                    <geometrical_set>geometry</geometrical_set>
+                    <geometry>outer</geometry>
+                    <type>Dirichlet</type>
+                    <parameter>p_dbc</parameter>
+                </boundary_condition>
+            </boundary_conditions>
+			<source_terms>
+                <source_term>
+                    <geometrical_set>geometry</geometrical_set>
+                    <geometry>inner</geometry>
+                    <type>Nodal</type>
+                    <parameter>pressure_source_term</parameter>
+                </source_term>
+            </source_terms>
+        </process_variable>
+    </process_variables>
+    <nonlinear_solvers>
+        <nonlinear_solver>
+            <name>basic_picard</name>
+            <type>Picard</type>
+            <max_iter>10</max_iter>
+            <linear_solver>general_linear_solver</linear_solver>
+        </nonlinear_solver>
+    </nonlinear_solvers>
+    <linear_solvers>
+        <linear_solver>
+            <name>general_linear_solver</name>
+            <lis>-i cg -p jacobi -tol 1e-20 -maxiter 10000</lis>
+            <eigen>
+                <solver_type>CG</solver_type>
+                <precon_type>DIAGONAL</precon_type>
+                <max_iteration_step>10000</max_iteration_step>
+                <error_tolerance>1e-20</error_tolerance>
+            </eigen>
+            <petsc>
+                <prefix>lf</prefix>
+                <parameters>-lf_ksp_type cg -lf_pc_type bjacobi -lf_ksp_rtol 1e-16 -lf_ksp_max_it 10000</parameters>
+            </petsc>
+        </linear_solver>
+    </linear_solvers>
+</OpenGeoSysProject>
diff --git a/Tests/Data/Parabolic/LiquidFlow/BuildupTest/line_1000_axi.gml b/Tests/Data/Parabolic/LiquidFlow/BuildupTest/line_1000_axi.gml
new file mode 100644
index 00000000000..29869a1e62c
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/BuildupTest/line_1000_axi.gml
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6e1ce78c91d3ad568e0f3b530da064658a3c48da4331d182ee7f880c17a34eba
+size 483
diff --git a/Tests/Data/Parabolic/LiquidFlow/BuildupTest/line_1000_axi.vtu b/Tests/Data/Parabolic/LiquidFlow/BuildupTest/line_1000_axi.vtu
new file mode 100644
index 00000000000..06110f1294a
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/BuildupTest/line_1000_axi.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a9bd6cad0e07b339a979478ba26bb5b6d0bc9e9aa405b10ea1be65405770b93f
+size 71753
diff --git a/Tests/Data/Parabolic/LiquidFlow/BuildupTest/standard_solution_buildup_test_pcs_0_ts_107_t_424800.000000.vtu b/Tests/Data/Parabolic/LiquidFlow/BuildupTest/standard_solution_buildup_test_pcs_0_ts_107_t_424800.000000.vtu
new file mode 100644
index 00000000000..6b37784d92e
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/BuildupTest/standard_solution_buildup_test_pcs_0_ts_107_t_424800.000000.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4bf448b0b3e36195d5c06aebb7b95bfd643dd90414a952aa1d774e77c2100a61
+size 35759
diff --git a/Tests/Data/Parabolic/LiquidFlow/BuildupTest/standard_solution_buildup_test_pcs_0_ts_211_t_720000.000000.vtu b/Tests/Data/Parabolic/LiquidFlow/BuildupTest/standard_solution_buildup_test_pcs_0_ts_211_t_720000.000000.vtu
new file mode 100644
index 00000000000..4914b639bce
--- /dev/null
+++ b/Tests/Data/Parabolic/LiquidFlow/BuildupTest/standard_solution_buildup_test_pcs_0_ts_211_t_720000.000000.vtu
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d00ca55fa12f71153abb5e2d6a0159b528eda98f3219d7cd2edcbc9309191b15
+size 26606
diff --git a/web/content/docs/benchmarks/liquid-flow/buildup_test.pandoc b/web/content/docs/benchmarks/liquid-flow/buildup_test.pandoc
new file mode 100644
index 00000000000..939e41e51f4
--- /dev/null
+++ b/web/content/docs/benchmarks/liquid-flow/buildup_test.pandoc
@@ -0,0 +1,150 @@
++++
+author = "Boyan Meng and Haibing Shao"
+date = "2018-02-27T16:44:00+01:00"
+title = "Buildup Test"
+weight = 172
+project = "/Parabolic/LiquidFlow/BuildupTest/buildup_test.prj"
+
+[menu]
+  [menu.benchmarks]
+    parent = "liquid-flow"
+
++++
+
+{{< data-link >}}
+
+Problem description {#problem-description .unnumbered .unnumbered}
+===================
+
+The pressure buildup test is performed by shutting in a producing well
+at time $t=t_p$, after which a smooth rise of the well head pressure can
+be observed. For a geothermal reservoir, the buildup test result is
+interpreted using a Horner plot in order to evaluate the reservoir
+permeability or transmissivity. In this benchmark, observation data from
+a geothermal well is employed to parameterize the numerical model. In
+the model, a time dependent nodal source term was set up to represent
+the shut-in operation. The simulated pressure profile is then verified
+against the analytical solution.
+
+Model Setup {#model-setup .unnumbered .unnumbered}
+===========
+
+This benchmark represents a scenario in which the well had been
+producing geothermal brine for $118\ \mathrm{h}$ at a rate of
+$78\ t/\mathrm{h}$ and was then shut in for a buildup test. At the given
+reservoir temperature (260$^\circ$C) and pressure ($47\ \mathrm{bar}$), the
+density and viscosity of the water and steam mixture were calculated as
+$\rho=78.68\ \mathrm{kg/m^3}$ and
+$\mu=1.295\times10^{-4}\ \mathrm{Pa\ s}$. The compressibility of the
+mixture was estimated as $nc_t=0.0805\ \mathrm{bar^{-1}}$ ($n$ refers to
+the porosity of the reservoir), which yields a specific storage
+coefficient of $S=\rho gnc_t=6.21\times 10^{-4}\ \mathrm{m^{-1}}$. The
+observed pressure readings during the buildup test are cited from
+Chapter 6 of the book *Geothermal Power Generation*
+[1], and the data is archived in the Appendix.
+
+The permeability of the reservoir can be estimated by means of a Horner
+plot, in which the pressure $p$ is plotted against
+$(t_p+\Delta t)/\Delta t$, i.e. Horner time on a semi-logarithmic scale
+(cf. Figure 1). In the Horner plot, the data points form a
+straight line in the late-time period of the test. Note that the time
+increases in the opposite direction of the *X*-axis. Therefore, the
+linear section appears at the left side of the diagram.
+
+\centering
+{{< img src="../horner.png" >}}
+
+Figure 1: Horner plot ($p$ vs $(t_p+\Delta t)/\Delta t$) for buildup test showing the inferred Horner straight line
+
+
+The slope $m$ of the Horner straight line is expressed as:
+$$m=0.1832\frac{Q\mu}{\kappa b}$$ in which $Q\  \mathrm{[L^3/T]}\ (Q>0)$
+is the production rate of the well before shut-in,
+$\kappa\ \mathrm{[L^2]}$ is the permeability and $b\ \mathrm{[L]}$ is
+the aquifer thickness. From the Horner plot, we can infer a Horner
+straight line with a slope of $m=0.79$. Therefore the transmissivity of
+the aquifer can be calculated as $$\begin{aligned}
+\kappa b&=&0.1832\frac{Q\mu}{m}=0.1832\frac{((78000/3600)/78.68)\times1.295\times10^{-4}}{7.09\times10^5}\\&=&9.2\times10^{-12}\ \mathrm{m^3}\end{aligned}$$
+In addition, the straight line in the Horner plot can be extracted to a Horner time of 1,
+which corresponds to the infinite shut-in time $(\Delta t)$. This leads to
+an extrapolated pressure $p_0$ of $67.5~\mathrm{kPa}$, which is the
+undisturbed reservoir pressure .
+
+Input files {#input-files .unnumbered .unnumbered}
+===========
+
+The benchmark project is defined in the input file 'buildup\_test.prj'. It defines the process to
+be solved as "LiquidFlow" and the primary variable is hence pressure.
+The initial condition is set to $p_0=67.5\ \mathrm{bar}$ and the
+undisturbed boundary is achieved by a large domain size
+$(r=1000\ \mathrm{m})$. The time-dependent source term is applied in this
+benchmark. From the beginning until $t=424800$ sec, the pumping rate was
+maintained at a constant rate. Afterwards, the well is shut-in and pressure
+starts to build up. The geometries used to specify the model domain, boundary
+conditions, and source term can be found in 'line\_1000\_axi.gml' file.
+The mesh is specified in 'line\_1000\_axi.vtu', which is stored in the
+VTK format and can be directly visualized in Paraview.
+
+Analytical solution {#analytical-solution .unnumbered .unnumbered}
+===================
+
+The pressure buildup test is comparable to a pumping recovery test as
+the extraction rate is first kept constant at $Q$, and then becomes zero
+at $t=t_p$. This benchmark then adopts the same assumptions as in the
+[Theis'
+problem](https://benchmarks.opengeosys.org/docs/benchmarks/liquid-flow/liquid-flow-theis-problem/).
+The analytical solution of the pressure difference $\Delta p$ with
+respect to the initial pressure $p_0$ is the sum of two Theis curves:
+one starting at $t=0$ and another starting at $t=t_p$ but with an
+opposite extraction rate, i.e. for $t\leq t_p$,
+$$\Delta p=\rho g \frac{-Q}{4\pi T}W\left(\frac{r^2S}{4Tt}\right)$$ and
+for $t>t_p$,
+$$\Delta p=\rho g \frac{-Q}{4\pi T}W\left(\frac{r^2S}{4Tt}\right)+\rho g \frac{Q}{4\pi T}W\left(\frac{r^2S}{4T(t-t_p)}\right)$$
+
+Results and evaluation {#results-and-evaluation .unnumbered .unnumbered}
+======================
+
+The pressure evolution is simulated throughout the domain and the result
+is compared with the analytical solution at $r=10.287\ \mathrm{m}$. In
+Figure 2, it can be observed that the numerical model
+fits with the analytical solution very well. The absolute and relative
+error between the analytical and numerical solution is depicted in
+Figure 3.
+
+{{< img src="../comparison.png" >}}
+
+
+Figure 2: OGS 6 result compared with analytical solution
+
+{{< img src="../error.png" >}}
+
+
+Figure 3: Absolute and relative error
+
+References {#references .unnumbered .unnumbered}
+========
+[1] RN Horne. Characterization, evaluation, and interpretation of well data. In: R DiPippo, editor,Geothermal Power Generation, chapter 6, pages 141–163.Elsevier, 2016.
+
+Appendix {#appendix .unnumbered .unnumbered}
+========
+
+\centering
+| $\Delta t$ (h) | $\Delta p$ (bar)   |  $\Delta t$ (h)  | $\Delta p$ (bar) |
+| :------------: |:-----------------: | :---------------:| :---------------:|
+| 0.0024         | 0.174              |  0.1708          | 3.65             |
+| 0.0073         | 0.695              |  0.2442          | 4.00             |
+| 0.0098         | 1.13               |  0.3667          | 4.26             |
+| 0.0122         | 1.30               |  0.6111          | 5.13             |
+| 0.0171         | 1.57               |  0.8556          | 6.35             |
+| 0.022          | 1.74               |  1.2194          | 7.48             |
+| 0.0244         | 1.91               |  1.5861          | 8.17             |
+| 0.0292         | 2.00               |  1.8361          | 8.43             |
+| 0.0367         | 2.09               |  2.4417          | 9.22             |
+| 0.0414         | 2.17               |  3.4167          | 10.2             |
+| 0.0489         | 2.43               |  3.8611          | 10.4             |
+| 0.0586         | 2.61               |  6.3056          | 11.8             |
+| 0.0733         | 2.78               |  8.3056          | 12.6             |
+| 0.0856         | 2.96               |  10.9722         | 13.2             |
+| 0.0975         | 3.13               |                  |                  |
+
+  : Pressure measurements during well buildup[]{label="table:1"}
diff --git a/web/content/docs/benchmarks/liquid-flow/comparison.png b/web/content/docs/benchmarks/liquid-flow/comparison.png
new file mode 100644
index 00000000000..8b693f33e9d
--- /dev/null
+++ b/web/content/docs/benchmarks/liquid-flow/comparison.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ed8108d7ce33916d5ff0db71d303f867342a9a9128d232636ef0f6392455c9f9
+size 4457
diff --git a/web/content/docs/benchmarks/liquid-flow/error.png b/web/content/docs/benchmarks/liquid-flow/error.png
new file mode 100644
index 00000000000..8cb06288d52
--- /dev/null
+++ b/web/content/docs/benchmarks/liquid-flow/error.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4a4c4ed3bc4132f8ac6061e164be8826e26f950223d486e541bcca69748b80ae
+size 33444
diff --git a/web/content/docs/benchmarks/liquid-flow/horner.png b/web/content/docs/benchmarks/liquid-flow/horner.png
new file mode 100644
index 00000000000..dd015c20f24
--- /dev/null
+++ b/web/content/docs/benchmarks/liquid-flow/horner.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:50a3bb0be03d659f0c93536fde1b29c92d90410a559bc3a8794ab970f8f5c7ea
+size 11774
-- 
GitLab