Download idmat6.eso

Back to the list

   1 : C IDMAT6    SOURCE    STRU      12/03/15    21:26:13     7319           
   2 :       SUBROUTINE IDMAT6 (NUMP1,NUMP2,NUDIR1,NUDIR2,ANG,
   3 :      &                   MELEME,IPVAL,NPG2)
   4 :       IMPLICIT INTEGER(I-N)
   5 :       IMPLICIT REAL*8(A-H,O-Z)                                                  
   6 : *                                                                               
   7 : ************************************************************************        
   8 : *                                                                               
   9 : *                             I D M A T 6                                      
  10 : *                             -----------                                       
  11 : *                                                                               
  12 : * FONCTION:                                                                     
  13 : * ---------                                                                     
  14 : *                                                                               
  15 : *     RECUPERATION DES COORDONNEES DES AXES OTHOTROPIE (OU ANISOTROPIE)             
  16 : *                                                                               
  17 : *
  18 : *                                                                               
  19 : *                                                                               
  20 : * MODULES UTILISES:                                                             
  21 : * -----------------                                                             
  22 : *                                                                               
  23 : -INC SMCOORD                                                                    
  24 : -INC CCOPTIO                                                                    
  25 : -INC CCREEL
  26 : -INC SMELEME                                                                 
  27 : *                                                                               
  28 : * PARAMETRES:   (E)=ENTREE   (S)=SORTIE   (+ = CONTENU DANS UN COMMUN)          
  29 : * -----------                                                                   
  30 : *                                                                               
  31 : *     NUMP1   (E)  NUMERO DU POINT P1 ASSOCIE A NUDIR1                          
  32 : *     NUMP2   (E)  NUMERO DU POINT P2 ASSOCIE A NUDIR1                          
  33 : *     NUDIR1  (E)  NUMERO DE DIRECTIVE UTILISEE DANS LA LISTE:
  34 : *                  "DIRECTION", "RADIAL"
  35 : *     NUDIR2  (E)  NUMERO DE DIRECTIVE UTILISEE DANS LA LISTE:                  
  36 : *                  "PARALLELE", "PERPENDIC.", "INCLINE",                        
  37 : *                  POUR LA DEFINITION DES DIRECTIONS D'ORTHOTROPIE.             
  38 : *     ANG     (E)  ANGLE UTILISE DANS LA DEFINITION DES DIRECTIONS              
  39 : *                  D ORTHOTROPIE (INCLINE)
  40 : *     MELEME  (E)  POINTEUR DE "MAILLAGE" A 1 SEUL TYPE D'ELEMENT.      
  41 : *     XVAL    (S)  DIRECTIONS D'ORTHOTROPIE  PAR ELEMENT,
  42 : *                  ON FOURNIT LES COSINUS DIRECTEURS  DE L'AXE 1                
  43 : *                  EN BIDIM ,ET LES COSINUS DIRECTEURS DES AXES 1 ET            
  44 : *                  2 EN TRIDIM,PAR RAPPORT AU REPERE LOCAL DE L'ELEMENT         
  45 : *                                                                               
  46 : *                                                                               
  47 : * VARIABLES:                                                                    
  48 : *-----------                                                                    
  49 : *  VGLOB1,VGLOB2,VGLOB3  = COS.DIRECTEURS DES AXES 1, 2 ET 3 D'ORTH. PAR        
  50 : *   RAPPOT AU REPERE GLOBAL                                          
  51 : *                                                                               
  52 : *                                                                               
  53 : * REMARQUES:                                                                    
  54 : * ----------                                                                    
  55 : *                                                                               
  56 : *  LES DIRECTION P1 ET P2 DEFINISSENT LE PLAN QUI CONTIENT LES AXES 1,2         
  57 : *  NUDIR2 =1 SIGNIFIE QUE L'AXE 1 EST PARALLELE A LA DIRECTION P1,              
  58 : *  NUDIR2 =2 SIGNIFIE QUE L'AXE 1 EST PERPENDICULAIRE A LA DIRECTION P1,        
  59 : *  NUDIR2 =3 SIGNIFIE QUE L'AXE 1 FAIT AN ANGLE DE (ANG) AVEC LA
  60 : *  DIRECTION P1                                                                 
  61 : *                                                                               
  62 : *                                                                               
  63 : * AUTEUR, DATE DE CREATION:                                                     
  64 : * -------------------------                                                     
  65 : *                                                                               
  66 : *     P. DOWLATYARI OCT. 1990                                                   
  67 : *                                                                               
  68 : * LANGAGE:                                                                      
  69 : * --------                                                                      
  70 : *       FORTRAN 77 + ESOPE                                                      
  71 : *                                                                               
  72 : *                                                                               
  73 : ************************************************************************        
  74 : *                                                                               
  75 : *                                                                               
  76 :       DIMENSION VGLOB1(3),VGLOB2(3)
  77 :       DIMENSION VPT1(3),VPT2(3)
  78 : *
  79 :       SEGACT MELEME                                              
  80 :       NBELEM=NUM(/2)
  81 : *                                                                               
  82 :       SEGMENT YVAL
  83 :          REAL*8 VLOC1(IDIM,NPG2,NBELEM)
  84 :          REAL*8 VLOC2(IDIM,NPG2,NBELEM)
  85 :       ENDSEGMENT                                                 
  86 : *
  87 : *                                                                               
  88 : *               DIRECTIONS FOURNIES
  89 :       IF (IDIM.EQ.2)THEN 
  90 : *                                            
  91 : *      COORDONNEES DU POINT P1                                                  
  92 : *                                                                               
  92 :        CALL EXCOO1 (NUMP1,VPT1(1),VPT1(2),VPT1(3),REEL1)
  93 : *
  94 :        IF(NUDIR1.NE.2) THEN
  95 : *                                                                               
  96 : *        NORMALISATION VECT1
  97 : *                                                                               
  98 :          VNORM=DSQRT(VPT1(1)*VPT1(1)+VPT1(2)*VPT1(2))
  99 :          IF (VNORM.EQ.0.) THEN
  99 :           CALL ERREUR (524)
 100 :           SEGDES,MELEME
 101 :           RETURN
 102 :          ENDIF
 103 : *
 104 :          VGLOB1(1)=VPT1(1)/VNORM
 105 :          VGLOB1(2)=VPT1(2)/VNORM
 106 :        ENDIF
 107 : *
 108 :        IF(NUDIR1.EQ.2) THEN
 109 :          VGLOB1(1)=VPT2(1)-VPT1(1)
 110 :          VGLOB1(2)=VPT2(2)-VPT1(2)
 111 : *                                                                               
 112 : *        NORMALISATION  VECT1
 113 : *                                                                               
 114 :          VNORM=DSQRT(VGLOB1(1)*VGLOB1(1)+VGLOB1(2)*VGLOB1(2))
 115 :          VGLOB1(1)=VGLOB1(1)/VNORM
 116 :          VGLOB1(2)=VGLOB1(2)/VNORM
 117 :          GO TO 15
 118 :        ENDIF
 119 : *
 120 : *                                                                               
 121 :        IF(NUDIR2.EQ.2)THEN                                                      
 122 : *                                                                               
 123 : *     ON EFFECTUE UNE ROTATION DE 90 DEGRE AUTOUR  DE L'AXE 3                   
 124 : *                                                                               
 125 :          REEL1=VGLOB1(1)                                                        
 126 :          VGLOB1(1)=VGLOB2(1)                                                    
 127 :          VGLOB2(1)=-REEL1                                                       
 128 :          REEL1=VGLOB1(2)                                                        
 129 :          VGLOB1(2)=VGLOB2(2)                                                    
 130 :          VGLOB2(2)=-REEL1                                                     
 131 : *                                                                               
 132 :        ELSEIF(NUDIR2.EQ.3)THEN                                                  
 133 : *                                                                               
 134 : *      ON EFFECTUE UNE ROTATION DE (ANG) DEGRE AUTOUR DE L'AXE 3
 135 : *                                                                               
 136 :          COSA=DCOS(ANG)                                                         
 137 :          SINA=DSIN(ANG)                                                         
 138 :          REEL1=VGLOB1(1)                                                        
 139 :          VGLOB1(1)=VGLOB1(1)*COSA+VGLOB2(1)*SINA                                
 140 :          VGLOB2(1)=-REEL1*SINA+VGLOB2(1)*COSA                                   
 141 :          REEL1=VGLOB1(2)                                                        
 142 :          VGLOB1(2)=VGLOB1(2)*COSA+VGLOB2(2)*SINA                                
 143 :          VGLOB2(2)=-REEL1*SINA+VGLOB2(2)*COSA 
 144 :        ENDIF                                   
 145 : *
 146 : *                                              
 147 : * 
 148 :       ELSEIF(IDIM.EQ.3)THEN
 149 : *                                            
 150 : *      COORDONNEES DU POINT P1                                                  
 151 : *                                                                               
 151 :        CALL EXCOO1 (NUMP1,VPT1(1),VPT1(2),VPT1(3),REEL1)
 152 : *                                                                               
 153 : *      COORDONNEES DU POINT P2                                                  
 154 : *
 154 :        CALL EXCOO1 (NUMP2,VPT2(1),VPT2(2),VPT2(3),REEL1) 
 155 : *
 156 : * Verification de la normalité des deux vecteurs donnés
 157 : *
 158 :        PS = DABS(VPT1(1)*VPT2(1)+VPT1(2)*VPT2(2)+VPT1(3)*VPT2(3))
 159 :        V1N = DSQRT(VPT1(1)*VPT1(1)+VPT1(2)*VPT1(2)+VPT1(3)*VPT1(3))
 160 :        V2N = DSQRT(VPT2(1)*VPT2(1)+VPT2(2)*VPT2(2)+VPT2(3)*VPT2(3))
 161 :        PS = PS/(V1N*V2N)
 162 :        IF(PS.GT.1D-4) THEN
 162 :          CALL ERREUR (524)
 163 :           SEGDES,MELEME
 164 :          RETURN
 165 :        ENDIF
 166 : *
 167 :        IF(NUDIR1.NE.2) THEN
 168 : *                                                                               
 169 : *        NORMALISATION VECT1
 170 : *                                                                               
 171 :          VNORM=DSQRT(VPT1(1)*VPT1(1)+VPT1(2)*VPT1(2)+
 172 :      .                VPT1(3)*VPT1(3))
 173 :          IF (VNORM.EQ.0.) THEN
 173 :           CALL ERREUR (524)
 174 :           SEGDES,MELEME
 175 :           RETURN
 176 :          ENDIF   
 177 :          VGLOB1(1)=VPT1(1)/VNORM
 178 :          VGLOB1(2)=VPT1(2)/VNORM
 179 :          VGLOB1(3)=VPT1(3)/VNORM
 180 :        ENDIF
 181 : *
 182 :        IF(NUDIR1.EQ.2) THEN
 183 :          VGLOB1(1)=VPT2(1)-VPT1(1)
 184 :          VGLOB1(2)=VPT2(2)-VPT1(2)
 185 :          VGLOB1(3)=VPT2(3)-VPT1(3)
 186 : *                                                                               
 187 : *        NORMALISATION  VECT1
 188 : *                                                                               
 189 :          VNORM=DSQRT(VGLOB1(1)*VGLOB1(1)+VGLOB1(2)*VGLOB1(2)+
 190 :      .                VGLOB1(3)*VGLOB1(3))
 191 :          VGLOB1(1)=VGLOB1(1)/VNORM
 192 :          VGLOB1(2)=VGLOB1(2)/VNORM
 193 :          VGLOB1(3)=VGLOB1(3)/VNORM
 194 :          GO TO 15
 195 :        ENDIF
 196 : *
 197 : *        NORMALISATION VECT2
 198 : *
 199 :          VNORM2=DSQRT(VPT2(1)*VPT2(1)+VPT2(2)*VPT2(2)+
 200 :      .                VPT2(3)*VPT2(3))
 201 :          IF (VNORM2.EQ.0.) THEN
 201 :           CALL ERREUR (524)
 202 :           SEGDES,MELEME
 203 :           RETURN
 204 :          ENDIF   
 205 :          VGLOB2(1)=VPT2(1)/VNORM2
 206 :          VGLOB2(2)=VPT2(2)/VNORM2
 207 :          VGLOB2(3)=VPT2(3)/VNORM2
 208 : *
 209 : *                         
 210 : *                                                                               
 211 :        IF(NUDIR2.EQ.2)THEN                                                      
 212 : *                                                                               
 213 : *     ON EFFECTUE UNE ROTATION DE 90 DEGRE AUTOUR  DE L'AXE 3                   
 214 : *                                                                               
 215 :          REEL1=VGLOB1(1)                                                        
 216 :          VGLOB1(1)=VGLOB2(1)                                                    
 217 :          VGLOB2(1)=-REEL1                                                       
 218 :          REEL1=VGLOB1(2)                                                        
 219 :          VGLOB1(2)=VGLOB2(2)                                                    
 220 :          VGLOB2(2)=-REEL1                                                       
 221 :          REEL1=VGLOB1(3)                                                        
 222 :          VGLOB1(3)=VGLOB2(3)                                                    
 223 :          VGLOB2(3)=-REEL1                                                       
 224 : *                                                                               
 225 :        ELSEIF(NUDIR2.EQ.3)THEN                                                  
 226 : *                                                                               
 227 : *      ON EFFECTUE UNE ROTATION DE (ANG) DEGRE AUTOUR DE L'AXE 3
 228 : *                                                                               
 229 :          COSA=DCOS(ANG)                                                         
 230 :          SINA=DSIN(ANG)                                                         
 231 :          REEL1=VGLOB1(1)                                                        
 232 :          VGLOB1(1)=VGLOB1(1)*COSA+VGLOB2(1)*SINA                                
 233 :          VGLOB2(1)=-REEL1*SINA+VGLOB2(1)*COSA                                   
 234 :          REEL1=VGLOB1(2)                                                        
 235 :          VGLOB1(2)=VGLOB1(2)*COSA+VGLOB2(2)*SINA                                
 236 :          VGLOB2(2)=-REEL1*SINA+VGLOB2(2)*COSA                                   
 237 :          REEL1=VGLOB1(3)                                                        
 238 :          VGLOB1(3)=VGLOB1(3)*COSA+VGLOB2(3)*SINA                                
 239 :          VGLOB2(3)=-REEL1*SINA+VGLOB2(3)*COSA                                   
 240 :         ENDIF
 241 :       ENDIF                                                                  
 242 : * 
 243 : *                                                                           
 244 : 15    CONTINUE
 245 : *
 246 :       SEGINI YVAL
 247 :       IPVAL=YVAL
 248 : *                                                                               
 249 : *     BOUCLE SUR LES ELEMENTS                                                   
 250 : *                                                                               
 251 :       DO 10  IEL=1,NBELEM                                                       
 252 : *                                                                             
 253 :       DO 20  NC=1,IDIM
 254 :       DO 20  NV=1,NPG2
 255 :        VLOC1(NC,NV,IEL)=0.D0
 256 :        VLOC2(NC,NV,IEL)=0.D0
 257 :  20   CONTINUE
 258 : *
 259 : *   ON BOUCLE SUR LES POINTS DE GAUSS
 260 : *
 261 :       DO 80 IGAU=1,NPG2
 262 :        IF(IDIM.EQ.2)THEN                                                        
 263 :          VLOC1(1,IGAU,IEL)=VLOC1(1,IGAU,IEL)+VGLOB1(1)
 264 :          VLOC1(2,IGAU,IEL)=VLOC1(2,IGAU,IEL)+VGLOB1(2)
 265 : *                                                                               
 266 :        ELSEIF(IDIM.EQ.3)THEN                                                    
 267 :          DO  40 J=1,3
 268 :            VLOC1(J,IGAU,IEL)=VLOC1(J,IGAU,IEL)+VGLOB1(J)
 269 :            VLOC2(J,IGAU,IEL)=VLOC2(J,IGAU,IEL)+VGLOB2(J)
 270 :  40      CONTINUE
 271 :        ENDIF                                                                
 272 : *                                                                               
 273 :  80   CONTINUE
 274 :  10   CONTINUE                                                                  
 275 : *                                                                               
 276 : *     DESACTIVATION DES SEGMENTS                                                
 277 : *                                                           
 278 :       SEGDES,YVAL,MELEME
 279 : *                                                                               
 280 :       RETURN                                                                    
 281 :       END                                                                       
 282 :  
 283 :  
 284 :  
 285 :  
 286 :  
 287 :  
 288 :  
 289 :  
 290 :  
 291 :  

© Cast3M 2003 - All rights reserved.
Disclaimer