/usr/include/SyFi/MixedFE.h is in libsyfi1.0-dev 1.0.0.dfsg-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | // Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory
//
// This file is part of SyFi.
//
// SyFi 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.
//
// SyFi 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 SyFi. If not, see <http://www.gnu.org/licenses/>.
#ifndef MIXED_FE_IS_INCLUDED
#define MIXED_FE_IS_INCLUDED
#include "FE.h"
#include <vector>
#include <string>
namespace SyFi
{
// FIXME: what about memory management ???
//
// FIXME: one assumption when using this MixedFE is that none of the dofs
// in the vector of finite elements have different dofs. This assumption
// is valid for all elements I know of.
// If this is not appropriate, we could add an int to the dof, in a
// similar way that it is done with the vector elements.
// The current implementation is more efficient.
// Could do a consistency check.
class MixedFE : public FE
{
std::string description;
public:
std::vector<StandardFE*> mfe;
public:
MixedFE();
MixedFE(StandardFE* fe1, StandardFE* fe2);
virtual ~MixedFE();
//FIXME: check that the domain are ok.
// Set polygonal domain
virtual void set_polygon(Polygon& p)
{
}
// Get polygonal domain
virtual Polygon& get_polygon()
{
return (*(mfe[0])).get_polygon();
}
virtual void compute_basis_functions() { }
StandardFE* get(unsigned int i);
void append(StandardFE* fe);
// The i'th basis function
virtual GiNaC::ex N(unsigned int i);
// The i'th degree of freedom
virtual GiNaC::ex dof(unsigned int i);
// Number of basis functions/degrees of freedom
virtual unsigned int nbf() const;
virtual std::string str();
};
} // namespace SyFi
#endif
|