julia: first draft: call preprocessor, define model, utils
parent
1a2dbdc4d8
commit
5b7acbf514
|
@ -0,0 +1,43 @@
|
||||||
|
module Dynare
|
||||||
|
##
|
||||||
|
# Copyright (C) 2015 Dynare Team
|
||||||
|
#
|
||||||
|
# This file is part of Dynare.
|
||||||
|
#
|
||||||
|
# Dynare is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# Dynare is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with Dynare. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
##
|
||||||
|
|
||||||
|
export dynare
|
||||||
|
|
||||||
|
function dynare(modfile)
|
||||||
|
# Process modfile
|
||||||
|
println(string("Using ", WORD_SIZE, "-bit preprocessor"))
|
||||||
|
preprocessor = string(dirname(@__FILE__()), "/preprocessor", WORD_SIZE, "/dynare_m")
|
||||||
|
run(`$preprocessor $modfile`)
|
||||||
|
|
||||||
|
# Temporary: clean up Matlab output
|
||||||
|
basename = split(modfile, ".mod", false)
|
||||||
|
mfiles = filter(r".*\.m", readdir())
|
||||||
|
for file in mfiles
|
||||||
|
if isempty(search(file, ".mod"))
|
||||||
|
rm(file)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
rm(basename[1], recursive=true)
|
||||||
|
|
||||||
|
# Load module created by preprocessor
|
||||||
|
require(basename[1])
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -0,0 +1,122 @@
|
||||||
|
module model
|
||||||
|
##
|
||||||
|
# Copyright (C) 2015 Dynare Team
|
||||||
|
#
|
||||||
|
# This file is part of Dynare.
|
||||||
|
#
|
||||||
|
# Dynare is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# Dynare is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with Dynare. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
##
|
||||||
|
|
||||||
|
export modeldescription
|
||||||
|
|
||||||
|
type modeldescription
|
||||||
|
fname::ASCIIString
|
||||||
|
dname::ASCIIString
|
||||||
|
exonames::Array{ASCIIString,1}
|
||||||
|
tex_exonames::Array{ASCIIString,1}
|
||||||
|
long_exonames::Array{ASCIIString,1}
|
||||||
|
exodetnames::Array{ASCIIString,1}
|
||||||
|
tex_exodetnames::Array{ASCIIString,1}
|
||||||
|
long_exodetnames::Array{ASCIIString,1}
|
||||||
|
endonames::Array{ASCIIString,1}
|
||||||
|
tex_endonames::Array{ASCIIString,1}
|
||||||
|
long_endonames::Array{ASCIIString,1}
|
||||||
|
paramnames::Array{ASCIIString,1}
|
||||||
|
tex_paramnames::Array{ASCIIString,1}
|
||||||
|
long_paramnames::Array{ASCIIString,1}
|
||||||
|
aux_vars::Array{ASCIIString,1}
|
||||||
|
exo_nbr::Int
|
||||||
|
endo_nbr::Int
|
||||||
|
param_nbr::Int
|
||||||
|
orig_endo_nbr::Int
|
||||||
|
orig_eq_nbr::Int
|
||||||
|
eq_nbr::Int
|
||||||
|
ramsey_eq_nbr::Int
|
||||||
|
nstatic::Int
|
||||||
|
nfwrd::Int
|
||||||
|
npred::Int
|
||||||
|
nboth::Int
|
||||||
|
nsfwrd::Int
|
||||||
|
nspred::Int
|
||||||
|
ndynamic::Int
|
||||||
|
maximum_lag::Int
|
||||||
|
maximum_lead::Int
|
||||||
|
maximum_endo_lag::Int
|
||||||
|
maximum_endo_lead::Int
|
||||||
|
maximum_exo_lag::Int
|
||||||
|
maximum_exo_lead::Int
|
||||||
|
lead_lag_incidence::Matrix{Int}
|
||||||
|
NNZDerivatives::Vector{Int}
|
||||||
|
static_and_dynamic_models_differ::Bool
|
||||||
|
equations_tags::Array{ASCIIString,1}
|
||||||
|
exo_names_orig_ord::Array{Int, 1}
|
||||||
|
Sigma_e::Matrix{Float64}
|
||||||
|
Correlation_matrix::Matrix{Float64}
|
||||||
|
H::Matrix{Float64}
|
||||||
|
Correlation_matrix_ME::Matrix{Float64}
|
||||||
|
sigma_e_is_diagonal::Bool
|
||||||
|
params::Vector{Float64}
|
||||||
|
end
|
||||||
|
|
||||||
|
function modeldescription()
|
||||||
|
return modeldescription("", # fname
|
||||||
|
"", # dname
|
||||||
|
Array(ASCIIString,0), # exonames
|
||||||
|
Array(ASCIIString,0), # t_exonames
|
||||||
|
Array(ASCIIString,0), # l_exonames
|
||||||
|
Array(ASCIIString,0), # exodetnames
|
||||||
|
Array(ASCIIString,0), # t_exodetnames
|
||||||
|
Array(ASCIIString,0), # l_exodetnames
|
||||||
|
Array(ASCIIString,0), # endonames
|
||||||
|
Array(ASCIIString,0), # t_endonames
|
||||||
|
Array(ASCIIString,0), # l_endonames
|
||||||
|
Array(ASCIIString,0), # paramnames
|
||||||
|
Array(ASCIIString,0), # t_paramnames
|
||||||
|
Array(ASCIIString,0), # l_paramnames
|
||||||
|
Array(ASCIIString,0), # aux_vars
|
||||||
|
0, # exo_nbr
|
||||||
|
0, # endo_nbr
|
||||||
|
0, # param_nbr
|
||||||
|
0, # orig_endo_nbr
|
||||||
|
0, # orig_eq_nbr
|
||||||
|
0, # eq_nbr
|
||||||
|
0, # ramsey_eq_nbr
|
||||||
|
0, # nstatic
|
||||||
|
0, # nfwrd
|
||||||
|
0, # npred
|
||||||
|
0, # nboth
|
||||||
|
0, # nsfwrd
|
||||||
|
0, # nspred
|
||||||
|
0, # ndynamic
|
||||||
|
0, # maximum_lag
|
||||||
|
0, # maximum_lead
|
||||||
|
0, # maximum_endo_lag
|
||||||
|
0, # maximum_endo_lead
|
||||||
|
0, # maximum_exo_lag
|
||||||
|
0, # maximum_exo_lead
|
||||||
|
Array(Int, 3, 0), # lead_lag_incidence
|
||||||
|
zeros(Int, 3), # NNZDerivatives
|
||||||
|
false, # static_and_dynamic_models_differ
|
||||||
|
Array(ASCIIString,0), # equations_tags
|
||||||
|
Array(Int64,1), # exo_names_orig_ord
|
||||||
|
Array(Float64, 0, 0), # Sigma_e (Covariance matrix of the structural innovations)
|
||||||
|
Array(Float64, 0, 0), # Correlation_matrix (Correlation matrix of the structural innovations)
|
||||||
|
Array(Float64, 0, 0), # H (Covariance matrix of the measurement errors)
|
||||||
|
Array(Float64, 0, 0), # Correlation_matrix_ME (Covariance matrixof the measurement errors)
|
||||||
|
true, # sigma_e_is_diagonal
|
||||||
|
Array(Float64, 0) # params
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -0,0 +1,36 @@
|
||||||
|
module utils
|
||||||
|
##
|
||||||
|
# Copyright (C) 2015 Dynare Team
|
||||||
|
#
|
||||||
|
# This file is part of Dynare.
|
||||||
|
#
|
||||||
|
# Dynare is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# Dynare is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with Dynare. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
##
|
||||||
|
|
||||||
|
export getPowerDeriv
|
||||||
|
|
||||||
|
function getPowerDeriv(x::Float64, p::Real, k::Int)
|
||||||
|
if abs(x)<1e-12 && p>0 && k>p && typeof(p)==Int
|
||||||
|
dxp = .0
|
||||||
|
else
|
||||||
|
dxp = x^(p-k)
|
||||||
|
for i = 0:k-1
|
||||||
|
dxp *= p
|
||||||
|
p -= 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return dxp
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
Loading…
Reference in New Issue