Download ffface.eso

Back to the list

   1 : C FFFACE    SOURCE    CHAT      05/01/12    23:58:45     5004           
   2 :       SUBROUTINE FFFACE(XA,NPF)
   3 :       IMPLICIT INTEGER(I-N)
   4 :       IMPLICIT REAL*8 (A-H,O-Z)                                                 
   5 : C************************************************************************       
   6 : C                                                                               
   7 : C                                                                               
   8 : C                                                                               
   9 : C************************************************************************       
  10 :       DIMENSION FN(20),XA(3,21),COOR(3,7)
  11 : C                                                                               
  12 :       IF(NPF.EQ.8)THEN
  13 :       X=0.5D0
  14 :       Y=0.5D0
  15 : 
  16 :       FN(1)=-2.D0*(1.D0-X)*(1.D0-Y)*(X+Y-0.5D0)
  17 :       FN(2)= 4.D0*X*(1.D0-X)*(1.D0-Y)
  18 :       FN(3)=-2.D0*X*(1.D0-Y)*(Y-X+0.5D0)
  19 :       FN(4)= 4.D0*X*Y*(1.D0-Y)
  20 :       FN(5)=-2.D0*X*Y*(1.5D0-X-Y)
  21 :       FN(6)= 4.D0*X*Y*(1.D0-X)
  22 :       FN(7)=-2.D0*Y*(1.D0-X)*(X-Y+0.5D0)
  23 :       FN(8)= 4.D0*Y*(1.D0-Y)*(1.D0-X)
  24 : 
  25 :       DO 2 N=1,3
  26 :       XA(N,NPF+1)=
  27 :      &         FN(1)*XA(N,1)+FN(2)*XA(N,2)+FN(3)*XA(N,3)+FN(4)*XA(N,4)
  28 :      &+        FN(5)*XA(N,5)+FN(6)*XA(N,6)+FN(7)*XA(N,7)+FN(8)*XA(N,8)
  29 :  2    CONTINUE
  30 : 
  31 :       ELSEIF(NPF.EQ.6)THEN
  32 :       A=SQRT(2.D0)
  33 :       AS2=A/2.D0
  34 :       X=AS2
  35 :       Y=AS2
  36 :       FN(1)=(X+Y-AS2)*(X+Y-A)
  37 :       FN(2)=-2.D0*X*(X+Y-A)
  38 :       FN(3)=-X*(X-AS2)
  39 :       FN(4)=2.D0*X*Y
  40 :       FN(5)=Y*(Y-AS2)
  41 :       FN(6)=-2.D0*Y*(X+Y-A)
  42 : 
  43 :       DO 4 N=1,3
  44 :       XA(N,NPF+1)=(XA(N,1)+XA(N,3)+XA(N,5))/3.D0
  45 : C?    XA(N,NPF+1)=
  46 : C?   &         FN(1)*XA(N,1)+FN(2)*XA(N,2)+FN(3)*XA(N,3)+FN(4)*XA(N,4)
  47 : C?   &+        FN(5)*XA(N,5)+FN(6)*XA(N,6)
  48 :  4    CONTINUE
  49 : 
  50 :       ELSEIF(NPF.EQ.20)THEN
  51 : 
  52 :       X=0.5D0
  53 :       Y=0.5D0
  54 :       Z=0.5D0
  55 : 
  56 :       FN(1)=-2.D0*(1.D0-X)*(1.D0-Y)*(1.D0-Z)*(X+Y+Z-0.5D0)
  57 :       FN(2)= 4.D0*X*(1.D0-X)*(1.D0-Y)*(1.D0-Z)
  58 :       FN(3)=-2.D0*X*(1.D0-Y)*(1.D0-Z)*(Z+Y-X+0.5D0)
  59 :       FN(4)= 4.D0*X*Y*(1.D0-Y)*(1.D0-Z)
  60 :       FN(5)=-2.D0*X*Y*(1.D0-Z)*(1.5D0-X-Y+Z)
  61 :       FN(6)= 4.D0*X*Y*(1.D0-X)*(1.D0-Z)
  62 :       FN(7)=-2.D0*Y*(1.D0-X)*(1.D0-Z)*(X-Y+Z+0.5D0)
  63 :       FN(8)= 4.D0*Y*(1.D0-Y)*(1.D0-X)*(1.D0-Z)
  64 :       FN(9) = 4.D0*Z*(1.D0-Z)*(1.D0-X)*(1.D0-Y)
  65 :       FN(10)= 4.D0*X*Z*(1.D0-Z)*(1.D0-Y)
  66 :       FN(11)= 4.D0*X*Y*Z*(1.D0-Z)
  67 :       FN(12)= 4.D0*Y*Z*(1.D0-Z)*(1.D0-X)
  68 :       FN(13)=-2.D0*(1.D0-X)*(1.D0-Y)*Z*(X+Y-Z+0.5D0)
  69 :       FN(14)= 4.D0*X*(1.D0-X)*(1.D0-Y)*Z
  70 :       FN(15)=-2.D0*X*(1.D0-Y)*Z*(-Z+Y-X+1.5D0)
  71 :       FN(16)= 4.D0*X*Y*(1.D0-Y)*Z
  72 :       FN(17)=-2.D0*X*Y*Z*(2.5D0-X-Y-Z)
  73 :       FN(18)= 4.D0*X*Y*(1.D0-X)*Z
  74 :       FN(19)=-2.D0*Y*(1.D0-X)*Z*(X-Y-Z+1.5D0)
  75 :       FN(20)= 4.D0*Y*(1.D0-Y)*(1.D0-X)*Z
  76 : 
  77 :       DO 20 N=1,3
  78 :       XA(N,NPF+1)=
  79 :      &         FN(1)*XA(N,1)+FN(2)*XA(N,2)+FN(3)*XA(N,3)+FN(4)*XA(N,4)
  80 :      &+        FN(5)*XA(N,5)+FN(6)*XA(N,6)+FN(7)*XA(N,7)+FN(8)*XA(N,8)
  81 :      &+  FN(9)*XA(N,9)+FN(10)*XA(N,10)+FN(11)*XA(N,11)+FN(12)*XA(N,12)
  82 :      &+FN(13)*XA(N,13)+FN(14)*XA(N,14)+FN(15)*XA(N,15)+FN(16)*XA(N,16)
  83 :      &+FN(17)*XA(N,17)+FN(18)*XA(N,18)+FN(19)*XA(N,19)+FN(20)*XA(N,20)
  84 :  20   CONTINUE
  85 : 
  86 :       ELSEIF(NPF.EQ.15)THEN
  87 : 
  88 :       A=SQRT(2.D0)
  89 :       AS2=A*0.5D0
  90 :       CA2=1.D0
  91 :       CA4=2.D0
  92 :       A4=4.D0/A
  93 : 
  94 : C     COOR(1,1)=AS2
  95 : C     COOR(2,1)=0.D0
  96 : C     COOR(3,1)=0.5D0
  97 : 
  98 :       COOR(1,2)=AS2
  99 :       COOR(2,2)=AS2
 100 :       COOR(3,2)=0.5D0
 101 : 
 102 : C     COOR(1,3)=0.D0
 103 : C     COOR(2,3)=AS2
 104 : C     COOR(3,3)=0.5D0
 105 : 
 106 :       X=COOR(1,2)
 107 :       Y=COOR(2,2)
 108 :       Z=COOR(3,2)
 109 : C     write(6,*)' X,Y,Z=',X,Y,Z
 110 : 
 111 :       FN(1)= CA2*(X+Y-A)*(1.D0-Z)*(X+Y+A*Z-AS2)
 112 :       FN(2)=-CA4*X*(X+Y-A)*(1.D0-Z)
 113 :       FN(3)=-CA2*X*(1.D0-Z)*(-X+A*Z+AS2)
 114 :       FN(4)= CA4*X*Y*(1.D0-Z)
 115 :       FN(5)=-CA2*Y*(1.D0-Z)*(-Y+A*Z+AS2)
 116 :       FN(6)=-CA4*Y*(X+Y-A)*(1.D0-Z)
 117 :       FN(7)=-A4*Z*(1.D0-Z)*(X+Y-A)
 118 :       FN(8)= A4*X*Z*(1.D0-Z)
 119 :       FN(9) = A4*Y*Z*(1.D0-Z)
 120 :       FN(10)= CA2*(X+Y-A)*Z*(X+Y+A*(1.D0-Z)-AS2)
 121 :       FN(11)=-CA4*X*(X+Y-A)*Z
 122 :       FN(12)=-CA2*X*Z*(-X+A*(1.D0-Z)+AS2)
 123 :       FN(13)= CA4*X*Y*Z
 124 :       FN(14)=-CA2*Y*Z*(-Y+A*(1.D0-Z)+AS2)
 125 :       FN(15)=-CA4*Y*Z*(X+Y-A)
 126 : 
 127 :       DO 15 N=1,3
 128 :       XA(N,NPF+1)=(XA(N,7)+XA(N,8)+XA(N,9))/3.D0
 129 : C?    XA(N,NPF+1)=
 130 : C?   &         FN(1)*XA(N,1)+FN(2)*XA(N,2)+FN(3)*XA(N,3)+FN(4)*XA(N,4)
 131 : C?   &+        FN(5)*XA(N,5)+FN(6)*XA(N,6)+FN(7)*XA(N,7)+FN(8)*XA(N,8)
 132 : C?   &+  FN(9)*XA(N,9)+FN(10)*XA(N,10)+FN(11)*XA(N,11)+FN(12)*XA(N,12)
 133 : C?   &+FN(13)*XA(N,13)+FN(14)*XA(N,14)+FN(15)*XA(N,15)
 134 :  15   CONTINUE
 135 :       ELSE
 136 : 
 137 :       DO 30 N=1,3
 138 :       U=0.D0
 139 :       DO 31 I=1,NPF
 140 :       U=U+XA(N,I)
 141 :  31   CONTINUE
 142 :       XA(N,NPF+1)=U/FLOAT(NPF)
 143 :  30   CONTINUE
 144 : 
 145 :       ENDIF
 146 : 
 147 : 
 148 : 
 149 : 1002  format(10(1x,1pe11.4))
 150 :       RETURN                                                                    
 151 :       END                                                                       
 152 :  
 153 :  

© Cast3M 2003 - All rights reserved.
Disclaimer