From 254041d6789d309151680c86f76affd925273f08 Mon Sep 17 00:00:00 2001 From: Jan Breuer Date: Mon, 9 Dec 2024 13:04:56 +0100 Subject: [PATCH] Fix old CSTR interface support This commit fixes the calculation of constant solid volume from the old interface fields, which are supported for backwards compatibility. --- src/libcadet/model/StirredTankModel.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/libcadet/model/StirredTankModel.cpp b/src/libcadet/model/StirredTankModel.cpp index 53af67b42..671a59de1 100644 --- a/src/libcadet/model/StirredTankModel.cpp +++ b/src/libcadet/model/StirredTankModel.cpp @@ -284,7 +284,10 @@ bool CSTRModel::configure(IParameterProvider& paramProvider) else throw InvalidParameterException("Field CONST_SOLID_VOLUME or INIT_LIQUID_VOLUME required"); - _constSolidVolume = init_liquid_volume / (1.0 - paramProvider.getDouble("POROSITY")) - init_liquid_volume; // V_s = V_l / (1 - epsilon) - V_l = (V_l + V_s) * (1 -epsilon) + const double epsilon = paramProvider.getDouble("POROSITY"); + + if (epsilon > 0.0) // else, constant solid volume is already set to zero + _constSolidVolume = init_liquid_volume * (1.0 - epsilon) / epsilon; // V_s = (V_l + V_s) * (1 - epsilon) -> V_s = V_l * (1 - \epsilon) / \epsilon } _parameters[makeParamId(hashString("CONST_SOLID_VOLUME"), _unitOpIdx, CompIndep, ParTypeIndep, BoundStateIndep, ReactionIndep, SectionIndep)] = &_constSolidVolume;