________________________________
> From: harroontheg...@gmail.com
> Date: Tue, 9 Aug 2016 10:35:47 -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
>
>
>
> 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
> <marchy...@hotmail.com<mailto:marchy...@hotmail.com>> wrote:
>
>
>
>
> ________________________________
>> From: harroontheg...@gmail.com<mailto: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<mailto:marchy...@hotmail.com>;
> royst...@ices.utexas.edu<mailto:royst...@ices.utexas.edu>
>> CC:
> libmesh-users@lists.sourceforge.net<mailto: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><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><mailto: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><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><mailto: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><mailto: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><mailto:marchy...@hotmail.com<mailto:marchy...@hotmail.com>>
>
>>> CC:
> royst...@ices.utexas.edu<mailto:royst...@ices.utexas.edu><mailto:royst...@ices.utexas.edu<mailto:royst...@ices.utexas.edu>>;
>
>>
> libmesh-users@lists.sourceforge.net<mailto:libmesh-users@lists.sourceforge.net><mailto: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><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
>>>
>>
> <marchy...@hotmail.com<mailto:marchy...@hotmail.com><mailto:marchy...@hotmail.com<mailto:marchy...@hotmail.com>><mailto: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>><mailto: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>><mailto: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>><mailto: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>><mailto: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