47{
49 const Point elem_to_face(0.5, 0.1, 0.0);
50 const Point face_to_neighbor(0.35, 0.3, 0.0);
55 const Real elem_pressure = 11.0;
56 const Real neighbor_pressure = 4.0;
57 const Real jump = 2.5;
58
60 elem_to_face,
61 face_to_neighbor,
62 elem_diffusion,
63 neighbor_diffusion,
64 elem_gradient,
65 neighbor_gradient,
68 1.7,
69 true,
70 jump);
71 ASSERT_TRUE(data.valid);
72 EXPECT_DOUBLE_EQ(data.elem_jump, jump);
73
75 const Real assembled_flux = data.transmissibility * elem_pressure -
76 data.transmissibility * neighbor_pressure -
77 (data.correction + data.transmissibility * data.elem_jump);
78 const Real elem_face_pressure =
79 elem_pressure - (flux + data.elem_correction) / data.elem_conductance;
80 const Real neighbor_face_pressure =
81 neighbor_pressure + (flux + data.neighbor_correction) / data.neighbor_conductance;
82 const Real elem_half_flux =
83 data.elem_conductance * (elem_pressure - elem_face_pressure) - data.elem_correction;
84 const Real neighbor_half_flux =
85 data.neighbor_conductance * (neighbor_face_pressure - neighbor_pressure) -
86 data.neighbor_correction;
87 const Real recovered_elem_face_pressure =
89 const Real recovered_neighbor_face_pressure =
91
92 EXPECT_NEAR(elem_face_pressure - neighbor_face_pressure, jump, 1e-13);
93 EXPECT_NEAR(assembled_flux, flux, 1e-13);
94 EXPECT_NEAR(elem_half_flux, flux, 1e-13);
95 EXPECT_NEAR(neighbor_half_flux, flux, 1e-13);
96 EXPECT_NEAR(recovered_elem_face_pressure, elem_face_pressure, 1e-13);
97 EXPECT_NEAR(recovered_neighbor_face_pressure, neighbor_face_pressure, 1e-13);
98}
PressureJumpInterfaceData pressureJumpInterfaceData(const RealVectorValue &normal, const Point &elem_to_face, const Point &face_to_neighbor, const RealVectorValue &elem_diffusion, const RealVectorValue &neighbor_diffusion, const RealVectorValue &elem_gradient, const RealVectorValue &neighbor_gradient, const RealVectorValue &elem_rho_hbya, const RealVectorValue &neighbor_rho_hbya, const Real face_area, const bool use_nonorthogonal_correction, const Real elem_jump)
Construct the conservative half-cell interface coefficients for a diagonal diffusion tensor.
Real pressureJumpOneSidedFaceValue(const PressureJumpInterfaceData &data, const Real cell_pressure, const Real mass_flux, const bool elem_side)
Recover one side's face pressure from the common oriented face mass flux.
Real pressureJumpFlux(const PressureJumpInterfaceData &data, const Real elem_pressure, const Real neighbor_pressure)
Compute the pressure part of the element-to-neighbor flux after eliminating the interface pressures.
VectorValue< Real > RealVectorValue
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real