Download @circons.procedur

Back to the list

   1 : * @CIRCONS  PROCEDUR  PASCAL    12/10/18    21:15:01     7532           
   2 : *---------------------------------------------------------------------*
   3 : * NOM         : @CIRCONS                                              *
   4 : *                                                                     *
   5 : * DESCRIPTION : Procedure calculant le centre et le rayon du cercle   *
   6 : *               (sphere) circonscrit(e) a un element de type TRI3     *
   7 : *               (TET4) en 2D (3D).                                    *
   8 : *                                                                     *
   9 : * SYNTAXE     : PT1 R1 = @CIRCONS ELT1 ;                              *
  10 : *                                                                     *
  11 : *    - ELT1   = MAILLAGE, 1 element de type TRI3 ou TET4  ;           *
  12 : *    - PT1    = POINT, centre du cercle (sphere) circonscrit(e) ;     *
  13 : *    - R1     = FLOTTANT, rayon du cercle (sphere) circonscrit(e) ;   *
  14 : *                                                                     *
  15 : * LANGAGE     : GIBIANE-CAST3M                                        *
  16 : * AUTEUR      : S. PASCAL (CEA/DEN/DM2S/SEMT/LM2S)                    *
  17 : * COURRIEL    : serge.pascal@cea.fr                                   *
  18 : *---------------------------------------------------------------------*
  19 : * VERSION    : v1, 22/09/2006, version initiale                       *
  20 : * HISTORIQUE : v1, 22/09/2006, creation                               *
  21 : * HISTORIQUE :                                                        *
  22 : * HISTORIQUE :                                                        *
  23 : *---------------------------------------------------------------------*
  24 : * Priere de PRENDRE LE TEMPS de completer les commentaires            *
  25 : * en cas de modification de ce sous-programme afin de faciliter       *
  26 : * la maintenance !                                                    *
  27 : *---------------------------------------------------------------------*
  28 : 'DEBP' @CIRCONS ;
  29 : 'ARGU' ELT1*'MAILLAGE' ;
  30 : ELT1     = 'CHAN' 'POI1' ELT1 ;
  31 : DIM1     = 'VALE' 'DIME' ;
  32 : 'SI' (DIM1 'EGA' 2) ;
  33 :   PT1      = ELT1 'POIN' 1 ;
  34 :   PT2      = ELT1 'POIN' 2 ;
  35 :   PT3      = ELT1 'POIN' 3 ;
  36 :   VP1      = PT2 'MOIN' PT3 ;
  37 :   VP2      = PT1 'MOIN' PT3 ;
  38 :   DET1     = 'PMIX' VP1 VP2 ;
  39 :   'SI' (('ABS' DET1) '<' 1.E-8) ;
  40 :     VP3      = PT2 'MOIN' PT1 ;
  41 :     DET1     = 'PMIX' VP2 VP3 ;
  42 :     'SI' (('ABS' DET1) '<' 1.E-8) ;
  43 :       DET1     = 'PMIX' VP3 VP1 ;
  44 :       PTX    = PT1 ;
  45 :       PT1    = PT3 ;
  46 :       PT3    = PT2 ;
  47 :       PT2    = PTX ;
  48 :       VP2    = VP1 ;
  49 :       VP1    = VP3 ;
  50 :     'SINO' ;
  51 :       PTX    = PT1 ;
  52 :       PT1    = PT2 ;
  53 :       PT2    = PT3 ;
  54 :       PT3    = PTX ;
  55 :       VP1    = VP2 ;
  56 :       VP2    = VP3 ;
  57 :     'FINS' ;
  58 :   'FINS' ;
  59 :   PM1      = 0.5 * (PT3 'PLUS' PT2) ;
  60 :   PM2      = 0.5 * (PT1 'PLUS' PT3) ;
  61 :   XN1M1    = 'PSCA' VP1 PM1 ;
  62 :   YN2M2    = 'PSCA' VP2 PM2 ;
  63 :   XCELT1   = ((VP2 'COOR' 2) * XN1M1) - ((VP1 'COOR' 2) * YN2M2) ;
  64 :   YCELT1   = ((VP1 'COOR' 1) * YN2M2) - ((VP2 'COOR' 1) * XN1M1) ;
  65 :   CELT1    = XCELT1 YCELT1 ;
  66 :   CELT1    = CELT1 / DET1 ;
  67 :   RELT1    = 'NORM' (PT1 'MOIN' CELT1) ;
  68 : 'SINO' ;
  69 :   'SI' (DIM1 'EGA' 3) ;
  70 :     PT1      = ELT1 'POIN' 1 ;
  71 :     PT2      = ELT1 'POIN' 2 ;
  72 :     PT3      = ELT1 'POIN' 3 ;
  73 :     PT4      = ELT1 'POIN' 4 ;
  74 :     P4MP1    = PT4 'MOIN' PT1 ;
  75 :     P4MP2    = PT4 'MOIN' PT2 ;
  76 :     P4MP3    = PT4 'MOIN' PT3 ;
  77 :     A11      = P4MP1 'COOR' 1 ;
  78 :     A21      = P4MP2 'COOR' 1 ;
  79 :     A31      = P4MP3 'COOR' 1 ;
  80 :     A12      = P4MP1 'COOR' 2 ;
  81 :     A22      = P4MP2 'COOR' 2 ;
  82 :     A32      = P4MP3 'COOR' 2 ;
  83 :     A13      = P4MP1 'COOR' 3 ;
  84 :     A23      = P4MP2 'COOR' 3 ;
  85 :     A33      = P4MP3 'COOR' 3 ;
  86 :     W1       = (A22 * A33) - (A32 * A23) ;
  87 :     W2       = (A31 * A23) - (A21 * A33) ;
  88 :     W3       = (A21 * A32) - (A31 * A22) ;
  89 :     FF1      = 0.5 / ((A11 * W1) + (A12 * W2) + (A13 * W3)) ;
  90 :     B11      = W1 ;
  91 :     B21      = W2 ;
  92 :     B31      = W3 ;
  93 :     B12      = (A32 * A13) - (A12 * A33) ;
  94 :     B22      = (A11 * A33) - (A31 * A13) ;
  95 :     B32      = (A31 * A12) - (A11 * A32) ;
  96 :     B13      = (A12 * A23) - (A22 * A13) ;
  97 :     B23      = (A21 * A13) - (A11 * A23) ;
  98 :     B33      = (A11 * A22) - (A21 * A12) ;
  99 :     N2PT1    = ('NORM' PT1) ** 2 ;
 100 :     N2PT2    = ('NORM' PT2) ** 2 ;
 101 :     N2PT3    = ('NORM' PT3) ** 2 ;
 102 :     N2PT4    = ('NORM' PT4) ** 2 ;
 103 :     FX1      = N2PT4 - N2PT1 ;
 104 :     FY1      = N2PT4 - N2PT2 ;
 105 :     FZ1      = N2PT4 - N2PT3 ;
 106 :     CELT1    = ((B11 * FX1) + (B12 * FY1) + (B13 * FZ1))
 107 :                ((B21 * FX1) + (B22 * FY1) + (B23 * FZ1))
 108 :                ((B31 * FX1) + (B32 * FY1) + (B33 * FZ1)) ;
 109 :     CELT1    = FF1 * CELT1 ;
 110 :     RELT1    = 'NORM' (PT1 'MOIN' CELT1) ;
 111 :   'FINS' ;
 112 : 'FINS' ;
 113 : 'RESP' CELT1 RELT1 ;
 114 : 'FINP' ;
 115 : *---------------------------------------------------------------------*
 116 : * FIN PROCEDURE @CIRCONS
 117 :  

© Cast3M 2003 - All rights reserved.
Disclaimer