From: Harry P. <har...@gm...> - 2016-08-09 19:55:05
|
The program I ran wasn't in the libmesh directory when I ran it. I just compiled it with: mpicxx -o HPeigenproblems_PZ_8_2_16_2 HPeigenproblems_PZ_8_2_16_2.C -lz -Wl,-rpath,/usr/local/lib -L/usr/local/lib -lmesh_opt -I/usr/local/include -pthread -I/usr/local/include -std=gnu++11 -O2 -felide-constructors -funroll-loops -fstrict-aliasing -Wdisabled-optimization -fopenmp So I would think this would mean that libmesh could still have SLEPc. Additionally I looked in the configure.log file within libmesh-1.0.0-rc1 and it didn't look like SLEPc was missing. The real example files (The ones that came with libmesh) ran fine. I ran make -n example-opt in the section of examples on eigenproblems_ex2, made a copy of eigenproblems_ex2, changed the name of the original eigenproblems_ex2 to realeigenproblems_ex2, and put my .C file in the new folder called eigenproblems_ex2 in , deleting the old .C file that was there (I changed the name of my .C file to eigenproblems_ex2.C). I then tried running the code that I obtained as output from make -n example-opt and obtained the following responses: My input: /opt/libmesh-1.0.0-rc1/examples/eigenproblems/eigenproblems_ex2$ sudo echo " CXX " example_opt-eigenproblems_ex2.o;mpicxx -DHAVE_CONFIG_H -I. -I../../../include -DNDEBUG -I/opt/slepc-3.7.0/include -I/opt/slepc-3.7.0/arch-linux2-c-debug/include -I/opt/petsc-3.7.1/include -I/opt/petsc-3.7.1/arch-linux2-c-debug/include -I/usr/include/mpich -I/usr/local/include -I../../../include -I../../../contrib/nanoflann/include -I../../../contrib/fparser -I../../../contrib/libHilbert/include -I../../../contrib/nemesis/v5.22/nemesis -I../../../contrib/exodusii/v5.22/exodus/cbind/include -I../../../contrib/netcdf/v4/include -I../../../contrib/eigen/eigen -I../../../contrib/gmv -I../../../contrib/qhull/qhull/src -I../../../contrib/qhull/qhull/src/libqhull -I../../../contrib/qhull/qhull/src/libqhullcpp -I../../../contrib/parmetis/include -I../../../contrib/metis/include -I../../../contrib/gzstream -std=gnu++11 -O2 -felide-constructors -funroll-loops -fstrict-aliasing -Wdisabled-optimization -fopenmp -std=gnu++11 -MT example_opt-eigenproblems_ex2.o -MD -MP -MF .deps/example_opt-eigenproblems_ex2.Tpo -c -o example_opt-eigenproblems_ex2.o `test -f 'eigenproblems_ex2.C' || echo './'`eigenproblems_ex2.C CXX example_opt-eigenproblems_ex2.o eigenproblems_ex2.C:18:21: fatal error: nr3.h: No such file or directory #include "nr3.h" ^ compilation terminated. hpearce@islands:/opt/libmesh-1.0.0-rc1/examples/eigenproblems/eigenproblems_ex2$ mv -f .deps/example_opt-eigenproblems_ex2.Tpo .deps/example_opt-eigenproblems_ex2.Po mv: cannot stat ‘.deps/example_opt-eigenproblems_ex2.Tpo’: No such file or directory hpearce@islands:/opt/libmesh-1.0.0-rc1/examples/eigenproblems/eigenproblems_ex2$ rm -f example-opt rm: cannot remove ‘example-opt’: Permission denied hpearce@islands:/opt/libmesh-1.0.0-rc1/examples/eigenproblems/eigenproblems_ex2$ echo " CXXLD " example-opt;/bin/bash ../../../libtool --silent --tag=CXX --mode=link mpicxx -std=gnu++11 -O2 -felide-constructors -funroll-loops -fstrict-aliasing -Wdisabled-optimization -fopenmp -std=gnu++11 -o example-opt example_opt-eigenproblems_ex2.o ../../../ libmesh_opt.la -lz -Wl,-rpath,/opt/slepc-3.7.0/arch-linux2-c-debug/lib -L/opt/slepc-3.7.0/arch-linux2-c-debug/lib -lslepc -L/opt/petsc-3.7.1/arch-linux2-c-debug/lib -L/lib/x86_64-linux-gnu -lpetsc -Wl,-rpath,/opt/petsc-3.7.1/arch-linux2-c-debug/lib -lf2clapack -lf2cblas -lmpichf90 -lgfortran -lquadmath -lm -lmpichcxx -lstdc++ -Wl,-rpath,/lib/x86_64-linux-gnu -lmpich -lopa -lmpl -lrt -lcr -lpthread -lgcc_s -ldl -L/usr/lib/x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/4.8 -Wl,-rpath,/usr/lib/gcc/x86_64-linux-gnu/4.8 -Wl,-rpath,/usr/lib/x86_64-linux-gnu CXXLD example-opt rm: cannot remove 'example-opt': Permission denied rm: cannot remove '.libs/example-opt': Permission denied rm: cannot remove '.libs/lt-example-opt': Permission denied /usr/bin/ld: cannot open output file .libs/example-opt: Permission denied collect2: error: ld returned 1 exit status On Tue, Aug 9, 2016 at 10:52 AM, Mike Marchywka <mar...@ho...> wrote: > > > > > ________________________________ > > From: har...@gm... > > Date: Tue, 9 Aug 2016 10:35:47 -0700 > > Subject: Re: [Libmesh-users] FW: libmesh problem: libmesh_nullptr was > > not declared in scope > > To: mar...@ho... > > CC: roy...@ic...; lib...@li... > > > > > > > > Thank you for your help so far. It looks like this problem is close to > > being finished. Your recommendation of using #include "libmesh/foo.h" > > worked for compiling the program (I used the full path for > > libmesh_nullptr.h in the include part and that fixed those errors) but > > now when I run the executable I get the following error: > > > > ERROR: This example requires libMesh to be > > compiled with SLEPc eigen solvers support! > > > > I already have SLEPc though. I would think to fix this problem I would > > need to either add a compiler flag for SLEPc or add the program I have > > to the example programs. > > > > I would think linking would work just as well as adding to my example > > programs so I added -L/opt/slepc-3.7.0/sys > > to the compiling command but this didn't fix the problem. > > > I noticed a couple of things immediately about libmesh that were > interesting. > One was the term "exact solution" appearing almost everywhere and > even being allowed on the command line IIRC in one case- there is > some hope even if everything runs ok you can check the result. The other > was the large array of build options and the checks in the examples- I had > no idea I needed vtk for > example of what any of the other things brought. To add these, you > need to rebuild libmesh and reconfigure to enable if > not found automatically. I ignore all the automake stuff, just run > ./configure > with the options set although make clean may help first. > > And again go to the examples and run make -n on any target and > see what you get. > > Curious what the name collision is however. I just ran a script to find > repeated names in my /usr/include and some occur 30 times lol. > Using directories is probably a good idea. > > --- end of comments > > > > > > > Harry Pearce > > > > > > > > On Mon, Aug 8, 2016 at 11:20 AM, Mike Marchywka > > <mar...@ho...<mailto:mar...@ho...>> wrote: > > > > > > > > > > ________________________________ > >> From: har...@gm...<mailto:har...@gm...> > >> Date: Mon, 8 Aug 2016 10:35:42 -0700 > >> Subject: Re: [Libmesh-users] FW: libmesh problem: libmesh_nullptr was > >> not declared in scope > >> To: mar...@ho...<mailto:mar...@ho...>; > > roy...@ic...<mailto:roy...@ic...> > >> CC: > > lib...@li...<mailto:libmesh > -u...@li...> > >> > >> Oops I thought I replied to everyone. > >> > >>>Did it complain it can't find the header file first? > >> > >> It did complain about the libmesh.h header before I added the following > >> to set my environment: > >> export PATH=/opt/petsc-3.7.1:/opt/slepc-3.7.0:/opt/libmesh-1.0. > 0-rc1:$PATH > >> export PATH=/opt/petsc-3.7.1:/opt/libmesh-1.0.0-rc1:$PATH > >> export PATH=$PETSC_DIR/arch-linux2-c-debug:$PATH > >> export CPATH=/opt/libmesh-1.0.0-rc1/include/libmesh/:$CPATH > > > > without the libmesh dir on the include it could be a name collision. > > There is probably some way to get the compiler to tell you which dir > > it includes from. Also you can get all of include paths, use "find" or > > something and check for duplicate header names. > > > > The examples inlcuded "libmesh/foo.h" which is probably a good idea > > to stick with although maybe someone who has used it more can comment :) > > > > > >> > >>>if you run "make -n example-opt" and copy the output it should work > >> > >> I tried running that command in the directory where my example program > >> is and it said > >> "make: *** No rule to make target `example-opt'. Stop." > > > > Well, the idea was using the makefile for a working example. > > Maybe I mistyped the target name but you can look through the > > examples. > > > >> > >> > >> > >>>although without the libmesh dir in the includes I guess you would have > >>>to add it to the include paths. > >> libmesh.h is in the includes file. > >> > >> I still have the question about how to add my example file to the > >> configure.ac<http://configure.ac><http://configure.ac> file in the > > section AC_CONFIG_FILES > >> since it's required in order to add a new example file according to > >> https://github.com/libMesh/libmesh/wiki/Adding-a-new-example. If you > >> don't know how to add the example to the AC_CONFIG_FILES (for example > >> do I add the directory of the Makefile I want to create in it?) Is > >> there another potential way to compile my program? I did try editing > >> the example makefile to include the directory of my project under > >> SUBDIRS but when I tried to run the makefile the compiler said: > > > > What are you using for a makefile now? I'm not sure this is even relevant > > for what you are doing. Getting your code to compile AFAICT is a > standalone > > activity that will just need libmesh include files and libs for linking. > > > > --- end of new comments --- > > > >> > >> Making all in eigenproblems/eigenproblems_femviblibtests_ex1 > >> make[1]: Entering directory > >> > > `/opt/libmesh-1.0.0-rc1/examples/eigenproblems/ > eigenproblems_femviblibtests_ex1' > >> make[1]: *** No rule to make target `all'. Stop. > >> make[1]: Leaving directory > >> > > `/opt/libmesh-1.0.0-rc1/examples/eigenproblems/ > eigenproblems_femviblibtests_ex1' > >> make: *** [all-recursive] Error 1 > >> > >> On Mon, Aug 8, 2016 at 10:34 AM, Harry Pearce > >> > > <har...@gm...<mailto:har...@gm...><mailto: > har...@gm...<mailto:har...@gm...>>> > > wrote: > >>>Did it complain it can't find the header file first? > >> > >> It did complain about the libmesh.h header before I added the following > >> to set my environment: > >> export PATH=/opt/petsc-3.7.1:/opt/slepc-3.7.0:/opt/libmesh-1.0. > 0-rc1:$PATH > >> export PATH=/opt/petsc-3.7.1:/opt/libmesh-1.0.0-rc1:$PATH > >> export PATH=$PETSC_DIR/arch-linux2-c-debug:$PATH > >> export CPATH=/opt/libmesh-1.0.0-rc1/include/libmesh/:$CPATH > >> > >>>if you run "make -n example-opt" and copy the output it should work > >> > >> I tried running that command in the directory where my example program > >> is and it said > >> "make: *** No rule to make target `example-opt'. Stop." > >> > >> > >> > >>>although without the libmesh dir in the includes I guess you would have > >>>to add it to the include paths. > >> libmesh.h is in the includes file. > >> > >> I still have the question about how to add my example file to the > >> configure.ac<http://configure.ac><http://configure.ac> file in the > > section AC_CONFIG_FILES > >> since it's required in order to add a new example file according to > >> https://github.com/libMesh/libmesh/wiki/Adding-a-new-example. If you > >> don't know how to add the example to the AC_CONFIG_FILES (for example > >> do I add the directory of the Makefile I want to create in it?) Is > >> there another potential way to compile my program? I did try editing > >> the example makefile to include the directory of my project under > >> SUBDIRS but when I tried to run the makefile the compiler said: > >> > >> Making all in eigenproblems/eigenproblems_femviblibtests_ex1 > >> make[1]: Entering directory > >> > > `/opt/libmesh-1.0.0-rc1/examples/eigenproblems/ > eigenproblems_femviblibtests_ex1' > >> make[1]: *** No rule to make target `all'. Stop. > >> make[1]: Leaving directory > >> > > `/opt/libmesh-1.0.0-rc1/examples/eigenproblems/ > eigenproblems_femviblibtests_ex1' > >> make: *** [all-recursive] Error 1 > >> > >> Harry Pearce > >> > >> > >> On Fri, Aug 5, 2016 at 2:32 PM, Mike Marchywka > >> > > <mar...@ho...<mailto:mar...@ho...><mailto: > mar...@ho...<mailto:mar...@ho...>>> > > wrote: > >> > >> > >> > >> Did it complain it can't find the header file first? > >> My includes for libmesh all start libmesh/foo.h > >> > >> if you run "make -n example-opt" and copy the output it should work > >> although without the libmesh dir in the includes I guess you would have > >> to add it to the include paths. > >> > >> > >> ________________________________ > >>> From: > > har...@gm...<mailto:har...@gm...><mailto: > har...@gm...<mailto:har...@gm...>> > >>> Date: Fri, 5 Aug 2016 14:07:58 -0700 > >>> Subject: Re: [Libmesh-users] FW: libmesh problem: libmesh_nullptr was > >>> not declared in scope > >>> To: > > mar...@ho...<mailto:mar...@ho...><mailto:m > arc...@ho...<mailto:mar...@ho...>> > >>> CC: > > roy...@ic...<mailto:roy...@ic...><mailto: > roy...@ic...<mailto:roy...@ic...>>; > >> > > lib...@li...<mailto:libmesh > -u...@li...><mailto:lib...@li... > <mailto:lib...@li...>> > >>> > >>>>"I skimmed most of the messages and it did sound like it would be > > something > >>>>easy to find by looking at the exact code so I was a bit surprised > >>> with that last post :)" > >>> > >>> Just in case it is something easy to spot I have the code at the bottom > >>> of the email highlighted. If you don't need the code you can just > >>> ignore the highlighted part of the email. > >>> > >>>>The linking is a bit unorthodox, indeed I think you had some specific > >>>>recommendations for linking to libmesh that hid most of the details, > but > >>>>actually building it and compiling with it were pretty easy. I turned > >>> on some debug info > >>>>from the example make script, just copied its invokation of g++ and > > libtool > >>>>and that seems to work for some simple case. > >>> > >>> This is my first time compiling a libmesh code so I tried to figure out > >>> what compiler flags to use in the suggested manner > >>> for simple codes (according to > >>> http://libmesh.github.io/installation.html) which is libmesh-config > >>> --cxx` -o HPeigenproblems_PZ_8_2_16_2 HPeigenproblems_PZ_8_2_16_2.C > >>> `libmesh-config --cxxflags --include --ldflags --libs`. > >>> > >>> This is my first time compiling a libmesh code so I thought maybe I > >>> should use a Makefile.am from a regular libmesh example. > >>> (My other example files compiled properly) so I was thinking that it > >>> might work to follow the instructions for adding a new libmesh example > >>> (https://github.com/libMesh/libmesh/wiki/Adding-a-new-example) which > >>> invoves changing the Makefile.am and run.sh from another example file > >>> to run the program. > >>> > >>> I started following the directions for adding a new example and am not > >>> sure what line to put into AC_CONFIG_FILES in > >>> > > configure.ac<http://configure.ac><http://configure.ac><http: > //configure.ac> > > at the top > >> level of libmesh. I would > >>> have thought it would have been the directory of the example file I am > >>> adding or the Makefile that goes with it but I do not see the > >>> directories of any other example programs in AC_CONFIG_FILES within the > >>> > > configure.ac<http://configure.ac><http://configure.ac><http: > //configure.ac> > > program. > >>> > >>> > >>> > >>> > >>> > >>> Harry Pearce > >>> > >>> Just in case highlighting doesn't show up on the libmesh users archive, > >>> the highlighted code is below: > >>> #include <fstream> > >>> #include "libmesh.h" > >>> #include "mesh.h" > >>> #include "libmesh_config.h" > >>> //#include "mesh_generation.h" > >>> // #include "exodusII_io.h" > >>> #include "eigen_system.h" > >>> #include "equation_systems.h" > >>> // #include "fe.h" > >>> // #include "quadrature_gauss.h" > >>> // #include "dense_matrix.h" > >>> // #include "sparse_matrix.h" > >>> // #include "numeric_vector.h" > >>> // #include "dof_map.h" > >>> #include "libmesh_nullptr.h" > >>> #include <string.h> > >>> // #include "parallel_algebra.h" > >>> //#include "parallel.h" > >>> //#include <auto_ptr.h> > >>> > >>> > >>> using namespace libMesh; > >>> > >>> char prefix[80]; > >>> > >>> void assemble_mass(EquationSystems& es, > >>> > >>> const std::string& system_name); > >>> > >>> int main (int argc, char** argv) > >>> > >>> { > >>> > >>> LibMeshInit init (argc, argv); > >>> > >>> #ifndef LIBMESH_HAVE_SLEPC > >>> > >>> if (libMesh::processor_id() == 0) > >>> > >>> std::cerr << "ERROR: This example requires libMesh to be\n" > >>> > >>> << "compiled with SLEPc eigen solvers support!" > >>> > >>> << std::endl; > >>> > >>> return 0; > >>> > >>> #else > >>> > >>> #ifdef LIBMESH_DEFAULT_SINGLE_PRECISION > >>> > >>> libmesh_example_assert(false, "--disable-singleprecision"); > >>> > >>> #endif > >>> > >>> if (argc < 3) > >>> > >>> { > >>> > >>> if (libMesh::processor_id() == 0) > >>> > >>> std::cerr << "\nUsage: " << argv[0] > >>> > >>> << " -n <number of eigen values>" > >>> > >>> << std::endl; > >>> > >>> libmesh_error(); > >>> > >>> } > >>> > >>> > >>> > >>> else > >>> > >>> { > >>> > >>> std::cout << "Running " << argv[0]; > >>> > >>> > >>> > >>> for (int i=1; i<argc; i++) > >>> > >>> std::cout << " " << argv[i]; > >>> > >>> > >>> > >>> std::cout << std::endl << std::endl; > >>> > >>> } > >>> > >>> const unsigned int nev = std::atoi(argv[2]); > >>> > >>> // libmesh_example_assert(3 <= LIBMESH_DIM, "2D support"); > >>> > >>> > >>> > >>> Mesh mesh; > >>> > >>> MeshTools::Generation::build_cube (mesh, > >>> > >>> 10, 10, 10, > >>> > >>> -1., 1., > >>> > >>> -1., 1., > >>> > >>> -1., 1., > >>> > >>> HEX27); > >>> > >>> mesh.print_info(); > >>> > >>> > >>> > >>> char xyzfilename[80]; > >>> > >>> strcpy(prefix,argv[3]); > >>> > >>> strcpy(xyzfilename,argv[3]); > >>> > >>> strcat(xyzfilename,".xyz"); > >>> > >>> std::cout << "Writing nodal xyz coordinates to file: " << > >>> xyzfilename << std::endl; > >>> > >>> std::ofstream xyzfile; > >>> > >>> xyzfile.open (xyzfilename); > >>> > >>> MeshBase::const_node_iterator node_it = mesh.nodes_begin(); > >>> > >>> > >>> > >>> > >>> const MeshBase::const_node_iterator node_end = mesh.nodes_end(); > >>> > >>> xyzfile << "Number of nodes: " << mesh.n_nodes() << "\n"; > >>> > >>> for (; node_it != node_end; ++node_it) > >>> > >>> { > >>> > >>> //count++; > >>> > >>> const Point& p = **node_it; > >>> > >>> const Real px = p(0); > >>> > >>> const Real py = p(1); > >>> > >>> xyzfile << px << " " << py << " \n"; > >>> > >>> } > >>> > >>> xyzfile.close(); > >>> > >>> std::cout << "Finished writing nodal xyz coordinates to file: " << > >>> xyzfilename << std::endl; > >>> > >>> > >>> EquationSystems equation_systems (mesh); > >>> > >>> EigenSystem & eigen_system = > >>> > >>> equation_systems.add_system<EigenSystem> ("Eigensystem"); > >>> > >>> > >>> > >>> > >>> eigen_system.add_variable("u", SECOND); > >>> > >>> eigen_system.attach_assemble_function (assemble_mass); > >>> > >>> > >> > > equation_systems.parameters.se<http://equation_systems.parameters.se>< > http://equation_systems.parameters.se>t<unsigned > >> int>("eigenpairs") = nev; > >>> > >>> > >> > > equation_systems.parameters.se<http://equation_systems.parameters.se>< > http://equation_systems.parameters.se>t<unsigned > >> int>("basis vectors") = nev*3; > >>> > >>> eigen_system.eigen_solver->set_eigensolver_type(KRYLOVSCHUR); > >>> > >>> // eigen_system.eigen_solver->set_eigensolver_type(LAPACK); > >>> > >>> eigen_system.eigen_solver->set_position_of_spectrum(SMALLEST_REAL); > >>> > >>> > >> > > equation_systems.parameters.se<http://equation_systems.parameters.se>< > http://equation_systems.parameters.se>t<Real>("linear > >> solver tolerance") = > >>> pow(TOLERANCE, 5./3.); > >>> > >>> > >> > > equation_systems.parameters.se<http://equation_systems.parameters.se>< > http://equation_systems.parameters.se>t<unsigned > >> int> > >>> > >>> ("linear solver maximum iterations") = 1000; > >>> > >>> eigen_system.set_eigenproblem_type(GHEP); > >>> > >>> equation_systems.init(); > >>> > >>> equation_systems.print_info(); > >>> > >>> > >>> > >>> eigen_system.solve(); > >>> > >>> unsigned int nconv = eigen_system.get_n_converged(); > >>> > >>> std::cout << "Number of converged eigenpairs: " << nconv > >>> > >>> << "\n" << std::endl; > >>> > >>> if (nconv != 0) > >>> > >>> { > >>> > >>> eigen_system.get_eigenpair(nconv-1); > >>> > >>> > >>> > >>> #ifdef LIBMESH_HAVE_EXODUS_API > >>> > >>> ExodusII_IO (mesh).write_equation_systems ("out.e", equation_systems); > >>> > >>> #endif // #ifdef LIBMESH_HAVE_EXODUS_API > >>> > >>> } > >>> > >>> else > >>> > >>> { > >>> > >>> std::cout << "WARNING: Solver did not converge!\n" << nconv << > >>> std::endl; > >>> > >>> } > >>> > >>> #endif // LIBMESH_HAVE_SLEPC > >>> > >>> return 0; > >>> > >>> } > >>> > >>> void assemble_mass(EquationSystems& es, > >>> > >>> const std::string& system_name) > >>> > >>> { > >>> > >>> char potfilename[80]; > >>> > >>> strcpy(potfilename,prefix); > >>> > >>> strcat(potfilename,".pot.out"); > >>> > >>> std::fstream potfile; > >>> > >>> potfile.open(potfilename, std::ios::out); > >>> > >>> if(!potfile) {std::cerr << "Error opening PES output file."; return;} > >>> > >>> libmesh_assert (system_name == "Eigensystem"); > >>> > >>> #ifdef LIBMESH_HAVE_SLEPC > >>> > >>> const MeshBase& mesh = es.get_mesh(); > >>> > >>> const unsigned int dim = mesh.mesh_dimension(); > >>> > >>> EigenSystem & eigen_system = es.get_system<EigenSystem> (system_name); > >>> > >>> FEType fe_type = eigen_system.get_dof_map().variable_type(0); > >>> > >>> SparseMatrix<Number>& matrix_A = *eigen_system.matrix_A; > >>> > >>> SparseMatrix<Number>& matrix_B = *eigen_system.matrix_B; > >>> > >>> AutoPtr<FEBase> fe (FEBase::build(dim, fe_type)); > >>> > >>> QGauss qrule (dim, fe_type.default_quadrature_order()); > >>> > >>> fe->attach_quadrature_rule (&qrule); > >>> > >>> const std::vector<Real>& JxW = fe->get_JxW(); > >>> > >>> const std::vector<Point>& q_point = fe->get_xyz(); > >>> > >>> const std::vector<std::vector<Real>>& phi = fe->get_phi(); > >>> > >>> const std::vector<std::vector<RealGradient>>& dphi = fe->get_dphi(); > >>> > >>> const DofMap& dof_map = eigen_system.get_dof_map(); > >>> > >>> DenseMatrix<Number> Me; > >>> > >>> DenseMatrix<Number> Ke; > >>> > >>> std::vector<unsigned int> dof_indices; > >>> > >>> MeshBase::const_element_iterator el = > >>> mesh.active_local_elements_begin(); > >>> > >>> const MeshBase::const_element_iterator end_el = > >>> mesh.active_local_elements_end(); > >>> > >>> > >>> > >>> std::cout << "Writing PES data to file: " << potfilename << std::endl; > >>> > >>> double V, gxx, gxy, gyy, gzx, gzy, gzz; > >>> > >>> for ( ; el != end_el; ++el) > >>> > >>> { > >>> > >>> const Elem* elem = *el; > >>> > >>> dof_map.dof_indices (elem, dof_indices); > >>> > >>> fe->reinit (elem); > >>> > >>> Ke.resize (dof_indices.size(), dof_indices.size()); > >>> > >>> Me.resize (dof_indices.size(), dof_indices.size()); > >>> > >>> for (unsigned int qp=0; qp<qrule.n_points(); qp++) > >>> > >>> { > >>> > >>> const double x = q_point[qp](0); > >>> > >>> const double y = q_point[qp](1); > >>> > >>> const double z = q_point[qp](2); > >>> > >>> /* > >>> > >>> Doub potpoint(ndim); > >>> > >>> potpoint[0] = x; > >>> > >>> potpoint[1] = y; > >>> > >>> potpoint[2] = z; > >>> > >>> */ > >>> > >>> V=x*x + y*y + z*z; > >>> > >>> gxx=0.10; > >>> > >>> gyy=1.20; > >>> > >>> gxy=1.10; > >>> > >>> gzx=0.003; > >>> > >>> gzy=0.40; > >>> > >>> gzz=0.50; > >>> > >>> > >>> potfile << x << '\t' << y << '\t' << z << '\t' << V << '\t' << "\n"; > >>> > >>> > >>> /* > >>> > >>> const Elem* elem = *el; > >>> > >>> dof_map.dof_indices (elem, dof_indices); > >>> > >>> fe->reinit (elem); > >>> > >>> Ke.resize (dof_indices.size(), dof_indices.size()); > >>> > >>> Me.resize (dof_indices.size(), dof_indices.size()); > >>> > >>> */ > >>> > >>> // for (unsigned int qp=0; qp<qrule.n_points(); qp++) > >>> > >>> for (unsigned int i=0; i<phi.size(); i++) > >>> > >>> for (unsigned int j=0; j<phi.size(); j++) > >>> > >>> { > >>> > >>> > >>> Ke(i,j) += JxW[qp]*( > >>> > >>> 0.5*( gxx*dphi[i][qp](0)*dphi[j][qp](0) > >>> > >>> + gyy*dphi[i][qp](1)*dphi[j][qp](1) > >>> > >>> + gzz*dphi[i][qp](2)*dphi[j][qp](2) > >>> > >>> + gxy*dphi[i][qp](0)*dphi[j][qp](1) > >>> > >>> + gxy*dphi[i][qp](1)*dphi[j][qp](0) > >>> > >>> + gzx*dphi[i][qp](0)*dphi[j][qp](2) > >>> > >>> + gzx*dphi[i][qp](2)*dphi[j][qp](0) > >>> > >>> + gzy*dphi[i][qp](1)*dphi[j][qp](2) > >>> > >>> + gzy*dphi[i][qp](2)*dphi[j][qp](1) > >>> > >>> // + dgxxdx*dphi[i][qp](0) > >>> > >>> // + dgyydy*dphi[i][qp](1) > >>> > >>> // + dgzzdz*dphi[i][qp](2) > >>> > >>> // + dgxydx*dphi[i][qp](1) > >>> > >>> // + dgxydy*dphi[i][qp](0) > >>> > >>> // + dgxzdx*dphi[i][qp](2) > >>> > >>> // + dgzxdz*dphi[i][qp](0) > >>> > >>> // + dgyzdy*dphi[i][qp](2) > >>> > >>> // + dgzydz*dphi[i][qp](1) > >>> > >>> )*33.71526 + V*phi[i][qp]*phi[j][qp]); > >>> > >>> > >>> > >>> Me(i,j) += JxW[qp]*phi[i][qp]*phi[j][qp]; > >>> > >>> } > >>> > >>> matrix_A.add_matrix (Ke, dof_indices); > >>> > >>> matrix_B.add_matrix (Me, dof_indices); > >>> > >>> } > >>> > >>> } // end of element loop > >>> > >>> std::cout << "Finished writing PES data to file: " << potfilename > >>> << std::endl; > >>> > >>> potfile.close(); > >>> > >>> std::cout << "Matrix A assembly completed! " << "\n" << std::endl; > >>> > >>> std::cout << "Matrix B assembly completed! " << "\n" << std::endl; > >>> > >>> std::cout << "Exporting Matrix A in matlab sparse matrix format... > >>> " << "\n" << std::endl; > >>> > >>> char buf1[14]; > >>> > >>> sprintf (buf1, "A.m"); > >>> > >>> matrix_A.print_matlab(buf1); > >>> > >>> std::cout << "Matrix A Exported! " << "\n" << std::endl; > >>> > >>> // matrix_A.clear(); > >>> > >>> std::cout << "Matrix A Cleared from Memory! " << "\n" << std::endl; > >>> > >>> std::cout << "Exporting Matrix B in matlab sparse matrix format... > >>> " << "\n" << std::endl; > >>> > >>> char buf2[14]; > >>> > >>> sprintf (buf2, "B.m"); > >>> > >>> matrix_B.print_matlab(buf2); > >>> > >>> std::cout << "Matrix B Exported! " << "\n" << std::endl; > >>> > >>> // matrix_B.clear(); > >>> > >>> std::cout << "Matrix B Cleared from Memory! " << "\n" << std::endl; > >>> > >>> #endif // LIBMESH_HAVE_SLEPC > >>> > >>> /** > >>> > >>> * All done! > >>> > >>> */ > >>> > >>> return; > >>> > >>> On Thu, Aug 4, 2016 at 5:41 PM, Mike Marchywka > >>> > >> > > <mar...@ho...<mailto:mar...@ho...><mailto: > mar...@ho...<mailto:mar...@ho...>><mailto: > mar...@ho...<mailto:mar...@ho...><mailto:m > arc...@ho...<mailto:mar...@ho...>>>> > >> wrote: > >>> > >>> > >>> > >>> > >>> ---------------------------------------- > >>>> Date: Thu, 4 Aug 2016 19:11:03 -0500 > >>>> From: > >> > > roy...@ic...<mailto:roy...@ic...><mailto: > roy...@ic...<mailto:roy...@ic...>><mailto:royst > gn...@ic...<mailto:roy...@ic...><mailto: > roy...@ic...<mailto:roy...@ic...>>> > >>>> To: > >> > > mar...@ho...<mailto:mar...@ho...><mailto:m > arc...@ho...<mailto:mar...@ho...>><mailto:m > arc...@ho...<mailto:mar...@ho...><mailto:ma > rc...@ho...<mailto:mar...@ho...>>> > >>>> CC: > >>> > >> > > lib...@li...<mailto:libmesh > -u...@li...><mailto:lib...@li... > <mailto:lib...@li...>><mailto:libmesh-users@lists. > sourceforge.net<mailto:lib...@li...><mailto: > lib...@li...<mailto:libmesh > -u...@li...>>> > >>>> Subject: Re: [Libmesh-users] FW: libmesh problem: libmesh_nullptr was > >>> not declared in scope > >>>> > >>>> > >>>> > >>>> On Thu, 4 Aug 2016, Mike Marchywka wrote: > >>>> > >>>>>> I have not followed the exchange but sometimes I end up including > >>> headers within a namespace or > >>>>>> something. Is libmesh being included within something? Not sure > >>> what that does with some > >>>>>> macros and others not lol. > >>>> > >>>> That was my first guess, too! That's actually why I was asking about > >>>> the config macros - if he was in the nullptr-workaround case, then > >>>> accidentally including a libMesh header within a namespace would have > >>>> exactly the effect seen: the class we define wouldn't exist in the > >>>> global namespace and the compiler wouldn't recognize it. > >>> > >>> I skimmed most of the messages and it did sound like it would be > something > >>> easy to find by looking at the exact code so I was a bit surprised with > >>> that last post :) > >>> > >>> For problems in unfamiliar code grep can be amazingly > >>> useful even if you expect 1000's of hits they usually end up being easy > >>> to sort out. > >>> > >>> The linking is a bit unorthodox, indeed I think you had some specific > >>> recommendations for linking to libmesh that hid most of the details, > but > >>> actually building it and compiling with it were pretty easy. I turned > >>> on some debug info > >>> from the example make script, just copied its invokation of g++ and > > libtool > >>> and that seems to work for some simple case. > >>> > >>> > >>> > >>> > >>>> --- > >>>> Roy > >>> > >>> > >> > > ------------------------------------------------------------ > ------------------ > >>> _______________________________________________ > >>> Libmesh-users mailing list > >>> > >> > > Lib...@li...<mailto:Libmesh > -u...@li...><mailto:Lib...@li... > <mailto:Lib...@li...>><mailto:Libmesh-users@lists. > sourceforge.net<mailto:Lib...@li...><mailto: > Lib...@li...<mailto:Libmesh > -u...@li...>>> > >>> https://lists.sourceforge.net/lists/listinfo/libmesh-users > >>> > >> > >> > >> > > > > > |