rlex
C RLEX SOURCE CB215821 20/11/25 13:39:25 10792 C C Subroutine de reconstruction lineaire exacte d'un C Champoint centre au sommet des elements. C C********************************************************* C C Cette subroutine est appelee par KLNO C C********************************************************* C C Date : 27/11/98 C C Auteur : R. MOREL DRN/DMT/SEMT/TTMF C 21.01.04 : A. Beccantini correction E/S C correction 3D C C********************************************************* C C ENTREES : MCHPO1 : CHPOINT centre contenant la fonction C C MCHPO2 : CHPOINT centre contenant le gradient C C MCHPO3 : CHPOINT centre contenant le limiteur C C MTABD : Table domaine C C SORTIE : MCHPOI : CHPOINT sommet contenant la fonction C C********************************************************* IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC SMCOORD -INC SMELEME POINTEUR MELEMS.MELEME,MELEMC.MELEME -INC SMCHPOI -INC SMLENTI -INC SMLMOTS C C Declaration C & , JGN, JGM, NSOM, NBSOUS, L, NP, NEL, J, K & , ISOM, LSOM, NCENT, NK REAL*8 XC, YC, ZC, FC, GX, GY, GZ, GLIM, XS, YS, ZS & , DX, DY, DZ, DF, FS CHARACTER*4 MOT CHARACTER*8 TYPC C C Lecture des maillages de la table domaine C Verification que les maillages correspondent C IF(IERR.NE.0)RETURN IF(IERR.NE.0)RETURN IF(IERR.NE.0)RETURN C C**** We chech the geom. support of MCHPOi C MOT = 'SCAL' IF(IERR.NE.0)RETURN C JGN = 4 JGM = IDIM SEGINI MLMOTS IF(IERR.NE.0)RETURN SEGSUP MLMOTS C MOT = 'P1' IF(IERR.NE.0)RETURN C C**** We read the function C C In LICHT, SEGACT MPOVA1 IF(IERR.NE.0)RETURN C IF(IERR.NE.0)RETURN C In KRIPAD, SEGINI MLENTI C C Lecture du gradient C C In LICHT, SEGACT MPOVA2 IF(IERR.NE.0) RETURN C C Lecture du limiteur C C In LICHT, SEGACT MPOVA3 C C Creation du chpoint sommet C JGN = 4 JGM = 1 SEGINI MLMOTS TYPC = 'CHPOINT ' IF(IERR.NE.0) RETURN SEGSUP MLMOTS C In LICHT, SEGACT MPOVAL IF(IERR.NE.0) RETURN NSOM=MPOVAL.VPOCHA(/1) C MPOVA4 contient le nombre de centre contribuant a un sommet SEGINI, MPOVA4=MPOVAL C CC C On fait une boucle sur les elements du maillage C A chaque sommet on ajoute la contribution du centre de C l'element C SEGACT MELEME SEGACT MELEMC SEGACT MELEMS NBSOUS=MELEME.LISOUS(/1) IF(NBSOUS.EQ.0)NBSOUS=1 C NK=0 IPT1=MELEME DO L=1,NBSOUS,1 IF(NBSOUS.NE.1)IPT1=LISOUS(L) SEGACT IPT1 NP=IPT1.NUM(/1) NEL=IPT1.NUM(/2) C DO J=1,NEL,1 NK=NK+1 NCENT=MELEMC.NUM(1,NK) C Coordonnee du centre XC=XCOOR((NCENT-1)*(IDIM+1)+1) YC=XCOOR((NCENT-1)*(IDIM+1)+2) ZC=0.0D0 IF (IDIM .EQ. 3) ZC=XCOOR((NCENT-1)*(IDIM+1)+3) C Valeurs de la fonction sur l'element FC=MPOVA1.VPOCHA(NK,1) GX=MPOVA2.VPOCHA(NK,1) GY=MPOVA2.VPOCHA(NK,2) GZ=0.0D0 IF (IDIM .EQ. 3) GZ=MPOVA2.VPOCHA(NK,3) GLIM=MPOVA3.VPOCHA(NK,1) DO K=1,NP,1 ISOM=IPT1.NUM(K,J) LSOM=MLENTI.LECT(ISOM) MPOVA4.VPOCHA(LSOM,1)=MPOVA4.VPOCHA(LSOM,1)+1.0D0 XS=XCOOR((ISOM-1)*(IDIM+1)+1) YS=XCOOR((ISOM-1)*(IDIM+1)+2) ZS=0.0D0 IF (IDIM .EQ. 3) ZS=XCOOR((ISOM-1)*(IDIM+1)+3) DX=XS-XC DY=YS-YC DZ=ZS-ZC DF=(DX*GX+DY*GY+DZ*GZ)*GLIM FS=FC+DF MPOVAL.VPOCHA(LSOM,1)=MPOVAL.VPOCHA(LSOM,1)+FS ENDDO ENDDO ENDDO C DO J=1,NSOM,1 MPOVAL.VPOCHA(J,1)=MPOVAL.VPOCHA(J,1)/MPOVA4.VPOCHA(J,1) ENDDO C SEGSUP MLENTI SEGSUP MPOVA4 C END
© Cast3M 2003 - Tous droits réservés.
Mentions légales