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 >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 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 On Mon, Aug 8, 2016 at 10:34 AM, Harry Pearce <harroontheg...@gmail.com> 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 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 <marchy...@hotmail.com> > 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: harroontheg...@gmail.com >> > Date: Fri, 5 Aug 2016 14:07:58 -0700 >> > Subject: Re: [Libmesh-users] FW: libmesh problem: libmesh_nullptr was >> > not declared in scope >> > To: marchy...@hotmail.com >> > CC: royst...@ices.utexas.edu; libmesh-users@lists.sourceforge.net >> > >> >>"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> 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> 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.set<unsigned int>("eigenpairs") = nev; >> > >> > equation_systems.parameters.set<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.set<Real>("linear solver tolerance") = >> > pow(TOLERANCE, 5./3.); >> > >> > equation_systems.parameters.set<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 >> > <marchy...@hotmail.com<mailto:marchy...@hotmail.com>> wrote: >> > >> > >> > >> > >> > ---------------------------------------- >> >> Date: Thu, 4 Aug 2016 19:11:03 -0500 >> >> From: royst...@ices.utexas.edu<mailto:royst...@ices.utexas.edu> >> >> To: marchy...@hotmail.com<mailto:marchy...@hotmail.com> >> >> CC: >> > libmesh-users@lists.sourceforge.net<mailto:libmesh-users@ >> lists.sourceforge.net> >> >> 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 >> > Libmesh-users@lists.sourceforge.net<mailto:Libmesh-users@ >> lists.sourceforge.net> >> > https://lists.sourceforge.net/lists/listinfo/libmesh-users >> > >> > > > ------------------------------------------------------------------------------ What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic patterns at an interface-level. Reveals which users, apps, and protocols are consuming the most bandwidth. Provides multi-vendor support for NetFlow, J-Flow, sFlow and other flows. Make informed decisions using capacity planning reports. http://sdm.link/zohodev2dev _______________________________________________ Libmesh-users mailing list Libmesh-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/libmesh-users