caljtr
C CALJTR SOURCE CHAT 05/01/12 21:46:59 5004 C************************************************************************ C C CALCUL DE L'INVERSE DU JACOBIEN TRANSPOSE QUI SERVIRA A CALCULER C t -1 C û = (J ) u C C CE SP TRAITE LES ELEMENTS VOLUMIQUES, SURFACIQUES et FILAIRES C DANS LES CAS 2D ET 3D C C CALCUL TANGENTES ET NORMALES POUR LES ELEMENTS SURFACIQUES et C FILAIRES : AJ=|tx ty| |tx ty tz| C |nx ny| ou |ux uy uz| C |nx ny nz| C C C ND DIMENSION ESPACE C NES DIMENSION ESPACE ELEMENT DE REFERENCE C NP NOMBRE DE NOEUDS DE L'ELEMENT C NPG NOMBRE DE POINTS D'INTEGRATION C C XYZ COORDONNEES C GR GRADIENT DANS L'ELEMENT DE REFERENCE C C************************************************************************ IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C REAL*8 GR(NES,NP,NPG),XYZ(ND,NP),AJ(ND,ND,NPG) C C C C write(6,*)' Debut CALJTR nes,nd,np,npg=',nes,nd,np,npg IF(NES.EQ.1.AND.ND.EQ.2)THEN C DO 110 L=1,NPG AJX=0.D0 AJY=0.D0 DO 111 I=1,NP AJX=AJX+GR(1,I,L)*XYZ(1,I) AJY=AJY+GR(1,I,L)*XYZ(2,I) 111 CONTINUE AJN=(AJX*AJX+AJY*AJY)**0.5D0 AJ(1,1,L)=AJX/AJN AJ(2,1,L)=AJY/AJN AJ(1,2,L)=-AJY/AJN AJ(2,2,L)=AJX/AJN 110 CONTINUE C ELSEIF(NES.EQ.2.AND.ND.EQ.3)THEN AIRE=0.D0 DO 210 L=1,NPG AJX=0.D0 AJY=0.D0 AJZ=0.D0 BJX=0.D0 BJY=0.D0 BJZ=0.D0 DO 211 I=1,NP AJX=AJX+GR(1,I,L)*XYZ(1,I) AJY=AJY+GR(1,I,L)*XYZ(2,I) AJZ=AJZ+GR(1,I,L)*XYZ(3,I) BJX=BJX+GR(2,I,L)*XYZ(1,I) BJY=BJY+GR(2,I,L)*XYZ(2,I) BJZ=BJZ+GR(2,I,L)*XYZ(3,I) 211 CONTINUE XB=AJY*BJZ-AJZ*BJY YB=AJZ*BJX-AJX*BJZ ZB=AJX*BJY-AJY*BJX AJN=(XB*XB+YB*YB+ZB*ZB)**0.5D0 AJ(1,1,L)=AJX/AJN AJ(2,1,L)=AJY/AJN AJ(3,1,L)=AJZ/AJN AJ(1,2,L)=BJX/AJN AJ(2,2,L)=BJY/AJN AJ(3,2,L)=BJZ/AJN AJ(1,3,L)=XB/AJN AJ(2,3,L)=YB/AJN AJ(3,3,L)=ZB/AJN 210 CONTINUE C ELSE C DO 10 L=1,NPG DO 10 M=1,ND DO 10 N=1,ND AJT=0.D0 DO 11 I=1,NP AJT=AJT+GR(M,I,L)*XYZ(N,I) 11 CONTINUE C AJ(N,M,L)=AJT C Jacobien Transposé AJ(M,N,L)=AJT 10 CONTINUE ENDIF C IF(ND.EQ.1)THEN DO 31 L=1,NPG VINT=AJ(1,1,L) AJ(1,1,L)=1.D0/VINT 31 CONTINUE ELSEIF(ND.EQ.2)THEN DO 32 L=1,NPG VINT=AJ(1,1,L)*AJ(2,2,L)-AJ(1,2,L)*AJ(2,1,L) RVINT=1.D0/VINT D11=AJ(2,2,L) D12=AJ(1,2,L) D21=AJ(2,1,L) D22=AJ(1,1,L) AJ(1,1,L)= RVINT*D11 AJ(1,2,L)=-RVINT*D12 AJ(2,1,L)=-RVINT*D21 AJ(2,2,L)= RVINT*D22 32 CONTINUE ELSEIF(ND.EQ.3)THEN DO 33 L=1,NPG D11=AJ(2,2,L)*AJ(3,3,L)-AJ(3,2,L)*AJ(2,3,L) D12=AJ(1,2,L)*AJ(3,3,L)-AJ(3,2,L)*AJ(1,3,L) D13=AJ(1,2,L)*AJ(2,3,L)-AJ(2,2,L)*AJ(1,3,L) D21=AJ(2,1,L)*AJ(3,3,L)-AJ(3,1,L)*AJ(2,3,L) D22=AJ(1,1,L)*AJ(3,3,L)-AJ(3,1,L)*AJ(1,3,L) D23=AJ(1,1,L)*AJ(2,3,L)-AJ(2,1,L)*AJ(1,3,L) D31=AJ(2,1,L)*AJ(3,2,L)-AJ(3,1,L)*AJ(2,2,L) D32=AJ(1,1,L)*AJ(3,2,L)-AJ(3,1,L)*AJ(1,2,L) D33=AJ(1,1,L)*AJ(2,2,L)-AJ(2,1,L)*AJ(1,2,L) VINT=AJ(1,1,L)*D11-AJ(1,2,L)*D21+AJ(1,3,L)*D31 RVINT=1.D0/VINT AJ(1,1,L)= RVINT*D11 AJ(1,2,L)=-RVINT*D12 AJ(1,3,L)= RVINT*D13 AJ(2,1,L)=-RVINT*D21 AJ(2,2,L)= RVINT*D22 AJ(2,3,L)=-RVINT*D23 AJ(3,1,L)= RVINT*D31 AJ(3,2,L)=-RVINT*D32 AJ(3,3,L)= RVINT*D33 33 CONTINUE ENDIF C RETURN 1002 FORMAT(10(1X,1PE11.4)) 1001 FORMAT(20(1X,I5)) END
© Cast3M 2003 - Tous droits réservés.
Mentions légales