nx = 2 
 
ny = 5 
 
ns = 1 
 
nv = 7 
 
ne = 7 
 
jumps_to_approximate = [2] 
 
eqns_to_approximate = [5] 
 
derivs_to_approximate_num = Int64[] 
 
derivs_to_approximate_den = Int64[] 
 
eqns_with_derivs = Int64[] 
 
variables = OrderedDict("l" => 1, "k" => 2, "c" => 3, "muc" => 4, "lm" => 5, "rbar" => 6, "wbar" => 7) 
 
function nlsolve_static_equations(f::Array{T,1},x::Array{T,1},p::Array{T1,1}) where {T<:Number,T1<:Real} 
 
  f[1] = x[1] - ((0.60)*x[1] + (0.20)*sqrt(1.0-(0.60)^2)*0.0)
  f[2] = x[6] - ((0.36)*((p[1])/(1.0))^((0.36)-1.0) - (0.08))
  f[3] = x[7] - ((1.0-(0.36))*((p[1])/(1.0))^((0.36)))
  f[4] = x[3]^(-(1.00)) - (x[4])
  f[5] = x[4] - (x[5] + (0.96)*(1.0+x[6])*x[4])
  f[6] = x[3] + x[2] - (x[7]*(1.0)*exp(x[1]) + (1.0+x[6])*x[2])
  f[7] = x[5]*(x[2]-(0.00)) - (0.0)

end 
 
function static_equations(x::Array{T,1},p::Array{T1,1}) where {T<:Number,T1<:Real} 
 
  f = Array{T,1}(undef,length(x)) 
 
  f[1] = x[1] - ((0.60)*x[1] + (0.20)*sqrt(1.0-(0.60)^2)*0.0)
  f[2] = x[6] - ((0.36)*((p[1])/(1.0))^((0.36)-1.0) - (0.08))
  f[3] = x[7] - ((1.0-(0.36))*((p[1])/(1.0))^((0.36)))
  f[4] = x[3]^(-(1.00)) - (x[4])
  f[5] = x[4] - (x[5] + (0.96)*(1.0+x[6])*x[4])
  f[6] = x[3] + x[2] - (x[7]*(1.0)*exp(x[1]) + (1.0+x[6])*x[2])
  f[7] = x[5]*(x[2]-(0.00)) - (0.0)

  return f 
 
end 
 
function dynamic_equations(x::Array{T,1},p::Array{T1,1}) where {T<:Number,T1<:Real} 
 
  f = Array{T,1}(undef,7) 
 
  f[1] = x[8] - ((0.60)*x[1] + (0.20)*sqrt(1.0-(0.60)^2)*x[15])
  f[2] = x[6] - ((0.36)*((p[1])/(1.0))^((0.36)-1.0) - (0.08))
  f[3] = x[7] - ((1.0-(0.36))*((p[1])/(1.0))^((0.36)))
  f[4] = x[3]^(-(1.00)) - (x[4])
  f[5] = x[4] - (x[5] + (0.96)*(1.0+x[6])*x[11])
  f[6] = x[3] + x[9] - (x[7]*(1.0)*exp(x[1]) + (1.0+x[6])*x[2])
  f[7] = x[5]*(x[2]-(0.00)) - (0.0)

  return f 
 
end 

function dynamic_eqn_1(x::Array{T,1},p::Array{T1,1}) where {T<:Number,T1<:Real} 
 
  f = x[8] - ((0.60)*x[1] + (0.20)*sqrt(1.0-(0.60)^2)*x[15])

  return f 
 
end 

function dynamic_eqn_2(x::Array{T,1},p::Array{T1,1}) where {T<:Number,T1<:Real} 
 
  f = x[6] - ((0.36)*((p[1])/(1.0))^((0.36)-1.0) - (0.08))

  return f 
 
end 

function dynamic_eqn_3(x::Array{T,1},p::Array{T1,1}) where {T<:Number,T1<:Real} 
 
  f = x[7] - ((1.0-(0.36))*((p[1])/(1.0))^((0.36)))

  return f 
 
end 

function dynamic_eqn_4(x::Array{T,1},p::Array{T1,1}) where {T<:Number,T1<:Real} 
 
  f = x[3]^(-(1.00)) - (x[4])

  return f 
 
end 

function dynamic_eqn_5(x::Array{T,1},p::Array{T1,1}) where {T<:Number,T1<:Real} 
 
  f = x[4] - (x[5] + (0.96)*(1.0+x[6])*x[11])

  return f 
 
end 

function dynamic_eqn_6(x::Array{T,1},p::Array{T1,1}) where {T<:Number,T1<:Real} 
 
  f = x[3] + x[9] - (x[7]*(1.0)*exp(x[1]) + (1.0+x[6])*x[2])

  return f 
 
end 

function dynamic_eqn_7(x::Array{T,1},p::Array{T1,1}) where {T<:Number,T1<:Real} 
 
  f = x[5]*(x[2]-(0.00)) - (0.0)

  return f 
 
end 

individual_equations = Array{Function}(undef,7) 
individual_equations[1] = dynamic_eqn_1
individual_equations[2] = dynamic_eqn_2
individual_equations[3] = dynamic_eqn_3
individual_equations[4] = dynamic_eqn_4
individual_equations[5] = dynamic_eqn_5
individual_equations[6] = dynamic_eqn_6
individual_equations[7] = dynamic_eqn_7

function closure_chebyshev_equations(state,scaled_weights,order,domain,p) 
 
  function chebyshev_equations(f::Array{T,1},x::Array{T,1}) where {T<:Number} 
 
    approx2 = chebyshev_evaluate(scaled_weights[1],x[5+1:end],order,domain)

    #f = Array{T,1}(undef,7) 
 
    f[1] = x[6] - ((0.60)*state[1] + (0.20)*sqrt(1.0-(0.60)^2)*0.0)
    f[2] = x[4] - ((0.36)*((p[1])/(1.0))^((0.36)-1.0) - (0.08))
    f[3] = x[5] - ((1.0-(0.36))*((p[1])/(1.0))^((0.36)))
    f[4] = x[1]^(-(1.00)) - (x[2])
    f[5] = x[2] - (x[3] + (0.96)*(1.0+x[4])*approx2)
    f[6] = x[1] + x[7] - (x[5]*(1.0)*exp(state[1]) + (1.0+x[4])*state[2])
    f[7] = x[3]*(state[2]-(0.00)) - (0.0)

    #return f 
 
  end 
 
  return chebyshev_equations 
 
end 

function closure_smolyak_equations(state,scaled_weights,order,domain,p) 
 
  function smolyak_equations(f::Array{T,1},x::Array{T,1}) where {T<:Number} 
 
    poly = smolyak_polynomial(x[5+1:end],order,domain) 
    approx2 = smolyak_evaluate(scaled_weights[1],poly)

    #f = Array{T,1}(undef,7) 
 
    f[1] = x[6] - ((0.60)*state[1] + (0.20)*sqrt(1.0-(0.60)^2)*0.0)
    f[2] = x[4] - ((0.36)*((p[1])/(1.0))^((0.36)-1.0) - (0.08))
    f[3] = x[5] - ((1.0-(0.36))*((p[1])/(1.0))^((0.36)))
    f[4] = x[1]^(-(1.00)) - (x[2])
    f[5] = x[2] - (x[3] + (0.96)*(1.0+x[4])*approx2)
    f[6] = x[1] + x[7] - (x[5]*(1.0)*exp(state[1]) + (1.0+x[4])*state[2])
    f[7] = x[3]*(state[2]-(0.00)) - (0.0)

    #return f 
 
  end 
 
  return smolyak_equations 
 
end 

function closure_hcross_equations(state,scaled_weights,order,domain,p) 
 
  function hcross_equations(f::Array{T,1},x::Array{T,1}) where {T<:Number} 
 
    poly = hyperbolic_cross_polynomial(x[5+1:end],order,domain) 
    approx2 = hyperbolic_cross_evaluate(scaled_weights[1],poly)

    #f = Array{T,1}(undef,7) 
 
    f[1] = x[6] - ((0.60)*state[1] + (0.20)*sqrt(1.0-(0.60)^2)*0.0)
    f[2] = x[4] - ((0.36)*((p[1])/(1.0))^((0.36)-1.0) - (0.08))
    f[3] = x[5] - ((1.0-(0.36))*((p[1])/(1.0))^((0.36)))
    f[4] = x[1]^(-(1.00)) - (x[2])
    f[5] = x[2] - (x[3] + (0.96)*(1.0+x[4])*approx2)
    f[6] = x[1] + x[7] - (x[5]*(1.0)*exp(state[1]) + (1.0+x[4])*state[2])
    f[7] = x[3]*(state[2]-(0.00)) - (0.0)

    #return f 
 
  end 
 
  return hcross_equations 
 
end 

function closure_piecewise_equations(variables,grid,state,integrals,p) 
 
  function piecewise_equations(f::Array{T,1},x::Array{T,1}) where {T<:Number} 
 
    approx2 = piecewise_linear_evaluate(variables[2],grid,x[5+1:end],integrals)

    #f = Array{T,1}(undef,7) 
 
    f[1] = x[6] - ((0.60)*state[1] + (0.20)*sqrt(1.0-(0.60)^2)*0.0)
    f[2] = x[4] - ((0.36)*((p[1])/(1.0))^((0.36)-1.0) - (0.08))
    f[3] = x[5] - ((1.0-(0.36))*((p[1])/(1.0))^((0.36)))
    f[4] = x[1]^(-(1.00)) - (x[2])
    f[5] = x[2] - (x[3] + (0.96)*(1.0+x[4])*approx2)
    f[6] = x[1] + x[7] - (x[5]*(1.0)*exp(state[1]) + (1.0+x[4])*state[2])
    f[7] = x[3]*(state[2]-(0.00)) - (0.0)

    #return f 
 
  end 
 
  return piecewise_equations 
 
end 

unassigned_parameters = ["kbar"] 

solvers = "Projection" 