51 USE modi_open_namelist
52 USE modi_close_namelist
64 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
65 REAL,
INTENT(IN) :: PTSTEP_SURF
66 CHARACTER(LEN=*),
INTENT(IN),
OPTIONAL :: HINIT
71 INTEGER,
PARAMETER :: KIN = 1
72 INTEGER,
PARAMETER :: KOUT = 0
73 CHARACTER(LEN=5),
PARAMETER :: YLAND =
'land' 74 CHARACTER(LEN=5),
PARAMETER :: YLAKE =
'lake' 75 CHARACTER(LEN=5),
PARAMETER :: YSEA =
'ocean' 83 CHARACTER(LEN=20) :: YKEY
84 CHARACTER(LEN=50) :: YCOMMENT
85 CHARACTER(LEN=3) :: YINIT
87 REAL(KIND=JPRB) :: ZHOOK_HANDLE
91 IF (
lhook)
CALL dr_hook(
'SFX_OASIS_READ_NAM',0,zhook_handle)
106 IF (
lhook)
CALL dr_hook(
'SFX_OASIS_READ_NAM',1,zhook_handle)
111 IF(
PRESENT(hinit))yinit=hinit
120 CALL posnam(ilunam,
'NAM_SFX_LAND_CPL',gfound,iluout)
123 READ(unit=ilunam,nml=nam_sfx_land_cpl)
125 WRITE(iluout,*)
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' 126 WRITE(iluout,*)
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' 127 WRITE(iluout,*)
'NAM_SFX_LAND_CPL not found : Surfex land not coupled with river routing' 128 WRITE(iluout,*)
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' 129 WRITE(iluout,*)
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' 132 CALL posnam(ilunam,
'NAM_SFX_SEA_CPL',gfound,iluout)
135 READ(unit=ilunam,nml=nam_sfx_sea_cpl)
137 WRITE(iluout,*)
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' 138 WRITE(iluout,*)
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' 139 WRITE(iluout,*)
'NAM_SFX_SEA_CPL not found : Surfex sea not coupled with ocean model' 140 WRITE(iluout,*)
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' 141 WRITE(iluout,*)
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' 144 CALL posnam(ilunam,
'NAM_SFX_LAKE_CPL',gfound,iluout)
147 READ(unit=ilunam,nml=nam_sfx_lake_cpl)
149 WRITE(iluout,*)
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' 150 WRITE(iluout,*)
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' 151 WRITE(iluout,*)
'NAM_SFX_LAKE_CPL not found : Surfex lake not coupled with ocean model' 152 WRITE(iluout,*)
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' 153 WRITE(iluout,*)
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' 163 CALL abor1_sfx(
'SFX_OASIS_READ_NAM: OASIS USED BUT NAMELIST NOT FOUND')
172 IF(mod(
xruntime,ptstep_surf)/=0.)
THEN 173 WRITE(iluout,*)
'! MOD(XRUNTIME,XTSTEP_SURF)/=0 !!!' 174 WRITE(iluout,*)
'! XTSTEP_SURF (model timestep) must be a multiple of $RUNTIME in oasis namcouple !!!' 175 CALL abor1_sfx(
'SFX_OASIS_READ_NAM: XTSTEP_SURF must be a multiple of $RUNTIME in oasis namcouple !!!')
188 WRITE(iluout,*)
'! MOD(XTSTEP_SURF,XTSTEP_CPL_LAND) /= 0 !' 189 WRITE(iluout,*)
'XTSTEP_SURF =',ptstep_surf,
'XTSTEP_CPL_LAND = ',
xtstep_cpl_land 191 WRITE(iluout,*)
'! XTSTEP_SURF (model timestep) is superiror to XTSTEP_CPL_LAND !' 192 CALL abor1_sfx(
'SFX_OASIS_READ_NAM: XTSTEP_SURF and XTSTEP_CPL_LAND not consistent !!!')
199 ycomment=
'Surface runoff' 203 ycomment=
'Deep drainage' 214 ycomment=
'Calving flux' 220 IF(len_trim(
cwtd)>0.OR.len_trim(
cfwtd)>0)
THEN 229 ycomment=
'Water table depth' 233 ycomment=
'Fraction of WTD to rise' 249 ycomment=
'flood freshwater flux' 255 ycomment=
'Flood fraction' 259 ycomment=
'Flood potential infiltration' 275 WRITE(iluout,*)
'! MOD(XTSTEP_SURF,XTSTEP_CPL_LAKE) /= 0 !' 276 WRITE(iluout,*)
'XTSTEP_SURF =',ptstep_surf,
'XTSTEP_CPL_LAKE = ',
xtstep_cpl_lake 278 WRITE(iluout,*)
'! XTSTEP_SURF (model timestep) is superiror to XTSTEP_CPL_LAKE !' 279 CALL abor1_sfx(
'SFX_OASIS_READ_NAM: XTSTEP_SURF and XTSTEP_CPL_LAKE not consistent !!!')
286 ycomment=
'Evaporation rate' 290 ycomment=
'Rainfall rate' 294 ycomment=
'Snowfall rate' 298 ycomment=
'Freshwater flux' 312 WRITE(iluout,*)
'! MOD(XTSTEP_SURF,XTSTEP_CPL_SEA) /= 0 !' 313 WRITE(iluout,*)
'XTSTEP_SURF =',ptstep_surf,
'XTSTEP_CPL_SEA = ',
xtstep_cpl_sea 315 WRITE(iluout,*)
'! XTSTEP_SURF (model timestep) is superiror to XTSTEP_CPL_SEA !' 316 CALL abor1_sfx(
'SFX_OASIS_READ_NAM: XTSTEP_SURF and XTSTEP_CPL_SEA not consistent !!!')
323 ycomment=
'zonal wind stress' 327 ycomment=
'meridian wind stress' 331 ycomment=
'Non solar net heat flux' 335 ycomment=
'Solar net heat flux' 339 ycomment=
'module of 10m wind speed' 343 ycomment=
'module of wind stress' 347 ycomment=
'Evaporation rate' 351 ycomment=
'Rainfall rate' 355 ycomment=
'Snowfall rate' 359 ycomment=
'Freshwater flux' 365 ycomment=
'Sea surface temperature' 369 ycomment=
'Sea u-current stress' 373 ycomment=
'Sea v-current stress' 389 ycomment=
'Sea-ice non solar net heat flux' 393 ycomment=
'Sea-ice solar net heat flux' 397 ycomment=
'Sea-ice sublimation' 403 ycomment=
'Sea-ice temperature' 407 ycomment=
'Sea-ice cover' 411 ycomment=
'Sea-ice albedo' 418 IF (
lhook)
CALL dr_hook(
'SFX_OASIS_READ_NAM',1,zhook_handle)
424 SUBROUTINE check_field(HFIELD,HKEY,HCOMMENT,HTYP,KID)
428 CHARACTER(LEN=*),
INTENT(IN) :: HFIELD
429 CHARACTER(LEN=*),
INTENT(IN) :: HKEY
430 CHARACTER(LEN=*),
INTENT(IN) :: HCOMMENT
431 CHARACTER(LEN=*),
INTENT(IN) :: HTYP
432 INTEGER,
INTENT(IN) :: KID
434 CHARACTER(LEN=20) :: YWORK
435 CHARACTER(LEN=20) :: YNAMELIST
436 CHARACTER(LEN=128) :: YCOMMENT1
437 CHARACTER(LEN=128) :: YCOMMENT2
440 REAL(KIND=JPRB) :: ZHOOK_HANDLE
442 IF (
lhook)
CALL dr_hook(
'SFX_OASIS_READ_NAM:CHECK_FIELD',0,zhook_handle)
444 IF(len_trim(hfield)==0)
THEN 447 ywork=
trim(htyp)//
' - SFX' 449 ywork=
'SFX - '//
trim(htyp)
454 ynamelist=
'NAM_SFX_LAND_CPL' 456 ynamelist=
'NAM_SFX_SEA_CPL' 458 ynamelist=
'NAM_SFX_LAKE_CPL' 460 CALL abor1_sfx(
'SFX_OASIS_READ_NAM: TYPE NOT SUPPORTED OR IMPLEMENTD : '//
trim(htyp))
463 ycomment1=
'SFX_OASIS_READ_NAM: '//
trim(hcomment)//
' is not done for '//
trim(ywork)//
' coupling' 464 ycomment2=
'SFX_OASIS_READ_NAM: Namelist key '//
trim(hkey)//
' is not in '//
trim(ynamelist)
466 WRITE(iluout,*)
trim(ycomment1)
467 WRITE(iluout,*)
trim(ycomment2)
472 IF(kid==0.AND.htyp/=yland)
THEN 484 IF (
lhook)
CALL dr_hook(
'SFX_OASIS_READ_NAM:CHECK_FIELD',1,zhook_handle)
static const char * trim(const char *name, int *n)
character(len=8) csea_heat
character(len=8) cseaice_heat
character(len=8) cseaice_cvr
character(len=8) cseaice_sit
character(len=8) csea_evap
subroutine sfx_oasis_read_nam(HPROGRAM, PTSTEP_SURF, HINIT)
subroutine posnam(KULNAM, HDNAML, OFOUND, KLUOUT)
character(len=8) csea_vcu
subroutine abor1_sfx(YTEXT)
character(len=8) clake_rain
character(len=8) csea_fwsu
character(len=8) clake_evap
subroutine close_namelist(HPROGRAM, KLUNAM)
character(len=8) cseaice_snet
character(len=8) cseaice_alb
character(len=8) csea_snow
character(len=8) ccalving
subroutine get_luout(HPROGRAM, KLUOUT)
character(len=8) csea_wind
character(len=8) csea_snet
character(len=8) csea_rain
character(len=8) cseaice_evap
character(len=8) cpiflood
character(len=8) csea_sst
character(len=8) csea_watf
character(len=8) clake_watf
character(len=8) csea_ucu
subroutine check_field(HFIELD, HKEY, HCOMMENT, HTYP, KID)
subroutine open_namelist(HPROGRAM, KLUNAM, HFILE)
character(len=8) clake_snow
character(len=8) csea_fwsv
character(len=8) csrcflood
character(len=8) csea_fwsm