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 CPPDFR C ***************** C ------------------------------------------------------------- & ( NCELET , NCEL , & INDPDF , SC , SD , SP2M , & DSC , DSD , SDEB , SFIN , & HREC ) C ------------------------------------------------------------- C*********************************************************************** C FONCTION : C ---------- c@foncb CFONC CFONC CALCUL DES PARAMETRES DE LA PDF CFONC PDF RECTANGLE - PICS DE DIRAC CENTREE PPl - AE CFONC CFONC LE RESULTAT EST : CFONC --------------- CFONC CALCUL DES PARAMETRES ASSOCIES AUX FONCTIONS RECTANGLE - DIRAC CFONC CFONC DSC contient le Dirac en SC CFONC DSD - - - - - le Dirac en SD CFONC SDEB - - - - - l'abcisse de debut du rectangle CFONC SFIN - - - - - - - - - - - fin - - - - - - - CFONC HREC - - - - - la hauteur du rectangle CFONC INDPDF indique le passage ou non par la pdf 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 D'ELEMENTS ACTIFS ! CARGU ! SP2M ! TR ! -> ! VARIANCE DE S ! CARGU ! SC ! TR ! -> ! BORNE MIN DE S ! CARGU ! SD ! TR ! -> ! BORNE MAX DE S ! CARGU ! DSC ! TR ! <- ! DIRAC EN C ! CARGU ! DSD ! TR ! <- ! DIRAC EN D ! CARGU ! SDEB ! TR ! <- ! ABSCISSE DEBUT RECTANGLE ! CARGU ! SFIN ! TR ! <- ! ABSCISSE FIN RECTANGLE ! CARGU ! HREC ! TR ! <- ! HAUTEUR RECTANGLE ! CARGU ! INDPDF ! TR ! <- ! INDICATEUR PASSAGE OU NON PAR PDF ! 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 IMPLICIT NONE C C********************************************************************** C DONNEES EN COMMON C********************************************************************** C INCLUDE "paramx.h" INCLUDE "numvar.h" INCLUDE "optcal.h" INCLUDE "cstphy.h" INCLUDE "cstnum.h" INCLUDE "entsor.h" INCLUDE "pointe.h" INCLUDE "parall.h" INCLUDE "ppppar.h" INCLUDE "ppthch.h" INCLUDE "coincl.h" INCLUDE "cpincl.h" INCLUDE "ppincl.h" C C*********************************************************************** C C ARGUMENTS C INTEGER NCELET , NCEL INTEGER INDPDF(NCELET) C DOUBLE PRECISION SP2M(NCELET) DOUBLE PRECISION SC(NCELET) , SD(NCELET) DOUBLE PRECISION DSC(NCELET) , DSD(NCELET) DOUBLE PRECISION SDEB(NCELET) , SFIN(NCELET) DOUBLE PRECISION HREC(NCELET) C C VARIABLES LOCALES C INTEGER IEL INTEGER N1 , N2 , N3 , N4 , N5 #ifdef DEBUG DOUBLE PRECISION MOM0 , MOM1 , MOM2 #endif DOUBLE PRECISION T1 , T2 , T3 , EPSI C C C*********************************************************************** C C======================================================================= C 1. CALCULS PRELIMINAIRES C======================================================================= C EPSI = 1.D-06 C Parametre relatif a la variance T1 = 1.D-05 C Parametre relatif a la moyenne T2 = 5.D-04 C Parametre supplementaire T3 = SQRT(3.D0*T1) C DO IEL = 1, NCEL IF ( INDPDF(IEL).GT.0 ) THEN IF ( (SP2M(IEL).LT.T1) .OR. (ABS(SD(IEL)+SC(IEL)).LT.T2) ) & INDPDF(IEL) = 0 ENDIF ENDDO C C C======================================================================= C 2. CALCUL DES PARAMETRES DE LA FONCTION DENSITE DE PROBABILITE C C DONNEES POUR LES FONCTIONS RECTANGLES C SC contient la borne inferieure de S C SD - - - - la borne superieure de S C SP2M - - - - la variance de S C SM - - - - la moyenne de S = 0 C C SC -- DEB ---- 0 ---- FIN ---------- SD C C PARAMETRES ASSOCIES AUX FONCTIONS RECTANGLES C DSC contient le pic de Dirac en C C DSD - - - - le pic de Dirac en D C SDEB - - - - l'abcisse de debut du rectangle C SFIN - - - - - - - - - - - fin - - - - - - C HREC - - - - la hauteur du rectangle C INDPDF - - - - le type de PDF : 2,3,11,12,13 C (= 0 si pas de passage par les pdf) C C======================================================================= C DO IEL = 1, NCEL C IF (INDPDF(IEL).GT.0) THEN C IF ( ( SD(IEL) .GE.(-SC(IEL)) .AND. & SP2M(IEL).LE.(SC(IEL)**2)/3.D0 ) .OR. & ( SD(IEL) .LT.(-SC(IEL)) .AND. & SP2M(IEL).LE.(SD(IEL)**2)/3.D0 ) ) THEN C C --> Rectangle seul C HREC(IEL) = SQRT(3.D0*SP2M(IEL)) C ATTENTION HREC n'est pas la hauteur du rectangle C mais un intermediaire de calcul DSC(IEL) = ZERO DSD(IEL) = ZERO SDEB(IEL) = - HREC(IEL) SFIN(IEL) = + HREC(IEL) ELSEIF ( SD(IEL) .GE.(-SC(IEL)) .AND. & SP2M(IEL).LE.(-SC(IEL)/3.D0*(SC(IEL)+2.D0*SD(IEL))) & ) THEN C C --> Rectangle et un Dirac en SC C SDEB(IEL) = SC(IEL) SFIN(IEL) = (3.D0*SP2M(IEL)+SDEB(IEL)**2)/(-2.D0*SDEB(IEL)) DSC(IEL)= (SFIN(IEL)+SDEB(IEL))/(SFIN(IEL)-SDEB(IEL)) DSD(IEL) = ZERO ELSEIF ( SD(IEL) .LT.(-SC(IEL)) .AND. & SP2M(IEL).LT. (-SD(IEL)/3.D0*(2.D0*SC(IEL)+SD(IEL))) & ) THEN C C --> Rectangle et un Dirac en SD C SFIN(IEL) = SD(IEL) SDEB(IEL) = (3.D0*SP2M(IEL)+SFIN(IEL)**2)/(-2.D0*SFIN(IEL)) DSD(IEL) = (-SFIN(IEL)-SDEB(IEL))/(SFIN(IEL)-SDEB(IEL)) DSC(IEL)= ZERO ELSE C C --> Rectangle et deux Diracs en SC et SD C SDEB(IEL) = SC(IEL) SFIN(IEL) = SD(IEL) DSD(IEL) = (3.D0*SP2M(IEL)+SDEB(IEL)**2 & +2.D0*SDEB(IEL)*SFIN(IEL)) & / ((SFIN(IEL)-SDEB(IEL))**2) DSC(IEL)= DSD(IEL)+(SFIN(IEL)+SDEB(IEL)) & /(SFIN(IEL)-SDEB(IEL)) C ENDIF C IF ( ABS(SFIN(IEL)-SDEB(IEL)).GT.EPSI ) THEN HREC(IEL) = (1.D0-DSC(IEL)-DSD(IEL))/(SFIN(IEL)-SDEB(IEL)) ELSE SDEB(IEL) = MIN(SD(IEL),MAX(SC(IEL),-T3)) SFIN(IEL) = MIN(SD(IEL),MAX(SC(IEL),+T3)) HREC(IEL) = (1.D0-DSC(IEL)-DSD(IEL))/(SFIN(IEL)-SDEB(IEL)) ENDIF C ENDIF C ENDDO C C C======================================================================= C 3. IMPRESSION C======================================================================= C N1 = 0 N2 = 0 N3 = 0 N4 = 0 N5 = 0 C DO IEL = 1, NCEL IF ( INDPDF(IEL).NE.0 ) N1 = N1+1 IF ( INDPDF(IEL).EQ.3 ) N2 = N2+1 IF ( INDPDF(IEL).EQ.12 ) N3 = N3+1 IF ( INDPDF(IEL).EQ.13 ) N4 = N4+1 IF ( INDPDF(IEL).EQ.11 ) N5 = N5+1 C C ---- Test #ifdef DEBUG IF ( INDPDF(IEL).NE.0 ) THEN MOM0 = HREC(IEL)*(SFIN(IEL)-SDEB(IEL)) & + DSC(IEL)+DSD(IEL) IF ( ABS(MOM0-1.D0).GT.EPSI ) THEN write(NFECRA,*) 'PB CELLULE ',IEL write(NFECRA,*) 'MOM0 VC VA', MOM0, 1.D0 ENDIF MOM1 = HREC(IEL)*(SFIN(IEL)**2-SDEB(IEL)**2)/2.D0 & + DSC(IEL)*SC(IEL)+DSD(IEL)*SD(IEL) IF ( MOM1.GT.EPSI ) THEN write(NFECRA,*) 'PB CELLULE ',IEL write(NFECRA,*) 'MOM1 VC VA', MOM1, 0.D0 ENDIF MOM2 = HREC(IEL)*(SFIN(IEL)**3-SDEB(IEL)**3)/3.D0 & + DSC(IEL)*SC(IEL)**2+DSD(IEL)*SD(IEL)**2 IF ( ABS(MOM2-SP2M(IEL)).GT.EPSI ) THEN write(NFECRA,*) 'PB CELLULE ',IEL write(NFECRA,*) 'MOM2 VC VA', MOM2, SP2M(IEL) ENDIF ENDIF #endif C ---- Fin Test C ENDDO C IF (IRANGP.GE.0) THEN CALL PARCPT (N1) C =========== CALL PARCPT (N2) C =========== CALL PARCPT (N3) C =========== CALL PARCPT (N4) C =========== CALL PARCPT (N5) C =========== ENDIF C WRITE(NFECRA,1000) NCEL, N1, N2, N3, N4, N5 C C C---- C FORMATS C---- C 1000 FORMAT (/, *'CONTROLE DES PARAMETRES DANS CPPDFR.F',/, *'======================================',/, *' Nb de points de calculs = ', * I6,/, *' Nb de points turbulents (passage par les PDF) = ', * I6,/, C ..v.7..1....v....2....v....3....v....4....v....5....v....6....v....7.I *' Nb de points turbulents pour lesquels support PDF = I4M = ', * I6,/, *' Nb de points turbulents pour lesquels C app. [I4,L3] = ', * I6,/, *' - - - - - - - - - - - - pour lesquels C app. [I4,L5] = ', * I6,/, *' - - - - - - - - - - - - pour lesquels C app. [L5,I3max] = ', * I6) C C C---- C FIN C---- C RETURN END c@z