SURFEX v8.1
General documentation of Surfex
faixla.F90
Go to the documentation of this file.
1 ! Oct-2012 P. Marguinaud 64b LFI
2 ! Jan-2011 P. Marguinaud Thread-safe FA
3 SUBROUTINE faixla_fort &
4 & (fa)
5 USE fa_mod, ONLY : fa_com
6 USE parkind1, ONLY : jprb
7 USE yomhook , ONLY : lhook, dr_hook
9 IMPLICIT NONE
10 !****
11 ! Ce sous-programme est charge des Initialisations des
12 ! tableaux XLAp.d., utilises pour aplatir le spectre des champs
13 ! avant le compactage (coefficients spectraux seulement).
14 !**
15 !
16 !
17 !
18 TYPE(fa_com) :: FA
19 INTEGER (KIND=JPLIKB) J, JN, IDEBUT
20 INTEGER (KIND=JPLIKB) IFIN, INDM, INDN, JJPUIS
21 
22 !
23 !
24 ! On commence par les allocations des differents tableaux
25 !
26 REAL(KIND=JPRB) :: ZHOOK_HANDLE
27 IF (lhook) CALL dr_hook('FAIXLA_MT',0,zhook_handle)
28 ALLOCATE (fa%XLAP1D (fa%JPXTRO,0:1))
29 ALLOCATE (fa%XLAP1DA (fa%JPXTRO*fa%JPXTRO,0:1))
30 ALLOCATE (fa%XLAP2D (2:fa%JPXCSP,fa%JPUILA,0:1))
31 ALLOCATE (fa%XLAP2DA (fa%JPXTRO*fa%JPXTRO,fa%JPUILA,0:1))
32 !
33 DO jn=1,fa%JPXTRO
34  fa%XLAP1D(jn,0)=REAL (JN*(JN+1), JPDBLR)
35  fa%XLAP1D(jn,1)=1._jpdblr/fa%XLAP1D(jn,0)
36 ENDDO
37 !
38 DO jn=1,fa%JPXTRO*fa%JPXTRO
39  indn=1+(jn-1)/fa%JPXTRO
40  indm=jn-(indn-1)*fa%JPXTRO
41  fa%XLAP1DA(jn,0)=real(indn**2+indm**2, jpdblr)
42  fa%XLAP1DA(jn,1)=1._jpdblr/fa%XLAP1DA(jn,0)
43 ENDDO
44 !
45 DO jn=1,fa%JPXTRO
46  idebut=jn**2+1
47  ifin=(1+jn)**2
48 !
49  DO jjpuis=1,fa%JPUILA
50 !
51  DO j=idebut,ifin
52  fa%XLAP2D(j,jjpuis,0)=fa%XLAP1D(jn,0)**jjpuis
53  fa%XLAP2D(j,jjpuis,1)=1._jpdblr/fa%XLAP2D(j,jjpuis,0)
54  ENDDO
55 !
56  ENDDO
57 !
58 ENDDO
59 !
60 DO jjpuis=1,fa%JPUILA
61 !
62 DO jn=1,fa%JPXTRO**2
63  fa%XLAP2DA(jn,jjpuis,0)=fa%XLAP1DA(jn,0)**jjpuis
64  fa%XLAP2DA(jn,jjpuis,1)=1._jpdblr/fa%XLAP2DA(jn,jjpuis,0)
65 ENDDO
66 !
67 ENDDO
68 !
69 !
70 IF (lhook) CALL dr_hook('FAIXLA_MT',1,zhook_handle)
71 END SUBROUTINE faixla_fort
72 
73 
74 
75 ! Oct-2012 P. Marguinaud 64b LFI
76 SUBROUTINE faixla64 &
77 & ()
78 USE fa_mod, ONLY : fa => fa_com_default, &
81 USE lfi_precision
82 IMPLICIT NONE
83 ! Arguments
84 
85 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
86 
87 CALL faixla_fort &
88 & (fa)
89 
90 END SUBROUTINE faixla64
91 
92 SUBROUTINE faixla &
93 & ()
94 USE fa_mod, ONLY : fa => fa_com_default, &
97 USE lfi_precision
98 IMPLICIT NONE
99 ! Arguments
100 
101 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
102 
103 CALL faixla_mt &
104 & (fa)
105 
106 END SUBROUTINE faixla
107 
108 SUBROUTINE faixla_mt &
109 & (fa)
110 USE fa_mod, ONLY : fa_com
111 USE lfi_precision
112 IMPLICIT NONE
113 ! Arguments
114 type(fa_com) fa ! INOUT
115 ! Local integers
116 ! Convert arguments
117 
118 
119 CALL faixla_fort &
120 & (fa)
121 
122 
123 END SUBROUTINE faixla_mt
subroutine faixla()
Definition: faixla.F90:94
logical, save fa_com_default_init
Definition: fa_mod.F90:477
subroutine new_fa_default()
Definition: fa_mod.F90:649
Definition: fa_mod.F90:1
integer, parameter jprb
Definition: parkind1.F90:32
subroutine faixla64()
Definition: faixla.F90:78
subroutine faixla_mt(FA)
Definition: faixla.F90:110
logical lhook
Definition: yomhook.F90:15
subroutine faixla_fort(FA)
Definition: faixla.F90:5
type(fa_com), target, save fa_com_default
Definition: fa_mod.F90:476
real8 real
Definition: privpub.h:396