00001 /* ************************************************************* 00002 00003 Copyright 2010 Terry Lyons, Stephen Buckley, Djalil Chafai, 00004 Greg Gyurkó and Arend Janssen. 00005 00006 Distributed under the terms of the GNU General Public License, 00007 Version 3. (See accompanying file License.txt) 00008 00009 ************************************************************* */ 00010 00011 00012 00013 #pragma once 00014 00015 #ifndef __NONLINEARGROUPELEMENT__ 00016 #define __NONLINEARGROUPELEMENT__ 00017 00018 00019 #include <map> 00020 #include <vector> 00021 #include "POLYLIE.h" 00022 #include "lietovectorfield.h" 00023 #include "AbstractSolutionPoint.h" 00024 00025 00026 namespace SPB 00027 { 00029 00033 template <typename my_alg_type_IN, typename my_alg_type_OUT> 00034 class NonLinearGroupElement 00035 { 00036 typedef typename my_alg_type_IN::LIE LIE_IN; 00037 00038 public: 00040 NonLinearGroupElement(void) 00041 { 00042 }; 00043 00046 NonLinearGroupElement(const LIE_IN & liearg, lietovectorfield< my_alg_type_IN, POLYLIE<my_alg_type_OUT> > & lie2vf) 00047 { 00048 equation = lie2vf.lie2vectorfield(liearg); 00049 }; 00050 00052 ~NonLinearGroupElement(void) 00053 { 00054 }; 00055 00057 00060 AbstractSolutionPoint<my_alg_type_OUT> evaluate(AbstractSolutionPoint<my_alg_type_OUT> & InitialPoint) 00061 { 00062 OdeSolver<my_alg_type_OUT> temp; 00063 return temp.solve(InitialPoint, equation); 00064 }; 00065 00066 private: 00068 POLYLIE<my_alg_type_OUT> equation; 00069 }; 00070 } 00071 #endif // __NONLINEARGROUPELEMENT__