From 519b17970731bb9daec7bccc4aa10995e56004ed Mon Sep 17 00:00:00 2001 From: Florian Zill <florian.zill@ufz.de> Date: Fri, 23 Aug 2019 15:29:06 +0200 Subject: [PATCH] [HM] + additional_p_derivitave for convergence++ --- ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h b/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h index bc6fb267bae..b481e23ecdc 100644 --- a/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h +++ b/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h @@ -152,6 +152,10 @@ void HydroMechanicsLocalAssembler<ShapeFunctionDisplacement, ShapeMatricesTypePressure::NodalMatrixType::Zero(pressure_size, pressure_size); + typename ShapeMatricesTypePressure::NodalMatrixType add_p_derivative = + ShapeMatricesTypePressure::NodalMatrixType::Zero(pressure_size, + pressure_size); + typename ShapeMatricesTypeDisplacement::template MatrixType< displacement_size, pressure_size> Kup = ShapeMatricesTypeDisplacement::template MatrixType< @@ -253,6 +257,9 @@ void HydroMechanicsLocalAssembler<ShapeFunctionDisplacement, rho_fr * N_p.transpose() * N_p * w * ((alpha - porosity) * (1.0 - alpha) / K_S + porosity * beta_p); + add_p_derivative.noalias() += rho_fr * beta_p * dNdx_p.transpose() * + K_over_mu * (dNdx_p * p - 2.0 * rho_fr * b) * N_p * w; + local_rhs.template segment<pressure_size>(pressure_index).noalias() += dNdx_p.transpose() * rho_fr * rho_fr * K_over_mu * b * w; @@ -271,7 +278,7 @@ void HydroMechanicsLocalAssembler<ShapeFunctionDisplacement, local_Jac .template block<pressure_size, pressure_size>(pressure_index, pressure_index) - .noalias() = laplace_p + storage_p / dt; + .noalias() = laplace_p + storage_p / dt + add_p_derivative; // pressure equation, displacement part. local_Jac -- GitLab