OpenLB 1.7
Loading...
Searching...
No Matches
Namespaces | Classes | Enumerations | Functions
olb::opti Namespace Reference

All optimization code is contained in this namespace. More...

Namespaces

namespace  projection
 

Classes

class  AdjointLbSolverBase
 Base class for solvers that solve both primal and dual problems. More...
 
class  BlockDdifferenceObjectiveDf3D
 functor to compute 0.5*(f-f_wanted)^2 on a lattice More...
 
class  BlockDrelativeDifferenceObjectiveComponentDf3D
 functor to compute 0.5*(f[extractDim]-f_wanted[0])^2/f_wanted^2 on a lattice More...
 
class  BlockDrelativeDifferenceObjectiveDf3D
 functor to compute 0.5(f-f_wanted)^2/f_wanted^2 on a lattice More...
 
class  BlockLatticeDphysDissipationDf3D
 functor to get the pointwise dual dissipation density on local lattices, if globIC is not on the local processor, the returned vector is empty More...
 
class  BlockLatticeDphysVelocityDf3D
 functor to get pointwise dual velocity density on local lattices, if globIC is not on the local processor, the returned vector is empty More...
 
class  BlockLatticeSerialDataF
 
class  Controller
 
class  DdifferenceObjectiveDf3D
 functor to compute 0.5*(f-f_wanted)^2 on a lattice More...
 
class  DifferenceObjective3D
 functor to compute 0.5*L2Norm(f-f_wanted)^2 on a lattice More...
 
class  DrelativeDifferenceObjectiveComponentDf3D
 functor to compute 0.5*(f[extractDim]-f_wanted[0])^2/f_wanted^2 on a lattice More...
 
class  DrelativeDifferenceObjectiveDf3D
 functor to compute 0.5(f-f_wanted)^2/f_wanted^2 on a lattice More...
 
class  DrelativeDifferenceObjectiveDf3D_Lattice
 functor to compute 0.5(f-f_wanted)^2/f_wanted^2 on a lattice More...
 
struct  DualBoundaryHelpers
 All boundary helper functions are inside this structure. More...
 
class  DualController
 
class  DualForcedBGKdynamics
 Implementation of the dual BGK collision step with external force. More...
 
class  DualForcedMRTdynamics
 Implementation of the dual MRT collision step with external force. More...
 
struct  dualLbDynamicsHelpers
 All helper functions are inside this structure. More...
 
struct  dualLbExternalHelpers
 Helper functions for dynamics that access external field. More...
 
struct  dualLbHelpers
 This structure forwards the calls to the appropriate helper class. More...
 
struct  dualLbLatticeHelpers
 Helper functions with full-lattice access. More...
 
class  DualPorousBGKdynamics
 Implementation of the dual BGK collision step with external force. More...
 
class  GeometrySerializer
 This class serializes the cells inside the geometry. More...
 
class  OptiCase
 Abstract base class for optimization tasks. More...
 
class  OptiCaseAD
 Derivatives are computed with automatic differentiation. More...
 
class  OptiCaseAdForSolver
 Interface for OptiCaseAD that performs Lattice-Boltzmann-Solver construction itself (from xml file) More...
 
class  OptiCaseAnalytical
 Gradient is just passed as a function (and not computed by an own routine) More...
 
class  OptiCaseCDQ
 Gradient computation with central difference quotients. More...
 
class  OptiCaseDQ
 
class  OptiCaseDual
 This class implements the evaluation of the goal functional and its derivatives by using adjoint LBM. More...
 
class  OptiCaseFDQ
 Gradient computation with forward difference quotients. More...
 
class  Optimizer
 Interface for the use of various optimization algorithms. More...
 
class  OptimizerBarzilaiBorwein
 Optimization algorithm: BarzilaiBorwein. More...
 
class  OptimizerLBFGS
 Optimization algorithm: LBFGS. More...
 
class  OptimizerLineSearch
 Optimization algorithm: LineSearch. More...
 
class  OptimizerSteepestDescent
 Optimization algorithm: SteepestDescent. More...
 
