[Dune] Help needed with pdelab dof blocking

Andreas Nüßing andreas.nuessing at uni-muenster.de
Sun Jan 5 21:03:42 CET 2014


Hi Oliver,

without me being a PDELab-expert and assuming you are using the PDELab 
trunk, the following GFS-type does the trick for me. The Blocking 
template parameter of the VectorBackend for the VectorGridFunctionSpace 
was missing and so defaulted to "no_blocking".

typedef PDELab::VectorGridFunctionSpace<
         GridType::LeafGridView,
         FEM,
         dim,
PDELab::ISTLVectorBackend<PDELab::ISTLParameters::static_blocking>,
         PDELab::ISTLVectorBackend<>,
         PDELab::ConformingDirichletConstraints,
         PDELab::LexicographicOrderingTag,
         PDELab::DefaultLeafOrderingTag
         > GFS;

gives the desired output

Vector type: Dune::BlockVector<Dune::FieldVector<double, 3>, 
std::allocator<Dune::FieldVector<double, 3> > >
Matrix type: Dune::BCRSMatrix<Dune::FieldMatrix<double, 3, 3>, 
std::allocator<Dune::FieldMatrix<double, 3, 3> > >

Andreas



Am 05.01.2014 20:02, schrieb Oliver Sander:
> Dear Dune users,
> [I'm writing this to the general Dune list instead of the pdelab list,
> because it is rare (for me) to receive an answer on latter list.]
>
> I need help setting up an FEM space.  I want to solve a standard linear
> elasticity problem on a structured grid using Q1 elements.  ISTL is to
> be used as the linear algebra backend, and I expect the matrix and vector
> types pdelab gives me to be
>
> BCRSMatrix<FieldMatrix<double,3,3> > and BlockVector<FieldVector<double,3> >
>
> Unfortunately, the little test program I attach below gives me
>
> BCRSMatrix<FieldMatrix<double,1,1> > and BlockVector<FieldVector<double,1> >
>
> instead.  Surely I am using the wrong parameters, but as pdelab is slightly
> under-documented I am stuck now.  Can somebody please tell me how I need
> to adjust my code to get the matrix and vector types I want?
>
> Many thanks,
> Oliver
>
>
> #include "config.h"
>
> #include<iostream>
> #include<dune/common/fvector.hh>
>
> #include<dune/grid/yaspgrid.hh>
>
> #include<dune/pdelab/finiteelementmap/q1fem.hh>
> #include<dune/pdelab/constraints/conforming.hh>
> #include<dune/pdelab/gridfunctionspace/vectorgridfunctionspace.hh>
> #include<dune/pdelab/gridfunctionspace/gridfunctionspaceutilities.hh>
> #include<dune/pdelab/gridfunctionspace/interpolate.hh>
> #include <dune/pdelab/gridfunctionspace/vtk.hh>
> #include<dune/pdelab/constraints/common/constraints.hh>
> #include<dune/pdelab/common/function.hh>
> #include<dune/pdelab/backend/istlvectorbackend.hh>
> #include<dune/pdelab/backend/istlmatrixbackend.hh>
> #include<dune/pdelab/localoperator/linearelasticity.hh>
> #include<dune/pdelab/constraints/constraintsparameters.hh>
> #include<dune/pdelab/gridoperator/gridoperator.hh>
>
> using namespace Dune;
>
> const int dim = 3;
>
> typedef YaspGrid<dim> GridType;
>
> typedef PDELab::Q1LocalFiniteElementMap<double,double,dim> FEM;
> typedef PDELab::VectorGridFunctionSpace<
>    GridType::LeafGridView,
>    FEM,
>    dim,
>    PDELab::ISTLVectorBackend<>,
>    PDELab::ISTLVectorBackend<>,
>    PDELab::ConformingDirichletConstraints,
>    PDELab::LexicographicOrderingTag,
>    PDELab::DefaultLeafOrderingTag
>    > GFS;
>
> typedef GFS::ConstraintsContainer<double>::Type C;
>
> typedef PDELab::GridOperator<GFS,GFS,PDELab::LinearElasticity,PDELab::ISTLMatrixBackend,double,double,double,C,C> GO;
> typedef GO::Traits::Domain V;
> typedef GO::Jacobian M;
> typedef M::BaseT ISTL_M;
> typedef V::BaseT ISTL_V;
>
>
> int main(int argc, char** argv)
> {
>      std::cout << "Vector type: " << className<ISTL_V>() << std::endl;
>      std::cout << "Matrix type: " << className<ISTL_M>() << std::endl;
>
> }
>
>
>
>
>
> _______________________________________________
> Dune mailing list
> Dune at dune-project.org
> http://lists.dune-project.org/mailman/listinfo/dune

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.dune-project.org/pipermail/dune/attachments/20140105/e4480607/attachment.htm>


More information about the Dune mailing list