diff --git a/optimizer/Comm/CommSplitter.h b/optimizer/Comm/CommSplitter.h index dd223dced1e2246632ac8646fa070ec4a9ce19d0..4e891598e6a8f3de0ef3999163ff3c397080294d 100644 --- a/optimizer/Comm/CommSplitter.h +++ b/optimizer/Comm/CommSplitter.h @@ -1,3 +1,37 @@ +// +// Class CommSplitter +// Role assignment according to strategy (that might use hardware +// network information). +// +// The CommSplitter splits the passed (usually MPI_COMM_WORLD) communicator +// into several comm groups using the colors provided by the splitting +// strategy. +// After construction each processor has an assigned role (optimizer, worker +// or pilot) and a set of communicators to send and receive tasks. +// The expected colors have the following meaning: +// - color[0] is shared by all my co-workers +// - color[1] is shared by the optimizer leader and the pilot +// - color[2] is shared by the worker leader and the pilot +// - color[3] is shared by all processors with the same role (used for +// broadcasts) +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __COMM_SPLITTER__ #define __COMM_SPLITTER__ @@ -10,24 +44,6 @@ //TODO: what is the performance difference between using MPI_COMM_WORLD and // p2p communication vs. communicator groups?? -/** - * \brief Role assignment according to strategy (that might use hardware - * network information). - * - * The CommSplitter splits the passed (usually MPI_COMM_WORLD) communicator - * into several comm groups using the colors provided by the splitting - * strategy. - * After construction each processor has an assigned role (optimizer, worker - * or pilot) and a set of communicators to send and receive tasks. - * The expected colors have the following meaning: - * - * - color[0] is shared by all my co-workers - * - color[1] is shared by the optimizer leader and the pilot - * - color[2] is shared by the worker leader and the pilot - * - color[3] is shared by all processors with the same role (used for - * broadcasts) - * - */ template< class Strategy_t > class CommSplitter : public Strategy_t { diff --git a/optimizer/Comm/MasterGraph/NDimMesh.h b/optimizer/Comm/MasterGraph/NDimMesh.h index b594c86c4fccb95f2d627319376e5a491fcd336e..3bcb2b19e28e0de6f0f259b71e761df2f5673795 100644 --- a/optimizer/Comm/MasterGraph/NDimMesh.h +++ b/optimizer/Comm/MasterGraph/NDimMesh.h @@ -1,3 +1,23 @@ +// +// Class NDimMesh +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __NDIM_MESH__ #define __NDIM_MESH__ diff --git a/optimizer/Comm/MasterGraph/NoMasterGraph.h b/optimizer/Comm/MasterGraph/NoMasterGraph.h index dfbd37648145bac60b81c4b9d44e04db92b98fa9..9a6a235da8c7158f8cb306b23258e5417191dd39 100644 --- a/optimizer/Comm/MasterGraph/NoMasterGraph.h +++ b/optimizer/Comm/MasterGraph/NoMasterGraph.h @@ -1,9 +1,29 @@ +// +// Class NoMasterGraph +// A simple empty master graph (no neighbors, every island works isolated). +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __NO_MASTER_GRAPH__ #define __NO_MASTER_GRAPH__ #include <set> -/// A simple empty master graph (no neighbors, every island works isolated). template < class TopoDiscoveryStrategy_t > class NoMasterGraph : public TopoDiscoveryStrategy_t { diff --git a/optimizer/Comm/MasterGraph/SocialNetworkGraph.h b/optimizer/Comm/MasterGraph/SocialNetworkGraph.h index 70225420dd624343dd5d1121a53b4d8022b4768b..3294190d1f44c0a1e9e53cbc6f0af52289fb3ccd 100644 --- a/optimizer/Comm/MasterGraph/SocialNetworkGraph.h +++ b/optimizer/Comm/MasterGraph/SocialNetworkGraph.h @@ -1,3 +1,40 @@ +// +// Class SocialNetworkGraph +// Modeling social graph (Cartesian neighbors plus additional random +// link) as underlaying master network. +// +// @see MasterNode +// +// Due to its nice rumor spreading properties this master network is mimicking +// a social network graph (augmented grid) and solution states are distributed +// in a rumor fashion. +// +// Here, we use a simple mapping from processor ID's to 2D grid +// (determining neigborhood) assuming the total number of masters: +// +// n_m = n_g * n_g +// +// This is fine, because if we have topology info the masters are numbered +// in ascending order (done in comm splitter) and we can map them from 1D to +// 2D by index calculations. +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __SOCIAL_NETWORK_GRAPH__ #define __SOCIAL_NETWORK_GRAPH__ @@ -7,25 +44,6 @@ #include <boost/random/mersenne_twister.hpp> #include <boost/random/discrete_distribution.hpp> -// Here, we use a simple mapping from processor ID's to 2D grid -// (determining neigborhood) assuming the total number of masters: -// -// n_m = n_g * n_g -// -// This is fine, because if we have topology info the masters are numbered -// in ascending order (done in comm splitter) and we can map them from 1D to -// 2D by index calculations. - -/** - * \brief Modeling social graph (Cartesian neighbors plus additional random - * link) as underlaying master network. - * - * @see MasterNode - * - * Due to its nice rumor spreading properties this master network is mimicking - * a social network graph (augmented grid) and solution states are distributed - * in a rumor fashion. - */ template < class TopoDiscoveryStrategy_t > class SocialNetworkGraph : public TopoDiscoveryStrategy_t { diff --git a/optimizer/Comm/MasterNode.h b/optimizer/Comm/MasterNode.h index 295bd5b404a01dcbbe0bdcc599ff35376a3f4637..bdbff0cedb0c727ab3b2d171c935380c32561475 100644 --- a/optimizer/Comm/MasterNode.h +++ b/optimizer/Comm/MasterNode.h @@ -1,3 +1,33 @@ +// +// Class MasterNode +// Implements a node in the network of all pilots, exposing store and +// collect operations on a specific set of neighbors. +// +// Using the neighbor strategy a set of neighbors we collect solution state +// from (and they collect from us) is defined. Using this set of neighbors the +// solution states propagate throughout the network. The store and collect +// operations are implemented using one sided MPI communication methods +// (simulating shared memory). +// A revision number is used to prevent receiving previously collected +// solution states from neighbors. +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __MASTER_NODE__ #define __MASTER_NODE__ @@ -18,19 +48,6 @@ //XXX: SolutionState_t must be serializable! (call // SerializableSolutionState_t?) -/** - * \brief Implements a node in the network of all pilots, exposing store and - * collect operations on a specific set of neighbors. - * - * Using the neighbor strategy a set of neighbors we collect solution state - * from (and they collect from us) is defined. Using this set of neighbors the - * solution states propagate throughout the network. The store and collect - * operations are implemented using one sided MPI communication methods - * (simulating shared memory). - * A revision number is used to prevent receiving previously collected - * solution states from neighbors. - * - */ template < class SolutionState_t , class NeighborStrategy_t diff --git a/optimizer/Comm/types.h b/optimizer/Comm/types.h index be9df1e42dc5dbe208fd9dd22821cd27d2ff17ff..64b6f5e518211114736184455bf41dca92b50829 100644 --- a/optimizer/Comm/types.h +++ b/optimizer/Comm/types.h @@ -1,3 +1,23 @@ +// +// Types in namespace Comm +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __COMM_TYPES__ #define __COMM_TYPES__ diff --git a/optimizer/Expression/Expression.h b/optimizer/Expression/Expression.h index bb3be06ebf8b50025bc70306a14782dfdceee0c4..90ca052acc0128a5349a4879383dfd7858bb573c 100644 --- a/optimizer/Expression/Expression.h +++ b/optimizer/Expression/Expression.h @@ -1,3 +1,32 @@ +// +// Class Expression +// Expression to be evaluated in the framework. +// +// @see GlobalFunctions.h +// +// This class uses the Boost Spirit parser to parse and evaluate string +// expressions (objectives or constraints). +// Custom functions called in the expression should be registered by the +// driver. A collection of C math default functions is always included. +// For constraints the operator type can be queried. +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __EXPRESSION_H__ #define __EXPRESSION_H__ @@ -62,16 +91,6 @@ namespace Expressions { #include "Expression/GlobalFunctions.h" -/** - * \brief Expression to be evaluated in the framework. - * @see GlobalFunctions.h - * - * This class uses the Boost Spirit parser to parse and evaluate string - * expressions (objectives or constraints). - * Custom functions called in the expression should be registered by the - * driver. A collection of C math default functions is always included. - * For constraints the operator type can be queried. - */ class Expression { public: diff --git a/optimizer/Expression/FromFile.cpp b/optimizer/Expression/FromFile.cpp index 12cbc5d6bbdd12cf523bfb5ee65985c44777efae..fc5f4fc8dbad84975a5971a2df2591f0be3db09d 100644 --- a/optimizer/Expression/FromFile.cpp +++ b/optimizer/Expression/FromFile.cpp @@ -1,3 +1,28 @@ +// +// Struct FromFile +// Simple functor that reads vector data from a file. If the file contains +// more than one value the sum is returned. +// \f[ +// result = \sum_{i=0}^n value_i +// \f] +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #include "Expression/FromFile.h" /// reads a simple list of double values diff --git a/optimizer/Expression/FromFile.h b/optimizer/Expression/FromFile.h index 9d142352c8d51eac0b71c3cad8873101ac28441e..0f8f67a988b8101bcd34ba735b36f1e1a292372a 100644 --- a/optimizer/Expression/FromFile.h +++ b/optimizer/Expression/FromFile.h @@ -1,3 +1,28 @@ +// +// Struct FromFile +// Simple functor that reads vector data from a file. If the file contains +// more than one value the sum is returned. +// \f[ +// result = \sum_{i=0}^n value_i +// \f] +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __FROMFILE_H__ #define __FROMFILE_H__ @@ -16,14 +41,6 @@ #include "Util/OptPilotException.h" #include "Expression/Parser/function.hpp" - -/** - * Simple functor that reads vector data from a file. If the file contains - * more than one value the sum is returned. - * \f[ - * result = \sum_{i=0}^n value_i - * \f] - */ struct FromFile { static const std::string name; diff --git a/optimizer/Expression/GlobalFunctions.h b/optimizer/Expression/GlobalFunctions.h index 6faccdba044d8be505a5ef8887539c304cf03e7b..b8d50bafb890e13f6b23a3482487e8ea1a6f01b4 100644 --- a/optimizer/Expression/GlobalFunctions.h +++ b/optimizer/Expression/GlobalFunctions.h @@ -1,3 +1,25 @@ +// +// Namespace GlobalFunctions +// Defines multiple expressions to be evaluated in +// objectives. +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __GLOBAL_FUNCTIONS_H__ #define __GLOBAL_FUNCTIONS_H__ diff --git a/optimizer/Expression/ProbeVariable.h b/optimizer/Expression/ProbeVariable.h index dbcfde3f988afd46b69b847fa19936f04f12d633..853c903cd6d2ba1bda5c6b05c5ff0256513010c7 100644 --- a/optimizer/Expression/ProbeVariable.h +++ b/optimizer/Expression/ProbeVariable.h @@ -1,3 +1,23 @@ +// +// Struct ProbeVariable +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __PROBEVARIABLE_H__ #define __PROBEVARIABLE_H__ diff --git a/optimizer/Expression/PythonExpr.h b/optimizer/Expression/PythonExpr.h index ea01e9a3f252afbf181463fbbd94b7a84e56da89..40225967ca0b24e6b9ef9927d4e9adeac412415c 100644 --- a/optimizer/Expression/PythonExpr.h +++ b/optimizer/Expression/PythonExpr.h @@ -1,3 +1,37 @@ +// +// Struct PythonExpression +// Execute a python script using all given arguments (except for the first +// being the script name) and return the value of the "result" variable in +// the python script. +// Expression arguments can be accessed in the Python script using the vector +// variable "arguments", like i.e. in file "test.py": +// \verbatim +// result = 2.0 * arguments[0] +// \endverbatim +// to double the value passed as second argument to the Python expression. +// For example the expression +// \verbatim +// EXPR="python("test.py", 15.0)"; +// \endverbatim +// evaluates to a value of 30.0 (test.py contains the line shown above). +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __PYTHON_EXPR_H__ #define __PYTHON_EXPR_H__ @@ -15,22 +49,6 @@ using namespace boost::python; -/** - * Execute a python script using all given arguments (except for the first - * being the script name) and return the value of the "result" variable in - * the python script. - * Expression arguments can be accessed in the Python script using the vector - * variable "arguments", like i.e. in file "test.py": - * \verbatim - result = 2.0 * arguments[0] - \endverbatim - * to double the value passed as second argument to the Python expression. - * For example the expression - * \verbatim - EXPR="python("test.py", 15.0)"; - \endverbatim - * evaluates to a value of 30.0 (test.py contains the line shown above). - */ struct PythonExpression { Expressions::Result_t operator()(client::function::arguments_t args) { diff --git a/optimizer/Expression/SDDSVariable.h b/optimizer/Expression/SDDSVariable.h index 0222f0e64bbc1ffc8b66e1602acacc6b198682a7..12ad779eeec17010b576753216fd98a89b7a9654 100644 --- a/optimizer/Expression/SDDSVariable.h +++ b/optimizer/Expression/SDDSVariable.h @@ -1,3 +1,29 @@ +// +// Struct SDDSVariable +// A simple expression to get SDDS (filename) value near a +// specific position (ref_val, default: spos) of a reference +// variable (ref_name) for a variable (var_name). Possible +// argument orders: +// args = [var_name, ref_val, filename] +// args = [var_name, ref_name, ref_val, filename] +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __SDDSVARIABLE_H__ #define __SDDSVARIABLE_H__ @@ -13,14 +39,6 @@ #include "Expression/Parser/function.hpp" -/** - * A simple expression to get SDDS (filename) value near a - * specific position (ref_val, default: spos) of a reference - * variable (ref_name) for a variable (var_name). Possible - * argument orders: - * args = [var_name, ref_val, filename] - * args = [var_name, ref_name, ref_val, filename] - */ struct SDDSVariable { static const std::string name; diff --git a/optimizer/Expression/SumErrSq.h b/optimizer/Expression/SumErrSq.h index 583119577e81fc1b98e3786edbcb9125f4374474..fc18bf83e10aea4322ac471c09772b83726082d3 100644 --- a/optimizer/Expression/SumErrSq.h +++ b/optimizer/Expression/SumErrSq.h @@ -1,3 +1,29 @@ +// +// Struct SumErrSq +// A simple expression computing the sum of all measurement errors (given as +// first and third argument) for a variable (second argument) according to +// +// \f[ +// result = \frac{1}{n} * \sqrt{\sum_{i=0}^n (measurement_i - value_i)^2} +// \f] +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __SUMERRSQ_H__ #define __SUMERRSQ_H__ @@ -23,15 +49,7 @@ public: friend std::istream & operator>>(std::istream & stream, Measurement & measurement); }; -/** - * A simple expression computing the sum of all measurement errors (given as - * first and third argument) for a variable (second argument) according to - * - * \f[ - * result = \frac{1}{n} * \sqrt{\sum_{i=0}^n (measurement_i - value_i)^2} - * \f] - * - */ + struct SumErrSq { static const std::string name; diff --git a/optimizer/Optimizer/EA/BlendCrossover.h b/optimizer/Optimizer/EA/BlendCrossover.h index 43ed9255b3b44f1c445a4e61b8ae652213e62fb2..ebb19b66828660f345ab8363aa31eb906ab85d63 100644 --- a/optimizer/Optimizer/EA/BlendCrossover.h +++ b/optimizer/Optimizer/EA/BlendCrossover.h @@ -1,17 +1,35 @@ +// +// Struct BlendCrossover +// BLX-alpha (interval schemata) +// Eshelman and Schaffer (1993) +// Pick random solution in interval +// +// [ x_i^(1,t) - \alpha(x_i^(2,t) - x_i^(1,t)), +// x_i^(2,t) + \alpha((x_i^(2,t) - x_i^(1,t)) ] +// +// at generation t. +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #include "boost/smart_ptr.hpp" #include "Util/CmdArguments.h" #include <cmath> -/** - * BLX-alpha (interval schemata) - * Eshelman and Schaffer (1993) - * Pick random solution in interval - * - * [ x_i^(1,t) - \alpha(x_i^(2,t) - x_i^(1,t)), - * x_i^(2,t) + \alpha((x_i^(2,t) - x_i^(1,t)) ] - * - * at generation t. - */ template <class T> struct BlendCrossover { diff --git a/optimizer/Optimizer/EA/FixedPisaNsga2.h b/optimizer/Optimizer/EA/FixedPisaNsga2.h index f08211da802f03bac5536a6adaad999f89801e08..a26731c624fc5269549a6d1fd8141e79c0ddeb3e 100644 --- a/optimizer/Optimizer/EA/FixedPisaNsga2.h +++ b/optimizer/Optimizer/EA/FixedPisaNsga2.h @@ -1,3 +1,35 @@ +// +// Class FixedPisaNsga2 +// Implementing the Variator for the PISA state machine. +// +// @see http://www.tik.ee.ethz.ch/pisa/ +// +// The convergence behavior of the optimizer can be steered in 3 ways, +// corresponding command line arguments are given in brackets: +// - limit the number of generations (maxGenerations), +// - specify a target hypervolume (expected-hypervol) and tolerance +// (epsilon) +// - specify a minimal hypervolume progress (conv-hvol-prog), relative to +// the last generation, ((prev - new)/prev) that has to be attained to +// continue optimizing. +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __FIXED_PISA_NSGA2_H__ #define __FIXED_PISA_NSGA2_H__ @@ -29,21 +61,7 @@ #include "Util/Trace/Trace.h" -/** - * \class FixedPisaNsga2 - * \brief Implementing the Variator for the PISA state machine. - * - * @see http://www.tik.ee.ethz.ch/pisa/ - * - * The convergence behavior of the optimizer can be steered in 3 ways, - * corresponding command line arguments are given in brackets: - * - limit the number of generations (maxGenerations), - * - specify a target hypervolume (expected-hypervol) and tolerance - * (epsilon) - * - specify a minimal hypervolume progress (conv-hvol-prog), relative to - * the last generation, ((prev - new)/prev) that has to be attained to - * continue optimizing. - */ + template< template <class> class CrossoverOperator , template <class> class MutationOperator diff --git a/optimizer/Optimizer/EA/FixedPisaNsga2.tcc b/optimizer/Optimizer/EA/FixedPisaNsga2.tcc index 0fec7f514352601ccd82717d094f80ce484431d7..d0f3be0e3ff416ee9d9a92393386fd23e56fd7c5 100644 --- a/optimizer/Optimizer/EA/FixedPisaNsga2.tcc +++ b/optimizer/Optimizer/EA/FixedPisaNsga2.tcc @@ -1,3 +1,35 @@ +// +// Class FixedPisaNsga2 +// Implementing the Variator for the PISA state machine. +// +// @see http://www.tik.ee.ethz.ch/pisa/ +// +// The convergence behavior of the optimizer can be steered in 3 ways, +// corresponding command line arguments are given in brackets: +// - limit the number of generations (maxGenerations), +// - specify a target hypervolume (expected-hypervol) and tolerance +// (epsilon) +// - specify a minimal hypervolume progress (conv-hvol-prog), relative to +// the last generation, ((prev - new)/prev) that has to be attained to +// continue optimizing. +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #include <iostream> #include <sstream> #include <cmath> diff --git a/optimizer/Optimizer/EA/IndependentBitMutation.h b/optimizer/Optimizer/EA/IndependentBitMutation.h index d42ea64bf41c2c67d8a0f7b3aeb1f5bce362312d..ff40bbf251b830e2ca19d6a2c9f1b46fce0d297b 100644 --- a/optimizer/Optimizer/EA/IndependentBitMutation.h +++ b/optimizer/Optimizer/EA/IndependentBitMutation.h @@ -1,7 +1,27 @@ +// +// Struct IndependentBitMutation +// Mutate each gene with probability p +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #include "boost/smart_ptr.hpp" #include "Util/CmdArguments.h" -/// Mutate each gene with probability p template <class T> struct IndependentBitMutation { void mutate(boost::shared_ptr<T> ind, CmdArguments_t args) { diff --git a/optimizer/Optimizer/EA/Individual.h b/optimizer/Optimizer/EA/Individual.h index 26a918ff920e0a80234086b6bc8781fd1051ef80..f5ea39138bc71512801d9ef77c2a2acd55962bb5 100644 --- a/optimizer/Optimizer/EA/Individual.h +++ b/optimizer/Optimizer/EA/Individual.h @@ -1,3 +1,27 @@ +// +// Class Individual +// Structure for an individual in the population holding genes and objective +// values. +// +// @see Types.h +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __INDIVIDUAL_H__ #define __INDIVIDUAL_H__ @@ -11,13 +35,6 @@ #include "boost/smart_ptr.hpp" -/** - * \class Individual - * Structure for an individual in the population holding genes and objective - * values. - * - * @see Types.h - */ class Individual { public: diff --git a/optimizer/Optimizer/EA/NaiveOnePointCrossover.h b/optimizer/Optimizer/EA/NaiveOnePointCrossover.h index fe4c3786a2aa61eb50b1cbbeea2b63d9389a35d7..acedd85afff5543a72934f8f88c7f702c7e15ae3 100644 --- a/optimizer/Optimizer/EA/NaiveOnePointCrossover.h +++ b/optimizer/Optimizer/EA/NaiveOnePointCrossover.h @@ -1,3 +1,23 @@ +// +// Struct NaiveOnePointCrossover +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #include "boost/smart_ptr.hpp" #include "Util/CmdArguments.h" diff --git a/optimizer/Optimizer/EA/NaiveUniformCrossover.h b/optimizer/Optimizer/EA/NaiveUniformCrossover.h index a2dfe6d4d1c5812c3e991af27ef5ad21cfb4c6e7..08af2096a2833cb3495f019334c10051c70812eb 100644 --- a/optimizer/Optimizer/EA/NaiveUniformCrossover.h +++ b/optimizer/Optimizer/EA/NaiveUniformCrossover.h @@ -1,7 +1,27 @@ +// +// Struct NaiveUniformCrossover +// Decide for each gene if swapped with other gene. +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #include "boost/smart_ptr.hpp" #include "Util/CmdArguments.h" -/// decide for each gene if swapped with other gene template <class T> struct NaiveUniformCrossover { void crossover(boost::shared_ptr<T> ind1, boost::shared_ptr<T> ind2, diff --git a/optimizer/Optimizer/EA/OneBitMutation.h b/optimizer/Optimizer/EA/OneBitMutation.h index 12301fc177d18ad37bc704bf3c99bb8a4f4e1e66..2f3055b91f7e1f9466de5e25d20a2a72dfee2593 100644 --- a/optimizer/Optimizer/EA/OneBitMutation.h +++ b/optimizer/Optimizer/EA/OneBitMutation.h @@ -1,7 +1,27 @@ +// +// Struct OneBitMutation +// Mutate exactly one gene of an individual. +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #include "boost/smart_ptr.hpp" #include "Util/CmdArguments.h" -/// Mutate exactly one gene of an individual. template <class T> struct OneBitMutation { void mutate(boost::shared_ptr<T> ind, CmdArguments_t /*args*/) { diff --git a/optimizer/Optimizer/EA/Population.h b/optimizer/Optimizer/EA/Population.h index 87d3522255ea0406d5b719ee47a938a6d1d5c7b9..e9d6ab611423f574b2563a149459fca152f83042 100644 --- a/optimizer/Optimizer/EA/Population.h +++ b/optimizer/Optimizer/EA/Population.h @@ -1,3 +1,29 @@ +// +// Class Population +// Managing a population of individuals. We maintain two sets: a set of all +// (evaluated) individuals in the population and a set of new potential +// individuals (the selector decides which individuals join the population), +// called 'stagingArea'. +// Most operations work on the 'stagingArea', population is kept for +// visualization purposes. +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __POPULATION_H__ #define __POPULATION_H__ @@ -15,16 +41,6 @@ #include "extlib/wfgHypervolume/hypervolume.h" -/** - * \class Population - * - * Managing a population of individuals. We maintain two sets: a set of all - * (evaluated) individuals in the population and a set of new potential - * individuals (the selector decides which individuals join the population), - * called 'stagingArea'. - * Most operations work on the 'stagingArea', population is kept for - * visualization purposes. - */ template< class Individual_t > class Population { diff --git a/optimizer/Optimizer/EA/SimulatedBinaryCrossover.h b/optimizer/Optimizer/EA/SimulatedBinaryCrossover.h index 592156f905abb9220e4ab6dbb6e642388d2b756d..d72def5f5878c885178e6554b923971f7c474a8e 100644 --- a/optimizer/Optimizer/EA/SimulatedBinaryCrossover.h +++ b/optimizer/Optimizer/EA/SimulatedBinaryCrossover.h @@ -1,13 +1,31 @@ +// +// Struct SimulatedBinaryCrossover +// Deb (1995) Simulated Binary Crossover (SBX) +// Respects interval schemata. +// Offspring are symmetric around parent solutions. +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #include <cmath> #include "boost/smart_ptr.hpp" #include "Util/CmdArguments.h" -/** - * Deb (1995) Simulated Binary Crossover (SBX) - * Respects interval schemata. - * Offspring are symmetric around parent solutions. - */ template <class T> struct SimulatedBinaryCrossover { diff --git a/optimizer/Optimizer/EA/Variator.h b/optimizer/Optimizer/EA/Variator.h index 7a8e0bf896cde131f67156e452f5f5bcbd72d04b..ee4c048593c6a8c8f906b26ea9e05a517b1cefc9 100644 --- a/optimizer/Optimizer/EA/Variator.h +++ b/optimizer/Optimizer/EA/Variator.h @@ -1,3 +1,23 @@ +// +// Class Variator +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __VARIATOR_H__ #define __VARIATOR_H__ diff --git a/optimizer/Optimizer/Optimizer.h b/optimizer/Optimizer/Optimizer.h index af797f5b54e134f12fd7f8456a7caa579d5cf976..e77caf099bfe4ccc8b389b6d13baf8c4d0c2492a 100644 --- a/optimizer/Optimizer/Optimizer.h +++ b/optimizer/Optimizer/Optimizer.h @@ -1,3 +1,25 @@ +// +// Class Optimizer +// An abstract class defining the interface for all optimizer +// components. +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __OPTIMIZER_H__ #define __OPTIMIZER_H__ @@ -6,11 +28,6 @@ #include "Util/Types.h" #include "Pilot/Poller.h" -/** - * \class Optimizer - * \brief An abstract class defining the interface for all optimizer - * components. - */ class Optimizer : protected Poller { public: diff --git a/optimizer/Pilot/Pilot.h b/optimizer/Pilot/Pilot.h index d17817eb7aed99eed61c31453d2b39e861a18c3d..6f32d3e8c5fe9fe6f5dab86bc542b48a973078cb 100644 --- a/optimizer/Pilot/Pilot.h +++ b/optimizer/Pilot/Pilot.h @@ -1,3 +1,41 @@ +// +// Class Pilot +// The Optimization Pilot (Master): Coordinates requests by optimizer +// to workers and reports results back on a given communicator. +// +// Every worker thread notifies the master here if idle or not. When +// available the master dispatches one of the pending simulations to the +// worker who will run the specified simulation and report results back to +// the master. The Optimizer class will poll the scheduler to check if some +// (or all) results are available and continue to optimize and request new +// simulation results. +// +// @see Worker +// @see Optimizer +// +// @tparam Opt_t type of the optimizer +// @tparam Sim_t type of the simulation +// @tparam SolPropagationGraph_t strategy to distribute solution between +// master islands +// @tparam Comm_t comm splitter strategy +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __PILOT_H__ #define __PILOT_H__ @@ -55,27 +93,6 @@ -/** - * \class Pilot - * \brief The Optimization Pilot (Master): Coordinates requests by optimizer - * to workers and reports results back on a given communicator. - * - * Every worker thread notifies the master here if idle or not. When - * available the master dispatches one of the pending simulations to the - * worker who will run the specified simulation and report results back to - * the master. The Optimizer class will poll the scheduler to check if some - * (or all) results are available and continue to optimize and request new - * simulation results. - * - * @see Worker - * @see Optimizer - * - * @tparam Opt_t type of the optimizer - * @tparam Sim_t type of the simulation - * @tparam SolPropagationGraph_t strategy to distribute solution between - * master islands - * @tparam Comm_t comm splitter strategy - */ template < class Opt_t , class Sim_t diff --git a/optimizer/Pilot/Poller.h b/optimizer/Pilot/Poller.h index 231d1b516002a8fec78611cc23b404277bb504c4..672e090f8c4ed0bb96c3ccff992425d6aff2fab9 100644 --- a/optimizer/Pilot/Poller.h +++ b/optimizer/Pilot/Poller.h @@ -1,3 +1,30 @@ +// +// Class Poller +// An interface implementing the basics of a poll loop, posting an +// MPI_Irecv and waiting for new requests on a specific communicator. +// +// @see Pilot +// @see Worker +// @see Optimizer +// @see MPIHelper.h +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __POLLER_H__ #define __POLLER_H__ @@ -5,16 +32,6 @@ #include "Util/MPIHelper.h" -/** - * \class Poller - * \brief An interface implementing the basics of a poll loop, posting an - * MPI_Irecv and waiting for new requests on a specific communicator. - * - * @see Pilot - * @see Worker - * @see Optimizer - * @see MPIHelper.h - */ class Poller { public: diff --git a/optimizer/Pilot/Worker.h b/optimizer/Pilot/Worker.h index eaeaba50cee6e0bb28a246471e4d57d7b27bf613..ce5bf1276fdd31aa8868473e1bb6e331fd1b5969 100644 --- a/optimizer/Pilot/Worker.h +++ b/optimizer/Pilot/Worker.h @@ -1,3 +1,32 @@ +// +// Class Worker +// A worker MPI entity consists of a processor group that runs a +// simulation of type Sim_t. The main loop in run() accepts new jobs from the +// master process runs the simulation and reports back the results. +// +// @see Pilot +// @see Poller +// @see MPIHelper.h +// +// @tparam Sim_T type of simulation to run +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __WORKER_H__ #define __WORKER_H__ @@ -12,18 +41,6 @@ #include "Util/MPIHelper.h" #include "Util/CmdArguments.h" -/** - * \class Worker - * \brief A worker MPI entity consists of a processor group that runs a - * simulation of type Sim_t. The main loop in run() accepts new jobs from the - * master process runs the simulation and reports back the results. - * - * @see Pilot - * @see Poller - * @see MPIHelper.h - * - * @tparam Sim_T type of simulation to run - */ template <class Sim_t> class Worker : protected Poller { diff --git a/optimizer/Simulation/GenerateOpalSimulation.h b/optimizer/Simulation/GenerateOpalSimulation.h index dd435cb570b9fe330108e6acde3de854e5b84afa..9d5b770d696846031d0805c1d25a10da9c3a6f01 100644 --- a/optimizer/Simulation/GenerateOpalSimulation.h +++ b/optimizer/Simulation/GenerateOpalSimulation.h @@ -1,3 +1,35 @@ +// +// Class GenerateOpalSimulation +// Generates an OPAL input file from data and template file. +// +// When running the optimizer with the OPAL forward solvers this utility +// class helps generating OPAL input files corresponding to the design +// variable values of the requested evaluation. +// Using the data file we start by generating the dictionary of known +// templates. +// When the input file is requested, all template variables in the template +// input file are replaced with values found in the dictionary. +// +// TODO: +// - pass stream directly to opal (detour over file not necessary) +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __GENERATE_SIMULATION_H__ #define __GENERATE_SIMULATION_H__ @@ -14,21 +46,6 @@ #include "Util/OptPilotException.h" -/** - * \class GenerateOpalSimulation - * \brief Generates an OPAL input file from data and template file. - * - * When running the optimizer with the OPAL forward solvers this utility - * class helps generating OPAL input files corresponding to the design - * variable values of the requested evaluation. - * Using the data file we start by generating the dictionary of known - * templates. - * When the input file is requested, all template variables in the template - * input file are replaced with values found in the dictionary. - * - * TODO: - * - pass stream directly to opal (detour over file not necessary) - */ class GenerateOpalSimulation { public: diff --git a/optimizer/Simulation/Simulation.h b/optimizer/Simulation/Simulation.h index 4cf9398a575cfcdebe8c0ae74362e9b6c6010e1e..1629bbf65347775be552f5e22dbeb5261ee256a0 100644 --- a/optimizer/Simulation/Simulation.h +++ b/optimizer/Simulation/Simulation.h @@ -1,22 +1,39 @@ +// +// Class Simulation +// Abstract class every simulation has to implement to be able to +// work with the optimization pilot. +// +// To be supported the simulation code has to be called as a library taking +// as an argument an MPI communicator specifying on which processors the +// simulation runs. +// +// TODO: +// - formulate the 'simulation' part as a pipeline.. workers can simply put +// together their own pipelines situation-dependent. +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __SIMULATION_H__ #define __SIMULATION_H__ #include "Util/Types.h" #include "Util/CmdArguments.h" -/** - * \class Simulation - * \brief Abstract class every simulation has to implement to be able to - * work with the optimization pilot. - * - * To be supported the simulation code has to be called as a library taking - * as an argument an MPI communicator specifying on which processors the - * simulation runs. - * - * TODO: - * - formulate the 'simulation' part as a pipeline.. workers can simply put - * together their own pipelines situation-dependent. - */ class Simulation { public: diff --git a/optimizer/Tests/CmdArgumentsTest.cpp b/optimizer/Tests/CmdArgumentsTest.cpp index 0ac6f3bcb0ec12cacde9015d31d5dabb791e1e62..a940ab338ef806782a0452d080b025ad10cda9ec 100644 --- a/optimizer/Tests/CmdArgumentsTest.cpp +++ b/optimizer/Tests/CmdArgumentsTest.cpp @@ -1,3 +1,23 @@ +// +// Test CmdArgumentsTest +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #include "Util/CmdArguments.h" #include "gtest/gtest.h" #include "boost/smart_ptr.hpp" diff --git a/optimizer/Tests/ExpressionTest.cpp b/optimizer/Tests/ExpressionTest.cpp index fb741d136e2550fad5192cf0f977356807201e43..d3dda9fc844a2c7b31e98b16e1daa488adfc7972 100644 --- a/optimizer/Tests/ExpressionTest.cpp +++ b/optimizer/Tests/ExpressionTest.cpp @@ -1,3 +1,23 @@ +// +// Test ExpressionTest +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #include <set> #include <string> diff --git a/optimizer/Tests/FromFileExpressionTest.cpp b/optimizer/Tests/FromFileExpressionTest.cpp index 3f34f8c8f38361986c64a14e26e3ec94f0750b99..33a44c69bbcae4b1bb0f859903b5ec32490eefb4 100644 --- a/optimizer/Tests/FromFileExpressionTest.cpp +++ b/optimizer/Tests/FromFileExpressionTest.cpp @@ -1,3 +1,23 @@ +// +// Test FromFileExpressionTest +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #include <set> #include <string> diff --git a/optimizer/Tests/HashNameGeneratorTest.cpp b/optimizer/Tests/HashNameGeneratorTest.cpp index f18b4a19bb22d4422827830925d786c70ba1d928..f3fa95948886883574574798409abd7a223f3208 100644 --- a/optimizer/Tests/HashNameGeneratorTest.cpp +++ b/optimizer/Tests/HashNameGeneratorTest.cpp @@ -1,3 +1,23 @@ +// +// Test HashNameGeneratorTest +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #include "Util/NativeHashGenerator.h" #include "gtest/gtest.h" #include <fstream> diff --git a/optimizer/Tests/IndividualTest.cpp b/optimizer/Tests/IndividualTest.cpp index 76125fbacb606fa3785a35386ef3b819bfe0458e..abb62243005d3eb96e246c04dc1385928a4ef523 100644 --- a/optimizer/Tests/IndividualTest.cpp +++ b/optimizer/Tests/IndividualTest.cpp @@ -1,3 +1,23 @@ +// +// Test IndividualTest +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #include "Optimizer/EA/Individual.h" #include "Optimizer/EA/Individual.h" #include "gtest/gtest.h" diff --git a/optimizer/Tests/MPIHelperTest.cpp b/optimizer/Tests/MPIHelperTest.cpp index dcdf553afab5dbf6ad396c14482e5d801b40bb67..745d37582a36934fec5e41870935e0918c7282e8 100644 --- a/optimizer/Tests/MPIHelperTest.cpp +++ b/optimizer/Tests/MPIHelperTest.cpp @@ -1,3 +1,23 @@ +// +// Test MPIHelperTest +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #include "Util/MPIHelper.h" #include "gtest/gtest.h" diff --git a/optimizer/Tests/ManagedIDsTest.cpp b/optimizer/Tests/ManagedIDsTest.cpp index 34f8b3c37dd370f4741405811b1c45c62d4b8a5d..2b899bd03ccf088a8100ec4195e79f9523cf097a 100644 --- a/optimizer/Tests/ManagedIDsTest.cpp +++ b/optimizer/Tests/ManagedIDsTest.cpp @@ -1,3 +1,23 @@ +// +// Test ManagedIDsTest +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #include "Util/ManagedIDs.h" #include "gtest/gtest.h" #include "boost/smart_ptr.hpp" diff --git a/optimizer/Tests/PopulationTest.cpp b/optimizer/Tests/PopulationTest.cpp index 3f9edf39ac8f4fc246d4960450c4b4196ad2e2f7..2ea29fd85d6be3cb32c15ff188c8a4b7217f8548 100644 --- a/optimizer/Tests/PopulationTest.cpp +++ b/optimizer/Tests/PopulationTest.cpp @@ -1,3 +1,23 @@ +// +// Test PopulationTest +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #include "Optimizer/EA/Population.h" #include "Optimizer/EA/Individual.h" #include "gtest/gtest.h" diff --git a/optimizer/Tests/PythonExprTest.cpp b/optimizer/Tests/PythonExprTest.cpp index 5828e96aceb5573f2e6c0382c94d244e8cd22ea7..8c67e96440c0e91c47a8ea384b812bdcc85976e0 100644 --- a/optimizer/Tests/PythonExprTest.cpp +++ b/optimizer/Tests/PythonExprTest.cpp @@ -1,3 +1,23 @@ +// +// Test PythonExprTest +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #include <set> #include <string> diff --git a/optimizer/Tests/SDDSParserTest.cpp b/optimizer/Tests/SDDSParserTest.cpp index 2604dbb9b20d0945ef81e0bc2e072bc88b4ebbf3..182f751b3bcfd57d4bc5cad3dcbead2c78460197 100644 --- a/optimizer/Tests/SDDSParserTest.cpp +++ b/optimizer/Tests/SDDSParserTest.cpp @@ -1,4 +1,23 @@ - +// +// Test SDDSParserTest +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #include "Util/SDDSReader.h" #include "gtest/gtest.h" diff --git a/optimizer/Tests/SumErrSqExpressionTest.cpp b/optimizer/Tests/SumErrSqExpressionTest.cpp index 20a6c23af0a1a886df27eb886256c184af1744b1..6396cfd10a46178e4456990ef33a58cc89ec5c9a 100644 --- a/optimizer/Tests/SumErrSqExpressionTest.cpp +++ b/optimizer/Tests/SumErrSqExpressionTest.cpp @@ -1,3 +1,23 @@ +// +// Test SumErrSqExpressionTest +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #include <set> #include <string> diff --git a/optimizer/Util/AsyncSendBuffers.h b/optimizer/Util/AsyncSendBuffers.h index 1cf3dfeef2357cb3211d786c92055afacd9c4b29..4541e94c9f124fd3ffd5e395ef8de1eb7d74d716 100644 --- a/optimizer/Util/AsyncSendBuffers.h +++ b/optimizer/Util/AsyncSendBuffers.h @@ -1,3 +1,23 @@ +// +// Class AsyncSendBuffer and AsyncSendBuffers +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #include <vector> #include <algorithm> #include <string.h> diff --git a/optimizer/Util/CmdArguments.cpp b/optimizer/Util/CmdArguments.cpp index d54a14312a4a5dcc891f6c07fb9ac63f8c1d39fd..14a2e1b1d11706b7493db1f2818ea46fa800a37b 100644 --- a/optimizer/Util/CmdArguments.cpp +++ b/optimizer/Util/CmdArguments.cpp @@ -1,3 +1,30 @@ +// +// Class CmdArguments +// Parsing command line arguments +// +// In order to have a flexible framework, each component implementation gets +// access to all command line arguments. +// All command line options have the form: +// --name=value +// Spaces before and after the "=" will be trimmed. +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #include "Util/CmdArguments.h" void CmdArguments::addArguments(int argc, char **argv) { diff --git a/optimizer/Util/CmdArguments.h b/optimizer/Util/CmdArguments.h index 80861f7b0a6cd678c1a76b95301f21165a316a17..e90f58896b0f89eb70fe636d04606aaba447679c 100644 --- a/optimizer/Util/CmdArguments.h +++ b/optimizer/Util/CmdArguments.h @@ -1,3 +1,30 @@ +// +// Class CmdArguments +// Parsing command line arguments +// +// In order to have a flexible framework, each component implementation gets +// access to all command line arguments. +// All command line options have the form: +// --name=value +// Spaces before and after the "=" will be trimmed. +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __CMD_ARGUMENTS__ #define __CMD_ARGUMENTS__ @@ -13,16 +40,6 @@ #include "Util/OptPilotException.h" -/** - * \class CmdArguments - * \brief Parsing command line arguments - * - * In order to have a flexible framework, each component implementation gets - * access to all command line arguments. - * All command line options have the form: - * --name=value - * Spaces before and after the "=" will be trimmed. - */ class CmdArguments { public: diff --git a/optimizer/Util/MPIHelper.cpp b/optimizer/Util/MPIHelper.cpp index 4dfe6a779dd71ea2e5c85942d561bad35d8ea607..4199d7c8985730bf7e8a71ecddba505ea7b37f7b 100644 --- a/optimizer/Util/MPIHelper.cpp +++ b/optimizer/Util/MPIHelper.cpp @@ -1,3 +1,23 @@ +// +// Global functions MPIHelper +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #include <string.h> #include <boost/static_assert.hpp> diff --git a/optimizer/Util/MPIHelper.h b/optimizer/Util/MPIHelper.h index f0446dc9dfcc5b2fd5345669da43b4dc48b59128..79d8e4c2fb9426fd84e5d78a12453c50782f0fb5 100644 --- a/optimizer/Util/MPIHelper.h +++ b/optimizer/Util/MPIHelper.h @@ -1,3 +1,23 @@ +// +// Global functions MPIHelper +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __MPIHELPER_H__ #define __MPIHELPER_H__ diff --git a/optimizer/Util/ManagedIDs.h b/optimizer/Util/ManagedIDs.h index add88f3a9ed77625fb7d7f514263f02e79fd0ba7..4c5494ef742371c005e88ef345cba0c5d14b0ff3 100644 --- a/optimizer/Util/ManagedIDs.h +++ b/optimizer/Util/ManagedIDs.h @@ -1,11 +1,29 @@ +// +// Class ManagedIDs +// Simple class to manage an ID pool. +// +// Previously freed ID's are redistributed on following requests. +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #include <cstddef> #include <queue> -/** - * \brief Simple class to manage an ID pool. - * - * Previously freed ID's are redistributed on following requests. - */ class ManagedIDs { public: diff --git a/optimizer/Util/NativeHashGenerator.h b/optimizer/Util/NativeHashGenerator.h index 51af7f04b7940c40d225d657511325341979037e..91b196d370e38d69573c5cc2edb25bd8918b2c1a 100644 --- a/optimizer/Util/NativeHashGenerator.h +++ b/optimizer/Util/NativeHashGenerator.h @@ -1,14 +1,31 @@ +// +// Class NativeHashGenerator +// Generates a hash name. +// Concatenates and hashes a vector of strings. +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #include <vector> #include <string> #include <sstream> #include <functional> #include <algorithm> -/** - * \brief Generates a hash name. - * - * Concatenates and hashes a vector of strings. - */ class NativeHashGenerator { public: diff --git a/optimizer/Util/OptPilotException.h b/optimizer/Util/OptPilotException.h index cbc3b1c6d16212e88b960b2426ceb3a116e9d8b5..3c14b83ba91f6a299221440b63b02db7e538115e 100644 --- a/optimizer/Util/OptPilotException.h +++ b/optimizer/Util/OptPilotException.h @@ -1,3 +1,23 @@ +// +// Class OptPilotException +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __OPTPILOTEXCEPTION_H__ #define __OPTPILOTEXCEPTION_H__ diff --git a/optimizer/Util/ProbeReader.cpp b/optimizer/Util/ProbeReader.cpp index e95da06ec121c04a4c7e01966a3fb0dab650e68a..b211e147a173e08c019dd9e8524e54b69c3d0319 100644 --- a/optimizer/Util/ProbeReader.cpp +++ b/optimizer/Util/ProbeReader.cpp @@ -1,3 +1,24 @@ +// +// Class ProbeReader +// Implements a parser and value extractor for Probe loss files. +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #include "ProbeReader.h" #include "Util/OptPilotException.h" diff --git a/optimizer/Util/ProbeReader.h b/optimizer/Util/ProbeReader.h index 7800344e998a3185b193feba1bf1759b4378cc6a..84d631cae67928ea5979fc0ae0efb1120264e1b9 100644 --- a/optimizer/Util/ProbeReader.h +++ b/optimizer/Util/ProbeReader.h @@ -1,15 +1,31 @@ +// +// Class ProbeReader +// Implements a parser and value extractor for Probe loss files. +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __PROBEREADER_H__ #define __PROBEREADER_H__ #include <string> #include <vector> #include <map> -// #include <locale> -/** - * \class SDDSReader - * \brief Implements a parser and value extractor for Probe loss files - */ class ProbeReader { public: diff --git a/optimizer/Util/SDDSParser.cpp b/optimizer/Util/SDDSParser.cpp index 30dc9fc7553cb46bc48fe87e8697c02c6aa5f845..e1cef724d78de3189169eaf6247987f206715c8c 100644 --- a/optimizer/Util/SDDSParser.cpp +++ b/optimizer/Util/SDDSParser.cpp @@ -1,3 +1,20 @@ +// +// Class SDDSParser +// This class writes column entries of SDDS files. +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #include "SDDSParser.h" #include <boost/algorithm/string.hpp> diff --git a/optimizer/Util/SDDSParser.h b/optimizer/Util/SDDSParser.h index 7143cacdeb03278629d7d1bde2506abb2030c0a3..38b5ce28d943636c572ecdeca23e55a7614aad2a 100644 --- a/optimizer/Util/SDDSParser.h +++ b/optimizer/Util/SDDSParser.h @@ -1,7 +1,20 @@ // -// Copyright & License: See Copyright.readme in src directory +// Class SDDSParser +// This class writes column entries of SDDS files. +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. // - #include "Util/SDDSParser/ast.hpp" #include "Util/SDDSParser/file.hpp" #include "Util/SDDSParser/skipper.hpp" diff --git a/optimizer/Util/SDDSParser/SDDSParserException.h b/optimizer/Util/SDDSParser/SDDSParserException.h index 7fb023c5aaee38ba8da1811589d1c48fd23b59cd..81d187864f184c1fb940dba45af257e731cf381f 100644 --- a/optimizer/Util/SDDSParser/SDDSParserException.h +++ b/optimizer/Util/SDDSParser/SDDSParserException.h @@ -1,3 +1,19 @@ +// +// Class SDDSParserException +// +// Copyright (c) 2018, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __SDDSPARSEREXCEPTION_H__ #define __SDDSPARSEREXCEPTION_H__ diff --git a/optimizer/Util/SDDSParser/array.cpp b/optimizer/Util/SDDSParser/array.cpp index 782114951967ae24544073ea70b4a1994ca82b48..87e1600cfdcd2c540919372e1aa37a58d174fdd8 100644 --- a/optimizer/Util/SDDSParser/array.cpp +++ b/optimizer/Util/SDDSParser/array.cpp @@ -1,8 +1,19 @@ // -// Copyright & License: See Copyright.readme in src directory +// Struct array +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. // - - #include "array_def.hpp" typedef std::string::const_iterator iterator_t; diff --git a/optimizer/Util/SDDSParser/array.hpp b/optimizer/Util/SDDSParser/array.hpp index 0d61f9767d421faf24be1178174a40f72f261c49..79a386545f76793cc3289db68df3b140788c9880 100644 --- a/optimizer/Util/SDDSParser/array.hpp +++ b/optimizer/Util/SDDSParser/array.hpp @@ -1,11 +1,19 @@ // -// Copyright & License: See Copyright.readme in src directory +// Struct array +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. // - -/*! - Class documentation -*/ - #ifndef ARRAY_HPP_ #define ARRAY_HPP_ diff --git a/optimizer/Util/SDDSParser/array_def.hpp b/optimizer/Util/SDDSParser/array_def.hpp index 7c9c3ac66f165028b5087f3593142759cefa3ece..ab75e648f6229178b4ba65479bf3c88c6f028932 100644 --- a/optimizer/Util/SDDSParser/array_def.hpp +++ b/optimizer/Util/SDDSParser/array_def.hpp @@ -1,11 +1,19 @@ // -// Copyright & License: See Copyright.readme in src directory +// Struct array +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. // - -/*! - Class documentation -*/ - #ifndef ARRAY_DEF_HPP_ #define ARRAY_DEF_HPP_ diff --git a/optimizer/Util/SDDSParser/associate.cpp b/optimizer/Util/SDDSParser/associate.cpp index 9cf0fcc7dc3e7a7459c1b9db2da798e76664f442..6a660751454f18e8bb96a09fdf9b9fbfb93b1a54 100644 --- a/optimizer/Util/SDDSParser/associate.cpp +++ b/optimizer/Util/SDDSParser/associate.cpp @@ -1,7 +1,19 @@ // -// Copyright & License: See Copyright.readme in src directory +// Struct associate +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. // - #include "associate_def.hpp" typedef std::string::const_iterator iterator_t; diff --git a/optimizer/Util/SDDSParser/associate.hpp b/optimizer/Util/SDDSParser/associate.hpp index 9d79ece79488504b821dbc24fd3b088c4fe95af8..82c24ae56dcaa53d61b1f2ee9fe68863b10827b5 100644 --- a/optimizer/Util/SDDSParser/associate.hpp +++ b/optimizer/Util/SDDSParser/associate.hpp @@ -1,11 +1,19 @@ // -// Copyright & License: See Copyright.readme in src directory +// Struct associate +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. // - -/*! - Class documentation -*/ - #ifndef ASSOCIATE_HPP_ #define ASSOCIATE_HPP_ diff --git a/optimizer/Util/SDDSParser/associate_def.hpp b/optimizer/Util/SDDSParser/associate_def.hpp index 5114b2d9d15b993461864495a249b4a16bdbf8e1..9158bbdc9e49353c751fc9ecfc55dc391128cecc 100644 --- a/optimizer/Util/SDDSParser/associate_def.hpp +++ b/optimizer/Util/SDDSParser/associate_def.hpp @@ -1,11 +1,19 @@ // -// Copyright & License: See Copyright.readme in src directory +// Struct associate +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. // - -/*! - Class documentation -*/ - #ifndef ASSOCIATE_DEF_HPP_ #define ASSOCIATE_DEF_HPP_ diff --git a/optimizer/Util/SDDSParser/ast.cpp b/optimizer/Util/SDDSParser/ast.cpp index d1e4a515c9321fed0882ed935aaf1a82b5b2ebf7..0c2a208124ac10fbe27e6d862c953ef6c89fb145 100644 --- a/optimizer/Util/SDDSParser/ast.cpp +++ b/optimizer/Util/SDDSParser/ast.cpp @@ -1,7 +1,19 @@ // -// Copyright & License: See Copyright.readme in src directory +// Namespace ast +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. // - #include "ast_def.hpp" #include "skipper.hpp" diff --git a/optimizer/Util/SDDSParser/ast.hpp b/optimizer/Util/SDDSParser/ast.hpp index 9d6dc1d17352330509e6ff5e1203afd0f6dadd06..915b98431d1a3c33a510a95ea0633fa2131180f9 100644 --- a/optimizer/Util/SDDSParser/ast.hpp +++ b/optimizer/Util/SDDSParser/ast.hpp @@ -1,11 +1,19 @@ // -// Copyright & License: See Copyright.readme in src directory +// Namespace ast +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. // - -/*! - Class documentation -*/ - #ifndef AST_HPP_ #define AST_HPP_ diff --git a/optimizer/Util/SDDSParser/ast_def.hpp b/optimizer/Util/SDDSParser/ast_def.hpp index abe755ed9cabc09285bcb7d916391a222cdf2b01..dacfd936c10db90a3c60bf9e0f1ddd344519d9cb 100644 --- a/optimizer/Util/SDDSParser/ast_def.hpp +++ b/optimizer/Util/SDDSParser/ast_def.hpp @@ -1,11 +1,19 @@ // -// Copyright & License: See Copyright.readme in src directory +// Namespace ast +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. // - -/*! - Class documentation -*/ - #ifndef AST_DEF_HPP_ #define AST_DEF_HPP_ diff --git a/optimizer/Util/SDDSParser/column.cpp b/optimizer/Util/SDDSParser/column.cpp index b4ec46edb5cfe608945e4f05af12efb7a44549f3..c8048678ed002c8e8191979fb33b28225a665919 100644 --- a/optimizer/Util/SDDSParser/column.cpp +++ b/optimizer/Util/SDDSParser/column.cpp @@ -1,7 +1,19 @@ // -// Copyright & License: See Copyright.readme in src directory +// Struct column +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. // - #include "column_def.hpp" unsigned int SDDS::column::count_m = 0; diff --git a/optimizer/Util/SDDSParser/column.hpp b/optimizer/Util/SDDSParser/column.hpp index 033123c2039dfe8d8c95e2e13490fcf6f1053090..b6ddb1cec9849398bc5d56395b95762dc95dd5ff 100644 --- a/optimizer/Util/SDDSParser/column.hpp +++ b/optimizer/Util/SDDSParser/column.hpp @@ -1,11 +1,19 @@ // -// Copyright & License: See Copyright.readme in src directory +// Struct column +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. // - -/*! - Class documentation -*/ - #ifndef COLUMN_HPP_ #define COLUMN_HPP_ diff --git a/optimizer/Util/SDDSParser/column_def.hpp b/optimizer/Util/SDDSParser/column_def.hpp index 754ab636b238cc8044e09b5f16a4e10afbf76df6..6561815e93409b7c06b53800f6b8be97f4279174 100644 --- a/optimizer/Util/SDDSParser/column_def.hpp +++ b/optimizer/Util/SDDSParser/column_def.hpp @@ -1,11 +1,19 @@ // -// Copyright & License: See Copyright.readme in src directory +// Struct column +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. // - -/*! - Class documentation -*/ - #ifndef COLUMN_DEF_HPP_ #define COLUMN_DEF_HPP_ diff --git a/optimizer/Util/SDDSParser/data.cpp b/optimizer/Util/SDDSParser/data.cpp index 3c69bd377609937358acf55f480add8682e32ff5..d20f37c0f1ce492c0d5a6a37ca21b110b781426c 100644 --- a/optimizer/Util/SDDSParser/data.cpp +++ b/optimizer/Util/SDDSParser/data.cpp @@ -1,7 +1,19 @@ // -// Copyright & License: See Copyright.readme in src directory +// Struct data +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. // - #include "data.hpp" #include "data_def.hpp" diff --git a/optimizer/Util/SDDSParser/data.hpp b/optimizer/Util/SDDSParser/data.hpp index 3d22510f23ae3e0cd9debf04d4b3054df8078513..cf3bafd6cc47f5b2e4a51353df4cd863bd871ab4 100644 --- a/optimizer/Util/SDDSParser/data.hpp +++ b/optimizer/Util/SDDSParser/data.hpp @@ -1,11 +1,19 @@ // -// Copyright & License: See Copyright.readme in src directory +// Struct data +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. // - -/*! - Class documentation -*/ - #ifndef DATA_HPP_ #define DATA_HPP_ diff --git a/optimizer/Util/SDDSParser/data_def.hpp b/optimizer/Util/SDDSParser/data_def.hpp index 3270a0c5a3fa358b297f48120588521f33751539..8b497b8afd61a677a1ae2d205db282a4d4c5b061 100644 --- a/optimizer/Util/SDDSParser/data_def.hpp +++ b/optimizer/Util/SDDSParser/data_def.hpp @@ -1,11 +1,19 @@ // -// Copyright & License: See Copyright.readme in src directory +// Struct data +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. // - -/*! - Class documentation -*/ - #ifndef DATA_DEF_HPP_ #define DATA_DEF_HPP_ diff --git a/optimizer/Util/SDDSParser/description.cpp b/optimizer/Util/SDDSParser/description.cpp index cb13b55522b20f0a1dbb5f75fb780cbd62557a44..0437b95986371fb49279391958ef53ad5e322119 100644 --- a/optimizer/Util/SDDSParser/description.cpp +++ b/optimizer/Util/SDDSParser/description.cpp @@ -1,7 +1,19 @@ // -// Copyright & License: See Copyright.readme in src directory +// Struct description +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. // - #include "description_def.hpp" typedef std::string::const_iterator iterator_t; diff --git a/optimizer/Util/SDDSParser/description.hpp b/optimizer/Util/SDDSParser/description.hpp index 59f5e5e97aa2313703fb0555bd170753aae68f57..d4dd8ee9deee56c8b849a2cc310eb2e87038e429 100644 --- a/optimizer/Util/SDDSParser/description.hpp +++ b/optimizer/Util/SDDSParser/description.hpp @@ -1,11 +1,19 @@ // -// Copyright & License: See Copyright.readme in src directory +// Struct description +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. // - -/*! - Class documentation -*/ - #ifndef DESCRIPTION_HPP_ #define DESCRIPTION_HPP_ diff --git a/optimizer/Util/SDDSParser/description_def.hpp b/optimizer/Util/SDDSParser/description_def.hpp index 8ce6c586feb2cfdee8bd7f99ccdfb3633a9eafd3..03659bebbafff86eb5c941d2a7e7d5b4a2419f57 100644 --- a/optimizer/Util/SDDSParser/description_def.hpp +++ b/optimizer/Util/SDDSParser/description_def.hpp @@ -1,11 +1,19 @@ // -// Copyright & License: See Copyright.readme in src directory +// Struct description +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. // - -/*! - Class documentation -*/ - #ifndef DESCRIPTION_DEF_HPP_ #define DESCRIPTION_DEF_HPP_ diff --git a/optimizer/Util/SDDSParser/error_handler.hpp b/optimizer/Util/SDDSParser/error_handler.hpp index f0871eb556ce238437ceaacbd718e1250d6e1387..e5fe9a68b55c0ada7b3e7cc01d5645e6ca5bebe1 100644 --- a/optimizer/Util/SDDSParser/error_handler.hpp +++ b/optimizer/Util/SDDSParser/error_handler.hpp @@ -1,11 +1,19 @@ // -// Copyright & License: See Copyright.readme in src directory +// Struct error_handler +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. // - -/*! - Class documentation -*/ - #ifndef ERROR_HANDLER_HPP_ #define ERROR_HANDLER_HPP_ diff --git a/optimizer/Util/SDDSParser/file.cpp b/optimizer/Util/SDDSParser/file.cpp index 323dd988e1d934023b8f951588349b48c3639310..41267c21e00b97b9bb576d1e2b912319a9412b39 100644 --- a/optimizer/Util/SDDSParser/file.cpp +++ b/optimizer/Util/SDDSParser/file.cpp @@ -1,7 +1,19 @@ // -// Copyright & License: See Copyright.readme in src directory +// Struct file +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. // - #include "file_def.hpp" typedef std::string::const_iterator iterator_t; diff --git a/optimizer/Util/SDDSParser/file.hpp b/optimizer/Util/SDDSParser/file.hpp index 6335ddd3d0141ad1a721cc79d994890c281a8589..14d482e31cb9eb0060963357f3f42ff6159823b7 100644 --- a/optimizer/Util/SDDSParser/file.hpp +++ b/optimizer/Util/SDDSParser/file.hpp @@ -1,11 +1,19 @@ // -// Copyright & License: See Copyright.readme in src directory +// Struct file +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. // - -/*! - Class documentation -*/ - #ifndef FILE_HPP_ #define FILE_HPP_ diff --git a/optimizer/Util/SDDSParser/file_def.hpp b/optimizer/Util/SDDSParser/file_def.hpp index 521bae4339164624a806d11493cb251204e78dc5..96734b21ac0ed9e71e10c83cd64c0ca374331902 100644 --- a/optimizer/Util/SDDSParser/file_def.hpp +++ b/optimizer/Util/SDDSParser/file_def.hpp @@ -1,11 +1,19 @@ // -// Copyright & License: See Copyright.readme in src directory +// Struct file +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. // - -/*! - Class documentation -*/ - #ifndef FILE_DEF_HPP_ #define FILE_DEF_HPP_ diff --git a/optimizer/Util/SDDSParser/include.cpp b/optimizer/Util/SDDSParser/include.cpp index a6c84c49d0315315f2fd0ec26dcdfeb6acb08d22..80d8ca346dc9cde2c888465dbdd0ce677ac7dcc4 100644 --- a/optimizer/Util/SDDSParser/include.cpp +++ b/optimizer/Util/SDDSParser/include.cpp @@ -1,7 +1,19 @@ // -// Copyright & License: See Copyright.readme in src directory +// Struct include +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. // - #include "include_def.hpp" typedef std::string::const_iterator iterator_t; diff --git a/optimizer/Util/SDDSParser/include.hpp b/optimizer/Util/SDDSParser/include.hpp index dec789e429550b3867a1bf95e85ca2741ca8533a..06d8becd9c439cfa6e8b62e65786e5fa4129b027 100644 --- a/optimizer/Util/SDDSParser/include.hpp +++ b/optimizer/Util/SDDSParser/include.hpp @@ -1,11 +1,19 @@ // -// Copyright & License: See Copyright.readme in src directory +// Struct include +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. // - -/*! - Class documentation -*/ - #ifndef INCLUDE_HPP_ #define INCLUDE_HPP_ diff --git a/optimizer/Util/SDDSParser/include_def.hpp b/optimizer/Util/SDDSParser/include_def.hpp index 65da1f6249be990ecd6349a99d27d8d9ca47c859..31daf4360a5181bc2a10604c9b5eb5b83785c063 100644 --- a/optimizer/Util/SDDSParser/include_def.hpp +++ b/optimizer/Util/SDDSParser/include_def.hpp @@ -1,11 +1,19 @@ // -// Copyright & License: See Copyright.readme in src directory +// Struct include +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. // - -/*! - Class documentation -*/ - #ifndef INCLUDE_DEF_HPP_ #define INCLUDE_DEF_HPP_ diff --git a/optimizer/Util/SDDSParser/parameter.cpp b/optimizer/Util/SDDSParser/parameter.cpp index 8bb963d861b037ada4b337d350655565c80bd4a4..56fd1ecf8b0087b8889aa4f66fccb5b02c9a8eab 100644 --- a/optimizer/Util/SDDSParser/parameter.cpp +++ b/optimizer/Util/SDDSParser/parameter.cpp @@ -1,7 +1,19 @@ // -// Copyright & License: See Copyright.readme in src directory +// Struct parameter +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. // - #include "parameter_def.hpp" unsigned int SDDS::parameter::count_m = 0; diff --git a/optimizer/Util/SDDSParser/parameter.hpp b/optimizer/Util/SDDSParser/parameter.hpp index 427aecbffd4ccaef00591d38b49e00dbcdbde493..969a99d6887cf4dd0cf447895b026a8bd13b3d5d 100644 --- a/optimizer/Util/SDDSParser/parameter.hpp +++ b/optimizer/Util/SDDSParser/parameter.hpp @@ -1,11 +1,19 @@ // -// Copyright & License: See Copyright.readme in src directory +// Struct parameter +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. // - -/*! - Class documentation -*/ - #ifndef PARAMETER_HPP_ #define PARAMETER_HPP_ diff --git a/optimizer/Util/SDDSParser/parameter_def.hpp b/optimizer/Util/SDDSParser/parameter_def.hpp index 80ab52ed15f28cc20ac21b8bc823965d041d0b6b..cbad87aa56f6593afdced50d6bde90d3fcbc43a1 100644 --- a/optimizer/Util/SDDSParser/parameter_def.hpp +++ b/optimizer/Util/SDDSParser/parameter_def.hpp @@ -1,11 +1,19 @@ // -// Copyright & License: See Copyright.readme in src directory +// Struct parameter +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. // - -/*! - Class documentation -*/ - #ifndef PARAMETER_DEF_HPP_ #define PARAMETER_DEF_HPP_ diff --git a/optimizer/Util/SDDSParser/skipper.hpp b/optimizer/Util/SDDSParser/skipper.hpp index 56b0fca195e400891a294f1e5ae36718ca094207..a73b256f6b0dbcb951a697bea8713a3a172d2f03 100644 --- a/optimizer/Util/SDDSParser/skipper.hpp +++ b/optimizer/Util/SDDSParser/skipper.hpp @@ -1,11 +1,19 @@ // -// Copyright & License: See Copyright.readme in src directory +// Struct skipper +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. // - -/*! - Class documentation -*/ - #ifndef SKIPPER_HPP_ #define SKIPPER_HPP_ diff --git a/optimizer/Util/SDDSParser/version.cpp b/optimizer/Util/SDDSParser/version.cpp index 8d59641e4d6c340e1343919da47167d08acea298..850aff1963ece87e33681a7bc930274320297291 100644 --- a/optimizer/Util/SDDSParser/version.cpp +++ b/optimizer/Util/SDDSParser/version.cpp @@ -1,7 +1,19 @@ // -// Copyright & License: See Copyright.readme in src directory +// Struct version +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. // - #include "version_def.hpp" typedef std::string::const_iterator iterator_t; diff --git a/optimizer/Util/SDDSParser/version.hpp b/optimizer/Util/SDDSParser/version.hpp index 7a8c09f3b8f369ce30da26f4dd02fbfb6f898288..152533d176456687f753e5a478c515a05422f0b3 100644 --- a/optimizer/Util/SDDSParser/version.hpp +++ b/optimizer/Util/SDDSParser/version.hpp @@ -1,11 +1,19 @@ // -// Copyright & License: See Copyright.readme in src directory +// Struct version +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. // - -/*! - Class documentation -*/ - #ifndef VERSION_HPP_ #define VERSION_HPP_ diff --git a/optimizer/Util/SDDSParser/version_def.hpp b/optimizer/Util/SDDSParser/version_def.hpp index 7c3c0d5575fd58edbc482290593805ea3e5e4803..43708a9a049d6bb765a56834f22600288e65e548 100644 --- a/optimizer/Util/SDDSParser/version_def.hpp +++ b/optimizer/Util/SDDSParser/version_def.hpp @@ -1,11 +1,19 @@ // -// Copyright & License: See Copyright.readme in src directory +// Struct version +// +// Copyright (c) 2017, Christof Metzger-Kraus, Open Sourcerer +// All rights reserved +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. // - -/*! - Class documentation -*/ - #ifndef VERSION_DEF_HPP_ #define VERSION_DEF_HPP_ diff --git a/optimizer/Util/Statistics.h b/optimizer/Util/Statistics.h index 32971b2a307f545930c96e1bec57fd3172237b73..bf2001e142ff6dee3396cfa0f4386b8093a406a3 100644 --- a/optimizer/Util/Statistics.h +++ b/optimizer/Util/Statistics.h @@ -1,3 +1,23 @@ +// +// Class Statistics +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __STATISTICS_H__ #define __STATISTICS_H__ diff --git a/optimizer/Util/Trace/CoutSink.h b/optimizer/Util/Trace/CoutSink.h index d6e6e10e833a89a9bffa42cb74f666c6d86aea8d..746511e922533a7179abeed70db106414b1701fe 100644 --- a/optimizer/Util/Trace/CoutSink.h +++ b/optimizer/Util/Trace/CoutSink.h @@ -1,3 +1,23 @@ +// +// Class CoutSink +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __TRACE_COUT_SINK_H__ #define __TRACE_COUT_SINK_H__ diff --git a/optimizer/Util/Trace/FileSink.h b/optimizer/Util/Trace/FileSink.h index 96d3258b0aa32514298fbcdb3fe0881771cee79a..d844a54285bb905e3e536b982ab9589864833b95 100644 --- a/optimizer/Util/Trace/FileSink.h +++ b/optimizer/Util/Trace/FileSink.h @@ -1,3 +1,23 @@ +// +// Class FileSink +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __TRACE_FILE_SINK_H__ #define __TRACE_FILE_SINK_H__ diff --git a/optimizer/Util/Trace/MyPid.h b/optimizer/Util/Trace/MyPid.h index 13a6c367344e923ed6f3944aac77240e10ec11c8..70931647a907a279313aeb0eeb0eb8939c10085f 100644 --- a/optimizer/Util/Trace/MyPid.h +++ b/optimizer/Util/Trace/MyPid.h @@ -1,3 +1,23 @@ +// +// Class MyPid +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #include "Util/Trace/TraceComponent.h" #include "mpi.h" diff --git a/optimizer/Util/Trace/Timestamp.h b/optimizer/Util/Trace/Timestamp.h index eed9e4623065f4a8b4c36166e93756b31a91068f..4a0d4c7e7c8a306cfcbc63d7fa6b2204c1d21e86 100644 --- a/optimizer/Util/Trace/Timestamp.h +++ b/optimizer/Util/Trace/Timestamp.h @@ -1,3 +1,23 @@ +// +// Class Timestamp +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __TIMESTAMP_H__ #define __TIMESTAMP_H__ diff --git a/optimizer/Util/Trace/Trace.h b/optimizer/Util/Trace/Trace.h index 804da10c8362cfb0e4b233052236edb8919a0f1a..8286fbb1a60545beca4c243f1fa14c3c9acd4e8b 100644 --- a/optimizer/Util/Trace/Trace.h +++ b/optimizer/Util/Trace/Trace.h @@ -1,3 +1,23 @@ +// +// Class Trace +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __TRACE_H__ #define __TRACE_H__ diff --git a/optimizer/Util/Trace/TraceComponent.h b/optimizer/Util/Trace/TraceComponent.h index a89378ee619800f96923fd09a46226986f293bfa..cd1c8bef27cd069c5760e2894d546c610072c25a 100644 --- a/optimizer/Util/Trace/TraceComponent.h +++ b/optimizer/Util/Trace/TraceComponent.h @@ -1,3 +1,23 @@ +// +// Class TraceComponent +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __TRACE_COMPONENT_H__ #define __TRACE_COMPONENT_H__ diff --git a/optimizer/Util/Types.h b/optimizer/Util/Types.h index 7d196fce3ea56f8d317d5d5dd43f56c84f623a65..a972d57656ba610010bc583eaaf785ed935ade5c 100644 --- a/optimizer/Util/Types.h +++ b/optimizer/Util/Types.h @@ -1,3 +1,23 @@ +// +// File Types +// +// Copyright (c) 2010 - 2013, Yves Ineichen, ETH Zürich +// All rights reserved +// +// Implemented as part of the PhD thesis +// "Toward massively parallel multi-objective optimization withapplication to +// particle accelerators" (https://doi.org/10.3929/ethz-a-009792359) +// +// This file is part of OPAL. +// +// OPAL is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// You should have received a copy of the GNU General Public License +// along with OPAL. If not, see <https://www.gnu.org/licenses/>. +// #ifndef __TYPES_H__ #define __TYPES_H__