sqtp1
C SQTP1 SOURCE FANDEUR 22/01/03 21:15:47 11136 S IFORC,IORIE,INORM,ISURF,MCHPOI) C----------------------------------------------------------------------- C Calcul de la contribution au systeme en trace de charge d'une force C volumique dans le cas de la résolution des équations de Darcy par EFMH C avec le modèle DARCY. C----------------------------------------------------------------------- C C--------------------------- C Parametres Entree/Sortie : C--------------------------- C C E/ IPMAHY : Segment contenant le pointeur vers le meleme des C connectivites elements/faces pour les zones du MMODEL C ou on a defini DARCY. C E/ IPFACE : MELEME de type POI1 des faces C E/ IPFORC : RIGIDITE de sous type 'MASSE' C E/ IPMATP : RIGIDITE de sous type 'HYBTP' C E/ IFORC : CHPO centre des sources de composantes FX, FY, (FZ) C E/ IORIE : MCHAML orientation des normales C E/ INORM : CHPO face des normales C E/ ISURF : CHPO face des surfaces C /S MCHPOI : CHPOINT face de composante FLUX C C---------------------- C Variables en COMMON : C---------------------- C C E/ IFOMOD : cf CCOPTIO C E/ NIFOUR : cf CCOPTIO C E/ IDIM : cf CCOPTIO C C C----------------------------------------------------------------------- C C Langage : ESOPE + FORTRAN77 C C Auteurs : 02/96 L.V.BENET - Cas permanent C C----------------------------------------------------------------------- IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) * -INC PPARAM -INC CCOPTIO -INC CCHAMP -INC SMCOORD -INC SMCHPOI -INC SMCHAML -INC SMELEME -INC SMRIGID * SEGMENT IPMAHY INTEGER MAHYBR(NSOUS) ENDSEGMENT SEGMENT ICCPR INTEGER ICPR(NNGOT) ENDSEGMENT SEGMENT MTRAV REAL*8 RLIGN1(NBDDL),RLIGN2(NBDDL) ENDSEGMENT * *- Initialisations * MCHPOI = 0 *- Creation du tableau ICPR pour le MELEME POI1 IPFACE * IK = 0 NNGOT = nbpts SEGINI ICCPR MELEME = IPFACE SEGACT MELEME N2 = NUM(/2) IF (ICPR(K).EQ.0) THEN IK = IK + 1 ICPR(K) = IK ENDIF 10 CONTINUE SEGDES MELEME * *- Creation du CHAMPOINT face - On laisse actif le MPOVAL du CHPOINT * NSOUPO = 1 NAT = 1 SEGINI MCHPOI IRET = MCHPOI MTYPOI = 'FACE ' IFOPOI = IFOUR JATTRI(1) = 2 NC = 1 SEGINI MSOUPO IPCHP(1) = MSOUPO SEGDES MCHPOI NOHARM(1) = NIFOUR IGEOC = IPFACE NOCOMP(1) = 'FLUX' N = N2 SEGINI MPOVAL IPOVAL = MPOVAL SEGDES MSOUPO * *- Recuperation du nombre de zone NBMAIL du MMODEL a partir IPMAHY * SEGACT IPMAHY NBMAIL = MAHYBR(/1) * *- Activation des segments RIGIDITE masse hybride et MATP * RI1 = IPFORC SEGACT RI1 RI2 = IPMATP SEGACT RI2 * *- Activation du segment MPOVAL du CHAMPOINT centre de composantes FX FY FZ * MCHPO1 = IFORC SEGACT MCHPO1 MSOUP1 = MCHPO1.IPCHP(1) SEGDES MCHPO1 SEGACT MSOUP1 MPOVA1 = MSOUP1.IPOVAL SEGDES MSOUP1 SEGACT MPOVA1 * * Activation du MCHAML d'orientation des normales * MCHEL1 = IORIE SEGACT MCHEL1 * * Activation du CHPO des vecteurs normales * MCHPO2 = INORM SEGACT MCHPO2 MSOUP2 = MCHPO2.IPCHP(1) SEGDES MCHPO2 SEGACT MSOUP2 MPOVA2 = MSOUP2.IPOVAL SEGDES MSOUP2 SEGACT MPOVA2 * * Activation du CHPO des surfaces * MCHPO3 = ISURF SEGACT MCHPO3 MSOUP3 = MCHPO3.IPCHP(1) SEGDES MCHPO3 SEGACT MSOUP3 MPOVA3 = MSOUP3.IPOVAL SEGDES MSOUP3 SEGACT MPOVA3 * *-------------------------------------------------- *= BOUCLE SUR LES MAILLAGES ELEMENTAIRES,ZONE IMAIL *-------------------------------------------------- * * WRITE(*,*)' NBMAIL ',NBMAIL ITELEM = 0 DO 110 IMAIL=1,NBMAIL C C- Activation de l'objet maillage ELTFA pour la zone IMAIL C MELEME = MAHYBR(IMAIL) IF (MELEME.EQ.0) GOTO 110 SEGACT MELEME * *- Recuperation des caracteristiques de RIGIDITE de sous type MASSE *- pour la zone IMAIL en cours de traitement * xMATR1 = RI1.IRIGEL(4,IMAIL) SEGACT xMATR1 NBELEM = xMATR1.re(/3) NELRIG = NBELEM * XMATR1 = IMATR1.IMATTT(1) * SEGACT XMATR1 NBDDL = XMATR1.RE(/1) NLIGRP = NBDDL NLIGRD = NBDDL * SEGDES XMATR1 * *- Recuperation des caracteristiques de RIGIDITE de sous type HYBTP *- pour la zone IMAIL en cours de traitement * xMATR2 = RI2.IRIGEL(4,IMAIL) SEGACT xMATR2 NBELEM = xMATR2.re(/3) NELRIG = NBELEM * XMATR2 = IMATR2.IMATTT(1) * SEGACT XMATR2 NBDDL = XMATR2.RE(/1) NLIGRP = NBDDL NLIGRD = NBDDL * SEGDES XMATR2 SEGINI MTRAV * * Activation du segment contenant les valeurs du MCHAML d'orientation * des normales par face pour la zone IMAIL * MCHAM1 = MCHEL1.ICHAML(IMAIL) SEGACT MCHAM1 MELVA1 = MCHAM1.IELVAL(1) SEGDES MCHAM1 SEGACT MELVA1 * *------------------------------------------------------- * BOUCLE SUR LES ELEMENTS DU MAILLAGE ELEMENTAIRE IMAIL *------------------------------------------------------- * DO 100 IEL=1,NBELEM ITELEM = ITELEM + 1 * *- calcul des flux de forces aux faces de l'element * DO 35 IDDL=1,NBDDL RLIGN1(IDDL)= 0.D0 IPOPTS = ICPR(NUM(IDDL,IEL)) DO 40 I=1,IDIM RLIGN1(IDDL) = RLIGN1(IDDL) + MPOVA2.VPOCHA(IPOPTS,I) * S MELVA1.VELCHE(IDDL,IEL) * MPOVA1.VPOCHA(ITELEM,I) * S MPOVA3.VPOCHA(IPOPTS,1) 40 CONTINUE 35 CONTINUE * *- Construction du tableau aux faces M.FORCE * * XMATR1 = IMATR1.IMATTT(IEL) * SEGACT XMATR1 DO 45 I=1,NBDDL RLIGN2(I)= 0.D0 DO 50 J=1,NBDDL RLIGN2(I)= RLIGN2(I) + XMATR1.RE(I,J,iel)*RLIGN1(J) 50 CONTINUE 45 CONTINUE * SEGDES XMATR1 * *- Construction du CHPOINT aux faces HYBTP.(M.FORCE) * * XMATR2 = IMATR2.IMATTT(IEL) * SEGACT XMATR2 DO 55 I=1,NBDDL IPOPTS = ICPR(NUM(I,IEL)) DO 60 J=1,NBDDL VPOCHA(IPOPTS,1)=VPOCHA(IPOPTS,1) + S XMATR2.RE(I,J,iel)*RLIGN2(J) 60 CONTINUE 55 CONTINUE * SEGDES XMATR2 100 CONTINUE SEGDES xMATR1 , xMATR2 SEGDES MELEME SEGDES MELVA1 SEGSUP MTRAV 110 CONTINUE * *- Desactivation des segments * SEGDES MCHEL1 SEGDES MPOVAL , MPOVA1 , MPOVA2 , MPOVA3 SEGDES IPMAHY SEGDES RI1 , RI2 SEGSUP ICCPR RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales