- 积分
- 148
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2023-5-12
- 最后登录
- 1970-1-1
|

楼主 |
发表于 2025-5-17 12:06:31
|
显示全部楼层
这是setup.f90
USE mcipparm
USE metinfo
USE files
USE netcdf
IMPLICIT NONE
INTEGER :: cdfid
REAL, INTENT(INOUT) :: ctmlays ( maxlays )
CHARACTER(LEN=19) :: gridtype
INTEGER :: istat
CHARACTER(LEN=16), PARAMETER :: pname = 'SETUP'
INTEGER :: rcode
CHARACTER(LEN=80) :: wrfversion
!-------------------------------------------------------------------------------
! Error, warning, and informational messages.
!-------------------------------------------------------------------------------
CHARACTER(LEN=256), PARAMETER :: f9000 = "(/, 1x, 70('*'), &
& /, 1x, '*** SUBROUTINE: ', a, &
& /, 1x, '*** ERROR OPENING WRF NETCDF FILE', &
& /, 1x, '*** FILE = ', a, &
& /, 1x, '*** NCF: ', a, &
& /, 1x, 70('*'))"
CHARACTER(LEN=256), PARAMETER :: f9200 = "(/, 1x, 70('*'), &
& /, 1x, '*** SUBROUTINE: ', a, &
& /, 1x, '*** UNKNOWN WRF OUTPUT VERSION', &
& /, 1x, '*** IVERSION = ', i3, &
& /, 1x, '*** GRIDTYPE = ', a, &
& /, 1x, 70('*'))"
CHARACTER(LEN=256), PARAMETER :: f9300 = "(/, 1x, 70('*'), &
& /, 1x, '*** SUBROUTINE: ', a, &
& /, 1x, '*** ERROR RETRIEVING VARIABLE FROM WRF FILE', &
& /, 1x, '*** VARIABLE = ', a, &
& /, 1x, '*** NCF: ', a, &
& /, 1x, 70('*'))"
CHARACTER(LEN=256), PARAMETER :: f9400 = "(/, 1x, 70('*'), &
& /, 1x, '*** SUBROUTINE: ', a, &
& /, 1x, '*** UNKNOWN OR UNSUPPORTED WRF OUTPUT VERSION', &
& /, 1x, '*** VERSION = ', a, &
& /, 1x, 70('*'))"
CHARACTER(LEN=256), PARAMETER :: f9500 = "(/, 1x, 70('*'), &
& /, 1x, '*** SUBROUTINE: ', a, &
& /, 1x, '*** ERROR CLOSING WRF FILE', &
& /, 1x, '*** NCF: ', a, &
& /, 1x, 70('*'))"
!-------------------------------------------------------------------------------
! Try to determine if input meteorology file is in NetCDF format or not.
! If NetCDF format, it is probably WRF.
!-------------------------------------------------------------------------------
rcode = nf90_open (file_mm(1), nf90_nowrite, cdfid)
IF ( rcode == nf90_noerr ) THEN ! successfully opened NetCDF file; assume WRF
!---------------------------------------------------------------------------
! If WRF, determine whether or not the Advanced Research WRF, ARW, formerly
! known as Eulerian mass, EM) version was used.
!---------------------------------------------------------------------------
met_model = 2
! 룺 ȡ WRF ļ VERSION
rcode = nf90_get_att(cdfid, nf90_global, 'VERSION', wrfversion)
IF (rcode /= nf90_noerr) THEN
WRITE (*,f9300) TRIM(pname), 'VERSION', TRIM(nf90_strerror(rcode))
CALL graceful_stop (pname)
ENDIF
! 汾 ַ ж
wrfversion_trimmed = ADJUSTL(TRIM(wrfversion)) ! ȥ ո
IF (INDEX(wrfversion_trimmed, "WRF V3") > 0) THEN
met_iversion = 2
ELSE
WRITE (*,f9400) TRIM(pname), TRIM(wrfversion)
CALL graceful_stop (pname)
ENDIF
! ԭ д 룺 ȡ GRIDTYPE
rcode = nf90_get_att (cdfid, nf90_global, 'GRIDTYPE', gridtype)
IF ( rcode /= nf90_noerr ) THEN
WRITE (*,f9300) TRIM(pname), 'GRIDTYPE', rcode
CALL graceful_stop (pname)
ENDIF
IF ( ( met_iversion == 2 ) .AND. ( gridtype(1:1) == "C" ) ) THEN
CALL setup_wrfem (cdfid, ctmlays)
ELSE
WRITE (*,f9200) TRIM(pname), met_iversion, gridtype
CALL graceful_stop (pname)
ENDIF
rcode = nf90_close (cdfid)
IF ( rcode /= nf90_noerr ) THEN
WRITE (*,f9500) TRIM(pname), TRIM(nf90_strerror(rcode))
CALL graceful_stop (pname)
ENDIF
ELSE ! error opening file as NetCDF
WRITE (*,f9000) TRIM(pname), TRIM(file_mm(1)), TRIM(nf90_strerror(rcode))
CALL graceful_stop (pname)
ENDIF
END SUBROUTINE setup
|
|