#if ( EM_CORE == 1 && DA_CORE != 1 ) !------------------------------------------------------------------ SUBROUTINE feedback_domain_em_part1 ( grid, ngrid, config_flags & ! #include "dummy_new_args.inc" ! ) USE module_state_description USE module_domain, ONLY : domain, get_ijk_from_grid USE module_configure, ONLY : grid_config_rec_type, model_config_rec, model_to_grid_config_rec USE module_dm, ONLY : ntasks, ntasks_x, ntasks_y, itrace, local_communicator, mytask, & ipe_save, jpe_save, ips_save, jps_save, & nest_pes_x, nest_pes_y IMPLICIT NONE ! TYPE(domain), POINTER :: grid ! name of the grid being dereferenced (must be "grid") TYPE(domain), POINTER :: ngrid #include "dummy_new_decl.inc" INTEGER nlev, msize INTEGER i,j,pig,pjg,cm,cn,nig,njg,retval,k TYPE(domain), POINTER :: xgrid TYPE (grid_config_rec_type) :: config_flags, nconfig_flags REAL xv(2000) INTEGER :: cids, cide, cjds, cjde, ckds, ckde, & cims, cime, cjms, cjme, ckms, ckme, & cips, cipe, cjps, cjpe, ckps, ckpe INTEGER :: nids, nide, njds, njde, nkds, nkde, & nims, nime, njms, njme, nkms, nkme, & nips, nipe, njps, njpe, nkps, nkpe INTEGER idim1,idim2,idim3,idim4,idim5,idim6,idim7 INTEGER local_comm, myproc, nproc, idum1, idum2 INTEGER thisdomain_max_halo_width !cyl: add variables for trajectory integer tjk INTERFACE SUBROUTINE feedback_nest_prep ( grid, config_flags & ! #include "dummy_new_args.inc" ! ) USE module_state_description USE module_domain, ONLY : domain USE module_configure, ONLY : grid_config_rec_type ! TYPE (grid_config_rec_type) :: config_flags TYPE(domain), TARGET :: grid #include "dummy_new_decl.inc" END SUBROUTINE feedback_nest_prep END INTERFACE ! CALL wrf_get_dm_communicator ( local_comm ) CALL wrf_get_myproc( myproc ) CALL wrf_get_nproc( nproc ) ! ! intermediate grid CALL get_ijk_from_grid ( grid , & cids, cide, cjds, cjde, ckds, ckde, & cims, cime, cjms, cjme, ckms, ckme, & cips, cipe, cjps, cjpe, ckps, ckpe ) ! nest grid CALL get_ijk_from_grid ( ngrid , & nids, nide, njds, njde, nkds, nkde, & nims, nime, njms, njme, nkms, nkme, & nips, nipe, njps, njpe, nkps, nkpe ) nlev = ckde - ckds + 1 ips_save = ngrid%i_parent_start ! used in feedback_domain_em_part2 below jps_save = ngrid%j_parent_start ipe_save = ngrid%i_parent_start + (nide-nids+1) / ngrid%parent_grid_ratio - 1 jpe_save = ngrid%j_parent_start + (njde-njds+1) / ngrid%parent_grid_ratio - 1 ! feedback_nest_prep invokes a halo exchange on the ngrid. It is done this way ! in a separate routine because the HALOs need the data to be dereference from the ! grid data structure and, in this routine, the dereferenced fields are related to ! the intermediate domain, not the nest itself. Save the current grid pointer to intermediate ! domain, switch grid to point to ngrid, invoke feedback_nest_prep, then restore grid ! to point to intermediate domain. CALL model_to_grid_config_rec ( ngrid%id , model_config_rec , nconfig_flags ) CALL set_scalar_indices_from_config ( ngrid%id , idum1 , idum2 ) xgrid => grid grid => ngrid CALL feedback_nest_prep ( grid, nconfig_flags & ! #include "actual_new_args.inc" ! ) ! put things back so grid is intermediate grid grid => xgrid CALL set_scalar_indices_from_config ( grid%id , idum1 , idum2 ) ! "interp" (basically copy) ngrid onto intermediate grid #include "nest_feedbackup_interp.inc" RETURN END SUBROUTINE feedback_domain_em_part1 #endif