/*************************************************************************** * Copyright (C) 2009 by Douglas Castro * * douglas@ime.unicamp.br * * * * This program 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 2 of the License, or * * (at your option) any later version. * * * * This program 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 this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #ifndef _DEFINICOES_H_ #define _DEFINICOES_H_ #include #include #include "bool.h" /** * @typedef No * @brief No da arvore * @param fil ponteiro para os filhos * @param deletable indicio que a cel pode ser apagada * @param leaf eh folha ? * @param virtual_leaf; folha virtual ? * @param fval armazena media na celula * @param fv vetor das solucoes(tempo n, old, new) * @return */ typedef struct No{ struct No *fil[2]; bool_t deletable; bool_t leaf; bool_t virtual_leaf; double fval; double fv[3]; } No; /** * @typedef VNo * @brief Pacote com ponteiro e valor interpolado caso nao exista o no referente ao ponteiro * @param p ponteiro para um no * @param fv valor da funcao no no, caso nao esxista o no esse valor e interpolado * @return */ typedef struct VNo { No *p; double fv; } VNo; /** * Tipo de funcao que, dadas as medias em cada celula de um grupo de 3 celulas adjacentes de mesmo nivel, * preve a media no filho {esq} (esquerdo/inferior) da celula central * @param x0 [in] media na celula inferior/esquerda do grupo * @param x1 [in] media na celula do meio * @param x2 [in] media na celula superior/direita * @return */ typedef double Preditor( double x0, double x1, double x2 ); /** * Tipo de uma funcao a ser aproximada. * @param d [in] dimensao do dominio ( d = 1,2,3 ) * @param x [in] valor da primeira coordenada do ponto X = (x,y,z) em R^3 * @param y [in] valor da segunda coordenada do ponto X = (x,y,z) em R^3 * @param z [in] valor da terceira coordenada do ponto X = (x,y,z) em R^3 * @return */ typedef double Funcao(int d, double x, double y, double z); /** * Tipo de funcao que calcula a quadratura gaussiana (regra de 5 pontos) num certo dominio * @param d [in] dimensao do dominio ( d = 1,2,3 ) * @param xmin [in] vetor com os limites inferiores do dominio de integracao * @param xmax [in] vetor com os limites superiores do dominio de integracao * @param f [in] funcao generica a ser integrada * @return */ typedef double Quadratura(int d, double xmin[], double xmax[], Funcao *f); #endif