SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/OFFLIN/open_close_bin_asc_forc.F90
Go to the documentation of this file.
00001 !     ################################################################
00002       SUBROUTINE OPEN_CLOSE_BIN_ASC_FORC(HACTION,HFORCING,HACTION2)
00003 !     ################################################################
00004 !
00005 !!****  *OPEN_CLOSE_BIN_ASC_FORC* - routine to open and close atmospheric forcing files
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !!
00010 !!**  METHOD
00011 !!    ------
00012 !!
00013 !!    EXTERNAL
00014 !!    --------
00015 !!
00016 !!
00017 !!    IMPLICIT ARGUMENTS
00018 !!    ------------------
00019 !!
00020 !!    REFERENCE
00021 !!    ---------
00022 !!
00023 !!
00024 !!    AUTHOR
00025 !!    ------
00026 !!      A. Lemonsu  *Meteo France*      
00027 !!
00028 !!    MODIFICATIONS
00029 !!    -------------
00030 !!      Original    04/2008
00031 !!      Modified by P. Le Moigne 07/2008: HACTION2 added
00032 !-------------------------------------------------------------------------------
00033 !
00034 !*       0.    DECLARATIONS
00035 !              ------------
00036 !
00037 USE MODD_SURFEX_OMP, ONLY : NBLOCK
00038 USE MODD_SURFEX_MPI, ONLY : NRANK, NPIO
00039 !
00040 USE MODD_IO_SURF_ASC,ONLY : NNI_FORC
00041 !
00042 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00043 USE PARKIND1  ,ONLY : JPRB
00044 !
00045 USE MODI_ABOR1_SFX
00046 !
00047 IMPLICIT NONE
00048 !
00049 !*       0.1   Declarations of arguments
00050 !              -------------------------
00051 !
00052  CHARACTER(LEN=5),  INTENT(IN)  :: HACTION  ! action to do
00053  CHARACTER(LEN=6),  INTENT(IN)  :: HFORCING ! forcing file type
00054  CHARACTER(LEN=1),  INTENT(IN)  :: HACTION2 ! 'R': read, 'W': write
00055  CHARACTER(LEN=7)               :: YSTATUS  ! file status (OLD/NEW)
00056 !
00057 !*       0.2   Declarations of local variables
00058 !              -------------------------------
00059 !
00060 INTEGER :: INI
00061 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00062 !-------------------------------------------------------------------------------
00063 !
00064 IF (LHOOK) CALL DR_HOOK('OPEN_CLOSE_BIN_ASC_FORC',0,ZHOOK_HANDLE)
00065 !
00066 IF (HACTION2=='R') THEN
00067    YSTATUS='UNKNOWN'
00068 ELSE IF (HACTION2=='W') THEN
00069    YSTATUS='NEW    '
00070 ELSE
00071    CALL ABOR1_SFX('OPEN_CLOSE_BIN_ASC_FORC: UNKNOWN FILE STATUS, '//YSTATUS)      
00072 ENDIF
00073 !      
00074 IF (HACTION=='CONF ') THEN
00075   IF (NRANK==NPIO) OPEN(UNIT=21,FILE='Params_config.txt',FORM='FORMATTED',STATUS=YSTATUS)
00076   IF (LHOOK) CALL DR_HOOK('OPEN_CLOSE_BIN_ASC_FORC',1,ZHOOK_HANDLE)
00077   RETURN
00078 END IF
00079 !
00080 IF (HACTION=='OPEN ') THEN
00081   IF (HFORCING=='ASCII ') THEN
00082     IF (NRANK==NPIO) THEN
00083       OPEN(UNIT=22,FILE='Forc_TA.txt      ',FORM='FORMATTED',STATUS=YSTATUS)
00084       OPEN(UNIT=23,FILE='Forc_QA.txt      ',FORM='FORMATTED',STATUS=YSTATUS)
00085       OPEN(UNIT=24,FILE='Forc_WIND.txt    ',FORM='FORMATTED',STATUS=YSTATUS)
00086       OPEN(UNIT=25,FILE='Forc_LW.txt      ',FORM='FORMATTED',STATUS=YSTATUS)
00087       OPEN(UNIT=26,FILE='Forc_DIR_SW.txt  ',FORM='FORMATTED',STATUS=YSTATUS)
00088       OPEN(UNIT=27,FILE='Forc_SCA_SW.txt  ',FORM='FORMATTED',STATUS=YSTATUS)
00089       OPEN(UNIT=28,FILE='Forc_RAIN.txt    ',FORM='FORMATTED',STATUS=YSTATUS)
00090       OPEN(UNIT=29,FILE='Forc_SNOW.txt    ',FORM='FORMATTED',STATUS=YSTATUS)
00091       OPEN(UNIT=30,FILE='Forc_PS.txt      ',FORM='FORMATTED',STATUS=YSTATUS)
00092       OPEN(UNIT=31,FILE='Forc_DIR.txt     ',FORM='FORMATTED',STATUS=YSTATUS)
00093       OPEN(UNIT=32,FILE='Forc_CO2.txt     ',FORM='FORMATTED',STATUS=YSTATUS)
00094     ENDIF
00095   ELSE IF (HFORCING=='BINARY') THEN
00096     IF (NRANK==NPIO) THEN   
00097       OPEN(UNIT=22,FILE='Forc_TA.bin      ',FORM='UNFORMATTED',STATUS=YSTATUS,ACCESS='DIRECT',RECL=NNI_FORC*4)
00098       OPEN(UNIT=23,FILE='Forc_QA.bin      ',FORM='UNFORMATTED',STATUS=YSTATUS,ACCESS='DIRECT',RECL=NNI_FORC*4)
00099       OPEN(UNIT=24,FILE='Forc_WIND.bin    ',FORM='UNFORMATTED',STATUS=YSTATUS,ACCESS='DIRECT',RECL=NNI_FORC*4)
00100       OPEN(UNIT=25,FILE='Forc_LW.bin      ',FORM='UNFORMATTED',STATUS=YSTATUS,ACCESS='DIRECT',RECL=NNI_FORC*4)
00101       OPEN(UNIT=26,FILE='Forc_DIR_SW.bin  ',FORM='UNFORMATTED',STATUS=YSTATUS,ACCESS='DIRECT',RECL=NNI_FORC*4)
00102       OPEN(UNIT=27,FILE='Forc_SCA_SW.bin  ',FORM='UNFORMATTED',STATUS=YSTATUS,ACCESS='DIRECT',RECL=NNI_FORC*4)
00103       OPEN(UNIT=28,FILE='Forc_RAIN.bin    ',FORM='UNFORMATTED',STATUS=YSTATUS,ACCESS='DIRECT',RECL=NNI_FORC*4)
00104       OPEN(UNIT=29,FILE='Forc_SNOW.bin    ',FORM='UNFORMATTED',STATUS=YSTATUS,ACCESS='DIRECT',RECL=NNI_FORC*4)
00105       OPEN(UNIT=30,FILE='Forc_PS.bin      ',FORM='UNFORMATTED',STATUS=YSTATUS,ACCESS='DIRECT',RECL=NNI_FORC*4)
00106       OPEN(UNIT=31,FILE='Forc_DIR.bin     ',FORM='UNFORMATTED',STATUS=YSTATUS,ACCESS='DIRECT',RECL=NNI_FORC*4)
00107       OPEN(UNIT=32,FILE='Forc_CO2.bin     ',FORM='UNFORMATTED',STATUS=YSTATUS,ACCESS='DIRECT',RECL=NNI_FORC*4)
00108     ENDIF
00109   ENDIF
00110 ENDIF
00111 !
00112 IF (HACTION=='CLOSE') THEN
00113   IF (NRANK==NPIO) THEN
00114     CLOSE(21)
00115     CLOSE(22)
00116     CLOSE(23)
00117     CLOSE(24)
00118     CLOSE(25)
00119     CLOSE(26)
00120     CLOSE(27)
00121     CLOSE(28)
00122     CLOSE(29)
00123     CLOSE(30)
00124     CLOSE(31)
00125     CLOSE(32)
00126   ENDIF
00127 END IF
00128 IF (LHOOK) CALL DR_HOOK('OPEN_CLOSE_BIN_ASC_FORC',1,ZHOOK_HANDLE)
00129 !-------------------------------------------------------------------------------
00130 !
00131 END SUBROUTINE OPEN_CLOSE_BIN_ASC_FORC