- block trust region solver now available under solve_algo=13
It is essentially the same as solve_algo=4, except that Jacobian by finite
difference is not handled. A test file is added for that case
- block trust region solver with shortcut for equations that can be evaluated
is now available under solve_algo=14 (in replacement of the pure-MATLAB solver)
Closes: Enterprise/dynare#3
In a PAC equation, the error correction term must be written as:
β×(yₜ₋₁-xₜ₋₁)
where x is the endogenous variable determined by the equation and y
the target for x. The ordering matters, if not respected the
preprocessor wll not identify the error correction term (hence the
target) and will throw an error. The target must be an endogenous
variable or the log of an endogenous variable. For a more general
target, ie an expression, one can create an auxiliary variable.
We impose the ordering, target comes first in the error correction
term, so that the stability condition is always β>0 (this constraint
can be enforced when estimating the PAC equation).
Identification should switch to analytic_derivation_mode=-2 if steady state block/file changes parameter values. Dynare/dynare!1732 already adresses this when there is a prior specified. This fix also addresses this when there are no priors.
kim2.mod is now not only an integration test but also a unit test for this.
— Bug fix: allow external functions in model local variables (also add corresponding
integration test)
— JSON output:
+ do not append two underscores after model local variable names in their
definition
+ when writing the model after computing pass, use TEF terms for (not
derived) external functions
+ write model local variables in parsed model (modfile.json) (Closes: #1723)
— In the driver file, provide mapping between model local variables and indices
in the temporary terms vector (Closes: #1722)
Under Octave, the default seed in fs2000ns_uncorr_ME.mod leads to a generated
dataset that makes fs2000ns_corr_ME.mod and fs2000ns_corr_ME_missing.mod
fail (due to a large difference between univariate and multivariate diffuse
filters).
In particular, in the case of an 'mcp' tag, this could lead to a convergence
failure.
Also modify the lmmpc/rbcii.mod test so that it fails if convergence is not
obtained, in order to detect such regressions earlier.
Closes: #1697
This preprocessor update also includes the following changes:
— removal of license.txt, now merged in back in the main Dynare one
– various code simplifications and modernizations in the macro processor
— minor code simplification in parsing of the --+ options: … +-- line
Because at some point throwing exceptions from MEX files (with mexErrMsgTxt())
was not working under Windows 64-bit, we had designed a workaround to avoid
using exceptions.
Most MEX files were returning an error code as their first (or sometimes last)
argument, and that code would have to be checked from the MATLAB code.
Since this workaround is no longer needed, this commit removes it. As a
consequence, the interface of many MEX files is modified.
For some background, see https://www.dynare.org/pipermail/dev/2010-September/000895.html
- `dynasave`: if a variable being saved was named `n` or `s`, the `eval` statements would break the code
- `dynasave`: use the `-struct` option to `save` to avoid `eval` statements
- `dynasave` and `dynatype`: do everything in 1 loop instead of 2
- `dynasave` and `dynatype`: use `strcmp` instead of `strfind`
- preprocessor update contains:
- Partial reversion of global indentation of macro processor header files introduced in e2d5a83592634f0604d8c86409748cd2ec5906d2
- Symbol List check pass: allow caller to specify the valid types of variables in a Symbol List
- Allow `dynasave` and `dynatype` to support exogenous variables in their var_list
issue #1691
Note that I still need to do a code clean up (provide some licenses for functions from other people) and to double check order=3. There is also much room for speed and memory improvement, but the code works fine for now. I will also provide more information to the merge request soon about the detailed changes for future reference.
It applies the approximated policy function to a set of particles, using
Dynare++ routines.
There is support for parallelization, using Dynare++ multithreading
model (itself based on C++11 threads; we don’t use OpenMP because it is
incompatible with MKL). For the time being, default to a single thread. This
should be later refined through empirical testing.
Under Octave, having namespaces called “get” and “set” overshadows the builtin
functions with the same names, which are needed for graphics manipulation.
Therefore we go back to the initial function naming scheme, but moving all
those functions under an “accessors” subdirectory.
Among other things, this is a revert of
e4134ab59b and
c5e86fcb59.
Ref. !1655, !1686
I’m not sure it has ever worked.
As a consequence, remove the workaround that had apparently been implemented in
tests/initval_file/ramst_initval_file.mod.