class  RelativeDifferenceObjective3D
 functor to compute 0.5*L2Norm(f-f_wanted)^2/L2Norm(f_wanted)^2 on a lattice More...
 
class  SimpleGeometrySerializer
 This class serializes the cells inside the geometry. More...
 
class  SparseGeometrySerializer
 This class serializes the cells which are marked by indicator. More...
 
class  SuperLatticeDphysDissipationDf3D
 functor to get pointwise dual dissipation density on local lattices, if globIC is not on the local processor, the returned vector is empty More...
 
class  SuperLatticeDphysVelocityDf3D
 functor to get pointwise dual velocity density on local lattices, if globIC is not on the local processor, the returned vector is empty More...
 
class  SuperLatticeSerialDataF
 A data field whose values are managed by a controller. More...
 

Enumerations

enum class  SolverMode : int { Reference , Primal , Dual }
 Tags different simulation modes: compute either reference simulation or perform primal or dual (adjoint) simulation. More...
 
enum  ControlType { ForceControl , PorosityControl }
 
enum  OptimizerLogType {
  control , derivative , value , error ,
  norm_derivative
}
 
enum  StartValueType { Control , ProjectedControl , Porosity , Permeability }
 

Functions

template<typename S , typename C >
 OptiCaseAnalytical (std::function< S(const C &)>, std::function< void(const C &, C &)>) -> OptiCaseAnalytical< S, C >
 
template<typename S , typename C >
 OptiCaseAnalytical (std::function< S(const C &)>, std::function< void(const C &, C &)>, std::function< void(void)>) -> OptiCaseAnalytical< S, C >
 
template<typename S , typename C >
 OptiCaseFDQ (std::function< S(const C &)>, std::function< void(void)>) -> OptiCaseFDQ< S, C >
 
template<typename S , typename C >
 OptiCaseFDQ (std::function< S(const C &)>, S, std::function< void(void)>) -> OptiCaseFDQ< S, C >
 
template<typename S , typename C >
 OptiCaseFDQ (std::function< S(const C &, unsigned)>, std::function< void(void)>) -> OptiCaseFDQ< S, C >
 
template<typename S , typename C >
 OptiCaseFDQ (std::function< S(const C &, unsigned)>, S, std::function< void(void)>) -> OptiCaseFDQ< S, C >
 
template<typename S , typename C >
 OptiCaseFDQ (std::function< S(const C &)>) -> OptiCaseFDQ< S, C >
 
template<typename S , typename C >
 OptiCaseFDQ (std::function< S(const C &)>, S) -> OptiCaseFDQ< S, C >
 
template<typename S , typename C >
 OptiCaseFDQ (std::function< S(const C &, unsigned)>) -> OptiCaseFDQ< S, C >
 
template<typename S , typename C >
 OptiCaseFDQ (std::function< S(const C &, unsigned)>, S) -> OptiCaseFDQ< S, C >
 
template<typename S , typename C >
 OptiCaseCDQ (std::function< S(const C &)>, std::function< void(void)>) -> OptiCaseCDQ< S, C >
 
template<typename S , typename C >
 OptiCaseCDQ (std::function< S(const C &)>, S, std::function< void(void)>) -> OptiCaseCDQ< S, C >
 
template<typename S , typename C >
 OptiCaseCDQ (std::function< S(const C &, unsigned)>, std::function< void(void)>) -> OptiCaseCDQ< S, C >
 
template<typename S , typename C >
 OptiCaseCDQ (std::function< S(const C &, unsigned)>, S, std::function< void(void)>) -> OptiCaseCDQ< S, C >
 
template<typename S , typename C >
 OptiCaseCDQ (std::function< S(const C &)>) -> OptiCaseCDQ< S, C >
 
template<typename S , typename C >
 OptiCaseCDQ (std::function< S(const C &)>, S) -> OptiCaseCDQ< S, C >
 
template<typename S , typename C >
 OptiCaseCDQ (std::function< S(const C &, unsigned)>) -> OptiCaseCDQ< S, C >
 
template<typename S , typename C >
 OptiCaseCDQ (std::function< S(const C &, unsigned)>, S) -> OptiCaseCDQ< S, C >
 
template<typename S , typename T , template< typename > typename SOLVER>
 OptiCaseAdForSolver (std::shared_ptr< SOLVER< S > >, std::shared_ptr< SOLVER< T > >) -> OptiCaseAdForSolver< S, T::dim, SOLVER, util::StdVector >
 
void getGnuplotTagsFromString (std::string gplotAnalysisString, std::vector< OptimizerLogType > &gplotAnalysis)
 the gplotAnalysisString is gained from the xml file and the function than separates and prepares it to be used in the constructor
 
template<typename S , typename C = std::vector<S>>
OptimizerBarzilaiBorwein< S, C > * createOptimizerBarzilaiBorwein (XMLreader const &params, std::size_t dimCtrl)
 Creator Function for Barzilai-Borwein.
 
template<typename S , typename C = std::vector<S>>
OptimizerLBFGS< S, C > * createOptimizerLBFGS (XMLreader const &params, std::size_t dimCtrl)
 Creator Function for LBFGS.
 
template<typename S , typename C = std::vector<S>>
OptimizerSteepestDescent< S, C > * createOptimizerSteepestDescent (XMLreader const &params, std::size_t dimCtrl)
 Creator Function for Steepest Decent.
 
template<typename S , unsigned dim>
int getMaterialGlobally (SuperGeometry< S, dim > &sGeometry, LatticeR< dim+1 > latticeR)
 Helper that gives global access to material numbers.
 

Detailed Description

All optimization code is contained in this namespace.

Enumeration Type Documentation

◆ ControlType

Enumerator
ForceControl 
PorosityControl 

Definition at line 44 of file optiCaseDual.h.

◆ OptimizerLogType

Enumerator
control 
derivative 
value 
error 
norm_derivative 

Definition at line 46 of file optimizer.h.

◆ SolverMode

enum class olb::opti::SolverMode : int
strong

Tags different simulation modes: compute either reference simulation or perform primal or dual (adjoint) simulation.

Enumerator
Reference 
Primal 
Dual 

Definition at line 39 of file adjointLbSolver.h.

◆ StartValueType

Enumerator
Control 
ProjectedControl 
Porosity 
Permeability 

Definition at line 42 of file projection.h.

Function Documentation

◆ createOptimizerBarzilaiBorwein()

template<typename S , typename C = std::vector<S>>
OptimizerBarzilaiBorwein< S, C > * olb::opti::createOptimizerBarzilaiBorwein ( XMLreader const & params,
std::size_t dimCtrl )

Creator Function for Barzilai-Borwein.

Definition at line 181 of file optimizerBarzilaiBorwein.h.

