16 #ifndef dealii__point_h 17 #define dealii__point_h 20 #include <deal.II/base/config.h> 21 #include <deal.II/base/exceptions.h> 22 #include <deal.II/base/tensor.h> 25 DEAL_II_NAMESPACE_OPEN
88 template <
int dim,
typename Number =
double>
109 explicit Point (
const Number x);
118 Point (
const Number x,
128 Point (
const Number x,
142 Number
operator () (
const unsigned int index)
const;
195 template <
typename OtherNumber>
202 template <
typename OtherNumber>
238 template <
class Archive>
239 void serialize(Archive &ar,
const unsigned int version);
246 template <
int dim,
typename Number>
253 template <
int dim,
typename Number>
262 template <
int dim,
typename Number>
271 Assert (dim==1, StandardExceptions::ExcInvalidConstructorCall());
277 template <
int dim,
typename Number>
287 Assert (dim==2, StandardExceptions::ExcInvalidConstructorCall());
293 template <
int dim,
typename Number>
304 Assert (dim==3, StandardExceptions::ExcInvalidConstructorCall());
309 template <
int dim,
typename Number>
320 template <
int dim,
typename Number>
326 return this->
values[index];
331 template <
int dim,
typename Number>
337 return this->
values[index];
342 template <
int dim,
typename Number>
354 template <
int dim,
typename Number>
364 template <
int dim,
typename Number>
376 template <
int dim,
typename Number>
382 for (
unsigned int i=0; i<dim; ++i)
383 result.values[i] = -this->values[i];
389 template <
int dim,
typename Number>
390 template<
typename OtherNumber>
396 for (
unsigned int i=0; i<dim; ++i)
397 tmp[i] = this->
operator[](i) * factor;
403 template <
int dim,
typename Number>
404 template<
typename OtherNumber>
410 for (
unsigned int i=0; i<dim; ++i)
411 tmp[i] = this->
operator[](i) / factor;
417 template <
int dim,
typename Number>
422 Number res = Number();
423 for (
unsigned int i=0; i<dim; ++i)
424 res += this->
operator[](i) * p[i];
429 template <
int dim,
typename Number>
439 template <
int dim,
typename Number>
444 Number
sum = Number();
445 for (
unsigned int i=0; i<dim; ++i)
447 const Number diff=this->
values[i]-p(i);
451 return std::sqrt(sum);
456 template <
int dim,
typename Number>
457 template <
class Archive>
479 template <
int dim,
typename Number,
typename OtherNumber>
495 template <
int dim,
typename Number>
500 for (
unsigned int i=0; i<dim-1; ++i)
514 template <
int dim,
typename Number>
519 for (
unsigned int i=0; i<dim; ++i)
533 template <
typename Number>
544 DEAL_II_NAMESPACE_CLOSE
Tensor< rank, dim, Number > sum(const Tensor< rank, dim, Number > &local, const MPI_Comm &mpi_communicator)
Point< dim, Number > operator-() const
Point< dim, Number > operator+(const Tensor< 1, dim, Number > &) const
#define AssertIndexRange(index, range)
Number operator()(const unsigned int index) const
std::ostream & operator<<(std::ostream &out, const Point< dim, Number > &p)
static real_type abs_square(const number &x)
#define Assert(cond, exc)
static Point< dim, Number > unit_vector(const unsigned int i)
void serialize(Archive &ar, const unsigned int version)
numbers::NumberTraits< Number >::real_type norm_square() const
numbers::NumberTraits< Number >::real_type distance(const Point< dim, Number > &p) const
Tensor< rank_-1, dim, Number > values[(dim !=0) ? dim :1]
numbers::NumberTraits< Number >::real_type square() const
Point< dim, typename ProductType< Number, typename EnableIfScalar< OtherNumber >::type >::type > operator*(const OtherNumber) const
std::istream & operator>>(std::istream &in, Point< dim, Number > &p)
Point< dim, typename ProductType< Number, typename EnableIfScalar< OtherNumber >::type >::type > operator/(const OtherNumber) const