c@a c@versb C----------------------------------------------------------------------- C CVERS Code_Saturne version 1.3 C ------------------------ C C This file is part of the Code_Saturne Kernel, element of the C Code_Saturne CFD tool. C C Copyright (C) 1998-2007 EDF S.A., France C C contact: saturne-support@edf.fr C C The Code_Saturne Kernel is free software; you can redistribute it C and/or modify it under the terms of the GNU General Public License C as published by the Free Software Foundation; either version 2 of C the License, or (at your option) any later version. C C The Code_Saturne Kernel is distributed in the hope that it will be C useful, but WITHOUT ANY WARRANTY; without even the implied warranty C of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the C GNU General Public License for more details. C C You should have received a copy of the GNU General Public License C along with the Code_Saturne Kernel; if not, write to the C Free Software Foundation, Inc., C 51 Franklin St, Fifth Floor, C Boston, MA 02110-1301 USA C C----------------------------------------------------------------------- c@verse SUBROUTINE CATSMA C ***************** C ------------------------------------------------------------- & ( NCELET , NCEL , NCESMP , ITERNS , ISNEXP , & THETV , & ICETSM , ITPSMP , & VOLUME , PVARA , SMCELP , GAMMA , & TSEXP , TSIMP , GAPINJ ) C ------------------------------------------------------------- C*********************************************************************** C FONCTION : C ---------- c@foncb CFONC CFONC CALCUL DES TERMES SOURCES IMPLICITE ET EXPLICITE CFONC VENANT DES SOURCES DE MASSE CFONC c@fonce C----------------------------------------------------------------------- C ARGUMENTS c@argub CARGU .______________.____._____.______________________________________. CARGU ! NOM !TYPE!MODE ! ROLE ! CARGU !______________!____!_____!______________________________________! CARGU ! NCELET ! E ! -> ! NOMBRE D'ELEMENTS HALO COMPRIS ! CARGU ! NCEL ! E ! -> ! NOMBRE DE CELLULES ! CARGU ! NCESMP ! E ! -> ! NOMBRE DE CELLULES A SOURCE DE MASSE ! CARGU ! ITERNS ! E ! -> ! NUMERO D'ITERATION SUR NAVSTO ! CARGU ! ISNEXP ! E ! -> ! INDICATEUR POUR EXTRAPOLATION DES ! CARGU ! ! ! ! TERMES SOURCES DE LA PHASE TRAITEE ! CARGU ! THETV ! R ! -> ! THETA SCH. POUR LA VARIABLE ! CARGU ! ! ! ! THETV V(N+1) + (1-THETV) V(N) ! CARGU ! ICETSM(NCESMP! TE ! -> ! NUMERO DES CELLULES A SOURCE DE MASSE! CARGU ! ITPSMP(NCESMP! TE ! -> ! TYPE DE SOURCE DE MASSE POUR LA ! CARGU ! ! ! ! VARIABLE TRAITEE (cf. USTSMA) ! CARGU ! VOLUME(NCEL) ! TR ! -> ! VOLUME DES CELLULES ! CARGU ! PVARA(NCEL) ! TR ! -> ! VALEUR DE LA VARIABLE EN DEBUT DE PAS! CARGU ! ! ! ! DE TEMPS ! CARGU ! SMCELP(NCESMP! TR ! -> ! VALEUR DE LA VARIABLE ASSOCIEE A LA ! CARGU ! ! ! ! SOURCE DE MASSE ! CARGU ! GAMMA(NCESMP)! TR ! -> ! VALEUR DU FLUX DE MASSE ! CARGU ! TSEXP(NCEL) ! TR ! <-> ! PART DU TERME SOURCE EXPLICITE ! CARGU ! ! ! ! LINEAIRE PAR RAPPORT A LA VARIABLE ! CARGU ! TSIMP(NCEL) ! TR ! <-> ! VALEUR ASSOCIEE A TSEXP QUI IRA DANS ! CARGU ! ! ! ! LA MATRICE ! CARGU ! GAPINJ(NCEL) ! TR ! <- ! PART DU TERME SOURCE EXPLICITE ! CARGU ! ! ! ! INDEPENDANT DE LA VARIABLE ! CARGU !______________!____!_____!______________________________________! c@argue C c@commb CCOMM COMMONS CCOMM .______________.____._____.______________________________________. CCOMM ! NOM !TYPE!MODE ! ROLE ! CCOMM !______________!____!_____!______________________________________! CCOMM !______________!____!_____!______________________________________! c@comme C C TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU) C L (LOGIQUE) .. ET TYPES COMPOSES (EX : TR TABLEAU REEL) C MODE : -> DONNEE, <- RESULTAT, <-> DONNEE MODIFIEE, C - TABLEAU DE TRAVAIL C C----------------------------------------------------------------------- C*********************************************************************** C IMPLICIT NONE C C*********************************************************************** C DONNEES EN COMMON C*********************************************************************** C INTEGER NCELET, NCEL , NCESMP, ITERNS, ISNEXP INTEGER ICETSM(NCESMP), ITPSMP(NCESMP) DOUBLE PRECISION THETV DOUBLE PRECISION VOLUME(NCELET) DOUBLE PRECISION PVARA (NCELET) DOUBLE PRECISION SMCELP(NCESMP), GAMMA (NCESMP) DOUBLE PRECISION TSEXP (NCELET), TSIMP (NCELET), GAPINJ(NCELET) C C VARIABLES LOCALES C INTEGER II, IEL C C*********************************************************************** C C Explication des tests GAMMA(II).GT.0.D0 .AND. ITPSMP(II).EQ.1 : C Si on enleve de la matiere ou si on entre a la valeur de la C cellule alors l'equation de IVAR n'est pas modifiee C Sinon, on ajoute le terme source GAMMA*(f_i-f^(n+1)) C C Dans TSIMP, on ajoute le terme qui ira sur la diagonale, C soit Gamma (*theta en cas d'ordre 2) C Dans TSEXP on ajoute le terme correspondant du second membre C cad Gamma * Pvar (avec Pvar) C Dans GAPINJ on place le terme Gamma Pinj qui ira au second membre C C La distinction entre TSEXP et W1 (qui vont finalement tous les C deux au second membre) sert pour l'ordre 2 en temps. C IF(ITERNS.EQ.1) THEN DO IEL = 1, NCEL GAPINJ(IEL) = 0.D0 ENDDO DO II = 1, NCESMP IEL = ICETSM(II) IF (GAMMA(II).GT.0.D0 .AND. ITPSMP(II).EQ.1) THEN TSEXP(IEL) = TSEXP(IEL) - VOLUME(IEL)*GAMMA(II) * PVARA(IEL) GAPINJ(IEL) = VOLUME(IEL)*GAMMA(II) * SMCELP(II) ENDIF ENDDO ENDIF C C Sur la diagonale IF(ISNEXP.GT.0) THEN DO II = 1, NCESMP IEL = ICETSM(II) IF (GAMMA(II).GT.0.D0 .AND. ITPSMP(II).EQ.1) THEN TSIMP(IEL) = TSIMP(IEL) + VOLUME(IEL)*GAMMA(II)*THETV ENDIF ENDDO ELSE DO II = 1, NCESMP IEL = ICETSM(II) IF (GAMMA(II).GT.0.D0 .AND. ITPSMP(II).EQ.1) THEN TSIMP(IEL) = TSIMP(IEL) + VOLUME(IEL)*GAMMA(II) ENDIF ENDDO ENDIF C RETURN END c@z