________________________________
> From: harroontheg...@gmail.com
> Date: Mon, 8 Aug 2016 10:35:42 -0700
> Subject: Re: [Libmesh-users] FW: libmesh problem: libmesh_nullptr was
> not declared in scope
> To: marchy...@hotmail.com; royst...@ices.utexas.edu
> CC: libmesh-users@lists.sourceforge.net
>
> 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> 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
> <harroontheg...@gmail.com<mailto: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<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
> <marchy...@hotmail.com<mailto: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<mailto: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<mailto:marchy...@hotmail.com>
>> CC: royst...@ices.utexas.edu<mailto:royst...@ices.utexas.edu>;
> libmesh-users@lists.sourceforge.net<mailto: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><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> 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>t<unsigned
>
> int>("eigenpairs") = nev;
>>
>>
> 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>t<Real>("linear
>
> solver tolerance") =
>> pow(TOLERANCE, 5./3.);
>>
>>
> 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
>>
> <marchy...@hotmail.com<mailto:marchy...@hotmail.com><mailto: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><mailto:royst...@ices.utexas.edu<mailto:royst...@ices.utexas.edu>>
>
>>> To:
> marchy...@hotmail.com<mailto:marchy...@hotmail.com><mailto:marchy...@hotmail.com<mailto:marchy...@hotmail.com>>
>
>>> CC:
>>
> libmesh-users@lists.sourceforge.net<mailto:libmesh-users@lists.sourceforge.net><mailto: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><mailto: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