93{
94 [[maybe_unused]] auto const matrix_size =
97
98 assert(local_x.size() == matrix_size);
99
100 auto const gas_pressure =
103 local_x.template segment<capillary_pressure_size>(
105
108 auto const temperature_prev =
110
111 auto const displacement =
113 auto const displacement_prev =
115
116 auto const& medium =
118 ConstitutiveRelations::MediaData media_data{medium};
119
120 unsigned const n_integration_points =
122
123 std::vector<ConstitutiveRelations::ConstitutiveData<DisplacementDim>>
124 ip_constitutive_data(n_integration_points);
125 std::vector<ConstitutiveRelations::ConstitutiveTempData<DisplacementDim>>
126 ip_constitutive_variables(n_integration_points);
127
128 for (unsigned ip = 0; ip < n_integration_points; ip++)
129 {
131 auto& ip_cv = ip_constitutive_variables[ip];
132 auto& ip_cd = ip_constitutive_data[ip];
136
137 auto const& Np = ip_data.N_p;
138 auto const& NT = Np;
139 auto const& Nu = ip_data.N_u;
140 auto const& gradNu = ip_data.dNdx_u;
141 auto const& gradNp = ip_data.dNdx_p;
148 auto const x_coord =
152
153 double const T = NT.dot(temperature);
154 double const T_prev = NT.dot(temperature_prev);
155 double const pGR = Np.dot(gas_pressure);
156 double const pCap = Np.dot(capillary_pressure);
157 ConstitutiveRelations::TemperatureData
const T_data{
T, T_prev};
165
166
167 models.elastic_tangent_stiffness_model.eval({pos, t, dt}, T_data,
168 ip_cv.C_el_data);
169
170 models.biot_model.eval({pos, t, dt}, media_data, ip_cv.biot_data);
171
172 auto const Bu =
174 ShapeFunctionDisplacement::NPOINTS,
177
178 auto& eps = ip_out.eps_data.eps;
179 eps.noalias() = Bu * displacement;
180 models.S_L_model.eval({pos, t, dt}, media_data, pCap_data,
181 current_state.S_L_data, ip_cv.dS_L_dp_cap);
182
183 models.chi_S_L_model.eval({pos, t, dt}, media_data,
184 current_state.S_L_data, ip_cv.chi_S_L);
185
186
187 models.beta_p_SR_model.eval({pos, t, dt}, ip_cv.biot_data,
188 ip_cv.C_el_data, ip_cv.beta_p_SR);
189
190
191 models.swelling_model.eval(
192 {pos, t, dt}, media_data, ip_cv.C_el_data, current_state.S_L_data,
193 prev_state.S_L_data, prev_state.swelling_data,
194 current_state.swelling_data, ip_cv.swelling_data);
195
196
197 models.s_therm_exp_model.eval({pos, t, dt}, media_data, T_data, T0,
198 ip_cv.s_therm_exp_data);
199
200 models.mechanical_strain_model.eval(
201 T_data, ip_cv.s_therm_exp_data, ip_out.eps_data,
202 Bu * displacement_prev, prev_state.mechanical_strain_data,
203 ip_cv.swelling_data, current_state.mechanical_strain_data);
204
205 models.s_mech_model.eval(
206 {pos, t, dt}, T_data, current_state.mechanical_strain_data,
207 prev_state.mechanical_strain_data, prev_state.eff_stress_data,
209 ip_cd.s_mech_data, ip_cv.equivalent_plastic_strain_data);
210
211 models.total_stress_model.eval(current_state.eff_stress_data,
212 ip_cv.biot_data, ip_cv.chi_S_L, pGR_data,
213 pCap_data, ip_cv.total_stress_data);
214
215 models.permeability_model.eval(
216 {pos, t, dt}, media_data, current_state.S_L_data, pCap_data, T_data,
217 ip_cv.total_stress_data, ip_out.eps_data,
218 ip_cv.equivalent_plastic_strain_data, ip_out.permeability_data);
219
220 models.pure_liquid_density_model.eval({pos, t, dt}, media_data,
221 pGR_data, pCap_data, T_data,
222 current_state.rho_W_LR);
223
224 models.phase_transition_model.eval(
225 {pos, t, dt}, media_data, pGR_data, pCap_data, T_data,
226 current_state.rho_W_LR, ip_out.enthalpy_data,
227 ip_out.mass_mole_fractions_data, ip_out.fluid_density_data,
228 ip_out.vapour_pressure_data, current_state.constituent_density_data,
229 ip_cv.phase_transition_data);
230
231 models.viscosity_model.eval({pos, t, dt}, media_data, T_data,
232 ip_out.mass_mole_fractions_data,
233 ip_cv.viscosity_data);
234
235 models.porosity_model.eval({pos, t, dt}, media_data,
236#ifdef NON_CONSTANT_SOLID_PHASE_VOLUME_FRACTION
237 ip_cv.biot_data, ip_out.eps_data,
238 ip_cv.s_therm_exp_data,
239#endif
240 ip_out.porosity_data, ip_cv.porosity_d_data);
241
242 models.solid_density_model.eval(
243 {pos, t, dt}, media_data, T_data,
244#ifdef NON_CONSTANT_SOLID_PHASE_VOLUME_FRACTION
245 ip_cv.biot_data, ip_out.eps_data, ip_cv.s_therm_exp_data,
246#endif
247 ip_out.solid_density_data, ip_cv.solid_density_d_data);
248
249 models.solid_heat_capacity_model.eval({pos, t, dt}, media_data, T_data,
250 ip_cv.solid_heat_capacity_data);
251
252 models.thermal_conductivity_model.eval(
253 {pos, t, dt}, media_data, T_data, ip_out.porosity_data,
254 ip_cv.porosity_d_data, current_state.S_L_data, ip_cv.dS_L_dp_cap,
255 ip_cv.thermal_conductivity_data);
256
257 auto const&
c = ip_cv.phase_transition_data;
258
259 auto const phi_L =
260 current_state.S_L_data.S_L * ip_out.porosity_data.phi;
261 auto const phi_G =
262 (1. - current_state.S_L_data.S_L) * ip_out.porosity_data.phi;
263 double const phi_S = 1. - ip_out.porosity_data.phi;
264
265 ip_out.enthalpy_data.h_S = ip_cv.solid_heat_capacity_data() *
T;
266 auto const u_S = ip_out.enthalpy_data.h_S;
267
268 current_state.internal_energy_data() =
269 phi_G * ip_out.fluid_density_data.rho_GR *
c.uG +
270 phi_L * ip_out.fluid_density_data.rho_LR *
c.uL +
271 phi_S * ip_out.solid_density_data.rho_SR * u_S;
272
273 ip_cv.effective_volumetric_enthalpy_data.rho_h_eff =
274 phi_G * ip_out.fluid_density_data.rho_GR *
275 ip_out.enthalpy_data.h_G +
276 phi_L * ip_out.fluid_density_data.rho_LR *
277 ip_out.enthalpy_data.h_L +
278 phi_S * ip_out.solid_density_data.rho_SR * ip_out.enthalpy_data.h_S;
279
280
281 auto const xmCL = 1. - ip_out.mass_mole_fractions_data.xmWL;
282
284 c.dxmWG_dpCap * gradpCap +
287
289 c.dxmWL_dpCap * gradpCap +
292
293
294
295
296
297 ip_out.diffusion_velocity_data.d_CG =
298 ip_out.mass_mole_fractions_data.xmCG == 0.
299 ? 0. * gradxmCG
300
301 : -phi_G / ip_out.mass_mole_fractions_data.xmCG *
302 c.diffusion_coefficient_vapour * gradxmCG;
303
304 ip_out.diffusion_velocity_data.d_WG =
305 ip_out.mass_mole_fractions_data.xmCG == 1.
306 ? 0. * gradxmWG
307
308 : -phi_G / (1 - ip_out.mass_mole_fractions_data.xmCG) *
309 c.diffusion_coefficient_vapour * gradxmWG;
310
311 ip_out.diffusion_velocity_data.d_CL =
312 xmCL == 0.
313 ? 0. * gradxmCL
314
315 : -phi_L / xmCL *
c.diffusion_coefficient_solute * gradxmCL;
316
317 ip_out.diffusion_velocity_data.d_WL =
318 ip_out.mass_mole_fractions_data.xmWL == 0.
319 ? 0. * gradxmWL
320
321 : -phi_L / ip_out.mass_mole_fractions_data.xmWL *
322 c.diffusion_coefficient_solute * gradxmWL;
323
324
325
326
327 ip_cv.effective_volumetric_internal_energy_d_data.drho_u_eff_dT =
328 phi_G *
c.drho_GR_dT *
c.uG +
329 phi_G * ip_out.fluid_density_data.rho_GR *
c.du_G_dT +
330 phi_L *
c.drho_LR_dT *
c.uL +
331 phi_L * ip_out.fluid_density_data.rho_LR *
c.du_L_dT +
332 phi_S * ip_cv.solid_density_d_data.drho_SR_dT * u_S +
333 phi_S * ip_out.solid_density_data.rho_SR *
334 ip_cv.solid_heat_capacity_data() -
335 ip_cv.porosity_d_data.dphi_dT * ip_out.solid_density_data.rho_SR *
336 u_S;
337
338
339
340 double const ds_G_dp_cap = -ip_cv.dS_L_dp_cap();
341
342
343 double const dphi_G_dp_cap =
344 -ip_cv.dS_L_dp_cap() * ip_out.porosity_data.phi;
345
346 double const dphi_L_dp_cap =
347 ip_cv.dS_L_dp_cap() * ip_out.porosity_data.phi;
348
349
350
351
352
353 double const drho_LR_dp_GR =
c.drho_LR_dp_LR;
354 double const drho_LR_dp_cap = -
c.drho_LR_dp_LR;
355
356
357 ip_cv.effective_volumetric_enthalpy_d_data.drho_h_eff_dp_GR =
358
359
360 phi_G *
c.drho_GR_dp_GR * ip_out.enthalpy_data.h_G +
361
362
363 phi_L * drho_LR_dp_GR * ip_out.enthalpy_data.h_L;
364 ip_cv.effective_volumetric_enthalpy_d_data.drho_h_eff_dp_cap =
365 dphi_G_dp_cap * ip_out.fluid_density_data.rho_GR *
366 ip_out.enthalpy_data.h_G +
367
368 dphi_L_dp_cap * ip_out.fluid_density_data.rho_LR *
369 ip_out.enthalpy_data.h_L +
370 phi_L * drho_LR_dp_cap * ip_out.enthalpy_data.h_L;
371
372
373 constexpr double dphi_G_dT = 0;
374 constexpr double dphi_L_dT = 0;
375 ip_cv.effective_volumetric_enthalpy_d_data.drho_h_eff_dT =
376 dphi_G_dT * ip_out.fluid_density_data.rho_GR *
377 ip_out.enthalpy_data.h_G +
378 phi_G *
c.drho_GR_dT * ip_out.enthalpy_data.h_G +
379 phi_G * ip_out.fluid_density_data.rho_GR *
c.dh_G_dT +
380 dphi_L_dT * ip_out.fluid_density_data.rho_LR *
381 ip_out.enthalpy_data.h_L +
382 phi_L *
c.drho_LR_dT * ip_out.enthalpy_data.h_L +
383 phi_L * ip_out.fluid_density_data.rho_LR *
c.dh_L_dT -
384 ip_cv.porosity_d_data.dphi_dT * ip_out.solid_density_data.rho_SR *
385 ip_out.enthalpy_data.h_S +
386 phi_S * ip_cv.solid_density_d_data.drho_SR_dT *
387 ip_out.enthalpy_data.h_S +
388 phi_S * ip_out.solid_density_data.rho_SR *
389 ip_cv.solid_heat_capacity_data();
390
391 ip_cv.effective_volumetric_internal_energy_d_data.drho_u_eff_dp_GR =
392
393 phi_G *
c.drho_GR_dp_GR *
c.uG +
394 phi_G * ip_out.fluid_density_data.rho_GR *
c.du_G_dp_GR +
395
396 phi_L * drho_LR_dp_GR *
c.uL +
397 phi_L * ip_out.fluid_density_data.rho_LR *
c.du_L_dp_GR;
398
399 ip_cv.effective_volumetric_internal_energy_d_data.drho_u_eff_dp_cap =
400 dphi_G_dp_cap * ip_out.fluid_density_data.rho_GR *
c.uG +
401
402 dphi_L_dp_cap * ip_out.fluid_density_data.rho_LR *
c.uL +
403 phi_L * drho_LR_dp_cap *
c.uL +
404 phi_L * ip_out.fluid_density_data.rho_LR *
c.du_L_dp_cap;
405
408 ip_out.permeability_data.Ki * ip_out.permeability_data.k_rel_G /
409 ip_cv.viscosity_data.mu_GR;
411 ip_out.permeability_data.Ki * ip_out.permeability_data.k_rel_L /
412 ip_cv.viscosity_data.mu_LR;
413
414
415
416
417
418
419
420
421
422 ip_cv.dk_over_mu_G_dp_cap = ip_out.permeability_data.Ki *
423 ip_out.permeability_data.dk_rel_G_dS_L *
424 ip_cv.dS_L_dp_cap() /
425 ip_cv.viscosity_data.mu_GR;
426 ip_cv.dk_over_mu_L_dp_cap = ip_out.permeability_data.Ki *
427 ip_out.permeability_data.dk_rel_L_dS_L *
428 ip_cv.dS_L_dp_cap() /
429 ip_cv.viscosity_data.mu_LR;
430
431 ip_out.darcy_velocity_data.w_GS =
432 k_over_mu_G * ip_out.fluid_density_data.rho_GR * b -
433 k_over_mu_G * gradpGR;
434 ip_out.darcy_velocity_data.w_LS =
435 k_over_mu_L * gradpCap +
436 k_over_mu_L * ip_out.fluid_density_data.rho_LR * b -
437 k_over_mu_L * gradpGR;
438
439 ip_cv.drho_GR_h_w_eff_dp_GR_Npart =
440 c.drho_GR_dp_GR * ip_out.enthalpy_data.h_G *
441 ip_out.darcy_velocity_data.w_GS +
442 ip_out.fluid_density_data.rho_GR * ip_out.enthalpy_data.h_G *
443 k_over_mu_G *
c.drho_GR_dp_GR * b;
444 ip_cv.drho_GR_h_w_eff_dp_GR_gradNpart =
445 ip_out.fluid_density_data.rho_GR * ip_out.enthalpy_data.h_G *
446 k_over_mu_G -
447 ip_out.fluid_density_data.rho_LR * ip_out.enthalpy_data.h_L *
448 k_over_mu_L;
449
450 ip_cv.drho_LR_h_w_eff_dp_cap_Npart =
451 -drho_LR_dp_cap * ip_out.enthalpy_data.h_L *
452 ip_out.darcy_velocity_data.w_LS -
453 ip_out.fluid_density_data.rho_LR * ip_out.enthalpy_data.h_L *
454 k_over_mu_L * drho_LR_dp_cap * b;
455 ip_cv.drho_LR_h_w_eff_dp_cap_gradNpart =
456
457 ip_out.fluid_density_data.rho_LR * ip_out.enthalpy_data.h_L *
458 k_over_mu_L;
459
460 ip_cv.drho_GR_h_w_eff_dT =
461 c.drho_GR_dT * ip_out.enthalpy_data.h_G *
462 ip_out.darcy_velocity_data.w_GS +
463 ip_out.fluid_density_data.rho_GR *
c.dh_G_dT *
464 ip_out.darcy_velocity_data.w_GS +
465 c.drho_LR_dT * ip_out.enthalpy_data.h_L *
466 ip_out.darcy_velocity_data.w_LS +
467 ip_out.fluid_density_data.rho_LR *
c.dh_L_dT *
468 ip_out.darcy_velocity_data.w_LS;
469
470
471
472
473
474 double const s_L = current_state.S_L_data.S_L;
475 double const s_G = 1. - s_L;
476 double const rho_C_FR =
477 s_G * current_state.constituent_density_data.rho_C_GR +
478 s_L * current_state.constituent_density_data.rho_C_LR;
479 double const rho_W_FR =
480 s_G * current_state.constituent_density_data.rho_W_GR +
481 s_L * current_state.rho_W_LR();
482
483 constexpr double drho_C_GR_dp_cap = 0;
484 if (dt == 0.)
485 {
486 ip_cv.dfC_3a_dp_GR = 0.;
487 ip_cv.dfC_3a_dp_cap = 0.;
488 ip_cv.dfC_3a_dT = 0.;
489 }
490 else
491 {
492 double const rho_C_GR_dot =
493 (current_state.constituent_density_data.rho_C_GR -
494 prev_state.constituent_density_data->rho_C_GR) /
495 dt;
496 double const rho_C_LR_dot =
497 (current_state.constituent_density_data.rho_C_LR -
498 prev_state.constituent_density_data->rho_C_LR) /
499 dt;
500 ip_cv.dfC_3a_dp_GR =
501 s_G *
c.drho_C_GR_dp_GR /
502 dt +
503 s_L *
c.drho_C_LR_dp_GR /
504 dt;
505 ip_cv.dfC_3a_dp_cap = ds_G_dp_cap * rho_C_GR_dot +
506 s_G * drho_C_GR_dp_cap / dt +
507 ip_cv.dS_L_dp_cap() * rho_C_LR_dot -
508 s_L *
c.drho_C_LR_dp_LR / dt;
509 ip_cv.dfC_3a_dT =
510 s_G *
c.drho_C_GR_dT / dt + s_L *
c.drho_C_LR_dT / dt;
511 }
512
513 double const drho_C_FR_dp_GR =
514
515
516 s_G *
c.drho_C_GR_dp_GR +
517
518
519 s_L *
c.drho_C_LR_dp_GR;
520 ip_cv.dfC_4_MCpG_dp_GR =
521 drho_C_FR_dp_GR * (ip_cv.biot_data() - ip_out.porosity_data.phi) *
522 ip_cv.beta_p_SR();
523
524 double const drho_C_FR_dT = s_G *
c.drho_C_GR_dT + s_L *
c.drho_C_LR_dT;
525 ip_cv.dfC_4_MCpG_dT =
526 drho_C_FR_dT * (ip_cv.biot_data() - ip_out.porosity_data.phi) *
527 ip_cv.beta_p_SR() -
528 rho_C_FR * ip_cv.porosity_d_data.dphi_dT * ip_cv.beta_p_SR();
529
530 ip_cv.dfC_4_MCT_dT =
531 drho_C_FR_dT * (ip_cv.biot_data() - ip_out.porosity_data.phi) *
532 ip_cv.s_therm_exp_data.beta_T_SR
533#ifdef NON_CONSTANT_SOLID_PHASE_VOLUME_FRACTION
534 + rho_C_FR * (ip_cv.biot_data() - ip_cv.porosity_d_data.dphi_dT) *
535 ip_cv.s_therm_exp_data.beta_T_SR
536#endif
537 ;
538
539 ip_cv.dfC_4_MCu_dT = drho_C_FR_dT * ip_cv.biot_data();
540
541 ip_cv.dfC_2a_dp_GR =
542 -ip_out.porosity_data.phi *
c.drho_C_GR_dp_GR -
543 drho_C_FR_dp_GR * pCap *
544 (ip_cv.biot_data() - ip_out.porosity_data.phi) *
545 ip_cv.beta_p_SR();
546
547 double const drho_C_FR_dp_cap =
548 ds_G_dp_cap * current_state.constituent_density_data.rho_C_GR +
549 s_G * drho_C_GR_dp_cap +
550 ip_cv.dS_L_dp_cap() *
551 current_state.constituent_density_data.rho_C_LR -
552 s_L *
c.drho_C_LR_dp_LR;
553
554 ip_cv.dfC_2a_dp_cap =
555 ip_out.porosity_data.phi * (-
c.drho_C_LR_dp_LR - drho_C_GR_dp_cap) -
556 drho_C_FR_dp_cap * pCap *
557 (ip_cv.biot_data() - ip_out.porosity_data.phi) *
558 ip_cv.beta_p_SR() +
559 rho_C_FR * (ip_cv.biot_data() - ip_out.porosity_data.phi) *
560 ip_cv.beta_p_SR();
561
562 ip_cv.dfC_2a_dT =
563 ip_cv.porosity_d_data.dphi_dT *
564 (current_state.constituent_density_data.rho_C_LR -
565 current_state.constituent_density_data.rho_C_GR) +
566 ip_out.porosity_data.phi * (
c.drho_C_LR_dT -
c.drho_C_GR_dT) -
567 drho_C_FR_dT * pCap *
568 (ip_cv.biot_data() - ip_out.porosity_data.phi) *
569 ip_cv.beta_p_SR() +
570 rho_C_FR * pCap * ip_cv.porosity_d_data.dphi_dT * ip_cv.beta_p_SR();
571
572 ip_cv.dadvection_C_dp_GR =
c.drho_C_GR_dp_GR * k_over_mu_G
573
574
575 +
c.drho_C_LR_dp_GR * k_over_mu_L;
576
577 ip_cv.dadvection_C_dp_cap =
578
579 current_state.constituent_density_data.rho_C_GR *
580 ip_cv.dk_over_mu_G_dp_cap +
581 (-
c.drho_C_LR_dp_LR) * k_over_mu_L +
582 current_state.constituent_density_data.rho_C_LR *
583 ip_cv.dk_over_mu_L_dp_cap;
584
585 ip_cv.dfC_4_LCpG_dT =
586 c.drho_C_GR_dT * k_over_mu_G +
c.drho_C_LR_dT * k_over_mu_L
587
588 ;
589
590 double const drho_W_FR_dp_GR =
591
592
593 s_G *
c.drho_W_GR_dp_GR +
594
595 s_L *
c.drho_W_LR_dp_GR;
596 double const drho_W_FR_dp_cap =
597 ds_G_dp_cap * current_state.constituent_density_data.rho_W_GR +
598 s_G *
c.drho_W_GR_dp_cap +
599 ip_cv.dS_L_dp_cap() * current_state.rho_W_LR() -
600 s_L *
c.drho_W_LR_dp_LR;
601 double const drho_W_FR_dT = s_G *
c.drho_W_GR_dT + s_L *
c.drho_W_LR_dT;
602
603 ip_cv.dfW_2a_dp_GR =
604 ip_out.porosity_data.phi * (
c.drho_W_LR_dp_GR -
c.drho_W_GR_dp_GR);
605 ip_cv.dfW_2b_dp_GR = drho_W_FR_dp_GR * pCap *
606 (ip_cv.biot_data() - ip_out.porosity_data.phi) *
607 ip_cv.beta_p_SR();
608 ip_cv.dfW_2a_dp_cap = ip_out.porosity_data.phi *
609 (-
c.drho_W_LR_dp_LR -
c.drho_W_GR_dp_cap);
610 ip_cv.dfW_2b_dp_cap =
611 drho_W_FR_dp_cap * pCap *
612 (ip_cv.biot_data() - ip_out.porosity_data.phi) *
613 ip_cv.beta_p_SR() +
614 rho_W_FR * (ip_cv.biot_data() - ip_out.porosity_data.phi) *
615 ip_cv.beta_p_SR();
616
617 ip_cv.dfW_2a_dT =
618 ip_cv.porosity_d_data.dphi_dT *
619 (current_state.rho_W_LR() -
620 current_state.constituent_density_data.rho_W_GR) +
621 ip_out.porosity_data.phi * (
c.drho_W_LR_dT -
c.drho_W_GR_dT);
622 ip_cv.dfW_2b_dT =
623 drho_W_FR_dT * pCap *
624 (ip_cv.biot_data() - ip_out.porosity_data.phi) *
625 ip_cv.beta_p_SR() -
626 rho_W_FR * pCap * ip_cv.porosity_d_data.dphi_dT * ip_cv.beta_p_SR();
627
628 if (dt == 0.)
629 {
630 ip_cv.dfW_3a_dp_GR = 0.;
631 ip_cv.dfW_3a_dp_cap = 0.;
632 ip_cv.dfW_3a_dT = 0.;
633 }
634 else
635 {
636 double const rho_W_GR_dot =
637 (current_state.constituent_density_data.rho_W_GR -
638 prev_state.constituent_density_data->rho_W_GR) /
639 dt;
640 double const rho_W_LR_dot =
641 (current_state.rho_W_LR() - **prev_state.rho_W_LR) / dt;
642
643 ip_cv.dfW_3a_dp_GR =
644 s_G *
c.drho_W_GR_dp_GR /
645 dt +
646 s_L *
c.drho_W_LR_dp_GR /
647 dt;
648 ip_cv.dfW_3a_dp_cap = ds_G_dp_cap * rho_W_GR_dot +
649 s_G *
c.drho_W_GR_dp_cap / dt +
650 ip_cv.dS_L_dp_cap() * rho_W_LR_dot -
651 s_L *
c.drho_W_LR_dp_LR / dt;
652 ip_cv.dfW_3a_dT =
653 s_G *
c.drho_W_GR_dT / dt + s_L *
c.drho_W_LR_dT / dt;
654 }
655
656 ip_cv.dfW_4_LWpG_a_dp_GR =
c.drho_W_GR_dp_GR * k_over_mu_G
657
658 +
c.drho_W_LR_dp_GR * k_over_mu_L
659
660 ;
661 ip_cv.dfW_4_LWpG_a_dp_cap =
662 c.drho_W_GR_dp_cap * k_over_mu_G +
663 current_state.constituent_density_data.rho_W_GR *
664 ip_cv.dk_over_mu_G_dp_cap +
665 -
c.drho_W_LR_dp_LR * k_over_mu_L +
666 current_state.rho_W_LR() * ip_cv.dk_over_mu_L_dp_cap;
667
668 ip_cv.dfW_4_LWpG_a_dT =
669 c.drho_W_GR_dT * k_over_mu_G
670
671 +
c.drho_W_LR_dT * k_over_mu_L
672
673 ;
674
675
676 ip_cv.dfW_4_LWpG_d_dp_GR =
677 Eigen::Matrix<double, DisplacementDim, DisplacementDim>::Zero();
678 ip_cv.dfW_4_LWpG_d_dp_cap =
679 Eigen::Matrix<double, DisplacementDim, DisplacementDim>::Zero();
680 ip_cv.dfW_4_LWpG_d_dT =
681 Eigen::Matrix<double, DisplacementDim, DisplacementDim>::Zero();
682
683 ip_cv.dfW_4_LWpC_a_dp_GR =
c.drho_W_LR_dp_GR * k_over_mu_L
684
685 ;
686 ip_cv.dfW_4_LWpC_a_dp_cap =
687 -
c.drho_W_LR_dp_LR * k_over_mu_L +
688 current_state.rho_W_LR() * ip_cv.dk_over_mu_L_dp_cap;
689 ip_cv.dfW_4_LWpC_a_dT =
c.drho_W_LR_dT * k_over_mu_L
690
691 ;
692
693
694 ip_cv.dfW_4_LWpC_d_dp_GR =
695 Eigen::Matrix<double, DisplacementDim, DisplacementDim>::Zero();
696 ip_cv.dfW_4_LWpC_d_dp_cap =
697 Eigen::Matrix<double, DisplacementDim, DisplacementDim>::Zero();
698 ip_cv.dfW_4_LWpC_d_dT =
699 Eigen::Matrix<double, DisplacementDim, DisplacementDim>::Zero();
700
701 ip_cv.dfC_4_LCpC_a_dp_GR =
c.drho_C_LR_dp_GR * k_over_mu_L
702
703 ;
704 ip_cv.dfC_4_LCpC_a_dp_cap =
705 -
c.drho_C_LR_dp_LR * k_over_mu_L +
706 current_state.constituent_density_data.rho_C_LR *
707 ip_cv.dk_over_mu_L_dp_cap;
708 ip_cv.dfC_4_LCpC_a_dT =
c.drho_W_LR_dT * k_over_mu_L
709
710 ;
711
712
713 ip_cv.dfC_4_LCpC_d_dp_GR =
714 Eigen::Matrix<double, DisplacementDim, DisplacementDim>::Zero();
715 ip_cv.dfC_4_LCpC_d_dp_cap =
716 Eigen::Matrix<double, DisplacementDim, DisplacementDim>::Zero();
717 ip_cv.dfC_4_LCpC_d_dT =
718 Eigen::Matrix<double, DisplacementDim, DisplacementDim>::Zero();
719 }
720
721 return {ip_constitutive_data, ip_constitutive_variables};
722}
BaseLib::StrongType< double, struct GasPressureTag > GasPressureData
BaseLib::StrongType< double, struct CapillaryPressureTag > CapillaryPressureData
BaseLib::StrongType< double, struct ReferenceTemperatureTag > ReferenceTemperatureData