klno
C KLNO SOURCE CB215821 24/04/12 21:16:32 11897 SUBROUTINE KLNO IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C************************************************************************* C Operateur KLNO C C Objet : transforme un CHAMPOINT CENTRE en un CHAMPOINT SOMMET C C SYNTAXE : CHPS = KLNO OBJM CHPC (MOTCLE (GRAD LIMI)); C C OBJM : Objet modèle 'Navier_Stokes' C : a la rigueur table DOMAINE C CHPC : CHAMPOINT CENTRE C CHPS : CHAMPOINT SOMMET C C************************************************************************* -INC SMELEME POINTEUR MELEMS.MELEME,MELEMC.MELEME,MELEP1.MELEME POINTEUR IGEOMB.MELEME -INC PPARAM -INC CCOPTIO -INC CCREEL -INC SMCOORD -INC CCGEOME -INC SMMODEL -INC SMCHPOI POINTEUR IZB.MCHPOI,IZBB.MPOVAL POINTEUR IZD.MCHPOI,IZDD.MPOVAL -INC SMLENTI POINTEUR IZIPAP.MLENTI,IZIPAD.MLENTI -INC SIZFFB POINTEUR IZF1.IZFFM DIMENSION ITABO(4) integer IP CHARACTER*8 TYPE,TYPC,NOM0,TYPSPG, CHAI CHARACTER*8 LISMO(5) DATA LISMO/'CENTRE ','CENTREP0','CENTREP1','MSOMMET','VOLUMF '/ IP=0 SEGACT MCOORD C*********************************************************************** C**** Case VF ********************************************************** C*********************************************************************** IF(IERR.NE.0)GOTO 9999 IF(TYPE .EQ. 'MOT ')THEN IF(IERR.NE.0)GOTO 9999 IF(CHAI.EQ. 'VF ')THEN C C CHPOINT to project C IF(IERR.NE.0)GOTO 9999 SEGACT IZB IF(IZB.IPCHP(/1).NE.1) THEN C Erreur dans le partitionnement GOTO 9999 ENDIF C C Domain table C IF(IERR.NE.0)GOTO 9999 C C Gradient C IF(IERR.NE.0)GOTO 9999 C C Limiter C IF(IERR.NE.0)GOTO 9999 C C Computation C IF(IERR.NE.0)GOTO 9999 C C We write the result C GOTO 9999 ELSE C C******* I apologize myself and I give back the mot C CALL REFUS ENDIF ENDIF C*********************************************************************** C**** End of the case VF *********************************************** C*********************************************************************** C IAXI=0 IF(IFOMOD.EQ.0)IAXI=2 IF(IRET.EQ.0)THEN TYPSPG='CENTRE' ELSE CALL REFUS IF(IP.EQ.0)RETURN TYPSPG=LISMO(IP) ENDIF IF(TYPSPG.EQ.'VOLUMF')GO TO 51 IF(IRETOU.EQ.0)RETURN * * Verification du CHPOINT * SEGACT IZB IF(IZB.IPCHP(/1).NE.1)THEN C% Erreur dans le partitionnement RETURN ENDIF IF(IRET.EQ.1)THEN * * Verification de l'objet modele 'Navier-Stokes' * C*** N1=KMODEL(/1) DO 41 L=1,N1 IMODEL=KMODEL(L) IF(FORMOD(1).NE.'NAVIER_STOKES')THEN IF(FORMOD(1).NE.'DARCY')THEN C% On veut un modèle de type %m1:16 . MOTERR( 1:16) = 'NAVIER_STOKES ' RETURN ENDIF ENDIF 41 CONTINUE C INEFMD=1 LINE =2 MACRO =3 QUADRATIQUE =4 LINB ELSE IF(IRET.EQ.0)RETURN ENDIF C------------------ Traitement du cas VOLUMF ---------------------------- 51 CONTINUE IF (IP .EQ. 5) THEN IF(IRETOU.EQ.0) THEN C% Information manquante (objet CHPOINT) : pas de définition de la densité RETURN ENDIF IF(IRETOU.EQ.0) THEN C% Information manquante (objet CHPOINT) : pas de définition de la densité RETURN ENDIF GOTO 360 ENDIF C------------------ Traitement des cas CENTRE CENTREP0 CENTREP1 --------- 52 CONTINUE C DEUPI=1.D0 IF(IAXI.NE.0)DEUPI=2.D0*XPI NC=IZBB.VPOCHA(/2) N=IZBB.VPOCHA(/1) SEGINI MPOVA3 SEGACT IGEOMB IF (IERR.NE.0) RETURN IF(IRET.NE.0)THEN C Indice %m1:8 : L'objet %m9:16 n'a pas le bon support géométrique MOTERR(1: 8) = TYPSPG MOTERR(9:16) = 'CHPOINT ' RETURN ENDIF TYPE='SOMMET' C------------ Cas MSOMMET ------------------------------------------------ C------------ Cas MSOMMET ------------------------------------------------ IF(TYPSPG.EQ.'MSOMMET')THEN IF(INEFMD.EQ.2)THEN ENDIF IF(IRET.NE.0)THEN C Indice %m1:8 : L'objet %m9:16 n'a pas le bon support géométrique MOTERR(1: 8) = TYPSPG MOTERR(9:16) = 'CHPOINT ' RETURN ENDIF C On place les valeurs aux sommets de l'élément DO 741 I=1,N DO 741 M=1,NC iu = IZIPAD.LECT(MELEMC.NUM(1,I)) VPOCHA(iu,M)=IZBB.VPOCHA(I,M) 741 CONTINUE IF(INEFMD.EQ.1)GO TO 790 SEGACT MELEME NBSOUS=LISOUS(/1) DO 742 L=1,(MAX(1,NBSOUS)) IPT1=MELEME IF(NBSOUS.NE.0)IPT1=LISOUS(L) SEGACT IPT1 NBELEM =IPT1.NUM(/2) NBNN =IPT1.NUM(/1) IF(IPT1.ITYPEL.EQ.6)THEN C write(6,*)' TRI6' DO 643 K=1,NBELEM iu1 = IZIPAD.LECT(IPT1.NUM(1,K)) iu2 = IZIPAD.LECT(IPT1.NUM(2,K)) iu3 = IZIPAD.LECT(IPT1.NUM(3,K)) iu4 = IZIPAD.LECT(IPT1.NUM(4,K)) iu5 = IZIPAD.LECT(IPT1.NUM(5,K)) iu6 = IZIPAD.LECT(IPT1.NUM(6,K)) DO 645 M=1,NC VPOCHA(iu2,M)=(VPOCHA(iu1,M)+VPOCHA(iu3,M))*0.5 VPOCHA(iu4,M)=(VPOCHA(iu3,M)+VPOCHA(iu5,M))*0.5 VPOCHA(iu6,M)=(VPOCHA(iu5,M)+VPOCHA(iu1,M))*0.5 645 CONTINUE 643 CONTINUE ELSEIF(IPT1.ITYPEL.EQ.7)THEN C write(6,*)' TRI7' DO 743 K=1,NBELEM iu1 = IZIPAD.LECT(IPT1.NUM(1,K)) iu2 = IZIPAD.LECT(IPT1.NUM(2,K)) iu3 = IZIPAD.LECT(IPT1.NUM(3,K)) iu4 = IZIPAD.LECT(IPT1.NUM(4,K)) iu5 = IZIPAD.LECT(IPT1.NUM(5,K)) iu6 = IZIPAD.LECT(IPT1.NUM(6,K)) iu7 = IZIPAD.LECT(IPT1.NUM(7,K)) DO 745 M=1,NC VPOCHA(iu2,M)=(VPOCHA(iu1,M)+VPOCHA(iu3,M))*0.5 VPOCHA(iu4,M)=(VPOCHA(iu3,M)+VPOCHA(iu5,M))*0.5 VPOCHA(iu6,M)=(VPOCHA(iu5,M)+VPOCHA(iu1,M))*0.5 VPOCHA(iu7,M)=(VPOCHA(iu1,M)+VPOCHA(iu3,M)+VPOCHA(iu5,M))/3.D0 745 CONTINUE 743 CONTINUE ELSEIF(IPT1.ITYPEL.EQ.11)THEN C write(6,*)' QUA9' DO 943 K=1,NBELEM iu1 = IZIPAD.LECT(IPT1.NUM(1,K)) iu2 = IZIPAD.LECT(IPT1.NUM(2,K)) iu3 = IZIPAD.LECT(IPT1.NUM(3,K)) iu4 = IZIPAD.LECT(IPT1.NUM(4,K)) iu5 = IZIPAD.LECT(IPT1.NUM(5,K)) iu6 = IZIPAD.LECT(IPT1.NUM(6,K)) iu7 = IZIPAD.LECT(IPT1.NUM(7,K)) iu8 = IZIPAD.LECT(IPT1.NUM(8,K)) iu9 = IZIPAD.LECT(IPT1.NUM(9,K)) DO 945 M=1,NC VPOCHA(iu2,M)=(VPOCHA(iu1,M)+VPOCHA(iu3,M))*0.5 VPOCHA(iu4,M)=(VPOCHA(iu3,M)+VPOCHA(iu5,M))*0.5 VPOCHA(iu6,M)=(VPOCHA(iu5,M)+VPOCHA(iu7,M))*0.5 VPOCHA(iu8,M)=(VPOCHA(iu7,M)+VPOCHA(iu1,M))*0.5 VPOCHA(iu9,M)=(VPOCHA(iu1,M)+VPOCHA(iu3,M)+VPOCHA(iu5,M)+ & VPOCHA(iu7,M))/4.D0 945 CONTINUE 943 CONTINUE ELSEIF(IPT1.ITYPEL.EQ.33)THEN C write(6,*)' CU27' DO 2743 K=1,NBELEM iu1 = IZIPAD.LECT(IPT1.NUM(1,K)) iu2 = IZIPAD.LECT(IPT1.NUM(2,K)) iu3 = IZIPAD.LECT(IPT1.NUM(3,K)) iu4 = IZIPAD.LECT(IPT1.NUM(4,K)) iu5 = IZIPAD.LECT(IPT1.NUM(5,K)) iu6 = IZIPAD.LECT(IPT1.NUM(6,K)) iu7 = IZIPAD.LECT(IPT1.NUM(7,K)) iu8 = IZIPAD.LECT(IPT1.NUM(8,K)) iu9 = IZIPAD.LECT(IPT1.NUM(9,K)) iu10= IZIPAD.LECT(IPT1.NUM(10,K)) iu11= IZIPAD.LECT(IPT1.NUM(11,K)) iu12= IZIPAD.LECT(IPT1.NUM(12,K)) iu13= IZIPAD.LECT(IPT1.NUM(13,K)) iu14= IZIPAD.LECT(IPT1.NUM(14,K)) iu15= IZIPAD.LECT(IPT1.NUM(15,K)) iu16= IZIPAD.LECT(IPT1.NUM(16,K)) iu17= IZIPAD.LECT(IPT1.NUM(17,K)) iu18= IZIPAD.LECT(IPT1.NUM(18,K)) iu19= IZIPAD.LECT(IPT1.NUM(19,K)) iu20= IZIPAD.LECT(IPT1.NUM(20,K)) iu21= IZIPAD.LECT(IPT1.NUM(21,K)) iu22= IZIPAD.LECT(IPT1.NUM(22,K)) iu23= IZIPAD.LECT(IPT1.NUM(23,K)) iu24= IZIPAD.LECT(IPT1.NUM(24,K)) iu25= IZIPAD.LECT(IPT1.NUM(25,K)) iu26= IZIPAD.LECT(IPT1.NUM(26,K)) iu27= IZIPAD.LECT(IPT1.NUM(27,K)) DO 2745 M=1,NC VPOCHA(iu2,M)=(VPOCHA(iu1,M)+VPOCHA(iu3,M))*0.5 VPOCHA(iu4,M)=(VPOCHA(iu3,M)+VPOCHA(iu5,M))*0.5 VPOCHA(iu6,M)=(VPOCHA(iu5,M)+VPOCHA(iu7,M))*0.5 VPOCHA(iu8,M)=(VPOCHA(iu7,M)+VPOCHA(iu1,M))*0.5 VPOCHA(iu25,M)=(VPOCHA(iu1,M)+VPOCHA(iu3,M)+VPOCHA(iu5,M)+ & VPOCHA(iu7,M))/4.D0 VPOCHA(iu14,M)=(VPOCHA(iu13,M)+VPOCHA(iu15,M))*0.5 VPOCHA(iu16,M)=(VPOCHA(iu15,M)+VPOCHA(iu17,M))*0.5 VPOCHA(iu18,M)=(VPOCHA(iu17,M)+VPOCHA(iu19,M))*0.5 VPOCHA(iu20,M)=(VPOCHA(iu19,M)+VPOCHA(iu13,M))*0.5 VPOCHA(iu26,M)=(VPOCHA(iu13,M)+VPOCHA(iu15,M)+VPOCHA(iu17,M)+ & VPOCHA(iu19,M))/4.D0 VPOCHA(iu9 ,M)=(VPOCHA(iu1,M)+VPOCHA(iu13,M))*0.5 VPOCHA(iu10,M)=(VPOCHA(iu3,M)+VPOCHA(iu15,M))*0.5 VPOCHA(iu11,M)=(VPOCHA(iu5,M)+VPOCHA(iu17,M))*0.5 VPOCHA(iu12,M)=(VPOCHA(iu7,M)+VPOCHA(iu19,M))*0.5 VPOCHA(iu21,M)=(VPOCHA(iu1,M)+VPOCHA(iu3,M)+VPOCHA(iu15,M)+ & VPOCHA(iu13,M))/4.D0 VPOCHA(iu22,M)=(VPOCHA(iu3,M)+VPOCHA(iu5,M)+VPOCHA(iu17,M)+ & VPOCHA(iu15,M))/4.D0 VPOCHA(iu23,M)=(VPOCHA(iu5,M)+VPOCHA(iu7,M)+VPOCHA(iu17,M)+ & VPOCHA(iu19,M))/4.D0 VPOCHA(iu24,M)=(VPOCHA(iu1 ,M)+VPOCHA(iu7,M)+VPOCHA(iu19,M)+ & VPOCHA(iu13,M))/4.D0 VPOCHA(iu27,M)=(VPOCHA(iu1,M)+VPOCHA(iu3,M)+VPOCHA(iu5,M)+ &VPOCHA(iu7,M)+VPOCHA(iu13,M)+VPOCHA(iu15,M)+VPOCHA(iu17,M)+ & VPOCHA(iu19,M))/8.D0 2745 CONTINUE 2743 CONTINUE ELSEIF(IPT1.ITYPEL.EQ.34)THEN C write(6,*)' PR21' DO 2143 K=1,NBELEM iu1 = IZIPAD.LECT(IPT1.NUM(1,K)) iu2 = IZIPAD.LECT(IPT1.NUM(2,K)) iu3 = IZIPAD.LECT(IPT1.NUM(3,K)) iu4 = IZIPAD.LECT(IPT1.NUM(4,K)) iu5 = IZIPAD.LECT(IPT1.NUM(5,K)) iu6 = IZIPAD.LECT(IPT1.NUM(6,K)) iu7 = IZIPAD.LECT(IPT1.NUM(7,K)) iu8 = IZIPAD.LECT(IPT1.NUM(8,K)) iu9 = IZIPAD.LECT(IPT1.NUM(9,K)) iu10= IZIPAD.LECT(IPT1.NUM(10,K)) iu11= IZIPAD.LECT(IPT1.NUM(11,K)) iu12= IZIPAD.LECT(IPT1.NUM(12,K)) iu13= IZIPAD.LECT(IPT1.NUM(13,K)) iu14= IZIPAD.LECT(IPT1.NUM(14,K)) iu15= IZIPAD.LECT(IPT1.NUM(15,K)) iu16= IZIPAD.LECT(IPT1.NUM(16,K)) iu17= IZIPAD.LECT(IPT1.NUM(17,K)) iu18= IZIPAD.LECT(IPT1.NUM(18,K)) iu19= IZIPAD.LECT(IPT1.NUM(19,K)) iu20= IZIPAD.LECT(IPT1.NUM(20,K)) iu21= IZIPAD.LECT(IPT1.NUM(21,K)) DO 2145 M=1,NC VPOCHA(iu2,M)=(VPOCHA(iu1,M)+VPOCHA(iu3,M))*0.5 VPOCHA(iu4,M)=(VPOCHA(iu3,M)+VPOCHA(iu5,M))*0.5 VPOCHA(iu6,M)=(VPOCHA(iu5,M)+VPOCHA(iu1,M))*0.5 VPOCHA(iu19,M)=(VPOCHA(iu1,M)+VPOCHA(iu3,M)+VPOCHA(iu5,M))/3.D0 VPOCHA(iu11,M)=(VPOCHA(iu10,M)+VPOCHA(iu12,M))*0.5 VPOCHA(iu13,M)=(VPOCHA(iu12,M)+VPOCHA(iu14,M))*0.5 VPOCHA(iu15,M)=(VPOCHA(iu14,M)+VPOCHA(iu10,M))*0.5 VPOCHA(iu20,M)=(VPOCHA(iu10,M)+VPOCHA(iu12,M)+VPOCHA(iu14,M))/3.D0 VPOCHA(iu7 ,M)=(VPOCHA(iu1,M)+VPOCHA(iu10,M))*0.5 VPOCHA(iu8 ,M)=(VPOCHA(iu3,M)+VPOCHA(iu12,M))*0.5 VPOCHA(iu9 ,M)=(VPOCHA(iu5,M)+VPOCHA(iu14,M))*0.5 VPOCHA(iu16,M)=(VPOCHA(iu1,M)+VPOCHA(iu3,M)+VPOCHA(iu12,M)+ & VPOCHA(iu10,M))/4.D0 VPOCHA(iu17,M)=(VPOCHA(iu3,M)+VPOCHA(iu5,M)+VPOCHA(iu12,M)+ & VPOCHA(iu14,M))/4.D0 VPOCHA(iu18,M)=(VPOCHA(iu5,M)+VPOCHA(iu1,M)+VPOCHA(iu14,M)+ & VPOCHA(iu10,M))/4.D0 VPOCHA(iu21,M)=(VPOCHA(iu1,M)+VPOCHA(iu3,M)+VPOCHA(iu5,M)+ & VPOCHA(iu10,M)+VPOCHA(iu12,M)+VPOCHA(iu14,M))/6.D0 2145 CONTINUE 2143 CONTINUE ELSEIF(IPT1.ITYPEL.EQ.40)THEN C write(6,*)' PR18' DO 1843 K=1,NBELEM iu1 = IZIPAD.LECT(IPT1.NUM(1,K)) iu2 = IZIPAD.LECT(IPT1.NUM(2,K)) iu3 = IZIPAD.LECT(IPT1.NUM(3,K)) iu4 = IZIPAD.LECT(IPT1.NUM(4,K)) iu5 = IZIPAD.LECT(IPT1.NUM(5,K)) iu6 = IZIPAD.LECT(IPT1.NUM(6,K)) iu7 = IZIPAD.LECT(IPT1.NUM(7,K)) iu8 = IZIPAD.LECT(IPT1.NUM(8,K)) iu9 = IZIPAD.LECT(IPT1.NUM(9,K)) iu10= IZIPAD.LECT(IPT1.NUM(10,K)) iu11= IZIPAD.LECT(IPT1.NUM(11,K)) iu12= IZIPAD.LECT(IPT1.NUM(12,K)) iu13= IZIPAD.LECT(IPT1.NUM(13,K)) iu14= IZIPAD.LECT(IPT1.NUM(14,K)) iu15= IZIPAD.LECT(IPT1.NUM(15,K)) iu16= IZIPAD.LECT(IPT1.NUM(16,K)) iu17= IZIPAD.LECT(IPT1.NUM(17,K)) iu18= IZIPAD.LECT(IPT1.NUM(18,K)) DO 1845 M=1,NC VPOCHA(iu2,M)=(VPOCHA(iu1,M)+VPOCHA(iu3,M))*0.5 VPOCHA(iu4,M)=(VPOCHA(iu3,M)+VPOCHA(iu5,M))*0.5 VPOCHA(iu6,M)=(VPOCHA(iu5,M)+VPOCHA(iu1,M))*0.5 VPOCHA(iu11,M)=(VPOCHA(iu10,M)+VPOCHA(iu12,M))*0.5 VPOCHA(iu13,M)=(VPOCHA(iu12,M)+VPOCHA(iu14,M))*0.5 VPOCHA(iu15,M)=(VPOCHA(iu14,M)+VPOCHA(iu10,M))*0.5 VPOCHA(iu7 ,M)=(VPOCHA(iu1,M)+VPOCHA(iu10,M))*0.5 VPOCHA(iu8 ,M)=(VPOCHA(iu3,M)+VPOCHA(iu12,M))*0.5 VPOCHA(iu9 ,M)=(VPOCHA(iu5,M)+VPOCHA(iu14,M))*0.5 VPOCHA(iu16,M)=(VPOCHA(iu1,M)+VPOCHA(iu3,M)+VPOCHA(iu12,M)+ & VPOCHA(iu10,M))/4.D0 VPOCHA(iu17,M)=(VPOCHA(iu3,M)+VPOCHA(iu5,M)+VPOCHA(iu12,M)+ & VPOCHA(iu14,M))/4.D0 VPOCHA(iu18,M)=(VPOCHA(iu5,M)+VPOCHA(iu1,M)+VPOCHA(iu14,M)+ & VPOCHA(iu10,M))/4.D0 1845 CONTINUE 1843 CONTINUE ELSEIF(IPT1.ITYPEL.EQ.35)THEN C write(6,*)' TE15' DO 1543 K=1,NBELEM iu1 = IZIPAD.LECT(IPT1.NUM(1,K)) iu2 = IZIPAD.LECT(IPT1.NUM(2,K)) iu3 = IZIPAD.LECT(IPT1.NUM(3,K)) iu4 = IZIPAD.LECT(IPT1.NUM(4,K)) iu5 = IZIPAD.LECT(IPT1.NUM(5,K)) iu6 = IZIPAD.LECT(IPT1.NUM(6,K)) iu7 = IZIPAD.LECT(IPT1.NUM(7,K)) iu8 = IZIPAD.LECT(IPT1.NUM(8,K)) iu9 = IZIPAD.LECT(IPT1.NUM(9,K)) iu10= IZIPAD.LECT(IPT1.NUM(10,K)) iu11= IZIPAD.LECT(IPT1.NUM(11,K)) iu12= IZIPAD.LECT(IPT1.NUM(12,K)) iu13= IZIPAD.LECT(IPT1.NUM(13,K)) iu14= IZIPAD.LECT(IPT1.NUM(14,K)) iu15= IZIPAD.LECT(IPT1.NUM(15,K)) DO 1545 M=1,NC VPOCHA(iu2,M)=(VPOCHA(iu1,M)+VPOCHA(iu3,M))*0.5 VPOCHA(iu4,M)=(VPOCHA(iu3,M)+VPOCHA(iu5,M))*0.5 VPOCHA(iu6,M)=(VPOCHA(iu5,M)+VPOCHA(iu1,M))*0.5 VPOCHA(iu11,M)=(VPOCHA(iu1,M)+VPOCHA(iu3,M)+VPOCHA(iu5,M))/3.D0 VPOCHA(iu7 ,M)=(VPOCHA(iu1,M)+VPOCHA(iu10,M))*0.5 VPOCHA(iu8 ,M)=(VPOCHA(iu3,M)+VPOCHA(iu10,M))*0.5 VPOCHA(iu9 ,M)=(VPOCHA(iu5,M)+VPOCHA(iu10,M))*0.5 VPOCHA(iu12,M)=(VPOCHA(iu1,M)+VPOCHA(iu3,M)+VPOCHA(iu10,M))/3.D0 VPOCHA(iu13,M)=(VPOCHA(iu3,M)+VPOCHA(iu5,M)+VPOCHA(iu10,M))/3.D0 VPOCHA(iu14,M)=(VPOCHA(iu5,M)+VPOCHA(iu1,M)+VPOCHA(iu10,M))/3.D0 VPOCHA(iu15,M)=(VPOCHA(iu1,M)+VPOCHA(iu3,M)+VPOCHA(iu5,M)+ & VPOCHA(iu10,M))/4.D0 1545 CONTINUE 1543 CONTINUE ELSEIF(IPT1.ITYPEL.EQ.24)THEN C write(6,*)' TE10' DO 1043 K=1,NBELEM iu1 = IZIPAD.LECT(IPT1.NUM(1,K)) iu2 = IZIPAD.LECT(IPT1.NUM(2,K)) iu3 = IZIPAD.LECT(IPT1.NUM(3,K)) iu4 = IZIPAD.LECT(IPT1.NUM(4,K)) iu5 = IZIPAD.LECT(IPT1.NUM(5,K)) iu6 = IZIPAD.LECT(IPT1.NUM(6,K)) iu7 = IZIPAD.LECT(IPT1.NUM(7,K)) iu8 = IZIPAD.LECT(IPT1.NUM(8,K)) iu9 = IZIPAD.LECT(IPT1.NUM(9,K)) iu10= IZIPAD.LECT(IPT1.NUM(10,K)) DO 1045 M=1,NC VPOCHA(iu2,M)=(VPOCHA(iu1,M)+VPOCHA(iu3,M))*0.5 VPOCHA(iu4,M)=(VPOCHA(iu3,M)+VPOCHA(iu5,M))*0.5 VPOCHA(iu6,M)=(VPOCHA(iu5,M)+VPOCHA(iu1,M))*0.5 VPOCHA(iu7 ,M)=(VPOCHA(iu1,M)+VPOCHA(iu10,M))*0.5 VPOCHA(iu8 ,M)=(VPOCHA(iu3,M)+VPOCHA(iu10,M))*0.5 VPOCHA(iu9 ,M)=(VPOCHA(iu5,M)+VPOCHA(iu10,M))*0.5 1045 CONTINUE 1043 CONTINUE ELSEIF(IPT1.ITYPEL.EQ.36)THEN C write(6,*)' PY19' DO 1943 K=1,NBELEM iu1 = IZIPAD.LECT(IPT1.NUM(1,K)) iu2 = IZIPAD.LECT(IPT1.NUM(2,K)) iu3 = IZIPAD.LECT(IPT1.NUM(3,K)) iu4 = IZIPAD.LECT(IPT1.NUM(4,K)) iu5 = IZIPAD.LECT(IPT1.NUM(5,K)) iu6 = IZIPAD.LECT(IPT1.NUM(6,K)) iu7 = IZIPAD.LECT(IPT1.NUM(7,K)) iu8 = IZIPAD.LECT(IPT1.NUM(8,K)) iu9 = IZIPAD.LECT(IPT1.NUM(9,K)) iu10= IZIPAD.LECT(IPT1.NUM(10,K)) iu11= IZIPAD.LECT(IPT1.NUM(11,K)) iu12= IZIPAD.LECT(IPT1.NUM(12,K)) iu13= IZIPAD.LECT(IPT1.NUM(13,K)) iu14= IZIPAD.LECT(IPT1.NUM(14,K)) iu15= IZIPAD.LECT(IPT1.NUM(15,K)) iu16= IZIPAD.LECT(IPT1.NUM(16,K)) iu17= IZIPAD.LECT(IPT1.NUM(17,K)) iu18= IZIPAD.LECT(IPT1.NUM(18,K)) iu19= IZIPAD.LECT(IPT1.NUM(19,K)) DO 1945 M=1,NC VPOCHA(iu2,M)=(VPOCHA(iu1,M)+VPOCHA(iu3,M))*0.5 VPOCHA(iu4,M)=(VPOCHA(iu3,M)+VPOCHA(iu5,M))*0.5 VPOCHA(iu6,M)=(VPOCHA(iu5,M)+VPOCHA(iu7,M))*0.5 VPOCHA(iu8,M)=(VPOCHA(iu7,M)+VPOCHA(iu1,M))*0.5 VPOCHA(iu14,M)=(VPOCHA(iu1,M)+VPOCHA(iu3,M)+VPOCHA(iu5,M)+ & VPOCHA(iu7,M))/4.D0 VPOCHA(iu9 ,M)=(VPOCHA(iu1,M)+VPOCHA(iu13,M))*0.5 VPOCHA(iu10,M)=(VPOCHA(iu3,M)+VPOCHA(iu13,M))*0.5 VPOCHA(iu11,M)=(VPOCHA(iu5,M)+VPOCHA(iu13,M))*0.5 VPOCHA(iu12,M)=(VPOCHA(iu7,M)+VPOCHA(iu13,M))*0.5 VPOCHA(iu15,M)=(VPOCHA(iu1,M)+VPOCHA(iu3,M)+VPOCHA(iu13,M))/3.D0 VPOCHA(iu16,M)=(VPOCHA(iu3,M)+VPOCHA(iu5,M)+VPOCHA(iu13,M))/3.D0 VPOCHA(iu17,M)=(VPOCHA(iu7,M)+VPOCHA(iu5,M)+VPOCHA(iu13,M))/3.D0 VPOCHA(iu18,M)=(VPOCHA(iu7,M)+VPOCHA(iu1,M)+VPOCHA(iu13,M))/3.D0 VPOCHA(iu19,M)=(VPOCHA(iu1,M)+VPOCHA(iu3,M)+VPOCHA(iu5,M)+ & VPOCHA(iu7,M)+VPOCHA(iu13,M))/5.D0 1945 CONTINUE 1943 CONTINUE ELSE write(6,*)' KLNO : Element ',IPT1.ITYPEL,' non implemente' C% Type d'élément incorrect RETURN ENDIF 742 CONTINUE 790 CONTINUE SEGSUP IZIPAD,IZIPAP RETURN ENDIF C------------ Cas MSOMMET Fin -------------------------------------------- C------------ Cas MSOMMET Fin -------------------------------------------- IF(IERR.NE.0)RETURN KPRE=2 MELEP1=MELEMC IF(TYPSPG.EQ.'CENTREP0')THEN IF(MACRO1.NE.0)MELEME=MACRO1 KPRE=3 ELSEIF(TYPSPG.EQ.'CENTREP1')THEN KPRE=4 IF(MACRO1.NE.0)MELEME=MACRO1 ENDIF SEGACT MELEME,MELEP1,MELEMS IF(IAXI.NE.0)THEN NPTD=MELEMS.NUM(/2) RMINS=XGRAND DO 232 I=1,NPTD J=MELEMS.NUM(1,I) R=XCOOR((J-1)*(IDIM+1) +1) R=ABS(R) IF(R.LT.RMINS)RMINS=R 232 CONTINUE RMIN=XGRAND DO 314 I=1,N J=IGEOMB.NUM(1,I) R=XCOOR((J-1)*(IDIM+1) +1) R=ABS(R) IF(R.LT.RMIN)RMIN=R 314 CONTINUE DR=1.2D0*(RMIN-RMINS) DR=ABS(DR) dr=max(xpetit,dr) DO 315 I=1,N J=IGEOMB.NUM(1,I) R=XCOOR((J-1)*(IDIM+1) +1) R=ABS(R) DO 315 L=1,NC MPOVA3.VPOCHA(I,L)=IZBB.VPOCHA(I,L)*(R + DR*EXP(-(R/DR))) 315 CONTINUE DR=RMIN-RMINS if (abs(dr).lt.xpetit) dr=xpetit ELSE DO 316 I=1,N DO 316 L=1,NC MPOVA3.VPOCHA(I,L)=IZBB.VPOCHA(I,L) 316 CONTINUE ENDIF NBSOUS=LISOUS(/1) IF(NBSOUS.EQ.0)NBSOUS=1 DO 350 N=1,NC NK=0 DO 1 L=1,NBSOUS IPT1=MELEME IF(NBSOUS.NE.1)IPT1=LISOUS(L) SEGACT IPT1 NP=IPT1.NUM(/1) NEL=IPT1.NUM(/2) NOM0=NOMS(IPT1.ITYPEL)//' ' IF(MQUAD.NE.0)THEN IF(KPRE.EQ.2)NOM0=NOMS(IPT1.ITYPEL)//'PRP0' IF(KPRE.EQ.3)NOM0=NOMS(IPT1.ITYPEL)//'PRP0' IF(KPRE.EQ.4)NOM0=NOMS(IPT1.ITYPEL)//'PRP1' ELSEIF(MACRO1.NE.0)THEN IF(KPRE.EQ.2)NOM0=NOMS(IPT1.ITYPEL)//' ' IF(KPRE.EQ.3)NOM0=NOMS(IPT1.ITYPEL)//'MCP0' IF(KPRE.EQ.4)NOM0=NOMS(IPT1.ITYPEL)//'MCP1' ELSE IF(KPRE.EQ.2)NOM0=NOMS(IPT1.ITYPEL)//' ' ENDIF C write(6,*)' NOM0=',nom0,kpre,IZFFM IF(IZFFM.EQ.0)THEN C% Type d'élément incorrect RETURN ENDIF SEGACT IZFFM*MOD IZHR=KZHR(1) SEGACT IZHR*MOD NPG=FN(/2) NES=GR(/1) IZF1=KTP(1) SEGACT IZF1*MOD MP1=IZF1.FN(/1) NPGP=IZF1.FN(/2) DO 10 K=1,NEL NK=NK+1 DO 12 I=1,NP J=IPT1.NUM(I,K) DO 12 M=1,IDIM XYZ(M,I)=XCOOR((J-1)*(IDIM+1) +M) 12 CONTINUE CALL CALJBR &(FN,GR,PG,XYZ,HR,PGSQ,RPG,NES,IDIM,NP,NPG,IAXI,AIRE,AJ,SGN) DO 35 I=1,NP IU=IZIPAD.LECT(IPT1.NUM(I,K)) UU=0.D0 DD=0.D0 DO 340 LL=1,NPG VL=0.D0 DO 34 J=1,MP1 KK=IZIPAP.LECT(MELEP1.NUM(J,NK)) VL=VL+IZF1.FN(J,LL)*MPOVA3.VPOCHA(KK,N) 34 CONTINUE DD=DD+FN(I,LL)*PGSQ(LL)*DEUPI UU=UU+VL*FN(I,LL)*PGSQ(LL)*DEUPI 340 CONTINUE VPOCHA(IU,N)=VPOCHA(IU,N)+UU IZDD.VPOCHA(IU,N)=IZDD.VPOCHA(IU,N)+DD 35 CONTINUE 10 CONTINUE 1 CONTINUE NPTD=VPOCHA(/1) DO 13 I=1,NPTD VPOCHA(I,N)=VPOCHA(I,N)/IZDD.VPOCHA(I,1) 13 CONTINUE IF(IAXI.NE.0)THEN DO 132 I=1,NPTD J=MELEMS.NUM(1,I) R=XCOOR((J-1)*(IDIM+1) +1) VPOCHA(I,N)=VPOCHA(I,N)/(R + DR*EXP(-(R/DR))) 132 CONTINUE ENDIF 350 CONTINUE SEGSUP MPOVA3 C SEGSUP IZIPAD,IZIPAP,IZFFM,IZHR,IZF1,IZD,IZDD 360 CONTINUE RETURN 1001 FORMAT(20(1X,I5)) 1002 FORMAT(10(1X,1PE11.4)) 1008 FORMAT(10(1X,A8)) 9999 CONTINUE END
© Cast3M 2003 - Tous droits réservés.
Mentions légales