#!/usr/bin/env python

import numpy as N
from LCETools import *
from ODEMaps import *
#import psyco
#psyco.full()

#Common parameters
t0 = 0.0
dt = 0.01
T_pb = 0.1
N_trans = 100
N_lce = 100000


x0 = LorenzInitialConditions()
param = [10.,28.,8./3.]

LCE_lorenz = ComputeLCE(Lorenz, LorenzJacobian, x0, param, dt, t0, T_pb, N_trans, N_lce)
d_ky_lorenz = KaplanYorkeDimension(LCE_lorenz)
print 'Lorenz System'
print 'LCE\'s: '+ str(LCE_lorenz)
print 'Kaplan Yorke dimension: ' + str(d_ky_lorenz)


x0 = RosslerInitialConditions()
param = [0.2,0.2,5.7]

LCE_rossler = ComputeLCE(Rossler, RosslerJacobian, x0, param, dt, t0, T_pb, N_trans, N_lce)
d_ky_rossler = KaplanYorkeDimension(LCE_rossler)
print 'Rossler System'
print 'LCE\'s: '+ str(LCE_rossler)
print 'Kaplan Yorke dimension: ' + str(d_ky_rossler)


x0 = [N.pi/5., 0.]
param = [1.,1.]
LCE_pendulum = ComputeLCE(pendulum, pendulumJacobian, x0, param, dt, t0, T_pb, N_trans, N_lce)
d_ky_pendulum = KaplanYorkeDimension(LCE_pendulum)
print 'Pendulum System'
print 'LCE\'s: '+ str(LCE_pendulum)
print 'Kaplan Yorke dimension: ' + str(d_ky_pendulum)


#x0 = [N.pi/5., 0., 2.*N.pi/3., 0.]
#param = [1.,1.,1.,1.,9.81]
#LCE_double_pendulum = ComputeLCE(doublependulum, doublependulumJacobian, x0, param, dt, t0, T_pb, N_trans, N_lce)
#d_ky_double_pendulum = KaplanYorkeDimension(LCE_double_pendulum)
#print 'Double Pendulum System'
#print 'LCE\'s: '+ str(LCE_double_pendulum)
#print 'Kaplan Yorke dimension: ' + str(d_ky_double_pendulum)

file = open('LCE_results.dat','w')
file.write('Lorenz System\n')
file.write('LCE\'s: '+ str(LCE_lorenz)+'\n')
file.write('Kaplan Yorke dimension: ' + str(d_ky_lorenz)+'\n')
file.write('Rossler System\n')
file.write('LCE\'s: '+ str(LCE_rossler)+'\n')
file.write('Kaplan Yorke dimension: ' + str(d_ky_rossler)+'\n')
file.write('Pendulum System\n')
file.write('LCE\'s: '+ str(LCE_pendulum)+'\n')
file.write('Kaplan Yorke dimension: ' + str(d_ky_pendulum)+'\n')

