[Dune] Problem mit GmshReader

conf86 at web.de conf86 at web.de
Tue May 26 21:00:09 CEST 2015


Hallo,

vielen Dank für die schnelle Antwort!

Ich habe es nun so geschrieben:

 typedef Dune::UGGrid<2> GridType;
 std::shared_ptr<GridType> gridp(Dune::GmshReader<GridType>::read("TEST.msh"));
 GridType &grid = *gridp; 

bekomme aber immer noch diesen Fehler:

 libtool: link: g++ -std=c++11 -g -O2 -Wall -o TEST TEST-TEST.o -L/lib /lib/libugS2.a /lib/libugS3.a /lib/libdevS.a -lm /lib/libdunepdelab.a /lib/libdunetypetree.a /lib/libdunegrid.a /lib/libdunegeometry.a /lib/libdunecommon.a -llapack -lblas -lgfortran -lquadmath
 TEST-TEST.o: In function `std::_Sp_counted_ptr<Dune::UGGrid<2>*,(__gnu_cxx::_Lock_policy)2>::_M_dispose()':/usr/include/c++/4.8.3/bits/shared_ptr_base.h:290: undefined reference to `Dune::UGGrid<2>::~UGGrid()'
 TEST-TEST.o: In function `__shared_count<Dune::UGGrid<2>*>':/usr/include/c++/4.8.3/bits/shared_ptr_base.h:456: undefined reference to `Dune::UGGrid<2>::~UGGrid()'
 TEST-TEST.o: In function `Dune::GmshReader<Dune::UGGrid<2>> ::read(std::string const&, bool, bool)':
 /lib/include/dune/grid/io/file/gmshreader.hh:670: undefined reference to `Dune::GridFactory<Dune::UGGrid<2> >::GridFactory()'
 /lib/include/dune/grid/io/file/gmshreader.hh:676: undefined reference to `Dune::GridFactory<Dune::UGGrid<2> >::createGrid()'
 /lib/include/dune/grid/io/file/gmshreader.hh:676: undefined reference to `Dune::GridFactory<Dune::UGGrid<2> >::~GridFactory()'
 /lib/include/dune/grid/io/file/gmshreader.hh:676: undefined reference to `Dune::GridFactory<Dune::UGGrid<2> >::~GridFactory()'
 collect2: error: ld returned 1 exit status


Viele Grüße



> Gesendet: Dienstag, 26. Mai 2015 um 14:23 Uhr
> Von: "Jö Fahlke" <jorrit at jorrit.de>
> An: conf86 at web.de, dune at dune-project.org
> Betreff: Re: [Dune] Problem mit GmshReader
>
> Am Tue, 26. May 2015, 14:20:45 +0200 schrieb Jö Fahlke:
> > Date: Tue, 26 May 2015 14:20:45 +0200
> > From: Jö Fahlke <jorrit at jorrit.de>
> > To: conf86 at web.de
> > Cc: dune at dune-project.org
> > Subject: Re: [Dune] Problem mit GmshReader
> > X-No-Auth: unauthenticated sender
> > X-No-Relay: not in my network
> > X-No-Auth: unauthenticated sender
> > X-No-Auth: unauthenticated sender
> > User-Agent: Mutt/1.5.23 (2014-03-12)
> > X-Envelope-From: <jorrit at jorrit.de>
> > 
> > Am Tue, 26. May 2015, 13:37:14 +0200 schrieb conf86 at web.de:
> > > Date: Tue, 26 May 2015 13:37:14 +0200
> > > From: conf86 at web.de
> > > To: dune at dune-project.org
> > > Subject: [Dune] Problem mit GmshReader
> > > 
> > > Hallo,
> > > 
> > > ich versuche gerade ein UG-Gitter aus einer gmsh-Datei zu erzeugen.
> > > Ich habe es zunächst so versucht, wie es hier geschrieben steht: https://spline.de/static/talks/dune-project.pdf (Seite 25)
> > > 
> > >  L. 98 typedef Dune::UGGrid<2> GridType;
> > >  L. 99 GridType grid;
> > >  L.100 Dune::GmshReader<GridType>::read(grid, "TEST.geo");   
> > 
> > Yeah, that does not look right.  It should be either
> > 
> >   typedef Dune::UGGrid<2> GridType;
> >   std::shared_ptr<GridType> gridp(Dune::GmshReader<GridType>::read(grid, "filename"));
> 
> Uh, make that
> 
>   std::shared_ptr<GridType> gridp(Dune::GmshReader<GridType>::read("filename"));
> 
> >   GridType &grid = *gridp;
> > 
> > or
> > 
> >   typedef Dune::UGGrid<2> GridType;
> >   Dune::GridFactory<GridType> factory;
> >   Dune::GmshReader<GridType>::read(factory, "filename");
> >   std::shared_ptr<GridType> gridp(factory.createGrid());
> >   GridType &grid = *gridp;
> > 
> > The second form is usually used when to want to read physical entity numbers
> > (but then read() has additional arguments that are not shown here).
> > 
> > Note also that .geo is common as the filename extension for gmsh geometry
> > description files -- but dune reads mesh files (.msh).  Gmsh can generate .msh
> > files from .geo files, read the gmsh documentation for the details.
> > 
> > Regards,
> > Jö.
> > 
> > > und bekomme diese Fehlermeldungen:
> > > 
> > >  TEST.cc: In function 'int main(int, char**)':
> > >  TEST.cc:100:58: error: no matching function for call to 'Dune::GmshReader<Dune::UGGrid<2> >::read(GridType&, const char [11])'
> > >        Dune::GmshReader<GridType>::read(grid, "TEST.geo");   
> > >                                                           ^
> > >  TEST.cc:100:58: note: candidates are:
> > >  In file included from TEST.cc:18:0:
> > >  /lib/include/dune/grid/io/file/gmshreader.hh:667:18: note: static Dune::GmshReader<GridType>::Grid* Dune::GmshReader<GridType>::read(const string&, bool, bool) [with GridType =  Dune::UGGrid<2>; Dune::GmshReader<GridType>::Grid = Dune::UGGrid<2>; std::string = std::basic_string<char>]
> > >       static Grid* read (const std::string& fileName, bool verbose = true, bool insert_boundary_segments=true)
> > >                   ^
> > >  /lib/include/dune/grid/io/file/gmshreader.hh:667:18: note:   no known conversion for argument 1 from 'GridType {aka Dune::UGGrid<2>}' to 'const string& {aka const std::basic_string<char>&}'
> > >  /lib/include/dune/grid/io/file/gmshreader.hh:680:18: note: static Dune::GmshReader<GridType>::Grid* Dune::GmshReader<GridType>::read(const string&, std::vector<int>&, std::vector<int>&, bool, bool) [with GridType = Dune::UGGrid<2>; Dune::GmshReader<GridType>::Grid = Dune::UGGrid<2>; std::string = std::basic_string<char>]
> > >       static Grid* read (const std::string& fileName,
> > >                   ^
> > >  /lib/include/dune/grid/io/file/gmshreader.hh:680:18: note:   candidate expects 5 arguments, 2 provided
> > >  /lib/include/dune/grid/io/file/gmshreader.hh:699:17: note: static void Dune::GmshReader<GridType>::read(Dune::GridFactory<GridType>&, const string&, bool, bool) [with GridType = Dune::UGGrid<2>; std::string = std::basic_string<char>]
> > >       static void read (Dune::GridFactory<Grid>& factory, const std::string& fileName,
> > >                  ^
> > >  /lib/include/dune/grid/io/file/gmshreader.hh:699:17: note:   no known conversion for argument 1 from 'GridType {aka Dune::UGGrid<2>}' to 'Dune::GridFactory<Dune::UGGrid<2> >&'
> > >  /lib/include/dune/grid/io/file/gmshreader.hh:708:17: note: static void Dune::GmshReader<GridType>::read(Dune::GridFactory<GridType>&, const string&, std::vector<int>&, std::vector<int>&, bool, bool) [with GridType = Dune::UGGrid<2>; std::string = std::basic_string<char>]
> > >      static void read (Dune::GridFactory<Grid>& factory,
> > >                  ^
> > >  /lib/include/dune/grid/io/file/gmshreader.hh:708:17: note:   candidate expects 6 arguments, 2 provided
> > > 
> > > 
> > > Ich habe es dann wie es oben in "candidates are" der Fehlermeldung stand auch so versucht:
> > > 
> > >  L. 98 typedef Dune::UGGrid<2> GridType;
> > >  L. 99 GridType grid;
> > >  L.100 Dune::GmshReader<GridType>::read("TEST.geo",true,true);   
> > > 
> > > da bekomme ich dann allerdings diese Fehlermeldungen:
> > > 
> > >  TEST-TEST.o: In function `main':
> > >  /home/myname/TEST/src/TEST.cc:99: undefined reference to `Dune::UGGrid<2>::UGGrid()'
> > >  TEST-TEST.o: In function `Dune::GmshReader<Dune::UGGrid<2> >::read(std::string const&, bool, bool)':
> > >  /lib/include/dune/grid/io/file/gmshreader.hh:670: undefined reference to `Dune::GridFactory<Dune::UGGrid<2> >::GridFactory()'
> > >  /lib/include/dune/grid/io/file/gmshreader.hh:676: undefined reference to `Dune::GridFactory<Dune::UGGrid<2> >::createGrid()'
> > >  /lib/include/dune/grid/io/file/gmshreader.hh:676: undefined reference to `Dune::GridFactory<Dune::UGGrid<2> >::~GridFactory()'
> > >  TEST-TEST.o: In function `main':
> > >  /home/myname/TEST/src/TEST.cc:100: undefined reference to `Dune::UGGrid<2>::~UGGrid()'
> > >  TEST-TEST.o: In function `Dune::GmshReader<Dune::UGGrid<2> >::read(std::string const&, bool, bool)':
> > >  /lib/include/dune/grid/io/file/gmshreader.hh:676: undefined reference to `Dune::GridFactory<Dune::UGGrid<2> >::~GridFactory()'
> > >  TEST-TEST.o: In function `main':
> > >  /home/myname/TEST/src/TEST.cc:100: undefined reference to `Dune::UGGrid<2>::~UGGrid()'
> > > 
> > > 
> > > bzw. so wie hier: http://www.uni-graz.at/~haasegu/Lectures/HPC-II/SS12/Talks/kucher_presentation_june_14.pdf (Seite 9)
> > > 
> > >  typedef Dune::UGGrid<2> GridType;
> > >  GridType* grid = Dune::GmshReader<GridType>::read(std::string("TEST.geo"),true,true);
> > > 
> > > und die Fehlermeldungen:
> > > 
> > >  TEST-TEST.o: In function `Dune::GmshReader<Dune::UGGrid<2> >::read(std::string const&, bool, bool)':
> > >  /lib/include/dune/grid/io/file/gmshreader.hh:670: undefined reference to `Dune::GridFactory<Dune::UGGrid<2> >::GridFactory()'
> > >  /lib/include/dune/grid/io/file/gmshreader.hh:676: undefined reference to `Dune::GridFactory<Dune::UGGrid<2> >::createGrid()'
> > >  /lib/include/dune/grid/io/file/gmshreader.hh:676: undefined reference to `Dune::GridFactory<Dune::UGGrid<2> >::~GridFactory()'
> > > 
> > > 
> > > Wo könnte hier das Problem liegen? Oder stimmt der Code so nicht? 
> > > Welche weiteren Angaben wären denn notwendig, dass man den eigentlichen Fehler finden könnte?
> > >  
> > > Vielen Dank im Voraus.
> > > 
> > > 
> > > Viele Grüße
> > > 
> > > _______________________________________________
> > > Dune mailing list
> > > Dune at dune-project.org
> > > http://lists.dune-project.org/mailman/listinfo/dune
> > 
> > -- 
> > Jorrit (Jö) Fahlke, Institute for Computational und Applied Mathematics,
> > University of Münster, Orleans-Ring 10, D-48149 Münster
> > Tel: +49 251 83 35146 Fax: +49 251 83 32729
> > 
> > Der Horizont vieler Menschen ist ein Kreis mit Radius Null - und das
> > nennen sie ihren Standpunkt.
> > -- A. Einstein
> 
> 
> 
> > _______________________________________________
> > Dune mailing list
> > Dune at dune-project.org
> > http://lists.dune-project.org/mailman/listinfo/dune
> 
> 
> -- 
> Jorrit (Jö) Fahlke, Institute for Computational und Applied Mathematics,
> University of Münster, Orleans-Ring 10, D-48149 Münster
> Tel: +49 251 83 35146 Fax: +49 251 83 32729
> 
> This message is protected by DoubleROT13 encryption
> Attempting to decode it violates the DMCA/WIPO acts
>




More information about the Dune mailing list