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