Statistiques
| Révision :

root / src / ConvXyzZmat.f90 @ 1

Historique | Voir | Annoter | Télécharger (3,57 ko)

1 1 pfleura2
SUBROUTINE ConvXyzZmat(nb,x,y,z,ind_zmat,val_zmat)
2 1 pfleura2
3 1 pfleura2
  Use VarTypes
4 1 pfleura2
5 1 pfleura2
  IMPLICIT NONE
6 1 pfleura2
7 1 pfleura2
  integer(KINT) :: i,i1,i2
8 1 pfleura2
9 1 pfleura2
  integer(KINT) :: n1,n2,n3,n4,nb
10 1 pfleura2
  real(KREAL) ::  x(Nb),y(Nb),z(Nb)
11 1 pfleura2
  real(KREAL) ::  val_zmat(Nb,3)
12 1 pfleura2
  integer(KINT) :: ind_zmat(Nb,5)
13 1 pfleura2
  real(KREAL) ::  vx1,vy1,vz1,norm1
14 1 pfleura2
  real(KREAL) ::  vx2,vy2,vz2,norm2
15 1 pfleura2
  real(KREAL) ::  vx3,vy3,vz3,norm3
16 1 pfleura2
  real(KREAL) ::  vx4,vy4,vz4,norm4
17 1 pfleura2
  real(KREAL) ::  vx5,vy5,vz5,norm5
18 1 pfleura2
  real(KREAL) ::  val,val_d
19 1 pfleura2
20 1 pfleura2
  LOGICAL :: Debug
21 1 pfleura2
22 1 pfleura2
23 1 pfleura2
  INTERFACE
24 1 pfleura2
     function valid(string) result (isValid)
25 1 pfleura2
       CHARACTER(*), intent(in) :: string
26 1 pfleura2
       logical                  :: isValid
27 1 pfleura2
     END function VALID
28 1 pfleura2
29 1 pfleura2
     FUNCTION angle(v1x,v1y,v1z,norm1,v2x,v2y,v2z,norm2)
30 1 pfleura2
       use Path_module, only :  Pi,KINT, KREAL
31 1 pfleura2
       real(KREAL) ::  v1x,v1y,v1z,norm1
32 1 pfleura2
       real(KREAL) ::  v2x,v2y,v2z,norm2
33 1 pfleura2
       real(KREAL) ::  angle
34 1 pfleura2
     END FUNCTION ANGLE
35 1 pfleura2
36 1 pfleura2
37 1 pfleura2
     FUNCTION angle_d(v1x,v1y,v1z,norm1,v2x,v2y,v2z,norm2,v3x,v3y,v3z,norm3)
38 1 pfleura2
       use Path_module, only :  Pi,KINT, KREAL
39 1 pfleura2
       real(KREAL) ::  v1x,v1y,v1z,norm1
40 1 pfleura2
       real(KREAL) ::  v2x,v2y,v2z,norm2
41 1 pfleura2
       real(KREAL) ::  v3x,v3y,v3z,norm3
42 1 pfleura2
       real(KREAL) ::  angle_d,ca,sa
43 1 pfleura2
     END FUNCTION ANGLE_D
44 1 pfleura2
45 1 pfleura2
  END INTERFACE
46 1 pfleura2
47 1 pfleura2
  debug=valid("ConvXyzZmat")
48 1 pfleura2
49 1 pfleura2
 if (debug) THEN
50 1 pfleura2
     Call Header("ConvXyz Zmat")
51 1 pfleura2
     WRITe(*,*) Nb
52 1 pfleura2
     DO I=1,Nb
53 1 pfleura2
        WRITe(*,'(3(1X,F15.8))') x(I),y(i),z(i)
54 1 pfleura2
     END DO
55 1 pfleura2
  END IF
56 1 pfleura2
  IF (nb .GE. 1) THEN
57 1 pfleura2
58 1 pfleura2
     val_zmat(1,1)=0.0
59 1 pfleura2
     val_zmat(1,2)=0.0
60 1 pfleura2
     val_zmat(1,3)=0.0
61 1 pfleura2
     !        write(*,*) 'Debut procedure Xyz_Zmat'
62 1 pfleura2
63 1 pfleura2
     IF (nb .GE. 2) THEN
64 1 pfleura2
        !            write(*,*) 'Debut procedure Xyz_Zmat 2'
