diff --git a/Solver/dofManager.h b/Solver/dofManager.h index 1c64dc60afef920a94b8931950c81fd4888a1579..e65223a469ac7da27dcd5a6b6e4f2e2ecbadac09 100644 --- a/Solver/dofManager.h +++ b/Solver/dofManager.h @@ -116,11 +116,13 @@ class dofManager{ } inline void fixDof(Dof key, const dataVec &value) { + if(unknown.find(key) != unknown.end()) + return; fixed[key] = value; } inline void fixDof(long int ent, int type, const dataVec &value) { - fixed[Dof(ent, type)] = value; + fixDof(Dof(ent, type), value); } inline void fixVertex(MVertex*v, int iComp, int iField, const dataVec &value) { diff --git a/Solver/functionSpace.cpp b/Solver/functionSpace.cpp index 47067cd4ad8199db126da2018e7779bdb33ecb77..6cb8e84b28ddf1c46fa33ab5455b158c0fd3f2f9 100644 --- a/Solver/functionSpace.cpp +++ b/Solver/functionSpace.cpp @@ -11,5 +11,5 @@ // #include "functionSpace.h" +const SVector3 VectorLagrangeFunctionSpaceOfElement::BasisVectors[3]={SVector3(1,0,0),SVector3(0,1,0),SVector3(0,0,1)}; const SVector3 VectorLagrangeFunctionSpace::BasisVectors[3]={SVector3(1,0,0),SVector3(0,1,0),SVector3(0,0,1)}; -const SVector3 VectorLagrangeFunctionSpaceOfParent::BasisVectors[3]={SVector3(1,0,0),SVector3(0,1,0),SVector3(0,0,1)}; diff --git a/Solver/functionSpace.h b/Solver/functionSpace.h index e5bb028499d6d57f8da6aaa1eaa57948f8703a23..3a433be190c84aebd470ffbe28d57cc244203a91 100644 --- a/Solver/functionSpace.h +++ b/Solver/functionSpace.h @@ -61,7 +61,7 @@ class FunctionSpace : public FunctionSpaceBase virtual void getKeys(MElement *ele, std::vector<Dof> &keys) = 0; }; -class ScalarLagrangeFunctionSpace : public FunctionSpace<double> +class ScalarLagrangeFunctionSpaceOfElement : public FunctionSpace<double> { public: typedef TensorialTraits<double>::ValType ValType; @@ -78,7 +78,7 @@ class ScalarLagrangeFunctionSpace : public FunctionSpace<double> } public: - ScalarLagrangeFunctionSpace(int i = 0) : _iField(i) {} + ScalarLagrangeFunctionSpaceOfElement(int i = 0) : _iField(i) {} virtual int getId(void) const {return _iField;} virtual void f(MElement *ele, double u, double v, double w, std::vector<ValType> &vals) { @@ -164,7 +164,7 @@ class ScalarLagrangeFunctionSpace : public FunctionSpace<double> } }; -class ScalarLagrangeFunctionSpaceOfParent : public FunctionSpace<double> +class ScalarLagrangeFunctionSpace : public FunctionSpace<double> { public: typedef TensorialTraits<double>::ValType ValType; @@ -180,7 +180,7 @@ class ScalarLagrangeFunctionSpaceOfParent : public FunctionSpace<double> keys.push_back(Dof(ver->getNum(), _iField)); } public: - ScalarLagrangeFunctionSpaceOfParent(int i = 0) : _iField(i) {} + ScalarLagrangeFunctionSpace(int i = 0) : _iField(i) {} virtual int getId(void) const {return _iField;} virtual void f(MElement *ele, double u, double v, double w, std::vector<ValType> &vals) { @@ -363,7 +363,7 @@ public : } }; -class VectorLagrangeFunctionSpace : public ScalarToAnyFunctionSpace<SVector3> +class VectorLagrangeFunctionSpaceOfElement : public ScalarToAnyFunctionSpace<SVector3> { protected: static const SVector3 BasisVectors[3]; @@ -371,25 +371,25 @@ class VectorLagrangeFunctionSpace : public ScalarToAnyFunctionSpace<SVector3> enum Along { VECTOR_X = 0, VECTOR_Y = 1, VECTOR_Z = 2 }; typedef TensorialTraits<SVector3>::ValType ValType; typedef TensorialTraits<SVector3>::GradType GradType; - VectorLagrangeFunctionSpace(int id) : - ScalarToAnyFunctionSpace<SVector3>::ScalarToAnyFunctionSpace(ScalarLagrangeFunctionSpace(id), + VectorLagrangeFunctionSpaceOfElement(int id) : + ScalarToAnyFunctionSpace<SVector3>::ScalarToAnyFunctionSpace(ScalarLagrangeFunctionSpaceOfElement(id), SVector3(1.,0.,0.), VECTOR_X, SVector3(0.,1.,0.), VECTOR_Y, SVector3(0.,0.,1.), VECTOR_Z) {} - VectorLagrangeFunctionSpace(int id,Along comp1) : - ScalarToAnyFunctionSpace<SVector3>::ScalarToAnyFunctionSpace(ScalarLagrangeFunctionSpace(id), + VectorLagrangeFunctionSpaceOfElement(int id,Along comp1) : + ScalarToAnyFunctionSpace<SVector3>::ScalarToAnyFunctionSpace(ScalarLagrangeFunctionSpaceOfElement(id), BasisVectors[comp1], comp1) {} - VectorLagrangeFunctionSpace(int id,Along comp1,Along comp2) : - ScalarToAnyFunctionSpace<SVector3>::ScalarToAnyFunctionSpace(ScalarLagrangeFunctionSpace(id), + VectorLagrangeFunctionSpaceOfElement(int id,Along comp1,Along comp2) : + ScalarToAnyFunctionSpace<SVector3>::ScalarToAnyFunctionSpace(ScalarLagrangeFunctionSpaceOfElement(id), BasisVectors[comp1], comp1, BasisVectors[comp2], comp2) {} - VectorLagrangeFunctionSpace(int id,Along comp1,Along comp2, Along comp3) : - ScalarToAnyFunctionSpace<SVector3>::ScalarToAnyFunctionSpace(ScalarLagrangeFunctionSpace(id), + VectorLagrangeFunctionSpaceOfElement(int id,Along comp1,Along comp2, Along comp3) : + ScalarToAnyFunctionSpace<SVector3>::ScalarToAnyFunctionSpace(ScalarLagrangeFunctionSpaceOfElement(id), BasisVectors[comp1], comp1, BasisVectors[comp2], comp2, BasisVectors[comp3], comp3) {} }; -class VectorLagrangeFunctionSpaceOfParent : public ScalarToAnyFunctionSpace<SVector3> +class VectorLagrangeFunctionSpace : public ScalarToAnyFunctionSpace<SVector3> { protected: static const SVector3 BasisVectors[3]; @@ -397,20 +397,20 @@ class VectorLagrangeFunctionSpaceOfParent : public ScalarToAnyFunctionSpace<SVec enum Along { VECTOR_X = 0, VECTOR_Y = 1, VECTOR_Z = 2 }; typedef TensorialTraits<SVector3>::ValType ValType; typedef TensorialTraits<SVector3>::GradType GradType; - VectorLagrangeFunctionSpaceOfParent(int id) : - ScalarToAnyFunctionSpace<SVector3>::ScalarToAnyFunctionSpace(ScalarLagrangeFunctionSpaceOfParent(id), + VectorLagrangeFunctionSpace(int id) : + ScalarToAnyFunctionSpace<SVector3>::ScalarToAnyFunctionSpace(ScalarLagrangeFunctionSpace(id), SVector3(1.,0.,0.), VECTOR_X, SVector3(0.,1.,0.), VECTOR_Y, SVector3(0.,0.,1.), VECTOR_Z) {} - VectorLagrangeFunctionSpaceOfParent(int id,Along comp1) : - ScalarToAnyFunctionSpace<SVector3>::ScalarToAnyFunctionSpace(ScalarLagrangeFunctionSpaceOfParent(id), + VectorLagrangeFunctionSpace(int id,Along comp1) : + ScalarToAnyFunctionSpace<SVector3>::ScalarToAnyFunctionSpace(ScalarLagrangeFunctionSpace(id), BasisVectors[comp1], comp1) {} - VectorLagrangeFunctionSpaceOfParent(int id,Along comp1,Along comp2) : - ScalarToAnyFunctionSpace<SVector3>::ScalarToAnyFunctionSpace(ScalarLagrangeFunctionSpaceOfParent(id), + VectorLagrangeFunctionSpace(int id,Along comp1,Along comp2) : + ScalarToAnyFunctionSpace<SVector3>::ScalarToAnyFunctionSpace(ScalarLagrangeFunctionSpace(id), BasisVectors[comp1], comp1, BasisVectors[comp2], comp2) {} - VectorLagrangeFunctionSpaceOfParent(int id,Along comp1,Along comp2, Along comp3) : - ScalarToAnyFunctionSpace<SVector3>::ScalarToAnyFunctionSpace(ScalarLagrangeFunctionSpaceOfParent(id), + VectorLagrangeFunctionSpace(int id,Along comp1,Along comp2, Along comp3) : + ScalarToAnyFunctionSpace<SVector3>::ScalarToAnyFunctionSpace(ScalarLagrangeFunctionSpace(id), BasisVectors[comp1], comp1, BasisVectors[comp2], comp2, BasisVectors[comp3], comp3) {} };