norv3
C NORV3 SOURCE CB215821 20/11/25 13:35:14 10792 & VAL1,VAL2,IND22,IND2,IND,IPO3,VAUX,TAB) 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 SMLENTI -INC SMELEME -INC SMCHPOI -INC PPARAM -INC CCOPTIO -INC SMCOORD -INC SMLREEL 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 POINTEUR MLENCL.MLENTI, MLECEN.MLENTI, MLESOM.MLENTI, & MLEFA.MLENTI -INC SMCHAML INTEGER NBNN,NBREF C C**** Variables de COOPTIO C 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 C & ,MCOORD C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU C & ,NORINC,NORVAL,NORIND,NORVAD C & ,NUCROU, IPSAUV 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,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,VALAUX REAL*8 XLONG,AG1,AG2,AD1,AD2,PSCAG1,PSCAG2,PSCAD1,PSCAD2, & COEF1,COEF2,COEF3,COEF4,SCN1X,SCN1Y,VX,VY,COEF1X,COEF2X, & COEF1Y,COEF2Y,CX,CY,ANCX,ANCY,DIFFX,DIFFY,XLONGG,XLONGD & VALD,VALG,COEF,GX,GY,XMINK11,XMAXK11,XMINK22,XMAXK22 REAL*8 VECXG1(2),VECYG1(2) REAL*8 VECXG2(2),VECYG2(2) REAL*8 VECXD1(2),VECYD1(2) REAL*8 VECXD2(2),VECYD2(2) REAL*8 EPS INTEGER ICRIT CHARACTER*8 TYPE C & 'P2DX','P2DY', & 'P3DX','P3DY', & 'P4DX','P4DY', & 'P5DX','P5DY', & 'P6DX','P6DY', & 'P7DX','P7DY', & 'P8DX','P8DY', & 'P9DX','P9DY'/ INTEGER NDIM SEGMENT MMAT1 REAL*8 PM(NDIM,NDIM),PM1(NDIM,NDIM),XSOL(NDIM) INTEGER IC(NDIM) ENDSEGMENT INTEGER K1,K2 SEGMENT INDICE INTEGER NUME(K1,K2) ENDSEGMENT POINTEUR IND.INDICE,IND2.INDICE,IND22.INDICE SEGMENT MATRICE REAL*8 MAT(K1,K2) ENDSEGMENT POINTEUR VAL1.MATRICE,VAL2.MATRICE,SCMB.MATRICE INTEGER K3 SEGMENT POINT2 INTEGER POINT(K3) ENDSEGMENT POINTEUR IPO2.POINT2 SEGMENT MATRICE2 REAL*8 MAT2(K1,K2) ENDSEGMENT POINTEUR MATR1.MATRICE2,MATR2.MATRICE2 SEGMENT POINT3 INTEGER POINT33(K3) ENDSEGMENT POINTEUR IPO3.POINT3 SEGMENT INDICE3 INTEGER NU(K1,K2) ENDSEGMENT POINTEUR INDIC.INDICE3 SEGMENT REP INTEGER ID(K3) ENDSEGMENT POINTEUR TAB.REP,INDLI.REP K3 = NSOMM SEGINI IPO3 c SEGINI VAUX c WRITE(6,*) 'DANS NORV3' c WRITE(6,*) 'NBMAX= ',NBMAX * ON EST ICI c INVERSION DE CHAQUE PETITE MATRICE EPS = 1.e-30 XINF = 1.e+30 NMOY = 0 DO NLS1=1,NSOMM,1 NMOY = NMOY + (INDLI.ID(NLS1)*INDLI.ID(NLS1)) NDIM = INDLI.ID(NLS1) c WRITE(6,*) 'NLS1= ',NLS1,'NDIM = ', NDIM K1 = NBMAX K2 = (NBMAX+1) SEGINI MMAT1 K1 = NBMAX K2 = NBMAX + 1 SEGINI INDIC C ON EST ICI MATR1 = IPO2.POINT(NLS1) SEGACT MATR1 *MOD DO I=1,INDLI.ID(NLS1) DO J = 1,INDLI.ID(NLS1) PM(I,J) = MATR1.MAT2(I,J) c WRITE(6,*) 'NLS1= ',NLS1,'I=',I,'J=',J,PM(I,J) ENDDO c WRITE(6,*) 'NLS1= ',NLS1,'I=',I,'SCMB', SCMB.MAT(I,NLS1) ENDDO c WRITE(6,*) 'NLS1= ',NLS1,'EPS= ',EPS c WRITE(6,*) 'NLS1= ',NLS1,'EPS= ',EPS c WRITE(6,*) 'NLS1= ',NLS1,'ICRIT= ',ICRIT IF (ICRIT.EQ.1) THEN WRITE(6,*) 'MATRICE PEUT ETRE NON INVERSIBLE' WRITE(6,*) 'NLS1= ',NLS1 c DO I=1,INDLI.ID(NLS1) c DO J = 1,INDLI.ID(NLS1) c PM(I,J) = 0.0 c WRITE(6,*) 'NLS1= ',NLS1,'I=',I,'J=',J,'NOEUD2= ', c & MATR1.MAT2(I,J) c WRITE(6,*) 'NLS1= ',NLS1,'I=',I,'J=',J,'PM= ',PM(I,J) c ENDDO c ENDDO ENDIF ITROUVE = 0 DO I=1,INDLI.ID(NLS1) DO J = 1,INDLI.ID(NLS1) IF (PM(I,J).GT.XINF) THEN ITROUVE = 1 GOTO 444 ENDIF ENDDO ENDDO 444 CONTINUE IF (ITROUVE.EQ.1) THEN WRITE(6,*) 'PM EST TRES GRAND : LE CONDITIONNEMNENT EST PEUT & ETRE MAUVAIS' c DO I=1,INDLI.ID(NLS1) c DO J = 1,INDLI.ID(NLS1) c PM(I,J) = 0.0D0 c ENDDO c ENDDO ENDIF c WRITE(6,*) 'NLS1= ',NLS1,'INDLI(NLS1)=',INDLI.ID(NLS1) DO I = 1,INDLI.ID(NLS1) XSOL(I) = 0.0D0 DO J = 1,INDLI.ID(NLS1) c WRITE(6,*) 'NLS1= ',NLS1,'J=',J,'SCMB', SCMB.MAT(J,NLS1) c WRITE(6,*) 'NLS1= ',NLS1,'J=',J,'SCMB', SCMB.MAT(J,NLS1) c WRITE(6,*) 'NLS1= ',NLS1,'I=',I,'J=',J,'PM= ',PM(I,J) XSOL(I) = XSOL(I) + (SCMB.MAT(J,NLS1)*PM(I,J)) ENDDO ENDDO DO J = 1,INDLI.ID(NLS1) SCMB.MAT(J,NLS1) = XSOL(J) c WRITE(6,*) 'NLS1= ',NLS1,'J=',J,'XSOL',XSOL(J) ENDDO DO IAUX = 1,INDLI.ID(NLS1) ICON = 0 DO JAUX = 1,INDLI.ID(NLS1) MATR1.MAT2(IAUX,JAUX) = 0.0D0 VALAUX = PM(IAUX,JAUX) * & (VAL1.MAT(JAUX,NLS1)) NTEST = IND.NUME(JAUX,NLS1) IF (NTEST.NE.0) THEN c WRITE(6,*) 'NLS1= ',NLS1, 'IND=',IND.NUME(JAUX,NLS1) c WRITE(6,*) 'NLS1= ',NLS1, 'VAL1=',VAL1.MAT(JAUX,NLS1) c WRITE(6,*) 'NLS1= ',NLS1, 'IND=',IND22.NUME(JAUX,NLS1) c WRITE(6,*) 'NLS1= ',NLS1, 'VAL2=',VAL2.MAT(JAUX,NLS1) c RECHERCHE DE NTEST DO IAUX2=1,INDLI.ID(NLS1) J2 = NTEST ITEST = IAUX2 GOTO 533 ENDIF ENDDO ICON = ICON +1 ITEST = ICON IF (ITEST.GT.K2) THEN WRITE(6,*) 'K2 TROP PETIT' ENDIF 533 CONTINUE MATR1.MAT2(IAUX,ITEST) = MATR1.MAT2(IAUX,ITEST) & + VALAUX ENDIF ENDDO c ENDDO C MEME CHOSE POUR VAL2 c DO IAUX = 1,INDLI.ID(NLS1) DO JAUX = 1,INDLI.ID(NLS1) VALAUX = PM(IAUX,JAUX) * & (VAL2.MAT(JAUX,NLS1)) NTEST = IND22.NUME(JAUX,NLS1) c RECHERCHE DE NTEST IF (NTEST.NE.0) THEN DO IAUX2 = 1,ICON J2 = NTEST ITEST = IAUX2 GOTO 633 ENDIF ENDDO ICON = ICON +1 ITEST = ICON IF (ITEST.GT.K2) THEN WRITE(6,*) 'K2 TROP PETIT' ENDIF 633 CONTINUE MATR1.MAT2(IAUX,ITEST) = MATR1.MAT2(IAUX,ITEST) & + VALAUX ENDIF ENDDO ENDDO TAB.ID(NLS1) = ICON c DO IAUX = 1,INDLI.ID(NLS1) cc DO IAUX2 = 1,TAB.ID(NLS1) c WRITE(6,*) 'NLS1= ',NLS1,'IAUX= ',IAUX ,'IAUX2= ', c & IAUX2,'VAUX',MATR1.MAT2(IAUX,IAUX2) c & ,'IND3= ',INDIC.NU(IAUX,IAUX2) c ENDDO c ENDDO c WRITE(6,*) 'ICON= ',ICON SEGDES INDIC SEGDES MATR1 SEGSUP MMAT1 ENDDO NMOY = NMOY/(1.D0*NSOMM) c WRITE(6,*) 'NMOY1= ',(NMOY) c SEGSUP NOEUD2 SEGSUP VAL1 SEGSUP VAL2 SEGSUP IND SEGSUP IND22 9999 CONTINUE RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales