00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef BOUNDARYCFUNCTOR_H
00014 #define BOUNDARYCFUNCTOR_H
00015 #include "../fem/definitions.h"
00016
00017 #include <functional>
00018 #include <utility>
00019
00020
00021 namespace shells {
00022 class BoundaryCFunctor;
00023 class BoundaryCBoxFunctor;
00024 struct SElementS;
00025 struct SEdgeS;
00026 }
00027
00028
00029
00030 class shells::BoundaryCFunctor :
00031 public std::unary_function<shells::SEdgeS*, void > {
00032 public:
00033 BoundaryCFunctor(unsigned bcType[3]){
00034 _bcType[0] = bcType[0];
00035 _bcType[1] = bcType[1];
00036 _bcType[2] = bcType[2];
00037 }
00038
00039 ~BoundaryCFunctor(){}
00040 void operator()(shells::SEdgeS* boundaryEdge);
00041
00042 private:
00043 int _bcType[3];
00044 };
00045
00046
00047 class shells::BoundaryCBoxFunctor :
00048 public std::unary_function<shells::SEdgeS*, void> {
00049 public:
00050 BoundaryCBoxFunctor(unsigned bcType[3], double low[3], double upp[3]) :_applyBc(bcType) {
00051 for (unsigned i=0; i<3; ++i) {
00052 _low[i] = low[i];
00053 _upp[i] = upp[i];
00054 }
00055 }
00056
00057 ~BoundaryCBoxFunctor(){}
00058 void operator()(shells::SEdgeS* boundaryEdge);
00059
00060 private:
00061 BoundaryCFunctor _applyBc;
00062 double _low[3];
00063 double _upp[3];
00064 };
00065
00066 #endif