SURFEX v8.1
General documentation of Surfex
falimu.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 falimu_fort &
4 & (fa, kxnivv, kxtron, kxlati, kxlong )
5 USE fa_mod, ONLY : fa_com, jpniil
6 USE parkind1, ONLY : jprb
7 USE yomhook , ONLY : lhook, dr_hook
9 IMPLICIT NONE
10 !****
11 ! Sous-programme servant a obtenir les valeurs courantes
12 ! des LIMites Utilisateur en termes de Resolutions horizontale
13 ! et verticale, valides globalement pour tous les Fichiers et Cadres
14 ! ARPEGE manipules par le programme utilisateur.
15 !**
16 ! Arguments : KXNIVV ==> Nombre maximum de niveaux verticaux;
17 ! (tous de Sortie) KXTRON ==> Troncature maximum;
18 ! KXLATI ==> Nombre maximum de latitudes pole a pole;
19 ! KXLONG ==> Nombre maxi de longitudes par parallele.
20 !
21 !
22 !
23 TYPE(fa_com) :: FA
24 INTEGER (KIND=JPLIKB) KXNIVV, KXTRON, KXLATI, KXLONG
25 !
26 INTEGER (KIND=JPLIKB) INUMER, INIMES, IREP
27 !
28 LOGICAL LLVERG
29 !
30 !
31 !
32 CHARACTER(LEN=FA%JPXNOM) CLACTI
33 CHARACTER(LEN=FA%JPLMES) CLMESS
34 CHARACTER(LEN=FA%JPLSPX) CLNSPR
35 LOGICAL LLFATA
36 
37 !**
38 ! 1. - SI PREMIERE UTILISATION, APPEL AU SOUS-PROGRAMME "FARINE".
39 !-----------------------------------------------------------------------
40 !
41 REAL(KIND=JPRB) :: ZHOOK_HANDLE
42 IF (lhook) CALL dr_hook('FALIMU_MT',0,zhook_handle)
43 clacti=''
44 IF (fa%FALIMU_LLPREA) THEN
45  CALL farine_fort &
46 & (fa, 2_jplikb )
47  fa%FALIMU_LLPREA=.false.
48 ENDIF
49 !
50 ! Verrouillage global, si necessaire.
51 !
52 IF (fa%LFAMUL) CALL lfiver_fort &
53 & (fa%LFI, fa%VRGLAS,'ON')
54 llverg=fa%LFAMUL
55 !**
56 ! 2. - RECOPIE DES VALEURS EN COMMON DANS LES ARGUMENTS.
57 !-----------------------------------------------------------------------
58 !
59 kxnivv=fa%NXNIVV
60 kxtron=fa%NXTRON
61 kxlati=fa%NXLATI
62 kxlong=fa%NXLONG
63 !**
64 ! 10. - PHASE TERMINALE : MESSAGERIE, AVEC "ABORT" EVENTUEL,
65 ! VIA LE sous-programme "FAIPAR" .
66 !-----------------------------------------------------------------------
67 !
68 !
69 ! Deverrouillage global eventuel.
70 !
71 IF (llverg) CALL lfiver_fort &
72 & (fa%LFI, fa%VRGLAS,'OFF')
73 !
74 IF (fa%NIMSGA.EQ.2) THEN
75  irep=0
76  inimes=2
77  clnspr='FALIMU'
78  inumer=jpniil
79  WRITE (unit=clmess,fmt='(''KXNIVV='',I4,'', KXTRON='',I4, &
80 & '', KXLATI='',I4,'', KXLONG='',I4)') &
81 & kxnivv,kxtron,kxlati,kxlong
82  CALL faipar_fort &
83 & (fa, inumer,inimes,irep,llfata,clmess, &
84 & clnspr,clacti,.false.)
85 ENDIF
86 !
87 IF (lhook) CALL dr_hook('FALIMU_MT',1,zhook_handle)
88 END SUBROUTINE falimu_fort
89 
90 
91 
92 ! Oct-2012 P. Marguinaud 64b LFI
93 SUBROUTINE falimu64 &
94 & (kxnivv, kxtron, kxlati, kxlong)
95 USE fa_mod, ONLY : fa => fa_com_default, &
98 USE lfi_precision
99 IMPLICIT NONE
100 ! Arguments
101 INTEGER (KIND=JPLIKB) KXNIVV ! OUT
102 INTEGER (KIND=JPLIKB) KXTRON ! OUT
103 INTEGER (KIND=JPLIKB) KXLATI ! OUT
104 INTEGER (KIND=JPLIKB) KXLONG ! OUT
105 
106 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
107 
108 CALL falimu_fort &
109 & (fa, kxnivv, kxtron, kxlati, kxlong)
110 
111 END SUBROUTINE falimu64
112 
113 SUBROUTINE falimu &
114 & (kxnivv, kxtron, kxlati, kxlong)
115 USE fa_mod, ONLY : fa => fa_com_default, &
118 USE lfi_precision
119 IMPLICIT NONE
120 ! Arguments
121 INTEGER (KIND=JPLIKM) KXNIVV ! OUT
122 INTEGER (KIND=JPLIKM) KXTRON ! OUT
123 INTEGER (KIND=JPLIKM) KXLATI ! OUT
124 INTEGER (KIND=JPLIKM) KXLONG ! OUT
125 
126 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
127 
128 CALL falimu_mt &
129 & (fa, kxnivv, kxtron, kxlati, kxlong)
130 
131 END SUBROUTINE falimu
132 
133 SUBROUTINE falimu_mt &
134 & (fa, kxnivv, kxtron, kxlati, kxlong)
135 USE fa_mod, ONLY : fa_com
136 USE lfi_precision
137 IMPLICIT NONE
138 ! Arguments
139 type(fa_com) fa ! INOUT
140 INTEGER (KIND=JPLIKM) KXNIVV ! OUT
141 INTEGER (KIND=JPLIKM) KXTRON ! OUT
142 INTEGER (KIND=JPLIKM) KXLATI ! OUT
143 INTEGER (KIND=JPLIKM) KXLONG ! OUT
144 ! Local integers
145 INTEGER (KIND=JPLIKB) IXNIVV ! OUT
146 INTEGER (KIND=JPLIKB) IXTRON ! OUT
147 INTEGER (KIND=JPLIKB) IXLATI ! OUT
148 INTEGER (KIND=JPLIKB) IXLONG ! OUT
149 ! Convert arguments
150 
151 
152 CALL falimu_fort &
153 & (fa, ixnivv, ixtron, ixlati, ixlong)
154 
155 kxnivv = int( ixnivv, jplikm)
156 kxtron = int( ixtron, jplikm)
157 kxlati = int( ixlati, jplikm)
158 kxlong = int( ixlong, jplikm)
159 
160 END SUBROUTINE falimu_mt
161 
162 !INTF KXNIVV OUT
163 !INTF KXTRON OUT
164 !INTF KXLATI OUT
165 !INTF KXLONG OUT
subroutine falimu(KXNIVV, KXTRON, KXLATI, KXLONG)
Definition: falimu.F90:115
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
subroutine lfiver_fort(LFI, PVEROU, CDSENS)
Definition: lfiver.F90:6
integer, parameter jprb
Definition: parkind1.F90:32
subroutine falimu_mt(FA, KXNIVV, KXTRON, KXLATI, KXLONG)
Definition: falimu.F90:135
subroutine farine_fort(FA, KOPTIO)
Definition: farine.F90:5
logical lhook
Definition: yomhook.F90:15
integer, parameter jplikm
type(fa_com), target, save fa_com_default
Definition: fa_mod.F90:476
subroutine falimu64(KXNIVV, KXTRON, KXLATI, KXLONG)
Definition: falimu.F90:95
subroutine faipar_fort(FA, KNUMER, KNIMES, KCODE, LDFATA, CDMESS, CDNSPR, CDACTI, LDRLFI)
Definition: faipar.F90:6
subroutine falimu_fort(FA, KXNIVV, KXTRON, KXLATI, KXLONG)
Definition: falimu.F90:5
integer(kind=jplikb), parameter jpniil
Definition: fa_mod.F90:31