File: tfm2s.f

package info (click to toggle)
lorene 0.0.0~cvs20161116%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, buster, stretch
  • size: 26,444 kB
  • ctags: 13,953
  • sloc: cpp: 212,946; fortran: 21,645; makefile: 1,750; sh: 4
file content (119 lines) | stat: -rw-r--r-- 3,644 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
C
C   Copyright (c) 1997 Silvano Bonazzola
C
C    This file is part of LORENE.
C
C    LORENE is free software; you can redistribute it and/or modify
C    it under the terms of the GNU General Public License as published by
C    the Free Software Foundation; either version 2 of the License, or
C    (at your option) any later version.
C
C    LORENE is distributed in the hope that it will be useful,
C    but WITHOUT ANY WARRANTY; without even the implied warranty of
C    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
C    GNU General Public License for more details.
C
C    You should have received a copy of the GNU General Public License
C    along with LORENE; if not, write to the Free Software
C    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
C
C

       SUBROUTINE TFM2S(N,N64,Y,CC)

		implicit double precision (a-h,o-z)

C
C           ROUTINE POUR LE CALCUL DE LES TF DE N64 FONCTIONS
C           A LA FOIS.
C
C           ARGUMENTS DE LA ROUTINE:
C
C           N   = NOMBRE DES DEGRES DE LIBERTEE. N DOIT
C                 ETRE= A 2**p*3**q*5**r AVEC p,q,r NOMBRS
C                 ENTIERS (p.NE.0).
C
C           N64 = NOMBRES DES FONCTIONS DONT ON VEUT CALCULER
C                 LES TF.
C           Y   = TABLEAU CONTENANT EN IMPUT LES ECHANTILLONS DES FON-
C                 CTIONS. Y DOIT AVOIR (N+4)*(N64+1)  DIMENSIONS.
C                 LES N ECHANTILLONS DES N64 FONCTIONS SONT
C                 STOCKES EN PARALLEL OU EN SERIE. EN PARALEL
C                 ON A:
C                 Y(1),Y(2),...Y(N64) CONTIENT LES VALEURES
C                 DES N64 FONCTIONS DANS LE POINT X=0,
C                 Y(1+N64),Y(2+N64),...Y(N64+N64)
C               LES VALEURES DES FONCTIONS POUR X=2*PI/N
C               Y(1+2*N64),Y(2+2*N64),...Y(N64+2*N64)
C               LES VALEURES POUR X=(2*PI/N)*2 ET AINSI DE 
C                JUSQU' A X=(2*PI/N)*(N-1).
C
C           CC  = OUTPUT: LES COEEFICIENTS DE CC IMPAIRES CONTIENENT
C                LES COSINUS ET LES COEFFICIENTS PAIRES LES SINUS.
C                (CC(2)=0 PAR DEFINITION. L'ARGUMENT DE CC EST DONC
C                COMPRIS ENTRE 1 ET N+1. 
C
C           Routine testee le 14/9/1985 
C
C
C $Id: tfm2s.f,v 1.2 2012/03/30 12:12:44 j_novak Exp $
C $Log: tfm2s.f,v $
C Revision 1.2  2012/03/30 12:12:44  j_novak
C Cleaning of fortran files
C
C Revision 1.1.1.1  2001/11/20 15:19:31  e_gourgoulhon
C LORENE
C
c Revision 1.1  1997/10/23  08:33:15  eric
c Initial revision
c
C
C $Header: /cvsroot/Lorene/F77/Source/Poisson2d/tfm2s.f,v 1.2 2012/03/30 12:12:44 j_novak Exp $
C
C
	character*120 header
	data header/'$Header: /cvsroot/Lorene/F77/Source/Poisson2d/tfm2s.f,v 1.2 2012/03/30 12:12:44 j_novak Exp $'/

       DIMENSION CC(*),Y(*),IFAX(64),TRIGS(1600)
       DATA NDIM/0/
       DATA NFON/0/
       DATA JJJ/0/

	save	NFON,NDIM,N65,N63,N6565,NM65,N66,ifax,trigs

       N1040=1040
       IF(N.GT.N1040) THEN
       PRINT 800,N
  800  FORMAT(10X,'DIMENSION INSUFFISANTES DANS LA ROUTINE'
     , ,' TFM, N=',I5,' > A LA DIMENSION DE TRIGS*2/3=',I5)
             ENDIF
C
       IF(N.EQ.NDIM) GO TO 1
       CALL FAX(IFAX,N,3)
       CALL FFTRIG(TRIGS,N,3)
  1    CONTINUE
C
       IF(NFON.EQ.N64.AND.NDIM.EQ.N) GO TO 4
       NFON=N64
       NDIM=N
       N65=N64
       IF((N64/8)*8.EQ.N64)N65=N64+1
       N63=N64-1
       N6565=N65+N65
       NM65=N*N65
       N66=N65+1
  4    CONTINUE
C
       DO 10 L=1,NM65
       CC(L)=Y(L)*2
10     CONTINUE
C
C           CALCUL DE LA TF EN PARALLEL
C
       CALL FFT991(CC,Y,TRIGS,IFAX,N65,1,N,N64,-1)
C
  101  FORMAT(1X,'TFM')
  100  FORMAT(1X,'TFM',10D12.4)
CC
       RETURN
       END