Sébastien Villemot
50a2737e41
Macro processor: fix tracking of line numbers after @#define, @#include and @#includepath directives
...
Closes : #108
2022-12-14 15:22:07 +01:00
Sébastien Villemot
8734bc5ca6
Allow LOG_* auxiliary variables in various commands
...
Closes : #107
2022-12-14 12:42:55 +01:00
Sébastien Villemot
a234176d3c
Julia: do not rewrite derivatives w.r.t. parameters files when unmodified
...
Closes : #105
2022-12-14 12:35:50 +01:00
Sébastien Villemot
a5eac0260a
JSON: fix output of date options
...
They were not enclosed within quotes.
Ref. dynare#1875
2022-12-14 12:16:04 +01:00
Sébastien Villemot
2758f46c83
Fix indexing in M_.endo_trends
...
It would use 0-based indexing, instead of 1-based.
Ref. dynare#1648
Closes : #109
2022-12-14 12:05:12 +01:00
Sébastien Villemot
8cb3437d2d
Minor simplification in static block decomposition driver output
2022-12-12 14:57:50 +01:00
Sébastien Villemot
4aa1ff1f73
Sparse representation: fix bug in output of indices in driver and JSON files
...
Jacobian column numbers were incorrect (it would return internal derivation
IDs).
Ref. dynare#1859
2022-12-12 14:57:49 +01:00
Sébastien Villemot
4f7794a8f9
Sparse representation: compatibility fix with MATLAB < R2020a
...
For those older MATLABs, the “sparse” function does not accept vectors of
integer data type as indices.
Ref. dynare#1875
2022-12-08 14:35:23 +01:00
Sébastien Villemot
83bfc792af
Sparse representation: fix bug in output of indices in driver and JSON files
...
It would previously forget to write the indices for the highest derivation
order (e.g. if order=3, then it would only write sparce indices up to 2nd
order).
Ref. dynare#1859
2022-12-07 16:10:03 +01:00
Sébastien Villemot
c721718bf6
Merge branch 'mh_init_scale_factor' into 'master'
...
Add new mh_init_scale_factor-option
See merge request Dynare/preprocessor!73
2022-12-02 10:53:16 +00:00
Johannes Pfeifer
9b015a6a10
Add new mh_init_scale_factor-option
2022-12-01 15:23:37 +01:00
Sébastien Villemot
c48248fc0d
Implement time-recursive block decomposition tuned for purely backward/forward/static models
...
Such a decomposition has to be simulated with periods as the outer loop and
blocks as the inner loop.
It is enabled by default for purely backward/forward/static models, as long as
the “block” option is not given. In that case, “mfs” is also set to 3 by
default (until that value becomes the global default).
M_.time_recursive_block_decomposition is set to “true” when that decomposition
has been performed, “false” otherwise for the traditional decomposition (the
latter has to be simulated with blocks as the outer loop and periods as the
inner loop).
2022-11-30 14:43:44 +01:00
Sébastien Villemot
bb3475d548
Remove call to setup_solvers.m
...
It is no longer used in the new implementation of solve_algo={12,14}.
However, the M_.lhs field that was created by setup_solvers.m is used from
other places, so reimplement it at the preprocessor level.
2022-11-30 14:43:44 +01:00
Sébastien Villemot
ff296023a9
Block decomposition: ModelTree::block_decomposed field was not properly set on copy/move
2022-11-29 15:27:12 +01:00
Sébastien Villemot
53add0b2fe
Block decomposition: when falling back to symbolic normalization, use contemporaneous symbolic Jacobian
...
Previously, it would use a symbolic Jacobian where leads and lags were also
taken into account.
2022-11-28 13:40:49 +01:00
Sébastien Villemot
f725c534ef
Merge branch 'calib_smoother_options' into 'master'
...
DynareBison.yy: add nobs and heteroskedastic_filter options to calib_smoother
See merge request Dynare/preprocessor!72
2022-11-28 10:02:04 +00:00
Johannes Pfeifer
56c62197d0
DynareBison.yy: add nobs and heteroskedastic_filter options to calib_smoother
2022-11-23 13:46:53 +01:00
Sébastien Villemot
e01c748c7e
Julia: fix prototype of function computing dynamic derivatives w.r.t. parameters
2022-11-22 11:19:58 +01:00
Sébastien Villemot
6ecb602536
Merge branch 'nomodule' into 'master'
...
Julia: remove module for derivatives w.r.t. parameters
See merge request Dynare/preprocessor!70
2022-11-22 10:18:12 +00:00
MichelJuillard
cf4e2194b7
Julia: remove module for derivatives w.r.t. parameters
2022-11-22 10:18:11 +00:00
Sébastien Villemot
2e171e28de
New files for helping a user to debug their model
...
The files are created under <basename>/+debug/dynamic_resid.m and
<basename>/+debug/static_resid.m.
Their purpose is to evaluate separately the LHS and RHS of each equation.
2022-11-16 11:18:09 +01:00
Sébastien Villemot
4807a6c880
use_dll: fix race condition with compilation of power_deriv.{c,h}
2022-11-14 13:45:15 +01:00
Sébastien Villemot
23b0c12d8e
Performance improvement of chain rule derivation, using caching
...
Useful for mfs > 0 on large models.
2022-11-08 12:34:05 +01:00
Sébastien Villemot
dbc2851606
Merge branch 'max_check_ahead_periods' of git.dynare.org:JohannesPfeifer/preprocessor
...
Ref. !69
2022-11-07 16:32:10 +01:00
Johannes Pfeifer
ed95a2ca2d
OccBin: add interface for max_check_ahead_periods option
...
Related to 2f23604824
2022-11-04 23:11:59 +01:00
Sébastien Villemot
1430ab9cc2
Implement new sparse model representation in C
...
Ref. dynare#1859
2022-11-04 14:23:29 +01:00
Sébastien Villemot
836351565d
Fix segfault of notmpterms option with block decomposition
...
By the way, ensure that temporary terms associated to external functions are
not removed, since they are not optional.
2022-11-04 14:23:29 +01:00
Sébastien Villemot
4ab3e937ea
Implement new sparse model representation in MATLAB/Octave
...
Ref. dynare#1859
2022-11-04 14:23:29 +01:00
Sébastien Villemot
2a8e26310d
Block decomposition: fix computation of recursive variables with mfs>0
...
Within a block, if mfs>0, the recursive variables would not appear in recursive
order. This could lead to wrong results in case of dependency relationships
between recursive variables.
2022-11-04 14:23:29 +01:00
Sébastien Villemot
47290087f6
Provisions for new sparse representation of block-decomposed dynamic/static files
...
The stochastic mode in currently unsupported.
This commit adds new fields in M_.
This is a preliminary step for dynare#1859.
2022-11-04 14:23:29 +01:00
Sébastien Villemot
1ed72f6da2
Write block decomposition information in M_ independently of “block” option
...
This is now possible since the block decomposition is always computed. Of
course, the information is not printed if the decomposition failed.
2022-11-04 14:23:29 +01:00
Sébastien Villemot
00fd9dadb6
Julia: no longer write the main dynamic/static files in legacy representation
2022-11-02 15:51:26 +01:00
Sébastien Villemot
6aca84bfbb
Julia: move all generated files to the <basename>/model/julia/ subdirectory
2022-11-02 15:49:57 +01:00
MichelJuillard
6af8a57f9f
replace Julia modules by simple functions
2022-11-02 15:49:56 +01:00
Sébastien Villemot
762243c705
Julia: drop get_power_deriv function from module
...
The function is now provided separately by Dynare.jl.
2022-11-02 15:49:56 +01:00
Sébastien Villemot
4ae6df494d
JSON: add dynamic_tmp_nbr and static_tmp_nbr
...
As a consequence, remove the “tmp_nbr” variable from the Julia modules, since
it is now redundant.
2022-11-02 15:49:56 +01:00
Sébastien Villemot
723fc4139b
Implement new sparse model representation in Julia
...
Ref. dynare#1859
2022-11-02 15:49:56 +01:00
Sébastien Villemot
0278c8577c
Provisions for new sparse representation of dynamic/static files
...
The new representation is only supported for MATLAB/Octave, C and Julia output
for the time being. Bytecode and JSON are unsupported.
This commit adds new fields in M_.
This is a preliminary step for dynare#1859.
2022-11-02 15:49:56 +01:00
Sébastien Villemot
30853e7360
Block decomposition: improve debugging information for normalization
...
– print the information only for the final matching (and not the intermediary
ones that may have failed);
– print the equation name next to its number.
2022-11-02 15:49:56 +01:00
Sébastien Villemot
627dd92c64
Block decomposition: bugfix with temporary terms when mfs=3
...
In an “evaluate” block, the LHS of a renormalized equation (such as “log(x)=…”)
could be associated to a temporary term that would then be incorrectly
computed: that temporary term would be evaluated *before* (and not after) the
evaluation of the associated variable (“x” in the example).
2022-10-26 17:33:26 +02:00
Sébastien Villemot
e153353365
Merge branch 'reset_check_ahead' into 'master'
...
Occbin: implement simul_reset_check_ahead_period-option
See merge request Dynare/preprocessor!67
2022-10-24 08:32:33 +00:00
Johannes Pfeifer
d5cf07fadd
Occbin: implement simul_reset_check_ahead_period-option
...
Related to dynare@3765ef77 (dynare!2094)
2022-10-24 10:30:45 +02:00
Sébastien Villemot
219c8d2a47
Do not error out in stochastic mode if mfs > 0 but “block” option not passed
...
In that case, the block-DR routines will not be called.
2022-10-18 17:39:14 +02:00
Sébastien Villemot
5a6e276750
Fix comment
2022-10-18 17:39:14 +02:00
Sébastien Villemot
79c8fe61b1
Fix typo
2022-10-18 17:39:14 +02:00
Sébastien Villemot
a31ef6069c
Correctly handle diff operator in equation renormalization
...
Should have no impact though, since diff nodes are already substituted out at
that point. But it’s better to implement it properly, in case we change the
substitution rules later.
By the way, make the computeSubExprContainingVariable method protected.
2022-10-18 17:39:14 +02:00
Sébastien Villemot
9f96db89ba
use_dll: ensure proper cleanup of thread workers threads in case of early exit (e.g. upon failure)
2022-10-17 14:03:27 +02:00
Sébastien Villemot
781e10c24b
Error out if “use_dll” is specified in Julia mode
2022-10-14 15:40:09 +02:00
Sébastien Villemot
fd9902e87b
use_dll: rewrite the parallel compilation engine with a fixed number of threads
...
The previous system would spawn as many threads as there are object files to be
compiled (which could lead to hundreds of threads for large block-decomposed
models). This could pose a memory usage problem (even when not just waiting,
threads require memory for their own stack).
2022-10-14 15:33:52 +02:00
Sébastien Villemot
e801f1a862
Fix typo
...
[skip ci]
2022-10-11 18:15:11 +02:00