# Modification of the path (for packages). Should be done in ~/.juliarc.jl with a fixed path instead.
if isempty(findin([abspath("../../../julia")], LOAD_PATH))
    unshift!(LOAD_PATH, abspath("../../../julia"))
end

# Load Dynare package
importall Dynare
using PyPlot

# Compile the rbc.mod file -> produce a module with the model definition.

@dynare "rbc1.mod"

importall SteadyState
importall PerfectForesightModelSolver

# First call to the steady state routine (analytical)
@time SteadyState.steady!(model_, oo_)

println(oo_.steady_state)

# Initialize paths for the endogenous variables
endogenousvariables = repmat(oo_.steady_state, 1, options_.pfmsolver.periods+2)
# Destroy part of the initial stock of physical capital.
endogenousvariables[1, 1] = .8*endogenousvariables[1, 1]

# Set path for the innovations (no shocks).
exogenousvariables = repmat(oo_.exo_steady_state', options_.pfmsolver.periods+2, 1)

# Simulate the transition to the steady state
@time simulate_perfect_foresight_model!(endogenousvariables, exogenousvariables, oo_.steady_state, model_, options_)

n = 200
dates = collect(0:n-1)
plt[:figure](1)
plot(dates, vec(endogenousvariables[1,1:n]), color="black", linewidth=2.0, linestyle="-")


# Initialize paths for the endogenous variables
endogenousvariables = repmat(oo_.steady_state, 1, options_.pfmsolver.periods+2)
# Destroy part of the initial stock of physical capital...
endogenousvariables[1, 1] = .8*endogenousvariables[1, 1]
# ... and assume that TFP is initially above its steady state level.
endogenousvariables[6, 1] = .5

# Set path for the innovations (no shocks).
exogenousvariables = repmat(oo_.exo_steady_state', options_.pfmsolver.periods+2, 1)

# Simulate the transition to the steady state (we should have an hump shaped transition)
@time simulate_perfect_foresight_model!(endogenousvariables, exogenousvariables, oo_.steady_state, model_, options_)

n = 200
dates = collect(0:n-1)
plot(dates, vec(endogenousvariables[1,1:n]), color="red", linewidth=2.0, linestyle="-")

# Initialize paths for the endogenous variables
endogenousvariables = repmat(oo_.steady_state, 1, options_.pfmsolver.periods+2)

# Set path for the innovations (no shocks).
exogenousvariables = repmat(oo_.exo_steady_state', options_.pfmsolver.periods+2, 1)

# Assume positive expected TFP shock in period 10
exogenousvariables[10+1, 1] = 2

# Simulate the paths for the endogenous variables, given the expected shock
@time simulate_perfect_foresight_model!(endogenousvariables, exogenousvariables, oo_.steady_state, model_, options_)

n = 200
dates = collect(0:n-1)
plt[:figure](2)
subplot(221)
title("Efficiency")
plot(dates, vec(endogenousvariables[5,1:n]), color="black", linewidth=2.0, linestyle="-")
subplot(223)
title("Output")
plot(dates, vec(endogenousvariables[2,1:n]), color="black", linewidth=2.0, linestyle="-")
subplot(222)
title("Consumption")
plot(dates, vec(endogenousvariables[4,1:n]), color="black", linewidth=2.0, linestyle="-")
subplot(224)
title("Labour")
plot(dates, vec(endogenousvariables[3,1:n]), color="black", linewidth=2.0, linestyle="-")
suptitle("Expected positive expected shock")
