diff --git a/mex/sources/k_order_perturbation/dynamic_dll.hh b/mex/sources/k_order_perturbation/dynamic_dll.hh
index 147f92104..10b6615ae 100644
--- a/mex/sources/k_order_perturbation/dynamic_dll.hh
+++ b/mex/sources/k_order_perturbation/dynamic_dll.hh
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008-2009 Dynare Team
+ * Copyright (C) 2008-2010 Dynare Team
*
* This file is part of Dynare.
*
@@ -17,18 +17,8 @@
* along with Dynare. If not, see .
*/
-// The following ifdef block is the standard way of creating macros which make exporting
-// from a DLL simpler. All files within this DLL are compiled with the K_ORDER_PERTURBATION_EXPORTS
-// symbol defined on the command line. this symbol should not be defined on any project
-// that uses this DLL. This way any other project whose source files include this file see
-// K_ORDER_PERTURBATION_API functions as being imported from a DLL, wheras this DLL sees symbols
-// defined with this macro as being exported.
-
#if defined(_WIN32) || defined(__CYGWIN32__)
# include
-# ifdef _MSC_VER
-# define K_ORDER_PERTURBATION_API __declspec(dllexport)
-# endif
#else
# include // unix/linux DLL (.so) handling routines
#endif
diff --git a/mex/sources/k_order_perturbation/k_ord_dynare.cc b/mex/sources/k_order_perturbation/k_ord_dynare.cc
index 2622a7de1..9735e5918 100644
--- a/mex/sources/k_order_perturbation/k_ord_dynare.cc
+++ b/mex/sources/k_order_perturbation/k_ord_dynare.cc
@@ -34,10 +34,10 @@
/**************************************************************************************/
KordpDynare::KordpDynare(const char **endo, int num_endo,
- const char **exo, int nexog, int npar, //const char** par,
+ const char **exo, int nexog, int npar,
Vector *ysteady, TwoDMatrix *vcov, Vector *inParams, int nstat,
int npred, int nforw, int nboth, const int jcols, const Vector *nnzd,
- const int nsteps, int norder, //const char* modName,
+ const int nsteps, int norder,
Journal &jr, DynamicModelDLL &dynamicDLL, double sstol,
const vector *var_order, const TwoDMatrix *llincidence, double criterium) throw (TLException) :
nStat(nstat), nBoth(nboth), nPred(npred), nForw(nforw), nExog(nexog), nPar(npar),
@@ -58,25 +58,7 @@ KordpDynare::KordpDynare(const char **endo, int num_endo,
FSSparseTensor *t = new FSSparseTensor(iord, nY+nYs+nYss+nExog, nY);
md.insert(t);
}
-}
-KordpDynare::KordpDynare(const KordpDynare &dynare) :
- nStat(dynare.nStat), nBoth(dynare.nBoth), nPred(dynare.nPred),
- nForw(dynare.nForw), nExog(dynare.nExog), nPar(dynare.nPar),
- nYs(dynare.nYs), nYss(dynare.nYss), nY(dynare.nY), nJcols(dynare.nJcols),
- NNZD(dynare.NNZD), nSteps(dynare.nSteps), nOrder(dynare.nOrder),
- journal(dynare.journal), dynamicDLL(dynare.dynamicDLL),
- ySteady(NULL), params(NULL), vCov(NULL), md(dynare.md),
- dnl(NULL), denl(NULL), dsnl(NULL), ss_tol(dynare.ss_tol),
- varOrder(dynare.varOrder), ll_Incidence(dynare.ll_Incidence),
- JacobianIndices(dynare.JacobianIndices), qz_criterium(dynare.qz_criterium)
-{
- ySteady = new Vector(*(dynare.ySteady));
- params = new Vector(*(dynare.params));
- vCov = new TwoDMatrix(*(dynare.vCov));
- dnl = new DynareNameList(dynare);
- denl = new DynareExogNameList(dynare);
- dsnl = new DynareStateNameList(*this, *dnl, *denl);
}
KordpDynare::~KordpDynare()
@@ -103,19 +85,6 @@ KordpDynare::~KordpDynare()
delete NNZD;
}
-/** This clears the container of model derivatives and initializes it
- * inserting empty sparse tensors up to the given order. */
-ModelDerivativeContainer::ModelDerivativeContainer(const KordpDynare &model,
- TensorContainer &mod_ders, int order) : md(mod_ders)
-{
- md.clear();
- for (int iord = 1; iord <= order; iord++)
- {
- FSSparseTensor *t = new FSSparseTensor(iord, model.ny()+model.nys()+model.nyss()+model.nexog(), model.ny());
- md.insert(t);
- }
-}
-
void
KordpDynare::solveDeterministicSteady()
{
@@ -296,26 +265,6 @@ KordpDynare::populateDerivativesContainer(TwoDMatrix *g, int ord, const vector *varOrder) throw (TL
return JacobianIndices;
}
-/************************************
- * Reorder first set of columns of variables in a (jacobian) matrix
- * according to order given in varsOrder together with the extras
- * assuming tdx ncols() - nExog is eaqual or less than length of varOrder and
- * of any of its elements too.
- ************************************/
-
-void
-KordpDynare::ReorderCols(TwoDMatrix *tdx, const vector *vOrder) throw (DynareException, TLException)
-{
-
- if (tdx->ncols() > vOrder->size())
- throw DynareException(__FILE__, __LINE__, "Size of order var is too small");
-
- TwoDMatrix tmp(*tdx); // temporary 2D matrix
- TwoDMatrix &tmpR = tmp;
- tdx->zeros(); // empty original matrix
- // reorder the columns
-
- for (int i = 0; i < tdx->ncols(); i++)
- tdx->copyColumn(tmpR, (*vOrder)[i], i);
-}
-
-void
-KordpDynare::ReorderCols(TwoDMatrix *tdx, const int *vOrder) throw (TLException)
-{
-
- TwoDMatrix tmp(*tdx); // temporary 2D matrix
- TwoDMatrix &tmpR = tmp;
- tdx->zeros(); // empty original matrix
- // reorder the columns
- for (int i = 0; i < tdx->ncols(); i++)
- tdx->copyColumn(tmpR, vOrder[i], i);
-}
-
-/***********************************************************************
- * Recursive hierarchical block reordering of the higher order, input model
- * derivatives inc. Hessian
- * This is now obsolete but kept in in case it is needed
- ***********************************************************************/
-
-void
-KordpDynare::ReorderBlocks(TwoDMatrix *tdx, const vector *vOrder) throw (DynareException, TLException)
-{
- // determine order of the matrix
-
- double dbOrder = log((double) tdx->ncols())/log((double) nJcols);
- int ibOrder = (int) dbOrder;
- if ((double) ibOrder != dbOrder || ibOrder > nOrder)
- {
- ostringstream msg;
- msg << "Wrong order " << dbOrder;
- throw DynareException(__FILE__, __LINE__, msg.str());
- }
-
- TwoDMatrix tmp(*tdx); // temporary 2D matrix
- TwoDMatrix &tmpR = tmp;
- tdx->zeros(); // empty original matrix
-
- if (ibOrder > 1)
- {
- int nBlocks = tmp.ncols()/ nJcols;
- int bSize = tmp.ncols()/nBlocks;
- for (int j = 0; j < nBlocks; ++j)
- {
- TwoDMatrix subtdx(tmpR, bSize*((*vOrder)[j]), bSize);
- ReorderBlocks(&subtdx, vOrder);
- tdx->place(subtdx, 0, bSize*j);
- }
- }
- else
- {
- if (tdx->ncols() > vOrder->size())
- throw DynareException(__FILE__, __LINE__, "Size of order var is too small");
-
- // reorder the columns
- for (int i = 0; i < tdx->ncols(); i++)
- tdx->copyColumn(tmpR, (*vOrder)[i], i);
- }
-}
-
-void
-KordpVectorFunction::eval(const ConstVector &in, Vector &out) throw (DynareException)
-{
- check_for_eval(in, out);
- Vector xx(d.nexog());
- xx.zeros();
- d.evaluateSystem(out, in, xx);
-}
-
/**************************************************************************************/
/* DynareNameList class */
/**************************************************************************************/
diff --git a/mex/sources/k_order_perturbation/k_ord_dynare.hh b/mex/sources/k_order_perturbation/k_ord_dynare.hh
index 7a5323cf7..1f1ee9139 100644
--- a/mex/sources/k_order_perturbation/k_ord_dynare.hh
+++ b/mex/sources/k_order_perturbation/k_ord_dynare.hh
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2005 Ondra Kamenik
- * Copyright (C) 2008-2009 Dynare Team
+ * Copyright (C) 2008-2010 Dynare Team
*
* This file is part of Dynare.
*
@@ -110,7 +110,6 @@ class KordpDynare : public DynamicModel
friend class DynareNameList;
friend class DynareExogNameList;
friend class DynareStateNameList;
- friend class KordpDynareJacobian;
friend class DynamicModelDLL;
const int nStat;
@@ -150,8 +149,6 @@ public:
const vector *varOrder, const TwoDMatrix *ll_Incidence,
double qz_criterium) throw (TLException);
- /** Makes a deep copy of the object. */
- KordpDynare(const KordpDynare &dyn);
virtual ~KordpDynare();
int
nstat() const
@@ -257,58 +254,11 @@ public:
{
return new KordpDynare(*this);
}
- void ReorderCols(TwoDMatrix *tdx, const int *varOrder) throw (TLException);
- void ReorderCols(TwoDMatrix *tdx, const vector *varOrder) throw (DynareException, TLException);
Vector *LLxSteady(const Vector &yS) throw (DynareException, TLException); // returns ySteady extended with leads and lags
private:
- void writeModelInfo(Journal &jr) const;
vector *ReorderDynareJacobianIndices(const vector *varOrder) throw (TLException);
- void ReorderBlocks(TwoDMatrix *tdx, const vector *vOrder) throw (DynareException, TLException);
void populateDerivativesContainer(TwoDMatrix *g, int ord, const vector *vOrder);
};
-/****************************
- * ModelDerivativeContainer manages derivatives container
- ************************************/
-
-class ModelDerivativeContainer
-{
-protected:
- TensorContainer &md;
-public:
- ModelDerivativeContainer(const KordpDynare &model, TensorContainer &mod_ders,
- int order);
- void load(int i, int iord, const int *vars, double res);
-};
-
-/****************************
- * K-Order Perturbation instance of VectorFunction:
- ************************************/
-
-class KordpVectorFunction : public ogu::VectorFunction
-{
-protected:
- KordpDynare &d;
-public:
- KordpVectorFunction(KordpDynare &dyn) :
- d(dyn)
- {
- }
- virtual ~KordpVectorFunction()
- {
- }
- int
- inDim() const
- {
- return d.ny();
- }
- int
- outDim() const
- {
- return d.ny();
- }
- void eval(const ConstVector &in, Vector &out) throw (DynareException);
-};
-
#endif
diff --git a/mex/sources/k_order_perturbation/k_order_perturbation.cc b/mex/sources/k_order_perturbation/k_order_perturbation.cc
index 975deacc7..5047dc2a2 100644
--- a/mex/sources/k_order_perturbation/k_order_perturbation.cc
+++ b/mex/sources/k_order_perturbation/k_order_perturbation.cc
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008-2009 Dynare Team
+ * Copyright (C) 2008-2010 Dynare Team
*
* This file is part of Dynare.
*
@@ -46,38 +46,6 @@
#include
#include
-#ifdef _MSC_VER
-
-BOOL APIENTRY
-DllMain(HANDLE hModule,
- DWORD ul_reason_for_call,
- LPVOID lpReserved
- )
-{
- switch (ul_reason_for_call)
- {
- case DLL_PROCESS_ATTACH:
- case DLL_THREAD_ATTACH:
- case DLL_THREAD_DETACH:
- case DLL_PROCESS_DETACH:
- break;
- }
- return TRUE;
-}
-
-// Some MS Windows preambles
-// This is an example of an exported variable
-K_ORDER_PERTURBATION_API int nK_order_perturbation = 0;
-
-// This is an example of an exported function.
-K_ORDER_PERTURBATION_API int
-fnK_order_perturbation(void)
-{
- return 42;
-}
-
-#endif // _MSC_VER
-
#if defined(MATLAB_MEX_FILE) || defined(OCTAVE_MEX_FILE) // exclude mexFunction for other applications
const char **
@@ -235,7 +203,7 @@ extern "C" {
const int widthExog = (int) mxGetN(mxFldp);
const char **exoNamesMX = DynareMxArrayToString(mxFldp, nexo, widthExog);
- if ((nEndo != nendo) || (nExog != nexo)) //(nPar != npar)
+ if ((nEndo != nendo) || (nExog != nexo))
mexErrMsgTxt("Incorrect number of input parameters.");
/* Fetch time index */
@@ -290,14 +258,8 @@ extern "C" {
app.getFoldDecisionRule().writeMMap(mm, string());
// get latest ysteady
- double *dYsteady = (dynare.getSteady().base());
ySteady = (Vector *)(&dynare.getSteady());
- // developement of the output.
- double *dgy, *dgu, *ysteady;
- int nb_row_x;
-
- ysteady = NULL;
if (kOrder == 1)
{
/* Set the output pointer to the output matrix ysteady. */