Skip to content
Snippets Groups Projects
Verified Commit a7d747ae authored by Sébastien Villemot's avatar Sébastien Villemot
Browse files

Perfect foresight solver: new options for preconditioners with iterative solvers

parent 5c756434
Branches
No related tags found
No related merge requests found
Pipeline #11647 passed
...@@ -221,6 +221,7 @@ str_tolower(string s) ...@@ -221,6 +221,7 @@ str_tolower(string s)
%token HOMOTOPY_LINEARIZATION_FALLBACK HOMOTOPY_MARGINAL_LINEARIZATION_FALLBACK HOMOTOPY_EXCLUDE_VAREXO FROM_INITVAL_TO_ENDVAL %token HOMOTOPY_LINEARIZATION_FALLBACK HOMOTOPY_MARGINAL_LINEARIZATION_FALLBACK HOMOTOPY_EXCLUDE_VAREXO FROM_INITVAL_TO_ENDVAL
%token STATIC_MFS RELATIVE_TO_INITVAL MATCHED_IRFS MATCHED_IRFS_WEIGHTS WEIGHTS PERPENDICULAR %token STATIC_MFS RELATIVE_TO_INITVAL MATCHED_IRFS MATCHED_IRFS_WEIGHTS WEIGHTS PERPENDICULAR
%token HETEROGENEITY HETEROGENEITY_DIMENSION SUM PERFECT_FORESIGHT_CONTROLLED_PATHS EXOGENIZE ENDOGENIZE %token HETEROGENEITY HETEROGENEITY_DIMENSION SUM PERFECT_FORESIGHT_CONTROLLED_PATHS EXOGENIZE ENDOGENIZE
%token PRECONDITIONER UMFITER ITERSTACK ILU ITER_TOL ITER_MAXIT GMRES_RESTART ITERSTACK_MAXLU ITERSTACK_NPERIODS ITERSTACK_NLU ITERSTACK_RELU
%token <vector<string>> SYMBOL_VEC %token <vector<string>> SYMBOL_VEC
...@@ -1586,6 +1587,14 @@ perfect_foresight_solver_options : o_stack_solve_algo ...@@ -1586,6 +1587,14 @@ perfect_foresight_solver_options : o_stack_solve_algo
| o_homotopy_linearization_fallback | o_homotopy_linearization_fallback
| o_homotopy_marginal_linearization_fallback | o_homotopy_marginal_linearization_fallback
| o_homotopy_exclude_varexo | o_homotopy_exclude_varexo
| o_preconditioner
| o_iter_tol
| o_iter_maxit
| o_gmres_restart
| o_iterstack_maxlu
| o_iterstack_nperiods
| o_iterstack_nlu
| o_iterstack_relu
; ;
perfect_foresight_with_expectation_errors_setup : PERFECT_FORESIGHT_WITH_EXPECTATION_ERRORS_SETUP ';' perfect_foresight_with_expectation_errors_setup : PERFECT_FORESIGHT_WITH_EXPECTATION_ERRORS_SETUP ';'
...@@ -4141,6 +4150,20 @@ o_max_dim_cova_group : MAX_DIM_COVA_GROUP EQUAL INT_NUMBER { driver.option_num(" ...@@ -4141,6 +4150,20 @@ o_max_dim_cova_group : MAX_DIM_COVA_GROUP EQUAL INT_NUMBER { driver.option_num("
o_homotopy_mode : HOMOTOPY_MODE EQUAL INT_NUMBER { driver.option_num("homotopy_mode", $3); }; o_homotopy_mode : HOMOTOPY_MODE EQUAL INT_NUMBER { driver.option_num("homotopy_mode", $3); };
o_homotopy_steps : HOMOTOPY_STEPS EQUAL INT_NUMBER { driver.option_num("homotopy_steps", $3); }; o_homotopy_steps : HOMOTOPY_STEPS EQUAL INT_NUMBER { driver.option_num("homotopy_steps", $3); };
o_homotopy_force_continue: HOMOTOPY_FORCE_CONTINUE EQUAL INT_NUMBER { driver.option_num("homotopy_force_continue", $3); }; o_homotopy_force_continue: HOMOTOPY_FORCE_CONTINUE EQUAL INT_NUMBER { driver.option_num("homotopy_force_continue", $3); };
o_preconditioner : PRECONDITIONER EQUAL UMFITER
{ driver.option_str("simul.preconditioner", "umfiter"); }
| PRECONDITIONER EQUAL ITERSTACK
{ driver.option_str("simul.preconditioner", "iterstack"); }
| PRECONDITIONER EQUAL ILU
{ driver.option_str("simul.preconditioner", "ilu"); };
;
o_iter_tol : ITER_TOL EQUAL non_negative_number { driver.option_num("simul.iter_tol", $3); };
o_iter_maxit : ITER_MAXIT EQUAL INT_NUMBER { driver.option_num("simul.iter_maxit", $3); };
o_gmres_restart : GMRES_RESTART EQUAL INT_NUMBER { driver.option_num("simul.gmres_restart", $3); };
o_iterstack_maxlu : ITERSTACK_MAXLU EQUAL INT_NUMBER { driver.option_num("simul.iterstack_maxlu", $3); };
o_iterstack_nperiods : ITERSTACK_NPERIODS EQUAL INT_NUMBER { driver.option_num("simul.iterstack_nperiods", $3); };
o_iterstack_nlu : ITERSTACK_NLU EQUAL INT_NUMBER { driver.option_num("simul.iterstack_nlu", $3); };
o_iterstack_relu : ITERSTACK_RELU EQUAL non_negative_number { driver.option_num("simul.iterstack_relu", $3); };
o_nocheck : NOCHECK { driver.option_num("steadystate.nocheck", "true"); }; o_nocheck : NOCHECK { driver.option_num("steadystate.nocheck", "true"); };
o_controlled_varexo : CONTROLLED_VAREXO EQUAL '(' symbol_list ')' { driver.option_symbol_list("controlled_varexo", $4); }; o_controlled_varexo : CONTROLLED_VAREXO EQUAL '(' symbol_list ')' { driver.option_symbol_list("controlled_varexo", $4); };
......
...@@ -749,6 +749,17 @@ DATE -?[0-9]+([ya]|m([1-9]|1[0-2])|q[1-4]|[sh][12]) ...@@ -749,6 +749,17 @@ DATE -?[0-9]+([ya]|m([1-9]|1[0-2])|q[1-4]|[sh][12])
<DYNARE_STATEMENT>with_epilogue {return token::WITH_EPILOGUE;} <DYNARE_STATEMENT>with_epilogue {return token::WITH_EPILOGUE;}
<DYNARE_STATEMENT>heteroskedastic_filter {return token::HETEROSKEDASTIC_FILTER;} <DYNARE_STATEMENT>heteroskedastic_filter {return token::HETEROSKEDASTIC_FILTER;}
<DYNARE_STATEMENT>non_zero {return token::NON_ZERO;} <DYNARE_STATEMENT>non_zero {return token::NON_ZERO;}
<DYNARE_STATEMENT>preconditioner {return token::PRECONDITIONER;}
<DYNARE_STATEMENT>umfiter {return token::UMFITER;}
<DYNARE_STATEMENT>iterstack {return token::ITERSTACK;}
<DYNARE_STATEMENT>ilu {return token::ILU;}
<DYNARE_STATEMENT>iter_tol {return token::ITER_TOL;}
<DYNARE_STATEMENT>iter_maxit {return token::ITER_MAXIT;}
<DYNARE_STATEMENT>gmres_restart {return token::GMRES_RESTART;}
<DYNARE_STATEMENT>iterstack_maxlu {return token::ITERSTACK_MAXLU;}
<DYNARE_STATEMENT>iterstack_nperiods {return token::ITERSTACK_NPERIODS;}
<DYNARE_STATEMENT>iterstack_nlu {return token::ITERSTACK_NLU;}
<DYNARE_STATEMENT>iterstack_relu {return token::ITERSTACK_RELU;}
<DYNARE_STATEMENT>\$[^$]*\$ { <DYNARE_STATEMENT>\$[^$]*\$ {
yylval->emplace<string>(yytext + 1).pop_back(); yylval->emplace<string>(yytext + 1).pop_back();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment