@@ -53,137 +53,6 @@ namespace model
5353 delete _parDiffOp;
5454 }
5555
56- bool GeneralRateParticle::configureModelDiscretization_old (IParameterProvider& paramProvider, const IConfigHelper& helper, const int nComp, const int parTypeIdx, const int nParType, const int strideBulkComp)
57- {
58- _parTypeIdx = parTypeIdx;
59- _nComp = nComp;
60-
61- // ==== Construct and configure particle transport and discretization
62-
63- paramProvider.pushScope (" discretization" );
64-
65- if (paramProvider.exists (" PAR_SPATIAL_METHOD" ))
66- {
67- const std::string parSpatialMethod = paramProvider.getString (" PAR_SPATIAL_METHOD" );
68- if (parSpatialMethod != " DG" )
69- throw InvalidParameterException (" Unsupported PAR_SPATIAL_METHOD '" + parSpatialMethod + " ' for GeneralRateParticle. Only 'DG' is supported." );
70-
71- _parDiffOp = new parts::ParticleDiffusionOperatorDG ();
72- }
73- else
74- _parDiffOp = new parts::ParticleDiffusionOperatorDG ();
75-
76- paramProvider.popScope ();
77-
78- const bool particleTransportConfigSuccess = _parDiffOp->configureModelDiscretization_old (paramProvider, helper, nComp, parTypeIdx, nParType, strideBulkComp);
79-
80- _nBound = _parDiffOp->nBound ();
81-
82- // ==== Construct and configure binding model
83- _binding = nullptr ;
84- std::vector<std::string> bindModelNames = { " NONE" };
85- if (paramProvider.exists (" ADSORPTION_MODEL" ))
86- bindModelNames = paramProvider.getStringArray (" ADSORPTION_MODEL" );
87-
88- if (paramProvider.exists (" ADSORPTION_MODEL_MULTIPLEX" ))
89- _bindingParDep = (paramProvider.getInt (" ADSORPTION_MODEL_MULTIPLEX" ) == 1 );
90- else
91- {
92- // Infer multiplex mode
93- _bindingParDep = (bindModelNames.size () == 1 );
94- }
95-
96- if (!_bindingParDep && (bindModelNames.size () < nParType))
97- throw InvalidParameterException (" Field ADSORPTION_MODEL contains too few elements (" + std::to_string (nParType) + " required)" );
98- else if (_bindingParDep && (bindModelNames.size () != 1 ))
99- throw InvalidParameterException (" Field ADSORPTION_MODEL requires (only) 1 element" );
100-
101- bool bindingConfSuccess = true ;
102-
103- _binding = helper.createBindingModel (bindModelNames[_bindingParDep ? 0 : _parTypeIdx]);
104- if (!_binding)
105- throw InvalidParameterException (" Unknown binding model " + bindModelNames[_bindingParDep ? 0 : _parTypeIdx]);
106-
107- MultiplexedScopeSelector scopeGuard (paramProvider, " adsorption" , _bindingParDep, _parTypeIdx, nParType == 1 , _binding->usesParamProviderInDiscretizationConfig ());
108- bindingConfSuccess = _binding->configureModelDiscretization (paramProvider, _nComp, _nBound.get (), _parDiffOp->offsetBoundComp ());
109-
110- // ==== Construct and configure dynamic reaction model
111- bool reactionConfSuccess = true ;
112-
113- _dynReaction = nullptr ;
114-
115- if (paramProvider.exists (" REACTION_MODEL_PARTICLES" ))
116- {
117- const std::vector<std::string> dynReactModelNames = paramProvider.getStringArray (" REACTION_MODEL_PARTICLES" );
118-
119- if (paramProvider.exists (" REACTION_MODEL_PARTICLES_MULTIPLEX" ))
120- _reactionParDep = (paramProvider.getInt (" REACTION_MODEL_PARTICLES_MULTIPLEX" ) == 1 );
121- else
122- {
123- // Infer multiplex mode
124- _reactionParDep = (dynReactModelNames.size () == 1 );
125- }
126-
127- if (!_reactionParDep && (dynReactModelNames.size () < nParType))
128- throw InvalidParameterException (" Field REACTION_MODEL_PARTICLES contains too few elements (" + std::to_string (nParType) + " required)" );
129- else if (_reactionParDep && (dynReactModelNames.size () != 1 ))
130- throw InvalidParameterException (" Field REACTION_MODEL_PARTICLES requires (only) 1 element" );
131-
132- _dynReaction = helper.createDynamicReactionModel (dynReactModelNames[_reactionParDep ? 0 : _parTypeIdx]);
133-
134- if (!_dynReaction)
135- throw InvalidParameterException (" Unknown dynamic reaction model " + dynReactModelNames[_reactionParDep ? 0 : _parTypeIdx]);
136-
137- MultiplexedScopeSelector scopeGuard (paramProvider, " reaction_particle" , _reactionParDep, _parTypeIdx, nParType == 1 , _dynReaction->usesParamProviderInDiscretizationConfig ());
138- reactionConfSuccess = _dynReaction->configureModelDiscretization (paramProvider, _nComp, _nBound.get (), _parDiffOp->offsetBoundComp ()) && reactionConfSuccess;
139- }
140-
141- return particleTransportConfigSuccess && bindingConfSuccess && reactionConfSuccess;
142- }
143-
144- bool GeneralRateParticle::configure_old (UnitOpIdx unitOpIdx, IParameterProvider& paramProvider, std::unordered_map<ParameterId, active*>& parameters, const int nParType, const unsigned int * nBoundBeforeType, const int nTotalBound)
145- {
146- // Reconfigure binding model
147- bool bindingConfSuccess = true ;
148- if (_binding)
149- {
150- if (_binding->requiresConfiguration ())
151- {
152- if (_bindingParDep)
153- {
154- MultiplexedScopeSelector scopeGuard (paramProvider, " adsorption" , true );
155- bindingConfSuccess = _binding->configure (paramProvider, unitOpIdx, ParTypeIndep);
156- }
157- else
158- {
159- MultiplexedScopeSelector scopeGuard (paramProvider, " adsorption" , _parTypeIdx, nParType == 1 , true );
160- bindingConfSuccess = _binding->configure (paramProvider, unitOpIdx, _parTypeIdx);
161- }
162- }
163- }
164-
165- // Reconfigure reaction model
166- bool dynReactionConfSuccess = true ;
167- if (_dynReaction && _dynReaction->requiresConfiguration ())
168- {
169- if (_reactionParDep)
170- {
171- MultiplexedScopeSelector scopeGuard (paramProvider, " reaction_particle" , true );
172- dynReactionConfSuccess = _dynReaction->configure (paramProvider, unitOpIdx, ParTypeIndep) && dynReactionConfSuccess;
173- }
174- else
175- {
176- MultiplexedScopeSelector scopeGuard (paramProvider, " reaction_particle" , _parTypeIdx, nParType == 1 , true );
177- dynReactionConfSuccess = _dynReaction->configure (paramProvider, unitOpIdx, _parTypeIdx) && dynReactionConfSuccess;
178- }
179- }
180-
181- // Reconfigure particle transport and discretization
182- const bool parTransportConfigSuccess = _parDiffOp->configure_old (unitOpIdx, paramProvider, parameters, nParType, nBoundBeforeType, nTotalBound, _binding->reactionQuasiStationarity (), _binding->hasDynamicReactions ());
183-
184- return parTransportConfigSuccess && bindingConfSuccess && dynReactionConfSuccess;
185- }
186-
18756 bool GeneralRateParticle::configureModelDiscretization (IParameterProvider& paramProvider, const IConfigHelper& helper, const int nComp, const int parTypeIdx, const int nParType, const int strideBulkComp)
18857 {
18958 _parTypeIdx = parTypeIdx;
0 commit comments