flucoq
C FLUCOQ SOURCE OF166741 24/10/03 21:15:15 12022 C======================================================================= C= F L U C O Q = C= ----------- = C= = C= Fonction : = C= ---------- = C= Calcul des flux nodaux equivalents a une condition de FLUX IMPOSE = C= pour des elements de type COQUE = C= Sous-programme appele par FLUX2 (flux2.eso) = C= = C= Parametres : (E)=Entree (S)=Sortie = C= ------------ = C= IPMODE (E) Pointeur sur le segment MMODEL = C= IPGEOM (E) Objet MAILLAGE support de IPCHPO = C= IPCHPO (E) Pointeur sur le CHPOINT (ou le MCHAML) de flux = C= imposes aux noeuds de la structure = C= (champ variable ou constant) = C= NUMPOI (E) Vaut -1 si le flux impose est normal a la surface, = C= sinon pointeur sur un POINT correspondant a la = C= direction du flux (par rapport au repere global) = C= MOCOMP (E) Nom de la composante du champ de flux equivalents = C= MLMOTX (E) Pointeur MLMOTS de la liste des composantes de = C= IPCHPO associees aux 3 directions x,y,z. = C= IPFLUX (S) Pointeur sur le champ des flux nodaux equivalents = C= = C= Variables locales : = C= ------------------- = C= ITGEOM Pointeur sur un MAILLAGE elementaire COQUE = C= IPENVE Pointeur sur l'enveloppe d'un maillage COQUE = C= IPGEOM Pointeur sur un MAILLAGE elementaire du CHPOINT = C= IPOGEO Pointeur sur un MAILLAGE commun au CHPOINT et au COQUE = C= = C======================================================================= & IPFLUX) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC CCHAMP -INC CCREEL -INC SMCHAML -INC SMCHPOI -INC SMMODEL -INC SMELEME -INC SMCOORD -INC SMLMOTS CHARACTER*(*) NOMCQ PARAMETER (XUn=1.) DIMENSION IVAL(4) CHARACTER*(LOCOMP) IMOT1,IMOT2 C= Activation du MMODEL MMODEL=IPMODE NSOU=KMODEL(/1) C= Activation de MLMOTX si defini IF (MLMOTX.NE.0) THEN MLMOTS=MLMOTX SEGACT,MLMOTS ENDIF C BOUCLE SUR LES ZONES ELEMENTAIRES DU MODELE C ============================================= idimp1=IDIM+1 IRRT=0 IFOI=0 DO ISOU=1,NSOU IPCHEL=0 IMODEL=KMODEL(ISOU) ITGEOM=IMAMOD NEF=NEFMOD IPENVE=ITGEOM * ON RECUPERE LES MAILLAGES ELEMENTAIRES DE L'ENVELOPPE * APPUYES STRICTEMENT SUR LE CHPOINT DE FLUX * IL Y A DES MAILLAGES COMMUNS AU CHPOINT ET A L'ENVELOPPE IF (IRR.EQ.0) THEN IF (IERR.NE.0) GOTO 8 * ON DESIRE CONNAITRE LES CARACTERISTIQUES DE CES MAILLAGES IPT3=IPOGEO SEGACT,IPT3 NSOU3=IPT3.LISOUS(/1) IF (NSOU3.EQ.0) THEN NBN2=IPT3.NUM(/1) ENDIF * BOUCLE SUR LES ZONES DE CET OBJET GEOMETRIQUE DO IMAIL=1,MAX(1,NSOU3) IF (NSOU3.NE.0) THEN IPT2=IPT3.LISOUS(IMAIL) SEGACT,IPT2 IPOGEO=IPT2 NBN2=IPT2.NUM(/1) ENDIF * RECHERCHE DE LA FORMULATION DES (SUR)FACES * RECUPERATION DES CARACTERISTIQUES D'INTEGRATION * ECHEC DANS L'ACQUISITION DES CARACTERISTIQUES D'INTEGRATION IF (IERR.NE.0) GOTO 8 * ON GENERE UN CHAMELEM ELEMENTAIRE DE FLUX * A PARTIR DU MAILLAGE ELEMENTAIRE DE POINTEUR IPOGEO * ET DU CHPOINT if (IPCHPO.gt.0) then else *ou ET DU MCHAML ICHE = -1*IPCHPO endif MCHEL1=ICHELF IF (IERR.NE.0) GOTO 8 segact mchel1 MCHAM1=MCHEL1.ICHAML(1) IPFLOD=MCHAM1.IELVAL(1) ELSE C POUR CHAQUE ELEMENT, C ON DETERMINE UN VECTEUR DIRIGE VERS L INTERIEUR DU MASSIF C A PARTIR D UN POINT DE LA FACE ET DU CENTRE DE GRAVITE DU MASSIF C ON COPIE LE CHAMP EN AJOUTANT UNE COMPOSANTE IF (MLMOTX.EQ.0) THEN MOTERR(1:8)='LISTMOTS' RETURN ENDIF MLMOTS=MLMOTX SEGACT,MLMOTS IF (NINC.NE.IDIM) THEN GOTO 8 ENDIF MELVAL=MCHAM1.IELVAL(1) N1PTEL=VELCHE(/1) N1EL=VELCHE(/2) N2PTEL=0 N2EL=0 NBCOMP=IDIM SEGINI,MCHAML IPFLOD=MCHAML DO I=1,N2 SEGINI,MELVAL IELVAL(I)=MELVAL ENDDO DO I=1,NINC DO J=1,NINC IMOT2=MCHAM1.NOMCHE(J) IF (IMOT1.EQ.IMOT2) IVAL(I)=J ENDDO ENDDO SEGDES,MLMOTS MELVA1=MCHAM1.IELVAL(IVAL(I)) MELVAL=IELVAL(I) DO j=1,N1EL DO k=1,N1PTEL VELCHE(k,j)=MELVA1.VELCHE(k,j) ENDDO ENDDO ENDDO NBPTE1=N1PTEL NEL1=N1EL NUMPOI=1 MELEME=IPOGEO IPT1=ITGEOM NBMA1=NUM(/1) DO IEF=1,NUM(/2) DO IEM=1,IPT1.NUM(/2) JNE=0 DO INM=1,IPT1.NUM(/1) DO INF=1,NBMA1 IF (IPT1.NUM(INM,IEM).EQ.NUM(INF,IEF)) JNE=JNE+1 ENDDO ENDDO IF (JNE.EQ.NBMA1) GOTO 170 ENDDO DO j=1,N2 MELVAL=IELVAL(j) SEGSUP,MELVAL ENDDO SEGSUP,IPT3 GOTO 8 C CDG element de "volume" C CDG de la "face" C Calcul de la normale interieure (stocker dans MCHAML) 170 NBM=IPT1.NUM(/1) IF (IDIM.EQ.2) THEN XG=XZero YG=XZero DO INM=1,NBM IREFM=(IPT1.NUM(INM,IEM)-1)*idimp1 XG=XG+XCOOR(IREFM+1) YG=YG+XCOOR(IREFM+2) ENDDO XG=XG/NBM YG=YG/NBM XK=XZero YK=XZero DO INF=1,NBMA1 IREFF=(NUM(INF,IEF)-1)*idimp1 XK=XK+XCOOR(IREFF+1) YK=YK+XCOOR(IREFF+2) ENDDO XK=XK/NBMA1 YK=YK/NBMA1 V1=XG-XK V2=YG-YK VN=SQRT(V1*V1+V2*V2) V1=V1/VN V2=V2/VN DO INF=1,NBMA1 VELCHE(INF,IEF)=V1 VELCHE(INF,IEF)=V2 ENDDO ELSE IF (IDIM.EQ.3) THEN XG=XZero YG=XZero ZG=XZero DO INM=1,NBM IREFM=(IPT1.NUM(INM,IEM)-1)*idimp1 XG=XG+XCOOR(IREFM+1) YG=YG+XCOOR(IREFM+2) ZG=ZG+XCOOR(IREFM+3) ENDDO XG=XG/NBM YG=YG/NBM ZG=ZG/NBM XK=XZero YK=XZero ZK=XZero DO INF=1,NBMA1 IREFF=(NUM(INF,IEF)-1)*idimp1 XK=XK+XCOOR(IREFF+1) YK=YK+XCOOR(IREFF+2) ZK=ZK+XCOOR(IREFF+3) ENDDO XK=XK/NBMA1 YK=YK/NBMA1 ZK=ZK/NBMA1 V1=XG-XK V2=YG-YK V3=ZG-ZK VN=SQRT(V1*V1+V2*V2+V3*V3) V1=V1/VN V2=V2/VN V3=V3/VN DO INF=1,NBMA1 VELCHE(INF,IEF)=V1 VELCHE(INF,IEF)=V2 VELCHE(INF,IEF)=V3 ENDDO ELSE IF (IDIM.EQ.1) THEN XG=XZero DO INM=1,NBM IREFM=(IPT1.NUM(INM,IEM)-1)*idimp1 XG=XG+XCOOR(IREFM+1) ENDDO XG=XG/NBM XK=XZero DO INF=1,NBMA1 IREFF=(NUM(INF,IEF)-1)*idimp1 XK=XK+XCOOR(IREFF+1) ENDDO XK=XK/NBMA1 V1=XG-XK V1=V1/ABS(V1) DO INF=1,NBMA1 VELCHE(INF,IEF)=V1 ENDDO ENDIF ENDDO ENDIF * CHAMELEM ELEMENTAIRE DES FLUX NODAUX EQUIVALENTS L1=7 N1=1 N3=6 SEGINI,MCHELM IPCHEL=MCHELM TITCHE='CHALEUR' IFOCHE=IFOUR IMACHE(1)=IPOGEO INFCHE(1,6) = 1 N2=1 SEGINI,MCHAML ICHAML(1)=MCHAML NOMCHE(1)='FLUX' TYPCHE(1)='REAL*8' * CALCUL DES FLUX NODAUX EQUIVALENTS * FACES ASSOCIEES SEG2 OU SEG3 IF (NEFACE.EQ.2.OR.NEFACE.EQ.3) THEN * FACES ASSOCIEES TRI3,TRI6,QUA4 OU QUA8 ELSE IF (NEFACE.EQ. 4.OR.NEFACE.EQ.6.OR.NEFACE.EQ.8.OR. . NEFACE.EQ.10) THEN * FACES ASSOCIEES POI1 ELSE IF (NEFACE.EQ.45) THEN ENDIF IF (NUMPOI.EQ.1) THEN MCHAM2=IPFLOD DO i=1,MCHAM2.IELVAL(/1) MELVAL=MCHAM2.IELVAL(i) SEGSUP,MELVAL ENDDO SEGSUP,MCHAM2 ENDIF IF (IERR.NE.0) THEN SEGSUP,MCHAML,MCHELM GOTO 8 ENDIF IELVAL(1)=IPFLEQ * ON TRANSFORME LE CHAMELEM EN CHPOINT MCHPOI=IPCH1 DO i=1,IPCHP(/1) MSOUPO=IPCHP(i) NOCOMP(1)=nomcq ENDDO * ON REGROUPE,LE CAS ECHEANT,LES DIFFERENTS CHPOINTS IF ((ISOU-IRRT).GT.1.OR.IMAIL.GT.1) THEN IF (IRET.EQ.0) GOTO 8 C* CALL ECRCHA('GEOM') C* CALL ECRCHA('GEOM') IPFLUX=IRET ELSE IPFLUX=IPCH1 ENDIF ENDDO * ON N'A PAS TROUVE DE MAILLAGE COMMUN A CETTE PARTIE DE * L'ENVELOPPE ET DU CHPOINT ELSE IF (IRR.EQ.1) THEN IRRT=IRRT+1 ENDIF ENDDO * IL N'EXISTE PAS D'ELEMENTS COMMUNS AU CHPOINT DES FLUX NODAUX * ET A L'ENVELOPPE DU MASSIF 8 CONTINUE C RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales