44 integer,
private,
parameter :: I_ch_rn222 = 1
46 character(len=H_SHORT),
private :: ATMOS_SFC_CH_Rn222_emission_type =
'CONST'
49 real(RP),
private :: ATMOS_SFC_CH_Rn222_const_emission_land = 20.8e-3_rp
50 real(RP),
private :: ATMOS_SFC_CH_Rn222_const_emission_ocean = 0.14e-3_rp
53 character(len=H_LONG),
private :: ATMOS_SFC_CH_Rn222_SCHERY1998_dirpath =
'.'
56 character(len=H_LONG),
private :: ATMOS_SFC_CH_Rn222_HIRAO2010_dirpath =
'.'
57 integer,
private :: ATMOS_SFC_CH_Rn222_HIRAO2010_ystart = 1979
58 integer,
private :: ATMOS_SFC_CH_Rn222_HIRAO2010_yend = 2012
60 integer,
private :: ATMOS_SFC_CH_Rn222_nintrp = 5
62 real(RP),
private,
allocatable :: emission_lat (:,:)
63 real(RP),
private,
allocatable :: emission_lon (:,:)
64 real(RP),
private,
allocatable :: emission_value(:,:,:,:)
66 integer,
private,
allocatable :: idx_i(:,:,:)
67 integer,
private,
allocatable :: idx_j(:,:,:)
68 real(RP),
private,
allocatable :: hfact(:,:,:)
70 integer,
private :: nlon
71 integer,
private :: nlat
72 integer,
private :: nmonth
73 integer,
private :: nyear
93 integer,
intent(in) :: ia
94 integer,
intent(in) :: ja
95 real(rp),
intent(in) :: real_lon(ia,ja)
96 real(rp),
intent(in) :: real_lat(ia,ja)
98 namelist / param_atmos_sfc_ch_rn222 / &
99 atmos_sfc_ch_rn222_emission_type, &
100 atmos_sfc_ch_rn222_const_emission_land, &
101 atmos_sfc_ch_rn222_const_emission_ocean, &
102 atmos_sfc_ch_rn222_schery1998_dirpath, &
103 atmos_sfc_ch_rn222_hirao2010_dirpath, &
104 atmos_sfc_ch_rn222_hirao2010_ystart, &
105 atmos_sfc_ch_rn222_hirao2010_yend, &
106 atmos_sfc_ch_rn222_nintrp
108 character(len=H_LONG) :: fname
109 real(rp) :: lon, lat, value
112 integer :: i, j, m, y, yy
116 log_info(
"ATMOS_SFC_CH_rn222_setup",*)
'Setup'
117 log_info(
"ATMOS_SFC_CH_rn222_setup",*)
'rn222 surface flux'
121 read(
io_fid_conf,nml=param_atmos_sfc_ch_rn222,iostat=ierr)
123 log_info(
"ATMOS_SFC_CH_rn222_setup",*)
'Not found namelist. Default used.'
124 elseif( ierr > 0 )
then
125 log_error(
"ATMOS_SFC_CH_rn222_setup",*)
'Not appropriate names in namelist PARAM_ATMOS_SFC_CH_RN222. Check!'
128 log_nml(param_atmos_sfc_ch_rn222)
133 log_info(
"ATMOS_SFC_CH_rn222_setup",*)
'Type of emission of Rn222: ', trim(atmos_sfc_ch_rn222_emission_type)
135 select case( atmos_sfc_ch_rn222_emission_type )
138 log_info_cont(
'(A,ES16.6)')
'From land [Bq/m2/s] : ', atmos_sfc_ch_rn222_const_emission_land
139 log_info_cont(
'(A,ES16.6)')
'From ocean [Bq/m2/s] : ', atmos_sfc_ch_rn222_const_emission_ocean
143 log_info_cont(*)
'Flux map by Schery and Wasiolek (1998) is used'
150 allocate( emission_lon(nlon,nlat) )
151 allocate( emission_lat(nlon,nlat) )
152 allocate( emission_value(nlon,nlat,nmonth,nyear) )
157 write(fname,
'(A,A,I2.2,A)') trim(atmos_sfc_ch_rn222_schery1998_dirpath),
"/fdh3a.", m
159 log_info_cont(*)
'Read from the ASCII file: ', trim(fname)
163 file = trim(fname), &
169 lon = real(i-1,kind=rp) - 180.0_rp
170 lat = 90.0_rp - real(j-1,kind=rp)
174 emission_lon(i,j) = ( lon + 0.5_rp ) *
const_d2r
175 emission_lat(i,j) = ( lat - 0.5_rp ) *
const_d2r
176 emission_value(i,j,m,y) =
value * 1.e-3_rp
186 log_info_cont(*)
'Flux map by Hirao et al. (2010) is used'
187 log_info_cont(*)
'Start year: ', atmos_sfc_ch_rn222_hirao2010_ystart
188 log_info_cont(*)
'End year: ', atmos_sfc_ch_rn222_hirao2010_yend
190 if ( atmos_sfc_ch_rn222_hirao2010_ystart < 1979 &
191 .OR. atmos_sfc_ch_rn222_hirao2010_yend > 2012 )
then
192 log_warn(
'ATMOS_SFC_CH_rn222_setup',*)
'Available period of the data is between 1979 and 2012.'
193 log_warn_cont(*)
'Please check the range of ystart and yend.'
194 atmos_sfc_ch_rn222_hirao2010_ystart = max( atmos_sfc_ch_rn222_hirao2010_ystart, 1979 )
195 atmos_sfc_ch_rn222_hirao2010_yend = min( atmos_sfc_ch_rn222_hirao2010_yend, 2012 )
201 nyear = atmos_sfc_ch_rn222_hirao2010_yend - atmos_sfc_ch_rn222_hirao2010_ystart + 1
203 allocate( emission_lon(nlon,nlat) )
204 allocate( emission_lat(nlon,nlat) )
205 allocate( emission_value(nlon,nlat,nmonth,nyear) )
210 yy = y+atmos_sfc_ch_rn222_hirao2010_ystart-1
211 write(fname,
'(A,A,I4.4,I2.2)') trim(atmos_sfc_ch_rn222_hirao2010_dirpath),
"/flux-hra-revi", yy, m
213 log_info_cont(*)
'Read from the ASCII file: ', trim(fname)
217 file = trim(fname), &
223 read(fid,*) lon, lat,
value
225 emission_lon(i,j) = ( lon + 0.5_rp ) *
const_d2r
226 emission_lat(i,j) = ( lat - 0.5_rp ) *
const_d2r
227 emission_value(i,j,m,y) =
value * 1.e-3_rp
237 log_error(
"ATMOS_SFC_CH_rn222_setup",*)
'Not supported type of Rn222 emission! Stop.'
241 select case( atmos_sfc_ch_rn222_emission_type )
242 case(
'SCHERY1998',
'HIRAO2010' )
244 call comm_bcast( nlon, nlat, emission_lon(:,:) )
245 call comm_bcast( nlon, nlat, emission_lat(:,:) )
246 call comm_bcast( nlon, nlat, nmonth, nyear, emission_value(:,:,:,:) )
248 allocate( idx_i(ia,ja,atmos_sfc_ch_rn222_nintrp) )
249 allocate( idx_j(ia,ja,atmos_sfc_ch_rn222_nintrp) )
250 allocate( hfact(ia,ja,atmos_sfc_ch_rn222_nintrp) )
252 call interp_factor2d( atmos_sfc_ch_rn222_nintrp, &
271 if (
allocated( emission_lon ) )
deallocate( emission_lon )
272 if (
allocated( emission_lat ) )
deallocate( emission_lat )
273 if (
allocated( emission_value ) )
deallocate( emission_value )
275 if (
allocated( idx_i ) )
deallocate( idx_i )
276 if (
allocated( idx_j ) )
deallocate( idx_j )
277 if (
allocated( hfact ) )
deallocate( hfact )
291 integer,
intent(in) :: ia, is, ie
292 integer,
intent(in) :: ja, js, je
293 integer,
intent(in) :: qa_ch
294 real(rp),
intent(inout) :: sflx_qtrc(ia,ja,qa_ch)
299 select case( atmos_sfc_ch_rn222_emission_type )
300 case(
'CONST',
'SCHERY1998',
'HIRAO2010' )
304 sflx_qtrc(i,j,i_ch_rn222) = atmos_sfc_ch_rn222_const_emission_ocean
327 integer,
intent(in) :: ia, is, ie
328 integer,
intent(in) :: ja, js, je
329 integer,
intent(in) :: qa_ch
330 integer,
intent(in) :: nowdate(6)
331 real(rp),
intent(inout) :: sflx_qtrc(ia,ja,qa_ch)
333 integer :: i, j, m, y, yy
336 select case( atmos_sfc_ch_rn222_emission_type )
341 sflx_qtrc(i,j,i_ch_rn222) = atmos_sfc_ch_rn222_const_emission_land
356 emission_value(:,:,m,y), &
357 sflx_qtrc(:,:,i_ch_rn222) )
365 y = yy-atmos_sfc_ch_rn222_hirao2010_ystart+1
367 if ( y < 1 .OR. y > nyear )
then
368 log_error(
"ATMOS_SFC_CH_rn222_setup",*)
'emission file does not exist for year=', yy
380 emission_value(:,:,m,y), &
381 sflx_qtrc(:,:,i_ch_rn222) )