182{
183 OstreamManager clout(std::cout,"createOptimizerBarzilaiBorwein");
184
185 // create variables with default values
186 int maxIt = 100;
187
188 S controlEps = S(0);
189 S eps = S(1.e-10);
190
191 S lambda = 1.; //starting lambda for steepest descent step (it==0)
192 int maxStepAttempts = 100;
193 std::string stepCondition = "None";
194
195 bool verboseOn=true;
196 std::string fname = "control.dat";
197 std::string logFileName = "log.txt";
198
199 bool vectorBounds = false;
200 bool withUpperBound = false;
201 S upperBound = S();
202 bool withLowerBound = false;
203 S lowerBound = S();
204
205 std::vector<OptimizerLogType> gplotAnalysis = {};
206 std::string gplotAnalysisString = "";
207
208 // Read Values from XML File
209 params.readOrWarn<int>("Optimization", "MaxIter", "", maxIt);
210
211 params.readOrWarn<S>("Optimization", "Tolerance", "", eps);
212 params.readOrWarn<S>("Optimization", "ControlTolerance", "", controlEps);
213 params.readOrWarn<S>("Optimization", "Lambda", "", lambda);
214 params.readOrWarn<int>("Optimization", "MaxStepAttempts", "", maxStepAttempts);
215 params.readOrWarn<std::string>("Optimization", "StepCondition", "", stepCondition);
216
217 params.readOrWarn<bool>("Optimization", "Verbose", "", verboseOn);
218 params.readOrWarn<std::string>("Optimization", "InputFileName", "", fname);
219 params.readOrWarn<std::string>("Optimization", "LogFileName", "", logFileName);
220
221 params.readOrWarn<bool>("Optimization", "VectorBounds", "", vectorBounds);
222 if ( params.readOrWarn<S>("Optimization", "UpperBound", "", upperBound, false, false) ) {
223 withUpperBound = true;
224 }
225 if ( params.readOrWarn<S>("Optimization", "LowerBound", "", lowerBound, false, false) ) {
226 withLowerBound = true;
227 }
228
229 // get the parameters for the gnuplot Analysis from the xml file from the VisualizationGnuplot area
230 params.readOrWarn<std::string>("Optimization", "VisualizationGnuplot", "VisualizedParameters", "", gplotAnalysisString, false, false);
231 // transform the data from the xml file to the enums needed for continueing
232 getGnuplotTagsFromString(gplotAnalysisString, gplotAnalysis);
233
234 // Create Optimizer Object
235 return new OptimizerBarzilaiBorwein<S,C>(dimCtrl, eps, maxIt, lambda, maxStepAttempts, stepCondition,
236 verboseOn, fname, logFileName, withUpperBound, upperBound, withLowerBound, lowerBound,
237 vectorBounds, controlEps, gplotAnalysis);
238}
class for marking output with some text
void getGnuplotTagsFromString(std::string gplotAnalysisString, std::vector< OptimizerLogType > &gplotAnalysis)
the gplotAnalysisString is gained from the xml file and the function than separates and prepares it t...
Definition optimizer.hh:236

References getGnuplotTagsFromString(), and olb::XMLreader::readOrWarn().

+ Here is the call graph for this function:

◆ createOptimizerLBFGS()

template<typename S , typename C = std::vector<S>>
OptimizerLBFGS< S, C > * olb::opti::createOptimizerLBFGS ( XMLreader const & params,
std::size_t dimCtrl )

Creator Function for LBFGS.

Definition at line 263 of file optimizerLBFGS.h.

264{
265 OstreamManager clout(std::cout, "createOptimizerLBFGS");
266
267 // create variables with default values
268 int maxIt = 100;
269 int l = 20;
270 S lambda = 1.; //starting lambda for steepest descent step (it==0)
271 int maxStepAttempts = 100;
272 std::string stepCondition = "StrongWolfe";
273
274 //S controlEps = S(std::numeric_limits<double>::epsilon() );
275 S controlEps = S(0);
276 S eps = S(1.e-10);
277 S startCoefH = S(1e-4);
278
279 bool verboseOn=true;
280 std::string fname = "control.dat";
281 std::string logFileName = "log.txt";
282 bool vectorBounds = false;
283 bool withUpperBound = false;
284 S upperBound = S();
285 bool withLowerBound = false;
286 S lowerBound = S();
287 bool failOnMaxIter = true;
288
289 std::vector<OptimizerLogType> gplotAnalysis = {};
290 std::string gplotAnalysisString = "";
291
292 // Read Values from XML File from area "Optimization"
293 params.readOrWarn<int>("Optimization", "MaxIter", "", maxIt);
294 params.readOrWarn<int>("Optimization", "L", "", l);
295 params.readOrWarn<S>("Optimization", "Lambda", "", lambda);
296 params.readOrWarn<int>("Optimization", "MaxStepAttempts", "", maxStepAttempts);
297 params.readOrWarn<std::string>("Optimization", "StepCondition", "", stepCondition);
298
299 params.readOrWarn<S>("Optimization", "Tolerance", "", eps);
300 params.readOrWarn<S>("Optimization", "ControlTolerance", "", controlEps);
301 params.readOrWarn<S>("Optimization", "StartCoefH", "", startCoefH);
302 params.readOrWarn<bool>("Optimization", "FailOnMaxIter", "", failOnMaxIter);
303 params.readOrWarn<bool>("Optimization", "Verbose", "", verboseOn);
304 params.readOrWarn<std::string>("Optimization", "InputFileName", "", fname);
305 params.readOrWarn<std::string>("Optimization", "LogFileName", "", logFileName);
306
307 params.readOrWarn<bool>("Optimization", "VectorBounds", "", vectorBounds);
308 if ( params.readOrWarn<S>("Optimization", "UpperBound", "", upperBound, false, false) ) {
309 withUpperBound = true;
310 }
311
312 if ( params.readOrWarn<S>("Optimization", "LowerBound", "", lowerBound, false, false) ) {
313 withLowerBound = true;
314 }
315
316 // get the parameters for the gnuplot Analysis from the xml file from the VisualizationGnuplot area
317 params.readOrWarn<std::string>("Optimization",
318 "VisualizationGnuplot",
319 "VisualizedParameters", gplotAnalysisString, false, false);
320 // transform the data from the xml file to the enums needed for continueing
321 getGnuplotTagsFromString(gplotAnalysisString, gplotAnalysis);
322
323 clout << "Creating optimizer ..." << std::endl;
324 // Create Optimizer Object
325 return new OptimizerLBFGS<S,C>(dimCtrl, eps, maxIt, lambda, maxStepAttempts, stepCondition, l, startCoefH,
326 verboseOn, fname, logFileName, withUpperBound, upperBound, withLowerBound, lowerBound, vectorBounds,
327 controlEps, failOnMaxIter, gplotAnalysis);
328}

References getGnuplotTagsFromString(), and olb::XMLreader::readOrWarn().

+ Here is the call graph for this function:

◆ createOptimizerSteepestDescent()

template<typename S , typename C = std::vector<S>>
OptimizerSteepestDescent< S, C > * olb::opti::createOptimizerSteepestDescent ( XMLreader const & params,
std::size_t dimCtrl )

Creator Function for Steepest Decent.

Definition at line 93 of file optimizerSteepestDecent.h.

94{
95 OstreamManager clout(std::cout,"createOptimizerSteepestDescent");
96
97 // create variables with default values
98 int maxIt = 100;
99
100 //S controlEps = S(std::numeric_limits<double>::epsilon() );
101 S controlEps = S(0);
102 S eps = S(1.e-10);
103
104 S lambda = 1.;
105 int maxStepAttempts = 100;
106 std::string stepCondition = "Armijo";
107
108 bool vectorBounds = false;
109 bool verboseOn=true;
110 std::string fname = "control.dat";
111 std::string logFileName = "log.txt";
112
113 bool withUpperBound = false;
114 S upperBound = S();
115 bool withLowerBound = false;
116 S lowerBound = S();
117
118 std::vector<OptimizerLogType> gplotAnalysis = {};
119 std::string gplotAnalysisString = "";
120
121 // Read Values from XML File from area "Optimization"
122 params.readOrWarn<int>("Optimization", "MaxIter", "", maxIt);
123
124 params.readOrWarn<S>("Optimization", "Tolerance", "", eps);
125 params.readOrWarn<S>("Optimization", "ControlTolerance", "", controlEps);
126 params.readOrWarn<S>("Optimization", "Lambda", "", lambda);
127 params.readOrWarn<int>("Optimization", "MaxStepAttempts", "", maxStepAttempts);
128 params.readOrWarn<std::string>("Optimization", "StepCondition", "", stepCondition);
129
130 params.readOrWarn<bool>("Optimization", "Verbose", "", verboseOn);
131 params.readOrWarn<std::string>("Optimization", "InputFileName", "", fname);
132 params.readOrWarn<std::string>("Optimization", "LogFileName", "", logFileName);
133
134 params.readOrWarn<bool>("Optimization", "VectorBounds", "", vectorBounds);
135 if ( params.readOrWarn<S>("Optimization", "UpperBound", "", upperBound, false, false) ) {
136 withUpperBound = true;
137 }
138
139 if ( params.readOrWarn<S>("Optimization", "LowerBound", "", lowerBound, false, false) ) {
140 withLowerBound = true;
141 }
142
143 // get the parameters for the gnuplot Analysis from the xml file from the VisualizationGnuplot area
144 params.readOrWarn<std::string>("Optimization", "VisualizationGnuplot", "VisualizedParameters", "", gplotAnalysisString, false, false);
145 // transform the data from the xml file to the enums needed for continueing
146 getGnuplotTagsFromString(gplotAnalysisString, gplotAnalysis);
147
148 // Create Optimizer Object
149 return new OptimizerSteepestDescent<S,C>(dimCtrl, eps, maxIt, lambda, maxStepAttempts, stepCondition,
150 verboseOn, fname, logFileName, withUpperBound, upperBound, withLowerBound, lowerBound,
151 vectorBounds, controlEps, gplotAnalysis);
152}

References getGnuplotTagsFromString(), and olb::XMLreader::readOrWarn().

+ Here is the call graph for this function:

◆ getGnuplotTagsFromString()

void olb::opti::getGnuplotTagsFromString ( std::string gplotAnalysisString,
std::vector< OptimizerLogType > & gplotAnalysis )

the gplotAnalysisString is gained from the xml file and the function than separates and prepares it to be used in the constructor

Definition at line 236 of file optimizer.hh.

237 {
238 // part the string to get the enum vector
239 std::vector<std::string> gplotAnalysisStringVector;
240 std::istringstream iss(gplotAnalysisString);
241 std::copy(std::istream_iterator<std::string>(iss),
242 std::istream_iterator<std::string>(),
243 std::back_inserter(gplotAnalysisStringVector));
244
245 for(unsigned i = 0; i < gplotAnalysisStringVector.size(); i++){
246 if(gplotAnalysisStringVector[i] == "VALUE"){
247 gplotAnalysis.push_back(OptimizerLogType::value);
248 } else if(gplotAnalysisStringVector[i] == "CONTROL"){
249 gplotAnalysis.push_back(OptimizerLogType::control);
250 } else if(gplotAnalysisStringVector[i] == "DERIVATIVE"){
251 gplotAnalysis.push_back(OptimizerLogType::derivative);
252 } else if(gplotAnalysisStringVector[i] == "ERROR"){
253 gplotAnalysis.push_back(OptimizerLogType::error);
254 } else if(gplotAnalysisStringVector[i] == "NORM_DERIVATIVE"){
255 gplotAnalysis.push_back(OptimizerLogType::norm_derivative);
256 }
257 }
258}

References control, derivative, error, norm_derivative, and value.

+ Here is the caller graph for this function:

◆ getMaterialGlobally()

template<typename S , unsigned dim>
int olb::opti::getMaterialGlobally ( SuperGeometry< S, dim > & sGeometry,
LatticeR< dim+1 > latticeR )

Helper that gives global access to material numbers.

Definition at line 298 of file serialization.h.

299{
300 int material = 0;
301 if ( sGeometry.getLoadBalancer().rank(latticeR[0]) == singleton::mpi().getRank() ) {
302 material = sGeometry.get(latticeR);
303 }
304#ifdef PARALLEL_MODE_MPI
305 singleton::mpi().bCast(&material, 1, sGeometry.getLoadBalancer().rank(latticeR[0]));
306#endif
307 return material;
308}
int get(int iCglob, LatticeR< D > latticeR) const
Read only access to the material numbers, error handling: returns 0 if data is not available.
LoadBalancer< T > & getLoadBalancer()
Read and write access to the load balancer.

References olb::singleton::MpiManager::bCast(), olb::SuperGeometry< T, D >::get(), olb::SuperStructure< T, D >::getLoadBalancer(), olb::singleton::MpiManager::getRank(), and olb::singleton::mpi().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ OptiCaseAdForSolver()

template<typename S , typename T , template< typename > typename SOLVER>
olb::opti::OptiCaseAdForSolver ( std::shared_ptr< SOLVER< S > > ,
std::shared_ptr< SOLVER< T > >  ) -> OptiCaseAdForSolver< S, T::dim, SOLVER, util::StdVector >

◆ OptiCaseAnalytical() [1/2]

