diff --git a/ChemistryLib/PhreeqcIOData/CreateKineticReactant.cpp b/ChemistryLib/PhreeqcIOData/CreateKineticReactant.cpp
index 2a95c1f2a8e09ed913071bdd2ff594e99025b8b7..ac9be9045e42071c1070a325fc6f8d23d23b830e 100644
--- a/ChemistryLib/PhreeqcIOData/CreateKineticReactant.cpp
+++ b/ChemistryLib/PhreeqcIOData/CreateKineticReactant.cpp
@@ -29,17 +29,24 @@ std::vector<KineticReactant> createKineticReactants(
         //! \ogs_file_param{prj__chemical_system__kinetic_reactants__kinetic_reactant__name}
         auto name = reactant_config.getConfigParameter<std::string>("name");
 
+        auto chemical_formula =
+            //! \ogs_file_param{prj__chemical_system__kinetic_reactants__kinetic_reactant__chemical_formula}
+            reactant_config.getConfigParameter<std::string>("chemical_formula",
+                                                            "");
+
         double const initial_amount =
             //! \ogs_file_param{prj__chemical_system__kinetic_reactants__kinetic_reactant__initial_amount}
             reactant_config.getConfigParameter<double>("initial_amount");
 
         auto parameters =
             //! \ogs_file_param{prj__chemical_system__kinetic_reactants__kinetic_reactant__parameters}
-            reactant_config.getConfigParameterOptional<std::vector<double>>(
-                "parameters");
+            reactant_config.getConfigParameter<std::vector<double>>(
+                "parameters", {});
 
-        kinetic_reactants.emplace_back(
-            std::move(name), initial_amount, std::move(parameters));
+        kinetic_reactants.emplace_back(std::move(name),
+                                       std::move(chemical_formula),
+                                       initial_amount,
+                                       std::move(parameters));
     }
 
     return kinetic_reactants;
