SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
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_omp, ONLY : nblock
42 USE modd_surfex_mpi, ONLY : nrank, npio
43 !
44 USE modd_io_surf_asc,ONLY : nni_forc
45 !
46 USE yomhook ,ONLY : lhook, dr_hook
47 USE parkind1 ,ONLY : jprb
48 !
49 USE modi_abor1_sfx
50 !
51 IMPLICIT NONE
52 !
53 !* 0.1 Declarations of arguments
54 ! -------------------------
55 !
56  CHARACTER(LEN=5), INTENT(IN) :: haction ! action to do
57  CHARACTER(LEN=6), INTENT(IN) :: hforcing ! forcing file type
58  CHARACTER(LEN=1), INTENT(IN) :: haction2 ! 'R': read, 'W': write
59  CHARACTER(LEN=7) :: ystatus ! file status (OLD/NEW)
60 !
61 !* 0.2 Declarations of local variables
62 ! -------------------------------
63 !
64 INTEGER :: ini
65 REAL(KIND=JPRB) :: zhook_handle
66 !-------------------------------------------------------------------------------
67 !
68 IF (lhook) CALL dr_hook('OPEN_CLOSE_BIN_ASC_FORC',0,zhook_handle)
69 !
70 IF (haction2=='R') THEN
71  ystatus='UNKNOWN'
72 ELSE IF (haction2=='W') THEN
73  ystatus='NEW '
74 ELSE
75  CALL abor1_sfx('OPEN_CLOSE_BIN_ASC_FORC: UNKNOWN FILE STATUS, '//ystatus)
76 ENDIF
77 !
78 IF (haction=='CONF ') THEN
79  IF (nrank==npio) OPEN(unit=21,file='Params_config.txt',form='FORMATTED',status=ystatus)
80  IF (lhook) CALL dr_hook('OPEN_CLOSE_BIN_ASC_FORC',1,zhook_handle)
81  RETURN
82 END IF
83 !
84 IF (haction=='OPEN ') THEN
85  IF (hforcing=='ASCII ') THEN
86  IF (nrank==npio) THEN
87  OPEN(unit=22,file='Forc_TA.txt ',form='FORMATTED',status=ystatus)
88  OPEN(unit=23,file='Forc_QA.txt ',form='FORMATTED',status=ystatus)
89  OPEN(unit=24,file='Forc_WIND.txt ',form='FORMATTED',status=ystatus)
90  OPEN(unit=25,file='Forc_LW.txt ',form='FORMATTED',status=ystatus)
91  OPEN(unit=26,file='Forc_DIR_SW.txt ',form='FORMATTED',status=ystatus)
92  OPEN(unit=27,file='Forc_SCA_SW.txt ',form='FORMATTED',status=ystatus)
93  OPEN(unit=28,file='Forc_RAIN.txt ',form='FORMATTED',status=ystatus)
94  OPEN(unit=29,file='Forc_SNOW.txt ',form='FORMATTED',status=ystatus)
95  OPEN(unit=30,file='Forc_PS.txt ',form='FORMATTED',status=ystatus)
96  OPEN(unit=31,file='Forc_DIR.txt ',form='FORMATTED',status=ystatus)
97  OPEN(unit=32,file='Forc_CO2.txt ',form='FORMATTED',status=ystatus)
98  ENDIF
99  ELSE IF (hforcing=='BINARY') THEN
100  IF (nrank==npio) THEN
101  OPEN(unit=22,file='Forc_TA.bin ',form='UNFORMATTED',status=ystatus,access='DIRECT',recl=nni_forc*4)
102  OPEN(unit=23,file='Forc_QA.bin ',form='UNFORMATTED',status=ystatus,access='DIRECT',recl=nni_forc*4)
103  OPEN(unit=24,file='Forc_WIND.bin ',form='UNFORMATTED',status=ystatus,access='DIRECT',recl=nni_forc*4)
104  OPEN(unit=25,file='Forc_LW.bin ',form='UNFORMATTED',status=ystatus,access='DIRECT',recl=nni_forc*4)
105  OPEN(unit=26,file='Forc_DIR_SW.bin ',form='UNFORMATTED',status=ystatus,access='DIRECT',recl=nni_forc*4)
106  OPEN(unit=27,file='Forc_SCA_SW.bin ',form='UNFORMATTED',status=ystatus,access='DIRECT',recl=nni_forc*4)
107  OPEN(unit=28,file='Forc_RAIN.bin ',form='UNFORMATTED',status=ystatus,access='DIRECT',recl=nni_forc*4)
108  OPEN(unit=29,file='Forc_SNOW.bin ',form='UNFORMATTED',status=ystatus,access='DIRECT',recl=nni_forc*4)
109  OPEN(unit=30,file='Forc_PS.bin ',form='UNFORMATTED',status=ystatus,access='DIRECT',recl=nni_forc*4)
110  OPEN(unit=31,file='Forc_DIR.bin ',form='UNFORMATTED',status=ystatus,access='DIRECT',recl=nni_forc*4)
111  OPEN(unit=32,file='Forc_CO2.bin ',form='UNFORMATTED',status=ystatus,access='DIRECT',recl=nni_forc*4)
112  ENDIF
113  ENDIF
114 ENDIF
115 !
116 IF (haction=='CLOSE') THEN
117  IF (nrank==npio) THEN
118  CLOSE(21)
119  CLOSE(22)
120  CLOSE(23)
121  CLOSE(24)
122  CLOSE(25)
123  CLOSE(26)
124  CLOSE(27)
125  CLOSE(28)
126  CLOSE(29)
127  CLOSE(30)
128  CLOSE(31)
129  CLOSE(32)
130  ENDIF
131 END IF
132 IF (lhook) CALL dr_hook('OPEN_CLOSE_BIN_ASC_FORC',1,zhook_handle)
133 !-------------------------------------------------------------------------------
134 !
135 END SUBROUTINE open_close_bin_asc_forc
subroutine abor1_sfx(YTEXT)
Definition: abor1_sfx.F90:6
subroutine open_close_bin_asc_forc(HACTION, HFORCING, HACTION2)