65 1 pfleura2
        i=2
66 1 pfleura2
        n1=ind_zmat(i,1)
67 1 pfleura2
        n2=ind_zmat(i,2)
68 1 pfleura2
69 1 pfleura2
        CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
70 1 pfleura2
        !           write(*,11) n1,n2,norm1
71 1 pfleura2
72 1 pfleura2
        val_zmat(i,1)=norm1
73 1 pfleura2
        val_zmat(i,2)=0.0
74 1 pfleura2
        val_zmat(i,3)=0.0
75 1 pfleura2
76 1 pfleura2
        IF (nb .GE. 3) THEN
77 1 pfleura2
           !        write(*,*) 'Debut procedure Xyz_Zmat3'
78 1 pfleura2
           i=3
79 1 pfleura2
           n1=ind_zmat(i,1)
80 1 pfleura2
           n2=ind_zmat(i,2)
81 1 pfleura2
           n3=ind_zmat(i,3)
82 1 pfleura2
83 1 pfleura2
           CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
84 1 pfleura2
85 1 pfleura2
           CALL vecteur(n2,n3,x,y,z,vx2,vy2,vz2,norm2)
86 1 pfleura2
           val=angle(vx1,vy1,vz1,norm1, &
87 1 pfleura2
                vx2,vy2,vz2,norm2)
88 1 pfleura2
89 1 pfleura2
           val_zmat(i,1)=norm1
90 1 pfleura2
           val_zmat(i,2)=val
91 1 pfleura2
           val_zmat(i,3)=0.0
92 1 pfleura2
93 1 pfleura2
           DO i=4,nb
94 1 pfleura2
              !        write(*,*) 'Debut procedure Xyz_Zmat4'
95 1 pfleura2
              n1=ind_zmat(i,1)
96 1 pfleura2
              n2=ind_zmat(i,2)
97 1 pfleura2
              n3=ind_zmat(i,3)
98 1 pfleura2
              n4=ind_zmat(i,4)
99 1 pfleura2
100 1 pfleura2
              CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1)
101 1 pfleura2
102 1 pfleura2
              !        write(*,*) 'Debut procedure Xyz_Zmat42'
103 1 pfleura2
              CALL vecteur(n2,n3,x,y,z,vx2,vy2,vz2,norm2)
104 1 pfleura2
              val=angle(vx1,vy1,vz1,norm1, &
105 1 pfleura2
                   vx2,vy2,vz2,norm2)
106 1 pfleura2
107 1 pfleura2
              !        write(*,*) 'Debut procedure Xyz_Zmat43'
108 1 pfleura2
              CALL vecteur(n3,n4,x,y,z,vx3,vy3,vz3,norm3)
109 1 pfleura2
              CALL produit_vect(vx1,vy1,vz1,norm1, &
110 1 pfleura2
                   vx2,vy2,vz2,norm2, &
111 1 pfleura2
                   vx4,vy4,vz4,norm4)
112 1 pfleura2
              CALL produit_vect(vx3,vy3,vz3,norm3, &
113 1 pfleura2
                   vx2,vy2,vz2,norm2, &
114 1 pfleura2
                   vx5,vy5,vz5,norm5)
115 1 pfleura2
              val_d=angle_d(vx4,vy4,vz4,norm4, &
116 1 pfleura2
                   vx5,vy5,vz5,norm5, &
117 1 pfleura2
                   vx2,vy2,vz2,norm2)
118 1 pfleura2
119 1 pfleura2
              !               write(*,11) n1,n2,norm1,n3,val,n4,val_d
120 1 pfleura2
11            format (2(1x,i3),1x,f8.4,2(1x,i3,1x,f8.3))
121 1 pfleura2
122 1 pfleura2
              val_zmat(i,1)=norm1
123 1 pfleura2
              val_zmat(i,2)=val
124 1 pfleura2
              val_zmat(i,3)=val_d
125 1 pfleura2
126 1 pfleura2
           END DO
127 1 pfleura2
        END IF
128 1 pfleura2
     END IF
129 1 pfleura2
  ELSE
130 1 pfleura2
     RETURN
131 1 pfleura2
  END IF
132 1 pfleura2
  RETURN
133 1 pfleura2
END SUBROUTINE ConvXyzZmat