From 6cd96591e3ebdde24a88b104b944e660a6d91b24 Mon Sep 17 00:00:00 2001
From: Dmitri Naumov <github@naumov.de>
Date: Thu, 7 Oct 2021 19:38:17 +0200
Subject: [PATCH] [PL/TH2M] Add dfC_4_LCpG/dp_cap Jacobian part.

---
 ProcessLib/TH2M/ConstitutiveVariables.h |  1 +
 ProcessLib/TH2M/TH2MFEM-impl.h          | 14 ++++++++++++++
 2 files changed, 15 insertions(+)

diff --git a/ProcessLib/TH2M/ConstitutiveVariables.h b/ProcessLib/TH2M/ConstitutiveVariables.h
index 3222383e1bc..6a06e5a598c 100644
--- a/ProcessLib/TH2M/ConstitutiveVariables.h
+++ b/ProcessLib/TH2M/ConstitutiveVariables.h
@@ -48,6 +48,7 @@ struct ConstitutiveVariables
     DisplacementDimMatrix dfW_4_LWpC_d_dT;
     DisplacementDimMatrix dfC_4_LCpG_dT;
     DisplacementDimMatrix dadvection_C_dp_GR;
+    DisplacementDimMatrix dadvection_C_dp_cap;
     DisplacementDimMatrix dk_over_mu_G_dp_cap;
     DisplacementDimMatrix dk_over_mu_L_dp_cap;
     double drho_u_eff_dT = std::numeric_limits<double>::quiet_NaN();
diff --git a/ProcessLib/TH2M/TH2MFEM-impl.h b/ProcessLib/TH2M/TH2MFEM-impl.h
index 41ca5c41ece..11e98a7cdf5 100644
--- a/ProcessLib/TH2M/TH2MFEM-impl.h
+++ b/ProcessLib/TH2M/TH2MFEM-impl.h
@@ -602,6 +602,12 @@ TH2MLocalAssembler<ShapeFunctionDisplacement, ShapeFunctionPressure,
                                    // + rhoCLR * (dk_over_mu_L_dp_GR = 0)
                                    + c.drho_C_LR_dp_GR * k_over_mu_L;
 
+        ip_cv.dadvection_C_dp_cap =
+            //(drho_C_GR_dp_cap = 0) * k_over_mu_G
+            ip_data.rhoCGR * ip_cv.dk_over_mu_G_dp_cap +
+            (-c.drho_C_LR_dp_LR) * k_over_mu_L +
+            ip_data.rhoCLR * ip_cv.dk_over_mu_L_dp_cap;
+
         ip_cv.dfC_4_LCpG_dT =
             c.drho_C_GR_dT * k_over_mu_G + c.drho_C_LR_dT * k_over_mu_L
             // + ip_cv.ddiffusion_C_p_dT TODO (naumov)
@@ -1455,6 +1461,14 @@ void TH2MLocalAssembler<ShapeFunctionDisplacement, ShapeFunctionPressure,
              ) *
             gradpGR * Np * w;
 
+        // d (fC_4_LCpG * grad p_GR)/d p_cap
+        local_Jac.template block<C_size, W_size>(C_index, W_index).noalias() +=
+            gradNpT *
+            (ip_cv.dadvection_C_dp_cap
+             // + ip_cv.ddiffusion_C_p_dp_GR TODO (naumov)
+             ) *
+            gradpGR * Np * w;
+
         // d (fC_4_LCpG * grad p_GR)/d T
         local_Jac
             .template block<C_size, temperature_size>(C_index,
-- 
GitLab