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