43 integer,
private,
parameter :: I_ch_rn222 = 1
45 character(len=H_SHORT),
private :: ATMOS_SFC_CH_Rn222_emission_type =
'CONST'
48 real(RP),
private :: ATMOS_SFC_CH_Rn222_const_emission_land = 20.8e-3_rp
49 real(RP),
private :: ATMOS_SFC_CH_Rn222_const_emission_ocean = 0.14e-3_rp
52 character(len=H_LONG),
private :: ATMOS_SFC_CH_Rn222_SCHERY1998_dirpath =
'.'
55 character(len=H_LONG),
private :: ATMOS_SFC_CH_Rn222_HIRAO2010_dirpath =
'.'
56 integer,
private :: ATMOS_SFC_CH_Rn222_HIRAO2010_ystart = 1979
57 integer,
private :: ATMOS_SFC_CH_Rn222_HIRAO2010_yend = 2012
59 integer,
private :: ATMOS_SFC_CH_Rn222_nintrp = 5
61 real(RP),
private,
allocatable :: emission_lat (:,:)
62 real(RP),
private,
allocatable :: emission_lon (:,:)
63 real(RP),
private,
allocatable :: emission_value(:,:,:,:)
65 integer,
private,
allocatable :: idx_i(:,:,:)
66 integer,
private,
allocatable :: idx_j(:,:,:)
67 real(RP),
private,
allocatable :: hfact(:,:,:)
69 integer,
private :: nlon
70 integer,
private :: nlat
71 integer,
private :: nmonth
72 integer,
private :: nyear
92 integer,
intent(in) :: ia
93 integer,
intent(in) :: ja
94 real(rp),
intent(in) :: real_lon(ia,ja)
95 real(rp),
intent(in) :: real_lat(ia,ja)
97 namelist / param_atmos_sfc_ch_rn222 / &
98 atmos_sfc_ch_rn222_emission_type, &
99 atmos_sfc_ch_rn222_const_emission_land, &
100 atmos_sfc_ch_rn222_const_emission_ocean, &
101 atmos_sfc_ch_rn222_schery1998_dirpath, &
102 atmos_sfc_ch_rn222_hirao2010_dirpath, &
103 atmos_sfc_ch_rn222_hirao2010_ystart, &
104 atmos_sfc_ch_rn222_hirao2010_yend, &
105 atmos_sfc_ch_rn222_nintrp
107 character(len=H_LONG) :: fname
108 real(rp) :: lon, lat, value
111 integer :: i, j, m, y, yy
115 log_info(
"ATMOS_SFC_CH_rn222_setup",*)
'Setup'
116 log_info(
"ATMOS_SFC_CH_rn222_setup",*)
'rn222 surface flux'
120 read(
io_fid_conf,nml=param_atmos_sfc_ch_rn222,iostat=ierr)
122 log_info(
"ATMOS_SFC_CH_rn222_setup",*)
'Not found namelist. Default used.'
123 elseif( ierr > 0 )
then
124 log_error(
"ATMOS_SFC_CH_rn222_setup",*)
'Not appropriate names in namelist PARAM_ATMOS_SFC_CH_RN222. Check!'
127 log_nml(param_atmos_sfc_ch_rn222)
132 log_info(
"ATMOS_SFC_CH_rn222_setup",*)
'Type of emission of Rn222: ', trim(atmos_sfc_ch_rn222_emission_type)
134 select case( atmos_sfc_ch_rn222_emission_type )
137 log_info_cont(
'(A,ES16.6)')
'From land [Bq/m2/s] : ', atmos_sfc_ch_rn222_const_emission_land
138 log_info_cont(
'(A,ES16.6)')
'From ocean [Bq/m2/s] : ', atmos_sfc_ch_rn222_const_emission_ocean
142 log_info_cont(*)
'Flux map by Schery and Wasiolek (1998) is used'
149 allocate( emission_lon(nlon,nlat) )
150 allocate( emission_lat(nlon,nlat) )
151 allocate( emission_value(nlon,nlat,nmonth,nyear) )
156 write(fname,
'(A,A,I2.2,A)') trim(atmos_sfc_ch_rn222_schery1998_dirpath),
"/fdh3a.", m
157 log_info_cont(*)
'Read from the ASCII file: ', trim(fname)
161 file = trim(fname), &
167 lon = real(i-1,kind=rp) - 180.0_rp
168 lat = 90.0_rp - real(j-1,kind=rp)
172 emission_lon(i,j) = ( lon + 0.5_rp ) *
const_d2r
173 emission_lat(i,j) = ( lat - 0.5_rp ) *
const_d2r
174 emission_value(i,j,m,y) =
value * 1.e-3_rp
184 log_info_cont(*)
'Flux map by Hirao et al. (2010) is used'
185 log_info_cont(*)
'Start year: ', atmos_sfc_ch_rn222_hirao2010_ystart
186 log_info_cont(*)
'End year: ', atmos_sfc_ch_rn222_hirao2010_yend
188 if ( atmos_sfc_ch_rn222_hirao2010_ystart < 1979 &
189 .OR. atmos_sfc_ch_rn222_hirao2010_yend > 2012 )
then
190 log_warn(
'ATMOS_SFC_CH_rn222_setup',*)
'Available period of the data is between 1979 and 2012.'
191 log_warn_cont(*)
'Please check the range of ystart and yend.'
192 atmos_sfc_ch_rn222_hirao2010_ystart = max( atmos_sfc_ch_rn222_hirao2010_ystart, 1979 )
193 atmos_sfc_ch_rn222_hirao2010_yend = min( atmos_sfc_ch_rn222_hirao2010_yend, 2012 )
199 nyear = atmos_sfc_ch_rn222_hirao2010_yend - atmos_sfc_ch_rn222_hirao2010_ystart + 1
201 allocate( emission_lon(nlon,nlat) )
202 allocate( emission_lat(nlon,nlat) )
203 allocate( emission_value(nlon,nlat,nmonth,nyear) )
208 yy = y+atmos_sfc_ch_rn222_hirao2010_ystart-1
209 write(fname,
'(A,A,I4.4,I2.2)') trim(atmos_sfc_ch_rn222_hirao2010_dirpath),
"/flux-hra-revi", yy, m
210 log_info_cont(*)
'Read from the ASCII file: ', trim(fname)
214 file = trim(fname), &
220 read(fid,*) lon, lat,
value
222 emission_lon(i,j) = ( lon + 0.5_rp ) *
const_d2r
223 emission_lat(i,j) = ( lat - 0.5_rp ) *
const_d2r
224 emission_value(i,j,m,y) =
value * 1.e-3_rp
234 log_error(
"ATMOS_SFC_CH_rn222_setup",*)
'Not supported type of Rn222 emission! Stop.'
238 select case( atmos_sfc_ch_rn222_emission_type )
239 case(
'SCHERY1998',
'HIRAO2010' )
241 call comm_bcast( emission_lon(:,:), nlon, nlat )
242 call comm_bcast( emission_lat(:,:), nlon, nlat )
243 call comm_bcast( emission_value(:,:,:,:), nlon, nlat, nmonth, nyear )
245 allocate( idx_i(ia,ja,atmos_sfc_ch_rn222_nintrp) )
246 allocate( idx_j(ia,ja,atmos_sfc_ch_rn222_nintrp) )
247 allocate( hfact(ia,ja,atmos_sfc_ch_rn222_nintrp) )
249 call interp_factor2d( atmos_sfc_ch_rn222_nintrp, &
273 integer,
intent(in) :: ia, is, ie
274 integer,
intent(in) :: ja, js, je
275 integer,
intent(in) :: qa_ch
276 real(rp),
intent(inout) :: sflx_qtrc(ia,ja,qa_ch)
281 select case( atmos_sfc_ch_rn222_emission_type )
282 case(
'CONST',
'SCHERY1998',
'HIRAO2010' )
286 sflx_qtrc(i,j,i_ch_rn222) = atmos_sfc_ch_rn222_const_emission_ocean
309 integer,
intent(in) :: ia, is, ie
310 integer,
intent(in) :: ja, js, je
311 integer,
intent(in) :: qa_ch
312 integer,
intent(in) :: nowdate(6)
313 real(rp),
intent(inout) :: sflx_qtrc(ia,ja,qa_ch)
315 integer :: i, j, m, y, yy
318 select case( atmos_sfc_ch_rn222_emission_type )
323 sflx_qtrc(i,j,i_ch_rn222) = atmos_sfc_ch_rn222_const_emission_land
338 emission_value(:,:,m,y), &
339 sflx_qtrc(:,:,i_ch_rn222) )
347 y = yy-atmos_sfc_ch_rn222_hirao2010_ystart+1
349 if ( y < 1 .OR. y > nyear )
then
350 log_error(
"ATMOS_SFC_CH_rn222_setup",*)
'emission file does not exist for year=', yy
362 emission_value(:,:,m,y), &
363 sflx_qtrc(:,:,i_ch_rn222) )