49 GlobalDim>::assembleWithJacobianConcrete(
double const t,
double const dt,
50 Eigen::VectorXd
const& local_x,
51 Eigen::VectorXd
const&
53 Eigen::VectorXd& local_b,
54 Eigen::MatrixXd& local_J)
56 auto p =
const_cast<Eigen::VectorXd&
>(local_x).segment(pressure_index,
58 auto p_prev =
const_cast<Eigen::VectorXd&
>(local_x_prev)
59 .segment(pressure_index, pressure_size);
60 if (_process_data.deactivate_matrix_in_flow)
62 Base::setPressureOfInactiveNodes(t, p);
64 auto const u = local_x.segment(displacement_index, displacement_size);
66 local_x_prev.segment(displacement_index, displacement_size);
68 auto rhs_p = local_b.segment(pressure_index, pressure_size);
69 auto rhs_u = local_b.segment(displacement_index, displacement_size);
71 auto J_pp = local_J.block(pressure_index, pressure_index, pressure_size,
73 auto J_pu = local_J.block(pressure_index, displacement_index, pressure_size,
75 auto J_up = local_J.block(displacement_index, pressure_index,
76 displacement_size, pressure_size);
77 auto J_uu = local_J.block(displacement_index, displacement_index,
78 displacement_size, displacement_size);
83 _fracture_props, _junction_props, _fracID_to_local, _e_center_coords);
84 double const ele_levelset = levelsets[0];
86 if (ele_levelset == 0)
89 Base::assembleBlockMatricesWithJacobian(
90 t, dt, p, p_prev, u, u_prev, rhs_p, rhs_u, J_pp, J_pu, J_uu, J_up);
97 auto const g = local_x.segment(displacement_jump_index, displacement_size);
99 local_x_prev.segment(displacement_jump_index, displacement_size);
100 Eigen::VectorXd
const total_u = u + ele_levelset * g;
101 Eigen::VectorXd
const total_u_prev = u_prev + ele_levelset * g_prev;
104 Base::assembleBlockMatricesWithJacobian(t, dt, p, p_prev, total_u,
105 total_u_prev, rhs_p, rhs_u, J_pp,
109 auto rhs_g = local_b.segment(displacement_jump_index, displacement_size);
110 auto J_pg = local_J.block(pressure_index, displacement_jump_index,
111 pressure_size, displacement_size);
112 auto J_ug = local_J.block(displacement_index, displacement_jump_index,
113 displacement_size, displacement_size);
114 auto J_gp = local_J.block(displacement_jump_index, pressure_index,
115 displacement_size, pressure_size);
116 auto J_gu = local_J.block(displacement_jump_index, displacement_index,
117 displacement_size, displacement_size);
118 auto J_gg = local_J.block(displacement_jump_index, displacement_jump_index,
119 displacement_size, displacement_size);
121 rhs_g = ele_levelset * rhs_u;
122 J_pg = ele_levelset * J_pu;
123 J_ug = ele_levelset * J_uu;
124 J_gp = ele_levelset * J_up;
125 J_gu = ele_levelset * J_uu;
126 J_gg = ele_levelset * ele_levelset * J_uu;
133 GlobalDim>::postTimestepConcreteWithVector(
double const t,
double const dt,
134 Eigen::VectorXd
const& local_x)
136 auto p =
const_cast<Eigen::VectorXd&
>(local_x).segment(pressure_index,
138 if (_process_data.deactivate_matrix_in_flow)
140 Base::setPressureOfInactiveNodes(t, p);
142 auto u = local_x.segment(displacement_index, displacement_size);
147 _fracture_props, _junction_props, _fracID_to_local, _e_center_coords);
148 double const ele_levelset = levelsets[0];
150 if (ele_levelset == 0)
153 Base::postTimestepConcreteWithBlockVectors(t, dt, p, u);
160 auto const g = local_x.segment(displacement_jump_index, displacement_size);
161 Eigen::VectorXd
const total_u = u + ele_levelset * g;
164 Base::postTimestepConcreteWithBlockVectors(t, dt, p, total_u);