Add LINRAD (hybrid linear-radial) filter cake model

This commit is contained in:
Vegard Kippe 2024-11-06 15:19:20 +01:00
parent 51d6b7e4e5
commit bcd91601d5

View File

@ -91,7 +91,8 @@ applyCleaning(const WellInterfaceGeneric<Scalar>& well,
updateMultiplier(connection, perf);
const Scalar rw = connection.getFilterCakeRadius();
switch (filter_cake.geometry) {
case FilterCake::FilterCakeGeometry::LINEAR: {
case FilterCake::FilterCakeGeometry::LINEAR:
case FilterCake::FilterCakeGeometry::LINRAD: {
// Previous thickness adjusted to give correct cleaning multiplier at start of time step
thickness_[perf] *= factor;
break;
@ -184,6 +185,15 @@ updateSkinFactorsAndMultipliers(const WellInterfaceGeneric<Scalar>& well,
delta_skin_factor = K / perm * std::log(rc / rc_prev);
break;
}
case FilterCake::FilterCakeGeometry::LINRAD: {
const auto prev_thickness = thickness_[perf];
Scalar rc_prev = rw + prev_thickness;
thickness = thickness_[perf] + delta_thickness;
filtrate_data.thickness[perf] = thickness;
const Scalar rc = rw + thickness;
delta_skin_factor = K / perm * std::log(rc / rc_prev);
break;
}
default:
const auto geometry =
FilterCake::filterCakeGeometryToString(filter_cake.geometry);