From ef16c6d7717081268d5e1dae0b6ab45a3425d4e2 Mon Sep 17 00:00:00 2001 From: Gauthier Becker <gauthierbecker@gmail.com> Date: Sat, 25 Feb 2012 19:15:09 +0000 Subject: [PATCH] external work in case of fracture --- Solver/solverAlgorithms.h | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/Solver/solverAlgorithms.h b/Solver/solverAlgorithms.h index 2126746254..0aacf467bc 100644 --- a/Solver/solverAlgorithms.h +++ b/Solver/solverAlgorithms.h @@ -187,6 +187,32 @@ class FilterDofComponent : public FilterDof } }; +// return true if the Dof is in a filled set +class FilterDofSet : public FilterDof +{ + protected: + std::set<Dof> _dofset; + public: + FilterDofSet() : FilterDof(){} + virtual ~FilterDofSet(){} + virtual bool operator()(Dof key) + { + std::set<Dof>::iterator itR = _dofset.find(key); + if(itR == _dofset.end()){ + return false; + } + return true; + } + virtual void addDof(Dof key) + { + _dofset.insert(key); + } + virtual void addDof(std::vector<Dof> &R) + { + for(int i=0;i<R.size();i++) + this->addDof(R[i]); + } +}; template<class Assembler> void FixNodalDofs(FunctionSpaceBase &space, MElement *e, Assembler &assembler, simpleFunction<typename Assembler::dataVec> &fct, @@ -214,7 +240,7 @@ template<class Assembler> void FixNodalDofs(FunctionSpaceBase &space, MElement * } template<class Iterator, class Assembler> void FixNodalDofs(FunctionSpaceBase &space, Iterator itbegin, - Iterator itend, Assembler &assembler, + Iterator itend, Assembler &assembler, simpleFunction<typename Assembler::dataVec> &fct, FilterDof &filter) { -- GitLab