Skip to content

Commit 0befc7e

Browse files
committed
Replace field PARTICLE_TYPE by transport property bools
1 parent 7f2c81a commit 0befc7e

File tree

46 files changed

+442
-223
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+442
-223
lines changed

src/libcadet/model/ColumnModel1D-InitialConditions.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -173,11 +173,11 @@ void ColumnModel1D::applyInitialCondition(const SimulationState& simState) const
173173
{
174174
const unsigned int shellOffset = offset + shell * idxr.strideParNode(type);
175175

176-
// Initialize c_p
176+
// Initialize c^p
177177
for (unsigned int comp = 0; comp < _disc.nComp; ++comp)
178178
simState.vecStateY[shellOffset + comp] = static_cast<double>(_initCp[comp + _disc.nComp * type]);
179179

180-
// Initialize q
180+
// Initialize c^s
181181
active const* const iq = _initCs.data() + _disc.nBoundBeforeType[type];
182182
for (unsigned int bnd = 0; bnd < _disc.strideBound[type]; ++bnd)
183183
simState.vecStateY[shellOffset + idxr.strideParLiquid() + bnd] = static_cast<double>(iq[bnd]);
@@ -956,11 +956,11 @@ void ColumnModel1D::initializeSensitivityStates(const std::vector<double*>& vecS
956956
double* const stateYparticle = vecSensY[param] + shellOffset;
957957
double* const stateYparticleSolid = stateYparticle + idxr.strideParLiquid();
958958

959-
// Initialize c_p
959+
// Initialize c^p
960960
for (unsigned int comp = 0; comp < _disc.nComp; ++comp)
961961
stateYparticle[comp] = _initCp[comp + type * _disc.nComp].getADValue(param);
962962

963-
// Initialize q
963+
// Initialize c^s
964964
for (unsigned int bnd = 0; bnd < _disc.strideBound[type]; ++bnd)
965965
stateYparticleSolid[bnd] = _initCs[bnd + _disc.nBoundBeforeType[type]].getADValue(param);
966966
}

src/libcadet/model/ColumnModel1D.cpp

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -173,32 +173,44 @@ bool ColumnModel1D::configureModelDiscretization(IParameterProvider& paramProvid
173173

174174
if (unitName == "COLUMN_MODEL_1D")
175175
{
176-
std::string particleModelName = paramProvider.getString("PARTICLE_TYPE");
176+
const bool filmDiffusion = paramProvider.getBool("HAS_FILM_DIFFUSION");
177+
const bool poreDiffusion = paramProvider.exists("HAS_PORE_DIFFUSION") ? paramProvider.getBool("HAS_PORE_DIFFUSION") : false;
178+
const bool surfaceDiffusion = paramProvider.exists("HAS_SURFACE_DIFFUSION") ? paramProvider.getBool("HAS_SURFACE_DIFFUSION") : false;
179+
const std::string particleType = ParticleModel(filmDiffusion, poreDiffusion, surfaceDiffusion).getParticleTransportType();
177180

178-
_particles[parType] = helper.createParticleModel(particleModelName);
181+
_particles[parType] = helper.createParticleModel(particleType);
179182

180183
if (!_particles[parType])
181-
throw InvalidParameterException("Unknown particle model " + particleModelName);
184+
throw InvalidParameterException("Unknown particle model " + particleType);
182185
}
183186
else
184187
{
188+
std::string particleType = "NONE";
189+
if (paramProvider.exists("HAS_FILM_DIFFUSION"))
190+
{
191+
const bool filmDiffusion = paramProvider.getBool("HAS_FILM_DIFFUSION");
192+
const bool poreDiffusion = paramProvider.exists("HAS_PORE_DIFFUSION") ? paramProvider.getBool("HAS_PORE_DIFFUSION") : false;
193+
const bool surfaceDiffusion = paramProvider.exists("HAS_SURFACE_DIFFUSION") ? paramProvider.getBool("HAS_SURFACE_DIFFUSION") : false;
194+
particleType = ParticleModel(filmDiffusion, poreDiffusion, surfaceDiffusion).getParticleTransportType();
195+
}
196+
185197
if (unitName == "GENERAL_RATE_MODEL")
186198
{
187-
if ((paramProvider.exists("PARTICLE_TYPE") ? paramProvider.getString("PARTICLE_TYPE") : "GENERAL_RATE_PARTICLE") == "GENERAL_RATE_PARTICLE")
188-
{
199+
particleType = particleType == "NONE" ? "GENERAL_RATE_PARTICLE" : particleType;
200+
201+
if (particleType == "GENERAL_RATE_PARTICLE")
189202
_particles[parType] = helper.createParticleModel("GENERAL_RATE_PARTICLE");
190-
}
191203
else
192-
throw InvalidParameterException("Unit type was specified as " + unitName + ", which is inconsistent with specified particle model " + paramProvider.getString("PARTICLE_TYPE"));
204+
throw InvalidParameterException("Unit type was specified as " + unitName + ", which is inconsistent with specified particle model " + particleType);
193205
}
194206
else if (unitName == "LUMPED_RATE_MODEL_WITH_PORES")
195207
{
196-
if ((paramProvider.exists("PARTICLE_TYPE") ? paramProvider.getString("PARTICLE_TYPE") : "HOMOGENEOUS_PARTICLE") == "HOMOGENEOUS_PARTICLE")
197-
{
208+
particleType = particleType == "NONE" ? "HOMOGENEOUS_PARTICLE" : particleType;
209+
210+
if (particleType == "HOMOGENEOUS_PARTICLE")
198211
_particles[parType] = helper.createParticleModel("HOMOGENEOUS_PARTICLE");
199-
}
200212
else
201-
throw InvalidParameterException("Unit type was specified as " + unitName + ", which is inconsistent with specified particle model " + paramProvider.getString("PARTICLE_TYPE"));
213+
throw InvalidParameterException("Unit type was specified as " + unitName + ", which is inconsistent with specified particle model " + particleType);
202214
}
203215
else
204216
throw InvalidParameterException("Failed to configure unit type " + unitName);

src/libcadet/model/ColumnModel2D-InitialConditions.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -390,11 +390,11 @@ void ColumnModel2D::applyInitialCondition(const SimulationState& simState) const
390390
{
391391
const unsigned int shellOffset = offset + shell * idxr.strideParNode(parType);
392392

393-
// Initialize c_p
393+
// Initialize c^p
394394
for (unsigned int comp = 0; comp < _disc.nComp; ++comp)
395395
simState.vecStateY[shellOffset + comp] = static_cast<double>(_initCp[comp + _disc.nComp * parType + radZone * _disc.nComp * _disc.nParType]);
396396

397-
// Initialize q
397+
// Initialize c^s
398398
active const* const iq = _initCs.data() + radZone * _disc.strideBound[_disc.nParType] + _disc.nBoundBeforeType[parType];
399399
for (unsigned int bnd = 0; bnd < _disc.strideBound[parType]; ++bnd)
400400
simState.vecStateY[shellOffset + idxr.strideParLiquid() + bnd] = static_cast<double>(iq[bnd]);
@@ -1106,11 +1106,11 @@ void ColumnModel2D::initializeSensitivityStates(const std::vector<double*>& vecS
11061106
double* const stateYparticle = vecSensY[param] + offset;
11071107
double* const stateYparticleSolid = stateYparticle + idxr.strideParLiquid();
11081108

1109-
// Initialize c_p
1109+
// Initialize c^p
11101110
for (unsigned int comp = 0; comp < _disc.nComp; ++comp)
11111111
stateYparticle[comp] = _initCp[comp + parType * _disc.nComp + rad * _disc.nComp * _disc.nParType].getADValue(param);
11121112

1113-
// Initialize q
1113+
// Initialize c^s
11141114
for (unsigned int bnd = 0; bnd < _disc.strideBound[parType]; ++bnd)
11151115
stateYparticleSolid[bnd] = _initCs[bnd + _disc.nBoundBeforeType[parType] + _disc.strideBound[_disc.nParType] * rad].getADValue(param);
11161116
}

src/libcadet/model/ColumnModel2D.cpp

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -393,12 +393,21 @@ bool ColumnModel2D::configureModelDiscretization(IParameterProvider& paramProvid
393393
const std::string parGroup = "particle_type_" + std::string(3 - std::to_string(parType).length(), '0') + std::to_string(parType);
394394
paramProvider.pushScope(parGroup);
395395

396-
std::string particleModelName = paramProvider.getString("PARTICLE_TYPE");
396+
const bool filmDiffusion = paramProvider.getBool("HAS_FILM_DIFFUSION");
397+
const bool poreDiffusion = paramProvider.exists("HAS_PORE_DIFFUSION") ? paramProvider.getBool("HAS_PORE_DIFFUSION") : false;
398+
const bool surfaceDiffusion = paramProvider.exists("HAS_SURFACE_DIFFUSION") ? paramProvider.getBool("HAS_SURFACE_DIFFUSION") : false;
397399

398-
_particles[parType] = helper.createParticleModel(particleModelName);
400+
const std::string particleType = ParticleModel(filmDiffusion, poreDiffusion, surfaceDiffusion).getParticleTransportType();
401+
402+
_particles[parType] = helper.createParticleModel(particleType);
403+
404+
if (!_particles[parType])
405+
throw InvalidParameterException("Unknown particle model " + particleType);
406+
407+
_particles[parType] = helper.createParticleModel(particleType);
399408

400409
if (!_particles[parType])
401-
throw InvalidParameterException("Unknown particle model " + particleModelName);
410+
throw InvalidParameterException("Unknown particle model " + particleType);
402411

403412
paramProvider.popScope(); // particle_type_xxx
404413
}

src/libcadet/model/ColumnModelBuilder.cpp

Lines changed: 38 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#include "model/particle/ParticleModel.hpp"
12
#include "model/ColumnModel1D.hpp"
23
#ifdef ENABLE_2D_MODELS
34
#include "model/ColumnModel2D.hpp"
@@ -33,7 +34,17 @@ namespace model
3334

3435
paramProvider.pushScope("particle_type_000");
3536

36-
if(paramProvider.getString("PARTICLE_TYPE") == "EQUILIBRIUM_PARTICLE")
37+
bool filmDiffusion = true;
38+
39+
if (paramProvider.exists("HAS_FILM_DIFFUSION"))
40+
filmDiffusion = paramProvider.getBool("HAS_FILM_DIFFUSION");
41+
42+
const bool poreDiffusion = paramProvider.exists("HAS_PORE_DIFFUSION") ? paramProvider.getBool("HAS_PORE_DIFFUSION") : false;
43+
const bool surfaceDiffusion = paramProvider.exists("HAS_SURFACE_DIFFUSION") ? paramProvider.getBool("HAS_SURFACE_DIFFUSION") : false;
44+
45+
const std::string particleType = ParticleModel(filmDiffusion, poreDiffusion, surfaceDiffusion).getParticleTransportType();
46+
47+
if(particleType == "EQUILIBRIUM_PARTICLE")
3748
{
3849
if (discName == "DG")
3950
model = new LumpedRateModelWithoutPoresDG(uoId);
@@ -44,9 +55,9 @@ namespace model
4455
}
4556
else if (discName == "FV")
4657
{
47-
if(paramProvider.getString("PARTICLE_TYPE") == "HOMOGENEOUS_PARTICLE")
58+
if(particleType == "HOMOGENEOUS_PARTICLE")
4859
model = createAxialFVLRMP(uoId);
49-
else if (paramProvider.getString("PARTICLE_TYPE") == "GENERAL_RATE_PARTICLE")
60+
else if (particleType == "GENERAL_RATE_PARTICLE")
5061
model = createAxialFVGRM(uoId);
5162
}
5263
else
@@ -68,10 +79,19 @@ namespace model
6879
model = new ColumnModel2D(uoId);
6980
else if (discName == "FV")
7081
{
71-
if (uoType != "GENERAL_RATE_MODEL_2D")
72-
LOG(Error) << uoType + " has no FV implementation for the bulk phase, but was specified as such for unit " << uoId;
73-
else
82+
if (uoType == "GENERAL_RATE_MODEL_2D")
83+
return new GeneralRateModel2D(uoId);
84+
85+
const bool filmDiffusion = paramProvider.getBool("HAS_FILM_DIFFUSION");
86+
const bool poreDiffusion = paramProvider.exists("HAS_PORE_DIFFUSION") ? paramProvider.getBool("HAS_PORE_DIFFUSION") : false;
87+
const bool surfaceDiffusion = paramProvider.exists("HAS_SURFACE_DIFFUSION") ? paramProvider.getBool("HAS_SURFACE_DIFFUSION") : false;
88+
89+
const std::string particleType = ParticleModel(filmDiffusion, poreDiffusion, surfaceDiffusion).getParticleTransportType();
90+
91+
if (particleType == "GENERAL_RATE_PARTICLE")
7492
model = new GeneralRateModel2D(uoId);
93+
else
94+
LOG(Error) << "This particle Type (check HAS_FILM_DIFFUSION, HAS_PORE_DIFFUSION, HAS_SURFACE_DIFFUSION) is not implemented for FV discretization of the bulk phase, but was specified as such for unit " << uoId;
7595
}
7696
else
7797
LOG(Error) << "Unknown bulk discretization type " << discName << " for unit " << uoId;
@@ -112,7 +132,7 @@ namespace model
112132

113133
std::string uoType = paramProvider.getString("UNIT_TYPE");
114134

115-
if (uoType == "COLUMN_MODEL_1D")
135+
if (uoType == "RADIAL_COLUMN_MODEL_1D")
116136
{
117137
if (paramProvider.exists("particle_type_000"))
118138
{
@@ -127,17 +147,23 @@ namespace model
127147

128148
paramProvider.pushScope("particle_type_000");
129149

130-
if (paramProvider.getString("PARTICLE_TYPE") == "EQUILIBRIUM_PARTICLE")
150+
const bool filmDiffusion = paramProvider.getBool("HAS_FILM_DIFFUSION");
151+
const bool poreDiffusion = paramProvider.exists("HAS_PORE_DIFFUSION") ? paramProvider.getBool("HAS_PORE_DIFFUSION") : false;
152+
const bool surfaceDiffusion = paramProvider.exists("HAS_SURFACE_DIFFUSION") ? paramProvider.getBool("HAS_SURFACE_DIFFUSION") : false;
153+
154+
const std::string particleType = ParticleModel(filmDiffusion, poreDiffusion, surfaceDiffusion).getParticleTransportType();
155+
156+
if (particleType == "EQUILIBRIUM_PARTICLE")
131157
model = createRadialFVLRM(uoId);
132-
if (paramProvider.getString("PARTICLE_TYPE") == "HOMOGENEOUS_PARTICLE")
158+
if (particleType == "HOMOGENEOUS_PARTICLE")
133159
model = createRadialFVLRMP(uoId);
134-
else if (paramProvider.getString("PARTICLE_TYPE") == "GENERAL_RATE_PARTICLE")
160+
else if (particleType == "GENERAL_RATE_PARTICLE")
135161
model = createRadialFVGRM(uoId);
136162

137163
paramProvider.popScope();
138164
}
139165
else
140-
model = createRadialFVLRM(uoId); // LRM used for npartype = 0
166+
model = createRadialFVLRMP(uoId); // LRMP used for npartype = 0
141167
}
142168
else
143169
{
@@ -168,6 +194,7 @@ namespace model
168194
{
169195
models[ColumnModel1D::identifier()] = selectAxialFlowColumnUnitOperation;
170196
models["COLUMN_MODEL_1D"] = selectAxialFlowColumnUnitOperation;
197+
models["RADIAL_COLUMN_MODEL_1D"] = selectRadialFlowColumnUnitOperation;
171198

172199
models[ColumnModel2D::identifier()] = selectAxialFlowColumnUnitOperation;
173200
models["COLUMN_MODEL_2D"] = selectAxialFlowColumnUnitOperation;

src/libcadet/model/GeneralRateModel-InitialConditions.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,11 +178,11 @@ void GeneralRateModel<ConvDispOperator>::applyInitialCondition(const SimulationS
178178
{
179179
const unsigned int shellOffset = offset + shell * idxr.strideParShell(type);
180180

181-
// Initialize c_p
181+
// Initialize c^p
182182
for (unsigned int comp = 0; comp < _disc.nComp; ++comp)
183183
simState.vecStateY[shellOffset + comp] = static_cast<double>(_initCp[comp + _disc.nComp * type]);
184184

185-
// Initialize q
185+
// Initialize c^s
186186
active const* const iq = _initCs.data() + _disc.nBoundBeforeType[type];
187187
for (unsigned int bnd = 0; bnd < _disc.strideBound[type]; ++bnd)
188188
simState.vecStateY[shellOffset + idxr.strideParLiquid() + bnd] = static_cast<double>(iq[bnd]);
@@ -978,11 +978,11 @@ void GeneralRateModel<ConvDispOperator>::initializeSensitivityStates(const std::
978978
double* const stateYparticle = vecSensY[param] + shellOffset;
979979
double* const stateYparticleSolid = stateYparticle + idxr.strideParLiquid();
980980

981-
// Initialize c_p
981+
// Initialize c^p
982982
for (unsigned int comp = 0; comp < _disc.nComp; ++comp)
983983
stateYparticle[comp] = _initCp[comp + type * _disc.nComp].getADValue(param);
984984

985-
// Initialize q
985+
// Initialize c^s
986986
for (unsigned int bnd = 0; bnd < _disc.strideBound[type]; ++bnd)
987987
stateYparticleSolid[bnd] = _initCs[bnd + _disc.nBoundBeforeType[type]].getADValue(param);
988988
}

src/libcadet/model/GeneralRateModel2D-InitialConditions.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -389,11 +389,11 @@ void GeneralRateModel2D::applyInitialCondition(const SimulationState& simState)
389389
{
390390
const unsigned int shellOffset = offset + shell * idxr.strideParShell(type);
391391

392-
// Initialize c_p
392+
// Initialize c^p
393393
for (unsigned int comp = 0; comp < _disc.nComp; ++comp)
394394
simState.vecStateY[shellOffset + comp] = static_cast<double>(_initCp[comp + _disc.nComp * type + rad * _disc.nComp * _disc.nParType]);
395395

396-
// Initialize q
396+
// Initialize c^s
397397
active const* const iq = _initCs.data() + rad * _disc.strideBound[_disc.nParType] + _disc.nBoundBeforeType[type];
398398
for (unsigned int bnd = 0; bnd < _disc.strideBound[type]; ++bnd)
399399
simState.vecStateY[shellOffset + idxr.strideParLiquid() + bnd] = static_cast<double>(iq[bnd]);
@@ -1195,11 +1195,11 @@ void GeneralRateModel2D::initializeSensitivityStates(const std::vector<double*>&
11951195
double* const stateYparticle = vecSensY[param] + shellOffset;
11961196
double* const stateYparticleSolid = stateYparticle + idxr.strideParLiquid();
11971197

1198-
// Initialize c_p
1198+
// Initialize c^p
11991199
for (unsigned int comp = 0; comp < _disc.nComp; ++comp)
12001200
stateYparticle[comp] = _initCp[comp + type * _disc.nComp + rad * _disc.nComp].getADValue(param);
12011201

1202-
// Initialize q
1202+
// Initialize c^s
12031203
for (unsigned int bnd = 0; bnd < _disc.strideBound[type]; ++bnd)
12041204
stateYparticleSolid[bnd] = _initCs[bnd + _disc.nBoundBeforeType[type] + _disc.strideBound[_disc.nParType] * rad].getADValue(param);
12051205
}

src/libcadet/model/LumpedRateModelWithPores-InitialConditions.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -173,11 +173,11 @@ void LumpedRateModelWithPores<ConvDispOperator>::applyInitialCondition(const Sim
173173
{
174174
const unsigned int offset = idxr.offsetCp(ParticleTypeIndex{type}, ParticleIndex{col});
175175

176-
// Initialize c_p
176+
// Initialize c^p
177177
for (unsigned int comp = 0; comp < _disc.nComp; ++comp)
178178
simState.vecStateY[offset + comp] = static_cast<double>(_initCp[comp + _disc.nComp * type]);
179179

180-
// Initialize q
180+
// Initialize c^s
181181
active const* const iq = _initCs.data() + _disc.nBoundBeforeType[type];
182182
for (unsigned int bnd = 0; bnd < _disc.strideBound[type]; ++bnd)
183183
simState.vecStateY[offset + idxr.strideParLiquid() + bnd] = static_cast<double>(iq[bnd]);
@@ -927,11 +927,11 @@ void LumpedRateModelWithPores<ConvDispOperator>::initializeSensitivityStates(con
927927
double* const stateYparticle = vecSensY[param] + offset;
928928
double* const stateYparticleSolid = stateYparticle + idxr.strideParLiquid();
929929

930-
// Initialize c_p
930+
// Initialize c^p
931931
for (unsigned int comp = 0; comp < _disc.nComp; ++comp)
932932
stateYparticle[comp] = _initCp[comp + _disc.nComp * type].getADValue(param);
933933

934-
// Initialize q
934+
// Initialize c^s
935935
for (unsigned int bnd = 0; bnd < _disc.strideBound[type]; ++bnd)
936936
stateYparticleSolid[bnd] = _initCs[bnd + _disc.nBoundBeforeType[type]].getADValue(param);
937937
}

src/libcadet/model/LumpedRateModelWithoutPores.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -166,8 +166,13 @@ bool LumpedRateModelWithoutPores<ConvDispOperator>::configureModelDiscretization
166166

167167
paramProvider.pushScope("particle_type_000");
168168

169-
if ((paramProvider.exists("PARTICLE_TYPE") ? paramProvider.getString("PARTICLE_TYPE") : "EQUILIBRIUM_PARTICLE") != "EQUILIBRIUM_PARTICLE")
170-
throw InvalidParameterException("Unit type was specified as LUMPED_RATE_MODEL_WITHOUT_PORES, which is inconsistent with specified particle model " + paramProvider.getString("PARTICLE_TYPE"));
169+
const bool filmDiffusion = paramProvider.getBool("HAS_FILM_DIFFUSION");
170+
const bool poreDiffusion = paramProvider.exists("HAS_PORE_DIFFUSION") ? paramProvider.getBool("HAS_PORE_DIFFUSION") : false;
171+
const bool surfaceDiffusion = paramProvider.exists("HAS_SURFACE_DIFFUSION") ? paramProvider.getBool("HAS_SURFACE_DIFFUSION") : false;
172+
const std::string particleType = ParticleModel(filmDiffusion, poreDiffusion, surfaceDiffusion).getParticleTransportType();
173+
174+
if (particleType != "EQUILIBRIUM_PARTICLE")
175+
throw InvalidParameterException("Unit type was specified as LUMPED_RATE_MODEL_WITHOUT_PORES, which is inconsistent with specified particle model " + particleType);
171176

172177
std::vector<int> nBound;
173178
nBound = paramProvider.getIntArray("NBOUND");
@@ -1033,7 +1038,7 @@ void LumpedRateModelWithoutPores<ConvDispOperator>::applyInitialCondition(const
10331038
for (unsigned comp = 0; comp < _disc.nComp; ++comp)
10341039
stateYbulk[localOffset + comp * idxr.strideColComp()] = static_cast<double>(_initC[comp]);
10351040

1036-
// Initialize q
1041+
// Initialize c^s
10371042
for (unsigned int bnd = 0; bnd < _disc.strideBound; ++bnd)
10381043
stateYbulk[localOffset + idxr.strideColLiquid() + bnd] = static_cast<double>(_initCs[bnd]);
10391044
}
@@ -1606,7 +1611,7 @@ void LumpedRateModelWithoutPores<ConvDispOperator>::initializeSensitivityStates(
16061611
for (unsigned comp = 0; comp < _disc.nComp; ++comp)
16071612
stateYbulk[localOffset + comp * idxr.strideColComp()] = _initC[comp].getADValue(param);
16081613

1609-
// Initialize q
1614+
// Initialize c^s
16101615
for (unsigned int bnd = 0; bnd < _disc.strideBound; ++bnd)
16111616
stateYbulk[localOffset + idxr.strideColLiquid() + bnd] = _initCs[bnd].getADValue(param);
16121617
}

src/libcadet/model/LumpedRateModelWithoutPores.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#include "UnitOperationBase.hpp"
2222
#include "cadet/SolutionExporter.hpp"
2323
#include "model/parts/ConvectionDispersionOperator.hpp"
24+
#include "model/particle/ParticleModel.hpp"
2425
#include "AutoDiff.hpp"
2526
#include "linalg/SparseMatrix.hpp"
2627
#include "linalg/BandMatrix.hpp"

0 commit comments

Comments
 (0)