34 use mpp_mod,
only: stdlog, mpp_pe, mpp_root_pe
89 type(
fv_atmos_type),
allocatable,
intent(inout),
target :: atm(:)
92 integer :: n, ntilesme
98 ntilesme =
size(atmp(:))
103 atm(n)%bd%isc, atm(n)%bd%iec, atm(n)%bd%jsc, atm(n)%bd%jec, &
104 atm(n)%flagstruct%npz, atm(n)%flagstruct%ncnst )
116 integer :: n, ntilesme
118 ntilesme =
size(atmp(:))
132 type(fv_atmos_pert_type),
intent(INOUT),
target :: AtmP
179 type(fv_atmos_pert_type),
intent(inout),
target :: AtmP(:)
180 type(fv_atmos_type),
intent(inout),
target :: Atm(:)
182 integer :: f_unit, n, ierr, ios, unit
183 character(len=80) :: nested_grid_filename
197 if (
size(atmp) == 1)
then 198 f_unit = open_namelist_file(
'inputpert.nml')
199 else if (n == 1)
then 200 f_unit = open_namelist_file(
'inputpert.nml')
202 write(nested_grid_filename,
'(A10, I2.2, A4)')
'input_nest_pert', n,
'.nml' 203 f_unit = open_namelist_file(nested_grid_filename)
208 read (f_unit,fv_core_pert_nml,iostat=ios)
211 call close_file(f_unit)
214 write(unit, nml=fv_core_pert_nml)
217 if (.not. atmp(n)%flagstruct%split_damp)
then 218 atm(n)%flagstruct%nord = atmp(n)%flagstruct%nord_pert
219 atm(n)%flagstruct%dddmp = atmp(n)%flagstruct%dddmp_pert
220 atm(n)%flagstruct%d2_bg = atmp(n)%flagstruct%d2_bg_pert
221 atm(n)%flagstruct%d4_bg = atmp(n)%flagstruct%d4_bg_pert
222 atm(n)%flagstruct%do_vort_damp = atmp(n)%flagstruct%do_vort_damp_pert
223 atm(n)%flagstruct%vtdm4 = atmp(n)%flagstruct%vtdm4_pert
224 atm(n)%flagstruct%d2_bg_k1 = atmp(n)%flagstruct%d2_bg_k1_pert
225 atm(n)%flagstruct%d2_bg_k2 = atmp(n)%flagstruct%d2_bg_k2_pert
229 if (.not. atmp(n)%flagstruct%split_damp_tr)
then 230 atm(n)%flagstruct%nord_tr = atmp(n)%flagstruct%nord_tr_pert
231 atm(n)%flagstruct%trdm2 = atmp(n)%flagstruct%trdm2_pert
235 if (.not. atmp(n)%flagstruct%split_hord)
then 236 atm(n)%flagstruct%hord_mt = atmp(n)%flagstruct%hord_mt_pert
237 atm(n)%flagstruct%hord_vt = atmp(n)%flagstruct%hord_vt_pert
238 atm(n)%flagstruct%hord_tm = atmp(n)%flagstruct%hord_tm_pert
239 atm(n)%flagstruct%hord_dp = atmp(n)%flagstruct%hord_dp_pert
240 atm(n)%flagstruct%hord_tr = atmp(n)%flagstruct%hord_tr_pert
244 if (.not. atmp(n)%flagstruct%split_kord)
then 245 atm(n)%flagstruct%kord_mt = atmp(n)%flagstruct%kord_mt_pert
246 atm(n)%flagstruct%kord_wz = atmp(n)%flagstruct%kord_wz_pert
247 atm(n)%flagstruct%kord_tm = atmp(n)%flagstruct%kord_tm_pert
248 atm(n)%flagstruct%kord_tr = atmp(n)%flagstruct%kord_tr_pert
251 if (mpp_pe() == mpp_root_pe())
then 254 print*,
'|-----------------------------------------------|' 255 print*,
'| Advection, remapping and damping coefficients |' 256 print*,
'|-----------------------------------------------|' 258 print*,
' Splitting (off for speed, on for accuracy)' 264 print*,
' Advection of the trajectory' 265 print*,
' hord_mt = ', atm(n)%flagstruct%hord_mt
266 print*,
' hord_vt = ', atm(n)%flagstruct%hord_vt
267 print*,
' hord_tm = ', atm(n)%flagstruct%hord_tm
268 print*,
' hord_dp = ', atm(n)%flagstruct%hord_dp
269 print*,
' hord_tr = ', atm(n)%flagstruct%hord_tr
271 print*,
' Advection of the perturbations' 272 print*,
' hord_mt_pert = ', atmp(n)%flagstruct%hord_mt_pert
273 print*,
' hord_vt_pert = ', atmp(n)%flagstruct%hord_vt_pert
274 print*,
' hord_tm_pert = ', atmp(n)%flagstruct%hord_tm_pert
275 print*,
' hord_dp_pert = ', atmp(n)%flagstruct%hord_dp_pert
276 print*,
' hord_tr_pert = ', atmp(n)%flagstruct%hord_tr_pert
278 print*,
' Number of sponge layers for the perturbations' 279 print*,
' n_sponge_pert = ', atmp(n)%flagstruct%n_sponge_pert
281 print*,
' Sponge layer advection of the trajecotry' 282 print*,
' hord_ks_traj = ' , atmp(n)%flagstruct%hord_ks_traj
283 print*,
' hord_mt_ks_traj = ', atmp(n)%flagstruct%hord_mt_ks_traj
284 print*,
' hord_vt_ks_traj = ', atmp(n)%flagstruct%hord_vt_ks_traj
285 print*,
' hord_tm_ks_traj = ', atmp(n)%flagstruct%hord_tm_ks_traj
286 print*,
' hord_dp_ks_traj = ', atmp(n)%flagstruct%hord_dp_ks_traj
287 print*,
' hord_tr_ks_traj = ', atmp(n)%flagstruct%hord_tr_ks_traj
289 print*,
' Sponge layer advection of the perturbations' 290 print*,
' hord_ks_pert = ' , atmp(n)%flagstruct%hord_ks_pert
291 print*,
' hord_mt_ks_pert = ', atmp(n)%flagstruct%hord_mt_ks_pert
292 print*,
' hord_vt_ks_pert = ', atmp(n)%flagstruct%hord_vt_ks_pert
293 print*,
' hord_tm_ks_pert = ', atmp(n)%flagstruct%hord_tm_ks_pert
294 print*,
' hord_dp_ks_pert = ', atmp(n)%flagstruct%hord_dp_ks_pert
295 print*,
' hord_tr_ks_pert = ', atmp(n)%flagstruct%hord_tr_ks_pert
297 print*,
' Remapping of the trajectory' 298 print*,
' kord_mt = ', atm(n)%flagstruct%kord_mt
299 print*,
' kord_wz = ', atm(n)%flagstruct%kord_wz
300 print*,
' kord_tm = ', atm(n)%flagstruct%kord_tm
301 print*,
' kord_tr = ', atm(n)%flagstruct%kord_tr
303 print*,
' Remapping of the perturbations' 304 print*,
' kord_mt_pert = ', atmp(n)%flagstruct%kord_mt_pert
305 print*,
' kord_wz_pert = ', atmp(n)%flagstruct%kord_wz_pert
306 print*,
' kord_tm_pert = ', atmp(n)%flagstruct%kord_tm_pert
307 print*,
' kord_tr_pert = ', atmp(n)%flagstruct%kord_tr_pert
309 print*,
' Dynamics damping, trajectory' 310 print*,
' nord = ', atm(n)%flagstruct%nord
311 print*,
' dddmp = ', atm(n)%flagstruct%dddmp
312 print*,
' d2_bg = ', atm(n)%flagstruct%d2_bg
313 print*,
' d4_bg = ', atm(n)%flagstruct%d4_bg
314 print*,
' do_vort_damp = ', atm(n)%flagstruct%do_vort_damp
315 print*,
' vtdm4 = ', atm(n)%flagstruct%vtdm4
316 print*,
' d2_bg_k1 = ', atm(n)%flagstruct%d2_bg_k1
317 print*,
' d2_bg_k2 = ', atm(n)%flagstruct%d2_bg_k2
320 print*,
' Dynamics damping, perturbations' 321 print*,
' nord_pert = ', atmp(n)%flagstruct%nord_pert
322 print*,
' dddmp_pert = ', atmp(n)%flagstruct%dddmp_pert
323 print*,
' d2_bg_pert = ', atmp(n)%flagstruct%d2_bg_pert
324 print*,
' d4_bg_pert = ', atmp(n)%flagstruct%d4_bg_pert
325 print*,
' do_vort_damp_pert = ', atmp(n)%flagstruct%do_vort_damp_pert
326 print*,
' vtdm4_pert = ', atmp(n)%flagstruct%vtdm4_pert
327 print*,
' d2_bg_k1_pert = ', atmp(n)%flagstruct%d2_bg_k1_pert
328 print*,
' d2_bg_k2_pert = ', atmp(n)%flagstruct%d2_bg_k2_pert
329 print*,
' d2_bg_ks_pert = ', atmp(n)%flagstruct%d2_bg_ks_pert
331 print*,
' Tracer damping, trajectory' 332 print*,
' nord_tr = ', atm(n)%flagstruct%nord_tr
333 print*,
' trdm2 = ', atm(n)%flagstruct%trdm2
335 print*,
' Tracer damping, perturbations' 336 print*,
' nord_tr_pert = ', atmp(n)%flagstruct%nord_tr_pert
337 print*,
' trdm2_pert = ', atmp(n)%flagstruct%trdm2_pert
339 print*,
'|-----------------------------------------------|'
logical, pointer hord_ks_pert
integer, pointer kord_wz_pert
integer, pointer hord_vt_ks_pert
integer, pointer hord_vt_ks_traj
subroutine allocate_fv_atmos_pert_type(AtmP, isd, ied, jsd, jed, is, ie, js, je, npz, ncnst)
subroutine deallocate_fv_atmos_pert_type(AtmP)
integer, pointer hord_tm_ks_traj
logical, pointer split_damp_tr
integer, pointer hord_tr_ks_traj
integer, pointer kord_tm_pert
integer, pointer hord_tr_ks_pert
subroutine, public fv_end_pert(AtmP)
integer, pointer hord_tr_pert
integer function, public check_nml_error(IOSTAT, NML_NAME)
integer, pointer hord_dp_ks_pert
integer, pointer hord_mt_pert
integer, pointer hord_mt_ks_pert
integer, pointer hord_dp_pert
logical, pointer do_vort_damp_pert
integer, pointer nord_tr_pert
real, pointer d2_bg_k1_pert
real, pointer d2_bg_k2_pert
logical, pointer split_hord
integer, pointer hord_tm_pert
real, pointer d2_bg_ks_pert
integer, pointer n_sponge_pert
subroutine, public fv_init_pert(Atm, AtmP)
integer, pointer kord_tr_pert
subroutine run_setup_pert(AtmP, Atm)
integer, pointer hord_vt_pert
logical, pointer split_kord
integer, pointer hord_mt_ks_traj
integer, pointer nord_pert
integer, pointer hord_tm_ks_pert
logical, pointer hord_ks_traj
subroutine setup_pointers_pert(AtmP)
integer, pointer hord_dp_ks_traj
integer, pointer kord_mt_pert
logical, pointer split_damp