/*============================================================================
*
*                    Code_Saturne version 1.3
*                    ------------------------
*
*
*     This file is part of the Code_Saturne Kernel, element of the
*     Code_Saturne CFD tool.
*
*     Copyright (C) 1998-2007 EDF S.A., France
*
*     contact: saturne-support@edf.fr
*
*     The Code_Saturne Kernel 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.
*
*     The Code_Saturne Kernel 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 the Code_Saturne Kernel; if not, write to the
*     Free Software Foundation, Inc.,
*     51 Franklin St, Fifth Floor,
*     Boston, MA  02110-1301  USA
*
*============================================================================*/

#ifndef __CS_MAILLAGE_SELECT_H__
#define __CS_MAILLAGE_SELECT_H__

/*============================================================================
 * Structure associée à la sélection d'entités liées à cs_maillage_t
 *============================================================================*/

/* includes système */

#include <assert.h>


#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */


/*============================================================================
 * Définitions de types
 *============================================================================*/

/* Structure associée à un couplage SYRTHES */

typedef struct _cs_maillage_select_t  cs_maillage_select_t;


/*=============================================================================
 * Prototypes de fonctions
 *============================================================================*/

/*----------------------------------------------------------------------------
 * Fonction qui alloue et initialise une structure _cs_maillage_select_t
 *----------------------------------------------------------------------------*/

cs_maillage_select_t * cs_maillage_select_cree
(
 cs_int_t     nbr_couleur,
 cs_int_t     nbr_groupe,
 cs_int_t    *couleurs,
 char       **groupes,
 cs_bool_t    invsel
);


/*----------------------------------------------------------------------------
 * Fonction qui détruit une structure _cs_maillage_select_t
 *----------------------------------------------------------------------------*/

cs_maillage_select_t * cs_maillage_select_detruit
(
 cs_maillage_select_t *selection
);


/*----------------------------------------------------------------------------
 * Fonction qui renvoie le nombre de couleurs dans la sélection
 *----------------------------------------------------------------------------*/

cs_int_t cs_maillage_select_ret_nbr_coul
(
 const cs_maillage_select_t *selection
);


/*----------------------------------------------------------------------------
 * Fonction qui renvoie le nombre de groupes dans la sélection
 *----------------------------------------------------------------------------*/

cs_int_t cs_maillage_select_ret_nbr_grp
(
 const cs_maillage_select_t *selection
);


/*----------------------------------------------------------------------------
 * Fonction qui extrait une liste de faces de bord suivant les critères de
 * sélection passés dans la structure cs_maillage_select_t
 *----------------------------------------------------------------------------*/

void cs_maillage_select_extrait_fbr
(
 const cs_maillage_t  *const maillage,        /* maillage d'origine           */
 const cs_maillage_select_t *selection,       /* critères de sélection        */
       cs_int_t             *nbr_fbr_select,  /* nb de fbr sélectionnées      */
       cs_int_t            **lst_fac_select   /* liste des fbr sélectionnées  */
);


/*----------------------------------------------------------------------------
 * Fonction qui affiche le contenu de la structure _cs_maillage_select_t
 *----------------------------------------------------------------------------*/

void cs_maillage_select_dump
(
 cs_maillage_select_t  *selection
);


#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* __CS_MAILLAGE_SELECT_H__ */
