/* $Id: elements.cc,v 1.3 1996/10/11 15:15:15 bzferdma Exp $ (C)opyright 1996 by Konrad-Zuse-Center, Berlin All rights reserved. Part of the Kaskade distribution */ #include "elements.h" //------------------------------------------------------------------------- Element:: Element() { symPattern = 0; asymPattern = 0; DLYPattern = 0; } //------------------------------------------------------------------------- Element:: ~Element() { delete symPattern; delete asymPattern; delete DLYPattern; } //------------------------------------------------------------------------- // -- set the default assembling patterns: void Element:: setPatterns() { int i, k; const int nnodes =NoOfNodes(); symPattern = new Matrix(NoOfNodes(),NoOfNodes()); asymPattern = new Matrix(NoOfNodes(),NoOfNodes()); DLYPattern = 0; FORALL_ROWS(*symPattern,i) FORALL_COLUMNS(*symPattern,k) (*symPattern)(i,k) = (*asymPattern)(i,k) = False; for (i=1; i<=nnodes; ++i) for (k=1; k<=i; ++k) (*symPattern)(i,k) = True; for (i=1; i<=nnodes; ++i) for (k=1; k<=nnodes; ++k) (*asymPattern)(i,k) = True; } //------------------------------------------------------------------------- void Element:: initAb(Matrix& A, Vector& b) const { int i, j; const int dim = NoOfNodes(); for (i=1; i<=dim; ++i) { b[i] = 0.0; for (j=1; j<=dim; ++j) A(i,j) = 0.0; } } //------------------------------------------------------------------------- void Element:: initAb(Matrix& A) const { int i, j; const int dim = NoOfNodes(); for (i=1; i<=dim; ++i) for (j=1; j<=dim; ++j) A(i,j) = 0.0; } //------------------------------------------------------------------------- void Element:: initAb(Matrix& A, Vector& b) const { int i, j; const int dim = NoOfNodes(); for (i=1; i<=dim; ++i) { b[i] = 0.0; for (j=1; j<=dim; ++j) A(i,j) = 0.0; } } //------------------------------------------------------------------------- void Element:: initAb(Matrix& A) const { int i, j; const int dim = NoOfNodes(); for (i=1; i<=dim; ++i) for (j=1; j<=dim; ++j) A(i,j) = 0.0; } //------------------------------------------------------------------------- void Element:: notImplemented(const char* s) const { cout << "\n*** class Element: function " << s << " not implemented\n"; cout.flush(); abort(); } //------------------------------------------------------------------------- Num Element:: valueAt(const Vector& /*unitCoord*/, const Vector& /*solution*/) const { notImplemented("valueAt"); return 0; } void Element:: valueAt(const Vector& /*unitCoord*/, const Vector& /*sol*/, Vector& /*uInt*/, int /*baseNode*/, int /*nComp*/) const { notImplemented("valueAt(...)"); } void Element:: gradientAt(int /*ip*/, const Jacobian& /*Jac*/, const Vector& /*u*/, Vector& /*grad*/) const { notImplemented("gradientAt"); } //------------------------------------------------------------------------- Bool Element:: assembleEllip(const PATCH& /*patch*/, Matrix& /*A*/, const Jacobian& /*Jac*/, const Matrix* /*pattern*/) const { notImplemented("assembleEllip"); return 0; } Bool Element:: assembleMass (const PATCH& /*patch*/, Matrix& /*A*/, const Jacobian& /*Jac*/, const Matrix* /*pattern*/) const { notImplemented("assembleMass"); return 0; } Bool Element:: assembleP (const PATCH& /*patch*/, Matrix& /*A*/, const Jacobian& /*Jac*/, const Matrix* /*pattern*/) const { notImplemented("assembleP"); return 0; } Bool Element:: assembleSource (const PATCH& /*patch*/, Vector& /*b*/, const Jacobian& /*Jac*/, const Matrix* /*pattern*/, Real /*time*/) const { notImplemented("assembleSource"); return 0; } Bool Element:: assembleLumpedMass (const PATCH& /*patch*/, Matrix& /*A*/, const Jacobian& /*Jac*/, const Matrix* /*pattern*/) const { notImplemented("assembleLumpedMass"); return 0; } Bool Element:: assembleLumpedP (const PATCH& /*patch*/, Matrix& /*A*/, const Jacobian& /*Jac*/, const Matrix* /*pattern*/) const { notImplemented("assembleLumpedP"); return 0; } Bool Element:: assembleConvec(const PATCH& /*patch*/, Matrix& /*A*/, const Jacobian& /*Jac*/, const Matrix* /*pattern*/) const { notImplemented("assembleConvec"); return 0; } Bool Element:: assembleNeumannBCs(const PATCH& /*patch*/, Vector& /*b*/, const Matrix* /*pattern*/, Real /*time*/) const { notImplemented("assembleNeumannBCs"); return 0; } Bool Element:: assembleInnerBCs(const PATCH& /*patch*/, Vector& /*b*/, const Matrix* /*pattern*/, Real /*time*/) const { notImplemented("assembleInnerBCs"); return 0; } Bool Element:: assembleCauchyBCs (const PATCH& /*patch*/, Matrix& /*A*/, Vector& /*b*/, const Matrix* /*pattern*/, Real /*time*/) const { notImplemented("assembleCauchyBCs"); return 0; } Bool Element:: assNeumannBCOnBoundary(const PATCH& /*ed*/, Vector& /*nodes*/, Vector& /*b*/, const Matrix* /*pattern*/, Real /*time*/) const { notImplemented("assNeumannBCOnBoundary"); return 0; } Bool Element:: assBConInnerBoundary(const PATCH& /*ed*/, Vector& /*nodes*/, Vector& /*b*/, const Matrix* /*pattern*/, Real /*time*/) const { notImplemented("assBConInnerBoundary"); return 0; } void Element:: assCauchyBCOnBoundary(const PATCH& /*ed*/, Vector& /*nodes*/, Matrix& /*A*/, Vector& /*b*/, const Matrix* /*pattern*/, Real /*time*/) const { notImplemented("assCauchyBCOnBoundary"); } void Element:: assembleL2Norm(const PATCH& /*patch*/, Matrix& /*A*/, const Jacobian& /*Jac*/, const Matrix* /*pattern*/) const { notImplemented("assembleL2Norm"); } void Element:: assembleLNorm(const PATCH& /*patch*/, Vector& /*b*/, const Jacobian& /*Jac*/, const Matrix* /*pattern*/) const { notImplemented("assembleLNorm"); } //------------------------------------------------------------------------- // Complex dummies: Bool Element:: assembleEllip(const PATCH& /*patch*/, Matrix& /*A*/, const Jacobian& /*Jac*/, const Matrix* /*pattern*/) const { notImplemented("assembleEllip"); return 0; } Bool Element:: assembleMass (const PATCH& /*patch*/, Matrix& /*A*/, const Jacobian& /*Jac*/, const Matrix* /*pattern*/) const { notImplemented("assembleMass"); return 0; } Bool Element:: assembleSource (const PATCH& /*patch*/, Vector& /*b*/, const Jacobian& /*Jac*/, const Matrix* /*pattern*/, Real /*time*/) const { notImplemented("assembleSource"); return 0; } Bool Element:: assembleLumpedMass (const PATCH& /*patch*/, Matrix& /*A*/, const Jacobian& /*Jac*/, const Matrix* /*pattern*/) const { notImplemented("assembleLumpedMass"); return 0; } Bool Element:: assembleP (const PATCH& /*patch*/, Matrix& /*A*/, const Jacobian& /*Jac*/, const Matrix* /*pattern*/) const { notImplemented("assembleLumpedMass"); return 0; } Bool Element:: assembleLumpedP (const PATCH& /*patch*/, Matrix& /*A*/, const Jacobian& /*Jac*/, const Matrix* /*pattern*/) const { notImplemented("assembleLumpedMass"); return 0; } Bool Element:: assembleConvec(const PATCH& /*patch*/, Matrix& /*A*/, const Jacobian& /*Jac*/, const Matrix* /*pattern*/) const { notImplemented("assembleConvec"); return 0; } Bool Element:: assembleNeumannBCs(const PATCH& /*patch*/, Vector& /*b*/, const Matrix* /*pattern*/, Real /*time*/) const { notImplemented("assembleNeumannBCs"); return 0; } Bool Element:: assembleInnerBCs(const PATCH& /*patch*/, Vector& /*b*/, const Matrix* /*pattern*/, Real /*time*/) const { notImplemented("assembleInnerBCs"); return 0; } Bool Element:: assembleCauchyBCs (const PATCH& /*patch*/, Matrix& /*A*/, Vector& /*b*/, const Matrix* /*pattern*/, Real /*time*/) const { notImplemented("assembleCauchyBCs"); return 0; } void Element:: assembleL2Norm(const PATCH& /*patch*/, Matrix& /*A*/, const Jacobian& /*Jac*/, const Matrix* /*pattern*/) const { notImplemented("assembleL2Norm"); } void Element:: assembleLNorm(const PATCH& /*patch*/, Vector& /*b*/, const Jacobian& /*Jac*/, const Matrix* /*pattern*/) const { notImplemented("assembleLNorm"); } //-------------------------------------------------------------------------