SURFEX v8.1
General documentation of Surfex
open_close_bin_asc_forc.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 ! ################################################################
6  SUBROUTINE open_close_bin_asc_forc(HACTION,HFORCING,HACTION2)
7 ! ################################################################
8 !
9 !!**** *OPEN_CLOSE_BIN_ASC_FORC* - routine to open and close atmospheric forcing files
10 !!
11 !! PURPOSE
12 !! -------
13 !!
14 !!** METHOD
15 !! ------
16 !!
17 !! EXTERNAL
18 !! --------
19 !!
20 !!
21 !! IMPLICIT ARGUMENTS
22 !! ------------------
23 !!
24 !! REFERENCE
25 !! ---------
26 !!
27 !!
28 !! AUTHOR
29 !! ------
30 !! A. Lemonsu *Meteo France*
31 !!
32 !! MODIFICATIONS
33 !! -------------
34 !! Original 04/2008
35 !! Modified by P. Le Moigne 07/2008: HACTION2 added
36 !-------------------------------------------------------------------------------
37 !
38 !* 0. DECLARATIONS
39 ! ------------
40 !
41 USE modd_surfex_mpi, ONLY : nrank, npio
42 !
43 USE modd_io_surf_asc,ONLY : nni_forc
44 !
45 USE yomhook ,ONLY : lhook, dr_hook
46 USE parkind1 ,ONLY : jprb
47 !
48 USE modi_abor1_sfx
49 !
50 IMPLICIT NONE
51 !
52 !* 0.1 Declarations of arguments
53 ! -------------------------
54 !
55  CHARACTER(LEN=5), INTENT(IN) :: HACTION ! action to do
56  CHARACTER(LEN=6), INTENT(IN) :: HFORCING ! forcing file type
57  CHARACTER(LEN=1), INTENT(IN) :: HACTION2 ! 'R': read, 'W': write
58  CHARACTER(LEN=7) :: YSTATUS ! file status (OLD/NEW)
59 !
60 !* 0.2 Declarations of local variables
61 ! -------------------------------
62 !
63 INTEGER :: INI
64 REAL(KIND=JPRB) :: ZHOOK_HANDLE
65 !-------------------------------------------------------------------------------
66 !
67 IF (lhook) CALL dr_hook('OPEN_CLOSE_BIN_ASC_FORC',0,zhook_handle)
68 !
69 IF (haction2=='R') THEN
70  ystatus='UNKNOWN'
71 ELSE IF (haction2=='W') THEN
72  ystatus='NEW '
73 ELSE
74  CALL abor1_sfx('OPEN_CLOSE_BIN_ASC_FORC: UNKNOWN FILE STATUS, '//ystatus)
75 ENDIF
76 !
77 IF (haction=='CONF ') THEN
78  IF (nrank==npio) OPEN(unit=21,file='Params_config.txt',form='FORMATTED',status=ystatus)
79  IF (lhook) CALL dr_hook('OPEN_CLOSE_BIN_ASC_FORC',1,zhook_handle)
80  RETURN
81 END IF
82 !
83 IF (haction=='OPEN ') THEN
84  IF (hforcing=='ASCII ') THEN
85  IF (nrank==npio) THEN
86  OPEN(unit=22,file='Forc_TA.txt ',form='FORMATTED',status=ystatus)
87  OPEN(unit=23,file='Forc_QA.txt ',form='FORMATTED',status=ystatus)
88  OPEN(unit=24,file='Forc_WIND.txt ',form='FORMATTED',status=ystatus)
89  OPEN(unit=25,file='Forc_LW.txt ',form='FORMATTED',status=ystatus)
90  OPEN(unit=26,file='Forc_DIR_SW.txt ',form='FORMATTED',status=ystatus)
91  OPEN(unit=27,file='Forc_SCA_SW.txt ',form='FORMATTED',status=ystatus)
92  OPEN(unit=28,file='Forc_RAIN.txt ',form='FORMATTED',status=ystatus)
93  OPEN(unit=29,file='Forc_SNOW.txt ',form='FORMATTED',status=ystatus)
94  OPEN(unit=30,file='Forc_PS.txt ',form='FORMATTED',status=ystatus)
95  OPEN(unit=31,file='Forc_DIR.txt ',form='FORMATTED',status=ystatus)
96  OPEN(unit=32,file='Forc_CO2.txt ',form='FORMATTED',status=ystatus)
97  ENDIF
98  ELSE IF (hforcing=='BINARY') THEN
99  IF (nrank==npio) THEN
100  OPEN(unit=22,file='Forc_TA.bin ',form='UNFORMATTED',status=ystatus,access='DIRECT',recl=nni_forc*4)
101  OPEN(unit=23,file='Forc_QA.bin ',form='UNFORMATTED',status=ystatus,access='DIRECT',recl=nni_forc*4)
102  OPEN(unit=24,file='Forc_WIND.bin ',form='UNFORMATTED',status=ystatus,access='DIRECT',recl=nni_forc*4)
103  OPEN(unit=25,file='Forc_LW.bin ',form='UNFORMATTED',status=ystatus,access='DIRECT',recl=nni_forc*4)
104  OPEN(unit=26,file='Forc_DIR_SW.bin ',form='UNFORMATTED',status=ystatus,access='DIRECT',recl=nni_forc*4)
105  OPEN(unit=27,file='Forc_SCA_SW.bin ',form='UNFORMATTED',status=ystatus,access='DIRECT',recl=nni_forc*4)
106  OPEN(unit=28,file='Forc_RAIN.bin ',form='UNFORMATTED',status=ystatus,access='DIRECT',recl=nni_forc*4)
107  OPEN(unit=29,file='Forc_SNOW.bin ',form='UNFORMATTED',status=ystatus,access='DIRECT',recl=nni_forc*4)
108  OPEN(unit=30,file='Forc_PS.bin ',form='UNFORMATTED',status=ystatus,access='DIRECT',recl=nni_forc*4)
109  OPEN(unit=31,file='Forc_DIR.bin ',form='UNFORMATTED',status=ystatus,access='DIRECT',recl=nni_forc*4)
110  OPEN(unit=32,file='Forc_CO2.bin ',form='UNFORMATTED',status=ystatus,access='DIRECT',recl=nni_forc*4)
111  ENDIF
112  ENDIF
113 ENDIF
114 !
115 IF (haction=='CLOSE') THEN
116  IF (nrank==npio) THEN
117  CLOSE(21)
118  CLOSE(22)
119  CLOSE(23)
120  CLOSE(24)
121  CLOSE(25)
122  CLOSE(26)
123  CLOSE(27)
124  CLOSE(28)
125  CLOSE(29)
126  CLOSE(30)
127  CLOSE(31)
128  CLOSE(32)
129  ENDIF
130 END IF
131 IF (lhook) CALL dr_hook('OPEN_CLOSE_BIN_ASC_FORC',1,zhook_handle)
132 !-------------------------------------------------------------------------------
133 !
134 END SUBROUTINE open_close_bin_asc_forc
subroutine abor1_sfx(YTEXT)
Definition: abor1_sfx.F90:7
integer, parameter jprb
Definition: parkind1.F90:32
subroutine open_close_bin_asc_forc(HACTION, HFORCING, HACTION2)
logical lhook
Definition: yomhook.F90:15