Reference documentation for deal.II version 9.0.0
particle_accessor.cc
1 // ---------------------------------------------------------------------
2 //
3 // Copyright (C) 2017 - 2018 by the deal.II authors
4 //
5 // This file is part of the deal.II library.
6 //
7 // The deal.II library is free software; you can use it, redistribute
8 // it, and/or modify it under the terms of the GNU Lesser General
9 // Public License as published by the Free Software Foundation; either
10 // version 2.1 of the License, or (at your option) any later version.
11 // The full text of the license can be found in the file LICENSE at
12 // the top level of the deal.II distribution.
13 //
14 // ---------------------------------------------------------------------
15 
16 #include <deal.II/particles/particle_accessor.h>
17 
18 DEAL_II_NAMESPACE_OPEN
19 
20 namespace Particles
21 {
22  template <int dim, int spacedim>
23  ParticleAccessor<dim,spacedim>::ParticleAccessor ()
24  :
25  map (nullptr),
26  particle ()
27  {}
28 
29 
30 
31  template <int dim, int spacedim>
32  ParticleAccessor<dim,spacedim>::ParticleAccessor (const std::multimap<internal::LevelInd, Particle<dim,spacedim> > &map,
33  const typename std::multimap<internal::LevelInd, Particle<dim,spacedim> >::iterator &particle)
34  :
35  map (const_cast<std::multimap<internal::LevelInd, Particle<dim,spacedim> > *> (&map)),
36  particle (particle)
37  {}
38 
39 
40 
41  template <int dim, int spacedim>
42  void
43  ParticleAccessor<dim,spacedim>::write_data (void *&data) const
44  {
45  Assert(particle != map->end(),
47 
48  particle->second.write_data(data);
49  }
50 
51 
52 
53  template <int dim, int spacedim>
54  void
55  ParticleAccessor<dim,spacedim>::set_location (const Point<spacedim> &new_loc)
56  {
57  Assert(particle != map->end(),
59 
60  particle->second.set_location(new_loc);
61  }
62 
63 
64 
65  template <int dim, int spacedim>
66  const Point<spacedim> &
67  ParticleAccessor<dim,spacedim>::get_location () const
68  {
69  Assert(particle != map->end(),
71 
72  return particle->second.get_location();
73  }
74 
75 
76 
77  template <int dim, int spacedim>
78  void
79  ParticleAccessor<dim,spacedim>::set_reference_location (const Point<dim> &new_loc)
80  {
81  Assert(particle != map->end(),
83 
84  particle->second.set_reference_location(new_loc);
85  }
86 
87 
88 
89  template <int dim, int spacedim>
90  const Point<dim> &
91  ParticleAccessor<dim,spacedim>::get_reference_location () const
92  {
93  Assert(particle != map->end(),
95 
96  return particle->second.get_reference_location();
97  }
98 
99 
100 
101  template <int dim, int spacedim>
103  ParticleAccessor<dim,spacedim>::get_id () const
104  {
105  Assert(particle != map->end(),
106  ExcInternalError());
107 
108  return particle->second.get_id();
109  }
110 
111 
112 
113  template <int dim, int spacedim>
114  void
115  ParticleAccessor<dim,spacedim>::set_property_pool (PropertyPool &new_property_pool)
116  {
117  Assert(particle != map->end(),
118  ExcInternalError());
119 
120  particle->second.set_property_pool(new_property_pool);
121  }
122 
123 
124 
125  template <int dim, int spacedim>
126  bool
127  ParticleAccessor<dim,spacedim>::has_properties () const
128  {
129  Assert(particle != map->end(),
130  ExcInternalError());
131 
132  return particle->second.has_properties();
133  }
134 
135 
136 
137  template <int dim, int spacedim>
138  void
139  ParticleAccessor<dim,spacedim>::set_properties (const std::vector<double> &new_properties)
140  {
141  Assert(particle != map->end(),
142  ExcInternalError());
143 
144  particle->second.set_properties(new_properties);
145  return;
146  }
147 
148 
149 
150  template <int dim, int spacedim>
152  ParticleAccessor<dim,spacedim>::get_properties () const
153  {
154  Assert(particle != map->end(),
155  ExcInternalError());
156 
157  return particle->second.get_properties();
158  }
159 
160 
161 
162  template <int dim, int spacedim>
164  ParticleAccessor<dim,spacedim>::get_surrounding_cell (const Triangulation<dim,spacedim> &triangulation) const
165  {
166  Assert(particle != map->end(),
167  ExcInternalError());
168 
169  const typename Triangulation<dim,spacedim>::cell_iterator cell (&triangulation,
170  particle->first.first,
171  particle->first.second);
172  return cell;
173  }
174 
175 
176 
177  template <int dim, int spacedim>
178  const ArrayView<double>
179  ParticleAccessor<dim,spacedim>::get_properties ()
180  {
181  Assert(particle != map->end(),
182  ExcInternalError());
183 
184  return particle->second.get_properties();
185  }
186 
187 
188 
189  template <int dim, int spacedim>
190  std::size_t
191  ParticleAccessor<dim,spacedim>::serialized_size_in_bytes () const
192  {
193  Assert(particle != map->end(),
194  ExcInternalError());
195 
196  return particle->second.serialized_size_in_bytes();
197  }
198 
199 
200 
201  template <int dim, int spacedim>
202  void
203  ParticleAccessor<dim,spacedim>::next ()
204  {
205  Assert (particle != map->end(),ExcInternalError());
206  ++particle;
207  }
208 
209 
210 
211  template <int dim, int spacedim>
212  void
213  ParticleAccessor<dim,spacedim>::prev ()
214  {
215  Assert (particle != map->begin(),ExcInternalError());
216  --particle;
217  }
218 
219 
220 
221  template <int dim, int spacedim>
222  bool
223  ParticleAccessor<dim,spacedim>::operator != (const ParticleAccessor<dim,spacedim> &other) const
224  {
225  return (map != other.map) || (particle != other.particle);
226  }
227 
228 
229 
230  template <int dim, int spacedim>
231  bool
232  ParticleAccessor<dim,spacedim>::operator == (const ParticleAccessor<dim,spacedim> &other) const
233  {
234  return (map == other.map) && (particle == other.particle);
235  }
236 }
237 
238 DEAL_II_NAMESPACE_CLOSE
239 
240 DEAL_II_NAMESPACE_OPEN
241 
242 #include "particle_accessor.inst"
243 
244 DEAL_II_NAMESPACE_CLOSE
unsigned int particle_index
Definition: particle.h:64
STL namespace.
#define Assert(cond, exc)
Definition: exceptions.h:1142
static ::ExceptionBase & ExcInternalError()