diff --git a/src/ASM/ASM2D.C b/src/ASM/ASM2D.C index b9444fc4..b508fea3 100644 --- a/src/ASM/ASM2D.C +++ b/src/ASM/ASM2D.C @@ -21,14 +21,15 @@ #endif -ASMbase* ASM2D::create (ASM::Discretization discretization, unsigned char* nf) +ASMbase* ASM2D::create (ASM::Discretization discretization, + unsigned char* nf, bool mixedFEM) { switch (discretization) { case ASM::SplineC1: return new ASMs2DC1(2,nf[0]); case ASM::Lagrange: - if (nf[1] > 0) + if (nf[1] > 0 || mixedFEM) return new ASMs2DmxLag(2,nf[0],nf[1]); else return new ASMs2DLag(2,nf[0]); @@ -42,7 +43,7 @@ ASMbase* ASM2D::create (ASM::Discretization discretization, unsigned char* nf) #endif default: - if (nf[1] > 0) + if (nf[1] > 0 || mixedFEM) return new ASMs2Dmx(2,nf[0],nf[1]); else return new ASMs2D(2,nf[0]); diff --git a/src/ASM/ASM2D.h b/src/ASM/ASM2D.h index 743ff4f4..770aefb1 100644 --- a/src/ASM/ASM2D.h +++ b/src/ASM/ASM2D.h @@ -40,7 +40,8 @@ public: //! \brief Creates a two-parametric patch of specified discretization type. //! \param[in] type The discretization method to use //! \param[in] nf Number of unknown per basis function in the patch - static ASMbase* create(ASM::Discretization type, unsigned char* nf); + static ASMbase* create(ASM::Discretization type, unsigned char* nf, + bool mixedFEM = false); //! \brief Returns a copy of this patch with identical FE discretizations. //! \param[in] nf Number of unknown per basis function in the patch