C FPA SOURCE CHAT 06/06/01 21:16:36 5450 SUBROUTINE FPA C********************************************************************** C C OBJET : CALCUL DES FONCTIONS DE PAROIS AEROSOLS C C SYNTAXE : 'ZONE' $DOM 'OPER' FPA NU YP UET NORM AK ROG RAP C C C NU : FLOTTANT (VISCOSITE) C YP : FLOTTANT (EPAISSEUR DE LA COUCHE LIMITE) C UET : CHPOINT SCAL CENTRE (VITESSE DE FROTTEMENT) C NORM : CHPOINT VECT FACE (NORMALES A LA PAROI) C AK : CHPOINT SCAL CENTRE (VITESSE DE DEPOT) C ROG : POINT (MASSE VOLUMIQUE * G) C RAP : FLOTTANT (RAYON DES PARTICULES) C C*********************************************************************** IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C -INC CCOPTIO -INC CCVQUA4 -INC SMCOORD -INC SMELEME POINTEUR MELEMC.MELEME -INC SMCHPOI POINTEUR MUET.MCHPOI, MAK.MCHPOI, MNORM.MCHPOI POINTEUR NNU.MPOVAL,NYP.MPOVAL,NUET.MPOVAL,NNORM.MPOVAL,NAK.MPOVAL POINTEUR NROG.MPOVAL,NRAP.MPOVAL -INC SMLMOTS CHARACTER*8 NOMZ,NOMI,NOMA,TYPE,CHAI,TYPC LOGICAL LOGI PARAMETER (NTB=1) CHARACTER*8 LTAB(NTB) DIMENSION KTAB(NTB),IXV(3) * SAVE IPAS * DATA LTAB/'KIZX '/,IPAS/0/ DATA LTAB/'KIZX '/ C***************************************************************************** CFPA C write(6,*)' DEBUT FPA ' CALL LITABS(LTAB,KTAB,NTB,1,IRET) IF(IRET.EQ.0)THEN WRITE(6,*)' Opérateur FPA :' WRITE(6,*)' On attend un ensemble de table soustypes' RETURN ENDIF MTABX=KTAB(1) CALL LEKTAB(MTABX,'EQEX',MTAB1) IF(MTAB1.EQ.0)THEN WRITE(6,*)' Opérateur FPA :' WRITE(6,*)' On ne trouve pas l''indice EQEX ? ' RETURN ENDIF CALL LEKTAB(MTAB1,'INCO',KINC) IF(KINC.EQ.0)THEN WRITE(6,*)' Opérateur FPA :' WRITE(6,*)' Il n''y a pas de table INCO ? ?.' RETURN ENDIF C*********************************************************************** C OPTIONS C IKOMP=0 KFORM=0 KIMPL=0 IAXI=0 IF(IFOMOD.EQ.0)IAXI=2 KOPTI=0 TYPE=' ' CALL ACMO(MTABX,'KOPT',TYPE,IENT) IF(TYPE.EQ.'TABLE')KOPTI=IENT IF(KOPTI.NE.0)THEN TYPE=' ' CALL ACMO(KOPTI,'KFORM',TYPE,IENT) IF(TYPE.EQ.'ENTIER')CALL ACME(KOPTI,'KFORM',KFORM) IF(KFORM.EQ.2)THEN WRITE(6,*)' Opérateur FPA ' WRITE(6,*)' Option VF non prevue ' RETURN ENDIF TYPE=' ' CALL ACMO(KOPTI,'KIMPL',TYPE,IENT) IF(TYPE.EQ.'ENTIER')CALL ACME(KOPTI,'KIMPL',KIMPL) TYPE=' ' CALL ACMO(KOPTI,'IDCEN',TYPE,IENT) IF(TYPE.EQ.'ENTIER')CALL ACME(KOPTI,'IDCEN',IDCEN) TYPE=' ' CALL ACMO(KOPTI,'IKOMP',TYPE,IENT) IF(TYPE.EQ.'ENTIER')CALL ACME(KOPTI,'IKOMP',IKOMP) IF(KIMPL.NE.0)THEN WRITE(6,*)' Opérateur FPA ' WRITE(6,*)' Seule l''option explicite est prévue' RETURN ENDIF ENDIF C***************************************************************************** C CALL ACMM(MTABX,'NOMZONE',NOMZ) CALL LEKTAB(MTABX,'DOMZ',MTABZ) IF(MTABZ.EQ.0)THEN WRITE(6,*)' Opérateur FPA ' WRITE(6,*)' On ne trouve pas l''indice DOMZ ? ' RETURN ENDIF CALL LEKTAB(MTABZ,'CENTRE',MELEMC) IF(MELEMC.EQ.0)GO TO 90 C C*********************************************************************** C Lecture des arguments CALL ACME(MTABX,'IARG',IARG) IF (IARG.NE.7)THEN WRITE(6,*)'Opérateur FPA : nombre d''argument incorrect' RETURN ENDIF C *** Lecture de NU **** IXV(1)=0 IXV(2)=1 IXV(3)=0 CALL LEKCOF('Opérateur FPA :', & MTABX,KINC,1,IXV,MNU,NNU,NPT1,NC1,IKNU,IRET) IF(IRET.EQ.0)RETURN IF(NNU.VPOCHA(1,1).LT.0.D0)THEN WRITE(6,*)'Opérateur FPA : ' WRITE(6,*)' Le 1er argument n''est pas convenable' WRITE(6,*)' Il s''agit de la viscosite. On attend un flottant > 0' RETURN ENDIF XNU=NNU.VPOCHA(1,1) C *** Lecture de YP **** IXV(1)=0 IXV(2)=1 IXV(3)=0 CALL LEKCOF('Opérateur FPA :', & MTABX,KINC,2,IXV,MYP,NYP,NPT2,NC2,IKYP,IRET) IF(IRET.EQ.0)RETURN IF(NYP.VPOCHA(1,1).LT.0.D0)THEN WRITE(6,*)'Opérateur FPA : ' WRITE(6,*)' Le 2eme argument n''est pas convenable' WRITE(6,*)' On attend un flottant > 0' RETURN ENDIF XYP=NYP.VPOCHA(1,1) C *** Lecture de uet **** IXV(1)=MELEMC IXV(2)=0 IXV(3)=0 CALL LEKCOF('Opérateur FPA :', & MTABX,KINC,3,IXV,MUET,NUET,NPT3,NC3,IKUET,IRET) IF(IRET.EQ.0)RETURN C *** Lecture de NORM *** IXV(1)=-MELEMC IXV(2)=0 IXV(3)=0 CALL LEKCOF('Opérateur FPA :', & MTABX,KINC,4,IXV,MNORM,NNORM,NPT4,NC4,IKNORM,IRET) IF(IRET.EQ.0)RETURN C *** Lecture de AK *** IXV(1)=MELEMC IXV(2)=0 IXV(3)=0 CALL LEKCOF('Opérateur FPA :', & MTABX,KINC,5,IXV,MAK,NAK,NPT5,NC5,IKAK,IRET) IF(IRET.EQ.0)RETURN C C *** Lecture de ROG *** IXV(1)=0 IXV(2)=0 IXV(3)=1 CALL LEKCOF('Opérateur FPA :', & MTABX,KINC,6,IXV,MROG,NROG,NPT6,NC6,IKROG,IRET) IF(IRET.EQ.0)RETURN C C *** Lecture de RAP **** IXV(1)=0 IXV(2)=1 IXV(3)=0 CALL LEKCOF('Opérateur FPA :', & MTABX,KINC,7,IXV,MRAP,NRAP,NPT7,NC7,IKRAP,IRET) IF(IRET.EQ.0)RETURN IF(NRAP.VPOCHA(1,1).LT.0.D0)THEN WRITE(6,*)'Opérateur FPA : ' WRITE(6,*)' Le 7eme argument n''est pas convenable' WRITE(6,*) &' Il s''agit du rayon des particules, on attend un flottant > 0' RETURN ENDIF C C C************************************************************************** C*****CALCUL DE AK(NU,YP,UET,NORM,ROG,RAP) C************************************************************************** C N = NAK.VPOCHA(/1) CALL XFPA(NNU.VPOCHA,NYP.VPOCHA,NROG.VPOCHA,NRAP.VPOCHA,N, 1 NUET.VPOCHA,NNORM.VPOCHA,NAK.VPOCHA) C C CALL KFPA C CALL LIROBJ('CHPOINT',MCHPO1,1,IRET) C CALL LICHT(MCHPO1,MPOVA1,TYPE,IGEOM) C DO 20 I=1,N C NAK.VPOCHA(I,1)=MPOVA1.VPOCHA(I,1) C20 CONTINUE C************************************************************************** C CALL ECROBJ('CHPOINT',MAK) C CALL ECROBJ('CHPOINT',MTTA) CALL ECROBJ('TABLE',MTABX) CALL ECME(MTABX,'IARG',2) CALL ECMO(MTABX,'ARG1','CHPOINT',MAK) XVAL=0.D0 CALL ECMF(MTABX,'ARG2',XVAL) CALL ECHIMP CALL ECME(MTABX,'IARG',7) CALL ECMF(MTABX,'ARG1',XNU) CALL ECMF(MTABX,'ARG2',XYP) C*************************************************************************** C SEGDES MUET,MAK,NAK,MNORM C SEGDES MELEMC C SEGSUP MPOVA1,MCHPO1 90 CONTINUE RETURN END