IPPL (Independent Parallel Particle Layer)
IPPL
Loading...
Searching...
No Matches
FieldContainer.hpp
Go to the documentation of this file.
1#ifndef IPPL_FIELD_CONTAINER_H
2#define IPPL_FIELD_CONTAINER_H
3
4#include <memory>
5
7
8// Define the FieldsContainer class
9template <typename T, unsigned Dim = 3>
11public:
13 std::array<bool, Dim> decomp, ippl::NDIndex<Dim> domain, Vector_t<T, Dim> origin,
14 bool isAllPeriodic)
15 : hr_m(hr)
16 , rmin_m(rmin)
17 , rmax_m(rmax)
18 , decomp_m(decomp)
19 , mesh_m(domain, hr, origin)
20 , fl_m(MPI_COMM_WORLD, domain, decomp, isAllPeriodic) {}
21
23
24private:
28 std::array<bool, Dim> decomp_m;
34
35public:
36 VField_t<T, Dim>& getE() { return E_m; }
37 void setE(VField_t<T, Dim>& E) { E_m = E; }
38
39 Field_t<Dim>& getRho() { return rho_m; }
40 void setRho(Field_t<Dim>& rho) { rho_m = rho; }
41
42 Field<T, Dim>& getPhi() { return phi_m; }
43 void setPhi(Field<T, Dim>& phi) { phi_m = phi; }
44
46 void setHr(const Vector_t<double, Dim>& hr) { hr_m = hr; }
47
49 void setRMin(const Vector_t<double, Dim>& rmin) { rmin_m = rmin; }
50
52 void setRMax(const Vector_t<double, Dim>& rmax) { rmax_m = rmax; }
53
54 std::array<bool, Dim> getDecomp() { return decomp_m; }
55 void setDecomp(std::array<bool, Dim> decomp) { decomp_m = decomp; }
56
57 Mesh_t<Dim>& getMesh() { return mesh_m; }
58 void setMesh(Mesh_t<Dim>& mesh) { mesh_m = mesh; }
59
61 void setFL(std::shared_ptr<FieldLayout_t<Dim>>& fl) { fl_m = fl; }
62
63 void initializeFields(std::string stype_m = "") {
64 E_m.initialize(mesh_m, fl_m);
65 rho_m.initialize(mesh_m, fl_m);
66 if (stype_m == "CG" || stype_m == "PCG") {
67 phi_m.initialize(mesh_m, fl_m);
68 }
69 }
70};
71
72#endif
Field< Vector_t< T, Dim >, Dim, ViewArgs... > VField_t
Definition datatypes.h:44
Field< double, Dim, ViewArgs... > Field_t
Definition datatypes.h:41
ippl::FieldLayout< Dim > FieldLayout_t
Definition datatypes.h:21
ippl::Vector< T, Dim > Vector_t
Definition datatypes.h:38
ippl::Field< T, Dim, Mesh_t< Dim >, Centering_t< Dim >, ViewArgs... > Field
Definition datatypes.h:29
ippl::UniformCartesian< double, Dim > Mesh_t
Definition datatypes.h:12
Vector_t< double, Dim > rmax_m
void setMesh(Mesh_t< Dim > &mesh)
void setE(VField_t< T, Dim > &E)
FieldContainer(Vector_t< T, Dim > &hr, Vector_t< T, Dim > &rmin, Vector_t< T, Dim > &rmax, std::array< bool, Dim > decomp, ippl::NDIndex< Dim > domain, Vector_t< T, Dim > origin, bool isAllPeriodic)
Vector_t< double, Dim > & getRMin()
Vector_t< double, Dim > hr_m
void initializeFields(std::string stype_m="")
Field< T, Dim > & getPhi()
std::array< bool, Dim > getDecomp()
void setRho(Field_t< Dim > &rho)
std::array< bool, Dim > decomp_m
Vector_t< double, Dim > & getRMax()
FieldLayout_t< Dim > & getFL()
void setFL(std::shared_ptr< FieldLayout_t< Dim > > &fl)
Field_t< Dim > & getRho()
void setRMax(const Vector_t< double, Dim > &rmax)
void setDecomp(std::array< bool, Dim > decomp)
void setHr(const Vector_t< double, Dim > &hr)
void setPhi(Field< T, Dim > &phi)
void setRMin(const Vector_t< double, Dim > &rmin)
Mesh_t< Dim > & getMesh()
FieldLayout_t< Dim > fl_m
VField_t< T, Dim > & getE()
Vector_t< double, Dim > & getHr()
Vector_t< double, Dim > rmin_m