SURFEX v8.1
General documentation of Surfex
fagrtr.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 fagrtr_fort &
4 & (fa, krep, kunit)
5 USE fa_mod, ONLY : fa_com, fagr1tab
6 USE parkind1, ONLY : jprb
7 USE yomhook , ONLY : lhook, dr_hook
9 IMPLICIT NONE
10 TYPE(fa_com) :: FA
11 INTEGER (KIND=JPLIKB) KREP, KUNIT
12 !
13 INTEGER (KIND=JPLIKB) JJ
14 INTEGER (KIND=JPLIKB) IVERS
15 
16 INTEGER :: IOST
17 
18 REAL(KIND=JPRB) :: ZHOOK_HANDLE
19 
20 IF (lhook) CALL dr_hook('FAGRTR_MT',0,zhook_handle)
21 
22 krep=0
23 
24 IF (ASSOCIATED (fa%YGR1TAB)) THEN
25  DEALLOCATE (fa%YGR1TAB)
26  NULLIFY (fa%YGR1TAB)
27 ENDIF
28 
29 iost = 0
30 
31 READ (kunit, '("VERSION = ",I10)', err=999, iostat=iost) ivers
32 
33 SELECT CASE (ivers)
34  CASE (1)
35  CALL fagrtr_fort_v1
36  CASE DEFAULT
37  WRITE (fa%NULOUT, *) "UNKNOWN VERSION :", ivers
38  CALL sdl_srlabort
39 END SELECT
40 
41 999 CONTINUE
42 
43 IF (iost /= 0) THEN
44  krep = iost
45 ENDIF
46 
47 IF (lhook) CALL dr_hook('FAGRTR_MT',1,zhook_handle)
48 
49 CONTAINS
50 
51 SUBROUTINE fagrtr_fort_v1
52 
53 READ (kunit, '(I10)', err=999, iostat=iost) fa%NBPARC
54 ALLOCATE (fa%YGR1TAB (fa%NBPARC))
55 
56 DO jj = 1, fa%NBPARC
57  READ (kunit, '(" | ",A8," | ",A24," | ",7I10," | ",L1," | ",E23.16," | ",L1," | ")', &
58 & err=999, iostat=iost) &
59 & fa%YGR1TAB (jj)%CIPREF, fa%YGR1TAB (jj)%CISUFF, fa%YGR1TAB (jj)%NCODPA(1:7), &
60 & fa%YGR1TAB (jj)%LFNIVA, fa%YGR1TAB (jj)%FMULTI, fa%YGR1TAB (jj)%LMULTI
61 ENDDO
62 
63 999 CONTINUE
64 
65 END SUBROUTINE fagrtr_fort_v1
66 
67 END SUBROUTINE fagrtr_fort
68 
69 ! Oct-2012 P. Marguinaud 64b LFI
70 SUBROUTINE fagrtr64 &
71 & (krep, kunit)
72 USE fa_mod, ONLY : fa => fa_com_default, &
75 USE lfi_precision
76 IMPLICIT NONE
77 ! Arguments
78 INTEGER (KIND=JPLIKB) KREP ! OUT
79 INTEGER (KIND=JPLIKB) KUNIT ! IN
80 
81 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
82 
83 CALL fagrtr_fort &
84 & (fa, krep, kunit)
85 
86 END SUBROUTINE fagrtr64
87 
88 SUBROUTINE fagrtr &
89 & (krep, kunit)
90 USE fa_mod, ONLY : fa => fa_com_default, &
93 USE lfi_precision
94 IMPLICIT NONE
95 ! Arguments
96 INTEGER (KIND=JPLIKM) KREP ! OUT
97 INTEGER (KIND=JPLIKM) KUNIT ! IN
98 
99 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
100 
101 CALL fagrtr_mt &
102 & (fa, krep, kunit)
103 
104 END SUBROUTINE fagrtr
105 
106 SUBROUTINE fagrtr_mt &
107 & (fa, krep, kunit)
108 USE fa_mod, ONLY : fa_com
109 USE lfi_precision
110 IMPLICIT NONE
111 ! Arguments
112 type(fa_com) fa ! INOUT
113 INTEGER (KIND=JPLIKM) KREP ! OUT
114 INTEGER (KIND=JPLIKM) KUNIT ! OUT
115 ! Local integers
116 INTEGER (KIND=JPLIKB) IREP ! OUT
117 INTEGER (KIND=JPLIKB) IUNIT ! IN
118 ! Convert arguments
119 
120 iunit = int( kunit, jplikb)
121 
122 CALL fagrtr_fort &
123 & (fa, irep, iunit)
124 
125 krep = int( irep, jplikm)
126 
127 END SUBROUTINE fagrtr_mt
128 
129 !INTF KREP OUT
130 !INTF KUNIT IN
131 
integer, parameter jplikb
subroutine fagrtr_mt(FA, KREP, KUNIT)
Definition: fagrtr.F90:108
logical, save fa_com_default_init
Definition: fa_mod.F90:477
subroutine fagrtr64(KREP, KUNIT)
Definition: fagrtr.F90:72
subroutine fagrtr_fort(FA, KREP, KUNIT)
Definition: fagrtr.F90:5
subroutine new_fa_default()
Definition: fa_mod.F90:649
subroutine fagrtr_fort_v1
Definition: fagrtr.F90:52
Definition: fa_mod.F90:1
subroutine fagrtr(KREP, KUNIT)
Definition: fagrtr.F90:90
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15
integer, parameter jplikm
type(fa_com), target, save fa_com_default
Definition: fa_mod.F90:476
subroutine sdl_srlabort
Definition: sdl_srlabort.F90:2