/*============================================================================ * * 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_VENTIL_H__ #define __CS_VENTIL_H__ /*============================================================================ * Définitions, variables globales, et fonctions associées aux ventilateurs *============================================================================*/ /* includes système */ /* includes librairie */ #include "cs_base.h" #include "cs_comm.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #if 0 /* Fausse "}" pour corriger l'auto-indentation d'Emacs */ } #endif /*============================================================================= * Définitions de macros *============================================================================*/ /*============================================================================ * Définitions de types *============================================================================*/ /* Structure associée à un ventilateur */ typedef struct _cs_ventil_t cs_ventil_t; /*============================================================================ * Prototypes de fonctions publiques pour API Fortran *============================================================================*/ /*---------------------------------------------------------------------------- * Récupération du nombre de ventilateurs * * Interface Fortran : * * SUBROUTINE TSTVTL * ***************** * * INTEGER NBRVTL : --> : nombre de ventilateurs *----------------------------------------------------------------------------*/ void CS_PROCF (tstvtl, TSTVTL) ( cs_int_t *const nbrvtl /* <-- nombre de ventilateurs */ ); /*---------------------------------------------------------------------------- * Ajout d'un ventilateur * * Interface Fortran : * * SUBROUTINE DEFVTL (XYZVT1, XYZVT2, RVVT , RPVT , RMVT , * ***************** * CCARAC, TAUVT) * * INTEGER DIMMOD : <-- : Dimension du modèle de ventilateur : * : : f_constante ; 2 : profil_force ; * : : 3 : profil_force + couple tangentiel * INTEGER DIMVTL : <-- : Dimension du ventilateur : * : : 2 : pseudo-2D (maillage extrudé) * : : 3 : 3D (standard) * DOUBLE PRECISION XYZVT1(3) : <-- : Coord. point de l'axe en face amont * DOUBLE PRECISION XYZVT2(3) : <-- : Coord. point de l'axe en face aval * DOUBLE PRECISION RVVT : <-- : Rayon du ventilateur * DOUBLE PRECISION RPVT : <-- : Rayon des pales * DOUBLE PRECISION RMVT : <-- : Rayon du moyeu * DOUBLE PRECISION CCARAC(3) : <-- : Coefficients de degré 0, 1, et 2 * : : de la courbe caractéristique * DOUBLE PRECISION TAUVT : <-- : Couple axial du ventilateur *----------------------------------------------------------------------------*/ void CS_PROCF (defvtl, DEFVTL) ( const cs_int_t *const dimmod, /* Dimension du modèle de ventilateur : 1 : f_constante ; 2 : profil_force ; 3 : profil_force + couple tangentiel */ const cs_int_t *const dimvtl, /* Dimension du ventilateur : 2 : pseudo-2D (maillage extrudé) 3 : 3D (standard) */ const cs_real_t xyzvt1[3], /* Coord. point de l'axe en face amont */ const cs_real_t xyzvt2[3], /* Coord. point de l'axe en face aval */ const cs_real_t *const rvvt, /* Rayon du ventilateur */ const cs_real_t *const rpvt, /* Rayon des pales */ const cs_real_t *const rmvt, /* Rayon du moyeu */ const cs_real_t ccarac[3], /* Coefficients courbe caractéristique */ const cs_real_t *const tauvt /* Couple axial du ventilateur*/ ); /*---------------------------------------------------------------------------- * Construction des listes de cellules associées aux ventilateurs * * Interface Fortran : * * SUBROUTINE INIVTL * ***************** *----------------------------------------------------------------------------*/ void CS_PROCF (inivtl, INIVTL) ( void ); /*---------------------------------------------------------------------------- * Marquage des ventilateurs ; affecte le numéro de ventilateur aux cellules * appartenant à un ventilateur, 0 sinon * * Interface Fortran : * * SUBROUTINE NUMVTL (INDIC) * ***************** *----------------------------------------------------------------------------*/ void CS_PROCF (numvtl, NUMVTL) ( cs_int_t indic[] /* Numéro de ventilateur d'appartenance, ou 0 */ ); /*---------------------------------------------------------------------------- * Calcul des débits à travers les ventilateurs * * Interface Fortran : * * SUBROUTINE DEBVTL (NBRVTL, FLUMAS, FLUMAB, RHO, RHOFAB, DEBENT, DEBSOR) * ***************** * * DOUBLE PRECISION FLUMAS(*) : <-- : Flux de masse aux faces intérieures * DOUBLE PRECISION FLUMAB(*) : <-- : Flux de masse aux faces de bord * DOUBLE PRECISION RHOFAC(*) : <-- : Densité aux faces intérieures * DOUBLE PRECISION RHOFAB(*) : <-- : Densité aux faces de bord * DOUBLE PRECISION DEBENT(NBRVTL) : --> : Débit entrant par ventilateur * DOUBLE PRECISION DEBSOR(NBRVTL) : --> : Débit sortant par ventilateur *----------------------------------------------------------------------------*/ void CS_PROCF (debvtl, DEBVTL) ( cs_real_t flumas[], /* <-- Flux de masse aux faces intérieures */ cs_real_t flumab[], /* <-- Flux de masse aux faces de bord */ cs_real_t rhofac[], /* <-- Densité aux faces intérieures */ cs_real_t rhofab[], /* <-- Densité aux faces de bord */ cs_real_t debent[], /* <-- Débit entrant par ventilateur */ cs_real_t debsor[] /* <-- Débit sortant par ventilateur */ ); /*---------------------------------------------------------------------------- * Calcul de la force induite par les ventilateurs (nécessite le * calcul préalable des débits à travers chaque ventilateur) ; * La force induite est ajoutée au tableau CRVXEP (qui peut contenir * d'autres contributions) * * Interface Fortran : * * SUBROUTINE TSVVTL (DEBENT, DEBSOR) * ***************** * * INTEGER IDIMTS : <-- : Dimension associée au terme source * : : de vitesse (1 : X ; 2 : Y ; 3 : Z) * DOUBLE PRECISION CRVEXP(NCELET) : <-> : Terme source explicite de vitesse *----------------------------------------------------------------------------*/ void CS_PROCF (tsvvtl, TSVVTL) ( cs_int_t *idimts, /* <-- dimension associée au * terme source de vitesse : * 0 (X), 1 (Y), ou 2 (Z) */ cs_real_t crvexp[] /* <-- Terme source explicite de vitesse */ ); /*============================================================================= * Prototypes de fonctions publiques *============================================================================*/ /*---------------------------------------------------------------------------- * Définition d'un ventilateur (qui est ajouté à ceux déjà définis) *----------------------------------------------------------------------------*/ void cs_ventil_definit ( const cs_int_t dim_modele, /* Dimension du modèle de ventilateur : 1 : f_constante ; 2 : profil_force ; 3 : profil_force + couple tangentiel */ const cs_int_t dim_ventil, /* Dimension du ventilateur : 2 : pseudo-2D (maillage extrudé) 3 : 3D (standard) */ const cs_real_t coo_axe_amont[3], /* Coord. point de l'axe en face amont */ const cs_real_t coo_axe_aval[3], /* Coord. point de l'axe en face aval */ const cs_real_t ray_ventil, /* Rayon du ventilateur */ const cs_real_t ray_pales, /* Rayon des pales */ const cs_real_t ray_moyeu, /* Rayon du moyeu */ const cs_real_t coeff_carac[3], /* Coefficients des termes de degré 0, 1, et 2 de la caractéristique */ const cs_real_t couple_axial /* Couple axial du ventilateur*/ ); /*---------------------------------------------------------------------------- * Destruction des structures associées aux ventilateurs *----------------------------------------------------------------------------*/ void cs_ventil_detruit_tous ( void ); /*---------------------------------------------------------------------------- * Recherche des cellules appartenant aux différents ventilateurs *----------------------------------------------------------------------------*/ void cs_ventil_cree_listes ( const cs_maillage_t *maillage, /* <-- structure maillage associée */ const cs_maillage_grd_t *maillage_grd /* <-- grandeurs du maillage */ ); /*---------------------------------------------------------------------------- * Calcul des debits à travers les ventilateurs *----------------------------------------------------------------------------*/ void cs_ventil_calcul_debits ( const cs_maillage_t *maillage, /* <-- structure maillage */ const cs_maillage_grd_t *maillage_grd, /* <-- grandeurs du maillage */ const cs_real_t flux_masse_fac[], /* <-- flux masse faces internes */ const cs_real_t flux_masse_fbr[], /* <-- flux masse faces de bord */ const cs_real_t densite_cel[], /* <-- densité aux cellules */ const cs_real_t densite_fbr[] /* <-- densité aux faces de bord */ ); /*---------------------------------------------------------------------------- * Calcul de la force induite par les ventilateurs (nécessite le * calcul préalable des débits à travers chaque ventilateur). * La force induite est ajoutée au tableau t_source (qui peut contenir * d'autres contributions) *----------------------------------------------------------------------------*/ void cs_ventil_calcul_force ( const cs_maillage_grd_t *maillage_grd, /* <-- grandeurs du maillage */ const cs_int_t idim_source, /* --> dimension associée au * terme source de vitesse : * 0 (X), 1 (Y), ou 2 (Z) */ cs_real_t t_source[] /* --> terme source de vitesse */ ); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* __CS_VENTIL_H__ */