Hi Developers, Users,

I am trying to use a "typedef" to wrap EigenSystem into TransientSystem:

*typedef TransientSystem<EigenSystem> TransientEigenSystem;*

I will eventually use this in MOOSE. I went to
examples/eigenproblems/eigenproblems_ex1 to add one line to test this:



*TransientEigenSystem & trst_eigen_system3 =
equation_systems.add_system<TransientEigenSystem>
("Transient_Eigen_System");*
There is a link error:











*CXX      example_opt-eigenproblems_ex1.o  CXXLD    example-optUndefined
symbols for architecture x86_64:
"libMesh::TransientSystem<libMesh::EigenSystem>::TransientSystem(libMesh::EquationSystems&,
std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> > const&, unsigned int)", referenced from:
libMesh::TransientSystem<libMesh::EigenSystem>&
libMesh::EquationSystems::add_system<libMesh::TransientSystem<libMesh::EigenSystem>
>(std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> > const&) in example_opt-eigenproblems_ex1.old:
symbol(s) not found for architecture x86_64clang-3.7: error: linker command
failed with exit code 1 (use -v to see invocation)make: *** [example-opt]
Error 1*
All files I have changed are:










































































*diff --git a/examples/eigenproblems/eigenproblems_ex1/eigenproblems_ex1.C
b/examples/eigenproblems/eigenproblems_ex1/eigenproblems_ex1.Cindex
7b4a909..eb8a597 100644---
a/examples/eigenproblems/eigenproblems_ex1/eigenproblems_ex1.C+++
b/examples/eigenproblems/eigenproblems_ex1/eigenproblems_ex1.C@@ -47,6
+47,7 @@ #include "libmesh/sparse_matrix.h" #include
"libmesh/numeric_vector.h" #include "libmesh/dof_map.h"+#include
"libmesh/transient_system.h"  // Bring in everything from the libMesh
namespace using namespace libMesh;@@ -113,6 +114,10 @@ int main (int argc,
char ** argv)   EigenSystem & eigen_system =
equation_systems.add_system<EigenSystem> ("Eigensystem"); +  // Fails+
TransientEigenSystem & trst_eigen_system3 =+
equation_systems.add_system<TransientEigenSystem>
("Transient_Eigen_System");+   // Declare the system variables.   // Adds
the variable "p" to "Eigensystem".   "p"   // will be approximated using
second-order approximation.diff --git a/include/systems/transient_system.h
b/include/systems/transient_system.hindex 4bc529d..1ffe4c0 100644---
a/include/systems/transient_system.h+++
b/include/systems/transient_system.h@@ -22,6 +22,7 @@  // Local
Includes #include "libmesh/system.h"+#include
"libmesh/libmesh_config.h"  // C++ includes @@ -33,6 +34,7 @@ namespace
libMesh class LinearImplicitSystem; class NonlinearImplicitSystem; class
ExplicitSystem;+// class EigenSystem;  /**  * This class provides a
specific system class.  It aims@@ -146,7 +148,9 @@ typedef
TransientSystem<LinearImplicitSystem>
TransientLinearImplicitSystem; typedef
TransientSystem<NonlinearImplicitSystem>
TransientNonlinearImplicitSystem; typedef TransientSystem<ExplicitSystem>
TransientExplicitSystem; typedef TransientSystem<System>
TransientBaseSystem;-+//#if LIBMESH_HAVE_SLEPC+typedef
TransientSystem<EigenSystem> TransientEigenSystem;+//#endif  //
------------------------------------------------------------diff --git
a/src/systems/equation_systems.C b/src/systems/equation_systems.Cindex
ee925a6..1bbea21 100644--- a/src/systems/equation_systems.C+++
b/src/systems/equation_systems.C@@ -408,6 +408,8 @@ System &
EquationSystems::add_system (const std::string & sys_type,   // build an
eigen system   else if (sys_type == "Eigen")
this->add_system<EigenSystem> (name);+  else if (sys_type ==
"TransientEigenSystem")+    this->add_system<TransientEigenSystem> (name);
 #endif  #if defined(LIBMESH_USE_COMPLEX_NUMBERS)*
Thanks.

Fande Kong
------------------------------------------------------------------------------
_______________________________________________
Libmesh-devel mailing list
Libmesh-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-devel

Reply via email to