SURFEX v7.3
General documentation of Surfex
|
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