]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Implement operator^ for FiniteElement
authorDaniel Arndt <daniel.arndt@iwr.uni-heidelberg.de>
Mon, 4 Sep 2017 23:24:05 +0000 (01:24 +0200)
committerDaniel Arndt <daniel.arndt@iwr.uni-heidelberg.de>
Tue, 5 Sep 2017 19:51:21 +0000 (21:51 +0200)
include/deal.II/fe/fe.h
source/fe/fe.cc

index 1639b565b392595647629b5c3f016f4172ed5630..ce23e2b73ce4f2691db62d5a0c98d222f13aa58f 100644 (file)
@@ -758,7 +758,18 @@ public:
    * Virtual destructor. Makes sure that pointers to this class are deleted
    * properly.
    */
-  virtual ~FiniteElement ();
+  virtual ~FiniteElement () = default;
+
+  /**
+   * Creates information for creating a FESystem with this class as
+   * base element and with multiplicity @p multiplicity. In particular,
+   * the return type of this function can be used in the constructor
+   * for a FESystem object.
+   * This function calls clone() and hence creates a copy of the
+   * current object.
+   */
+  std::pair<std::unique_ptr<FiniteElement<dim, spacedim> >, unsigned int>
+  operator^ (unsigned int multiplicity) const;
 
   /**
    * A sort of virtual copy constructor, this function returns a copy of
@@ -772,8 +783,8 @@ public:
    * type. They do so through this function.
    */
   virtual
-  std::unique_ptr<FiniteElement<dim,spacedim>>
-                                            clone() const = 0;
+  std::unique_ptr<FiniteElement<dim,spacedim> >
+  clone() const = 0;
 
   /**
    * Return a string that uniquely identifies a finite element. The general
index 901cdabf454bc82be45d9de796ece6951d497779..5b09abb34e59ab4e0cbe8ef9598b1848fb449222 100644 (file)
@@ -152,9 +152,12 @@ FiniteElement (const FiniteElementData<dim> &fe_data,
 
 
 template <int dim, int spacedim>
-FiniteElement<dim,spacedim>::~FiniteElement ()
-{}
-
+std::pair<std::unique_ptr<FiniteElement<dim, spacedim> >, unsigned int>
+FiniteElement<dim, spacedim>::operator^ (unsigned int multiplicity) const
+{
+  return std::make_pair<std::unique_ptr<FiniteElement<dim, spacedim>>,
+         unsigned int> (std::move(this->clone()), std::move(multiplicity));
+}
 
 
 

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.