SURFEX v8.1
General documentation of Surfex
faprst.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 faprst_fort &
4 & (fa, krep, knumer, knumod, khctpi, cdoper, ldprgr)
5 USE fa_mod, ONLY : fa_com
6 USE parkind1, ONLY : jprb
7 USE yomhook , ONLY : lhook, dr_hook
9 IMPLICIT NONE
10 !****
11 ! Sous-programme permettant de mettre en place les defauts de compression
12 ! utilises par PROGRID
13 !**
14 ! Arguments : KREP (Sortie) ==> Code-reponse du sous-programme;
15 ! KNUMER (Entree) ==> Numero de l'unite logique;
16 ! KNUMOD (Entree) ==> Numero du modele
17 ! KHCTPI (Entree) ==> Voir PROGRID
18 ! CDOPER (Entree) ==> Voir PROGRID
19 ! LDPRGR (Entree) ==> Activer ou non
20 !
21 !
22 TYPE(fa_com) :: FA
23 INTEGER (KIND=JPLIKB) KREP, KNUMER, KNUMOD, KHCTPI
24 !
25 CHARACTER CDOPER
26 !
27 LOGICAL LDPRGR
28 !
29 REAL(KIND=JPRB) :: ZHOOK_HANDLE
30 IF (lhook) CALL dr_hook('FAPRST_MT',0,zhook_handle)
31 
32 krep=0
33 
34 IF (ldprgr) THEN
35  CALL faregu_fort (fa, knumer, 'IDMOD', knumod, 1_jplikb)
36  CALL faregu_fort (fa, knumer, 'FACDEC', 0_jplikb, 1_jplikb)
37  SELECT CASE (cdoper)
38  CASE ('K')
39  CALL faregu_fort (fa, knumer, 'GEXTE', 0_jplikb, 1_jplikb)
40  CALL faregu_fort (fa, knumer, 'BOUST', 0_jplikb, 1_jplikb)
41  CALL faregu_fort (fa, knumer, 'DIFFE', 0_jplikb, 1_jplikb)
42  CASE ('X')
43  CALL faregu_fort (fa, knumer, 'GEXTE', 1_jplikb, 1_jplikb)
44  CALL faregu_fort (fa, knumer, 'BOUST', 1_jplikb, 1_jplikb)
45  CALL faregu_fort (fa, knumer, 'DIFFE', -1_jplikb, 1_jplikb)
46  CASE ('L')
47  CALL faregu_fort (fa, knumer, 'GEXTE', 1_jplikb, 1_jplikb)
48  CALL faregu_fort (fa, knumer, 'BOUST', 1_jplikb, 1_jplikb)
49  CALL faregu_fort (fa, knumer, 'DIFFE', 2_jplikb, 1_jplikb)
50  END SELECT
51 ENDIF
52 
53 IF (lhook) CALL dr_hook('FAPRST_MT',1,zhook_handle)
54 
55 END SUBROUTINE faprst_fort
56 
57 ! Oct-2012 P. Marguinaud 64b LFI
58 SUBROUTINE faprst64 &
59 & (krep, knumer, knumod, khctpi, cdoper, ldprgr)
60 USE fa_mod, ONLY : fa => fa_com_default, &
63 USE lfi_precision
64 IMPLICIT NONE
65 ! Arguments
66 INTEGER (KIND=JPLIKB) KREP ! OUT
67 INTEGER (KIND=JPLIKB) KNUMER ! IN
68 INTEGER (KIND=JPLIKB) KNUMOD ! IN
69 INTEGER (KIND=JPLIKB) KHCTPI ! IN
70 CHARACTER CDOPER ! IN
71 LOGICAL LDPRGR ! IN
72 
73 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
74 
75 CALL faprst_fort &
76 & (fa, krep, knumer, knumod, khctpi, cdoper, ldprgr)
77 
78 END SUBROUTINE faprst64
79 
80 SUBROUTINE faprst &
81 & (krep, knumer, knumod, khctpi, cdoper, ldprgr)
82 USE fa_mod, ONLY : fa => fa_com_default, &
85 USE lfi_precision
86 IMPLICIT NONE
87 ! Arguments
88 INTEGER (KIND=JPLIKM) KREP ! OUT
89 INTEGER (KIND=JPLIKM) KNUMER ! IN
90 INTEGER (KIND=JPLIKM) KNUMOD ! IN
91 INTEGER (KIND=JPLIKM) KHCTPI ! IN
92 CHARACTER CDOPER ! IN
93 LOGICAL LDPRGR ! IN
94 
95 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
96 
97 CALL faprst_mt &
98 & (fa, krep, knumer, knumod, khctpi, cdoper, ldprgr)
99 
100 END SUBROUTINE faprst
101 
102 SUBROUTINE faprst_mt &
103 & (fa, krep, knumer, knumod, khctpi, cdoper, ldprgr)
104 USE fa_mod, ONLY : fa_com
105 USE lfi_precision
106 IMPLICIT NONE
107 ! Arguments
108 type(fa_com) fa ! INOUT
109 INTEGER (KIND=JPLIKM) KREP ! OUT
110 INTEGER (KIND=JPLIKM) KNUMER ! IN
111 INTEGER (KIND=JPLIKM) KNUMOD ! IN
112 INTEGER (KIND=JPLIKM) KHCTPI ! IN
113 CHARACTER CDOPER ! IN
114 LOGICAL LDPRGR ! IN
115 ! Local integers
116 INTEGER (KIND=JPLIKB) IREP ! OUT
117 INTEGER (KIND=JPLIKB) INUMER ! IN
118 INTEGER (KIND=JPLIKB) INUMOD ! IN
119 INTEGER (KIND=JPLIKB) IHCTPI ! IN
120 ! Convert arguments
121 
122 inumer = int( knumer, jplikb)
123 inumod = int( knumod, jplikb)
124 ihctpi = int( khctpi, jplikb)
125 
126 CALL faprst_fort &
127 & (fa, irep, inumer, inumod, ihctpi, cdoper, ldprgr)
128 
129 krep = int( irep, jplikm)
130 
131 END SUBROUTINE faprst_mt
132 
133 !INTF KREP OUT
134 !INTF KNUMER IN
135 !INTF KNUMOD IN
136 !INTF KHCTPI IN
137 !INTF CDOPER IN
138 !INTF LDPRGR IN
139 
integer, parameter jplikb
subroutine faprst_fort(FA, KREP, KNUMER, KNUMOD, KHCTPI, CDOPER, LDPRGR)
Definition: faprst.F90:5
logical, save fa_com_default_init
Definition: fa_mod.F90:477
subroutine new_fa_default()
Definition: fa_mod.F90:649
subroutine faprst64(KREP, KNUMER, KNUMOD, KHCTPI, CDOPER, LDPRGR)
Definition: faprst.F90:60
Definition: fa_mod.F90:1
subroutine faprst_mt(FA, KREP, KNUMER, KNUMOD, KHCTPI, CDOPER, LDPRGR)
Definition: faprst.F90:104
integer, parameter jprb
Definition: parkind1.F90:32
subroutine faprst(KREP, KNUMER, KNUMOD, KHCTPI, CDOPER, LDPRGR)
Definition: faprst.F90:82
subroutine faregu_fort(FA, KNUMER, CDCLEF, KVAL, KOPT)
Definition: faregu.F90:5
logical lhook
Definition: yomhook.F90:15
integer, parameter jplikm
type(fa_com), target, save fa_com_default
Definition: fa_mod.F90:476