Skip to content

Commit

Permalink
Merge branch 'bbar_imprv' into 'master'
Browse files Browse the repository at this point in the history
A correction in the B-bar for plane strain problems

See merge request ogs/ogs!5110
  • Loading branch information
endJunction committed Oct 2, 2024
2 parents 9bd7706 + de3641c commit eca5fa0
Show file tree
Hide file tree
Showing 25 changed files with 1,030 additions and 103 deletions.
25 changes: 16 additions & 9 deletions ProcessLib/Deformation/LinearBMatrix.h
Original file line number Diff line number Diff line change
Expand Up @@ -172,15 +172,22 @@ void applyBbar(BBarMatrixType const& B_bar, BMatrixType& B,

auto const B_bar_i = B_bar.col(i);

double const b0_dil_pertubation =
is_axially_symmetric
? (B_i_0[0] - B_bar_i[0] + B_i_0[2] - B_bar_i[2])
: (B_i_0[0] - B_bar_i[0]);

B_i_0.template segment<3>(0) -=
Eigen::Vector3d::Constant((b0_dil_pertubation) / 3.);
B_i_1.template segment<3>(0) -=
Eigen::Vector3d::Constant((B_i_1[1] - B_bar_i[1]) / 3.);
if (is_axially_symmetric)
{
double const b0_dil_pertubation =
(B_i_0[0] - B_bar_i[0] + B_i_0[2] - B_bar_i[2]);
B_i_0.template segment<3>(0) -=
Eigen::Vector3d::Constant((b0_dil_pertubation) / 3.);
B_i_1.template segment<3>(0) -=
Eigen::Vector3d::Constant((B_i_1[1] - B_bar_i[1]) / 3.);
continue;
}

// Plane strain
B_i_0.template segment<2>(0) -=
Eigen::Vector2d::Constant((B_i_0[0] - B_bar_i[0]) / 2.);
B_i_1.template segment<2>(0) -=
Eigen::Vector2d::Constant((B_i_1[1] - B_bar_i[1]) / 2.);
}
}
} // namespace detail
Expand Down
2 changes: 1 addition & 1 deletion ProcessLib/LIE/SmallDeformation/Tests.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,6 @@ AddTest(
mechanics_embedded_fracture_F_PMMA_ts_1_t_1.000000.vtu mechanics_embedded_fracture_F_PMMA_ts_1_t_1.000000.vtu displacement_jump1 displacement_jump1 1e-15 1e-15
mechanics_embedded_fracture_F_PMMA_ts_1_t_1.000000.vtu mechanics_embedded_fracture_F_PMMA_ts_1_t_1.000000.vtu sigma sigma 1e-8 1e-11
mechanics_embedded_fracture_F_PMMA_ts_1_t_1.000000.vtu mechanics_embedded_fracture_F_PMMA_ts_1_t_1.000000.vtu epsilon epsilon 1e-15 1e-15
mechanics_embedded_fracture_F_PMMA_ts_1_t_1.000000.vtu mechanics_embedded_fracture_F_PMMA_ts_1_t_1.000000.vtu fracture_stress fracture_stress 5e-8 1e-11
mechanics_embedded_fracture_F_PMMA_ts_1_t_1.000000.vtu mechanics_embedded_fracture_F_PMMA_ts_1_t_1.000000.vtu fracture_stress fracture_stress 7e-8 1e-11
mechanics_embedded_fracture_F_PMMA_ts_1_t_1.000000.vtu mechanics_embedded_fracture_F_PMMA_ts_1_t_1.000000.vtu fracture_aperture fracture_aperture 1e-15 1e-15
)
30 changes: 30 additions & 0 deletions ProcessLib/SmallDeformation/Tests.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,36 @@ AddTest(
arehs-salt-M_gravity_only_ts_10_t_31535999999.999996.vtu arehs-salt-M_gravity_only_ts_10_t_31535999999.999996.vtu sigma sigma 1.e-9 5.e-7
)

AddTest(
NAME Mechanics_AxisymmetryBbar
PATH Mechanics/AxisymmetryBbar
EXECUTABLE ogs
EXECUTABLE_ARGS axisymmetry_bbar.prj
WRAPPER time
TESTER vtkdiff
REQUIREMENTS NOT OGS_USE_MPI
RUNTIME 1
DIFF_DATA
axisymmetric_bbar_ts_1_t_1.000000.vtu axisymmetric_bbar_ts_1_t_1.000000.vtu analytic_displacement displacement 1.e-10 1.e-10
axisymmetric_bbar_ts_1_t_1.000000.vtu axisymmetric_bbar_ts_1_t_1.000000.vtu analytic_sigma sigma 6.e-5 5.e-7
axisymmetric_bbar_ts_1_t_1.000000.vtu axisymmetric_bbar_ts_1_t_1.000000.vtu analytic_eps epsilon 1.e-9 5.e-7
)

AddTest(
NAME Mechanics_Simple3DBbar
PATH Mechanics/Simple3DBbar
EXECUTABLE ogs
EXECUTABLE_ARGS simple_3d_bbar.prj
WRAPPER time
TESTER vtkdiff
REQUIREMENTS NOT OGS_USE_MPI
RUNTIME 1
DIFF_DATA
simple_3d_bbar_ts_1_t_1.000000.vtu simple_3d_bbar_ts_1_t_1.000000.vtu analytic_displacement displacement 1.e-10 1.e-10
simple_3d_bbar_ts_1_t_1.000000.vtu simple_3d_bbar_ts_1_t_1.000000.vtu analytic_sigma sigma 6.e-5 5.e-7
simple_3d_bbar_ts_1_t_1.000000.vtu simple_3d_bbar_ts_1_t_1.000000.vtu analytic_eps epsilon 1.e-9 5.e-7
)

if(NOT OGS_USE_PETSC)
NotebookTest(NOTEBOOKFILE Mechanics/CooksMembrane/CooksMembraneBbar.ipynb RUNTIME 1)
NotebookTest(NOTEBOOKFILE Mechanics/Linear/SimpleMechanics.ipynb RUNTIME 5)
Expand Down

Large diffs are not rendered by default.

Large diffs are not rendered by default.

33 changes: 33 additions & 0 deletions Tests/Data/Mechanics/AxisymmetryBbar/analytical_solution.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import pyvista as pv

mesh = pv.read("axisymmetric_bbar_ts_1_t_1.000000.vtu")
E = 1.0e10
nv = 0.499
p = 1e7

sigma_analytical = mesh.point_data["sigma"]
sigma_analytical[:, 0] = 0.0
sigma_analytical[:, 1] = -p
sigma_analytical[:, 2] = 0.0
sigma_analytical[:, 3] = 0.0
mesh.point_data["analytic_sigma"] = sigma_analytical

eps_analytical = mesh.point_data["epsilon"]
eps_1 = -p / E
eps_0 = -eps_1 * nv
eps_2 = eps_0
eps_3 = 0.0
eps_analytical[:, 0] = eps_0
eps_analytical[:, 1] = eps_1
eps_analytical[:, 2] = eps_2
eps_analytical[:, 3] = eps_3
mesh.point_data["analytic_eps"] = eps_analytical


u_analytical = mesh.point_data["displacement"]
u_analytical[:, 0] = eps_0 * mesh.points[:, 0]
u_analytical[:, 1] = eps_1 * mesh.points[:, 1]
mesh.point_data["analytic_displacement"] = u_analytical

mesh.save("axisymmetric_bbar_ts_1_t_1.000000.vtu")
# mesh.plot(scalars="analytic_displacement")
Loading

0 comments on commit eca5fa0

Please sign in to comment.