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>