/*============================================================================
*
* 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__ */
syntax highlighted by Code2HTML, v. 0.9.1