mesude
C MESUDE SOURCE PV 22/06/15 21:15:02 11388 C Mesure la carte de densite d'un maillage (CHPOINT) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC SMELEME -INC SMCHPOI -INC SMCOORD -INC CCREEL LOGICAL ISEG3 SEGMENT ICPR(NBPTS) SEGMENT INLPP integer INL(NP1) ENDSEGMENT segact mcoord C---- CAS DU MAILLAGE VIDE ISOU1=LISOUS(/1) IF (ITYPEL.EQ.0.AND.ISOU1.EQ.0) THEN NAT=1 NSOUPO=0 SEGINI,MCHPOI MCHPOI.IFOPOI=IFOUR MCHPOI.JATTRI(1)=1 RETURN ENDIF C---- CAS USUEL C Changement du maillage en lignes : appel a CHANLG CALL CHANLG IF (IERR.NE.0) RETURN IF (IERR.NE.0) RETURN NBSOU1 = LISOUS(/1) IF (NBSOU1.NE.0) THEN RETURN ENDIF C IPT1 : maillage des segments, IPT2 : des points IPT2 = MELEME IPT1 = MELEME NBEL1 = IPT1.NUM(/2) SEGACT MCOORD C Initialisation du CHPOINT NAT = 1 NSOUPO = 1 SEGINI, MCHPOI MTYPOI = ' ' MOCHDE = ' CHPOINT de densite de mailles ' JATTRI(1) = 1 IFOPOI = IFOUR NC = 1 SEGINI, MSOUPO IPCHP(1) = MSOUPO NOCOMP(1) = 'SCAL' IGEOC = IPT2 N = IPT2.NUM(/2) SEGINI, MPOVAL IPOVAL = MPOVAL C Segments de travail SEGINI,ICPR DO 10 IP=1,N ICPR(IPT2.NUM(1,IP)) = IP 10 CONTINUE C Segment INLPP : nb. ligne par point NP1 = N SEGINI,INLPP C Gestion maillage quadratique ISEG3 = (ITYPEL.EQ.3) IS2 = 2 IF (ISEG3) IS2 = 3 C Calcul de la densite VPOCHA(1,1) = 0.D0 ID1 = IDIM + 1 DO 20 K=1,NBEL1 IP1 = IPT1.NUM(1,K) IP2 = IPT1.NUM(IS2,K) XD1 = 0.D0 DO 21 I=1,IDIM XI1 = XCOOR((IP1-1)*ID1+I) XI2 = XCOOR((IP2-1)*ID1+I) XD1 = XD1 + (XI2 - XI1)**2 21 CONTINUE XD1 = SQRT(XD1) VPOCHA(ICPR(IP1),1) = VPOCHA(ICPR(IP1),1)+XD1 VPOCHA(ICPR(IP2),1) = VPOCHA(ICPR(IP2),1)+XD1 iNL(ICPR(IP1)) = INL(ICPR(IP1))+1 iNL(ICPR(IP2)) = INL(ICPR(IP2))+1 * write(6,*) 'IP1,IP2,XD1 =',IP1,IP2,XD1 20 CONTINUE DO 30 I=1,N * en seg3 les points milieux ne sont pas encore remplis if (inl(i).le.0) inl(i)=igrand if (inl(i).gt.0) then VPOCHA(I,1) = VPOCHA(I,1) / iNL(I) else VPOCHA(I,1) = 0.d0 endif 30 CONTINUE IF (ISEG3) THEN DO 40 K=1,NBEL1 IP1 = IPT1.NUM(1,K) IP2 = IPT1.NUM(IS2,K) XD1 = VPOCHA(ICPR(IP1),1) XD2 = VPOCHA(ICPR(IP2),1) XDM = 0.5D0*(XD1+XD2) IPM = IPT1.NUM(2,K) VPOCHA(ICPR(IPM),1) = XDM 40 CONTINUE ENDIF segsup inlpp RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales