|
@@ -35,21 +35,17 @@ struct GlobalParameters {
|
|
|
struct ModelParameters {
|
|
|
};
|
|
|
|
|
|
-using Model = artis::kernel::AbstractModel<artis::utils::DoubleTime,
|
|
|
- ModelParameters>;
|
|
|
-using Models = artis::kernel::AbstractModels<artis::utils::DoubleTime,
|
|
|
- ModelParameters>;
|
|
|
+using Model = artis::kernel::AbstractModel<artis::utils::DoubleTime, ModelParameters>;
|
|
|
+using Models = artis::kernel::AbstractModels<artis::utils::DoubleTime, ModelParameters>;
|
|
|
|
|
|
using Trace = artis::utils::Trace<artis::utils::DoubleTime>;
|
|
|
using TraceElement = artis::utils::TraceElement<artis::utils::DoubleTime>;
|
|
|
|
|
|
template<typename T>
|
|
|
-using AtomicModel = artis::kernel::AbstractAtomicModel<
|
|
|
- T, artis::utils::DoubleTime, ModelParameters>;
|
|
|
+using AtomicModel = artis::kernel::AbstractAtomicModel<T, artis::utils::DoubleTime, ModelParameters>;
|
|
|
|
|
|
template<typename T>
|
|
|
-using CoupledModel = artis::kernel::AbstractCoupledModel<
|
|
|
- T, artis::utils::DoubleTime, ModelParameters, GlobalParameters>;
|
|
|
+using CoupledModel = artis::kernel::AbstractCoupledModel<T, artis::utils::DoubleTime, ModelParameters, GlobalParameters>;
|
|
|
|
|
|
class AModel : public AtomicModel<AModel> {
|
|
|
public:
|
|
@@ -60,32 +56,31 @@ public:
|
|
|
DX, BX, IX
|
|
|
};
|
|
|
|
|
|
- AModel(Models = Models())
|
|
|
+ AModel(const Models& = Models())
|
|
|
+ :_ix(0), _bx(false), _dx(0.0)
|
|
|
{
|
|
|
+ // internals
|
|
|
Internal(IX, &AModel::_ix);
|
|
|
Internal(BX, &AModel::_bx);
|
|
|
Internal(DX, &AModel::_dx);
|
|
|
}
|
|
|
|
|
|
- virtual ~AModel() { }
|
|
|
+ ~AModel() override = default;
|
|
|
|
|
|
- void compute(double t, bool /* update */)
|
|
|
+ void compute(double t, bool /* update */) override
|
|
|
{
|
|
|
- ::Trace::trace() << ::TraceElement("A", t, artis::utils::COMPUTE)
|
|
|
- << "Start";
|
|
|
- ::Trace::trace().flush();
|
|
|
+ Trace::trace() << TraceElement("A", t, artis::utils::COMPUTE) << "Start";
|
|
|
+ Trace::trace().flush();
|
|
|
|
|
|
++_ix;
|
|
|
_bx = not _bx;
|
|
|
++_dx;
|
|
|
|
|
|
- ::Trace::trace() << ::TraceElement("A", t, artis::utils::COMPUTE)
|
|
|
- << "Stop";
|
|
|
- ::Trace::trace().flush();
|
|
|
-
|
|
|
+ Trace::trace() << TraceElement("A", t, artis::utils::COMPUTE) << "Stop";
|
|
|
+ Trace::trace().flush();
|
|
|
}
|
|
|
|
|
|
- void init(double /* t */, const ModelParameters& /* parameters */)
|
|
|
+ void init(double /* t */, const ModelParameters& /* parameters */) override
|
|
|
{
|
|
|
_ix = 0;
|
|
|
_bx = false;
|
|
@@ -110,15 +105,16 @@ public:
|
|
|
N
|
|
|
};
|
|
|
|
|
|
- BModel(Models = Models())
|
|
|
+ BModel(const Models& = Models())
|
|
|
+ :_ix(0), _bx(false), _dx(0.0), _iy(0), _by(false), _dy(0.0), _iz(0), _n(0)
|
|
|
{
|
|
|
- // external(IX, &BModel::_ix);
|
|
|
+ // externals
|
|
|
Externals(int, ((IX, &BModel::_ix)));
|
|
|
|
|
|
External(BX, &BModel::_bx);
|
|
|
External(DX, &BModel::_dx);
|
|
|
|
|
|
- // internal(IY, &BModel::_iy);
|
|
|
+ // internals
|
|
|
Internals(int, ((IY, &BModel::_iy), (IZ, &BModel::_iz)));
|
|
|
|
|
|
Internal(BY, &BModel::_by);
|
|
@@ -127,26 +123,23 @@ public:
|
|
|
States(int, ((N, &BModel::_n)));
|
|
|
}
|
|
|
|
|
|
- virtual ~BModel() { }
|
|
|
+ ~BModel() override = default;
|
|
|
|
|
|
- void compute(double t, bool /* update */)
|
|
|
+ void compute(double t, bool /* update */) override
|
|
|
{
|
|
|
- ::Trace::trace() << ::TraceElement("B", t, artis::utils::COMPUTE)
|
|
|
- << "Start";
|
|
|
- ::Trace::trace().flush();
|
|
|
+ Trace::trace() << TraceElement("B", t, artis::utils::COMPUTE) << "Start";
|
|
|
+ Trace::trace().flush();
|
|
|
|
|
|
_iy = _ix + 1;
|
|
|
_by = not _bx;
|
|
|
_dy = _dx + 1;
|
|
|
++_n;
|
|
|
|
|
|
- ::Trace::trace() << ::TraceElement("B", t, artis::utils::COMPUTE)
|
|
|
- << "Stop";
|
|
|
- ::Trace::trace().flush();
|
|
|
-
|
|
|
+ Trace::trace() << TraceElement("B", t, artis::utils::COMPUTE) << "Stop";
|
|
|
+ Trace::trace().flush();
|
|
|
}
|
|
|
|
|
|
- void init(double /* t */, const ModelParameters& /* parameters */)
|
|
|
+ void init(double /* t */, const ModelParameters& /* parameters */) override
|
|
|
{
|
|
|
_iy = 0;
|
|
|
_by = false;
|
|
@@ -186,7 +179,9 @@ public:
|
|
|
RootModel(Models submodels)
|
|
|
:
|
|
|
_a(dynamic_cast < AModel* >(submodels[0])),
|
|
|
- _b(dynamic_cast < BModel* >(submodels[1]))
|
|
|
+ _b(dynamic_cast < BModel* >(submodels[1])),
|
|
|
+ _dx(0.0),
|
|
|
+ _n(0)
|
|
|
{
|
|
|
// submodels
|
|
|
Submodels(((A, _a), (B, _b)));
|
|
@@ -202,7 +197,10 @@ public:
|
|
|
}
|
|
|
|
|
|
RootModel()
|
|
|
- :_a(new AModel), _b(new BModel)
|
|
|
+ :_a(new AModel),
|
|
|
+ _b(new BModel),
|
|
|
+ _dx(0.0),
|
|
|
+ _n(0)
|
|
|
{
|
|
|
// submodels
|
|
|
Submodels(((A, _a), (B, _b)));
|
|
@@ -214,21 +212,19 @@ public:
|
|
|
|
|
|
// states
|
|
|
States(int, ((N, &RootModel::_n)));
|
|
|
- // State(N, &RootModel::_n);
|
|
|
}
|
|
|
|
|
|
- virtual ~RootModel()
|
|
|
+ ~RootModel() override
|
|
|
{
|
|
|
delete _a;
|
|
|
delete _b;
|
|
|
}
|
|
|
|
|
|
- void compute(double t, bool /* update */)
|
|
|
+ void compute(double t, bool /* update */) override
|
|
|
{
|
|
|
- ::Trace::trace() << ::TraceElement(this->path(this), t,
|
|
|
- artis::utils::COMPUTE)
|
|
|
- << "Start";
|
|
|
- ::Trace::trace().flush();
|
|
|
+ Trace::trace() << TraceElement(this->path(this), t, artis::utils::COMPUTE) << "Start";
|
|
|
+ Trace::trace().flush();
|
|
|
+
|
|
|
(*_a)(t);
|
|
|
_b->put<double>(t, BModel::DX, _a->get<double>(t, AModel::DX));
|
|
|
_b->put<int>(t, BModel::IX, _a->get<int>(t, AModel::IX));
|
|
@@ -237,10 +233,11 @@ public:
|
|
|
|
|
|
++_n;
|
|
|
|
|
|
- this->trace_element(t, artis::utils::COMPUTE, "Stop");
|
|
|
+ Trace::trace() << TraceElement(this->path(this), t, artis::utils::COMPUTE) << "Stop";
|
|
|
+ Trace::trace().flush();
|
|
|
}
|
|
|
|
|
|
- void init(double t, const ModelParameters& parameters)
|
|
|
+ void init(double t, const ModelParameters& parameters) override
|
|
|
{
|
|
|
_a->init(t, parameters);
|
|
|
_b->init(t, parameters);
|
|
@@ -260,4 +257,4 @@ private:
|
|
|
int _n;
|
|
|
};
|
|
|
|
|
|
-#endif
|
|
|
+#endif
|