84 lines
2.7 KiB
C++
84 lines
2.7 KiB
C++
/*
|
|
* Copyright (C) 2007-2008 Dynare Team
|
|
*
|
|
* This file is part of Dynare.
|
|
*
|
|
* Dynare is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* Dynare is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with Dynare. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef MODEL_GRAPH
|
|
#define MODEL_GRAPH
|
|
#define DIRECT_COMPUTE
|
|
#define SORTED
|
|
#define SIMPLIFY
|
|
#define SIMPLIFYS
|
|
#define SAVE
|
|
#define COMPUTE
|
|
//#define PRINT_OUT_OUT
|
|
//#define PRINT_OUT_1
|
|
#define DIRECT_SAVE
|
|
#include "ModelTree.hh"
|
|
#include "BlockTriangular.hh"
|
|
|
|
typedef struct t_edge
|
|
{
|
|
int index, u_count;
|
|
};
|
|
|
|
typedef struct t_vertex
|
|
{
|
|
t_edge *out_degree_edge, *in_degree_edge;
|
|
int nb_out_degree_edges, nb_in_degree_edges;
|
|
int max_nb_out_degree_edges, max_nb_in_degree_edges;
|
|
int index, lag_lead;
|
|
};
|
|
|
|
typedef struct t_model_graph
|
|
{
|
|
int nb_vertices;
|
|
t_vertex* vertex;
|
|
};
|
|
|
|
typedef struct t_pList
|
|
{
|
|
int* Lag_in, * Lag_out;
|
|
int CurrNb_in, CurrNb_out;
|
|
};
|
|
|
|
|
|
|
|
|
|
void free_model_graph(t_model_graph* model_graph);
|
|
void print_Graph(t_model_graph* model_graph);
|
|
void Check_Graph(t_model_graph* model_graph);
|
|
void copy_model_graph(t_model_graph* model_graph, t_model_graph* saved_model_graph, int nb_endo, int y_kmax);
|
|
int ModelBlock_Graph(Model_Block *ModelBlock, int Blck_num,bool dynamic, t_model_graph* model_graph, int nb_endo, int *block_u_count, int *starting_vertex, int* periods, int *nb_table_y, int *mean_var_in_equ);
|
|
void IM_to_model_graph(List_IM* First_IM,int Time, int endo, int* y_kmin, int* y_kmax, t_model_graph* model_graph, int* nb_endo, int *stacked_time, double** u1, int* u_count
|
|
#ifdef VERIF
|
|
, Matrix *B, Matrix *D
|
|
#endif
|
|
);
|
|
void IM_to_model_graph_new(List_IM* First_IM,int Time, int endo, int* y_kmin, int* y_kmax, t_model_graph* model_graph, int* nb_endo, int *stacked_time, double** u1, int* u_count
|
|
#ifdef VERIF
|
|
, Matrix *B, Matrix *D
|
|
#endif
|
|
);
|
|
void IM_to_model_graph_new_new(List_IM* First_IM,int Time, int endo, int* y_kmin, int* y_kmax, t_model_graph* model_graph, int* nb_endo, int *stacked_time, double** u1, int* u_count
|
|
#ifdef VERIF
|
|
, Matrix *B, Matrix *D
|
|
#endif
|
|
);
|
|
void reduce_model_graph(t_model_graph* model_graph,int pos);
|
|
#endif
|