diff --git a/ProcessLib/PhaseField/Tests.cmake b/ProcessLib/PhaseField/Tests.cmake index 29c3a780e48a70d7e00e759b590cc699177a4f0d..596d0e315b2e1b5b2ab26d998851d893afc83291 100644 --- a/ProcessLib/PhaseField/Tests.cmake +++ b/ProcessLib/PhaseField/Tests.cmake @@ -10,3 +10,56 @@ AddTest( expected_cube_1e0_pcs_0_ts_10000_t_1.000000.vtu cube_1e0_pcs_0_ts_10000_t_1.000000.vtu displacement displacement 1e-6 1e-6 expected_cube_1e0_pcs_0_ts_10000_t_1.000000.vtu cube_1e0_pcs_0_ts_10000_t_1.000000.vtu phasefield phasefield 1e-6 1e-6 ) + +AddTest( + NAME PhaseField_2D_StaticHydraulicFracture + PATH PhaseField + EXECUTABLE ogs + EXECUTABLE_ARGS 2D_static.prj + WRAPPER time + TESTER vtkdiff + REQUIREMENTS NOT (OGS_USE_LIS OR OGS_USE_MPI) + DIFF_DATA + expected_2D_StaticCrack_pcs_1_ts_1_t_1.000000.vtu 2D_StaticCrack_pcs_1_ts_1_t_1.000000.vtu displacement displacement 1e-15 1e-15 + expected_2D_StaticCrack_pcs_1_ts_1_t_1.000000.vtu 2D_StaticCrack_pcs_1_ts_1_t_1.000000.vtu phasefield phasefield 1e-15 1e-15 + ) + +AddTest( + NAME PhaseField_3D_beam_LARGE + PATH PhaseField + EXECUTABLE ogs + EXECUTABLE_ARGS beam3d_stag_1pcs.prj + WRAPPER time + TESTER vtkdiff + REQUIREMENTS NOT (OGS_USE_LIS OR OGS_USE_MPI) + DIFF_DATA + expected_beam3_stag1pcsAT2_pcs_1_ts_10_t_1.000000.vtu beam3_stag1pcsAT2_pcs_1_ts_10_t_1.000000.vtu displacement displacement 1e-15 1e-15 + expected_beam3_stag1pcsAT2_pcs_1_ts_10_t_1.000000.vtu beam3_stag1pcsAT2_pcs_1_ts_10_t_1.000000.vtu phasefield phasefield 1e-15 1e-15 + ) + + +AddTest( + NAME LARGE_PhaseField_Staggered_square_line + PATH PhaseField + EXECUTABLE ogs + EXECUTABLE_ARGS square_line_h_400.prj + WRAPPER time + TESTER vtkdiff + REQUIREMENTS NOT (OGS_USE_LIS OR OGS_USE_MPI) + DIFF_DATA + square_line_h_400_pcs_0_ts_400000_t_400.000000.vtu square_line_h_400_pcs_0_ts_400000_t_400.000000.vtu displacement displacement 1e-16 0 + square_line_h_400_pcs_0_ts_400000_t_400.000000.vtu square_line_h_400_pcs_0_ts_400000_t_400.000000.vtu phasefield phasefield 1e-16 0 + ) + +AddTest( + NAME LARGE_PhaseField_Staggered_square_shear + PATH PhaseField + EXECUTABLE ogs + EXECUTABLE_ARGS square_shear_h_400.prj + WRAPPER time + TESTER vtkdiff + REQUIREMENTS NOT (OGS_USE_LIS OR OGS_USE_MPI) + DIFF_DATA + square_shear_h_400_pcs_0_ts_30000_t_300.000000.vtu square_shear_h_400_pcs_0_ts_30000_t_300.000000.vtu displacement displacement 1e-16 0 + square_shear_h_400_pcs_0_ts_30000_t_300.000000.vtu square_shear_h_400_pcs_0_ts_30000_t_300.000000.vtu phasefield phasefield 1e-16 0 + ) diff --git a/Tests/Data/PhaseField/2D_static.prj b/Tests/Data/PhaseField/2D_static.prj new file mode 100644 index 0000000000000000000000000000000000000000..1c99b5b3605e7217d9acde25be9c73f0f4a943be --- /dev/null +++ b/Tests/Data/PhaseField/2D_static.prj @@ -0,0 +1,306 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<OpenGeoSysProject> + <mesh>cracked_medium_ic.vtu</mesh> + <geometry>bar.gml</geometry> + <processes> + <process> + <name>PhaseField</name> + <type>PHASE_FIELD</type> + <coupling_scheme>staggered</coupling_scheme> + <integration_order>2</integration_order> + <constitutive_relation> + <type>LinearElasticIsotropic</type> + <youngs_modulus>E</youngs_modulus> + <poissons_ratio>nu</poissons_ratio> + </constitutive_relation> + <phasefield_parameters> + <residual_stiffness>k</residual_stiffness> + <crack_resistance>gc</crack_resistance> + <crack_length_scale>ls</crack_length_scale> + <kinetic_coefficient>M</kinetic_coefficient> + <history_field>H</history_field> + </phasefield_parameters> + <solid_density>rho_sr</solid_density> + <process_variables> + <phasefield>phasefield</phasefield> + <displacement>displacement</displacement> + </process_variables> + <specific_body_force>0 0 </specific_body_force> + </process> + </processes> + <time_loop> + <global_process_coupling> + <max_iter> 1000 </max_iter> + <convergence_criteria> + <!-- convergence criterion for the first process --> + <convergence_criterion> + <type>DeltaX</type> + <norm_type>INFINITY_N</norm_type> + <abstol>1.e-1</abstol> + <reltol>1.e-1</reltol> + </convergence_criterion> + <!-- convergence criterion for the second process --> + <convergence_criterion> + <type>DeltaX</type> + <norm_type>INFINITY_N</norm_type> + <abstol>1.e-4</abstol> + <reltol>1.e-10</reltol> + </convergence_criterion> + </convergence_criteria> + </global_process_coupling> + <processes> + <process ref="PhaseField"> + <nonlinear_solver>basic_newton_u</nonlinear_solver> + <convergence_criterion> + <type>DeltaX</type> + <norm_type>NORM2</norm_type> + <reltol>1.e-14</reltol> + </convergence_criterion> + <time_discretization> + <type>BackwardEuler</type> + </time_discretization> + <output> + <variables> + <variable>displacement</variable> + </variables> + </output> + <time_stepping> + <type>FixedTimeStepping</type> + <t_initial>0</t_initial> + <t_end>1</t_end> + <timesteps> + <pair> + <repeat>2</repeat> + <delta_t>1.0</delta_t> + </pair> + </timesteps> + </time_stepping> + </process> + <process ref="PhaseField"> + <nonlinear_solver>basic_newton_d</nonlinear_solver> + <convergence_criterion> + <type>DeltaX</type> + <norm_type>NORM2</norm_type> + <reltol>1.e-14</reltol> + </convergence_criterion> + <time_discretization> + <type>BackwardEuler</type> + </time_discretization> + <output> + <variables> + <variable>phasefield</variable> + </variables> + </output> + <time_stepping> + <type>FixedTimeStepping</type> + <t_initial>0</t_initial> + <t_end>1</t_end> + <timesteps> + <pair> + <repeat>2</repeat> + <delta_t>1.0</delta_t> + </pair> + </timesteps> + </time_stepping> + </process> + </processes> + <output> + <type>VTK</type> + <prefix>2D_StaticCrack</prefix> + <timesteps> + <pair> + <repeat>10</repeat> + <each_steps>1</each_steps> + </pair> + <pair> + <repeat>10</repeat> + <each_steps>1</each_steps> + </pair> + <!--<pair><repeat>50</repeat><each_steps>100</each_steps></pair>--> + </timesteps> + </output> + </time_loop> + <parameters> + <!-- Mechanics --> + <parameter> + <name>E</name> + <type>Constant</type> + <value>1.0</value> + </parameter> + <parameter> + <name>nu</name> + <type>Constant</type> + <value>0.15</value> + </parameter> + <parameter> + <name>k</name> + <type>Constant</type> + <value>1e-8</value> + </parameter> + <parameter> + <name>gc</name> + <type>Constant</type> + <value>1.0</value> + </parameter> + <parameter> + <name>ls</name> + <type>Constant</type> + <value>0.02</value> + </parameter> + <parameter> + <name>H</name> + <type>Constant</type> + <value>0.0</value> + </parameter> + <parameter> + <name>rho_sr</name> + <type>Constant</type> + <value>0.0</value> + </parameter> + <parameter> + <name>displacement0</name> + <type>Constant</type> + <values>0 0</values> + </parameter> + <parameter> + <name>phasefield_ic</name> + <type>MeshNode</type> + <field_name>phase-field</field_name> + <!--type>Constant</type> + <value>1</value>--> + </parameter> + <parameter> + <name>phasefield_bc</name> + <type>Constant</type> + <value>1</value> + </parameter> + <parameter> + <name>dirichlet0</name> + <type>Constant</type> + <value>0</value> + </parameter> + <parameter> + <name>M</name> + <type>Constant</type> + <value>0.0</value> + </parameter> + <parameter> + <name>Dirichlet_load</name> + <type>Constant</type> + <value>1</value> + </parameter> + <parameter> + <name>Dirichlet_top_y</name> + <type>CurveScaled</type> + <curve>Dirichlet_top_time</curve> + <parameter>Dirichlet_load</parameter> + </parameter> + </parameters> + <curves> + <curve> + <name>Dirichlet_top_time</name> + <coords>0 1</coords> + <values>0 1.0</values> + </curve> + </curves> + <process_variables> + <process_variable> + <name>displacement</name> + <components>2</components> + <order>1</order> + <initial_condition>displacement0</initial_condition> + <boundary_conditions> + <boundary_condition> + <geometrical_set>bar</geometrical_set> + <geometry>bottom</geometry> + <type>Dirichlet</type> + <component>1</component> + <parameter>dirichlet0</parameter> + </boundary_condition> + <boundary_condition> + <geometrical_set>bar</geometrical_set> + <geometry>top</geometry> + <type>Dirichlet</type> + <component>1</component> + <parameter>dirichlet0</parameter> + </boundary_condition> + <boundary_condition> + <geometrical_set>bar</geometrical_set> + <geometry>left</geometry> + <type>Dirichlet</type> + <component>0</component> + <parameter>dirichlet0</parameter> + </boundary_condition> + <boundary_condition> + <geometrical_set>bar</geometrical_set> + <geometry>right</geometry> + <type>Dirichlet</type> + <component>0</component> + <parameter>dirichlet0</parameter> + </boundary_condition> + </boundary_conditions> + </process_variable> + <process_variable> + <name>phasefield</name> + <components>1</components> + <order>1</order> + <initial_condition>phasefield_ic</initial_condition> + <boundary_conditions> + <boundary_condition> + <geometrical_set>bar</geometrical_set> + <geometry>left</geometry> + <type>Dirichlet</type> + <component>0</component> + <parameter>phasefield_bc</parameter> + </boundary_condition> + <boundary_condition> + <geometrical_set>bar</geometrical_set> + <geometry>right</geometry> + <type>Dirichlet</type> + <component>0</component> + <parameter>phasefield_bc</parameter> + </boundary_condition> + <boundary_condition> + <geometrical_set>bar</geometrical_set> + <geometry>right</geometry> + <type>PhaseFieldIrreversibleDamageOracleBoundaryCondition</type> + <component>0</component> + </boundary_condition> + </boundary_conditions> + </process_variable> + </process_variables> + <nonlinear_solvers> + <nonlinear_solver> + <name>basic_newton_d</name> + <type>Newton</type> + <max_iter>50</max_iter> + <linear_solver>linear_solver_d</linear_solver> + </nonlinear_solver> + <nonlinear_solver> + <name>basic_newton_u</name> + <type>Newton</type> + <max_iter>50</max_iter> + <linear_solver>linear_solver_u</linear_solver> + </nonlinear_solver> + </nonlinear_solvers> + <linear_solvers> + <linear_solver> + <name>linear_solver_d</name> + <eigen> + <solver_type>BiCGSTAB</solver_type> + <precon_type>ILUT</precon_type> + <max_iteration_step>10000</max_iteration_step> + <error_tolerance>1e-16</error_tolerance> + </eigen> + </linear_solver> + <linear_solver> + <name>linear_solver_u</name> + <eigen> + <solver_type>BiCGSTAB</solver_type> + <precon_type>ILUT</precon_type> + <max_iteration_step>10000</max_iteration_step> + <error_tolerance>1e-16</error_tolerance> + </eigen> + </linear_solver> + </linear_solvers> +</OpenGeoSysProject> diff --git a/Tests/Data/PhaseField/bar.gml b/Tests/Data/PhaseField/bar.gml new file mode 100644 index 0000000000000000000000000000000000000000..d226fe62c21fdde3fde76e6d94cd2b29f34016c2 --- /dev/null +++ b/Tests/Data/PhaseField/bar.gml @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19c58dced67204b13be71364487e0f0591191151b6162d19bc29db839471c1fa +size 910 diff --git a/Tests/Data/PhaseField/beam3d_stag_1pcs.prj b/Tests/Data/PhaseField/beam3d_stag_1pcs.prj new file mode 100644 index 0000000000000000000000000000000000000000..2d71e978074adec4655b7c873e065d8573e157c2 --- /dev/null +++ b/Tests/Data/PhaseField/beam3d_stag_1pcs.prj @@ -0,0 +1,322 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<OpenGeoSysProject> + <mesh>beam3d.vtu</mesh> + <geometry>beam3d.gml</geometry> + <processes> + <process> + <name>PhaseField</name> + <type>PHASE_FIELD</type> + <coupling_scheme>staggered</coupling_scheme> + <integration_order>2</integration_order> + <constitutive_relation> + <type>LinearElasticIsotropic</type> + <youngs_modulus>E</youngs_modulus> + <poissons_ratio>nu</poissons_ratio> + </constitutive_relation> + <phasefield_parameters> + <residual_stiffness>k</residual_stiffness> + <crack_resistance>gc</crack_resistance> + <crack_length_scale>ls</crack_length_scale> + <kinetic_coefficient>M</kinetic_coefficient> + <history_field>H</history_field> + </phasefield_parameters> + <solid_density>rho_sr</solid_density> + <process_variables> + <phasefield>phasefield</phasefield> + <displacement>displacement</displacement> + </process_variables> + <specific_body_force>0 0 0</specific_body_force> + </process> + </processes> + <time_loop> + <global_process_coupling> + <max_iter> 1000 </max_iter> + <convergence_criteria> + <!-- convergence criterion for the first process --> + <convergence_criterion> + <type>DeltaX</type> + <norm_type>INFINITY_N</norm_type> + <abstol>1.e-1</abstol> + <reltol>1.e-1</reltol> + </convergence_criterion> + <!-- convergence criterion for the second process --> + <convergence_criterion> + <type>DeltaX</type> + <norm_type>INFINITY_N</norm_type> + <abstol>1.e-4</abstol> + <reltol>1.e-10</reltol> + </convergence_criterion> + </convergence_criteria> + </global_process_coupling> + <processes> + <process ref="PhaseField"> + <nonlinear_solver>basic_newton_u</nonlinear_solver> + <convergence_criterion> + <type>DeltaX</type> + <norm_type>NORM2</norm_type> + <reltol>1.e-14</reltol> + </convergence_criterion> + <time_discretization> + <type>BackwardEuler</type> + </time_discretization> + <output> + <variables> + <variable>displacement</variable> + </variables> + </output> + <time_stepping> + <type>FixedTimeStepping</type> + <t_initial>0</t_initial> + <t_end>1</t_end> + <timesteps> + <pair> + <repeat>10</repeat> + <delta_t>1e-1</delta_t> + </pair> + </timesteps> + </time_stepping> + </process> + <process ref="PhaseField"> + <nonlinear_solver>basic_newton_d</nonlinear_solver> + <convergence_criterion> + <type>DeltaX</type> + <norm_type>NORM2</norm_type> + <reltol>1.e-14</reltol> + </convergence_criterion> + <time_discretization> + <type>BackwardEuler</type> + </time_discretization> + <output> + <variables> + <variable>phasefield</variable> + </variables> + </output> + <time_stepping> + <type>FixedTimeStepping</type> + <t_initial>0</t_initial> + <t_end>1</t_end> + <timesteps> + <pair> + <repeat>10</repeat> + <delta_t>1e-1</delta_t> + </pair> + </timesteps> + </time_stepping> + </process> + </processes> + <output> + <type>VTK</type> + <prefix>beam3_stag1pcsAT2</prefix> + <timesteps> + <pair> + <repeat>10</repeat> + <each_steps>1</each_steps> + </pair> + <pair> + <repeat>10</repeat> + <each_steps>1</each_steps> + </pair> + </timesteps> + </output> + </time_loop> + <parameters> + <!-- Mechanics --> + <parameter> + <name>E</name> + <type>Constant</type> + <value>2.1e5</value> + </parameter> + <parameter> + <name>nu</name> + <type>Constant</type> + <value>0.3</value> + </parameter> + <parameter> + <name>k</name> + <type>Constant</type> + <value>1e-8</value> + </parameter> + <parameter> + <name>gc</name> + <type>Constant</type> + <value>2.7</value> + </parameter> + <parameter> + <name>ls</name> + <type>Constant</type> + <value>0.02</value> + </parameter> + <parameter> + <name>H</name> + <type>Constant</type> + <value>0.0</value> + </parameter> + <parameter> + <name>rho_sr</name> + <type>Constant</type> + <value>0.0</value> + </parameter> + <parameter> + <name>displacement0</name> + <type>Constant</type> + <values>0 0 0</values> + </parameter> + <parameter> + <name>phasefield_ic</name> + <type>Constant</type> + <value>1</value> + </parameter> + <parameter> + <name>phasefield_bc</name> + <type>Constant</type> + <value>1</value> + </parameter> + <parameter> + <name>dirichlet0</name> + <type>Constant</type> + <value>0</value> + </parameter> + <parameter> + <name>Dirichlet_spatial</name> + <type>Constant</type> + <value>1</value> + </parameter> + <parameter> + <name>dirichlet1</name> + <type>CurveScaled</type> + <curve>Dirichlet_temporal</curve> + <parameter>Dirichlet_spatial</parameter> + </parameter> + <parameter> + <name>dirichlet2</name> + <type>CurveScaled</type> + <curve>Dirichlet_temporal_left</curve> + <parameter>Dirichlet_spatial</parameter> + </parameter> + <parameter> + <name>M</name> + <type>Constant</type> + <value>0.0</value> + </parameter> + </parameters> + <curves> + <curve> + <name>Dirichlet_temporal</name> + <coords>0 1</coords> + <values>0 0.013</values> + </curve> + <curve> + <name>Dirichlet_temporal_left</name> + <coords>0 1</coords> + <values>0 -0.013</values> + </curve> + </curves> + <process_variables> + <process_variable> + <name>phasefield</name> + <components>1</components> + <order>1</order> + <initial_condition>phasefield_ic</initial_condition> + <boundary_conditions> + <boundary_condition> + <geometrical_set>beam3d_geometry</geometrical_set> + <geometry>left</geometry> + <type>Dirichlet</type> + <component>0</component> + <parameter>phasefield_bc</parameter> + </boundary_condition> + <boundary_condition> + <geometrical_set>beam3d_geometry</geometrical_set> + <geometry>right</geometry> + <type>Dirichlet</type> + <component>0</component> + <parameter>phasefield_bc</parameter> + </boundary_condition> + </boundary_conditions> + </process_variable> + <process_variable> + <name>displacement</name> + <components>3</components> + <order>1</order> + <initial_condition>displacement0</initial_condition> + <boundary_conditions> + <boundary_condition> + <geometrical_set>beam3d_geometry</geometrical_set> + <geometry>bottom</geometry> + <type>Dirichlet</type> + <component>1</component> + <parameter>dirichlet0</parameter> + </boundary_condition> + <boundary_condition> + <geometrical_set>beam3d_geometry</geometrical_set> + <geometry>top</geometry> + <type>Dirichlet</type> + <component>1</component> + <parameter>dirichlet0</parameter> + </boundary_condition> + <boundary_condition> + <geometrical_set>beam3d_geometry</geometrical_set> + <geometry>back</geometry> + <type>Dirichlet</type> + <component>2</component> + <parameter>dirichlet0</parameter> + </boundary_condition> + <boundary_condition> + <geometrical_set>beam3d_geometry</geometrical_set> + <geometry>front</geometry> + <type>Dirichlet</type> + <component>2</component> + <parameter>dirichlet0</parameter> + </boundary_condition> + <boundary_condition> + <geometrical_set>beam3d_geometry</geometrical_set> + <geometry>left</geometry> + <type>Dirichlet</type> + <component>0</component> + <parameter>dirichlet2</parameter> + </boundary_condition> + <boundary_condition> + <geometrical_set>beam3d_geometry</geometrical_set> + <geometry>right</geometry> + <type>Dirichlet</type> + <component>0</component> + <parameter>dirichlet1</parameter> + </boundary_condition> + </boundary_conditions> + </process_variable> + </process_variables> + <nonlinear_solvers> + <nonlinear_solver> + <name>basic_newton_d</name> + <type>Newton</type> + <max_iter>50</max_iter> + <linear_solver>linear_solver_d</linear_solver> + </nonlinear_solver> + <nonlinear_solver> + <name>basic_newton_u</name> + <type>Newton</type> + <max_iter>50</max_iter> + <linear_solver>linear_solver_u</linear_solver> + </nonlinear_solver> + </nonlinear_solvers> + <linear_solvers> + <linear_solver> + <name>linear_solver_d</name> + <eigen> + <solver_type>BiCGSTAB</solver_type> + <precon_type>ILUT</precon_type> + <max_iteration_step>10000</max_iteration_step> + <error_tolerance>1e-16</error_tolerance> + </eigen> + </linear_solver> + <linear_solver> + <name>linear_solver_u</name> + <eigen> + <solver_type>BiCGSTAB</solver_type> + <precon_type>ILUT</precon_type> + <max_iteration_step>10000</max_iteration_step> + <error_tolerance>1e-16</error_tolerance> + </eigen> + </linear_solver> + </linear_solvers> +</OpenGeoSysProject> diff --git a/Tests/Data/PhaseField/cracked_medium_ic.vtu b/Tests/Data/PhaseField/cracked_medium_ic.vtu new file mode 100644 index 0000000000000000000000000000000000000000..18ffcbda95817f483abb18ee1e691c407c898bc6 --- /dev/null +++ b/Tests/Data/PhaseField/cracked_medium_ic.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f22a75eb26ee0fcd85f30edb7536f8fd3bb41a20fc3a6465674fbbeec760b4e4 +size 608625 diff --git a/Tests/Data/PhaseField/expected_2D_StaticCrack_pcs_1_ts_1_t_1.000000.vtu b/Tests/Data/PhaseField/expected_2D_StaticCrack_pcs_1_ts_1_t_1.000000.vtu new file mode 100644 index 0000000000000000000000000000000000000000..4c094b9b19beb756be46e249969967ed79a4955b --- /dev/null +++ b/Tests/Data/PhaseField/expected_2D_StaticCrack_pcs_1_ts_1_t_1.000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7242128dbc6adc0dc37c92f9e962c53d5218b32d5ce51fb46aac600ca32fec82 +size 350563 diff --git a/Tests/Data/PhaseField/expected_beam3_stag1pcsAT2_pcs_1_ts_10_t_1.000000.vtu b/Tests/Data/PhaseField/expected_beam3_stag1pcsAT2_pcs_1_ts_10_t_1.000000.vtu new file mode 100644 index 0000000000000000000000000000000000000000..8a9eff31f2ccb1c087d6c187cd4f4317a2ae12e5 --- /dev/null +++ b/Tests/Data/PhaseField/expected_beam3_stag1pcsAT2_pcs_1_ts_10_t_1.000000.vtu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ec0d3b7e9c65734abcc0f7bcfb6014c04ace62f4a0658d13f3704d5a8c31528 +size 42664