norv5
C NORV5 SOURCE CB215821 20/11/25 13:35:18 10792 & MLECEN,MLEFA,MPOCHP,MLENCL,MPOVCL, & MLENNE,MPOVNE,MLENMI,MPOVMI, & LOGBOR,LOGCCL,LOGCOE) C C************************************************************************ C C PROJET : CASTEM 2000 C C NOM : NORV1 C C DESCRIPTION : Appelle par NORV C C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec extensions CISI) C C AUTEUR : C. LE POTIER, DM2S/SFME/MTMS C C************************************************************************ C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC SMLENTI -INC SMELEME -INC SMCHPOI -INC SMCOORD -INC SMLREEL -INC SMCHAML POINTEUR MELEFL.MELEME, MELEFP.MELEME, MELEFA.MELEME, & MELTFA.MELEME POINTEUR MPOSUR.MPOVAL, MPONOR.MPOVAL, & MPOCHP.MPOVAL, MPOVCL.MPOVAL, MPGSOM.MPOVAL, MPVOSO.MPOVAL, & MPOGRA.MPOVAL,MPOTEN.MPOVAL,MPOVNE.MPOVAL,MPOVMI.MPOVAL POINTEUR MLENCL.MLENTI, MLECEN.MLENTI, MLESOM.MLENTI, & MLEFA.MLENTI,MLENNE.MLENTI,MLENMI.MLENTI, & MLEFA2.MLENTI INTEGER NBNN,NBREF C**** Variable de SMLENTI, SMCHPOI C INTEGER JG, N, NC, NSOUPO, NAT, NBSOUS, NBNO,NBELEM C C**** Les includes C INTEGER I1,ICOMP,ICOMGR,IGEOM & ,IOP1,ICEN,ISOMM,IFAC,IFACEL,IFACEP,INORM & ,ISURF,IMAIL,ICHPO,ICHCL,ICHNE,ICHGRA,ICOEFF & ,NTOT,NSOMM,NCOMP,NFAC,NCEN & ,NLCF,NGCF,NGCF1,NGCF2,NGCG,NGCD,NLCG,NLCD,NGS1,NGS2 & ,NLS1,NLS2,NLFCL & ,ISOUS,IELEM,INOEUD,ICELL INTEGER ICEN2 & ,YG,YD,YF,YS1,YS2,PSCA,XNORM,VECX,VECY,PSCAGX,PSCAGY, & PSCADX,PSCADY,K11G,K22G,K21G,K11D,K22D,K21D,VXG1,VXG2, & VXAU,VYAU,VXD1,VXD2,VYG1,VYG2,TRG1,TRG2, & TRD1,TRD2,TRG,TRD REAL*8 XLONG,AG1,AG2,AD1,AD2,PSCAG1,PSCAG2,PSCAD1,PSCAD2, & COEF1,COEF2,COEF3,COEF4,SCN1X,SCN1Y,SCN1Z,VX,VY,COEF1X,COEF2X, & COEF1Y,COEF2Y,CX,CY,ANCX,ANCY,DIFFX,DIFFY,XLONGG,XLONGD & VALD,VALG,COEF,GX,GY,XMINK11,XMAXK11,XMINK22,XMAXK22 & QIMPX,QIMPY,QIMPZ REAL*8 EPS INTEGER ICRIT CHARACTER*8 TYPE INTEGER LOGBOR,LOGCOE,LOGCCL C MCHELM = ICOEFF SEGACT MCHELM NBSOUS=MCHELM.IMACHE(/1) IF (LOGBOR.EQ.0) THEN DO ISOUS=1,NBSOUS,1 MELEME=MCHELM.IMACHE(ISOUS) MCHAM1=MCHELM.ICHAML(ISOUS) SEGACT MELEME SEGACT MCHAM1 MELVA1=MCHAM1.IELVAL(1) SEGACT MELVA1 C NBNN=MELEME.NUM(/1) NFAC=MELEME.NUM(/2) C DO IELEM = 1,NFAC NGF=MELEME.NUM(1,IELEM) NLCF=MLEFA.LECT(NGF) MPOGRA.VPOCHA(NLCF,1) = 0.D0 C NGCF=MELEFL.NUM(2,NLCF) DO IVOI=2,NBNN ICENT = MELEME.NUM(IVOI,IELEM) ICEN = MLECEN.LECT(ICENT) VAL = 0.0D0 IF (ICEN.EQ.0) THEN c WRITE(6,*) 'INTERIEUR' c VAL = MPOCHP.VPOCHA(ICEN,1) c ELSE ICENL = MLENCL.LECT(ICENT) IF (ICENL.GT.0) THEN c WRITE(6,*) 'DIRICHLET' VAL = MPOVCL.VPOCHA(ICENL,1) c WRITE(6,*) 'NLCF= ',NLCF,'NGCF= ',ICENL,'VAL= ',VAL ELSE C CONDITIONS DE FLUX c WRITE(6,*) 'FLUX' ICENNE = MLENNE.LECT(ICENT) IF (ICENNE.GT.0) THEN QIMPX = MPOVNE.VPOCHA(ICENNE,1) VAL = (QIMPX) ELSE ICENMI = MLENMI.LECT(ICENT) IF (ICENMI .EQ.0) THEN WRITE(IOIMP,*) & 'PROBLEME DANS LES CONDITIONS AUX LIMITES' ELSE QIMPX = MPOVMI.VPOCHA(ICENMI,3) VAL = (QIMPX) ENDIF ENDIF ENDIF c WRITE(6,*) 'NLCF= ',NLCF,'VAL= ',VAL c WRITE(6,*) 'IVOI= ',IVOI,'MELEME= ', MELEME.NUM(IVOI,NLCF), c & 'COEF1 = ',COEF1 COEF1 = MELVA1.VELCHE(IVOI,IELEM) MPOGRA.VPOCHA(NLCF,1)= MPOGRA.VPOCHA(NLCF,1) + & (COEF1 * VAL) ENDIF ENDDO c WRITE(6,*) 'NLCF= ',NLCF,'NGCF= ',NGCF c WRITE(6,*) 'MPOGRA1= ', MPOGRA.VPOCHA(NLCF,1) c WRITE(6,*) 'MPOGRA2= ', MPOGRA.VPOCHA(NLCF,2) c WRITE(6,*) 'MPOGRA3= ', MPOGRA.VPOCHA(NLCF,3) c ENDIF ENDDO ENDDO C ON CONNAIT LES COEFFICIENTS : ON EN DEDUIT LE GRADIENT ELSEIF (LOGCOE.EQ.0) THEN DO ISOUS=1,NBSOUS,1 MELEME=MCHELM.IMACHE(ISOUS) MCHAM1=MCHELM.ICHAML(ISOUS) SEGACT MELEME SEGACT MCHAM1 MELVA1=MCHAM1.IELVAL(1) SEGACT MELVA1 C NBNN=MELEME.NUM(/1) NFAC=MELEME.NUM(/2) C DO IELEM = 1,NFAC NGF=MELEME.NUM(1,IELEM) NLCF=MLEFA.LECT(NGF) MPOGRA.VPOCHA(NLCF,1) = 0.D0 C NGCF=MELEFL.NUM(2,NLCF) NGCG=MELEFL.NUM(1,NLCF) NGCD=MELEFL.NUM(3,NLCF) c IF (NGCG.EQ.NGCD) THEN DO IVOI=2,NBNN ICENT = MELEME.NUM(IVOI,IELEM) c WRITE(6,*) 'ISOUS= ',ISOUS c WRITE(6,*) 'IELEM= ',IELEM,'IVOI= ',IVOI c WRITE(6,*) 'ICENT= ',ICENT ICEN = MLECEN.LECT(ICENT) VAL = 0.0D0 IF (ICEN.NE.0) THEN c WRITE(6,*) 'INTERIEUR' VAL = MPOCHP.VPOCHA(ICEN,1) ELSE ICENL = MLENCL.LECT(ICENT) c WRITE(6,*) 'NLCF= ',NLCF,'NGCF= ',ICENL IF (ICENL.GT.0) THEN c WRITE(6,*) 'DIRICHLET' VAL = MPOVCL.VPOCHA(ICENL,1) c WRITE(6,*) 'NLCF= ',NLCF,'NGCF= ',ICENL,'VAL= ',VAL ELSE C CONDITIONS DE FLUX c WRITE(6,*) 'FLUX' ICENNE = MLENNE.LECT(ICENT) IF (ICENNE.GT.0) THEN c WRITE(6,*) 'NLCF= ',NLCF,'SCN1X= ',SCN1X c WRITE(6,*) 'NLCF= ',NLCF,'SCN1Y= ',SCN1Y QIMPX = MPOVNE.VPOCHA(ICENNE,1) c WRITE(6,*) 'NLCF= ',NLCF,'QIMPX= ',QIMPX c WRITE(6,*) 'NLCF= ',NLCF,'QIMPY= ',QIMPY VAL = (QIMPX) c WRITE(6,*) 'NLCF= ',NLCF,'NGCF= ',ICENT,'VAL= ',VAL ELSE ICENMI = MLENMI.LECT(ICENT) IF (ICENMI .EQ.0) THEN WRITE(IOIMP,*) & 'PROBLEME DANS LES CONDITIONS AUX LIMITES' ELSE QIMPX = MPOVMI.VPOCHA(ICENMI,3) VAL = (QIMPX) ENDIF ENDIF ENDIF ENDIF c WRITE(6,*) 'NLCF= ',NLCF,'VAL= ',VAL c WRITE(6,*) 'IVOI= ',IVOI,'MELEME= ', MELEME.NUM(IVOI,NLCF), c & 'COEF1 = ',COEF1,'COEF2= ',COEF2,'COEF3= ',COEF3 COEF1 = MELVA1.VELCHE(IVOI,IELEM) MPOGRA.VPOCHA(NLCF,1)= MPOGRA.VPOCHA(NLCF,1) + & (COEF1 * VAL) ENDDO C ENDIF c WRITE(6,*) 'NLCF= ',NLCF,'NGCF= ',NGCF c WRITE(6,*) 'MPOGRA1= ', MPOGRA.VPOCHA(NLCF,1) c WRITE(6,*) 'MPOGRA2= ', MPOGRA.VPOCHA(NLCF,2) c WRITE(6,*) 'MPOGRA3= ', MPOGRA.VPOCHA(NLCF,3) ENDDO ENDDO ELSEIF (LOGCCL.EQ.0) THEN DO ISOUS=1,NBSOUS,1 MELEME=MCHELM.IMACHE(ISOUS) MCHAM1=MCHELM.ICHAML(ISOUS) SEGACT MELEME SEGACT MCHAM1 MELVA1=MCHAM1.IELVAL(1) SEGACT MELVA1 C NBNN=MELEME.NUM(/1) NFAC=MELEME.NUM(/2) C DO IELEM = 1,NFAC NGF=MELEME.NUM(1,IELEM) NLCF=MLEFA.LECT(NGF) MPOGRA.VPOCHA(NLCF,1) = 0.D0 C NGCF=MELEFL.NUM(2,NLCF) NGCG=MELEFL.NUM(1,NLCF) NGCD=MELEFL.NUM(3,NLCF) IF (NGCG.EQ.NGCD) THEN DO IVOI=2,MELEME.NUM(/1) ICENT = MELEME.NUM(IVOI,IELEM) ICEN = MLECEN.LECT(ICENT) VAL = 0.0D0 IF (ICEN.NE.0) THEN c WRITE(6,*) 'INTERIEUR' VAL = MPOCHP.VPOCHA(ICEN,1) ELSE ICENL = MLENCL.LECT(ICENT) c WRITE(6,*) 'NLCF= ',NLCF,'NGCF= ',ICENL IF (ICENL.GT.0) THEN c WRITE(6,*) 'DIRICHLET' VAL = MPOVCL.VPOCHA(ICENL,1) c WRITE(6,*) 'NLCF= ',NLCF,'NGCF= ',ICENL,'VAL= ',VAL ELSE C CONDITIONS DE FLUX c WRITE(6,*) 'FLUX' ICENNE = MLENNE.LECT(ICENT) IF (ICENNE.GT.0) THEN c WRITE(6,*) 'NLCF= ',NLCF,'SCN1X= ',SCN1X c WRITE(6,*) 'NLCF= ',NLCF,'SCN1Y= ',SCN1Y QIMPX = MPOVNE.VPOCHA(ICENNE,1) c WRITE(6,*) 'NLCF= ',NLCF,'QIMPX= ',QIMPX c WRITE(6,*) 'NLCF= ',NLCF,'QIMPY= ',QIMPY VAL = (QIMPX) c WRITE(6,*) 'NLCF= ',NLCF,'NGCF= ',ICENT,'VAL= ',VAL ELSE ICENMI = MLENMI.LECT(ICENT) IF (ICENMI .EQ.0) THEN WRITE(IOIMP,*) & 'PROBLEME DANS LES CONDITIONS AUX LIMITES' ELSE QIMPX = MPOVMI.VPOCHA(ICENMI,3) VAL = (QIMPX) ENDIF ENDIF ENDIF ENDIF c WRITE(6,*) 'NLCF= ',NLCF,'VAL= ',VAL c WRITE(6,*) 'IVOI= ',IVOI,'MELEME= ', MELEME.NUM(IVOI,NLCF), c & 'COEF1 = ',COEF1,'COEF2= ',COEF2,'COEF3= ',COEF3 COEF1 = MELVA1.VELCHE(IVOI,IELEM) MPOGRA.VPOCHA(NLCF,1)= MPOGRA.VPOCHA(NLCF,1) + & (COEF1 * VAL) ENDDO ENDIF c WRITE(6,*) 'NLCF= ',NLCF,'NGCF= ',NGCF c WRITE(6,*) 'MPOGRA1= ', MPOGRA.VPOCHA(NLCF,1) c WRITE(6,*) 'MPOGRA2= ', MPOGRA.VPOCHA(NLCF,2) c WRITE(6,*) 'MPOGRA3= ', MPOGRA.VPOCHA(NLCF,3) ENDDO ENDDO ENDIF C SEGDES MCHAM1 C SEGDES MELVA1 C SEGDES MELEME C SEGDES MCHELM C SEGDES MPOGRA END
© Cast3M 2003 - Tous droits réservés.
Mentions légales