cfl5
C CFL5 SOURCE CB215821 17/11/30 21:15:25 9639 *---------------------------------------------------------------------* * * calcul du pas de temps CFL * * elements poutre,tuyau,barre,cerc,coque2,coque3,dkt * * * entree * icas : cas à traiter * = 1 calcul du pas de temps complet ivam1 avec cara * = 2 calcul du pas de temps lorsque cson est donne ivam2 * = 3 calcul du pas de temps lorsque la taille est donnée ivam1 si cara * = 4 calcul de la vitesse du son ivam1 donné * = 5 calcul du parametre de taille ivam1 si cara * * ipmail : pointeur vers le maillage a traiter * mele : numero de l'élément finis dans nomtp * ivam1 : pointeur vers mptval du cham1 actif * ivam2 : pointeur vers mptval du cham2 actif * n2 : nombre de composante en sortie * * sortie * melv1 : melval de la première composante du chamelem resultat * inactif en sortie * melv2 : melval de la deuxième composante du chamelem resultat * inactif en sortie * * *---------------------------------------------------------------------* IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) * DIMENSION V13(3),V12(3),V23(3) * -INC PPARAM -INC CCOPTIO -INC CCREEL -INC CCHAMP -INC SMCHAML -INC SMELEME -INC SMCOORD * * SEGMENT MPTVAL * ipos pointeur vers la sous zone du mchelm * nsof ?? INTEGER IPOS(NS) ,NSOF(NS) * ival pointeur vers le melval de la composante * =0 si il n'est pas présente * ncosou = nbrfac + nbrobl INTEGER IVAL(NCOSOU) * continent le type de composante CHARACTER*16 TYVAL(NCOSOU) ENDSEGMENT POINTEUR MPTVA1.MPTVAL,MPTVA2.MPTVAL * * * MPTVA1 = IVAM1 MPTVA2 = IVAM2 * * * branchement en fonction de l'élément fini * * 0 5 0 5 0 GOTO (99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99, 2 99,99,99,99,99,99,27,27,29,99,99,99,99,99,99,99,99,99,99,99, * bar 4 99,29,99,44,99,46,99,99,99,99,99,99,99,99,99,99,99,99,99,99, 6 99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99, 8 99,99,99,29,99,99,99,99,99,99,99,99,27,99,99,99,99,99,99,99, 1 99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99, 2 99,99,99,99,99,99,99),MELE * * cas de la poutre POUT (mince) et de TIMO (épaisse) * 29 CONTINUE * ================ calcul de la vitesse du son * le resultat est stocké dans melval avec n1ptel =1 IF (ICAS.EQ.1.OR.ICAS.EQ.3.OR.ICAS.EQ.4) THEN * recherche des paramètre matériau * module d'young MELVA3 = MPTVA1.IVAL(1) * densite MELVA4 = MPTVA1.IVAL(3) SEGACT MELVA3,MELVA4 * N1EL = MIN(MELVA3.VELCHE(/2),MELVA4.VELCHE(/2)) N1PTEL = 1 N2PTEL = 0 N2EL = 0 SEGINI MELVAL MCSON = MELVAL * boucle sur les éléments pour calculer la vitesse du son DO 2903 I=1,N1EL * on prend les valeurs moyennes sur les éléments YOU1 = 0.D0 I3 = MIN(I,MELVA3.VELCHE(/2)) DO 2901 J=1,MELVA3.VELCHE(/1) YOU1 = YOU1 + MELVA3.VELCHE(J,I3) 2901 CONTINUE YOU1 = YOU1 / MELVA3.VELCHE(/1) * RO1 = 0.D0 I4 = MIN(I,MELVA4.VELCHE(/2)) DO 2902 J=1,MELVA4.VELCHE(/1) RO1 = RO1 + MELVA4.VELCHE(J,I4) 2902 CONTINUE RO1 = RO1 / MELVA4.VELCHE(/1) IF (RO1.EQ.0.D0) THEN SEGDES MELVA4,MELVA3 SEGSUP MELVAL RETURN ENDIF * IF (YOU1.EQ.0.D0) THEN SEGDES MELVA4,MELVA3 SEGSUP MELVAL RETURN ENDIF VELCHE(1,I) = SQRT(YOU1/RO1) * write(6,*) 'Element', i , 'Cson' , VELCHE(1,i) 2903 CONTINUE SEGDES MELVA4,MELVA3 IF (ICAS.EQ.4) THEN * cas ou seule la vitesse du son est demandée MELV2 = 0 MELV1 = MELVAL SEGDES MELVAL RETURN ENDIF ELSE IF (ICAS.EQ.2) THEN * recuperation du champ * SEGACT MPTVA2 MELVA1 = MPTVA2.IVAL(1) SEGACT MELVA1 MCSON = MELVA1 SEGDES MPTVA2 ENDIF * ================ paramètre geometrique * stocké dans un melval mtaille IF (ICAS.EQ.1.OR.ICAS.EQ.2.OR.ICAS.EQ.5) THEN * on verifie que le champ de caractéristiques existe IF (IVAM1.EQ.0) THEN MOTERR(1:8)='CARACTER' RETURN ENDIF MELEME = IPMAIL SEGACT MELEME N1EL = NUM(/2) N1PTEL = 1 N2PTEL = 0 N2EL = 0 SEGINI MELVAL MTAIL1 = MELVAL SEGDES MELEME * second paramètre geométrique IOBL = 3 IF (ICAS.EQ.5 .OR. ICAS.EQ.2) IOBL = 0 SEGINI, MELVA2=MELVAL MTAIL2 = MELVA2 IF (MELE.EQ.29) THEN * récupération de la section des inerties et de la torsion * section MELVA3 = MPTVA1.IVAL(4+IOBL) * inertie z MELVA4 = MPTVA1.IVAL(3+IOBL) * inertie y MELVA5 = MPTVA1.IVAL(2+IOBL) * torsion MELVA6 = MPTVA1.IVAL(1+IOBL) SEGACT MELVA3,MELVA4,MELVA5,MELVA6 DO 2905 I=1,N1EL I3 = MIN(I,MELVA3.VELCHE(/2)) I4 = MIN(I,MELVA4.VELCHE(/2)) I5 = MIN(I,MELVA5.VELCHE(/2)) I6 = MIN(I,MELVA6.VELCHE(/2)) * remaarque les valeurs ne sont pas moyennées sur l'élément DUM1 = MELVA2.VELCHE(1,I)*MELVA2.VELCHE(1,I) DUM1 = DUM1 * MELVA3.VELCHE(1,I3) DUM1=DUM1/MAX(MELVA4.VELCHE(1,I4),MELVA5.VELCHE(1,I5), & MELVA6.VELCHE(1,I6)) DUM1=SQRT(DUM1) * 0.10132D0 MELVA2.VELCHE(1,I)=MELVA2.VELCHE(1,I) * DUM1 2905 CONTINUE SEGDES MELVA3,MELVA4,MELVA5,MELVA6 ELSEIF (MELE.EQ.84) THEN * récupération de la section des inerties et de la torsion * section MELVA3 = MPTVA1.IVAL(4+IOBL) * inertie z MELVA4 = MPTVA1.IVAL(3+IOBL) * inertie y MELVA5 = MPTVA1.IVAL(2+IOBL) * torsion MELVA6 = MPTVA1.IVAL(1+IOBL) SEGACT MELVA3,MELVA4,MELVA5,MELVA6 DO 8405 I=1,N1EL I3 = MIN(I,MELVA3.VELCHE(/2)) I4 = MIN(I,MELVA4.VELCHE(/2)) I5 = MIN(I,MELVA5.VELCHE(/2)) I6 = MIN(I,MELVA6.VELCHE(/2)) * remarque les valeurs ne sont pas moyennées sur l'élément DUM1 = MELVA2.VELCHE(1,I)*MELVA2.VELCHE(1,I) * 0.9 = 2**1.5 / XPI 0.7 coef de securite DUM2 = MELVA2.VELCHE(1,I)*0.9D0*0.7D0 DUM1 = DUM1 * MELVA3.VELCHE(1,I3) DUM1=DUM1/MAX(MELVA4.VELCHE(1,I4),MELVA5.VELCHE(1,I5), & MELVA6.VELCHE(1,I6)) DUM1=SQRT(DUM1) * 0.10132D0 * correction pour tenir compte du cisaillement Blevins page 175 eq 8.30 MELVA2.VELCHE(1,I)=MELVA2.VELCHE(1,I) * DUM1 + DUM2 8405 CONTINUE SEGDES MELVA3,MELVA4,MELVA5,MELVA6 ELSEIF(MELE.EQ.42) THEN * cas du tuyau * récupération des caractéristiques * epai MELVA3 = MPTVA1.IVAL(1+IOBL) * rayo MELVA4 = MPTVA1.IVAL(2+IOBL) * pour les autres on ne ient pas compte des modification * qui assouplissent le tuyau donc omega max diminue SEGACT MELVA3,MELVA4 DO 4205 I=1,N1EL I3 = MIN(I,MELVA3.VELCHE(/2)) I4 = MIN(I,MELVA4.VELCHE(/2)) REXT = MELVA4.VELCHE(1,I4) RINT = REXT - MELVA3.VELCHE(1,I3) * remarque les valeurs ne sont pas moyennées sur l'élément DUM1 = MELVA2.VELCHE(1,I)*MELVA2.VELCHE(1,I) DUM1 = DUM1 * 2.D0 / (REXT*REXT+RINT*RINT) DUM1=SQRT(DUM1) * 0.10132D0 MELVA2.VELCHE(1,I)=MELVA2.VELCHE(1,I) * DUM1 4205 CONTINUE SEGDES MELVA3,MELVA4 ENDIF IF (ICAS.EQ.5) THEN MELV1 = MTAIL1 MELV2 = MTAIL2 SEGDES MELVAL,MELVA2 RETURN ENDIF ELSE IF (ICAS.EQ.3) THEN * recuperation du champ * SEGACT MPTVA2 MELVA1 = MPTVA2.IVAL(1) MELVA2 = MPTVA2.IVAL(2) SEGACT MELVA1,MELVA2 MTAIL1 = MELVA1 MTAIL2 = MELVA2 SEGDES MPTVA2 ENDIF * ================ pas de temps cfl IF (ICAS.EQ.1.OR.ICAS.EQ.2.OR.ICAS.EQ.3) THEN * recuperation de la vitesse du son * et du paramètre de taille MELVA1 = MCSON MELVA2 = MTAIL1 MELVA3 = MTAIL2 * creation du melval résultat N1EL = MAX(MELVA1.VELCHE(/2),MELVA2.VELCHE(/2), & MELVA3.VELCHE(/2)) N1PTEL = 1 N2EL = 0 N2PTEL = 0 SEGINI MELVAL * DO 2904 I=1,N1EL I1 = MIN(I,MELVA1.VELCHE(/2)) I3 = MIN(I,MELVA3.VELCHE(/2)) VELCHE(1,I)= DUM1 / MELVA1.VELCHE(1,I1) * write(6,*) 'Element', i , 'Dtcfl' , VELCHE(1,i) 2904 CONTINUE MELV1 = MELVAL MELV2 = 0 SEGDES MELVAL IF (ICAS.EQ.1) THEN SEGSUP MELVA1,MELVA2,MELVA3 ELSE IF (ICAS.EQ.2) THEN SEGSUP MELVA2,MELVA3 SEGDES MELVA1 ELSE * icas=3 SEGSUP MELVA1 SEGDES MELVA2,MELVA3 ENDIF RETURN ENDIF * * * cas du coq2 * 44 CONTINUE * ================ calcul de la vitesse du son * le resultat est stocké dans melval avec n1ptel =1 IF (ICAS.EQ.1.OR.ICAS.EQ.3.OR.ICAS.EQ.4) THEN * recherche des paramètre matériau * module d'young MELVA3 = MPTVA1.IVAL(1) * densite MELVA4 = MPTVA1.IVAL(3) * nu MELVA5 = MPTVA1.IVAL(2) * SEGDES MPTVA1 SEGACT MELVA3,MELVA4,MELVA5 * N1EL = MIN(MELVA3.VELCHE(/2),MELVA4.VELCHE(/2), & MELVA5.VELCHE(/2)) N1PTEL = 1 N2PTEL = 0 N2EL = 0 SEGINI MELVAL MCSON = MELVAL * boucle sur les éléments pour calculer la vitesse du son DO 4404 I=1,N1EL * on prend les valeurs moyennes sur les éléments YOU1 = 0.D0 I3 = MIN(I,MELVA3.VELCHE(/2)) DO 4401 J=1,MELVA3.VELCHE(/1) YOU1 = YOU1 + MELVA3.VELCHE(J,I3) 4401 CONTINUE YOU1 = YOU1 / MELVA3.VELCHE(/1) * RO1 = 0.D0 I4 = MIN(I,MELVA4.VELCHE(/2)) DO 4402 J=1,MELVA4.VELCHE(/1) RO1 = RO1 + MELVA4.VELCHE(J,I4) 4402 CONTINUE RO1 = RO1 / MELVA4.VELCHE(/1) * DNU1 = 0.D0 I5 = MIN(I,MELVA5.VELCHE(/2)) DO 4403 J=1,MELVA5.VELCHE(/1) DNU1 = DNU1 + MELVA5.VELCHE(J,I5) 4403 CONTINUE DNU1 = DNU1 / MELVA5.VELCHE(/1) IF (RO1.EQ.0.D0) THEN SEGDES MELVA4,MELVA3,MELVA5 SEGSUP MELVAL RETURN ENDIF * IF (YOU1.EQ.0.D0) THEN SEGDES MELVA4,MELVA3,MELVA5 SEGSUP MELVAL RETURN ENDIF IF (DNU1.GE.1.D0) THEN SEGDES MELVA4,MELVA3,MELVA5 SEGSUP MELVAL RETURN ENDIF * VELCHE(1,I) = SQRT(YOU1/(RO1*(1-DNU1*DNU1))) * write(6,*) 'Element', i , 'Cson' , VELCHE(1,i) 4404 CONTINUE SEGDES MELVA4,MELVA3,MELVA5 IF (ICAS.EQ.4) THEN * cas ou seule la vitesse du son est demandée MELVA2 = 0 MELV1 = MELVAL SEGDES MELVAL RETURN ENDIF ELSE IF (ICAS.EQ.2) THEN * recuperation du champ MELVA1 = MPTVA2.IVAL(1) SEGACT MELVA1 MCSON = MELVA1 SEGDES MPTVA2 ENDIF * ================ paramètre geometrique * stocké dans un melval mtaille IF (ICAS.EQ.1.OR.ICAS.EQ.2.OR.ICAS.EQ.5) THEN MELEME = IPMAIL SEGACT MELEME N1EL = NUM(/2) N1PTEL = 1 N2PTEL = 0 N2EL = 0 SEGINI MELVAL MTAIL1 = MELVAL SEGDES MELEME * second paramètre geométrique IOBL = 3 IF (ICAS.EQ.5 .OR. ICAS.EQ.2) IOBL = 0 SEGINI, MELVA2=MELVAL MTAIL2 = MELVA2 * récupération de l' epaisseur MELVA3 = MPTVA1.IVAL(1+IOBL) SEGACT MELVA3 DO 4406 I=1,N1EL I3 = MIN(I,MELVA3.VELCHE(/2)) * remarque les valeurs ne sont pas moyennées sur l'élément DUM1 = MELVA2.VELCHE(1,I)*MELVA2.VELCHE(1,I) DUM1 = DUM1 / (3.23D0 * MELVA3.VELCHE(1,I3)) MELVA2.VELCHE(1,I)=DUM1 4406 CONTINUE SEGDES MELVA3 SEGDES MPTVA1 * IF (ICAS.EQ.5) THEN MELV1 = MTAIL1 MELV2 = MTAIL2 SEGDES MELVAL RETURN ENDIF ELSE IF (ICAS.EQ.3) THEN * recuperation du champ MELVA1 = MPTVA2.IVAL(1) MELVA2 = MPTVA2.IVAL(2) SEGACT MELVA1,MELVA2 MTAIL1 = MELVA1 MTAIL2 = MELVA2 SEGDES MPTVA2 ENDIF * ================ pas de temps cfl IF (ICAS.EQ.1.OR.ICAS.EQ.2.OR.ICAS.EQ.3) THEN * recuperation de la vitesse du son * et du paramètre de taille MELVA1 = MCSON MELVA2 = MTAIL1 MELVA3 = MTAIL2 * creation du melval résultat N1EL = MAX(MELVA1.VELCHE(/2),MELVA2.VELCHE(/2)) N1PTEL = 1 N2EL = 0 N2PTEL = 0 SEGINI MELVAL * DO 4405 I=1,N1EL I1 = MIN(I,MELVA1.VELCHE(/2)) I3 = MIN(I,MELVA3.VELCHE(/2)) VELCHE(1,I)=DUM1/MELVA1.VELCHE(1,I1) * write(6,*) 'Element', i , 'Dtcfl' , VELCHE(1,i) 4405 CONTINUE MELV1 = MELVAL MELV2 = 0 SEGDES MELVAL IF (ICAS.EQ.1) THEN SEGSUP MELVA1,MELVA2,MELVA3 ELSE IF (ICAS.EQ.2) THEN SEGSUP MELVA2,MELVA3 SEGDES MELVA1 ELSE SEGSUP MELVA1 SEGDES MELVA2,MELVA3 ENDIF RETURN ENDIF * * * * cas de la barre * 46 CONTINUE * ================ calcul de la vitesse du son * le resultat est stocké dans melval avec n1ptel =1 IF (ICAS.EQ.1.OR.ICAS.EQ.3.OR.ICAS.EQ.4) THEN * recherche des paramètre matériau * module d'young MELVA3 = MPTVA1.IVAL(1) * densite MELVA4 = MPTVA1.IVAL(3) SEGDES MPTVA1 SEGACT MELVA3,MELVA4 * N1EL = MIN(MELVA3.VELCHE(/2),MELVA4.VELCHE(/2)) N1PTEL = 1 N2PTEL = 0 N2EL = 0 SEGINI MELVAL MCSON = MELVAL * boucle sur les éléments pour calculer la vitesse du son DO 4603 I=1,N1EL * on prend les valeurs moyennes sur les éléments YOU1 = 0.D0 I3 = MIN(I,MELVA3.VELCHE(/2)) DO 4601 J=1,MELVA3.VELCHE(/1) YOU1 = YOU1 + MELVA3.VELCHE(J,I3) 4601 CONTINUE YOU1 = YOU1 / MELVA3.VELCHE(/1) * RO1 = 0.D0 I4 = MIN(I,MELVA4.VELCHE(/2)) DO 4602 J=1,MELVA4.VELCHE(/1) RO1 = RO1 + MELVA4.VELCHE(J,I4) 4602 CONTINUE RO1 = RO1 / MELVA4.VELCHE(/1) IF (RO1.EQ.0.D0) THEN SEGDES MELVA4,MELVA3 SEGSUP MELVAL RETURN ENDIF * IF (YOU1.EQ.0.D0) THEN SEGDES MELVA4,MELVA3 SEGSUP MELVAL RETURN ENDIF VELCHE(1,I) = SQRT(YOU1/RO1) * write(6,*) 'Element', i , 'Cson' , VELCHE(1,i) 4603 CONTINUE SEGDES MELVA4,MELVA3 IF (ICAS.EQ.4) THEN * cas ou seule la vitesse du son est demandée MELVA2 = 0 MELV1 = MELVAL SEGDES MELVAL RETURN ENDIF ELSE IF (ICAS.EQ.2) THEN * recuperation du champ MELVA1 = MPTVA2.IVAL(1) SEGACT MELVA1 MCSON = MELVA1 SEGDES MPTVA2 ENDIF * ================ paramètre geometrique * stocké dans un melval mtaille IF (ICAS.EQ.1.OR.ICAS.EQ.2.OR.ICAS.EQ.5) THEN MELEME = IPMAIL SEGACT MELEME N1EL = NUM(/2) N1PTEL = 1 N2PTEL = 0 N2EL = 0 SEGINI MELVAL MTAIL1 = MELVAL MTAIL2 = 0 SEGDES MELEME IF (ICAS.EQ.5) THEN MELV1 = MTAIL1 MELV2 = 0 SEGDES MELVAL RETURN ENDIF ELSE IF (ICAS.EQ.3) THEN * recuperation du champ MELVA1 = MPTVA2.IVAL(1) SEGACT MELVA1 MTAIL1 = MELVA1 SEGDES MPTVA2 ENDIF * ================ pas de temps cfl IF (ICAS.EQ.1.OR.ICAS.EQ.2.OR.ICAS.EQ.3) THEN * recuperation de la vitesse du son * et du paramètre de taille MELVA1 = MCSON MELVA2 = MTAIL1 * creation du melval résultat N1EL = MAX(MELVA1.VELCHE(/2),MELVA2.VELCHE(/2)) N1PTEL = 1 N2EL = 0 N2PTEL = 0 SEGINI MELVAL * DO 4604 I=1,N1EL I1 = MIN(I,MELVA1.VELCHE(/2)) * write(6,*) 'Element', i , 'Dtcfl' , VELCHE(1,i) 4604 CONTINUE MELV1 = MELVAL MELV2 = 0 SEGDES MELVAL IF (ICAS.EQ.1) THEN SEGSUP MELVA1,MELVA2 ELSE IF (ICAS.EQ.2) THEN SEGSUP MELVA2 SEGDES MELVA1 ELSE SEGSUP MELVA1 SEGDES MELVA2 ENDIF RETURN ENDIF * * * cas du coq3 et du dkt (meme avec excentrement) * Rq: dst aussi dans les cas simples * 27 CONTINUE * ================ calcul de la vitesse du son * le resultat est stocké dans melval avec n1ptel =1 IF (ICAS.EQ.1.OR.ICAS.EQ.3.OR.ICAS.EQ.4) THEN * recherche des paramètre matériau * module d'young MELVA3 = MPTVA1.IVAL(1) * densite MELVA4 = MPTVA1.IVAL(3) * nu MELVA5 = MPTVA1.IVAL(2) * SEGDES MPTVA1 SEGACT MELVA3,MELVA4,MELVA5 * N1EL = MIN(MELVA3.VELCHE(/2),MELVA4.VELCHE(/2), & MELVA5.VELCHE(/2)) N1PTEL = 1 N2PTEL = 0 N2EL = 0 SEGINI MELVAL MCSON = MELVAL * boucle sur les éléments pour calculer la vitesse du son DO 2704 I=1,N1EL * on prend les valeurs moyennes sur les éléments YOU1 = 0.D0 I3 = MIN(I,MELVA3.VELCHE(/2)) DO 2701 J=1,MELVA3.VELCHE(/1) YOU1 = YOU1 + MELVA3.VELCHE(J,I3) 2701 CONTINUE YOU1 = YOU1 / MELVA3.VELCHE(/1) * RO1 = 0.D0 I4 = MIN(I,MELVA4.VELCHE(/2)) DO 2702 J=1,MELVA4.VELCHE(/1) RO1 = RO1 + MELVA4.VELCHE(J,I4) 2702 CONTINUE RO1 = RO1 / MELVA4.VELCHE(/1) * DNU1 = 0.D0 I5 = MIN(I,MELVA5.VELCHE(/2)) DO 2703 J=1,MELVA5.VELCHE(/1) DNU1 = DNU1 + MELVA5.VELCHE(J,I5) 2703 CONTINUE DNU1 = DNU1 / MELVA5.VELCHE(/1) IF (RO1.EQ.0.D0) THEN SEGDES MELVA4,MELVA3,MELVA5 SEGSUP MELVAL RETURN ENDIF * IF (YOU1.EQ.0.D0) THEN SEGDES MELVA4,MELVA3,MELVA5 SEGSUP MELVAL RETURN ENDIF IF (DNU1.GE.1.D0) THEN SEGDES MELVA4,MELVA3,MELVA5 SEGSUP MELVAL RETURN ENDIF * VELCHE(1,I) = SQRT(YOU1/(RO1*(1-DNU1*DNU1))) * write(6,*) 'Element', i , 'Cson' , VELCHE(1,i) 2704 CONTINUE SEGDES MELVA4,MELVA3,MELVA5 IF (ICAS.EQ.4) THEN * cas ou seule la vitesse du son est demandée MELVA2 = 0 MELV1 = MELVAL SEGDES MELVAL RETURN ENDIF ELSE IF (ICAS.EQ.2) THEN * recuperation du champ MELVA1 = MPTVA2.IVAL(1) SEGACT MELVA1 MCSON = MELVA1 SEGDES MPTVA2 ENDIF * ================ paramètre geometrique * stocké dans un melval mtaille IF (ICAS.EQ.1.OR.ICAS.EQ.2.OR.ICAS.EQ.5) THEN MELEME = IPMAIL SEGACT MELEME N1EL = NUM(/2) N1PTEL = 1 N2PTEL = 0 N2EL = 0 SEGINI MELVAL MTAIL1 = MELVAL SEGDES MELEME * second paramètre geométrique IOBL = 3 IF (ICAS.EQ.5 .OR. ICAS.EQ.2) IOBL = 0 SEGINI, MELVA2=MELVAL MTAIL2 = MELVA2 * récupération de l' epaisseur MELVA3 = MPTVA1.IVAL(1+IOBL) SEGACT MELVA3 SEGACT MELEME DO 2706 I=1,N1EL I3 = MIN(I,MELVA3.VELCHE(/2)) * remarque les valeurs ne sont pas moyennées sur l'élément V12L = 0.D0 V13L = 0.D0 V23L = 0.D0 DO 2761 J=1,IDIM V13(J)=XCOOR((IDIM+1)*(NUM(3,I3)-1)+J)- & XCOOR((IDIM+1)*(NUM(1,I3)-1)+J) V12(J)=XCOOR((IDIM+1)*(NUM(2,I)-1)+J)- & XCOOR((IDIM+1)*(NUM(1,I)-1)+J) V23(J)=XCOOR((IDIM+1)*(NUM(3,I)-1)+J)- & XCOOR((IDIM+1)*(NUM(2,I)-1)+J) V12L = V12L + V12(J)*V12(J) V13L = V13L + V13(J)*V13(J) V23L = V23L + V23(J)*V23(J) 2761 CONTINUE D2min = 0.D0 D2max = 0.D0 Dmax = 0.D0 D2min = MIN(V12L,V13L,V23L) D2max = MAX(V12L,V13L,V23L) Dmax = SQRT(D2max) * write(6,*) 'D2min', D2min , 'D2max' , D2max, 'Dmax', Dmax * write(6,*) 'Element', i , 'L' , MELVA2.VELCHE(1,i) DUM1 = SQRT(D2min-MELVA2.VELCHE(1,I)*MELVA2.VELCHE(1,I)) DUM1 = DUM1 / Dmax - 0.5D0 DUM1 = 5.3706D0 * DUM1 * DUM1 DUM1 = 3.9402D0 - 0.8687D0*MELVA2.VELCHE(1,I)/Dmax - DUM1 DUM1 = Dmax / (XPI * MELVA3.VELCHE(1,I3) * DUM1) DUM1 = DUM1 * MELVA2.VELCHE(1,I) IF (MELE.EQ.28 .AND. MPTVA1.IVAL(2+IOBL).NE.0) THEN * récupération de l'excentricité MELVA4 = MPTVA1.IVAL(2+IOBL) SEGACT MELVA4 I4 = MIN(I,MELVA4.VELCHE(/2)) DUM1=DUM1/SQRT(1D0+12D0*MELVA4.VELCHE(1,I4)*MELVA4.VELCHE(1,I4) & /(MELVA3.VELCHE(1,I3)*MELVA3.VELCHE(1,I3))) * On applique un coefficient empirique de 1.5 qui tient compte des * différences de discrétisation par rapport au modèle non excentré DUM1 = DUM1 * 1.5D0 SEGDES MELVA4 ENDIF MELVA2.VELCHE(1,I)=DUM1 2706 CONTINUE SEGDES MELEME SEGDES MELVA3 SEGDES MPTVA1 * IF (ICAS.EQ.5) THEN MELV1 = MTAIL1 MELV2 = MTAIL2 SEGDES MELVAL RETURN ENDIF ELSE IF (ICAS.EQ.3) THEN * recuperation du champ MELVA1 = MPTVA2.IVAL(1) MELVA2 = MPTVA2.IVAL(2) SEGACT MELVA1,MELVA2 MTAIL1 = MELVA1 MTAIL2 = MELVA2 SEGDES MPTVA2 ENDIF * ================ pas de temps cfl IF (ICAS.EQ.1.OR.ICAS.EQ.2.OR.ICAS.EQ.3) THEN * recuperation de la vitesse du son * et du paramètre de taille MELVA1 = MCSON MELVA2 = MTAIL1 MELVA3 = MTAIL2 * creation du melval résultat N1EL = MAX(MELVA1.VELCHE(/2),MELVA2.VELCHE(/2)) N1PTEL = 1 N2EL = 0 N2PTEL = 0 SEGINI MELVAL * DO 2705 I=1,N1EL I1 = MIN(I,MELVA1.VELCHE(/2)) I3 = MIN(I,MELVA3.VELCHE(/2)) VELCHE(1,I)=DUM1/MELVA1.VELCHE(1,I1) * write(6,*) 'Element', i , 'Dtcfl' , VELCHE(1,i) 2705 CONTINUE MELV1 = MELVAL MELV2 = 0 SEGDES MELVAL IF (ICAS.EQ.1) THEN SEGSUP MELVA1,MELVA2,MELVA3 ELSE IF (ICAS.EQ.2) THEN SEGSUP MELVA2,MELVA3 SEGDES MELVA1 ELSE SEGSUP MELVA1 SEGDES MELVA2,MELVA3 ENDIF RETURN ENDIF * 99 CONTINUE MOTERR(1:4)=NOMTP(MELE) MOTERR(9:12)='CFL5' * RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales