27 #ifndef SCHNEK_FIELDTOOLS_HPP_ 28 #define SCHNEK_FIELDTOOLS_HPP_ 30 #include "../grid/field.hpp" 31 #include "../variables/dependencies.hpp" 38 template<
size_t>
class GridCheckingPolicy,
39 template<
size_t>
class ArrayCheckingPolicy,
40 template<
typename,
size_t>
class StoragePolicy
43 Field<T, rank, GridCheckingPolicy, StoragePolicy> &field,
44 Array<double, rank, ArrayCheckingPolicy> &coords,
46 DependencyUpdater &updater);
51 template<
size_t>
class GridCheckingPolicy,
52 template<
size_t>
class ArrayCheckingPolicy,
53 template<
typename,
size_t>
class StoragePolicy
56 Field<T, rank, GridCheckingPolicy, StoragePolicy> &field,
57 Array<double, rank, ArrayCheckingPolicy> &coords,
59 DependencyUpdater &updater,
60 pParameter dependent);
70 virtual void fill() = 0;
76 template<
size_t>
class GridCheckingPolicy,
77 template<
size_t>
class ArrayCheckingPolicy,
78 template<
typename,
size_t>
class StoragePolicy
80 class impl :
public implBase
93 : field(field_), coords(coords_), value(value_), updater(updater_) {}
97 fill_field(field, coords, value, updater);
101 typedef std::shared_ptr<implBase> pImplBase;
102 std::list<pImplBase> implementations;
107 template<
size_t>
class ArrayCheckingPolicy
115 std::list<pImplBase> &implementations;
119 std::list<pImplBase> &implementations_)
120 : coords(coords_), updater(updater_), implementations(implementations_) {}
126 template<
size_t>
class GridCheckingPolicy,
127 template<
typename,
size_t>
class StoragePolicy
131 pImplBase i(
new impl<T, rank, GridCheckingPolicy, ArrayCheckingPolicy, StoragePolicy>(
132 field, coords, value, updater
134 implementations.push_back(i);
143 template<
size_t>
class ArrayCheckingPolicy
151 void clear() { implementations.clear(); }
155 for(pImplBase i: implementations) i->fill();
162 #include "fieldtools.t" 164 #endif // FIELDFILLER_HPP_
Definition: dependencies.hpp:106
Definition: fieldtools.hpp:63
Definition: fieldtools.hpp:109