diff --git a/ChemistryLib/PhreeqcIOData/KineticReactant.cpp b/ChemistryLib/PhreeqcIOData/KineticReactant.cpp
index 7d014bb98cdc99bd921eecd7ec16bf680d0c0c7c..58ca69348eb478d71d4d4e80ea188396d6085b74 100644
--- a/ChemistryLib/PhreeqcIOData/KineticReactant.cpp
+++ b/ChemistryLib/PhreeqcIOData/KineticReactant.cpp
@@ -20,6 +20,11 @@ std::ofstream& operator<<(std::ofstream& out,
     {
         out << kinetic_reactant.name << "\n";
 
+        if (!kinetic_reactant.chemical_formula.empty())
+        {
+            out << "-formula " << kinetic_reactant.chemical_formula << "\n";
+        }
+
         out << "-m  " << kinetic_reactant.amount << "\n";
 
         if (!kinetic_reactant.parameters.empty())
diff --git a/ChemistryLib/PhreeqcIOData/KineticReactant.h b/ChemistryLib/PhreeqcIOData/KineticReactant.h
index 5fd9418d8e7120cc958f4ef647cebe42eb8a52af..351c8e45aedac82fe1ef722fc385d3d69db30efa 100644
--- a/ChemistryLib/PhreeqcIOData/KineticReactant.h
+++ b/ChemistryLib/PhreeqcIOData/KineticReactant.h
@@ -20,14 +20,14 @@ namespace ChemistryLib
 {
 struct KineticReactant
 {
-    KineticReactant(std::string name_,
+    KineticReactant(std::string&& name_,
+                    std::string&& chemical_formula_,
                     double amount_,
-                    boost::optional<std::vector<double>>
-                        parameters_)
+                    std::vector<double>&& parameters_)
         : name(std::move(name_)),
+          chemical_formula(std::move(chemical_formula_)),
           amount(amount_),
-          parameters(parameters_ ? std::move(*parameters_)
-                                 : std::vector<double>{})
+          parameters(std::move(parameters_))
     {
     }
 
@@ -36,6 +36,7 @@ struct KineticReactant
         std::vector<KineticReactant> const& kinetic_reactants);
 
     std::string const name;
+    std::string const chemical_formula;
     double amount;
     std::vector<double> const parameters;
     static const ItemType item_type = ItemType::KineticReactant;
diff --git a/Documentation/ProjectFile/prj/chemical_system/kinetic_reactants/kinetic_reactant/t_chemical_formula.md b/Documentation/ProjectFile/prj/chemical_system/kinetic_reactants/kinetic_reactant/t_chemical_formula.md
new file mode 100644
index 0000000000000000000000000000000000000000..3e303680fb5e642a52871a23baaac705bed92f22
--- /dev/null
+++ b/Documentation/ProjectFile/prj/chemical_system/kinetic_reactants/kinetic_reactant/t_chemical_formula.md
@@ -0,0 +1 @@
+An optional tag to define a list of chemical formulas followed by corresponding stoichiometric coeffients, e.g., KAlMg3Si3O10(OH)2 0.8 KFe3AlSi3O10(OH)2 0.2. It means that consuming one mole of the custom kinetic reactant leaves 0.8 mole KAlMg3Si3O10(OH)2 and 0.2 mole KFe3AlSi3O10(OH)2 dissolved.
diff --git a/ProcessLib/ComponentTransport/Tests.cmake b/ProcessLib/ComponentTransport/Tests.cmake
index ff92aed5443b46242b5595872c7cc8c09fa18ce7..0167df0511de1b83ff6a2ff6d8b0035be9ddf8ad 100644
--- a/ProcessLib/ComponentTransport/Tests.cmake
+++ b/ProcessLib/ComponentTransport/Tests.cmake
@@ -966,3 +966,35 @@ AddTest(
     1d_isofrac_pcs_3_ts_210_t_21000.000000_expected.vtu 1d_isofrac_pcs_3_ts_210_t_21000.000000.vtu H H 1e-10 1e-16
     RUNTIME 85
 )
+
+AddTest(
+    NAME 1D_ReactiveMassTransport_ChemicalFormulaFlagTest
+    PATH Parabolic/ComponentTransport/ReactiveTransport/KineticReactant
+    EXECUTABLE ogs
+    EXECUTABLE_ARGS 1d_isofrac_flag_formula.prj
+    WRAPPER time
+    TESTER vtkdiff
+    REQUIREMENTS NOT OGS_USE_MPI
+    DIFF_DATA
+    1d_isofrac_pcs_3_ts_42_t_4200.000000_expected.vtu 1d_isofrac_flag_formula_pcs_3_ts_42_t_4200.000000.vtu pressure pressure 1e-6 1e-10
+    1d_isofrac_pcs_3_ts_84_t_8400.000000_expected.vtu 1d_isofrac_flag_formula_pcs_3_ts_84_t_8400.000000.vtu pressure pressure 1e-6 1e-10
+    1d_isofrac_pcs_3_ts_126_t_12600.000000_expected.vtu 1d_isofrac_flag_formula_pcs_3_ts_126_t_12600.000000.vtu pressure pressure 1e-6 1e-10
+    1d_isofrac_pcs_3_ts_168_t_16800.000000_expected.vtu 1d_isofrac_flag_formula_pcs_3_ts_168_t_16800.000000.vtu pressure pressure 1e-6 1e-10
+    1d_isofrac_pcs_3_ts_210_t_21000.000000_expected.vtu 1d_isofrac_flag_formula_pcs_3_ts_210_t_21000.000000.vtu pressure pressure 1e-6 1e-10
+    1d_isofrac_pcs_3_ts_42_t_4200.000000_expected.vtu 1d_isofrac_flag_formula_pcs_3_ts_42_t_4200.000000.vtu Synthetica Synthetica 1e-10 1e-16
+    1d_isofrac_pcs_3_ts_84_t_8400.000000_expected.vtu 1d_isofrac_flag_formula_pcs_3_ts_84_t_8400.000000.vtu Synthetica Synthetica 1e-10 1e-16
+    1d_isofrac_pcs_3_ts_126_t_12600.000000_expected.vtu 1d_isofrac_flag_formula_pcs_3_ts_126_t_12600.000000.vtu Synthetica Synthetica 1e-10 1e-16
+    1d_isofrac_pcs_3_ts_168_t_16800.000000_expected.vtu 1d_isofrac_flag_formula_pcs_3_ts_168_t_16800.000000.vtu Synthetica Synthetica 1e-10 1e-16
+    1d_isofrac_pcs_3_ts_210_t_21000.000000_expected.vtu 1d_isofrac_flag_formula_pcs_3_ts_210_t_21000.000000.vtu Synthetica Synthetica 1e-10 1e-16
+    1d_isofrac_pcs_3_ts_42_t_4200.000000_expected.vtu 1d_isofrac_flag_formula_pcs_3_ts_42_t_4200.000000.vtu Syntheticb Syntheticb 1e-10 1e-16
+    1d_isofrac_pcs_3_ts_84_t_8400.000000_expected.vtu 1d_isofrac_flag_formula_pcs_3_ts_84_t_8400.000000.vtu Syntheticb Syntheticb 1e-10 1e-16
+    1d_isofrac_pcs_3_ts_126_t_12600.000000_expected.vtu 1d_isofrac_flag_formula_pcs_3_ts_126_t_12600.000000.vtu Syntheticb Syntheticb 1e-10 1e-16
+    1d_isofrac_pcs_3_ts_168_t_16800.000000_expected.vtu 1d_isofrac_flag_formula_pcs_3_ts_168_t_16800.000000.vtu Syntheticb Syntheticb 1e-10 1e-16
+    1d_isofrac_pcs_3_ts_210_t_21000.000000_expected.vtu 1d_isofrac_flag_formula_pcs_3_ts_210_t_21000.000000.vtu Syntheticb Syntheticb 1e-10 1e-16
+    1d_isofrac_pcs_3_ts_42_t_4200.000000_expected.vtu 1d_isofrac_flag_formula_pcs_3_ts_42_t_4200.000000.vtu H H 1e-10 1e-16
+    1d_isofrac_pcs_3_ts_84_t_8400.000000_expected.vtu 1d_isofrac_flag_formula_pcs_3_ts_84_t_8400.000000.vtu H H 1e-10 1e-16
+    1d_isofrac_pcs_3_ts_126_t_12600.000000_expected.vtu 1d_isofrac_flag_formula_pcs_3_ts_126_t_12600.000000.vtu H H 1e-10 1e-16
+    1d_isofrac_pcs_3_ts_168_t_16800.000000_expected.vtu 1d_isofrac_flag_formula_pcs_3_ts_168_t_16800.000000.vtu H H 1e-10 1e-16
+    1d_isofrac_pcs_3_ts_210_t_21000.000000_expected.vtu 1d_isofrac_flag_formula_pcs_3_ts_210_t_21000.000000.vtu H H 1e-10 1e-16
+    RUNTIME 85
+)
diff --git a/Tests/Data/Parabolic/ComponentTransport/ReactiveTransport/KineticReactant/1d_isofrac_flag_formula.prj b/Tests/Data/Parabolic/ComponentTransport/ReactiveTransport/KineticReactant/1d_isofrac_flag_formula.prj
new file mode 100644
index 0000000000000000000000000000000000000000..4daa7f2d5bc0a0386338258b7adc4543423f33f1
--- /dev/null
+++ b/Tests/Data/Parabolic/ComponentTransport/ReactiveTransport/KineticReactant/1d_isofrac_flag_formula.prj
@@ -0,0 +1,440 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<OpenGeoSysProject>
+    <mesh>1d_isofrac.vtu</mesh>
+    <geometry>1d_isofrac.gml</geometry>
+    <processes>
+        <process>
+            <name>hc</name>
+            <type>ComponentTransport</type>
+            <integration_order>2</integration_order>
+            <coupling_scheme>staggered</coupling_scheme>
+            <process_variables>
+                <concentration>H</concentration>
+                <concentration>Synthetica</concentration>
+                <concentration>Syntheticb</concentration>
+                <pressure>pressure</pressure>
+            </process_variables>
+            <fluid>
+                <density>
+                    <type>Constant</type>
+                    <value>1e3</value>
+                </density>
+                <viscosity>
+                    <type>Constant</type>
+                    <value>1e-3</value>
+                </viscosity>
+            </fluid>
+            <porous_medium>
+                <porous_medium id="0">
+                    <permeability>
+                        <type>Constant</type>
+                        <permeability_tensor_entries>kappa</permeability_tensor_entries>
+                    </permeability>
+                    <porosity>
+                        <type>Constant</type>
+                        <porosity_parameter>porosity</porosity_parameter>
+                    </porosity>
+                    <storage>
+                        <type>Constant</type>
+                        <value>0.0</value>
+                    </storage>
+                </porous_medium>
+            </porous_medium>
+            <fluid_reference_density>rho_fluid</fluid_reference_density>
+            <retardation_factor>retardation</retardation_factor>
+            <decay_rate>decay</decay_rate>
+            <specific_body_force>0 0</specific_body_force>
+            <secondary_variables>
+                <secondary_variable type="static" internal_name="darcy_velocity" output_name="darcy_velocity"/>
+            </secondary_variables>
+        </process>
+    </processes>
+    <media>
+        <medium id="0">
+            <phases>
+                <phase>
+                    <type>AqueousLiquid</type>
+                    <components>
+                        <component>
+                            <name>H</name>
+                            <properties>
+                                <property>
+                                    <name>molecular_diffusion</name>
+                                    <type>Constant</type>
+                                    <value>1e-7</value>
+                                </property>
+                            </properties>
+                        </component>
+                        <component>
+                            <name>Synthetica</name>
+                            <properties>
+                                <property>
+                                    <name>molecular_diffusion</name>
+                                    <type>Constant</type>
+                                    <value>1e-7</value>
+                                </property>
+                            </properties>
+                        </component>
+                        <component>
+                            <name>Syntheticb</name>
+                            <properties>
+                                <property>
+                                    <name>molecular_diffusion</name>
+                                    <type>Constant</type>
+                                    <value>1e-7</value>
+                                </property>
+                            </properties>
+                        </component>
+                    </components>
+                </phase>
+            </phases>
+            <properties>
+                <property>
+                    <name>longitudinal_dispersivity</name>
+                    <type>Constant</type>
+                    <value>0</value>
+                </property>
+                <property>
+                    <name>transversal_dispersivity</name>
+                    <type>Constant</type>
+                    <value>0</value>
+                </property>
+            </properties>
+        </medium>
+    </media>
+    <time_loop>
+        <global_process_coupling>
+            <max_iter>6</max_iter>
+            <convergence_criteria>
+                <!-- convergence criterion for the first process (P) -->
+                <convergence_criterion>
+                    <type>DeltaX</type>
+                    <norm_type>NORM2</norm_type>
+                    <reltol>1e-14</reltol>
+                </convergence_criterion>
+                <!-- convergence criterion for the second process (H) -->
+                <convergence_criterion>
+                    <type>DeltaX</type>
+                    <norm_type>NORM2</norm_type>
+                    <reltol>1e-14</reltol>
+                </convergence_criterion>
+                <!-- convergence criterion for the second process (Synthetica) -->
+                <convergence_criterion>
+                    <type>DeltaX</type>
+                    <norm_type>NORM2</norm_type>
+                    <reltol>1e-14</reltol>
+                </convergence_criterion>
+                <!-- convergence criterion for the second process (Syntheticb) -->
+                <convergence_criterion>
+                    <type>DeltaX</type>
+                    <norm_type>NORM2</norm_type>
+                    <reltol>1e-14</reltol>
+                </convergence_criterion>
+            </convergence_criteria>
+        </global_process_coupling>
+        <processes>
+            <!-- convergence criterion for hydraulic equation -->
+            <process ref="hc">
+                <nonlinear_solver>basic_picard</nonlinear_solver>
+                <convergence_criterion>
+                    <type>DeltaX</type>
+                    <norm_type>NORM2</norm_type>
+                    <reltol>1e-14</reltol>
+                </convergence_criterion>
+                <time_discretization>
+                    <type>BackwardEuler</type>
+                </time_discretization>
+                <time_stepping>
+                    <type>FixedTimeStepping</type>
+                    <t_initial>0.0</t_initial>
+                    <t_end>21000</t_end>
+                    <timesteps>
+                        <pair>
+                            <repeat>210</repeat>
+                            <delta_t>100</delta_t>
+                        </pair>
+                    </timesteps>
+                </time_stepping>
+            </process>
+            <!-- convergence criterion for component transport equation (H) -->
+            <process ref="hc">
+                <nonlinear_solver>basic_picard</nonlinear_solver>
+                <convergence_criterion>
+                    <type>DeltaX</type>
+                    <norm_type>NORM2</norm_type>
+                    <reltol>1e-14</reltol>
+                </convergence_criterion>
+                <time_discretization>
+                    <type>BackwardEuler</type>
+                </time_discretization>
+                <time_stepping>
+                    <type>FixedTimeStepping</type>
+                    <t_initial>0.0</t_initial>
+                    <t_end>21000</t_end>
+                    <timesteps>
+                        <pair>
+                            <repeat>210</repeat>
+                            <delta_t>100</delta_t>
+                        </pair>
+                    </timesteps>
+                </time_stepping>
+            </process>
+            <!-- convergence criterion for component transport equation (Synthetica) -->
+            <process ref="hc">
+                <nonlinear_solver>basic_picard</nonlinear_solver>
+                <convergence_criterion>
+                    <type>DeltaX</type>
+                    <norm_type>NORM2</norm_type>
+                    <reltol>1e-14</reltol>
+                </convergence_criterion>
+                <time_discretization>
+                    <type>BackwardEuler</type>
+                </time_discretization>
+                <time_stepping>
+                    <type>FixedTimeStepping</type>
+                    <t_initial>0.0</t_initial>
+                    <t_end>21000</t_end>
+                    <timesteps>
+                        <pair>
+                            <repeat>210</repeat>
+                            <delta_t>100</delta_t>
+                        </pair>
+                    </timesteps>
+                </time_stepping>
+            </process>
+            <!-- convergence criterion for component transport equation (Syntheticb) -->
+            <process ref="hc">
+                <nonlinear_solver>basic_picard</nonlinear_solver>
+                <convergence_criterion>
+                    <type>DeltaX</type>
+                    <norm_type>NORM2</norm_type>
+                    <reltol>1e-14</reltol>
+                </convergence_criterion>
+                <time_discretization>
+                    <type>BackwardEuler</type>
+                </time_discretization>
+                <time_stepping>
+                    <type>FixedTimeStepping</type>
+                    <t_initial>0.0</t_initial>
+                    <t_end>21000</t_end>
+                    <timesteps>
+                        <pair>
+                            <repeat>210</repeat>
+                            <delta_t>100</delta_t>
+                        </pair>
+                    </timesteps>
+                </time_stepping>
+            </process>
+       </processes>
+        <output>
+            <type>VTK</type>
+            <prefix>1d_isofrac_flag_formula</prefix>
+            <timesteps>
+                <pair>
+                    <repeat>5</repeat>
+                    <each_steps>42</each_steps>
+                </pair>
+            </timesteps>
+            <variables>
+                <variable>H</variable>
+                <variable>Synthetica</variable>
+                <variable>Syntheticb</variable>
+                <variable>pressure</variable>
+                <variable>darcy_velocity</variable>
+            </variables>
+        </output>
+    </time_loop>
+    <chemical_system chemical_solver="Phreeqc">
+        <database>revised_llnl.dat</database>
+        <solution>
+            <temperature>25</temperature>
+            <pressure>1</pressure>
+            <pe>4</pe>
+            <components>
+                <component>Synthetica</component>
+                <component>Syntheticb</component>
+            </components>
+        </solution>
+        <kinetic_reactants>
+            <kinetic_reactant>
+                <name>Productd</name>
+                <chemical_formula>SyntheticaSyntheticb 1</chemical_formula>
+                <initial_amount>1e-6</initial_amount>
+            </kinetic_reactant>
+        </kinetic_reactants>
+        <rates>
+            <rate>
+                <kinetic_reactant>Productd</kinetic_reactant>
+                <expression>
+                    <statement>Km = 10</statement>
+                    <statement>U = 1e-3</statement>
+                    <statement>rate = U * TOT("Synthetica") / (Km + TOT("Syntheticb"))</statement>
+                    <statement>moles = - rate * TIME</statement>
+                    <statement>save moles</statement>
+                </expression>
+            </rate>
+        </rates>
+    </chemical_system>
+    <parameters>
+        <parameter>
+            <name>kappa</name>
+            <type>Constant</type>
+            <values>1.157e-12</values>
+        </parameter>
+        <parameter>
+            <name>porosity</name>
+            <type>Constant</type>
+            <value>1</value>
+        </parameter>
+        <parameter>
+            <name>rho_fluid</name>
+            <type>Constant</type>
+            <value>1000</value>
+        </parameter>
+        <parameter>
+            <name>retardation</name>
+            <type>Constant</type>
+            <value>1</value>
+        </parameter>
+        <parameter>
+            <name>decay</name>
+            <type>Constant</type>
+            <value>0</value>
+        </parameter>
+        <parameter>
+            <name>p0</name>
+            <type>Constant</type>
+            <value>1</value>
+        </parameter>
+        <parameter>
+            <name>p_upstream</name>
+            <type>Constant</type>
+            <value>1e5</value>
+        </parameter>
+        <parameter>
+            <name>p_downstream_Neumann</name>
+            <type>Constant</type>
+            <value>-1.685e-2</value>
+        </parameter>
+        <parameter>
+            <name>c0_H</name>
+            <type>Constant</type>
+            <!--pH=7-->
+            <value>1e-7</value>
+        </parameter>
+        <parameter>
+            <name>c0_Synthetica</name>
+            <type>Constant</type>
+            <value>0</value>
+        </parameter>
+        <parameter>
+            <name>c0_Syntheticb</name>
+            <type>Constant</type>
+            <value>0</value>
+        </parameter>
+        <parameter>
+            <name>c_H</name>
+            <type>Constant</type>
+            <!--pH=7-->
+            <value>1e-7</value>
+        </parameter>
+        <parameter>
+            <name>c_Synthetica</name>
+            <type>Constant</type>
+            <value>0.5</value>
+        </parameter>
+        <parameter>
+            <name>c_Syntheticb</name>
+            <type>Constant</type>
+            <value>0.5</value>
+        </parameter>
+    </parameters>
+    <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>upstream</geometry>
+                    <type>Dirichlet</type>
+                    <parameter>p_upstream</parameter>
+                </boundary_condition>
+                <boundary_condition>
+                    <geometrical_set>geometry</geometrical_set>
+                    <geometry>downstream</geometry>
+                    <type>Neumann</type>
+                    <parameter>p_downstream_Neumann</parameter>
+                </boundary_condition>
+            </boundary_conditions>
+        </process_variable>
+        <process_variable>
+            <name>H</name>
+            <components>1</components>
+            <order>1</order>
+            <initial_condition>c0_H</initial_condition>
+            <boundary_conditions>
+                <boundary_condition>
+                    <geometrical_set>geometry</geometrical_set>
+                    <geometry>upstream</geometry>
+                    <type>Dirichlet</type>
+                    <parameter>c_H</parameter>
+                </boundary_condition>
+            </boundary_conditions>
+        </process_variable>
+        <process_variable>
+            <name>Synthetica</name>
+            <components>1</components>
+            <order>1</order>
+            <initial_condition>c0_Synthetica</initial_condition>
+            <boundary_conditions>
+                <boundary_condition>
+                    <geometrical_set>geometry</geometrical_set>
+                    <geometry>upstream</geometry>
+                    <type>Dirichlet</type>
+                    <parameter>c_Synthetica</parameter>
+                </boundary_condition>
+            </boundary_conditions>
+        </process_variable>
+        <process_variable>
+            <name>Syntheticb</name>
+            <components>1</components>
+            <order>1</order>
+            <initial_condition>c0_Syntheticb</initial_condition>
+            <boundary_conditions>
+                <boundary_condition>
+                    <geometrical_set>geometry</geometrical_set>
+                    <geometry>upstream</geometry>
+                    <type>Dirichlet</type>
+                    <parameter>c_Syntheticb</parameter>
+                </boundary_condition>
+            </boundary_conditions>
+        </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-16 -maxiter 20000</lis>
+            <eigen>
+                <solver_type>BiCGSTAB</solver_type>
+                <precon_type>ILUT</precon_type>
+                <max_iteration_step>10000</max_iteration_step>
+                <error_tolerance>1e-14</error_tolerance>
+            </eigen>
+            <petsc>
+                <prefix>hc</prefix>
+                <parameters>-hc_ksp_type bcgs -hc_pc_type bjacobi -hc_ksp_rtol 1e-8 -hc_ksp_max_it 20000</parameters>
+            </petsc>
+        </linear_solver>
+    </linear_solvers>
+</OpenGeoSysProject>