diff src/boundarycondition.h @ 31:74cbe97f55af

New class for treatment of BC * boundarycondition.h: publicly derives from octave_base_value and the private member is a vector of pointer to dolfin::DirichletBC * fem_bc.cc: DLD functions which creates a boundarycondition object taking as input a functionspace, a function_handler and the label of the sides where the BC has to be applied * fem_init_env.cc: load also the boundarycondition type
author gedeone-octave <marco.vassallo@outlook.com>
date Mon, 15 Jul 2013 17:07:28 +0200
parents
children cedb2b5d6455
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/boundarycondition.h	Mon Jul 15 17:07:28 2013 +0200
@@ -0,0 +1,66 @@
+/*
+ Copyright (C) 2013 Marco Vassallo
+
+ This program is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 2 of the License, or (at your option) any later
+ version.
+
+ This program is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ details.
+
+ You should have received a copy of the GNU General Public License along with
+ this program; if not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef _BOUNDARYCONDITION_OCTAVE_
+#define _BOUNDARYCONDITION_OCTAVE_
+
+#include <memory>
+#include <vector>
+#include <dolfin.h>
+#include <octave/oct.h>
+
+class boundarycondition : public octave_base_value
+{
+
+ public:
+
+  boundarycondition () : octave_base_value () {}
+
+  void print (std::ostream& os, bool pr_as_read_syntax = false) const
+  {
+     for (int i = 0; i < bcu.size (); ++i)
+       os << "Boundary condition : " << bcu[i]->str (true) << std::endl;
+  }
+
+
+  ~boundarycondition (void) {}
+
+
+  bool is_defined (void) const { return true; }
+
+
+  const std::vector< boost::shared_ptr <const dolfin::DirichletBC> > & get_bc (void) const
+  { return bcu; }
+
+
+  void add_bc (const boost::shared_ptr <const dolfin::FunctionSpace> & V,
+               boost::shared_ptr<const dolfin::GenericFunction> f, std::size_t n)
+  {
+    boost::shared_ptr<const dolfin::DirichletBC> p (new dolfin::DirichletBC (V, f, n));
+    bcu.push_back(p);
+  }
+
+ private:
+
+  std::vector<boost::shared_ptr <const dolfin::DirichletBC> > bcu;
+
+  DECLARE_OCTAVE_ALLOCATOR;
+  DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA;
+
+};
+
+#endif