1 : C CALJTR SOURCE CHAT 05/01/12 21:46:59 5004 2 : SUBROUTINE CALJTR(GR,XYZ,NES,ND,NP,NPG,AJ) 3 : C************************************************************************ 4 : C 5 : C CALCUL DE L'INVERSE DU JACOBIEN TRANSPOSE QUI SERVIRA A CALCULER 6 : C t -1 7 : C û = (J ) u 8 : C 9 : C CE SP TRAITE LES ELEMENTS VOLUMIQUES, SURFACIQUES et FILAIRES 10 : C DANS LES CAS 2D ET 3D 11 : C 12 : C CALCUL TANGENTES ET NORMALES POUR LES ELEMENTS SURFACIQUES et 13 : C FILAIRES : AJ=|tx ty| |tx ty tz| 14 : C |nx ny| ou |ux uy uz| 15 : C |nx ny nz| 16 : C 17 : C 18 : C ND DIMENSION ESPACE 19 : C NES DIMENSION ESPACE ELEMENT DE REFERENCE 20 : C NP NOMBRE DE NOEUDS DE L'ELEMENT 21 : C NPG NOMBRE DE POINTS D'INTEGRATION 22 : C 23 : C XYZ COORDONNEES 24 : C GR GRADIENT DANS L'ELEMENT DE REFERENCE 25 : C 26 : C************************************************************************ 27 : IMPLICIT INTEGER(I-N) 28 : IMPLICIT REAL*8 (A-H,O-Z) 29 : C 30 : REAL*8 GR(NES,NP,NPG),XYZ(ND,NP),AJ(ND,ND,NPG) 31 : C 32 : C 33 : C 34 : C write(6,*)' Debut CALJTR nes,nd,np,npg=',nes,nd,np,npg 35 : IF(NES.EQ.1.AND.ND.EQ.2)THEN 36 : C 37 : DO 110 L=1,NPG 38 : AJX=0.D0 39 : AJY=0.D0 40 : DO 111 I=1,NP 41 : AJX=AJX+GR(1,I,L)*XYZ(1,I) 42 : AJY=AJY+GR(1,I,L)*XYZ(2,I) 43 : 111 CONTINUE 44 : AJN=(AJX*AJX+AJY*AJY)**0.5D0 45 : AJ(1,1,L)=AJX/AJN 46 : AJ(2,1,L)=AJY/AJN 47 : AJ(1,2,L)=-AJY/AJN 48 : AJ(2,2,L)=AJX/AJN 49 : 110 CONTINUE 50 : C 51 : ELSEIF(NES.EQ.2.AND.ND.EQ.3)THEN 52 : 53 : AIRE=0.D0 54 : DO 210 L=1,NPG 55 : AJX=0.D0 56 : AJY=0.D0 57 : AJZ=0.D0 58 : BJX=0.D0 59 : BJY=0.D0 60 : BJZ=0.D0 61 : DO 211 I=1,NP 62 : AJX=AJX+GR(1,I,L)*XYZ(1,I) 63 : AJY=AJY+GR(1,I,L)*XYZ(2,I) 64 : AJZ=AJZ+GR(1,I,L)*XYZ(3,I) 65 : BJX=BJX+GR(2,I,L)*XYZ(1,I) 66 : BJY=BJY+GR(2,I,L)*XYZ(2,I) 67 : BJZ=BJZ+GR(2,I,L)*XYZ(3,I) 68 : 211 CONTINUE 69 : 70 : XB=AJY*BJZ-AJZ*BJY 71 : YB=AJZ*BJX-AJX*BJZ 72 : ZB=AJX*BJY-AJY*BJX 73 : 74 : AJN=(XB*XB+YB*YB+ZB*ZB)**0.5D0 75 : 76 : AJ(1,1,L)=AJX/AJN 77 : AJ(2,1,L)=AJY/AJN 78 : AJ(3,1,L)=AJZ/AJN 79 : AJ(1,2,L)=BJX/AJN 80 : AJ(2,2,L)=BJY/AJN 81 : AJ(3,2,L)=BJZ/AJN 82 : AJ(1,3,L)=XB/AJN 83 : AJ(2,3,L)=YB/AJN 84 : AJ(3,3,L)=ZB/AJN 85 : 210 CONTINUE 86 : C 87 : ELSE 88 : C 89 : DO 10 L=1,NPG 90 : DO 10 M=1,ND 91 : DO 10 N=1,ND 92 : AJT=0.D0 93 : DO 11 I=1,NP 94 : AJT=AJT+GR(M,I,L)*XYZ(N,I) 95 : 11 CONTINUE 96 : C AJ(N,M,L)=AJT 97 : C Jacobien Transposé 98 : AJ(M,N,L)=AJT 99 : 10 CONTINUE 100 : ENDIF 101 : C 102 : IF(ND.EQ.1)THEN 103 : 104 : DO 31 L=1,NPG 105 : VINT=AJ(1,1,L) 106 : AJ(1,1,L)=1.D0/VINT 107 : 31 CONTINUE 108 : 109 : ELSEIF(ND.EQ.2)THEN 110 : 111 : DO 32 L=1,NPG 112 : VINT=AJ(1,1,L)*AJ(2,2,L)-AJ(1,2,L)*AJ(2,1,L) 113 : RVINT=1.D0/VINT 114 : D11=AJ(2,2,L) 115 : D12=AJ(1,2,L) 116 : D21=AJ(2,1,L) 117 : D22=AJ(1,1,L) 118 : AJ(1,1,L)= RVINT*D11 119 : AJ(1,2,L)=-RVINT*D12 120 : AJ(2,1,L)=-RVINT*D21 121 : AJ(2,2,L)= RVINT*D22 122 : 32 CONTINUE 123 : 124 : ELSEIF(ND.EQ.3)THEN 125 : 126 : DO 33 L=1,NPG 127 : D11=AJ(2,2,L)*AJ(3,3,L)-AJ(3,2,L)*AJ(2,3,L) 128 : D12=AJ(1,2,L)*AJ(3,3,L)-AJ(3,2,L)*AJ(1,3,L) 129 : D13=AJ(1,2,L)*AJ(2,3,L)-AJ(2,2,L)*AJ(1,3,L) 130 : D21=AJ(2,1,L)*AJ(3,3,L)-AJ(3,1,L)*AJ(2,3,L) 131 : D22=AJ(1,1,L)*AJ(3,3,L)-AJ(3,1,L)*AJ(1,3,L) 132 : D23=AJ(1,1,L)*AJ(2,3,L)-AJ(2,1,L)*AJ(1,3,L) 133 : D31=AJ(2,1,L)*AJ(3,2,L)-AJ(3,1,L)*AJ(2,2,L) 134 : D32=AJ(1,1,L)*AJ(3,2,L)-AJ(3,1,L)*AJ(1,2,L) 135 : D33=AJ(1,1,L)*AJ(2,2,L)-AJ(2,1,L)*AJ(1,2,L) 136 : VINT=AJ(1,1,L)*D11-AJ(1,2,L)*D21+AJ(1,3,L)*D31 137 : RVINT=1.D0/VINT 138 : AJ(1,1,L)= RVINT*D11 139 : AJ(1,2,L)=-RVINT*D12 140 : AJ(1,3,L)= RVINT*D13 141 : AJ(2,1,L)=-RVINT*D21 142 : AJ(2,2,L)= RVINT*D22 143 : AJ(2,3,L)=-RVINT*D23 144 : AJ(3,1,L)= RVINT*D31 145 : AJ(3,2,L)=-RVINT*D32 146 : AJ(3,3,L)= RVINT*D33 147 : 33 CONTINUE 148 : 149 : ENDIF 150 : C 151 : RETURN 152 : 1002 FORMAT(10(1X,1PE11.4)) 153 : 1001 FORMAT(20(1X,I5)) 154 : END 155 : 156 : 157 : 158 :
© Cast3M 2003 - All rights reserved.
Disclaimer