Download caljtr.eso

Back to the list

   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