Skip to content

Commit 9db4bfa

Browse files
committed
clean up
1 parent f6e5b38 commit 9db4bfa

13 files changed

+249
-269
lines changed

src/libcadet/model/GeneralRateModel.cpp

Lines changed: 25 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ int schurComplementMultiplierGRM(void* userData, double const* x, double* z)
6666

6767
template <typename ConvDispOperator>
6868
GeneralRateModel<ConvDispOperator>::GeneralRateModel(UnitOpIdx unitOpIdx) : UnitOperationBase(unitOpIdx),
69-
_hasSurfaceDiffusion(0, false), _dynReactionBulk{ },
69+
_hasSurfaceDiffusion(0, false),
7070
_jacP(nullptr), _jacPdisc(nullptr), _jacPF(nullptr), _jacFP(nullptr), _jacInlet(), _hasParDepSurfDiffusion(false),
7171
_analyticJac(true), _jacobianAdDirs(0), _factorizeJacobian(false), _tempState(nullptr),
7272
_initC(0), _initCp(0), _initQ(0), _initState(0), _initStateDot(0)
@@ -84,8 +84,6 @@ GeneralRateModel<ConvDispOperator>::~GeneralRateModel() CADET_NOEXCEPT
8484
delete[] _jacP;
8585
delete[] _jacPdisc;
8686

87-
for (auto* reac : _dynReactionBulk) delete reac;
88-
8987
clearParDepSurfDiffusion();
9088
}
9189

@@ -480,10 +478,16 @@ bool GeneralRateModel<ConvDispOperator>::configureModelDiscretization(IParameter
480478

481479
// ==== Construct and configure dynamic reaction model
482480
bool reactionConfSuccess = true;
483-
_dynReactionBulk.resize(1, nullptr);
484481
_dynReaction.resize(_disc.nParType, nullptr);
485482

486483
_reaction.clearDynamicReactionModels();
484+
_reaction.configureDimOfSetAndReacParType(_disc.nParType);
485+
486+
bool hasCrossPhaseReac = false;
487+
bool hasSolidReac = false;
488+
bool hasPoreReac = false;
489+
bool hasLiquidReac = false;
490+
487491
if (paramProvider.exists("particle_type_000") && _disc.nParType > 0)
488492
{
489493
unsigned int totalReacCrossPhase = 0;
@@ -503,7 +507,7 @@ bool GeneralRateModel<ConvDispOperator>::configureModelDiscretization(IParameter
503507

504508
if (paramProvider.exists("NREAC_CROSS_PHASE"))
505509
{
506-
_reaction.configureDimOfSetAndReacParType("cross_phase", _disc.nParType);
510+
hasCrossPhaseReac = true;
507511
int nReactions = paramProvider.getInt("NREAC_CROSS_PHASE");
508512

509513
if (nReactions < 0)
@@ -517,7 +521,7 @@ bool GeneralRateModel<ConvDispOperator>::configureModelDiscretization(IParameter
517521

518522
if (paramProvider.exists("NREAC_PORE"))
519523
{
520-
_reaction.configureDimOfSetAndReacParType("pore", _disc.nParType);
524+
hasPoreReac = true;
521525
int nReactions = paramProvider.getInt("NREAC_PORE");
522526

523527
if (nReactions < 0)
@@ -530,7 +534,7 @@ bool GeneralRateModel<ConvDispOperator>::configureModelDiscretization(IParameter
530534
}
531535
if (paramProvider.exists("NREAC_SOLID"))
532536
{
533-
_reaction.configureDimOfSetAndReacParType("solid", _disc.nParType);
537+
hasSolidReac = true;
534538
int nReactions = paramProvider.getInt("NREAC_SOLID");
535539
if (nReactions < 0)
536540
{
@@ -595,8 +599,9 @@ bool GeneralRateModel<ConvDispOperator>::configureModelDiscretization(IParameter
595599
}
596600

597601
}
598-
else if (paramProvider.exists("NREAC_BULK"))
602+
if (paramProvider.exists("NREAC_BULK"))
599603
{
604+
hasLiquidReac = true;
600605
int nReactions = paramProvider.getInt("NREAC_BULK");
601606
reactionConfSuccess = _reaction.configureDiscretization("bulk",
602607
0,
@@ -607,9 +612,10 @@ bool GeneralRateModel<ConvDispOperator>::configureModelDiscretization(IParameter
607612
paramProvider,
608613
helper) && reactionConfSuccess;
609614
}
610-
else
615+
616+
if (!hasLiquidReac && !hasCrossPhaseReac && !hasSolidReac && !hasPoreReac)
611617
{
612-
_reaction.empty(); // todo das als construktor
618+
_reaction.empty();
613619
}
614620

615621

@@ -947,15 +953,6 @@ unsigned int GeneralRateModel<ConvDispOperator>::threadLocalMemorySize() const C
947953
// Handle all reactions
948954
_reaction.setWorkspaceRequirements(lms, _disc.nComp);
949955

950-
951-
952-
for (auto i = 0; i < _dynReactionBulk.size(); i++)
953-
{
954-
if (_dynReactionBulk[i] && _dynReactionBulk[i]->requiresWorkspace())
955-
lms.fitBlock(_dynReactionBulk[i]->workspaceSize(_disc.nComp, 0, nullptr));
956-
}
957-
958-
959956
const unsigned int maxStrideBound = *std::max_element(_disc.strideBound, _disc.strideBound + _disc.nParType);
960957
lms.add<active>(_disc.nComp + maxStrideBound);
961958
lms.add<double>((maxStrideBound + _disc.nComp) * (maxStrideBound + _disc.nComp));
@@ -1434,6 +1431,15 @@ int GeneralRateModel<ConvDispOperator>::residualParticle(double t, unsigned int
14341431
int const* const qsReaction = _binding[parType]->reactionQuasiStationarity();
14351432
const parts::cell::CellParameters cellResParams = makeCellResidualParams(parType, qsReaction);
14361433

1434+
// dim for reactions
1435+
const int numReacCrossPhase = _reaction.getnReactionOfParType("cross_phase", parType);
1436+
const int numReacParticle = _reaction.getnReactionOfParType("pore", parType);
1437+
const int numReacSolid = _reaction.getnReactionOfParType("solid", parType);
1438+
1439+
const int offSetCrossPhase = _reaction.getOffsetForPhase("cross_phase", parType);
1440+
const int offSetParticle = _reaction.getOffsetForPhase("pore", parType);
1441+
const int offSetSolid = _reaction.getOffsetForPhase("solid", parType);
1442+
14371443
// Loop over particle cells
14381444
for (unsigned int par = 0; par < _disc.nParCell[parType]; ++par)
14391445
{
@@ -1451,15 +1457,6 @@ int GeneralRateModel<ConvDispOperator>::residualParticle(double t, unsigned int
14511457

14521458
// We still need to handle transport and quasi-stationary reactions
14531459

1454-
const int numReacCrossPhase = _reaction.getnReactionOfParType("cross_phase", par);
1455-
const int numReacParticle = _reaction.getnReactionOfParType("pore", par);
1456-
const int numReacSolid = _reaction.getnReactionOfParType("solid", par);
1457-
1458-
//todo: double check offset
1459-
const int offSetCrossPhase = _reaction.getOffsetForPhase("cross_phase", parType);
1460-
const int offSetParticle = _reaction.getOffsetForPhase("pore", parType);
1461-
const int offSetSolid = _reaction.getOffsetForPhase("solid", parType);
1462-
14631460
if (numReacCrossPhase > 0 || numReacParticle > 0 || numReacSolid > 0)
14641461
{
14651462
unsigned int const* nBound = _disc.nBound + _disc.nComp * parType;

src/libcadet/model/GeneralRateModel.hpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -327,8 +327,6 @@ class GeneralRateModel : public UnitOperationBase
327327
// IExternalFunction* _extFun; //!< External function (owned by library user)
328328

329329
ConvDispOperator _convDispOp; //!< Convection dispersion operator for interstitial volume transport
330-
std::vector<IDynamicReactionModel*> _dynReactionBulk; //!< Dynamic reactions in the bulk volume
331-
bool _oldReactionInterface; //!< Flag to distinguish between old and new reaction interface
332330
ReactionSystem _reaction;
333331

334332
const int getReactionOffsetParticle(std::vector<int>& reactionPerParticle, unsigned int parType) const

0 commit comments

Comments
 (0)