/*============================================================================
*
* 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_VOISET_H__
#define __CS_VOISET_H__
/*============================================================================
* Interfaces fortran pour le calcul des gradients par moindres carres sur
* support etendu.
*============================================================================*/
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/*----------------------------------------------------------------------------
* Fichiers `include' locaux
*----------------------------------------------------------------------------*/
#include "cs_base.h"
/*============================================================================
* Définitions de macros
*============================================================================*/
/*============================================================================
* Définitions de types
*============================================================================*/
/*============================================================================
* Fonctions publiques pour API Fortran
*============================================================================*/
/*----------------------------------------------------------------------------
* Definition du voisinage étendu pour le calcul des gradients par moindres
* carrés : au premier passage, on choisit les cellules et on modifie la
* structure maillage qui stocke le voisinage étendu.
* ensuite, on se contente de retourner les pointeurs
*
* Attention : le voisinage étendu permet de toucher toutes les cellules
* qui partagent un noeud avec une cellule donnée, mais il ne
* comporte pas les cellules visibles d'une cellule au travers
* des faces (elles sont accessibles par IFACEL)
*
* Interface Fortran :
*
* SUBROUTINE DEFVSE
* *****************
* & ( NDIM , NCEL , NFAC , NNOD ,
* & IMRGRA , ANOMAX ,
* & IFACEL , IPNFAC , NODFAC , XYZCEN , SURFAC )
*
*----------------------------------------------------------------------------*/
void CS_PROCF (defvse, DEFVSE)
(
const cs_int_t *const ndim, /* --> Dimension = 3 */
const cs_int_t *const ncel, /* --> Nombre de cellules */
const cs_int_t *const nfac, /* --> Nombre de faces internes */
const cs_int_t *const nnod, /* --> Nombre de sommets */
const cs_int_t *const imrgra, /* --> Mode de reconstruction */
const cs_real_t *const anomax, /* --> Angle de non orthogonalité en radian
au-delà duquel on retient dans le
voisinage étendu de chaque cellule
voisine les cellules dont un sommet
est sur la face */
const cs_int_t *const ifacel, /* --> Connectivité face interne -> cellules*/
const cs_int_t *const ipnfac, /* --> Position du premier noeud d'une face
dans nodfac */
const cs_int_t *const nodfac, /* --> Numéro des noeuds des faces internes */
const cs_real_t *const xyzcen, /* --> Coord. du centre des cellules */
const cs_real_t *const surfac /* --> Vecteur surface des faces internes */
) ;
/*----------------------------------------------------------------------------
* Appel de la routine FORTRAN GRADMC pour le calcul des gradients par moindres
* carrés. On ajoute aux arguments le voisinage étendu de la structure
* maillage.
*
* Interface Fortran :
*
* SUBROUTINE CGRDMC
* *****************
*
* & ( IDBIA0 , IDBRA0 ,
* & NCELET , NCEL , NFAC , NFABOR , NCELBR , NITUSE , NRTUSE ,
* & INC , ICCOCG , NSWRGP , IDIMTE , ITENSO , IPHYDP , IMRGRA ,
* & IWARNP , NFECRA , EPSRGP , EXTRAP ,
* & IFACEL , IFABOR , ICELBR , ITUSER , IA ,
* & VOLUME , SURFAC , SURFBO , SURFBN , POND ,
* & DIST , DISTBR , DIJPF , DIIPB ,
* & FEXTX , FEXTY , FEXTZ ,
* & XYZCEN , CDGFAC , CDGFBO , COEFAP , COEFBP , PVAR ,
* & COCGB , COCG , RTUSER ,
* & DPDX , DPDY , DPDZ ,
* & BX , BY , BZ , RA )
*
*----------------------------------------------------------------------------*/
void CS_PROCF (cgrdmc, CGRDMC)
(
const cs_int_t *const idbia0, /* --> numéro 1ère case libre dans IA */
const cs_int_t *const idbra0, /* --> numéro 1ère case libre dans RA */
const cs_int_t *const ncelet, /* --> nombre de cellules étendu */
const cs_int_t *const ncel, /* --> nombre de cellules */
const cs_int_t *const nfac, /* --> nombre de faces internes */
const cs_int_t *const nfabor, /* --> nombre de faces de bord */
const cs_int_t *const ncelbr, /* --> nombre de cellules de bord */
const cs_int_t *const nituse, /* --> longueur du tableau ituser[] */
const cs_int_t *const nrtuse, /* --> longueur du tableau rtuser[] */
const cs_int_t *const inc, /* --> 0 ou 1 : incrément ou non */
const cs_int_t *const iccocg, /* --> 1 ou 0 : recalcul de COCG ou non */
const cs_int_t *const nswrgp, /* --> >1 : avec reconstruction */
const cs_int_t *const idimte, /* --> 0, 1, 2 : variable
scalaire, vecteur, tenseur */
const cs_int_t *const itenso, /* --> pour la périodicité de rotation */
const cs_int_t *const iphydr, /* --> prise en compte de P hydrostatiqu*/
const cs_int_t *const imrgra, /* --> mode de calcul du gradient */
const cs_int_t *const iwarnp, /* --> niveau d'impression */
const cs_int_t *const nfecra, /* --> unité sortie standard */
const cs_real_t *const epsrgp, /* --> précision pour calcul du gradient
itératif */
const cs_real_t *const extrap, /* --> extrapolation des grad. au bord */
const cs_int_t ifacel[], /* --> liste des faces internes */
const cs_int_t ifabor[], /* --> liste des faces de bord */
const cs_int_t icelbr[], /* --> numéro des cellules ayant au
moins une face de bord */
cs_int_t ituser[], /* <-> tab. complémentaire utilisateur */
cs_int_t ia[], /* <-> macro-tableau entier */
const cs_real_t volume[], /* --> volumes des cellules */
const cs_real_t surfac[], /* --> surfaces des faces internes */
const cs_real_t surfbo[], /* --> surfaces des faces de bord */
const cs_real_t surfbn[], /* --> norme de surfbo */
const cs_real_t pond[], /* --> pondération géométrique faces int*/
const cs_real_t dist[], /* --> distance entre I' et J' faces int*/
const cs_real_t distbr[], /* --> distance du cdgfbo à I' fac. brd */
const cs_real_t dijpf[], /* --> vecteur I'J' aux faces internes */
const cs_real_t diipb[], /* --> vecteur II' aux faces de bord */
const cs_real_t fextx[], /* --> composantes de la force */
const cs_real_t fexty[], /* extérieure générant la pression */
const cs_real_t fextz[], /* hydrostatique */
const cs_real_t xyzcen[], /* --> c.d.g. des cellules */
const cs_real_t cdgfac[], /* --> c.d.g. des faces internes */
const cs_real_t cdgfbo[], /* --> c.d.g. des faces de bord */
const cs_real_t coefap[], /* --> cond. limites aux faces de bord */
const cs_real_t coefbp[], /* --> cond. limites aux faces de bord */
const cs_real_t pvar[], /* --> variable dont on calcule le grad */
cs_real_t cocgb[], /* <-> contribution à COCG des faces
internes des cellules de bord */
cs_real_t cocg[], /* <-> contribution à COCG des faces
internes des cellules de bord */
cs_real_t rtuser[], /* <-> tab. complémentaire utilisateur */
cs_real_t dpdx[], /* <-- composante x du gradient */
cs_real_t dpdy[], /* <-- composante y du gradient */
cs_real_t dpdz[], /* <-- composante z du gradient */
cs_real_t bx[], /* - tab. de travail local */
cs_real_t by[], /* - tab. de travail local */
cs_real_t bz[], /* - tab. de travail local */
cs_real_t ra[] /* <-> macro-tableau réel */
) ;
/*----------------------------------------------------------------------------
* Appel de la routine FORTRAN LIMGRD pour la limitation éventuelle des
* gradients. On ajoute aux arguments le voisinage étendu de la structure
* maillage.
*
* Interface Fortran :
*
* SUBROUTINE CLMGRD
* *****************
*
* & ( NDIM , NCELET , NCEL , NFAC ,
* & IMRGRA , IMLIGP , IDIMTE , ITENSO , IWARNP , NFECRA , CLIMGP ,
* & IFACEL ,
* & XYZCEN , PVAR ,
* & DPDX , DPDY , DPDZ ,
* & FACLIM , DENOM , DENUM )
*
*----------------------------------------------------------------------------*/
void CS_PROCF (clmgrd, CLMGRD)
(
const cs_int_t *const ndim, /* --> dimension de l'espace */
const cs_int_t *const ncelet, /* --> nombre de cellules étendu */
const cs_int_t *const ncel, /* --> nombre de cellules */
const cs_int_t *const nfac, /* --> nombre de faces internes */
const cs_int_t *const imrgra, /* --> mode de calcul du gradient */
const cs_int_t *const imligp, /* --> mode de limitation du gradient */
const cs_int_t *const idimte, /* --> 0, 1, 2 : variable
scalaire, vecteur, tenseur */
const cs_int_t *const itenso, /* --> pour la périodicité de rotation */
const cs_int_t *const iwarnp, /* --> niveau d'impression */
const cs_int_t *const nfecra, /* --> unité sortie standard */
const cs_real_t *const climgp, /* --> coefficient de limitation du grad*/
const cs_int_t ifacel[], /* --> liste des faces internes */
const cs_real_t xyzcen[], /* --> c.d.g. des cellules */
const cs_real_t pvar[], /* --> variable dont on calcule le grad */
cs_real_t dpdx[], /* <-> composante x du gradient */
cs_real_t dpdy[], /* <-> composante y du gradient */
cs_real_t dpdz[], /* <-> composante z du gradient */
cs_real_t faclim[], /* - tab. de travail local */
cs_real_t denom[], /* - tab. de travail local */
cs_real_t denum[] /* - tab. de travail local */
);
void CS_PROCF (cfiltr, CFILTR)
(
const cs_int_t *const ncelet, /* --> nombre de cellules étendu */
const cs_int_t *const ncel, /* --> nombre de cellules */
const cs_int_t *const nfac, /* --> nombre de faces internes */
const cs_int_t *const nfabor, /* --> nombre de faces de bord */
const cs_int_t ifacel[], /* --> liste des faces internes */
const cs_int_t ifabor[], /* --> liste des faces de bord */
const cs_real_t volume[], /* --> volumes des cellules */
const cs_real_t pvar[], /* --> variable a filtrer */
cs_real_t varfil[], /* --> resultat de la variable filtree */
cs_real_t w1[], /* - tab. de travail local */
cs_real_t w2[] /* - tab. de travail local */
);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __CS_MAILLAGE_H__ */
syntax highlighted by Code2HTML, v. 0.9.1