diff --git a/ProcessLib/HeatConduction/Tests.cmake b/ProcessLib/HeatConduction/Tests.cmake index 33e9933dd92f91b4dd8b9d6bfaa1b2a6b71faf63..d9d0696b0f5e9bdef89911e1852b52dc4768fd4c 100644 --- a/ProcessLib/HeatConduction/Tests.cmake +++ b/ProcessLib/HeatConduction/Tests.cmake @@ -273,6 +273,19 @@ AddTest( REQUIREMENTS NOT OGS_USE_MPI ) +# tests for line source term implementation with inclined elements +AddTest( + NAME HeatConduction_2D_LineSourceTermLeft_inclined_elements + PATH Parabolic/T/2D_source_term_tests/line_source_term_left + EXECUTABLE ogs + EXECUTABLE_ARGS source_term_left_r.prj + TESTER vtkdiff + DIFF_DATA + source_term_left_r_ts_1_t_1.000000.vtu source_term_left_r_ts_1_t_1.000000.vtu temperature temperature 1e-15 0.0 + source_term_left_r_ts_1_t_1.000000.vtu source_term_left_r_ts_1_t_1.000000.vtu heat_flux heat_flux 1e-15 0.0 + REQUIREMENTS NOT OGS_USE_MPI +) + # For the special setup with a 'dirac' line source term at x=0.5 the # analytical solution in 2 dimensions is valid: # u(x,y) = -ln(sqrt((x-0.5)^2))/(2 * Pi) diff --git a/Tests/Data/Parabolic/T/2D_source_term_tests/line_source_term_left/mesh_r.vtu b/Tests/Data/Parabolic/T/2D_source_term_tests/line_source_term_left/mesh_r.vtu new file mode 100644 index 0000000000000000000000000000000000000000..bbf7e093c3e058fa17a04a080d048cec30e4efa9 --- /dev/null +++ b/Tests/Data/Parabolic/T/2D_source_term_tests/line_source_term_left/mesh_r.vtu @@ -0,0 +1,42 @@ +<VTKFile type="UnstructuredGrid" version="1.0" byte_order="LittleEndian" header_type="UInt64"> + <UnstructuredGrid> + <Piece NumberOfPoints="22" NumberOfCells="10"> + <PointData> + </PointData> + <CellData> + </CellData> + <Points> + <DataArray type="Float64" Name="Points" NumberOfComponents="3" format="binary" RangeMin="0" RangeMax="10.04987562112089"> + EAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMO39mnqDmPwAAAAAAAAAAzTt/Zp6g5r/MO39mnqD2PwAAAAAAAAAAzTt/Zp6g9r/ZbN/MdvgAQAAAAAAAAAAA2mzfzHb4AMDMO39mnqAGQAAAAAAAAAAAzTt/Zp6gBsC/Ch8AxkgMQAAAAAAAAAAAwAofAMZIDMDZbN/MdvgQQAAAAAAAAAAA2mzfzHb4EMBSVK+ZiswTQAAAAAAAAAAAU1SvmYrME8DMO39mnqAWQAAAAAAAAAAAzTt/Zp6gFsBGI08zsnQZQAAAAAAAAAAARyNPM7J0GcC/Ch8AxkgcQAAAAAAAAAAAwAofAMZIHMAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAADMO39mnqDmPwAAAAAAAPA/zTt/Zp6g5r/MO39mnqD2PwAAAAAAAPA/zTt/Zp6g9r/ZbN/MdvgAQAAAAAAAAPA/2mzfzHb4AMDMO39mnqAGQAAAAAAAAPA/zTt/Zp6gBsC/Ch8AxkgMQAAAAAAAAPA/wAofAMZIDMDZbN/MdvgQQAAAAAAAAPA/2mzfzHb4EMBSVK+ZiswTQAAAAAAAAPA/U1SvmYrME8DMO39mnqAWQAAAAAAAAPA/zTt/Zp6gFsBGI08zsnQZQAAAAAAAAPA/RyNPM7J0GcC/Ch8AxkgcQAAAAAAAAPA/wAofAMZIHMA= + <InformationKey name="L2_NORM_FINITE_RANGE" location="vtkDataArray" length="2"> + <Value index="0"> + 0 + </Value> + <Value index="1"> + 10.049875621 + </Value> + </InformationKey> + <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2"> + <Value index="0"> + 0 + </Value> + <Value index="1"> + 10.049875621 + </Value> + </InformationKey> + </DataArray> + </Points> + <Cells> + <DataArray type="Int64" Name="connectivity" format="binary" RangeMin="0" RangeMax="21"> + QAEAAAAAAAAAAAAAAAAAAAEAAAAAAAAADAAAAAAAAAALAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAANAAAAAAAAAAwAAAAAAAAAAgAAAAAAAAADAAAAAAAAAA4AAAAAAAAADQAAAAAAAAADAAAAAAAAAAQAAAAAAAAADwAAAAAAAAAOAAAAAAAAAAQAAAAAAAAABQAAAAAAAAAQAAAAAAAAAA8AAAAAAAAABQAAAAAAAAAGAAAAAAAAABEAAAAAAAAAEAAAAAAAAAAGAAAAAAAAAAcAAAAAAAAAEgAAAAAAAAARAAAAAAAAAAcAAAAAAAAACAAAAAAAAAATAAAAAAAAABIAAAAAAAAACAAAAAAAAAAJAAAAAAAAABQAAAAAAAAAEwAAAAAAAAAJAAAAAAAAAAoAAAAAAAAAFQAAAAAAAAAUAAAAAAAAAA== + </DataArray> + <DataArray type="Int64" Name="offsets" format="binary" RangeMin="4" RangeMax="40"> + UAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAQAAAAAAAAABQAAAAAAAAAGAAAAAAAAAAcAAAAAAAAACAAAAAAAAAAJAAAAAAAAAAoAAAAAAAAAA== + </DataArray> + <DataArray type="UInt8" Name="types" format="binary" RangeMin="9" RangeMax="9"> + CgAAAAAAAAAJCQkJCQkJCQkJ + </DataArray> + </Cells> + </Piece> + </UnstructuredGrid> +</VTKFile> diff --git a/Tests/Data/Parabolic/T/2D_source_term_tests/line_source_term_left/mesh_r_left.vtu b/Tests/Data/Parabolic/T/2D_source_term_tests/line_source_term_left/mesh_r_left.vtu new file mode 100644 index 0000000000000000000000000000000000000000..1eecf443b3499a5e223255ade2876c4029e94d4a --- /dev/null +++ b/Tests/Data/Parabolic/T/2D_source_term_tests/line_source_term_left/mesh_r_left.vtu @@ -0,0 +1,48 @@ +<VTKFile type="UnstructuredGrid" version="1.0" byte_order="LittleEndian" header_type="UInt64"> + <UnstructuredGrid> + <Piece NumberOfPoints="2" NumberOfCells="1"> + <PointData> + <DataArray type="UInt64" Name="bulk_node_ids" format="binary" RangeMin="0" RangeMax="11"> + EAAAAAAAAAALAAAAAAAAAAAAAAAAAAAA + </DataArray> + </PointData> + <CellData> + <DataArray type="UInt64" Name="bulk_element_ids" format="binary" RangeMin="0" RangeMax="0"> + CAAAAAAAAAAAAAAAAAAAAA== + </DataArray> + </CellData> + <Points> + <DataArray type="Float64" Name="Points" NumberOfComponents="3" format="binary" RangeMin="0" RangeMax="1"> + MAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + <InformationKey name="L2_NORM_FINITE_RANGE" location="vtkDataArray" length="2"> + <Value index="0"> + 0 + </Value> + <Value index="1"> + 1 + </Value> + </InformationKey> + <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2"> + <Value index="0"> + 0 + </Value> + <Value index="1"> + 1 + </Value> + </InformationKey> + </DataArray> + </Points> + <Cells> + <DataArray type="Int64" Name="connectivity" format="binary" RangeMin="0" RangeMax="1"> + EAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA + </DataArray> + <DataArray type="Int64" Name="offsets" format="binary" RangeMin="2" RangeMax="2"> + CAAAAAAAAAACAAAAAAAAAA== + </DataArray> + <DataArray type="UInt8" Name="types" format="binary" RangeMin="3" RangeMax="3"> + AQAAAAAAAAAD + </DataArray> + </Cells> + </Piece> + </UnstructuredGrid> +</VTKFile> diff --git a/Tests/Data/Parabolic/T/2D_source_term_tests/line_source_term_left/mesh_r_right.vtu b/Tests/Data/Parabolic/T/2D_source_term_tests/line_source_term_left/mesh_r_right.vtu new file mode 100644 index 0000000000000000000000000000000000000000..3aa4c20bf94c45e6d82e7cb872589268daed6791 --- /dev/null +++ b/Tests/Data/Parabolic/T/2D_source_term_tests/line_source_term_left/mesh_r_right.vtu @@ -0,0 +1,48 @@ +<VTKFile type="UnstructuredGrid" version="1.0" byte_order="LittleEndian" header_type="UInt64"> + <UnstructuredGrid> + <Piece NumberOfPoints="2" NumberOfCells="1"> + <PointData> + <DataArray type="UInt64" Name="bulk_node_ids" format="binary" RangeMin="10" RangeMax="21"> + EAAAAAAAAAAVAAAAAAAAAAoAAAAAAAAA + </DataArray> + </PointData> + <CellData> + <DataArray type="UInt64" Name="bulk_element_ids" format="binary" RangeMin="9" RangeMax="9"> + CAAAAAAAAAAJAAAAAAAAAA== + </DataArray> + </CellData> + <Points> + <DataArray type="Float64" Name="Points" NumberOfComponents="3" format="binary" RangeMin="10" RangeMax="10.04987562112089"> + MAAAAAAAAAC/Ch8AxkgcQAAAAAAAAPA/wAofAMZIHMC/Ch8AxkgcQAAAAAAAAAAAwAofAMZIHMA= + <InformationKey name="L2_NORM_FINITE_RANGE" location="vtkDataArray" length="2"> + <Value index="0"> + 10 + </Value> + <Value index="1"> + 10.049875621 + </Value> + </InformationKey> + <InformationKey name="L2_NORM_RANGE" location="vtkDataArray" length="2"> + <Value index="0"> + 10 + </Value> + <Value index="1"> + 10.049875621 + </Value> + </InformationKey> + </DataArray> + </Points> + <Cells> + <DataArray type="Int64" Name="connectivity" format="binary" RangeMin="0" RangeMax="1"> + EAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA + </DataArray> + <DataArray type="Int64" Name="offsets" format="binary" RangeMin="2" RangeMax="2"> + CAAAAAAAAAACAAAAAAAAAA== + </DataArray> + <DataArray type="UInt8" Name="types" format="binary" RangeMin="3" RangeMax="3"> + AQAAAAAAAAAD + </DataArray> + </Cells> + </Piece> + </UnstructuredGrid> +</VTKFile> diff --git a/Tests/Data/Parabolic/T/2D_source_term_tests/line_source_term_left/source_term_left_r.prj b/Tests/Data/Parabolic/T/2D_source_term_tests/line_source_term_left/source_term_left_r.prj new file mode 100644 index 0000000000000000000000000000000000000000..3d504215079be4c3c95e9283096ed4d542038e7a --- /dev/null +++ b/Tests/Data/Parabolic/T/2D_source_term_tests/line_source_term_left/source_term_left_r.prj @@ -0,0 +1,142 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<OpenGeoSysProject> + <meshes> + <mesh>mesh_r.vtu</mesh> + <mesh>mesh_r_left.vtu</mesh> + <mesh>mesh_r_right.vtu</mesh> + </meshes> + <processes> + <process> + <name>HeatConduction</name> + <type>HEAT_CONDUCTION</type> + <integration_order>2</integration_order> + <process_variables> + <process_variable>temperature</process_variable> + </process_variables> + <secondary_variables> + <secondary_variable internal_name="heat_flux" output_name="heat_flux"/> + </secondary_variables> + </process> + </processes> + <time_loop> + <processes> + <process ref="HeatConduction"> + <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> + <time_stepping> + <type>FixedTimeStepping</type> + <t_initial> 0.0 </t_initial> + <t_end> 1 </t_end> + <timesteps> + <pair> + <repeat>1</repeat> + <delta_t>1</delta_t> + </pair> + </timesteps> + </time_stepping> + </process> + </processes> + <output> + <type>VTK</type> + <prefix>source_term_left_r</prefix> + <timesteps> + <pair> + <repeat> 10000 </repeat> + <each_steps> 1 </each_steps> + </pair> + </timesteps> + <variables> + <variable> temperature </variable> + <variable> heat_flux </variable> + </variables> + <suffix>_ts_{:timestep}_t_{:time}</suffix> + </output> + </time_loop> + <media> + <medium id="0"> + <phases/> + <properties> + <property> + <name>thermal_conductivity</name> + <type>Constant</type> + <value>1</value> + </property> + <property> + <name>specific_heat_capacity</name> + <type>Constant</type> + <value>1</value> + </property> + <property> + <name>density</name> + <type>Constant</type> + <value>1</value> + </property> + </properties> + </medium> + </media> + <parameters> + <parameter> + <name>T0</name> + <type>Constant</type> + <value>0</value> + </parameter> + <parameter> + <name>HeatSource</name> + <type>Constant</type> + <value>1</value> + </parameter> + </parameters> + <process_variables> + <process_variable> + <name>temperature</name> + <components>1</components> + <order>1</order> + <initial_condition>T0</initial_condition> + <boundary_conditions> + <boundary_condition> + <mesh>mesh_r_right</mesh> + <type>Dirichlet</type> + <parameter>T0</parameter> + </boundary_condition> + </boundary_conditions> + <source_terms> + <source_term> + <mesh>mesh_r_left</mesh> + <type>Line</type> + <parameter>HeatSource</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-16 -maxiter 10000</lis> + <eigen> + <solver_type>CG</solver_type> + <precon_type>DIAGONAL</precon_type> + <max_iteration_step>10000</max_iteration_step> + <error_tolerance>1e-16</error_tolerance> + </eigen> + <petsc> + <prefix>gw</prefix> + <parameters>-gw_ksp_type cg -gw_pc_type bjacobi -gw_ksp_rtol 1e-16 -gw_ksp_max_it 10000</parameters> + </petsc> + </linear_solver> + </linear_solvers> +</OpenGeoSysProject>