template<typename S , typename C >
olb::opti::OptiCaseAnalytical ( std::function< S(const C &)> ,
std::function< void(const C &, C &)>  ) -> OptiCaseAnalytical< S, C >

◆ OptiCaseAnalytical() [2/2]

template<typename S , typename C >
olb::opti::OptiCaseAnalytical ( std::function< S(const C &)> ,
std::function< void(const C &, C &)> ,
std::function< void(void)>  ) -> OptiCaseAnalytical< S, C >

◆ OptiCaseCDQ() [1/8]

template<typename S , typename C >
olb::opti::OptiCaseCDQ ( std::function< S(const C &)> ) -> OptiCaseCDQ< S, C >

◆ OptiCaseCDQ() [2/8]

template<typename S , typename C >
olb::opti::OptiCaseCDQ ( std::function< S(const C &)> ,
S  ) -> OptiCaseCDQ< S, C >

◆ OptiCaseCDQ() [3/8]

template<typename S , typename C >
olb::opti::OptiCaseCDQ ( std::function< S(const C &)> ,
S ,
std::function< void(void)>  ) -> OptiCaseCDQ< S, C >

◆ OptiCaseCDQ() [4/8]

template<typename S , typename C >
olb::opti::OptiCaseCDQ ( std::function< S(const C &)> ,
std::function< void(void)>  ) -> OptiCaseCDQ< S, C >

◆ OptiCaseCDQ() [5/8]

template<typename S , typename C >
olb::opti::OptiCaseCDQ ( std::function< S(const C &, unsigned)> ) -> OptiCaseCDQ< S, C >

◆ OptiCaseCDQ() [6/8]

template<typename S , typename C >
olb::opti::OptiCaseCDQ ( std::function< S(const C &, unsigned)> ,
S  ) -> OptiCaseCDQ< S, C >

◆ OptiCaseCDQ() [7/8]

template<typename S , typename C >
olb::opti::OptiCaseCDQ ( std::function< S(const C &, unsigned)> ,
S ,
std::function< void(void)>  ) -> OptiCaseCDQ< S, C >

◆ OptiCaseCDQ() [8/8]

template<typename S , typename C >
olb::opti::OptiCaseCDQ ( std::function< S(const C &, unsigned)> ,
std::function< void(void)>  ) -> OptiCaseCDQ< S, C >

◆ OptiCaseFDQ() [1/8]

template<typename S , typename C >
olb::opti::OptiCaseFDQ ( std::function< S(const C &)> ) -> OptiCaseFDQ< S, C >

◆ OptiCaseFDQ() [2/8]

template<typename S , typename C >
olb::opti::OptiCaseFDQ ( std::function< S(const C &)> ,
S  ) -> OptiCaseFDQ< S, C >

◆ OptiCaseFDQ() [3/8]

template<typename S , typename C >
olb::opti::OptiCaseFDQ ( std::function< S(const C &)> ,
S ,
std::function< void(void)>  ) -> OptiCaseFDQ< S, C >

◆ OptiCaseFDQ() [4/8]

template<typename S , typename C >
olb::opti::OptiCaseFDQ ( std::function< S(const C &)> ,
std::function< void(void)>  ) -> OptiCaseFDQ< S, C >

◆ OptiCaseFDQ() [5/8]

template<typename S , typename C >
olb::opti::OptiCaseFDQ ( std::function< S(const C &, unsigned)> ) -> OptiCaseFDQ< S, C >

◆ OptiCaseFDQ() [6/8]

template<typename S , typename C >
olb::opti::OptiCaseFDQ ( std::function< S(const C &, unsigned)> ,
S  ) -> OptiCaseFDQ< S, C >

◆ OptiCaseFDQ() [7/8]

template<typename S , typename C >
olb::opti::OptiCaseFDQ ( std::function< S(const C &, unsigned)> ,
S ,
std::function< void(void)>  ) -> OptiCaseFDQ< S, C >

◆ OptiCaseFDQ() [8/8]

template<typename S , typename C >
olb::opti::OptiCaseFDQ ( std::function< S(const C &, unsigned)> ,
std::function< void(void)>  ) -> OptiCaseFDQ< S, C >