diff --git a/doc/manual/source/the-model-file.rst b/doc/manual/source/the-model-file.rst index bb7000b5e..32d70b055 100644 --- a/doc/manual/source/the-model-file.rst +++ b/doc/manual/source/the-model-file.rst @@ -1189,7 +1189,10 @@ The model is declared inside a ``model`` block: The equations must be specified by a list of tag values, separated by commas. Each element of the list is either a simple quoted string, in which case it designates an equation by its ``name`` tag; or a tag name (without - quotes), followed by an equal sign, then by the tag value (within quotes). + quotes), followed by an equal sign, then by the tag value (within quotes); + or a list of tag-equals-value pairs separated by commas and enclosed + within brackets, in which case this element removes the equation(s) that + has all these tags with the corresponding values. Each removed equation must either have an ``endogenous`` tag, or have a left hand side containing a single endogenous variable. The corresponding @@ -1201,7 +1204,7 @@ The model is declared inside a ``model`` block: :: - var c k dummy1 dummy2; + var c k dummy1 dummy2 dummy3; model; c + k - aa*x*k(-1)^alph - (1-delt)*k(-1) + dummy1; @@ -1210,13 +1213,15 @@ The model is declared inside a ``model`` block: c*k = dummy1; [ foo = 'eq:dummy2' ] log(dummy2) = k + 2; + [ name = 'eq:dummy3', bar = 'baz' ] + dummy3 = c + 3; end; - model_remove('eq:dummy1', foo = 'eq:dummy2'); + model_remove('eq:dummy1', foo = 'eq:dummy2', [ name = 'eq:dummy3', bar = 'baz' ]); - In the above example, the last two equations will be removed, - ``dummy1`` will be turned into an exogenous, and ``dummy2`` will be - removed. + In the above example, the last three equations will be removed, + ``dummy1`` will be turned into an exogenous, and ``dummy2`` and + ``dummy3`` will be removed. .. block:: model_replace (TAGS...); diff --git a/preprocessor b/preprocessor index ac35ef610..46aa6610a 160000 --- a/preprocessor +++ b/preprocessor @@ -1 +1 @@ -Subproject commit ac35ef610143695ec5e1e9b74a8fdff4803b6ac0 +Subproject commit 46aa6610ab13f449ba4423e02e5df3a2cb6f7e01 diff --git a/tests/preprocessor_checks/ramst_model_edit.mod b/tests/preprocessor_checks/ramst_model_edit.mod index dd103628a..f31bb19e7 100644 --- a/tests/preprocessor_checks/ramst_model_edit.mod +++ b/tests/preprocessor_checks/ramst_model_edit.mod @@ -15,7 +15,8 @@ bet=0.05; aa=0.5; model; - c + k - aa*x*k(-1)^alph - (1-delt)*k(-1); + [ name = 'ressource constraint' ] + c + k = aa*x*k(-1)^alph; end; model; @@ -23,7 +24,7 @@ model; dummy1 = c + 1; [ foo = 'eq:dummy2' ] // Since dummy2 is alone on the LHS, it is considered as the variable set by this equation log(dummy2) = k + 2; - [ name = 'eq:dummy3' ] + [ name = 'eq:dummy3', bar = 'baz' ] c(+1) = c; end; @@ -31,8 +32,9 @@ model_options(block); model_remove('eq:dummy1', foo = 'eq:dummy2'); -model_replace('eq:dummy3'); -c^(-gam) - (1+bet)^(-1)*(aa*alph*x(+1)*k^(alph-1) + 1 - delt)*c(+1)^(-gam); +model_replace('ressource constraint', [ name = 'eq:dummy3', bar = 'baz' ]); + c + k - aa*x*k(-1)^alph - (1-delt)*k(-1); + c^(-gam) - (1+bet)^(-1)*(aa*alph*x(+1)*k^(alph-1) + 1 - delt)*c(+1)^(-gam); end; var_remove dummy3;