Mercurial > fem-fenics-eugenio
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