divu1
C DIVU1 SOURCE FANDEUR 22/01/03 21:15:12 11136 C----------------------------------------------------------------------- C Calcul la divergence à partir des FLUX. C Le CHAMPOINT résultat est de support CENTRE. C----------------------------------------------------------------------- C C--------------------------- C Parametres Entree/Sortie : C--------------------------- C C E/ IRE1 : Champoint de type FLUX C E/ IRE2 : Mchaml des orientation de normale (1=out,-1=in) C E/ IRE3 : MELEME des points FACE C E/ IRE4 : MELEME des points CENTRE C E/ IRE5 : CHPOIN des points CENTRE C /S IRET : Champoint resultat de composante SCAL C C---------------------- C Tableaux de travail : C---------------------- C C ICPR(I)=J : Le noeud I a le numero J dans le MELEME des faces C Correspondance numerotation globale/locale C INUI(I)=J : Le Ieme noeud local est le Jeme global C Correspondance numerotation locale/globale C NNGOT : Nombre de noeuds total du domaine C C---------------------- C Variables en COMMON : C---------------------- C C IFOUR : cf CCOPTIO.INC C C----------------------------------------------------------------------- C C Langage : ESOPE + FORTRAN77 C C Auteurs : F.DABBENE 01/94 C Complements : C. LE POTIER ET F. AURIOL 20/00 C C----------------------------------------------------------------------- IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) * -INC PPARAM -INC CCOPTIO -INC SMELEME -INC SMCHPOI -INC SMCHAML -INC SMCOORD * SEGMENT ICCPR INTEGER ICPR(NNGOT) , INUI(NNGOT) ENDSEGMENT C C= INITIALISATIONS C MCHPOI = IRE1 MCHELM = IRE2 IPT1 = IRE3 IPT2 = IRE4 C C= Initialisations à partir de la rigidité C NNGOT = nbpts SEGINI ICCPR IRET = 0 * *= Creation des tableaux ICPR et INUI pour le maillage IPT1 des FACES * SEGACT IPT1 N2 = IPT1.NUM(/2) IK = 0 NBFACE = N2 IF (ICPR(K).EQ.0) THEN IK = IK + 1 ICPR(K) = IK INUI(IK)= K ENDIF 10 CONTINUE SEGDES IPT1 C C- Récupération du pointeur MPOVAL des flux C SEGACT MCHPOI MSOUPO = IPCHP(1) SEGACT MSOUPO MPOVA1 = IPOVAL SEGDES MSOUPO SEGDES MCHPOI C C------------------------------------------ C Création du CHAMPOINT SCAL contenant DIVu C------------------------------------------ C NSOUPO = 1 NAT = 1 SEGINI MCHPOI IRET = MCHPOI IFOPOI = IFOUR JATTRI(1) = 1 NC = 1 SEGINI MSOUPO IPCHP(1) = MSOUPO SEGDES MCHPOI NOCOMP(1) = 'SCAL' IGEOC = IRE4 SEGACT IPT2 N = IPT2.NUM(/2) SEGDES IPT2 SEGINI MPOVAL IPOVAL = MPOVAL NOHARM(1) = NIFOUR SEGDES MSOUPO C C------------------------------------------------ C= Boucle sur les ZONES ELEMENTAIRES du MCHAML C------------------------------------------------ C ITELEM = 0 SEGACT MCHELM SEGACT MPOVA1 NRIGEL = IMACHE(/1) IF(IRE5.EQ.0)THEN DO 40 IRI=1,NRIGEL C C Recuperation du MELEME et activation C MELEME = IMACHE(IRI) SEGACT MELEME N1 = NUM(/1) N2 = NUM(/2) C C Récupération du pointeur MELVAL du MCHAML d'orientation C MCHAML = ICHAML(IRI) SEGACT MCHAML MELVAL = IELVAL(1) SEGDES MCHAML SEGACT MELVAL C C------------------------------ C= Boucle 30 sur les ELEMENTs. C------------------------------ C ITELEM = ITELEM + 1 DO 20 IN=1,N1 VPOCHA(ITELEM,1) = VPOCHA(ITELEM,1) + VALIN1 20 CONTINUE 30 CONTINUE SEGDES MELVAL, MELEME 40 CONTINUE ELSE C C Cas ou l'on a une fonction C MCHPO2=IRE5 SEGACT MCHPO2 MSOUP2=MCHPO2.IPCHP(1) SEGACT MSOUP2 MPOVA2= MSOUP2.IPOVAL SEGACT MPOVA2 DO 70 IRI=1,NRIGEL C C Recuperation du MELEME et activation C MELEME = IMACHE(IRI) SEGACT MELEME N1 = NUM(/1) N2 = NUM(/2) C C Récupération du pointeur MELVAL du MCHAML d'orientation C MCHAML = ICHAML(IRI) SEGACT MCHAML MELVAL = IELVAL(1) SEGDES MCHAML SEGACT MELVAL C C------------------------------ C= Boucle sur les ELEMENTs. C------------------------------ C ITELEM = ITELEM + 1 DO 50 IN=1,N1 VPOCHA(ITELEM,1) = VPOCHA(ITELEM,1) + VALIN1 50 CONTINUE 60 CONTINUE SEGDES MELVAL, MELEME 70 CONTINUE SEGDES MPOVA2,MSOUP2,MCHPO2 ENDIF SEGDES MCHELM SEGDES MPOVA1 SEGDES MPOVAL SEGSUP ICCPR C RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales