Download g2po4c.eso

Back to the list

   1 : C G2PO4C    SOURCE    CHAT      06/03/29    21:22:14     5360           
   2 : C   
   3 : C
   4 :       SUBROUTINE G2PO4C(IC1,IC2,IC3,IC4,XYZ,
   5 :      >                      NB1,NB2,IDIMC,COORD,NBN,iarr)
   6 : C     **********************************************************************
   7 : C     OBJET G2PO4C : CREATION DES POINTS D'UNE GRILLE A PARTIR DES 4 COTES
   8 : C     OBJET          DU DOMAINE (INTERPOL. BILINEAIRE OU TRANSFINITE MAPPING)
   9 : C
  10 : C     EN ENTREE   :  
  11 : C         IC1,IC2,IC3,IC4 : LES POINTS DES COURBES FRONTIERES
  12 : C         XYZ             : COORDONNEES DES POINTS DES COURBES FRONTIERES
  13 : C         NB1 : NOMBRE DE NOEUDS DE IC1 ET IC3
  14 : C         NB2 : NOMBRE DE NOEUDS DE IC2 ET IC4
  15 : C
  16 : C         IC1(1) EST LE NUMERO DU PREMIER POINT DONT LES COORDONNEES SONT
  17 : C         XYZ(1)..XYZ(IDIMC). LE CONTOUR EST FERME => IC1(1) = IC4(NB2) 
  18 : C
  19 : C     EN SORTIE   :
  20 : C         COORD   : COORDONNEES DES POINTS CALCULES
  21 : C         NBN     : NOMBRE DE POINTS (= NB1*NB2)
  22 : C         iarr    : 0 SI OK, -1 SI LES DONNEES SONT ERRONEES
  23 : C                   NOMBRE DE LIGNES OU DE COLONNES NEGATIF OU NUL
  24 : C                   NOMBRE DE NOEUDS DIFFERENTS SUR LES COTES OPPOSES
  25 : C
  26 : C     REMARQUE    :
  27 : C       L'ORDRE DES POINTS EST LE SUIVANT
  28 : C       IC1(1)     ------------------- IC1(NB1)
  29 : C       IC4(NB2-1) ------------------- IC2(2)
  30 : C       IC4(NB2-2) ------------------- IC2(3)
  31 : C                         ...
  32 : C       IC4(2)     ------------------- IC2(NB2-1)
  33 : C       IC2(NB2)   ------------------- IC2(1)
  34 : C
  35 : C     C.A.D. A COORD(1) = L'ABCISSE DE IC1(1), 
  36 : C            A COORD((NB1*NB2-1)*IDIMC+1) L'ABCISSE DE IC2(1)
  37 : C     **********************************************************************
  38 :       IMPLICIT INTEGER(I-N)
  39 :       INTEGER IC1(*),IC2(*),IC3(*),IC4(*),NB1,NB2,IDIMC
  40 :       REAL*8    XYZ(*),COORD(*)
  41 :       INTEGER NBN,iarr
  42 : C
  43 :       INTEGER I,J,K 
  44 :       REAL*8    IU,IV,DU,DV     
  45 : C
  46 :       iarr = -1
  47 :       IF((NB1.LE.1).OR.(NB2.LE.1))GOTO 999
  48 :       IF(IC1(1).NE.IC4(NB2))GOTO 999
  49 :       IF(IC2(1).NE.IC1(NB1))GOTO 999
  50 :       IF(IC3(1).NE.IC2(NB2))GOTO 999
  51 :       IF(IC4(1).NE.IC3(NB1))GOTO 999      
  52 :       iarr = 0
  53 :       DU = 1. / (NB1-1)
  54 :       DV = 1. / (NB2-1)
  55 :       DO 10 J = 2,NB2-1
  56 :        IV = (J-1) * DV
  57 :        DO 20 I = 2,NB1-1
  58 :         IU = (I-1) * DU
  59 :         NBN = NBN+1
  60 :         DO 30 K=1,IDIMC
  61 :          COORD((NBN-1)*IDIMC+K) = 
  62 :      >    ((1-IV) * XYZ((IC1(I)-1)*IDIMC+K)) +
  63 :      >    ( IV    * XYZ((IC3(NB1-I+1)-1)*IDIMC+K)) +
  64 :      >    ((1-IU) * XYZ((IC4(NB2-J+1)-1)*IDIMC+K)) +
  65 :      >    ( IU    * XYZ((IC2(J)-1)*IDIMC+K)) -
  66 :      >    ((1-IU) * (1-IV)* XYZ((IC4(NB2)-1)*IDIMC+K)) -
  67 :      >    ((1-IU) * IV    * XYZ((IC3(NB1)-1)*IDIMC+K)) -
  68 :      >    ((1-IV) * IU    * XYZ((IC1(NB1)-1)*IDIMC+K)) -
  69 :      >    (  IU   * IV    * XYZ((IC2(NB2)-1)*IDIMC+K))
  70 :    30   CONTINUE
  71 :    20  CONTINUE
  72 :    10 CONTINUE
  73 : C
  74 :   999 END
  75 :  
  76 :  
  77 :  

© Cast3M 2003 - All rights reserved.
Disclaimer