cli251
C CLI251 SOURCE CB215821 20/11/25 13:20:39 10792 & ICHPSU,LRECP,LRECV,IROC,IVITC,IPC,IYC,ICHLIM,ICHRES,ICHRLI) C************************************************************************ C C PROJET : CASTEM 2000 C C NOM : CLI251 C C DESCRIPTION : Subroutine appellée par CLIM22 C Outlet B.C. (known pressure) C C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec estensions CISI) C C AUTEUR : S. Kudriakov, DEN/DM2S/SFME/LTMF C C************************************************************************ C C APPELES (Calcul) : C C************************************************************************ C C HISTORIQUE (Anomalies et modifications éventuelles) C C HISTORIQUE : C C************************************************************************ C IMPLICIT INTEGER(I-N) -INC PPARAM -INC CCOPTIO -INC SMLMOTS -INC SMELEME POINTEUR MELEFC.MELEME -INC SMLENTI POINTEUR MLEMC.MLENTI, MLEMCB.MLENTI,MLEMF.MLENTI -INC SMCHPOI POINTEUR MPNORM.MPOVAL, MPVOL.MPOVAL, MPSURF.MPOVAL, MPRC.MPOVAL, & MPVC.MPOVAL, MPPC.MPOVAL, MPYC.MPOVAL, MPLIM.MPOVAL, & MPRES.MPOVAL, MPRLI.MPOVAL C C**** Variables de COOPTIO C C INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR C & ,IOTER, IOLEC, IOIMP, IOCAR, IOACQ C & ,IOPER, IOSGB, IOGRA, IOSAU, IORES C & ,IECHO, IIMPI, IOSPI C & ,IDIM, IFICLE, IPREFI C & ,MCOORD C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU C & ,NORINC,NORVAL,NORIND,NORVAD C & ,NUCROU, IPSAUV C INTEGER MELEMF,MELEMC,MELECB,INORM,ICHPVO,ICHPSU, IROC,IVITC,IPC & ,IYC,ICHLIM,ICHRES,ICHRLI,ICEL,NFAC,IFAC & ,NGF,NGC,NLF,NLC,NLCB,LRECP,LRECV,NSP,NESP,I REAL*8 VOLU,SURF,GAMC,CNX,CNY,CNZ,CTX,CTY,CTZ & ,CT2X,CT2Y,CT2Z,RC,PC,UXC,UYC,UZC,PF,TOP,BOT & ,UNC,UTC,UT2C,CELLT CHARACTER*(8) TYPE C------------------------------------------------------- -INC SMLREEL POINTEUR MLRECP.MLREEL, MLRECV.MLREEL C------------------------------------------------------- C********** Les CP's and CV's *********************** C------------------------------------------------------- SEGMENT GCONST REAL*8 GC(NSP) ENDSEGMENT POINTEUR CP.GCONST, CV.GCONST C------------------------------------------------------------- C******* Les fractionines massiques ************************** C------------------------------------------------------------- SEGMENT FRAMAS REAL*8 YET(NSP) ENDSEGMENT POINTEUR YC.FRAMAS C------------------------------------------------------------- C********** Segments for the flux-vector ******************* C------------------------------------------------------------- SEGMENT FUNEL REAL*8 FU(4+NSP) ENDSEGMENT POINTEUR flux2D.funel, flux3D.funel SEGINI FLUX2D SEGINI FLUX3D C------------------------------------------------------------ C**** KRIPAD pour la correspondance global/local C------------------------------------------------------------ C-------------------------------------------- C**** CHPOINTs de la table DOMAINE C-------------------------------------------- C---------------------------------------- C**** CHPOINTs des variables C---------------------------------------- C--------------------------------------------------------- C**** Boucle sur le face pour le calcul des invariants de C Riemann et du flux C--------------------------------------------------------- SEGACT MELEFC NFAC=MELEFC.NUM(/2) UZC=0.0D0 CNZ=0.0D0 CTZ=0.0D0 CT2X=0.0D0 CT2Y=0.0D0 CT2Z=0.0D0 DO IFAC=1,NFAC,1 NGF=MELEFC.NUM(1,IFAC) NGC=MELEFC.NUM(2,IFAC) NLF=MLEMF.LECT(NGF) NLC=MLEMC.LECT(NGC) NLCB=MLEMCB.LECT(NGF) VOLU=MPVOL.VPOCHA(NLC,1) SURF=MPSURF.VPOCHA(NLF,1) C In CASTEM les normales sont sortantes CNX=MPNORM.VPOCHA(NLF,1) CNY=MPNORM.VPOCHA(NLF,2) IF(IDIM.EQ.2)THEN CTX=-1.0D0*CNY CTY=CNX ELSE CNZ=MPNORM.VPOCHA(NLF,3) CTX=MPNORM.VPOCHA(NLF,4) CTY=MPNORM.VPOCHA(NLF,5) CTZ=MPNORM.VPOCHA(NLF,6) CT2X=MPNORM.VPOCHA(NLF,7) CT2Y=MPNORM.VPOCHA(NLF,8) CT2Z=MPNORM.VPOCHA(NLF,9) ENDIF C-------------------------------------------- SEGINI CP, CV MLRECP = LRECP MLRECV = LRECV SEGACT MLRECP, MLRECV DO 10 I=1,(NSP-1) 10 CONTINUE C---------------------------------------- C Variables au centre C---------------------------------------- RC=MPRC.VPOCHA(NLC,1) UXC=MPVC.VPOCHA(NLC,1) UYC=MPVC.VPOCHA(NLC,2) IF(IDIM.EQ.3)UZC=MPVC.VPOCHA(NLC,3) PC=MPPC.VPOCHA(NLC,1) SEGINI YC SEGACT MPYC DO 101 I=1,(NSP-1) YC.YET(I)=MPYC.VPOCHA(NLC,I) 101 CONTINUE c------------------------------------------------------------- c Computing GAMMA at the cell-center c------------------------------------------------------------- top=0.0D0 bot=0.0D0 do 102 i=1,(nsp-1) top=top+yc.yet(i)*(cp.gc(i)-cp.gc(nsp)) bot=bot+yc.yet(i)*(cv.gc(i)-cv.gc(nsp)) 102 continue top=cp.gc(nsp)+top bot=cv.gc(nsp)+bot GAMC=top/bot C----------------------------------------- C Variables à la face C----------------------------------------- PF=MPLIM.VPOCHA(NLCB,1) C--------------------------------------- C******* On calcule UN, UT, UT2 C--------------------------------------- UNC=(UXC*CNX)+(UYC*CNY)+(UZC*CNZ) UTC=(UXC*CTX)+(UYC*CTY)+(UZC*CTZ) UT2C=(UXC*CT2X)+(UYC*CT2Y)+(UZC*CT2Z) C----------------------------------------------- C******* Densite, vitesse, pression sur le bord C----------------------------------------------- MPRLI.VPOCHA(NLCB,1)=RC MPRLI.VPOCHA(NLCB,2)=UXC MPRLI.VPOCHA(NLCB,3)=UYC IF(IDIM.EQ.3) MPRLI.VPOCHA(NLCB,4)=UZC MPRLI.VPOCHA(NLCB,IDIM+2)=PF do 104 i=1,(nsp-1) MPRLI.VPOCHA(NLCB,IDIM+2+I)=YC.YET(I) 104 continue C--------------------------------------------------- C******* Probleme de Riemann entre l'etat gauche C RC,UNC,UTC,UT2C,PC et l'etat droite C RC,UNC,UTC,UT2C,PF C On utilise AUSM+ C Flux dans le repaire normale C--------------------------------------------------- NESP=NSP-1 IF(IDIM.EQ.2)THEN & GAMC,RC,PC,UNC,UTC, & GAMC,RC,PF,UNC,UTC, & YC.YET,YC.YET, & FLUX2D.FU, & CELLT) C------------------------------------------------------- C******* Residuum (son SPG a le meme ordre que MELEFC) C------------------------------------------------------- MPRES.VPOCHA(IFAC,1)=-1*FLUX2D.FU(1)*SURF/VOLU MPRES.VPOCHA(IFAC,2)=-1*((FLUX2D.FU(2)*CNX)+ & (FLUX2D.FU(3)*CTX))*SURF/VOLU MPRES.VPOCHA(IFAC,3)=-1*((FLUX2D.FU(2)*CNY)+ & (FLUX2D.FU(3)*CTY))*SURF/VOLU MPRES.VPOCHA(IFAC,4)=-1*FLUX2D.FU(4)*SURF/VOLU do 105 i=1,(nsp-1) MPRES.VPOCHA(IFAC,4+I)=-1*FLUX2D.FU(4+I)*SURF/VOLU 105 continue ELSE & GAMC,RC,PC,UNC,UTC,UT2C, & GAMC,RC,PF,UNC,UTC,UT2C, & YC.YET,YC.YET, & FLUX3D.FU, & CELLT) C------------------------------------------------------ C******* Residuum (son SPG a le meme ordre que MELEFC) C------------------------------------------------------ MPRES.VPOCHA(IFAC,1)=-1*FLUX3D.FU(1)*SURF/VOLU MPRES.VPOCHA(IFAC,2)=-1*((FLUX3D.FU(2)*CNX)+ & (FLUX3D.FU(3)*CTX)+(FLUX3D.FU(4)*CT2X))*SURF/VOLU MPRES.VPOCHA(IFAC,3)=-1*((FLUX3D.FU(2)*CNY)+ & (FLUX3D.FU(3)*CTY)+(FLUX3D.FU(4)*CT2Z))*SURF/VOLU MPRES.VPOCHA(IFAC,4)=-1*((FLUX3D.FU(2)*CNZ)+ & (FLUX3D.FU(3)*CTZ)+(FLUX3D.FU(4)*CT2Z))*SURF/VOLU MPRES.VPOCHA(IFAC,5)=-1*FLUX3D.FU(5)*SURF/VOLU do 106 i=1,(nsp-1) MPRES.VPOCHA(IFAC,5+I)=-1*FLUX3D.FU(5+I)*SURF/VOLU 106 continue ENDIF ENDDO C SEGDES MELEFC C SEGSUP MLEMC SEGSUP MLEMCB SEGSUP MLEMF C SEGDES MPNORM SEGDES MPVOL SEGDES MPSURF SEGDES MPRC SEGDES MPPC SEGDES MPVC SEGDES MPYC SEGDES MPLIM SEGDES MPRES SEGDES MPRLI SEGDES YC SEGDES FLUX2D SEGDES FLUX3D C 9999 CONTINUE RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales